Merge "Add ability to rename a downloaded file." into nyc-dev
diff --git a/Android.mk b/Android.mk
index 1cde699..76e9b33 100644
--- a/Android.mk
+++ b/Android.mk
@@ -215,6 +215,7 @@
 	core/java/android/nfc/INfcCardEmulation.aidl \
 	core/java/android/nfc/INfcFCardEmulation.aidl \
 	core/java/android/nfc/INfcUnlockHandler.aidl \
+	core/java/android/nfc/ITagRemovedCallback.aidl \
 	core/java/android/os/IBatteryPropertiesListener.aidl \
 	core/java/android/os/IBatteryPropertiesRegistrar.aidl \
 	core/java/android/os/ICancellationSignal.aidl \
@@ -598,6 +599,7 @@
 	frameworks/base/core/java/android/net/Uri.aidl \
 	frameworks/base/core/java/android/net/NetworkRequest.aidl \
 	frameworks/base/core/java/android/net/LinkAddress.aidl \
+	frameworks/base/core/java/android/util/MemoryIntArray.aidl \
 	frameworks/base/core/java/android/view/Display.aidl \
 	frameworks/base/core/java/android/view/InputDevice.aidl \
 	frameworks/base/core/java/android/view/InputEvent.aidl \
@@ -1141,50 +1143,55 @@
 LOCAL_ADDITIONAL_JAVA_DIR:=$(framework_docs_LOCAL_ADDITIONAL_JAVA_DIR)
 LOCAL_ADDITIONAL_DEPENDENCIES:=$(framework_docs_LOCAL_ADDITIONAL_DEPENDENCIES)
 # specify a second html input dir and an output path relative to OUT_DIR)
-LOCAL_ADDITIONAL_HTML_DIR:=docs/html-intl/intl /
+LOCAL_ADDITIONAL_HTML_DIR:=docs/html-intl /
 
 LOCAL_MODULE := ds
 
 LOCAL_DROIDDOC_OPTIONS:= \
 		$(framework_docs_LOCAL_DROIDDOC_OPTIONS) \
 		-devsite \
+		-hdf devsite true \
 		-toroot / \
 		-hdf android.whichdoc online \
-		-hdf devsite true
+		$(sample_groups) \
+		-useUpdatedTemplates \
+		-hdf android.hasSamples true \
+		-yaml _book.yaml \
+		-samplesdir $(samples_dir)
 
-LOCAL_DROIDDOC_CUSTOM_TEMPLATE_DIR:=build/tools/droiddoc/templates-sdk
+LOCAL_DROIDDOC_CUSTOM_TEMPLATE_DIR:=build/tools/droiddoc/templates-sdk-dev
 
 include $(BUILD_DROIDDOC)
 
-# ==== docs for the ndk =======================
+# ==== site updates for docs (on the androiddevdocs app engine server) =======================
 include $(CLEAR_VARS)
+
 LOCAL_SRC_FILES:=$(framework_docs_LOCAL_SRC_FILES)
 LOCAL_INTERMEDIATE_SOURCES:=$(framework_docs_LOCAL_INTERMEDIATE_SOURCES)
 LOCAL_STATIC_JAVA_LIBRARIES:=$(framework_docs_LOCAL_STATIC_JAVA_LIBRARIES)
 LOCAL_JAVA_LIBRARIES:=$(framework_docs_LOCAL_JAVA_LIBRARIES)
 LOCAL_MODULE_CLASS:=$(framework_docs_LOCAL_MODULE_CLASS)
 LOCAL_DROIDDOC_SOURCE_PATH:=$(framework_docs_LOCAL_DROIDDOC_SOURCE_PATH)
-LOCAL_DROIDDOC_HTML_DIR:=docs/html-ndk
+LOCAL_DROIDDOC_HTML_DIR:=$(framework_docs_LOCAL_DROIDDOC_HTML_DIR)
 LOCAL_ADDITIONAL_JAVA_DIR:=$(framework_docs_LOCAL_ADDITIONAL_JAVA_DIR)
 LOCAL_ADDITIONAL_DEPENDENCIES:=$(framework_docs_LOCAL_ADDITIONAL_DEPENDENCIES)
-# specify a second html input dir and an output path relative to OUT_DIR)
-LOCAL_ADDITIONAL_HTML_DIR:=docs/html-intl/intl /
+LOCAL_ADDITIONAL_HTML_DIR:=docs/html-intl /
 
-LOCAL_MODULE := online-ndk
+LOCAL_MODULE := online-sdk-dev
 
 LOCAL_DROIDDOC_OPTIONS:= \
 		$(framework_docs_LOCAL_DROIDDOC_OPTIONS) \
 		-toroot / \
 		-hdf android.whichdoc online \
 		$(sample_groups) \
+		-useUpdatedTemplates \
 		-hdf android.hasSamples true \
 		-samplesdir $(samples_dir)
 
-LOCAL_DROIDDOC_CUSTOM_TEMPLATE_DIR:=build/tools/droiddoc/templates-sdk
+LOCAL_DROIDDOC_CUSTOM_TEMPLATE_DIR:=build/tools/droiddoc/templates-sdk-dev
 
 include $(BUILD_DROIDDOC)
 
-
 # ==== docs that have all of the stuff that's @hidden =======================
 include $(CLEAR_VARS)
 
diff --git a/api/current.txt b/api/current.txt
index 9834c8c..233fbd7 100644
--- a/api/current.txt
+++ b/api/current.txt
@@ -513,6 +513,7 @@
     field public static final int elevation = 16843840; // 0x1010440
     field public static final int ellipsize = 16842923; // 0x10100ab
     field public static final int ems = 16843096; // 0x1010158
+    field public static final int enableVrMode = 16844072; // 0x1010528
     field public static final int enabled = 16842766; // 0x101000e
     field public static final int end = 16843996; // 0x10104dc
     field public static final int endColor = 16843166; // 0x101019e
@@ -2698,7 +2699,7 @@
     method public void addListener(android.accessibilityservice.AccessibilityService.MagnificationController.OnMagnificationChangedListener, android.os.Handler);
     method public float getCenterX();
     method public float getCenterY();
-    method public android.graphics.Region getMagnifiedRegion();
+    method public android.graphics.Region getMagnificationRegion();
     method public float getScale();
     method public boolean removeListener(android.accessibilityservice.AccessibilityService.MagnificationController.OnMagnificationChangedListener);
     method public boolean reset(boolean);
@@ -4923,7 +4924,6 @@
     field public static final int DEFAULT_LIGHTS = 4; // 0x4
     field public static final int DEFAULT_SOUND = 1; // 0x1
     field public static final int DEFAULT_VIBRATE = 2; // 0x2
-    field public static final java.lang.String EXTRA_ALLOW_GENERATED_REPLIES = "android.allowGeneratedReplies";
     field public static final java.lang.String EXTRA_BACKGROUND_IMAGE_URI = "android.backgroundImageUri";
     field public static final java.lang.String EXTRA_BIG_TEXT = "android.bigText";
     field public static final java.lang.String EXTRA_CHRONOMETER_COUNTS_DOWN = "android.chronometerCountsDown";
@@ -5006,6 +5006,7 @@
     ctor public deprecated Notification.Action(int, java.lang.CharSequence, android.app.PendingIntent);
     method public android.app.Notification.Action clone();
     method public int describeContents();
+    method public boolean getAllowGeneratedReplies();
     method public android.os.Bundle getExtras();
     method public android.graphics.drawable.Icon getIcon();
     method public android.app.RemoteInput[] getRemoteInputs();
@@ -5025,6 +5026,7 @@
     method public android.app.Notification.Action build();
     method public android.app.Notification.Action.Builder extend(android.app.Notification.Action.Extender);
     method public android.os.Bundle getExtras();
+    method public android.app.Notification.Action.Builder setAllowGeneratedReplies(boolean);
   }
 
   public static abstract interface Notification.Action.Extender {
@@ -5192,11 +5194,9 @@
     ctor public Notification.MessagingStyle(java.lang.CharSequence);
     method public android.app.Notification.MessagingStyle addMessage(java.lang.CharSequence, long, java.lang.CharSequence);
     method public android.app.Notification.MessagingStyle addMessage(android.app.Notification.MessagingStyle.Message);
-    method public boolean getAllowGeneratedReplies();
     method public java.lang.CharSequence getConversationTitle();
     method public java.util.List<android.app.Notification.MessagingStyle.Message> getMessages();
     method public java.lang.CharSequence getUserDisplayName();
-    method public android.app.Notification.MessagingStyle setAllowGeneratedReplies(boolean);
     method public android.app.Notification.MessagingStyle setConversationTitle(java.lang.CharSequence);
     field public static final int MAXIMUM_RETAINED_MESSAGES = 25; // 0x19
   }
@@ -5241,6 +5241,7 @@
     method public boolean getContentIntentAvailableOffline();
     method public int getCustomContentHeight();
     method public int getCustomSizePreset();
+    method public java.lang.String getDismissalId();
     method public android.app.PendingIntent getDisplayIntent();
     method public int getGravity();
     method public boolean getHintAmbientBigPicture();
@@ -5258,6 +5259,7 @@
     method public android.app.Notification.WearableExtender setContentIntentAvailableOffline(boolean);
     method public android.app.Notification.WearableExtender setCustomContentHeight(int);
     method public android.app.Notification.WearableExtender setCustomSizePreset(int);
+    method public android.app.Notification.WearableExtender setDismissalId(java.lang.String);
     method public android.app.Notification.WearableExtender setDisplayIntent(android.app.PendingIntent);
     method public android.app.Notification.WearableExtender setGravity(int);
     method public android.app.Notification.WearableExtender setHintAmbientBigPicture(boolean);
@@ -20640,6 +20642,7 @@
     field public static final int DolbyVisionProfileDvavPer = 1; // 0x1
     field public static final int DolbyVisionProfileDvheDen = 8; // 0x8
     field public static final int DolbyVisionProfileDvheDer = 4; // 0x4
+    field public static final int DolbyVisionProfileDvheDtb = 128; // 0x80
     field public static final int DolbyVisionProfileDvheDth = 64; // 0x40
     field public static final int DolbyVisionProfileDvheDtr = 16; // 0x10
     field public static final int DolbyVisionProfileDvheStn = 32; // 0x20
@@ -20728,20 +20731,20 @@
     field public static final int VP8Level_Version2 = 4; // 0x4
     field public static final int VP8Level_Version3 = 8; // 0x8
     field public static final int VP8ProfileMain = 1; // 0x1
-    field public static final int VP9Level1 = 0; // 0x0
-    field public static final int VP9Level11 = 1; // 0x1
-    field public static final int VP9Level2 = 2; // 0x2
-    field public static final int VP9Level21 = 4; // 0x4
-    field public static final int VP9Level3 = 8; // 0x8
-    field public static final int VP9Level31 = 16; // 0x10
-    field public static final int VP9Level4 = 32; // 0x20
-    field public static final int VP9Level41 = 64; // 0x40
-    field public static final int VP9Level5 = 128; // 0x80
-    field public static final int VP9Level51 = 256; // 0x100
-    field public static final int VP9Level52 = 512; // 0x200
-    field public static final int VP9Level6 = 1024; // 0x400
-    field public static final int VP9Level61 = 2048; // 0x800
-    field public static final int VP9Level62 = 4096; // 0x1000
+    field public static final int VP9Level1 = 1; // 0x1
+    field public static final int VP9Level11 = 2; // 0x2
+    field public static final int VP9Level2 = 4; // 0x4
+    field public static final int VP9Level21 = 8; // 0x8
+    field public static final int VP9Level3 = 16; // 0x10
+    field public static final int VP9Level31 = 32; // 0x20
+    field public static final int VP9Level4 = 64; // 0x40
+    field public static final int VP9Level41 = 128; // 0x80
+    field public static final int VP9Level5 = 256; // 0x100
+    field public static final int VP9Level51 = 512; // 0x200
+    field public static final int VP9Level52 = 1024; // 0x400
+    field public static final int VP9Level6 = 2048; // 0x800
+    field public static final int VP9Level61 = 4096; // 0x1000
+    field public static final int VP9Level62 = 8192; // 0x2000
     field public static final int VP9Profile0 = 1; // 0x1
     field public static final int VP9Profile1 = 2; // 0x2
     field public static final int VP9Profile2 = 4; // 0x4
@@ -25010,6 +25013,7 @@
     method public deprecated void enableForegroundNdefPush(android.app.Activity, android.nfc.NdefMessage);
     method public void enableReaderMode(android.app.Activity, android.nfc.NfcAdapter.ReaderCallback, int, android.os.Bundle);
     method public static android.nfc.NfcAdapter getDefaultAdapter(android.content.Context);
+    method public boolean ignore(android.nfc.Tag, int, android.nfc.NfcAdapter.OnTagRemovedListener, android.os.Handler);
     method public boolean invokeBeam(android.app.Activity);
     method public boolean isEnabled();
     method public boolean isNdefPushEnabled();
@@ -25052,6 +25056,10 @@
     method public abstract void onNdefPushComplete(android.nfc.NfcEvent);
   }
 
+  public static abstract interface NfcAdapter.OnTagRemovedListener {
+    method public abstract void onTagRemoved();
+  }
+
   public static abstract interface NfcAdapter.ReaderCallback {
     method public abstract void onTagDiscovered(android.nfc.Tag);
   }
@@ -25068,7 +25076,6 @@
 
   public final class Tag implements android.os.Parcelable {
     method public int describeContents();
-    method public boolean done(int);
     method public byte[] getId();
     method public java.lang.String[] getTechList();
     method public void writeToParcel(android.os.Parcel, int);
@@ -32491,7 +32498,6 @@
     field public static final java.lang.String RADIO_WIFI = "wifi";
     field public static final java.lang.String SHOW_PROCESSES = "show_processes";
     field public static final java.lang.String STAY_ON_WHILE_PLUGGED_IN = "stay_on_while_plugged_in";
-    field public static final java.lang.String SYS_PROP_SETTING_VERSION = "sys.settings_global_version";
     field public static final java.lang.String TRANSITION_ANIMATION_SCALE = "transition_animation_scale";
     field public static final java.lang.String USB_MASS_STORAGE_ENABLED = "usb_mass_storage_enabled";
     field public static final java.lang.String USE_GOOGLE_MAIL = "use_google_mail";
@@ -32551,7 +32557,6 @@
     field public static final deprecated java.lang.String DEVICE_PROVISIONED = "device_provisioned";
     field public static final java.lang.String ENABLED_ACCESSIBILITY_SERVICES = "enabled_accessibility_services";
     field public static final java.lang.String ENABLED_INPUT_METHODS = "enabled_input_methods";
-    field public static final java.lang.String ENABLED_NOTIFICATION_POLICY_ACCESS_PACKAGES = "enabled_notification_policy_access_packages";
     field public static final deprecated java.lang.String HTTP_PROXY = "http_proxy";
     field public static final java.lang.String INPUT_METHOD_SELECTOR_VISIBILITY = "input_method_selector_visibility";
     field public static final java.lang.String INSTALL_NON_MARKET_APPS = "install_non_market_apps";
@@ -32572,7 +32577,6 @@
     field public static final java.lang.String SELECTED_INPUT_METHOD_SUBTYPE = "selected_input_method_subtype";
     field public static final java.lang.String SETTINGS_CLASSNAME = "settings_classname";
     field public static final java.lang.String SKIP_FIRST_USE_HINTS = "skip_first_use_hints";
-    field public static final java.lang.String SYS_PROP_SETTING_VERSION = "sys.settings_secure_version";
     field public static final java.lang.String TOUCH_EXPLORATION_ENABLED = "touch_exploration_enabled";
     field public static final deprecated java.lang.String TTS_DEFAULT_COUNTRY = "tts_default_country";
     field public static final deprecated java.lang.String TTS_DEFAULT_LANG = "tts_default_lang";
@@ -32687,7 +32691,6 @@
     field public static final deprecated java.lang.String SHOW_WEB_SUGGESTIONS = "show_web_suggestions";
     field public static final java.lang.String SOUND_EFFECTS_ENABLED = "sound_effects_enabled";
     field public static final deprecated java.lang.String STAY_ON_WHILE_PLUGGED_IN = "stay_on_while_plugged_in";
-    field public static final java.lang.String SYS_PROP_SETTING_VERSION = "sys.settings_system_version";
     field public static final java.lang.String TEXT_AUTO_CAPS = "auto_caps";
     field public static final java.lang.String TEXT_AUTO_PUNCTUATE = "auto_punctuate";
     field public static final java.lang.String TEXT_AUTO_REPLACE = "auto_replace";
@@ -40383,9 +40386,7 @@
   }
 
   public final class LocaleList implements android.os.Parcelable {
-    ctor public LocaleList();
-    ctor public LocaleList(java.util.Locale);
-    ctor public LocaleList(java.util.Locale[]);
+    ctor public LocaleList(java.util.Locale...);
     method public int describeContents();
     method public static android.util.LocaleList forLanguageTags(java.lang.String);
     method public java.util.Locale get(int);
@@ -40938,6 +40939,7 @@
     method public void getCurrentSizeRange(android.graphics.Point, android.graphics.Point);
     method public int getDisplayId();
     method public int getFlags();
+    method public android.view.Display.HdrCapabilities getHdrCapabilities();
     method public deprecated int getHeight();
     method public void getMetrics(android.util.DisplayMetrics);
     method public android.view.Display.Mode getMode();
@@ -40970,6 +40972,21 @@
     field public static final int STATE_UNKNOWN = 0; // 0x0
   }
 
+  public static final class Display.HdrCapabilities implements android.os.Parcelable {
+    ctor public Display.HdrCapabilities(int[], float, float, float);
+    method public int describeContents();
+    method public float getDesiredMaxAverageLuminance();
+    method public float getDesiredMaxLuminance();
+    method public float getDesiredMinLuminance();
+    method public int[] getSupportedHdrTypes();
+    method public void writeToParcel(android.os.Parcel, int);
+    field public static final android.os.Parcelable.Creator<android.view.Display.HdrCapabilities> CREATOR;
+    field public static final int HDR_TYPE_DOLBY_VISION = 1; // 0x1
+    field public static final int HDR_TYPE_HDR10 = 2; // 0x2
+    field public static final int HDR_TYPE_HLG = 3; // 0x3
+    field public static final float INVALID_LUMINANCE = -1.0f;
+  }
+
   public static final class Display.Mode implements android.os.Parcelable {
     method public int describeContents();
     method public int getModeId();
@@ -42052,6 +42069,21 @@
     field public static final int ORIENTATION_UNKNOWN = -1; // 0xffffffff
   }
 
+  public final class PixelCopy {
+    method public static void request(android.view.SurfaceView, android.graphics.Bitmap, android.view.PixelCopy.OnPixelCopyFinishedListener, android.os.Handler);
+    method public static void request(android.view.Surface, android.graphics.Bitmap, android.view.PixelCopy.OnPixelCopyFinishedListener, android.os.Handler);
+    field public static final int ERROR_DESTINATION_INVALID = 5; // 0x5
+    field public static final int ERROR_SOURCE_INVALID = 4; // 0x4
+    field public static final int ERROR_SOURCE_NO_DATA = 3; // 0x3
+    field public static final int ERROR_TIMEOUT = 2; // 0x2
+    field public static final int ERROR_UNKNOWN = 1; // 0x1
+    field public static final int SUCCESS = 0; // 0x0
+  }
+
+  public static abstract interface PixelCopy.OnPixelCopyFinishedListener {
+    method public abstract void onPixelCopyFinished(int);
+  }
+
   public final class PointerIcon implements android.os.Parcelable {
     method public static android.view.PointerIcon createCustomIcon(android.graphics.Bitmap, float, float);
     method public int describeContents();
diff --git a/api/system-current.txt b/api/system-current.txt
index 2755bc8..10d7159 100644
--- a/api/system-current.txt
+++ b/api/system-current.txt
@@ -617,6 +617,7 @@
     field public static final int elevation = 16843840; // 0x1010440
     field public static final int ellipsize = 16842923; // 0x10100ab
     field public static final int ems = 16843096; // 0x1010158
+    field public static final int enableVrMode = 16844072; // 0x1010528
     field public static final int enabled = 16842766; // 0x101000e
     field public static final int end = 16843996; // 0x10104dc
     field public static final int endColor = 16843166; // 0x101019e
@@ -2809,7 +2810,7 @@
     method public void addListener(android.accessibilityservice.AccessibilityService.MagnificationController.OnMagnificationChangedListener, android.os.Handler);
     method public float getCenterX();
     method public float getCenterY();
-    method public android.graphics.Region getMagnifiedRegion();
+    method public android.graphics.Region getMagnificationRegion();
     method public float getScale();
     method public boolean removeListener(android.accessibilityservice.AccessibilityService.MagnificationController.OnMagnificationChangedListener);
     method public boolean reset(boolean);
@@ -5066,7 +5067,6 @@
     field public static final int DEFAULT_LIGHTS = 4; // 0x4
     field public static final int DEFAULT_SOUND = 1; // 0x1
     field public static final int DEFAULT_VIBRATE = 2; // 0x2
-    field public static final java.lang.String EXTRA_ALLOW_GENERATED_REPLIES = "android.allowGeneratedReplies";
     field public static final java.lang.String EXTRA_BACKGROUND_IMAGE_URI = "android.backgroundImageUri";
     field public static final java.lang.String EXTRA_BIG_TEXT = "android.bigText";
     field public static final java.lang.String EXTRA_CHRONOMETER_COUNTS_DOWN = "android.chronometerCountsDown";
@@ -5151,6 +5151,7 @@
     ctor public deprecated Notification.Action(int, java.lang.CharSequence, android.app.PendingIntent);
     method public android.app.Notification.Action clone();
     method public int describeContents();
+    method public boolean getAllowGeneratedReplies();
     method public android.os.Bundle getExtras();
     method public android.graphics.drawable.Icon getIcon();
     method public android.app.RemoteInput[] getRemoteInputs();
@@ -5170,6 +5171,7 @@
     method public android.app.Notification.Action build();
     method public android.app.Notification.Action.Builder extend(android.app.Notification.Action.Extender);
     method public android.os.Bundle getExtras();
+    method public android.app.Notification.Action.Builder setAllowGeneratedReplies(boolean);
   }
 
   public static abstract interface Notification.Action.Extender {
@@ -5337,11 +5339,9 @@
     ctor public Notification.MessagingStyle(java.lang.CharSequence);
     method public android.app.Notification.MessagingStyle addMessage(java.lang.CharSequence, long, java.lang.CharSequence);
     method public android.app.Notification.MessagingStyle addMessage(android.app.Notification.MessagingStyle.Message);
-    method public boolean getAllowGeneratedReplies();
     method public java.lang.CharSequence getConversationTitle();
     method public java.util.List<android.app.Notification.MessagingStyle.Message> getMessages();
     method public java.lang.CharSequence getUserDisplayName();
-    method public android.app.Notification.MessagingStyle setAllowGeneratedReplies(boolean);
     method public android.app.Notification.MessagingStyle setConversationTitle(java.lang.CharSequence);
     field public static final int MAXIMUM_RETAINED_MESSAGES = 25; // 0x19
   }
@@ -5386,6 +5386,7 @@
     method public boolean getContentIntentAvailableOffline();
     method public int getCustomContentHeight();
     method public int getCustomSizePreset();
+    method public java.lang.String getDismissalId();
     method public android.app.PendingIntent getDisplayIntent();
     method public int getGravity();
     method public boolean getHintAmbientBigPicture();
@@ -5403,6 +5404,7 @@
     method public android.app.Notification.WearableExtender setContentIntentAvailableOffline(boolean);
     method public android.app.Notification.WearableExtender setCustomContentHeight(int);
     method public android.app.Notification.WearableExtender setCustomSizePreset(int);
+    method public android.app.Notification.WearableExtender setDismissalId(java.lang.String);
     method public android.app.Notification.WearableExtender setDisplayIntent(android.app.PendingIntent);
     method public android.app.Notification.WearableExtender setGravity(int);
     method public android.app.Notification.WearableExtender setHintAmbientBigPicture(boolean);
@@ -22160,6 +22162,7 @@
     field public static final int DolbyVisionProfileDvavPer = 1; // 0x1
     field public static final int DolbyVisionProfileDvheDen = 8; // 0x8
     field public static final int DolbyVisionProfileDvheDer = 4; // 0x4
+    field public static final int DolbyVisionProfileDvheDtb = 128; // 0x80
     field public static final int DolbyVisionProfileDvheDth = 64; // 0x40
     field public static final int DolbyVisionProfileDvheDtr = 16; // 0x10
     field public static final int DolbyVisionProfileDvheStn = 32; // 0x20
@@ -22248,20 +22251,20 @@
     field public static final int VP8Level_Version2 = 4; // 0x4
     field public static final int VP8Level_Version3 = 8; // 0x8
     field public static final int VP8ProfileMain = 1; // 0x1
-    field public static final int VP9Level1 = 0; // 0x0
-    field public static final int VP9Level11 = 1; // 0x1
-    field public static final int VP9Level2 = 2; // 0x2
-    field public static final int VP9Level21 = 4; // 0x4
-    field public static final int VP9Level3 = 8; // 0x8
-    field public static final int VP9Level31 = 16; // 0x10
-    field public static final int VP9Level4 = 32; // 0x20
-    field public static final int VP9Level41 = 64; // 0x40
-    field public static final int VP9Level5 = 128; // 0x80
-    field public static final int VP9Level51 = 256; // 0x100
-    field public static final int VP9Level52 = 512; // 0x200
-    field public static final int VP9Level6 = 1024; // 0x400
-    field public static final int VP9Level61 = 2048; // 0x800
-    field public static final int VP9Level62 = 4096; // 0x1000
+    field public static final int VP9Level1 = 1; // 0x1
+    field public static final int VP9Level11 = 2; // 0x2
+    field public static final int VP9Level2 = 4; // 0x4
+    field public static final int VP9Level21 = 8; // 0x8
+    field public static final int VP9Level3 = 16; // 0x10
+    field public static final int VP9Level31 = 32; // 0x20
+    field public static final int VP9Level4 = 64; // 0x40
+    field public static final int VP9Level41 = 128; // 0x80
+    field public static final int VP9Level5 = 256; // 0x100
+    field public static final int VP9Level51 = 512; // 0x200
+    field public static final int VP9Level52 = 1024; // 0x400
+    field public static final int VP9Level6 = 2048; // 0x800
+    field public static final int VP9Level61 = 4096; // 0x1000
+    field public static final int VP9Level62 = 8192; // 0x2000
     field public static final int VP9Profile0 = 1; // 0x1
     field public static final int VP9Profile1 = 2; // 0x2
     field public static final int VP9Profile2 = 4; // 0x4
@@ -26056,7 +26059,7 @@
 
 package android.net.metrics {
 
-  public final class DefaultNetworkEvent extends android.net.metrics.IpConnectivityEvent implements android.os.Parcelable {
+  public final class DefaultNetworkEvent implements android.os.Parcelable {
     method public int describeContents();
     method public static void logEvent(int, int[], int, boolean, boolean);
     method public void writeToParcel(android.os.Parcel, int);
@@ -26068,7 +26071,7 @@
     field public final int[] transportTypes;
   }
 
-  public final class DhcpClientEvent extends android.net.metrics.IpConnectivityEvent implements android.os.Parcelable {
+  public final class DhcpClientEvent implements android.os.Parcelable {
     method public int describeContents();
     method public static void logStateEvent(java.lang.String, java.lang.String);
     method public void writeToParcel(android.os.Parcel, int);
@@ -26077,7 +26080,7 @@
     field public final java.lang.String msg;
   }
 
-  public final class DhcpErrorEvent extends android.net.metrics.IpConnectivityEvent implements android.os.Parcelable {
+  public final class DhcpErrorEvent implements android.os.Parcelable {
     method public int describeContents();
     method public static int errorCodeWithOption(int, int);
     method public static void logParseError(java.lang.String, int);
@@ -26107,7 +26110,7 @@
     field public final java.lang.String ifName;
   }
 
-  public final class DnsEvent extends android.net.metrics.IpConnectivityEvent implements android.os.Parcelable {
+  public final class DnsEvent implements android.os.Parcelable {
     method public int describeContents();
     method public static void logEvent(int, byte[], byte[], int[]);
     method public void writeToParcel(android.os.Parcel, int);
@@ -26118,44 +26121,20 @@
     field public final byte[] returnCodes;
   }
 
-  public abstract class IpConnectivityEvent {
-    ctor public IpConnectivityEvent();
-    method public static void logEvent(int, T);
-    field public static final int IPCE_CONSRV_BASE = 3072; // 0xc00
-    field public static final int IPCE_CONSRV_DEFAULT_NET_CHANGE = 3072; // 0xc00
-    field public static final int IPCE_DHCP_BASE = 1024; // 0x400
-    field public static final int IPCE_DHCP_PARSE_ERROR = 1025; // 0x401
-    field public static final int IPCE_DHCP_RECV_ERROR = 1024; // 0x400
-    field public static final int IPCE_DHCP_STATE_CHANGE = 1026; // 0x402
-    field public static final int IPCE_DNS_BASE = 5120; // 0x1400
-    field public static final int IPCE_DNS_LOOKUPS = 5120; // 0x1400
-    field public static final int IPCE_IPMGR_BASE = 4096; // 0x1000
-    field public static final int IPCE_IPMGR_COMPLETE_LIFECYCLE = 4098; // 0x1002
-    field public static final int IPCE_IPMGR_PROVISIONING_FAIL = 4097; // 0x1001
-    field public static final int IPCE_IPMGR_PROVISIONING_OK = 4096; // 0x1000
-    field public static final int IPCE_IPRM_BASE = 0; // 0x0
-    field public static final int IPCE_IPRM_NUD_FAILED = 2; // 0x2
-    field public static final int IPCE_IPRM_PROBE_FAILURE = 1; // 0x1
-    field public static final int IPCE_IPRM_PROBE_STARTED = 0; // 0x0
-    field public static final int IPCE_IPRM_PROVISIONING_LOST = 3; // 0x3
-    field public static final int IPCE_NETMON_BASE = 2048; // 0x800
-    field public static final int IPCE_NETMON_CAPPORT_FOUND = 2052; // 0x804
-    field public static final int IPCE_NETMON_CHECK_RESULT = 2049; // 0x801
-    field public static final int IPCE_NETMON_PORTAL_PROBE = 2051; // 0x803
-    field public static final int IPCE_NETMON_STATE_CHANGE = 2048; // 0x800
-    field public static final int IPCE_NETMON_VALIDATED = 2050; // 0x802
-  }
-
-  public final class IpManagerEvent extends android.net.metrics.IpConnectivityEvent implements android.os.Parcelable {
+  public final class IpManagerEvent implements android.os.Parcelable {
     method public int describeContents();
     method public static void logEvent(int, java.lang.String, long);
     method public void writeToParcel(android.os.Parcel, int);
+    field public static final int COMPLETE_LIFECYCLE = 3; // 0x3
     field public static final android.os.Parcelable.Creator<android.net.metrics.IpManagerEvent> CREATOR;
+    field public static final int PROVISIONING_FAIL = 2; // 0x2
+    field public static final int PROVISIONING_OK = 1; // 0x1
     field public final long durationMs;
+    field public final int eventType;
     field public final java.lang.String ifName;
   }
 
-  public final class IpReachabilityEvent extends android.net.metrics.IpConnectivityEvent implements android.os.Parcelable {
+  public final class IpReachabilityEvent implements android.os.Parcelable {
     method public int describeContents();
     method public static void logNudFailed(java.lang.String);
     method public static void logProbeEvent(java.lang.String, int);
@@ -26169,7 +26148,7 @@
     field public final java.lang.String ifName;
   }
 
-  public final class NetworkEvent extends android.net.metrics.IpConnectivityEvent implements android.os.Parcelable {
+  public final class NetworkEvent implements android.os.Parcelable {
     method public int describeContents();
     method public static void logCaptivePortalFound(int, long);
     method public static void logEvent(int, int);
@@ -26188,13 +26167,17 @@
     field public final int netId;
   }
 
-  public final class ValidationProbeEvent extends android.net.metrics.IpConnectivityEvent implements android.os.Parcelable {
+  public final class ValidationProbeEvent implements android.os.Parcelable {
     method public int describeContents();
     method public static void logEvent(int, long, int, int);
     method public void writeToParcel(android.os.Parcel, int);
     field public static final android.os.Parcelable.Creator<android.net.metrics.ValidationProbeEvent> CREATOR;
-    field public static final int PROBE_HTTP = 0; // 0x0
-    field public static final int PROBE_HTTPS = 1; // 0x1
+    field public static final int DNS_FAILURE = 0; // 0x0
+    field public static final int DNS_SUCCESS = 1; // 0x1
+    field public static final int PROBE_DNS = 0; // 0x0
+    field public static final int PROBE_HTTP = 1; // 0x1
+    field public static final int PROBE_HTTPS = 2; // 0x2
+    field public static final int PROBE_PAC = 3; // 0x3
     field public final long durationMs;
     field public final int netId;
     field public final int probeType;
@@ -27466,6 +27449,7 @@
     method public boolean enableNdefPush();
     method public void enableReaderMode(android.app.Activity, android.nfc.NfcAdapter.ReaderCallback, int, android.os.Bundle);
     method public static android.nfc.NfcAdapter getDefaultAdapter(android.content.Context);
+    method public boolean ignore(android.nfc.Tag, int, android.nfc.NfcAdapter.OnTagRemovedListener, android.os.Handler);
     method public boolean invokeBeam(android.app.Activity);
     method public boolean isEnabled();
     method public boolean isNdefPushEnabled();
@@ -27515,6 +27499,10 @@
     method public abstract void onNdefPushComplete(android.nfc.NfcEvent);
   }
 
+  public static abstract interface NfcAdapter.OnTagRemovedListener {
+    method public abstract void onTagRemoved();
+  }
+
   public static abstract interface NfcAdapter.ReaderCallback {
     method public abstract void onTagDiscovered(android.nfc.Tag);
   }
@@ -27531,7 +27519,6 @@
 
   public final class Tag implements android.os.Parcelable {
     method public int describeContents();
-    method public boolean done(int);
     method public byte[] getId();
     method public java.lang.String[] getTechList();
     method public void writeToParcel(android.os.Parcel, int);
@@ -35212,7 +35199,6 @@
     field public static final java.lang.String RADIO_WIFI = "wifi";
     field public static final java.lang.String SHOW_PROCESSES = "show_processes";
     field public static final java.lang.String STAY_ON_WHILE_PLUGGED_IN = "stay_on_while_plugged_in";
-    field public static final java.lang.String SYS_PROP_SETTING_VERSION = "sys.settings_global_version";
     field public static final java.lang.String THEATER_MODE_ON = "theater_mode_on";
     field public static final java.lang.String TRANSITION_ANIMATION_SCALE = "transition_animation_scale";
     field public static final java.lang.String USB_MASS_STORAGE_ENABLED = "usb_mass_storage_enabled";
@@ -35274,7 +35260,6 @@
     field public static final deprecated java.lang.String DEVICE_PROVISIONED = "device_provisioned";
     field public static final java.lang.String ENABLED_ACCESSIBILITY_SERVICES = "enabled_accessibility_services";
     field public static final java.lang.String ENABLED_INPUT_METHODS = "enabled_input_methods";
-    field public static final java.lang.String ENABLED_NOTIFICATION_POLICY_ACCESS_PACKAGES = "enabled_notification_policy_access_packages";
     field public static final deprecated java.lang.String HTTP_PROXY = "http_proxy";
     field public static final java.lang.String INPUT_METHOD_SELECTOR_VISIBILITY = "input_method_selector_visibility";
     field public static final java.lang.String INSTALL_NON_MARKET_APPS = "install_non_market_apps";
@@ -35295,7 +35280,6 @@
     field public static final java.lang.String SELECTED_INPUT_METHOD_SUBTYPE = "selected_input_method_subtype";
     field public static final java.lang.String SETTINGS_CLASSNAME = "settings_classname";
     field public static final java.lang.String SKIP_FIRST_USE_HINTS = "skip_first_use_hints";
-    field public static final java.lang.String SYS_PROP_SETTING_VERSION = "sys.settings_secure_version";
     field public static final java.lang.String TOUCH_EXPLORATION_ENABLED = "touch_exploration_enabled";
     field public static final deprecated java.lang.String TTS_DEFAULT_COUNTRY = "tts_default_country";
     field public static final deprecated java.lang.String TTS_DEFAULT_LANG = "tts_default_lang";
@@ -35410,7 +35394,6 @@
     field public static final deprecated java.lang.String SHOW_WEB_SUGGESTIONS = "show_web_suggestions";
     field public static final java.lang.String SOUND_EFFECTS_ENABLED = "sound_effects_enabled";
     field public static final deprecated java.lang.String STAY_ON_WHILE_PLUGGED_IN = "stay_on_while_plugged_in";
-    field public static final java.lang.String SYS_PROP_SETTING_VERSION = "sys.settings_system_version";
     field public static final java.lang.String TEXT_AUTO_CAPS = "auto_caps";
     field public static final java.lang.String TEXT_AUTO_PUNCTUATE = "auto_punctuate";
     field public static final java.lang.String TEXT_AUTO_REPLACE = "auto_replace";
@@ -43397,9 +43380,7 @@
   }
 
   public final class LocaleList implements android.os.Parcelable {
-    ctor public LocaleList();
-    ctor public LocaleList(java.util.Locale);
-    ctor public LocaleList(java.util.Locale[]);
+    ctor public LocaleList(java.util.Locale...);
     method public int describeContents();
     method public static android.util.LocaleList forLanguageTags(java.lang.String);
     method public java.util.Locale get(int);
@@ -43952,6 +43933,7 @@
     method public void getCurrentSizeRange(android.graphics.Point, android.graphics.Point);
     method public int getDisplayId();
     method public int getFlags();
+    method public android.view.Display.HdrCapabilities getHdrCapabilities();
     method public deprecated int getHeight();
     method public void getMetrics(android.util.DisplayMetrics);
     method public android.view.Display.Mode getMode();
@@ -43984,6 +43966,21 @@
     field public static final int STATE_UNKNOWN = 0; // 0x0
   }
 
+  public static final class Display.HdrCapabilities implements android.os.Parcelable {
+    ctor public Display.HdrCapabilities(int[], float, float, float);
+    method public int describeContents();
+    method public float getDesiredMaxAverageLuminance();
+    method public float getDesiredMaxLuminance();
+    method public float getDesiredMinLuminance();
+    method public int[] getSupportedHdrTypes();
+    method public void writeToParcel(android.os.Parcel, int);
+    field public static final android.os.Parcelable.Creator<android.view.Display.HdrCapabilities> CREATOR;
+    field public static final int HDR_TYPE_DOLBY_VISION = 1; // 0x1
+    field public static final int HDR_TYPE_HDR10 = 2; // 0x2
+    field public static final int HDR_TYPE_HLG = 3; // 0x3
+    field public static final float INVALID_LUMINANCE = -1.0f;
+  }
+
   public static final class Display.Mode implements android.os.Parcelable {
     method public int describeContents();
     method public int getModeId();
@@ -45066,6 +45063,21 @@
     field public static final int ORIENTATION_UNKNOWN = -1; // 0xffffffff
   }
 
+  public final class PixelCopy {
+    method public static void request(android.view.SurfaceView, android.graphics.Bitmap, android.view.PixelCopy.OnPixelCopyFinishedListener, android.os.Handler);
+    method public static void request(android.view.Surface, android.graphics.Bitmap, android.view.PixelCopy.OnPixelCopyFinishedListener, android.os.Handler);
+    field public static final int ERROR_DESTINATION_INVALID = 5; // 0x5
+    field public static final int ERROR_SOURCE_INVALID = 4; // 0x4
+    field public static final int ERROR_SOURCE_NO_DATA = 3; // 0x3
+    field public static final int ERROR_TIMEOUT = 2; // 0x2
+    field public static final int ERROR_UNKNOWN = 1; // 0x1
+    field public static final int SUCCESS = 0; // 0x0
+  }
+
+  public static abstract interface PixelCopy.OnPixelCopyFinishedListener {
+    method public abstract void onPixelCopyFinished(int);
+  }
+
   public final class PointerIcon implements android.os.Parcelable {
     method public static android.view.PointerIcon createCustomIcon(android.graphics.Bitmap, float, float);
     method public int describeContents();
@@ -48969,7 +48981,6 @@
     method public int getPackageId(android.content.res.Resources, java.lang.String);
     method public void invokeDrawGlFunctor(android.view.View, long, boolean);
     method public boolean isTraceTagEnabled();
-    method public java.lang.Runnable setDrawGlFunctionDetachedCallback(android.view.View, java.lang.Runnable);
     method public void setOnTraceEnabledChangeListener(android.webkit.WebViewDelegate.OnTraceEnabledChangeListener);
   }
 
diff --git a/api/test-current.txt b/api/test-current.txt
index 5dc6d51..d66b5c7 100644
--- a/api/test-current.txt
+++ b/api/test-current.txt
@@ -513,6 +513,7 @@
     field public static final int elevation = 16843840; // 0x1010440
     field public static final int ellipsize = 16842923; // 0x10100ab
     field public static final int ems = 16843096; // 0x1010158
+    field public static final int enableVrMode = 16844072; // 0x1010528
     field public static final int enabled = 16842766; // 0x101000e
     field public static final int end = 16843996; // 0x10104dc
     field public static final int endColor = 16843166; // 0x101019e
@@ -2698,7 +2699,7 @@
     method public void addListener(android.accessibilityservice.AccessibilityService.MagnificationController.OnMagnificationChangedListener, android.os.Handler);
     method public float getCenterX();
     method public float getCenterY();
-    method public android.graphics.Region getMagnifiedRegion();
+    method public android.graphics.Region getMagnificationRegion();
     method public float getScale();
     method public boolean removeListener(android.accessibilityservice.AccessibilityService.MagnificationController.OnMagnificationChangedListener);
     method public boolean reset(boolean);
@@ -4923,7 +4924,6 @@
     field public static final int DEFAULT_LIGHTS = 4; // 0x4
     field public static final int DEFAULT_SOUND = 1; // 0x1
     field public static final int DEFAULT_VIBRATE = 2; // 0x2
-    field public static final java.lang.String EXTRA_ALLOW_GENERATED_REPLIES = "android.allowGeneratedReplies";
     field public static final java.lang.String EXTRA_BACKGROUND_IMAGE_URI = "android.backgroundImageUri";
     field public static final java.lang.String EXTRA_BIG_TEXT = "android.bigText";
     field public static final java.lang.String EXTRA_CHRONOMETER_COUNTS_DOWN = "android.chronometerCountsDown";
@@ -5006,6 +5006,7 @@
     ctor public deprecated Notification.Action(int, java.lang.CharSequence, android.app.PendingIntent);
     method public android.app.Notification.Action clone();
     method public int describeContents();
+    method public boolean getAllowGeneratedReplies();
     method public android.os.Bundle getExtras();
     method public android.graphics.drawable.Icon getIcon();
     method public android.app.RemoteInput[] getRemoteInputs();
@@ -5025,6 +5026,7 @@
     method public android.app.Notification.Action build();
     method public android.app.Notification.Action.Builder extend(android.app.Notification.Action.Extender);
     method public android.os.Bundle getExtras();
+    method public android.app.Notification.Action.Builder setAllowGeneratedReplies(boolean);
   }
 
   public static abstract interface Notification.Action.Extender {
@@ -5192,11 +5194,9 @@
     ctor public Notification.MessagingStyle(java.lang.CharSequence);
     method public android.app.Notification.MessagingStyle addMessage(java.lang.CharSequence, long, java.lang.CharSequence);
     method public android.app.Notification.MessagingStyle addMessage(android.app.Notification.MessagingStyle.Message);
-    method public boolean getAllowGeneratedReplies();
     method public java.lang.CharSequence getConversationTitle();
     method public java.util.List<android.app.Notification.MessagingStyle.Message> getMessages();
     method public java.lang.CharSequence getUserDisplayName();
-    method public android.app.Notification.MessagingStyle setAllowGeneratedReplies(boolean);
     method public android.app.Notification.MessagingStyle setConversationTitle(java.lang.CharSequence);
     field public static final int MAXIMUM_RETAINED_MESSAGES = 25; // 0x19
   }
@@ -5241,6 +5241,7 @@
     method public boolean getContentIntentAvailableOffline();
     method public int getCustomContentHeight();
     method public int getCustomSizePreset();
+    method public java.lang.String getDismissalId();
     method public android.app.PendingIntent getDisplayIntent();
     method public int getGravity();
     method public boolean getHintAmbientBigPicture();
@@ -5258,6 +5259,7 @@
     method public android.app.Notification.WearableExtender setContentIntentAvailableOffline(boolean);
     method public android.app.Notification.WearableExtender setCustomContentHeight(int);
     method public android.app.Notification.WearableExtender setCustomSizePreset(int);
+    method public android.app.Notification.WearableExtender setDismissalId(java.lang.String);
     method public android.app.Notification.WearableExtender setDisplayIntent(android.app.PendingIntent);
     method public android.app.Notification.WearableExtender setGravity(int);
     method public android.app.Notification.WearableExtender setHintAmbientBigPicture(boolean);
@@ -20708,6 +20710,7 @@
     field public static final int DolbyVisionProfileDvavPer = 1; // 0x1
     field public static final int DolbyVisionProfileDvheDen = 8; // 0x8
     field public static final int DolbyVisionProfileDvheDer = 4; // 0x4
+    field public static final int DolbyVisionProfileDvheDtb = 128; // 0x80
     field public static final int DolbyVisionProfileDvheDth = 64; // 0x40
     field public static final int DolbyVisionProfileDvheDtr = 16; // 0x10
     field public static final int DolbyVisionProfileDvheStn = 32; // 0x20
@@ -20796,20 +20799,20 @@
     field public static final int VP8Level_Version2 = 4; // 0x4
     field public static final int VP8Level_Version3 = 8; // 0x8
     field public static final int VP8ProfileMain = 1; // 0x1
-    field public static final int VP9Level1 = 0; // 0x0
-    field public static final int VP9Level11 = 1; // 0x1
-    field public static final int VP9Level2 = 2; // 0x2
-    field public static final int VP9Level21 = 4; // 0x4
-    field public static final int VP9Level3 = 8; // 0x8
-    field public static final int VP9Level31 = 16; // 0x10
-    field public static final int VP9Level4 = 32; // 0x20
-    field public static final int VP9Level41 = 64; // 0x40
-    field public static final int VP9Level5 = 128; // 0x80
-    field public static final int VP9Level51 = 256; // 0x100
-    field public static final int VP9Level52 = 512; // 0x200
-    field public static final int VP9Level6 = 1024; // 0x400
-    field public static final int VP9Level61 = 2048; // 0x800
-    field public static final int VP9Level62 = 4096; // 0x1000
+    field public static final int VP9Level1 = 1; // 0x1
+    field public static final int VP9Level11 = 2; // 0x2
+    field public static final int VP9Level2 = 4; // 0x4
+    field public static final int VP9Level21 = 8; // 0x8
+    field public static final int VP9Level3 = 16; // 0x10
+    field public static final int VP9Level31 = 32; // 0x20
+    field public static final int VP9Level4 = 64; // 0x40
+    field public static final int VP9Level41 = 128; // 0x80
+    field public static final int VP9Level5 = 256; // 0x100
+    field public static final int VP9Level51 = 512; // 0x200
+    field public static final int VP9Level52 = 1024; // 0x400
+    field public static final int VP9Level6 = 2048; // 0x800
+    field public static final int VP9Level61 = 4096; // 0x1000
+    field public static final int VP9Level62 = 8192; // 0x2000
     field public static final int VP9Profile0 = 1; // 0x1
     field public static final int VP9Profile1 = 2; // 0x2
     field public static final int VP9Profile2 = 4; // 0x4
@@ -25078,6 +25081,7 @@
     method public deprecated void enableForegroundNdefPush(android.app.Activity, android.nfc.NdefMessage);
     method public void enableReaderMode(android.app.Activity, android.nfc.NfcAdapter.ReaderCallback, int, android.os.Bundle);
     method public static android.nfc.NfcAdapter getDefaultAdapter(android.content.Context);
+    method public boolean ignore(android.nfc.Tag, int, android.nfc.NfcAdapter.OnTagRemovedListener, android.os.Handler);
     method public boolean invokeBeam(android.app.Activity);
     method public boolean isEnabled();
     method public boolean isNdefPushEnabled();
@@ -25120,6 +25124,10 @@
     method public abstract void onNdefPushComplete(android.nfc.NfcEvent);
   }
 
+  public static abstract interface NfcAdapter.OnTagRemovedListener {
+    method public abstract void onTagRemoved();
+  }
+
   public static abstract interface NfcAdapter.ReaderCallback {
     method public abstract void onTagDiscovered(android.nfc.Tag);
   }
@@ -25136,7 +25144,6 @@
 
   public final class Tag implements android.os.Parcelable {
     method public int describeContents();
-    method public boolean done(int);
     method public byte[] getId();
     method public java.lang.String[] getTechList();
     method public void writeToParcel(android.os.Parcel, int);
@@ -32563,7 +32570,6 @@
     field public static final java.lang.String RADIO_WIFI = "wifi";
     field public static final java.lang.String SHOW_PROCESSES = "show_processes";
     field public static final java.lang.String STAY_ON_WHILE_PLUGGED_IN = "stay_on_while_plugged_in";
-    field public static final java.lang.String SYS_PROP_SETTING_VERSION = "sys.settings_global_version";
     field public static final java.lang.String TRANSITION_ANIMATION_SCALE = "transition_animation_scale";
     field public static final java.lang.String USB_MASS_STORAGE_ENABLED = "usb_mass_storage_enabled";
     field public static final java.lang.String USE_GOOGLE_MAIL = "use_google_mail";
@@ -32644,7 +32650,6 @@
     field public static final java.lang.String SELECTED_INPUT_METHOD_SUBTYPE = "selected_input_method_subtype";
     field public static final java.lang.String SETTINGS_CLASSNAME = "settings_classname";
     field public static final java.lang.String SKIP_FIRST_USE_HINTS = "skip_first_use_hints";
-    field public static final java.lang.String SYS_PROP_SETTING_VERSION = "sys.settings_secure_version";
     field public static final java.lang.String TOUCH_EXPLORATION_ENABLED = "touch_exploration_enabled";
     field public static final deprecated java.lang.String TTS_DEFAULT_COUNTRY = "tts_default_country";
     field public static final deprecated java.lang.String TTS_DEFAULT_LANG = "tts_default_lang";
@@ -32760,7 +32765,6 @@
     field public static final deprecated java.lang.String SHOW_WEB_SUGGESTIONS = "show_web_suggestions";
     field public static final java.lang.String SOUND_EFFECTS_ENABLED = "sound_effects_enabled";
     field public static final deprecated java.lang.String STAY_ON_WHILE_PLUGGED_IN = "stay_on_while_plugged_in";
-    field public static final java.lang.String SYS_PROP_SETTING_VERSION = "sys.settings_system_version";
     field public static final java.lang.String TEXT_AUTO_CAPS = "auto_caps";
     field public static final java.lang.String TEXT_AUTO_PUNCTUATE = "auto_punctuate";
     field public static final java.lang.String TEXT_AUTO_REPLACE = "auto_replace";
@@ -40460,9 +40464,7 @@
   }
 
   public final class LocaleList implements android.os.Parcelable {
-    ctor public LocaleList();
-    ctor public LocaleList(java.util.Locale);
-    ctor public LocaleList(java.util.Locale[]);
+    ctor public LocaleList(java.util.Locale...);
     method public int describeContents();
     method public static android.util.LocaleList forLanguageTags(java.lang.String);
     method public java.util.Locale get(int);
@@ -41015,6 +41017,7 @@
     method public void getCurrentSizeRange(android.graphics.Point, android.graphics.Point);
     method public int getDisplayId();
     method public int getFlags();
+    method public android.view.Display.HdrCapabilities getHdrCapabilities();
     method public deprecated int getHeight();
     method public void getMetrics(android.util.DisplayMetrics);
     method public android.view.Display.Mode getMode();
@@ -41047,6 +41050,21 @@
     field public static final int STATE_UNKNOWN = 0; // 0x0
   }
 
+  public static final class Display.HdrCapabilities implements android.os.Parcelable {
+    ctor public Display.HdrCapabilities(int[], float, float, float);
+    method public int describeContents();
+    method public float getDesiredMaxAverageLuminance();
+    method public float getDesiredMaxLuminance();
+    method public float getDesiredMinLuminance();
+    method public int[] getSupportedHdrTypes();
+    method public void writeToParcel(android.os.Parcel, int);
+    field public static final android.os.Parcelable.Creator<android.view.Display.HdrCapabilities> CREATOR;
+    field public static final int HDR_TYPE_DOLBY_VISION = 1; // 0x1
+    field public static final int HDR_TYPE_HDR10 = 2; // 0x2
+    field public static final int HDR_TYPE_HLG = 3; // 0x3
+    field public static final float INVALID_LUMINANCE = -1.0f;
+  }
+
   public static final class Display.Mode implements android.os.Parcelable {
     method public int describeContents();
     method public int getModeId();
@@ -42129,6 +42147,21 @@
     field public static final int ORIENTATION_UNKNOWN = -1; // 0xffffffff
   }
 
+  public final class PixelCopy {
+    method public static void request(android.view.SurfaceView, android.graphics.Bitmap, android.view.PixelCopy.OnPixelCopyFinishedListener, android.os.Handler);
+    method public static void request(android.view.Surface, android.graphics.Bitmap, android.view.PixelCopy.OnPixelCopyFinishedListener, android.os.Handler);
+    field public static final int ERROR_DESTINATION_INVALID = 5; // 0x5
+    field public static final int ERROR_SOURCE_INVALID = 4; // 0x4
+    field public static final int ERROR_SOURCE_NO_DATA = 3; // 0x3
+    field public static final int ERROR_TIMEOUT = 2; // 0x2
+    field public static final int ERROR_UNKNOWN = 1; // 0x1
+    field public static final int SUCCESS = 0; // 0x0
+  }
+
+  public static abstract interface PixelCopy.OnPixelCopyFinishedListener {
+    method public abstract void onPixelCopyFinished(int);
+  }
+
   public final class PointerIcon implements android.os.Parcelable {
     method public static android.view.PointerIcon createCustomIcon(android.graphics.Bitmap, float, float);
     method public int describeContents();
diff --git a/cmds/am/src/com/android/commands/am/Am.java b/cmds/am/src/com/android/commands/am/Am.java
index 7d084dc..0bcee86 100644
--- a/cmds/am/src/com/android/commands/am/Am.java
+++ b/cmds/am/src/com/android/commands/am/Am.java
@@ -18,10 +18,10 @@
 
 package com.android.commands.am;
 
-import static android.app.ActivityManager.StackId.DOCKED_STACK_ID;
 import static android.app.ActivityManager.RESIZE_MODE_SYSTEM;
 import static android.app.ActivityManager.RESIZE_MODE_USER;
-import static android.app.ActivityManager.StackId.FULLSCREEN_WORKSPACE_STACK_ID;
+import static android.app.ActivityManager.StackId.DOCKED_STACK_ID;
+import static android.app.ActivityManager.StackId.INVALID_STACK_ID;
 
 import android.app.ActivityManager;
 import android.app.ActivityManager.StackInfo;
@@ -484,7 +484,7 @@
         mSamplingInterval = 0;
         mAutoStop = false;
         mUserId = defUser;
-        mStackId = FULLSCREEN_WORKSPACE_STACK_ID;
+        mStackId = INVALID_STACK_ID;
 
         return Intent.parseCommandArgs(mArgs, new Intent.CommandOptionHandler() {
             @Override
@@ -622,7 +622,7 @@
             int res;
             final long startTime = SystemClock.uptimeMillis();
             ActivityOptions options = null;
-            if (mStackId != FULLSCREEN_WORKSPACE_STACK_ID) {
+            if (mStackId != INVALID_STACK_ID) {
                 options = ActivityOptions.makeBasic();
                 options.setLaunchStackId(mStackId);
             }
diff --git a/cmds/app_process/Android.mk b/cmds/app_process/Android.mk
index 3ae9e12..fae0400 100644
--- a/cmds/app_process/Android.mk
+++ b/cmds/app_process/Android.mk
@@ -53,7 +53,6 @@
     libutils \
     liblog \
     libbinder \
-    libnativeloader \
     libandroid_runtime \
     $(app_process_common_shared_libs) \
 
diff --git a/cmds/app_process/app_main.cpp b/cmds/app_process/app_main.cpp
index 7590325..2e02382 100644
--- a/cmds/app_process/app_main.cpp
+++ b/cmds/app_process/app_main.cpp
@@ -21,7 +21,6 @@
 #include <cutils/properties.h>
 #include <cutils/trace.h>
 #include <android_runtime/AndroidRuntime.h>
-#include <nativeloader/native_loader.h>
 #include <private/android_filesystem_config.h>  // for AID_SYSTEM
 
 namespace android {
@@ -305,7 +304,6 @@
     }
 
     if (zygote) {
-        InitializeNativeLoader();
         runtime.start("com.android.internal.os.ZygoteInit", args, zygote);
     } else if (className) {
         runtime.start("com.android.internal.os.RuntimeInit", args, zygote);
diff --git a/cmds/pm/src/com/android/commands/pm/Pm.java b/cmds/pm/src/com/android/commands/pm/Pm.java
index d44a1df..19cb927 100644
--- a/cmds/pm/src/com/android/commands/pm/Pm.java
+++ b/cmds/pm/src/com/android/commands/pm/Pm.java
@@ -464,6 +464,9 @@
                 case "-g":
                     sessionParams.installFlags |= PackageManager.INSTALL_GRANT_RUNTIME_PERMISSIONS;
                     break;
+                case "--dont-kill":
+                    sessionParams.installFlags |= PackageManager.INSTALL_DONT_KILL_APP;
+                    break;
                 case "--originating-uri":
                     sessionParams.originatingUri = Uri.parse(nextOptionData());
                     break;
@@ -499,6 +502,9 @@
                         sessionParams.volumeUuid = null;
                     }
                     break;
+                case "--force-sdk":
+                    sessionParams.installFlags |= PackageManager.INSTALL_FORCE_SDK;
+                    break;
                 default:
                     throw new IllegalArgumentException("Unknown option " + opt);
             }
diff --git a/compiled-classes-phone b/compiled-classes-phone
new file mode 100644
index 0000000..d6dab89
--- /dev/null
+++ b/compiled-classes-phone
@@ -0,0 +1,8215 @@
+#
+# Copyright (C) 2014 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+#
+#
+# Compiled-classes filter file for phones.
+#
+# Using a compiled-classes file filters non-mentioned classes from being compiled into
+# the boot.oat file(s), reducing the size of the boot image. This is a tradeoff, as classes
+# that have not been compiled must be run with the interpreter or through JIT.
+#
+# This file has been derived for mainline phone (and tablet) usage in concern with the
+# preloaded-classes file, but is not used by default. To use this file, add a copy statement
+# to your device.mk, e.g.,
+#
+#   PRODUCT_COPY_FILES += \
+#     frameworks/base/compiled-classes-phone:system/etc/compiled-classes
+#
+android.R$styleable
+android.accessibilityservice.AccessibilityServiceInfo
+android.accessibilityservice.AccessibilityServiceInfo$1
+android.accessibilityservice.AccessibilityServiceInfo$CapabilityInfo
+android.accessibilityservice.IAccessibilityServiceClient
+android.accessibilityservice.IAccessibilityServiceConnection
+android.accessibilityservice.IAccessibilityServiceConnection$Stub
+android.accounts.AbstractAccountAuthenticator
+android.accounts.AbstractAccountAuthenticator$Transport
+android.accounts.Account
+android.accounts.Account$1
+android.accounts.AccountAndUser
+android.accounts.AccountAuthenticatorResponse
+android.accounts.AccountAuthenticatorResponse$1
+android.accounts.AccountManager
+android.accounts.AccountManager$1
+android.accounts.AccountManager$11
+android.accounts.AccountManager$19
+android.accounts.AccountManager$3
+android.accounts.AccountManager$4
+android.accounts.AccountManager$AmsTask
+android.accounts.AccountManager$AmsTask$1
+android.accounts.AccountManager$AmsTask$Response
+android.accounts.AccountManager$BaseFutureTask
+android.accounts.AccountManager$BaseFutureTask$1
+android.accounts.AccountManager$BaseFutureTask$Response
+android.accounts.AccountManager$Future2Task
+android.accounts.AccountManager$Future2Task$1
+android.accounts.AccountManagerCallback
+android.accounts.AccountManagerFuture
+android.accounts.AccountsException
+android.accounts.AuthenticatorDescription
+android.accounts.AuthenticatorDescription$1
+android.accounts.AuthenticatorException
+android.accounts.ChooseTypeAndAccountActivity
+android.accounts.ChooseTypeAndAccountActivity$1
+android.accounts.IAccountAuthenticator
+android.accounts.IAccountAuthenticator$Stub
+android.accounts.IAccountAuthenticator$Stub$Proxy
+android.accounts.IAccountAuthenticatorResponse
+android.accounts.IAccountAuthenticatorResponse$Stub
+android.accounts.IAccountAuthenticatorResponse$Stub$Proxy
+android.accounts.IAccountManager
+android.accounts.IAccountManager$Stub
+android.accounts.IAccountManager$Stub$Proxy
+android.accounts.IAccountManagerResponse
+android.accounts.IAccountManagerResponse$Stub
+android.accounts.IAccountManagerResponse$Stub$Proxy
+android.accounts.OnAccountsUpdateListener
+android.accounts.OperationCanceledException
+android.animation.AnimationHandler
+android.animation.AnimationHandler$1
+android.animation.AnimationHandler$2
+android.animation.AnimationHandler$AnimationFrameCallback
+android.animation.AnimationHandler$AnimationFrameCallbackProvider
+android.animation.AnimationHandler$MyFrameCallbackProvider
+android.animation.Animator
+android.animation.Animator$AnimatorConstantState
+android.animation.Animator$AnimatorListener
+android.animation.Animator$AnimatorPauseListener
+android.animation.AnimatorInflater
+android.animation.AnimatorInflater$PathDataEvaluator
+android.animation.AnimatorListenerAdapter
+android.animation.AnimatorSet
+android.animation.AnimatorSet$AnimatorSetListener
+android.animation.AnimatorSet$Builder
+android.animation.AnimatorSet$Node
+android.animation.ArgbEvaluator
+android.animation.FloatArrayEvaluator
+android.animation.FloatEvaluator
+android.animation.FloatKeyframeSet
+android.animation.IntEvaluator
+android.animation.IntKeyframeSet
+android.animation.Keyframe
+android.animation.Keyframe$FloatKeyframe
+android.animation.Keyframe$IntKeyframe
+android.animation.Keyframe$ObjectKeyframe
+android.animation.KeyframeSet
+android.animation.Keyframes
+android.animation.Keyframes$FloatKeyframes
+android.animation.Keyframes$IntKeyframes
+android.animation.LayoutTransition
+android.animation.LayoutTransition$1
+android.animation.LayoutTransition$2
+android.animation.LayoutTransition$3
+android.animation.LayoutTransition$4
+android.animation.LayoutTransition$5
+android.animation.LayoutTransition$CleanupCallback
+android.animation.LayoutTransition$TransitionListener
+android.animation.ObjectAnimator
+android.animation.PathKeyframes
+android.animation.PathKeyframes$1
+android.animation.PathKeyframes$2
+android.animation.PathKeyframes$3
+android.animation.PathKeyframes$4
+android.animation.PathKeyframes$FloatKeyframesBase
+android.animation.PathKeyframes$IntKeyframesBase
+android.animation.PathKeyframes$SimpleKeyframes
+android.animation.PropertyValuesHolder
+android.animation.PropertyValuesHolder$FloatPropertyValuesHolder
+android.animation.PropertyValuesHolder$IntPropertyValuesHolder
+android.animation.RectEvaluator
+android.animation.RevealAnimator
+android.animation.StateListAnimator
+android.animation.StateListAnimator$1
+android.animation.StateListAnimator$StateListAnimatorConstantState
+android.animation.StateListAnimator$Tuple
+android.animation.TimeAnimator
+android.animation.TimeAnimator$TimeListener
+android.animation.TimeInterpolator
+android.animation.TypeEvaluator
+android.animation.ValueAnimator
+android.animation.ValueAnimator$AnimatorUpdateListener
+android.app.ActionBar
+android.app.ActionBar$LayoutParams
+android.app.ActionBar$OnMenuVisibilityListener
+android.app.ActionBar$OnNavigationListener
+android.app.ActionBar$Tab
+android.app.ActionBar$TabListener
+android.app.Activity
+android.app.Activity$HostCallbacks
+android.app.Activity$NonConfigurationInstances
+android.app.ActivityManager
+android.app.ActivityManager$AppTask
+android.app.ActivityManager$MemoryInfo
+android.app.ActivityManager$MemoryInfo$1
+android.app.ActivityManager$ProcessErrorStateInfo
+android.app.ActivityManager$ProcessErrorStateInfo$1
+android.app.ActivityManager$RecentTaskInfo
+android.app.ActivityManager$RecentTaskInfo$1
+android.app.ActivityManager$RunningAppProcessInfo
+android.app.ActivityManager$RunningAppProcessInfo$1
+android.app.ActivityManager$RunningServiceInfo
+android.app.ActivityManager$RunningServiceInfo$1
+android.app.ActivityManager$RunningTaskInfo
+android.app.ActivityManager$RunningTaskInfo$1
+android.app.ActivityManager$StackId
+android.app.ActivityManager$StackInfo
+android.app.ActivityManager$StackInfo$1
+android.app.ActivityManager$TaskDescription
+android.app.ActivityManager$TaskDescription$1
+android.app.ActivityManager$TaskThumbnail
+android.app.ActivityManager$TaskThumbnail$1
+android.app.ActivityManager$TaskThumbnailInfo
+android.app.ActivityManager$TaskThumbnailInfo$1
+android.app.ActivityManagerInternal
+android.app.ActivityManagerInternal$SleepToken
+android.app.ActivityManagerNative
+android.app.ActivityManagerNative$1
+android.app.ActivityManagerProxy
+android.app.ActivityOptions
+android.app.ActivityOptions$OnAnimationFinishedListener
+android.app.ActivityOptions$OnAnimationStartedListener
+android.app.ActivityThread
+android.app.ActivityThread$1
+android.app.ActivityThread$2
+android.app.ActivityThread$3
+android.app.ActivityThread$ActivityClientRecord
+android.app.ActivityThread$ActivityConfigChangeData
+android.app.ActivityThread$AppBindData
+android.app.ActivityThread$ApplicationThread
+android.app.ActivityThread$BindServiceData
+android.app.ActivityThread$ContextCleanupInfo
+android.app.ActivityThread$CreateBackupAgentData
+android.app.ActivityThread$CreateServiceData
+android.app.ActivityThread$DropBoxReporter
+android.app.ActivityThread$EventLoggingReporter
+android.app.ActivityThread$GcIdler
+android.app.ActivityThread$H
+android.app.ActivityThread$Idler
+android.app.ActivityThread$NewIntentData
+android.app.ActivityThread$Profiler
+android.app.ActivityThread$ProviderClientRecord
+android.app.ActivityThread$ProviderKey
+android.app.ActivityThread$ProviderRefCount
+android.app.ActivityThread$ReceiverData
+android.app.ActivityThread$ResultData
+android.app.ActivityThread$ServiceArgsData
+android.app.ActivityThread$StopInfo
+android.app.ActivityTransitionCoordinator
+android.app.ActivityTransitionCoordinator$1
+android.app.ActivityTransitionCoordinator$2
+android.app.ActivityTransitionCoordinator$ContinueTransitionListener
+android.app.ActivityTransitionCoordinator$FixedEpicenterCallback
+android.app.ActivityTransitionCoordinator$SharedElementOriginalState
+android.app.ActivityTransitionState
+android.app.ActivityTransitionState$1
+android.app.AlarmManager$AlarmClockInfo
+android.app.AlarmManager$ListenerWrapper
+android.app.AlarmManager$OnAlarmListener
+android.app.AlertDialog
+android.app.AlertDialog$Builder
+android.app.AppGlobals
+android.app.AppOpsManager
+android.app.AppOpsManager$1
+android.app.AppOpsManager$OnOpChangedInternalListener
+android.app.AppOpsManager$OnOpChangedListener
+android.app.AppOpsManager$OpEntry
+android.app.AppOpsManager$OpEntry$1
+android.app.AppOpsManager$PackageOps
+android.app.AppOpsManager$PackageOps$1
+android.app.Application
+android.app.Application$ActivityLifecycleCallbacks
+android.app.ApplicationErrorReport
+android.app.ApplicationErrorReport$1
+android.app.ApplicationErrorReport$CrashInfo
+android.app.ApplicationLoaders
+android.app.ApplicationPackageManager
+android.app.ApplicationPackageManager$MoveCallbackDelegate
+android.app.ApplicationPackageManager$OnPermissionsChangeListenerDelegate
+android.app.ApplicationPackageManager$ResourceName
+android.app.ApplicationThreadNative
+android.app.ApplicationThreadProxy
+android.app.AutomaticZenRule
+android.app.AutomaticZenRule$1
+android.app.BackStackRecord
+android.app.BackStackRecord$Op
+android.app.BackStackRecord$TransitionState
+android.app.BackStackState
+android.app.BackStackState$1
+android.app.BroadcastOptions
+android.app.ContextImpl
+android.app.ContextImpl$1
+android.app.ContextImpl$ApplicationContentResolver
+android.app.DatePickerDialog
+android.app.DatePickerDialog$OnDateSetListener
+android.app.Dialog
+android.app.Dialog$-void__init__android_content_Context_context_int_themeResId_boolean_createContextThemeWrapper_LambdaImpl0
+android.app.Dialog$ListenersHandler
+android.app.DialogFragment
+android.app.DownloadManager
+android.app.DownloadManager$CursorTranslator
+android.app.DownloadManager$Query
+android.app.DownloadManager$Request
+android.app.EnterTransitionCoordinator
+android.app.EnterTransitionCoordinator$1
+android.app.EnterTransitionCoordinator$2
+android.app.EnterTransitionCoordinator$4
+android.app.EnterTransitionCoordinator$5
+android.app.EnterTransitionCoordinator$5$1
+android.app.EnterTransitionCoordinator$5$1$1
+android.app.EnterTransitionCoordinator$6
+android.app.EnterTransitionCoordinator$7
+android.app.EnterTransitionCoordinator$8
+android.app.ExitTransitionCoordinator
+android.app.ExitTransitionCoordinator$10
+android.app.ExitTransitionCoordinator$11
+android.app.ExitTransitionCoordinator$4
+android.app.Fragment
+android.app.Fragment$1
+android.app.Fragment$SavedState
+android.app.Fragment$SavedState$1
+android.app.FragmentContainer
+android.app.FragmentController
+android.app.FragmentHostCallback
+android.app.FragmentManager
+android.app.FragmentManager$BackStackEntry
+android.app.FragmentManager$OnBackStackChangedListener
+android.app.FragmentManagerImpl
+android.app.FragmentManagerImpl$1
+android.app.FragmentManagerImpl$2
+android.app.FragmentManagerImpl$3
+android.app.FragmentManagerImpl$5
+android.app.FragmentManagerImpl$AnimateOnHWLayerIfNeededListener
+android.app.FragmentManagerState
+android.app.FragmentManagerState$1
+android.app.FragmentState
+android.app.FragmentState$1
+android.app.FragmentTransaction
+android.app.IActivityContainer
+android.app.IActivityContainer$Stub
+android.app.IActivityContainerCallback
+android.app.IActivityController
+android.app.IActivityManager
+android.app.IActivityManager$ContentProviderHolder
+android.app.IActivityManager$ContentProviderHolder$1
+android.app.IActivityManager$WaitResult
+android.app.IAlarmCompleteListener
+android.app.IAlarmCompleteListener$Stub
+android.app.IAlarmListener
+android.app.IAlarmListener$Stub
+android.app.IAlarmManager
+android.app.IAlarmManager$Stub
+android.app.IAlarmManager$Stub$Proxy
+android.app.IAppTask
+android.app.IAppTask$Stub
+android.app.IAppTask$Stub$Proxy
+android.app.IApplicationThread
+android.app.IBackupAgent
+android.app.IBackupAgent$Stub
+android.app.IBackupAgent$Stub$Proxy
+android.app.IInstrumentationWatcher
+android.app.IInstrumentationWatcher$Stub
+android.app.INotificationManager
+android.app.INotificationManager$Stub
+android.app.INotificationManager$Stub$Proxy
+android.app.IProcessObserver
+android.app.IProcessObserver$Stub
+android.app.IProcessObserver$Stub$Proxy
+android.app.ISearchManager
+android.app.ISearchManager$Stub
+android.app.ISearchManager$Stub$Proxy
+android.app.IServiceConnection
+android.app.IServiceConnection$Stub
+android.app.IServiceConnection$Stub$Proxy
+android.app.IStopUserCallback
+android.app.ITaskStackListener
+android.app.ITaskStackListener$Stub
+android.app.ITaskStackListener$Stub$Proxy
+android.app.ITransientNotification
+android.app.ITransientNotification$Stub
+android.app.ITransientNotification$Stub$Proxy
+android.app.IUiAutomationConnection
+android.app.IUiAutomationConnection$Stub
+android.app.IUiModeManager
+android.app.IUiModeManager$Stub
+android.app.IUiModeManager$Stub$Proxy
+android.app.IUidObserver
+android.app.IUidObserver$Stub
+android.app.IUserSwitchObserver
+android.app.IUserSwitchObserver$Stub
+android.app.IUserSwitchObserver$Stub$Proxy
+android.app.IWallpaperManager
+android.app.IWallpaperManager$Stub
+android.app.IWallpaperManager$Stub$Proxy
+android.app.IWallpaperManagerCallback
+android.app.IWallpaperManagerCallback$Stub
+android.app.IWallpaperManagerCallback$Stub$Proxy
+android.app.Instrumentation
+android.app.IntentReceiverLeaked
+android.app.IntentService
+android.app.IntentService$ServiceHandler
+android.app.JobSchedulerImpl
+android.app.KeyguardManager
+android.app.ListActivity
+android.app.ListActivity$1
+android.app.ListActivity$2
+android.app.ListFragment
+android.app.ListFragment$1
+android.app.ListFragment$2
+android.app.LoadedApk
+android.app.LoadedApk$ReceiverDispatcher
+android.app.LoadedApk$ReceiverDispatcher$Args
+android.app.LoadedApk$ReceiverDispatcher$InnerReceiver
+android.app.LoadedApk$ServiceDispatcher
+android.app.LoadedApk$ServiceDispatcher$ConnectionInfo
+android.app.LoadedApk$ServiceDispatcher$DeathMonitor
+android.app.LoadedApk$ServiceDispatcher$InnerConnection
+android.app.LoadedApk$ServiceDispatcher$RunConnection
+android.app.LoadedApk$WarningContextClassLoader
+android.app.LoaderManager
+android.app.LoaderManager$LoaderCallbacks
+android.app.LoaderManagerImpl
+android.app.LoaderManagerImpl$LoaderInfo
+android.app.NativeActivity
+android.app.Notification
+android.app.Notification$1
+android.app.Notification$Action
+android.app.Notification$Action$1
+android.app.Notification$Action$Builder
+android.app.Notification$BigPictureStyle
+android.app.Notification$BigTextStyle
+android.app.Notification$Builder
+android.app.Notification$BuilderRemoteViews
+android.app.Notification$DecoratedCustomViewStyle
+android.app.Notification$DecoratedMediaCustomViewStyle
+android.app.Notification$Extender
+android.app.Notification$InboxStyle
+android.app.Notification$MediaStyle
+android.app.Notification$Style
+android.app.Notification$WearableExtender
+android.app.NotificationManager
+android.app.NotificationManager$Policy
+android.app.NotificationManager$Policy$1
+android.app.OnActivityPausedListener
+android.app.PackageDeleteObserver
+android.app.PackageDeleteObserver$1
+android.app.PackageInstallObserver
+android.app.PackageInstallObserver$1
+android.app.PendingIntent
+android.app.PendingIntent$1
+android.app.PendingIntent$CanceledException
+android.app.PendingIntent$FinishedDispatcher
+android.app.PendingIntent$OnFinished
+android.app.Presentation
+android.app.ProfilerInfo
+android.app.ProgressDialog
+android.app.QueuedWork
+android.app.ReceiverRestrictedContext
+android.app.RemoteInput
+android.app.RemoteInput$1
+android.app.RemoteInput$Builder
+android.app.ResourcesManager
+android.app.ResourcesManager$1
+android.app.ResourcesManager$ActivityResources
+android.app.ResultInfo
+android.app.ResultInfo$1
+android.app.SearchableInfo
+android.app.SearchableInfo$1
+android.app.Service
+android.app.ServiceConnectionLeaked
+android.app.SharedElementCallback
+android.app.SharedElementCallback$1
+android.app.SharedElementCallback$OnSharedElementsReadyListener
+android.app.SharedPreferencesImpl
+android.app.SharedPreferencesImpl$1
+android.app.SharedPreferencesImpl$2
+android.app.SharedPreferencesImpl$EditorImpl
+android.app.SharedPreferencesImpl$EditorImpl$1
+android.app.SharedPreferencesImpl$EditorImpl$2
+android.app.SharedPreferencesImpl$EditorImpl$3
+android.app.SharedPreferencesImpl$MemoryCommitResult
+android.app.StatusBarManager
+android.app.SynchronousUserSwitchObserver
+android.app.SystemServiceRegistry
+android.app.SystemServiceRegistry$1
+android.app.SystemServiceRegistry$10
+android.app.SystemServiceRegistry$11
+android.app.SystemServiceRegistry$12
+android.app.SystemServiceRegistry$13
+android.app.SystemServiceRegistry$14
+android.app.SystemServiceRegistry$15
+android.app.SystemServiceRegistry$16
+android.app.SystemServiceRegistry$17
+android.app.SystemServiceRegistry$18
+android.app.SystemServiceRegistry$19
+android.app.SystemServiceRegistry$2
+android.app.SystemServiceRegistry$20
+android.app.SystemServiceRegistry$21
+android.app.SystemServiceRegistry$22
+android.app.SystemServiceRegistry$23
+android.app.SystemServiceRegistry$24
+android.app.SystemServiceRegistry$25
+android.app.SystemServiceRegistry$26
+android.app.SystemServiceRegistry$27
+android.app.SystemServiceRegistry$28
+android.app.SystemServiceRegistry$29
+android.app.SystemServiceRegistry$3
+android.app.SystemServiceRegistry$30
+android.app.SystemServiceRegistry$31
+android.app.SystemServiceRegistry$32
+android.app.SystemServiceRegistry$33
+android.app.SystemServiceRegistry$34
+android.app.SystemServiceRegistry$35
+android.app.SystemServiceRegistry$36
+android.app.SystemServiceRegistry$37
+android.app.SystemServiceRegistry$38
+android.app.SystemServiceRegistry$39
+android.app.SystemServiceRegistry$4
+android.app.SystemServiceRegistry$40
+android.app.SystemServiceRegistry$41
+android.app.SystemServiceRegistry$42
+android.app.SystemServiceRegistry$43
+android.app.SystemServiceRegistry$44
+android.app.SystemServiceRegistry$45
+android.app.SystemServiceRegistry$46
+android.app.SystemServiceRegistry$47
+android.app.SystemServiceRegistry$48
+android.app.SystemServiceRegistry$49
+android.app.SystemServiceRegistry$5
+android.app.SystemServiceRegistry$50
+android.app.SystemServiceRegistry$51
+android.app.SystemServiceRegistry$52
+android.app.SystemServiceRegistry$53
+android.app.SystemServiceRegistry$54
+android.app.SystemServiceRegistry$55
+android.app.SystemServiceRegistry$56
+android.app.SystemServiceRegistry$57
+android.app.SystemServiceRegistry$58
+android.app.SystemServiceRegistry$59
+android.app.SystemServiceRegistry$6
+android.app.SystemServiceRegistry$60
+android.app.SystemServiceRegistry$61
+android.app.SystemServiceRegistry$62
+android.app.SystemServiceRegistry$63
+android.app.SystemServiceRegistry$64
+android.app.SystemServiceRegistry$65
+android.app.SystemServiceRegistry$66
+android.app.SystemServiceRegistry$67
+android.app.SystemServiceRegistry$68
+android.app.SystemServiceRegistry$69
+android.app.SystemServiceRegistry$7
+android.app.SystemServiceRegistry$70
+android.app.SystemServiceRegistry$71
+android.app.SystemServiceRegistry$72
+android.app.SystemServiceRegistry$73
+android.app.SystemServiceRegistry$74
+android.app.SystemServiceRegistry$8
+android.app.SystemServiceRegistry$9
+android.app.SystemServiceRegistry$CachedServiceFetcher
+android.app.SystemServiceRegistry$ServiceFetcher
+android.app.SystemServiceRegistry$StaticApplicationContextServiceFetcher
+android.app.SystemServiceRegistry$StaticServiceFetcher
+android.app.TaskStackBuilder
+android.app.TimePickerDialog
+android.app.TimePickerDialog$OnTimeSetListener
+android.app.UiModeManager
+android.app.WallpaperInfo
+android.app.WallpaperManager
+android.app.WallpaperManager$Globals
+android.app.admin.DeviceAdminInfo
+android.app.admin.DeviceAdminInfo$1
+android.app.admin.DeviceAdminInfo$PolicyInfo
+android.app.admin.DevicePolicyManager
+android.app.admin.DevicePolicyManagerInternal
+android.app.admin.DevicePolicyManagerInternal$OnCrossProfileWidgetProvidersChangeListener
+android.app.admin.IDevicePolicyManager
+android.app.admin.IDevicePolicyManager$Stub
+android.app.admin.IDevicePolicyManager$Stub$Proxy
+android.app.admin.SecurityLog
+android.app.admin.SecurityLog$SecurityEvent
+android.app.admin.SecurityLog$SecurityEvent$1
+android.app.admin.SystemUpdatePolicy
+android.app.admin.SystemUpdatePolicy$1
+android.app.assist.AssistContent
+android.app.assist.AssistStructure
+android.app.backup.BackupAgent
+android.app.backup.BackupAgent$BackupServiceBinder
+android.app.backup.BackupAgent$SharedPrefsSynchronizer
+android.app.backup.BackupAgentHelper
+android.app.backup.BackupDataInput
+android.app.backup.BackupDataInput$EntityHeader
+android.app.backup.BackupDataOutput
+android.app.backup.BackupHelper
+android.app.backup.BackupHelperDispatcher
+android.app.backup.BackupHelperDispatcher$Header
+android.app.backup.BackupManager
+android.app.backup.BackupTransport
+android.app.backup.BackupTransport$TransportImpl
+android.app.backup.FileBackupHelperBase
+android.app.backup.FullBackup
+android.app.backup.FullBackupDataOutput
+android.app.backup.IBackupManager
+android.app.backup.IBackupManager$Stub
+android.app.backup.IBackupManager$Stub$Proxy
+android.app.backup.IBackupObserver
+android.app.backup.IFullBackupRestoreObserver
+android.app.backup.IRestoreSession
+android.app.backup.RestoreDescription
+android.app.backup.RestoreSet
+android.app.backup.SharedPreferencesBackupHelper
+android.app.job.IJobCallback
+android.app.job.IJobCallback$Stub
+android.app.job.IJobCallback$Stub$Proxy
+android.app.job.IJobScheduler
+android.app.job.IJobScheduler$Stub
+android.app.job.IJobScheduler$Stub$Proxy
+android.app.job.IJobService
+android.app.job.IJobService$Stub
+android.app.job.IJobService$Stub$Proxy
+android.app.job.JobInfo
+android.app.job.JobInfo$1
+android.app.job.JobInfo$Builder
+android.app.job.JobInfo$TriggerContentUri
+android.app.job.JobInfo$TriggerContentUri$1
+android.app.job.JobParameters
+android.app.job.JobParameters$1
+android.app.job.JobScheduler
+android.app.job.JobService
+android.app.job.JobService$1
+android.app.job.JobService$JobHandler
+android.app.trust.IStrongAuthTracker
+android.app.trust.IStrongAuthTracker$Stub
+android.app.trust.IStrongAuthTracker$Stub$Proxy
+android.app.trust.ITrustListener
+android.app.trust.ITrustListener$Stub
+android.app.trust.ITrustListener$Stub$Proxy
+android.app.trust.ITrustManager
+android.app.trust.ITrustManager$Stub
+android.app.trust.ITrustManager$Stub$Proxy
+android.app.trust.TrustManager
+android.app.trust.TrustManager$1
+android.app.trust.TrustManager$2
+android.app.trust.TrustManager$TrustListener
+android.app.usage.ConfigurationStats
+android.app.usage.ConfigurationStats$1
+android.app.usage.IUsageStatsManager
+android.app.usage.IUsageStatsManager$Stub
+android.app.usage.IUsageStatsManager$Stub$Proxy
+android.app.usage.NetworkStatsManager
+android.app.usage.TimeSparseArray
+android.app.usage.UsageEvents
+android.app.usage.UsageEvents$1
+android.app.usage.UsageEvents$Event
+android.app.usage.UsageStats
+android.app.usage.UsageStats$1
+android.app.usage.UsageStatsManager
+android.app.usage.UsageStatsManagerInternal
+android.app.usage.UsageStatsManagerInternal$AppIdleStateChangeListener
+android.appwidget.AppWidgetHost
+android.appwidget.AppWidgetHost$Callbacks
+android.appwidget.AppWidgetHost$UpdateHandler
+android.appwidget.AppWidgetHostView
+android.appwidget.AppWidgetHostView$1
+android.appwidget.AppWidgetManager
+android.appwidget.AppWidgetProvider
+android.appwidget.AppWidgetProviderInfo
+android.appwidget.AppWidgetProviderInfo$1
+android.bluetooth.BluetoothA2dp
+android.bluetooth.BluetoothA2dp$1
+android.bluetooth.BluetoothA2dp$2
+android.bluetooth.BluetoothActivityEnergyInfo
+android.bluetooth.BluetoothAdapter
+android.bluetooth.BluetoothAdapter$1
+android.bluetooth.BluetoothAdapter$BluetoothStateChangeCallback
+android.bluetooth.BluetoothAdapter$LeScanCallback
+android.bluetooth.BluetoothClass
+android.bluetooth.BluetoothClass$1
+android.bluetooth.BluetoothDevice
+android.bluetooth.BluetoothDevice$1
+android.bluetooth.BluetoothDevice$2
+android.bluetooth.BluetoothHeadset
+android.bluetooth.BluetoothHeadset$1
+android.bluetooth.BluetoothHeadset$2
+android.bluetooth.BluetoothHeadset$3
+android.bluetooth.BluetoothInputDevice
+android.bluetooth.BluetoothInputDevice$1
+android.bluetooth.BluetoothInputDevice$2
+android.bluetooth.BluetoothManager
+android.bluetooth.BluetoothMap
+android.bluetooth.BluetoothMap$1
+android.bluetooth.BluetoothMap$2
+android.bluetooth.BluetoothPan
+android.bluetooth.BluetoothPan$1
+android.bluetooth.BluetoothPan$2
+android.bluetooth.BluetoothPbap
+android.bluetooth.BluetoothPbap$1
+android.bluetooth.BluetoothPbap$2
+android.bluetooth.BluetoothPbap$ServiceListener
+android.bluetooth.BluetoothProfile
+android.bluetooth.BluetoothProfile$ServiceListener
+android.bluetooth.BluetoothServerSocket
+android.bluetooth.BluetoothUuid
+android.bluetooth.IBluetooth
+android.bluetooth.IBluetooth$Stub
+android.bluetooth.IBluetooth$Stub$Proxy
+android.bluetooth.IBluetoothA2dp
+android.bluetooth.IBluetoothA2dp$Stub
+android.bluetooth.IBluetoothA2dp$Stub$Proxy
+android.bluetooth.IBluetoothCallback
+android.bluetooth.IBluetoothCallback$Stub
+android.bluetooth.IBluetoothGatt
+android.bluetooth.IBluetoothGatt$Stub
+android.bluetooth.IBluetoothGatt$Stub$Proxy
+android.bluetooth.IBluetoothHeadset
+android.bluetooth.IBluetoothHeadset$Stub
+android.bluetooth.IBluetoothHeadset$Stub$Proxy
+android.bluetooth.IBluetoothHeadsetPhone
+android.bluetooth.IBluetoothHeadsetPhone$Stub
+android.bluetooth.IBluetoothInputDevice
+android.bluetooth.IBluetoothInputDevice$Stub
+android.bluetooth.IBluetoothInputDevice$Stub$Proxy
+android.bluetooth.IBluetoothManager
+android.bluetooth.IBluetoothManager$Stub
+android.bluetooth.IBluetoothManager$Stub$Proxy
+android.bluetooth.IBluetoothManagerCallback
+android.bluetooth.IBluetoothManagerCallback$Stub
+android.bluetooth.IBluetoothManagerCallback$Stub$Proxy
+android.bluetooth.IBluetoothMap
+android.bluetooth.IBluetoothMap$Stub
+android.bluetooth.IBluetoothMap$Stub$Proxy
+android.bluetooth.IBluetoothPan
+android.bluetooth.IBluetoothPan$Stub
+android.bluetooth.IBluetoothPan$Stub$Proxy
+android.bluetooth.IBluetoothPbap
+android.bluetooth.IBluetoothPbap$Stub
+android.bluetooth.IBluetoothPbap$Stub$Proxy
+android.bluetooth.IBluetoothProfileServiceConnection
+android.bluetooth.IBluetoothProfileServiceConnection$Stub
+android.bluetooth.IBluetoothProfileServiceConnection$Stub$Proxy
+android.bluetooth.IBluetoothStateChangeCallback
+android.bluetooth.IBluetoothStateChangeCallback$Stub
+android.bluetooth.IBluetoothStateChangeCallback$Stub$Proxy
+android.bluetooth.OobData
+android.bluetooth.le.BluetoothLeAdvertiser
+android.bluetooth.le.BluetoothLeScanner
+android.bluetooth.le.ScanCallback
+android.bluetooth.le.ScanFilter
+android.bluetooth.le.ScanFilter$Builder
+android.bluetooth.le.ScanSettings
+android.bluetooth.le.ScanSettings$Builder
+android.content.AbstractThreadedSyncAdapter
+android.content.AbstractThreadedSyncAdapter$ISyncAdapterImpl
+android.content.AbstractThreadedSyncAdapter$SyncThread
+android.content.ActivityNotFoundException
+android.content.AsyncQueryHandler
+android.content.AsyncQueryHandler$WorkerArgs
+android.content.AsyncQueryHandler$WorkerHandler
+android.content.AsyncTaskLoader
+android.content.AsyncTaskLoader$LoadTask
+android.content.BroadcastReceiver
+android.content.BroadcastReceiver$PendingResult
+android.content.BroadcastReceiver$PendingResult$1
+android.content.ClipData
+android.content.ClipData$1
+android.content.ClipData$Item
+android.content.ClipDescription
+android.content.ClipDescription$1
+android.content.ClipboardManager
+android.content.ClipboardManager$1
+android.content.ClipboardManager$2
+android.content.ClipboardManager$OnPrimaryClipChangedListener
+android.content.ComponentCallbacks
+android.content.ComponentCallbacks2
+android.content.ComponentName
+android.content.ComponentName$1
+android.content.ContentProvider
+android.content.ContentProvider$PipeDataWriter
+android.content.ContentProvider$Transport
+android.content.ContentProviderClient
+android.content.ContentProviderClient$CursorWrapperInner
+android.content.ContentProviderClient$NotRespondingRunnable
+android.content.ContentProviderNative
+android.content.ContentProviderOperation
+android.content.ContentProviderOperation$1
+android.content.ContentProviderOperation$Builder
+android.content.ContentProviderProxy
+android.content.ContentProviderResult
+android.content.ContentProviderResult$1
+android.content.ContentQueryMap
+android.content.ContentResolver
+android.content.ContentResolver$1
+android.content.ContentResolver$CursorWrapperInner
+android.content.ContentResolver$OpenResourceIdResult
+android.content.ContentResolver$ParcelFileDescriptorInner
+android.content.ContentUris
+android.content.ContentValues
+android.content.ContentValues$1
+android.content.Context
+android.content.ContextWrapper
+android.content.CursorEntityIterator
+android.content.CursorLoader
+android.content.DialogInterface
+android.content.DialogInterface$OnCancelListener
+android.content.DialogInterface$OnClickListener
+android.content.DialogInterface$OnDismissListener
+android.content.DialogInterface$OnKeyListener
+android.content.DialogInterface$OnMultiChoiceClickListener
+android.content.DialogInterface$OnShowListener
+android.content.Entity
+android.content.Entity$NamedContentValues
+android.content.EntityIterator
+android.content.IClipboard
+android.content.IClipboard$Stub
+android.content.IClipboard$Stub$Proxy
+android.content.IContentProvider
+android.content.IContentService
+android.content.IContentService$Stub
+android.content.IContentService$Stub$Proxy
+android.content.IIntentReceiver
+android.content.IIntentReceiver$Stub
+android.content.IIntentReceiver$Stub$Proxy
+android.content.IIntentSender
+android.content.IIntentSender$Stub
+android.content.IIntentSender$Stub$Proxy
+android.content.IOnPrimaryClipChangedListener
+android.content.IOnPrimaryClipChangedListener$Stub
+android.content.IRestrictionsManager
+android.content.IRestrictionsManager$Stub
+android.content.IRestrictionsManager$Stub$Proxy
+android.content.ISyncAdapter
+android.content.ISyncAdapter$Stub
+android.content.ISyncAdapter$Stub$Proxy
+android.content.ISyncContext
+android.content.ISyncContext$Stub
+android.content.ISyncContext$Stub$Proxy
+android.content.ISyncStatusObserver
+android.content.ISyncStatusObserver$Stub
+android.content.ISyncStatusObserver$Stub$Proxy
+android.content.Intent
+android.content.Intent$1
+android.content.Intent$FilterComparison
+android.content.Intent$ShortcutIconResource
+android.content.Intent$ShortcutIconResource$1
+android.content.IntentFilter
+android.content.IntentFilter$1
+android.content.IntentFilter$AuthorityEntry
+android.content.IntentFilter$MalformedMimeTypeException
+android.content.IntentSender
+android.content.IntentSender$1
+android.content.IntentSender$SendIntentException
+android.content.Loader
+android.content.Loader$ForceLoadContentObserver
+android.content.Loader$OnLoadCanceledListener
+android.content.Loader$OnLoadCompleteListener
+android.content.MutableContextWrapper
+android.content.OperationApplicationException
+android.content.PeriodicSync
+android.content.PeriodicSync$1
+android.content.ReceiverCallNotAllowedException
+android.content.RestrictionEntry
+android.content.RestrictionsManager
+android.content.SearchRecentSuggestionsProvider
+android.content.SearchRecentSuggestionsProvider$DatabaseHelper
+android.content.ServiceConnection
+android.content.SharedPreferences
+android.content.SharedPreferences$Editor
+android.content.SharedPreferences$OnSharedPreferenceChangeListener
+android.content.SyncAdapterType
+android.content.SyncAdapterType$1
+android.content.SyncAdaptersCache
+android.content.SyncAdaptersCache$MySerializer
+android.content.SyncContext
+android.content.SyncInfo
+android.content.SyncInfo$1
+android.content.SyncRequest
+android.content.SyncRequest$1
+android.content.SyncRequest$Builder
+android.content.SyncResult
+android.content.SyncResult$1
+android.content.SyncStats
+android.content.SyncStats$1
+android.content.SyncStatusInfo
+android.content.SyncStatusInfo$1
+android.content.SyncStatusObserver
+android.content.UndoManager
+android.content.UndoManager$UndoState
+android.content.UndoOperation
+android.content.UndoOwner
+android.content.UriMatcher
+android.content.UriPermission
+android.content.pm.ActivityInfo
+android.content.pm.ActivityInfo$1
+android.content.pm.ApplicationInfo
+android.content.pm.ApplicationInfo$1
+android.content.pm.ComponentInfo
+android.content.pm.ConfigurationInfo
+android.content.pm.ConfigurationInfo$1
+android.content.pm.FeatureGroupInfo
+android.content.pm.FeatureGroupInfo$1
+android.content.pm.FeatureInfo
+android.content.pm.FeatureInfo$1
+android.content.pm.ILauncherApps
+android.content.pm.ILauncherApps$Stub
+android.content.pm.ILauncherApps$Stub$Proxy
+android.content.pm.IOnAppsChangedListener
+android.content.pm.IOnAppsChangedListener$Stub
+android.content.pm.IOnAppsChangedListener$Stub$Proxy
+android.content.pm.IOnPermissionsChangeListener
+android.content.pm.IOnPermissionsChangeListener$Stub
+android.content.pm.IOnPermissionsChangeListener$Stub$Proxy
+android.content.pm.IOtaDexopt
+android.content.pm.IOtaDexopt$Stub
+android.content.pm.IPackageDataObserver
+android.content.pm.IPackageDataObserver$Stub
+android.content.pm.IPackageDataObserver$Stub$Proxy
+android.content.pm.IPackageDeleteObserver
+android.content.pm.IPackageDeleteObserver$Stub
+android.content.pm.IPackageDeleteObserver2
+android.content.pm.IPackageDeleteObserver2$Stub
+android.content.pm.IPackageInstallObserver
+android.content.pm.IPackageInstallObserver$Stub
+android.content.pm.IPackageInstallObserver2
+android.content.pm.IPackageInstallObserver2$Stub
+android.content.pm.IPackageInstaller
+android.content.pm.IPackageInstaller$Stub
+android.content.pm.IPackageInstaller$Stub$Proxy
+android.content.pm.IPackageInstallerCallback
+android.content.pm.IPackageInstallerCallback$Stub
+android.content.pm.IPackageInstallerCallback$Stub$Proxy
+android.content.pm.IPackageInstallerSession
+android.content.pm.IPackageInstallerSession$Stub
+android.content.pm.IPackageInstallerSession$Stub$Proxy
+android.content.pm.IPackageManager
+android.content.pm.IPackageManager$Stub
+android.content.pm.IPackageManager$Stub$Proxy
+android.content.pm.IPackageMoveObserver
+android.content.pm.IPackageMoveObserver$Stub
+android.content.pm.IPackageMoveObserver$Stub$Proxy
+android.content.pm.IPackageStatsObserver
+android.content.pm.IPackageStatsObserver$Stub
+android.content.pm.IPackageStatsObserver$Stub$Proxy
+android.content.pm.IShortcutService
+android.content.pm.IShortcutService$Stub
+android.content.pm.InstrumentationInfo
+android.content.pm.InstrumentationInfo$1
+android.content.pm.IntentFilterVerificationInfo
+android.content.pm.IntentFilterVerificationInfo$1
+android.content.pm.KeySet
+android.content.pm.LabeledIntent
+android.content.pm.LauncherActivityInfo
+android.content.pm.LauncherApps
+android.content.pm.LauncherApps$1
+android.content.pm.LauncherApps$Callback
+android.content.pm.LauncherApps$CallbackMessageHandler
+android.content.pm.LauncherApps$CallbackMessageHandler$CallbackInfo
+android.content.pm.PackageCleanItem
+android.content.pm.PackageCleanItem$1
+android.content.pm.PackageInfo
+android.content.pm.PackageInfo$1
+android.content.pm.PackageInfoLite
+android.content.pm.PackageInfoLite$1
+android.content.pm.PackageInstaller
+android.content.pm.PackageInstaller$Session
+android.content.pm.PackageInstaller$SessionCallback
+android.content.pm.PackageInstaller$SessionCallbackDelegate
+android.content.pm.PackageInstaller$SessionInfo
+android.content.pm.PackageInstaller$SessionInfo$1
+android.content.pm.PackageInstaller$SessionParams
+android.content.pm.PackageInstaller$SessionParams$1
+android.content.pm.PackageItemInfo
+android.content.pm.PackageManager
+android.content.pm.PackageManager$LegacyPackageDeleteObserver
+android.content.pm.PackageManager$MoveCallback
+android.content.pm.PackageManager$NameNotFoundException
+android.content.pm.PackageManager$OnPermissionsChangedListener
+android.content.pm.PackageManagerInternal
+android.content.pm.PackageManagerInternal$PackagesProvider
+android.content.pm.PackageManagerInternal$SyncAdapterPackagesProvider
+android.content.pm.PackageParser
+android.content.pm.PackageParser$Activity
+android.content.pm.PackageParser$ActivityIntentInfo
+android.content.pm.PackageParser$ApkLite
+android.content.pm.PackageParser$Component
+android.content.pm.PackageParser$IntentInfo
+android.content.pm.PackageParser$NewPermissionInfo
+android.content.pm.PackageParser$Package
+android.content.pm.PackageParser$PackageLite
+android.content.pm.PackageParser$PackageParserException
+android.content.pm.PackageParser$ParseComponentArgs
+android.content.pm.PackageParser$ParsePackageItemArgs
+android.content.pm.PackageParser$Permission
+android.content.pm.PackageParser$PermissionGroup
+android.content.pm.PackageParser$Provider
+android.content.pm.PackageParser$ProviderIntentInfo
+android.content.pm.PackageParser$Service
+android.content.pm.PackageParser$ServiceIntentInfo
+android.content.pm.PackageParser$SplitNameComparator
+android.content.pm.PackageParser$SplitPermissionInfo
+android.content.pm.PackageStats
+android.content.pm.PackageStats$1
+android.content.pm.PackageUserState
+android.content.pm.ParceledListSlice
+android.content.pm.ParceledListSlice$1
+android.content.pm.ParceledListSlice$2
+android.content.pm.PathPermission
+android.content.pm.PathPermission$1
+android.content.pm.PermissionGroupInfo
+android.content.pm.PermissionGroupInfo$1
+android.content.pm.PermissionInfo
+android.content.pm.PermissionInfo$1
+android.content.pm.ProviderInfo
+android.content.pm.ProviderInfo$1
+android.content.pm.RegisteredServicesCache
+android.content.pm.RegisteredServicesCache$1
+android.content.pm.RegisteredServicesCache$2
+android.content.pm.RegisteredServicesCache$3
+android.content.pm.RegisteredServicesCache$4
+android.content.pm.RegisteredServicesCache$ServiceInfo
+android.content.pm.RegisteredServicesCache$UserServices
+android.content.pm.RegisteredServicesCacheListener
+android.content.pm.ResolveInfo
+android.content.pm.ResolveInfo$1
+android.content.pm.ServiceInfo
+android.content.pm.ServiceInfo$1
+android.content.pm.ShortcutInfo
+android.content.pm.ShortcutManager
+android.content.pm.ShortcutServiceInternal
+android.content.pm.ShortcutServiceInternal$ShortcutChangeListener
+android.content.pm.Signature
+android.content.pm.Signature$1
+android.content.pm.UserInfo
+android.content.pm.UserInfo$1
+android.content.pm.VerifierDeviceIdentity
+android.content.pm.VerifierInfo
+android.content.pm.XmlSerializerAndParser
+android.content.res.AssetFileDescriptor
+android.content.res.AssetFileDescriptor$1
+android.content.res.AssetFileDescriptor$AutoCloseInputStream
+android.content.res.AssetManager
+android.content.res.AssetManager$AssetInputStream
+android.content.res.ColorStateList
+android.content.res.ColorStateList$1
+android.content.res.ColorStateList$ColorStateListFactory
+android.content.res.CompatibilityInfo
+android.content.res.CompatibilityInfo$1
+android.content.res.CompatibilityInfo$2
+android.content.res.ComplexColor
+android.content.res.Configuration
+android.content.res.Configuration$1
+android.content.res.ConfigurationBoundResourceCache
+android.content.res.ConstantState
+android.content.res.DrawableCache
+android.content.res.GradientColor
+android.content.res.ObbInfo
+android.content.res.ObbInfo$1
+android.content.res.ObbScanner
+android.content.res.Resources
+android.content.res.Resources$NotFoundException
+android.content.res.Resources$Theme
+android.content.res.Resources$ThemeKey
+android.content.res.ResourcesImpl
+android.content.res.ResourcesImpl$ThemeImpl
+android.content.res.ResourcesKey
+android.content.res.StringBlock
+android.content.res.StringBlock$StyleIDs
+android.content.res.ThemedResourceCache
+android.content.res.TypedArray
+android.content.res.XmlBlock
+android.content.res.XmlBlock$Parser
+android.content.res.XmlResourceParser
+android.database.AbstractCursor
+android.database.AbstractCursor$SelfContentObserver
+android.database.AbstractWindowedCursor
+android.database.BulkCursorDescriptor
+android.database.BulkCursorDescriptor$1
+android.database.BulkCursorNative
+android.database.BulkCursorProxy
+android.database.BulkCursorToCursorAdaptor
+android.database.CharArrayBuffer
+android.database.ContentObservable
+android.database.ContentObserver
+android.database.ContentObserver$NotificationRunnable
+android.database.ContentObserver$Transport
+android.database.CrossProcessCursor
+android.database.CrossProcessCursorWrapper
+android.database.Cursor
+android.database.CursorIndexOutOfBoundsException
+android.database.CursorToBulkCursorAdaptor
+android.database.CursorToBulkCursorAdaptor$ContentObserverProxy
+android.database.CursorWindow
+android.database.CursorWindow$1
+android.database.CursorWrapper
+android.database.DataSetObservable
+android.database.DataSetObserver
+android.database.DatabaseErrorHandler
+android.database.DatabaseUtils
+android.database.DatabaseUtils$InsertHelper
+android.database.DefaultDatabaseErrorHandler
+android.database.IBulkCursor
+android.database.IContentObserver
+android.database.IContentObserver$Stub
+android.database.IContentObserver$Stub$Proxy
+android.database.MatrixCursor
+android.database.MatrixCursor$RowBuilder
+android.database.MergeCursor
+android.database.MergeCursor$1
+android.database.Observable
+android.database.SQLException
+android.database.sqlite.DatabaseObjectNotClosedException
+android.database.sqlite.SQLiteAbortException
+android.database.sqlite.SQLiteCantOpenDatabaseException
+android.database.sqlite.SQLiteClosable
+android.database.sqlite.SQLiteConnection
+android.database.sqlite.SQLiteConnection$Operation
+android.database.sqlite.SQLiteConnection$OperationLog
+android.database.sqlite.SQLiteConnection$PreparedStatement
+android.database.sqlite.SQLiteConnection$PreparedStatementCache
+android.database.sqlite.SQLiteConnectionPool
+android.database.sqlite.SQLiteConnectionPool$1
+android.database.sqlite.SQLiteConnectionPool$AcquiredConnectionStatus
+android.database.sqlite.SQLiteConnectionPool$ConnectionWaiter
+android.database.sqlite.SQLiteConstraintException
+android.database.sqlite.SQLiteCursor
+android.database.sqlite.SQLiteCursorDriver
+android.database.sqlite.SQLiteCustomFunction
+android.database.sqlite.SQLiteDatabase
+android.database.sqlite.SQLiteDatabase$1
+android.database.sqlite.SQLiteDatabase$2
+android.database.sqlite.SQLiteDatabase$CursorFactory
+android.database.sqlite.SQLiteDatabase$CustomFunction
+android.database.sqlite.SQLiteDatabaseConfiguration
+android.database.sqlite.SQLiteDatabaseCorruptException
+android.database.sqlite.SQLiteDatabaseLockedException
+android.database.sqlite.SQLiteDebug
+android.database.sqlite.SQLiteDebug$PagerStats
+android.database.sqlite.SQLiteDirectCursorDriver
+android.database.sqlite.SQLiteDiskIOException
+android.database.sqlite.SQLiteDoneException
+android.database.sqlite.SQLiteException
+android.database.sqlite.SQLiteFullException
+android.database.sqlite.SQLiteGlobal
+android.database.sqlite.SQLiteOpenHelper
+android.database.sqlite.SQLiteProgram
+android.database.sqlite.SQLiteQuery
+android.database.sqlite.SQLiteQueryBuilder
+android.database.sqlite.SQLiteSession
+android.database.sqlite.SQLiteSession$Transaction
+android.database.sqlite.SQLiteStatement
+android.database.sqlite.SQLiteStatementInfo
+android.database.sqlite.SQLiteTransactionListener
+android.database.sqlite.SqliteWrapper
+android.ddm.DdmHandleAppName
+android.ddm.DdmHandleExit
+android.ddm.DdmHandleHeap
+android.ddm.DdmHandleHello
+android.ddm.DdmHandleNativeHeap
+android.ddm.DdmHandleProfiling
+android.ddm.DdmHandleThread
+android.ddm.DdmHandleViewDebug
+android.ddm.DdmRegister
+android.drm.DrmManagerClient
+android.drm.DrmManagerClient$EventHandler
+android.drm.DrmManagerClient$InfoHandler
+android.drm.DrmOutputStream
+android.drm.DrmSupportInfo
+android.graphics.Atlas
+android.graphics.Atlas$Entry
+android.graphics.Atlas$Policy
+android.graphics.Atlas$SlicePolicy
+android.graphics.Atlas$SlicePolicy$Cell
+android.graphics.Atlas$SlicePolicy$MinAreaSplitDecision
+android.graphics.Atlas$SlicePolicy$SplitDecision
+android.graphics.Atlas$Type
+android.graphics.Bitmap
+android.graphics.Bitmap$1
+android.graphics.Bitmap$CompressFormat
+android.graphics.Bitmap$Config
+android.graphics.BitmapFactory
+android.graphics.BitmapFactory$Options
+android.graphics.BitmapRegionDecoder
+android.graphics.BitmapShader
+android.graphics.BlurMaskFilter
+android.graphics.BlurMaskFilter$Blur
+android.graphics.Camera
+android.graphics.Canvas
+android.graphics.Canvas$EdgeType
+android.graphics.Canvas$NoImagePreloadHolder
+android.graphics.CanvasProperty
+android.graphics.Color
+android.graphics.ColorFilter
+android.graphics.ColorMatrix
+android.graphics.ColorMatrixColorFilter
+android.graphics.ComposePathEffect
+android.graphics.ComposeShader
+android.graphics.CornerPathEffect
+android.graphics.DashPathEffect
+android.graphics.DiscretePathEffect
+android.graphics.DrawFilter
+android.graphics.EmbossMaskFilter
+android.graphics.FontFamily
+android.graphics.FontListParser
+android.graphics.FontListParser$Alias
+android.graphics.FontListParser$Axis
+android.graphics.FontListParser$Config
+android.graphics.FontListParser$Family
+android.graphics.FontListParser$Font
+android.graphics.ImageFormat
+android.graphics.Insets
+android.graphics.Interpolator
+android.graphics.Interpolator$Result
+android.graphics.LayerRasterizer
+android.graphics.LightingColorFilter
+android.graphics.LinearGradient
+android.graphics.MaskFilter
+android.graphics.Matrix
+android.graphics.Matrix$1
+android.graphics.Matrix$ScaleToFit
+android.graphics.Movie
+android.graphics.NinePatch
+android.graphics.NinePatch$InsetStruct
+android.graphics.Outline
+android.graphics.Paint
+android.graphics.Paint$Align
+android.graphics.Paint$Cap
+android.graphics.Paint$FontMetrics
+android.graphics.Paint$FontMetricsInt
+android.graphics.Paint$Join
+android.graphics.Paint$NoImagePreloadHolder
+android.graphics.Paint$Style
+android.graphics.PaintFlagsDrawFilter
+android.graphics.Path
+android.graphics.Path$Direction
+android.graphics.Path$FillType
+android.graphics.Path$Op
+android.graphics.PathDashPathEffect
+android.graphics.PathEffect
+android.graphics.PathMeasure
+android.graphics.Picture
+android.graphics.Picture$RecordingCanvas
+android.graphics.PixelFormat
+android.graphics.Point
+android.graphics.Point$1
+android.graphics.PointF
+android.graphics.PointF$1
+android.graphics.PorterDuff
+android.graphics.PorterDuff$Mode
+android.graphics.PorterDuffColorFilter
+android.graphics.PorterDuffXfermode
+android.graphics.RadialGradient
+android.graphics.Rasterizer
+android.graphics.Rect
+android.graphics.Rect$1
+android.graphics.Rect$UnflattenHelper
+android.graphics.RectF
+android.graphics.RectF$1
+android.graphics.Region
+android.graphics.Region$1
+android.graphics.Region$Op
+android.graphics.RegionIterator
+android.graphics.Shader
+android.graphics.Shader$TileMode
+android.graphics.SumPathEffect
+android.graphics.SurfaceTexture
+android.graphics.SurfaceTexture$1
+android.graphics.SurfaceTexture$OnFrameAvailableListener
+android.graphics.SweepGradient
+android.graphics.TableMaskFilter
+android.graphics.TemporaryBuffer
+android.graphics.Typeface
+android.graphics.Xfermode
+android.graphics.YuvImage
+android.graphics.drawable.Animatable
+android.graphics.drawable.Animatable2
+android.graphics.drawable.Animatable2$AnimationCallback
+android.graphics.drawable.AnimatedRotateDrawable
+android.graphics.drawable.AnimatedRotateDrawable$1
+android.graphics.drawable.AnimatedRotateDrawable$AnimatedRotateState
+android.graphics.drawable.AnimatedStateListDrawable
+android.graphics.drawable.AnimatedStateListDrawable$AnimatedStateListState
+android.graphics.drawable.AnimatedStateListDrawable$AnimatedVectorDrawableTransition
+android.graphics.drawable.AnimatedStateListDrawable$AnimationDrawableTransition
+android.graphics.drawable.AnimatedStateListDrawable$FrameInterpolator
+android.graphics.drawable.AnimatedStateListDrawable$Transition
+android.graphics.drawable.AnimatedVectorDrawable
+android.graphics.drawable.AnimatedVectorDrawable$1
+android.graphics.drawable.AnimatedVectorDrawable$2
+android.graphics.drawable.AnimatedVectorDrawable$AnimatedVectorDrawableState
+android.graphics.drawable.AnimatedVectorDrawable$AnimatedVectorDrawableState$PendingAnimator
+android.graphics.drawable.AnimatedVectorDrawable$VectorDrawableAnimator
+android.graphics.drawable.AnimatedVectorDrawable$VectorDrawableAnimatorRT
+android.graphics.drawable.AnimatedVectorDrawable$VectorDrawableAnimatorUI
+android.graphics.drawable.AnimationDrawable
+android.graphics.drawable.AnimationDrawable$AnimationState
+android.graphics.drawable.BitmapDrawable
+android.graphics.drawable.BitmapDrawable$BitmapState
+android.graphics.drawable.ClipDrawable
+android.graphics.drawable.ClipDrawable$ClipState
+android.graphics.drawable.ColorDrawable
+android.graphics.drawable.ColorDrawable$ColorState
+android.graphics.drawable.Drawable
+android.graphics.drawable.Drawable$Callback
+android.graphics.drawable.Drawable$ConstantState
+android.graphics.drawable.DrawableContainer
+android.graphics.drawable.DrawableContainer$1
+android.graphics.drawable.DrawableContainer$DrawableContainerState
+android.graphics.drawable.DrawableInflater
+android.graphics.drawable.DrawableWrapper
+android.graphics.drawable.DrawableWrapper$DrawableWrapperState
+android.graphics.drawable.GradientDrawable
+android.graphics.drawable.GradientDrawable$GradientState
+android.graphics.drawable.GradientDrawable$Orientation
+android.graphics.drawable.Icon
+android.graphics.drawable.Icon$1
+android.graphics.drawable.InsetDrawable
+android.graphics.drawable.InsetDrawable$InsetState
+android.graphics.drawable.LayerDrawable
+android.graphics.drawable.LayerDrawable$ChildDrawable
+android.graphics.drawable.LayerDrawable$LayerState
+android.graphics.drawable.LevelListDrawable
+android.graphics.drawable.LevelListDrawable$LevelListState
+android.graphics.drawable.NinePatchDrawable
+android.graphics.drawable.NinePatchDrawable$NinePatchState
+android.graphics.drawable.PaintDrawable
+android.graphics.drawable.PictureDrawable
+android.graphics.drawable.RippleBackground
+android.graphics.drawable.RippleBackground$1
+android.graphics.drawable.RippleBackground$BackgroundProperty
+android.graphics.drawable.RippleComponent
+android.graphics.drawable.RippleComponent$RenderNodeAnimatorSet
+android.graphics.drawable.RippleDrawable
+android.graphics.drawable.RippleDrawable$RippleState
+android.graphics.drawable.RippleForeground
+android.graphics.drawable.RippleForeground$1
+android.graphics.drawable.RippleForeground$2
+android.graphics.drawable.RippleForeground$3
+android.graphics.drawable.RippleForeground$4
+android.graphics.drawable.RippleForeground$LogDecelerateInterpolator
+android.graphics.drawable.RotateDrawable
+android.graphics.drawable.RotateDrawable$RotateState
+android.graphics.drawable.ScaleDrawable
+android.graphics.drawable.ScaleDrawable$ScaleState
+android.graphics.drawable.ShapeDrawable
+android.graphics.drawable.ShapeDrawable$ShaderFactory
+android.graphics.drawable.ShapeDrawable$ShapeState
+android.graphics.drawable.StateListDrawable
+android.graphics.drawable.StateListDrawable$StateListState
+android.graphics.drawable.TransitionDrawable
+android.graphics.drawable.TransitionDrawable$TransitionState
+android.graphics.drawable.VectorDrawable
+android.graphics.drawable.VectorDrawable$VClipPath
+android.graphics.drawable.VectorDrawable$VFullPath
+android.graphics.drawable.VectorDrawable$VFullPath$1
+android.graphics.drawable.VectorDrawable$VGroup
+android.graphics.drawable.VectorDrawable$VGroup$1
+android.graphics.drawable.VectorDrawable$VObject
+android.graphics.drawable.VectorDrawable$VPath
+android.graphics.drawable.VectorDrawable$VectorDrawableState
+android.graphics.drawable.shapes.OvalShape
+android.graphics.drawable.shapes.PathShape
+android.graphics.drawable.shapes.RectShape
+android.graphics.drawable.shapes.RoundRectShape
+android.graphics.drawable.shapes.Shape
+android.graphics.pdf.PdfDocument
+android.graphics.pdf.PdfEditor
+android.graphics.pdf.PdfRenderer
+android.hardware.Camera
+android.hardware.Camera$Area
+android.hardware.Camera$AutoFocusCallback
+android.hardware.Camera$AutoFocusMoveCallback
+android.hardware.Camera$CameraInfo
+android.hardware.Camera$ErrorCallback
+android.hardware.Camera$EventHandler
+android.hardware.Camera$Face
+android.hardware.Camera$FaceDetectionListener
+android.hardware.Camera$OnZoomChangeListener
+android.hardware.Camera$Parameters
+android.hardware.Camera$PictureCallback
+android.hardware.Camera$PreviewCallback
+android.hardware.Camera$ShutterCallback
+android.hardware.Camera$Size
+android.hardware.ConsumerIrManager
+android.hardware.GeomagneticField
+android.hardware.GeomagneticField$LegendreTable
+android.hardware.ICameraService
+android.hardware.ICameraService$Stub
+android.hardware.ICameraService$Stub$Proxy
+android.hardware.ICameraServiceListener
+android.hardware.ICameraServiceListener$Stub
+android.hardware.ICameraServiceProxy
+android.hardware.ICameraServiceProxy$Stub
+android.hardware.IConsumerIrService
+android.hardware.IConsumerIrService$Stub
+android.hardware.ISerialManager
+android.hardware.ISerialManager$Stub
+android.hardware.Sensor
+android.hardware.SensorEvent
+android.hardware.SensorEventListener
+android.hardware.SensorEventListener2
+android.hardware.SensorManager
+android.hardware.SerialManager
+android.hardware.SerialPort
+android.hardware.SystemSensorManager
+android.hardware.SystemSensorManager$BaseEventQueue
+android.hardware.SystemSensorManager$SensorEventQueue
+android.hardware.SystemSensorManager$TriggerEventQueue
+android.hardware.TriggerEvent
+android.hardware.TriggerEventListener
+android.hardware.camera2.CameraAccessException
+android.hardware.camera2.CameraCaptureSession
+android.hardware.camera2.CameraCaptureSession$CaptureCallback
+android.hardware.camera2.CameraCaptureSession$StateCallback
+android.hardware.camera2.CameraCharacteristics
+android.hardware.camera2.CameraCharacteristics$1
+android.hardware.camera2.CameraCharacteristics$2
+android.hardware.camera2.CameraCharacteristics$3
+android.hardware.camera2.CameraCharacteristics$4
+android.hardware.camera2.CameraCharacteristics$5
+android.hardware.camera2.CameraCharacteristics$Key
+android.hardware.camera2.CameraDevice
+android.hardware.camera2.CameraDevice$StateCallback
+android.hardware.camera2.CameraManager
+android.hardware.camera2.CameraManager$AvailabilityCallback
+android.hardware.camera2.CameraManager$CameraManagerGlobal
+android.hardware.camera2.CameraManager$CameraManagerGlobal$3
+android.hardware.camera2.CameraManager$CameraManagerGlobal$4
+android.hardware.camera2.CameraManager$TorchCallback
+android.hardware.camera2.CameraMetadata
+android.hardware.camera2.CaptureFailure
+android.hardware.camera2.CaptureRequest
+android.hardware.camera2.CaptureRequest$1
+android.hardware.camera2.CaptureRequest$2
+android.hardware.camera2.CaptureRequest$Builder
+android.hardware.camera2.CaptureRequest$Key
+android.hardware.camera2.CaptureResult
+android.hardware.camera2.CaptureResult$1
+android.hardware.camera2.CaptureResult$2
+android.hardware.camera2.CaptureResult$3
+android.hardware.camera2.CaptureResult$Key
+android.hardware.camera2.DngCreator
+android.hardware.camera2.ICameraDeviceCallbacks
+android.hardware.camera2.ICameraDeviceCallbacks$Stub
+android.hardware.camera2.ICameraDeviceUser
+android.hardware.camera2.ICameraDeviceUser$Stub
+android.hardware.camera2.ICameraDeviceUser$Stub$Proxy
+android.hardware.camera2.TotalCaptureResult
+android.hardware.camera2.dispatch.ArgumentReplacingDispatcher
+android.hardware.camera2.dispatch.BroadcastDispatcher
+android.hardware.camera2.dispatch.Dispatchable
+android.hardware.camera2.dispatch.DuckTypingDispatcher
+android.hardware.camera2.dispatch.HandlerDispatcher
+android.hardware.camera2.dispatch.HandlerDispatcher$1
+android.hardware.camera2.dispatch.InvokeDispatcher
+android.hardware.camera2.dispatch.MethodNameInvoker
+android.hardware.camera2.impl.CallbackProxies$DeviceCaptureCallbackProxy
+android.hardware.camera2.impl.CallbackProxies$SessionStateCallbackProxy
+android.hardware.camera2.impl.CameraCaptureSessionCore
+android.hardware.camera2.impl.CameraCaptureSessionImpl
+android.hardware.camera2.impl.CameraCaptureSessionImpl$1
+android.hardware.camera2.impl.CameraCaptureSessionImpl$2
+android.hardware.camera2.impl.CameraCaptureSessionImpl$AbortDrainListener
+android.hardware.camera2.impl.CameraCaptureSessionImpl$IdleDrainListener
+android.hardware.camera2.impl.CameraCaptureSessionImpl$SequenceDrainListener
+android.hardware.camera2.impl.CameraDeviceImpl
+android.hardware.camera2.impl.CameraDeviceImpl$1
+android.hardware.camera2.impl.CameraDeviceImpl$10
+android.hardware.camera2.impl.CameraDeviceImpl$2
+android.hardware.camera2.impl.CameraDeviceImpl$3
+android.hardware.camera2.impl.CameraDeviceImpl$4
+android.hardware.camera2.impl.CameraDeviceImpl$5
+android.hardware.camera2.impl.CameraDeviceImpl$6
+android.hardware.camera2.impl.CameraDeviceImpl$7
+android.hardware.camera2.impl.CameraDeviceImpl$9
+android.hardware.camera2.impl.CameraDeviceImpl$CameraDeviceCallbacks
+android.hardware.camera2.impl.CameraDeviceImpl$CameraDeviceCallbacks$2
+android.hardware.camera2.impl.CameraDeviceImpl$CameraDeviceCallbacks$3
+android.hardware.camera2.impl.CameraDeviceImpl$CameraDeviceCallbacks$4
+android.hardware.camera2.impl.CameraDeviceImpl$CameraDeviceCallbacks$5
+android.hardware.camera2.impl.CameraDeviceImpl$CameraDeviceCallbacks$6
+android.hardware.camera2.impl.CameraDeviceImpl$CaptureCallback
+android.hardware.camera2.impl.CameraDeviceImpl$CaptureCallbackHolder
+android.hardware.camera2.impl.CameraDeviceImpl$FrameNumberTracker
+android.hardware.camera2.impl.CameraDeviceImpl$RequestLastFrameNumbersHolder
+android.hardware.camera2.impl.CameraDeviceImpl$StateCallbackKK
+android.hardware.camera2.impl.CameraMetadataNative
+android.hardware.camera2.impl.CameraMetadataNative$1
+android.hardware.camera2.impl.CameraMetadataNative$10
+android.hardware.camera2.impl.CameraMetadataNative$11
+android.hardware.camera2.impl.CameraMetadataNative$12
+android.hardware.camera2.impl.CameraMetadataNative$13
+android.hardware.camera2.impl.CameraMetadataNative$14
+android.hardware.camera2.impl.CameraMetadataNative$15
+android.hardware.camera2.impl.CameraMetadataNative$16
+android.hardware.camera2.impl.CameraMetadataNative$17
+android.hardware.camera2.impl.CameraMetadataNative$18
+android.hardware.camera2.impl.CameraMetadataNative$19
+android.hardware.camera2.impl.CameraMetadataNative$2
+android.hardware.camera2.impl.CameraMetadataNative$3
+android.hardware.camera2.impl.CameraMetadataNative$4
+android.hardware.camera2.impl.CameraMetadataNative$5
+android.hardware.camera2.impl.CameraMetadataNative$6
+android.hardware.camera2.impl.CameraMetadataNative$7
+android.hardware.camera2.impl.CameraMetadataNative$8
+android.hardware.camera2.impl.CameraMetadataNative$9
+android.hardware.camera2.impl.CameraMetadataNative$Key
+android.hardware.camera2.impl.CaptureResultExtras
+android.hardware.camera2.impl.CaptureResultExtras$1
+android.hardware.camera2.impl.GetCommand
+android.hardware.camera2.impl.ICameraDeviceUserWrapper
+android.hardware.camera2.impl.SetCommand
+android.hardware.camera2.legacy.LegacyCameraDevice
+android.hardware.camera2.legacy.LegacyExceptionUtils
+android.hardware.camera2.legacy.LegacyExceptionUtils$BufferQueueAbandonedException
+android.hardware.camera2.legacy.PerfMeasurement
+android.hardware.camera2.marshal.MarshalHelpers
+android.hardware.camera2.marshal.MarshalQueryable
+android.hardware.camera2.marshal.MarshalRegistry
+android.hardware.camera2.marshal.MarshalRegistry$MarshalToken
+android.hardware.camera2.marshal.Marshaler
+android.hardware.camera2.marshal.impl.MarshalQueryableArray
+android.hardware.camera2.marshal.impl.MarshalQueryableArray$MarshalerArray
+android.hardware.camera2.marshal.impl.MarshalQueryableBlackLevelPattern
+android.hardware.camera2.marshal.impl.MarshalQueryableBlackLevelPattern$MarshalerBlackLevelPattern
+android.hardware.camera2.marshal.impl.MarshalQueryableBoolean
+android.hardware.camera2.marshal.impl.MarshalQueryableBoolean$MarshalerBoolean
+android.hardware.camera2.marshal.impl.MarshalQueryableColorSpaceTransform
+android.hardware.camera2.marshal.impl.MarshalQueryableColorSpaceTransform$MarshalerColorSpaceTransform
+android.hardware.camera2.marshal.impl.MarshalQueryableEnum
+android.hardware.camera2.marshal.impl.MarshalQueryableHighSpeedVideoConfiguration
+android.hardware.camera2.marshal.impl.MarshalQueryableHighSpeedVideoConfiguration$MarshalerHighSpeedVideoConfiguration
+android.hardware.camera2.marshal.impl.MarshalQueryableMeteringRectangle
+android.hardware.camera2.marshal.impl.MarshalQueryableMeteringRectangle$MarshalerMeteringRectangle
+android.hardware.camera2.marshal.impl.MarshalQueryableNativeByteToInteger
+android.hardware.camera2.marshal.impl.MarshalQueryableNativeByteToInteger$MarshalerNativeByteToInteger
+android.hardware.camera2.marshal.impl.MarshalQueryablePair
+android.hardware.camera2.marshal.impl.MarshalQueryablePair$MarshalerPair
+android.hardware.camera2.marshal.impl.MarshalQueryableParcelable
+android.hardware.camera2.marshal.impl.MarshalQueryablePrimitive
+android.hardware.camera2.marshal.impl.MarshalQueryablePrimitive$MarshalerPrimitive
+android.hardware.camera2.marshal.impl.MarshalQueryableRange
+android.hardware.camera2.marshal.impl.MarshalQueryableRange$MarshalerRange
+android.hardware.camera2.marshal.impl.MarshalQueryableRect
+android.hardware.camera2.marshal.impl.MarshalQueryableRect$MarshalerRect
+android.hardware.camera2.marshal.impl.MarshalQueryableReprocessFormatsMap
+android.hardware.camera2.marshal.impl.MarshalQueryableReprocessFormatsMap$MarshalerReprocessFormatsMap
+android.hardware.camera2.marshal.impl.MarshalQueryableRggbChannelVector
+android.hardware.camera2.marshal.impl.MarshalQueryableRggbChannelVector$MarshalerRggbChannelVector
+android.hardware.camera2.marshal.impl.MarshalQueryableSize
+android.hardware.camera2.marshal.impl.MarshalQueryableSize$MarshalerSize
+android.hardware.camera2.marshal.impl.MarshalQueryableSizeF
+android.hardware.camera2.marshal.impl.MarshalQueryableStreamConfiguration
+android.hardware.camera2.marshal.impl.MarshalQueryableStreamConfiguration$MarshalerStreamConfiguration
+android.hardware.camera2.marshal.impl.MarshalQueryableStreamConfigurationDuration
+android.hardware.camera2.marshal.impl.MarshalQueryableStreamConfigurationDuration$MarshalerStreamConfigurationDuration
+android.hardware.camera2.marshal.impl.MarshalQueryableString
+android.hardware.camera2.params.BlackLevelPattern
+android.hardware.camera2.params.ColorSpaceTransform
+android.hardware.camera2.params.Face
+android.hardware.camera2.params.HighSpeedVideoConfiguration
+android.hardware.camera2.params.InputConfiguration
+android.hardware.camera2.params.LensShadingMap
+android.hardware.camera2.params.MeteringRectangle
+android.hardware.camera2.params.OutputConfiguration
+android.hardware.camera2.params.OutputConfiguration$1
+android.hardware.camera2.params.ReprocessFormatsMap
+android.hardware.camera2.params.RggbChannelVector
+android.hardware.camera2.params.StreamConfiguration
+android.hardware.camera2.params.StreamConfigurationDuration
+android.hardware.camera2.params.StreamConfigurationMap
+android.hardware.camera2.params.TonemapCurve
+android.hardware.camera2.utils.ArrayUtils
+android.hardware.camera2.utils.HashCodeHelpers
+android.hardware.camera2.utils.SubmitInfo
+android.hardware.camera2.utils.SubmitInfo$1
+android.hardware.camera2.utils.SurfaceUtils
+android.hardware.camera2.utils.TaskDrainer
+android.hardware.camera2.utils.TaskDrainer$1
+android.hardware.camera2.utils.TaskDrainer$DrainListener
+android.hardware.camera2.utils.TaskSingleDrainer
+android.hardware.camera2.utils.TypeReference
+android.hardware.camera2.utils.TypeReference$SpecializedBaseTypeReference
+android.hardware.camera2.utils.TypeReference$SpecializedTypeReference
+android.hardware.display.DisplayManager
+android.hardware.display.DisplayManager$DisplayListener
+android.hardware.display.DisplayManagerGlobal
+android.hardware.display.DisplayManagerGlobal$DisplayListenerDelegate
+android.hardware.display.DisplayManagerGlobal$DisplayManagerCallback
+android.hardware.display.DisplayManagerInternal
+android.hardware.display.DisplayManagerInternal$DisplayPowerCallbacks
+android.hardware.display.DisplayManagerInternal$DisplayPowerRequest
+android.hardware.display.DisplayManagerInternal$DisplayTransactionListener
+android.hardware.display.DisplayViewport
+android.hardware.display.IDisplayManager
+android.hardware.display.IDisplayManager$Stub
+android.hardware.display.IDisplayManager$Stub$Proxy
+android.hardware.display.IDisplayManagerCallback
+android.hardware.display.IDisplayManagerCallback$Stub
+android.hardware.display.IDisplayManagerCallback$Stub$Proxy
+android.hardware.display.IVirtualDisplayCallback
+android.hardware.display.WifiDisplay
+android.hardware.display.WifiDisplay$1
+android.hardware.display.WifiDisplaySessionInfo
+android.hardware.display.WifiDisplaySessionInfo$1
+android.hardware.display.WifiDisplayStatus
+android.hardware.display.WifiDisplayStatus$1
+android.hardware.fingerprint.Fingerprint
+android.hardware.fingerprint.Fingerprint$1
+android.hardware.fingerprint.FingerprintManager
+android.hardware.fingerprint.FingerprintManager$1
+android.hardware.fingerprint.FingerprintManager$2
+android.hardware.fingerprint.FingerprintManager$2$1
+android.hardware.fingerprint.FingerprintManager$AuthenticationCallback
+android.hardware.fingerprint.FingerprintManager$AuthenticationResult
+android.hardware.fingerprint.FingerprintManager$CryptoObject
+android.hardware.fingerprint.FingerprintManager$EnrollmentCallback
+android.hardware.fingerprint.FingerprintManager$LockoutResetCallback
+android.hardware.fingerprint.FingerprintManager$MyHandler
+android.hardware.fingerprint.FingerprintManager$OnAuthenticationCancelListener
+android.hardware.fingerprint.FingerprintManager$OnEnrollCancelListener
+android.hardware.fingerprint.FingerprintManager$RemovalCallback
+android.hardware.fingerprint.IFingerprintDaemon
+android.hardware.fingerprint.IFingerprintDaemon$Stub
+android.hardware.fingerprint.IFingerprintDaemon$Stub$Proxy
+android.hardware.fingerprint.IFingerprintDaemonCallback
+android.hardware.fingerprint.IFingerprintDaemonCallback$Stub
+android.hardware.fingerprint.IFingerprintService
+android.hardware.fingerprint.IFingerprintService$Stub
+android.hardware.fingerprint.IFingerprintService$Stub$Proxy
+android.hardware.fingerprint.IFingerprintServiceLockoutResetCallback
+android.hardware.fingerprint.IFingerprintServiceLockoutResetCallback$Stub
+android.hardware.fingerprint.IFingerprintServiceLockoutResetCallback$Stub$Proxy
+android.hardware.fingerprint.IFingerprintServiceReceiver
+android.hardware.fingerprint.IFingerprintServiceReceiver$Stub
+android.hardware.fingerprint.IFingerprintServiceReceiver$Stub$Proxy
+android.hardware.hdmi.HdmiClient
+android.hardware.hdmi.HdmiControlManager
+android.hardware.hdmi.HdmiPlaybackClient
+android.hardware.hdmi.HdmiPlaybackClient$DisplayStatusCallback
+android.hardware.hdmi.HdmiTvClient
+android.hardware.hdmi.IHdmiControlService
+android.hardware.hdmi.IHdmiControlService$Stub
+android.hardware.input.IInputDevicesChangedListener
+android.hardware.input.IInputDevicesChangedListener$Stub
+android.hardware.input.IInputDevicesChangedListener$Stub$Proxy
+android.hardware.input.IInputManager
+android.hardware.input.IInputManager$Stub
+android.hardware.input.IInputManager$Stub$Proxy
+android.hardware.input.ITabletModeChangedListener
+android.hardware.input.InputDeviceIdentifier
+android.hardware.input.InputDeviceIdentifier$1
+android.hardware.input.InputManager
+android.hardware.input.InputManager$InputDeviceListener
+android.hardware.input.InputManager$InputDeviceListenerDelegate
+android.hardware.input.InputManager$InputDevicesChangedListener
+android.hardware.input.InputManager$OnTabletModeChangedListener
+android.hardware.input.InputManagerInternal
+android.hardware.input.KeyboardLayout
+android.hardware.input.KeyboardLayout$1
+android.hardware.input.TouchCalibration
+android.hardware.input.TouchCalibration$1
+android.hardware.location.ActivityChangedEvent
+android.hardware.location.ActivityRecognitionHardware
+android.hardware.location.ActivityRecognitionHardware$SinkList
+android.hardware.location.ContextHubInfo
+android.hardware.location.ContextHubInfo$1
+android.hardware.location.ContextHubManager
+android.hardware.location.ContextHubService
+android.hardware.location.GeofenceHardware
+android.hardware.location.GeofenceHardware$GeofenceHardwareCallbackWrapper
+android.hardware.location.GeofenceHardware$GeofenceHardwareMonitorCallbackWrapper
+android.hardware.location.GeofenceHardwareCallback
+android.hardware.location.GeofenceHardwareImpl
+android.hardware.location.GeofenceHardwareImpl$1
+android.hardware.location.GeofenceHardwareImpl$2
+android.hardware.location.GeofenceHardwareImpl$3
+android.hardware.location.GeofenceHardwareImpl$GeofenceTransition
+android.hardware.location.GeofenceHardwareImpl$Reaper
+android.hardware.location.GeofenceHardwareMonitorCallback
+android.hardware.location.GeofenceHardwareMonitorEvent
+android.hardware.location.GeofenceHardwareMonitorEvent$1
+android.hardware.location.GeofenceHardwareRequest
+android.hardware.location.GeofenceHardwareRequestParcelable
+android.hardware.location.GeofenceHardwareRequestParcelable$1
+android.hardware.location.GeofenceHardwareService
+android.hardware.location.GeofenceHardwareService$1
+android.hardware.location.IActivityRecognitionHardware
+android.hardware.location.IActivityRecognitionHardware$Stub
+android.hardware.location.IActivityRecognitionHardware$Stub$Proxy
+android.hardware.location.IActivityRecognitionHardwareClient
+android.hardware.location.IActivityRecognitionHardwareClient$Stub
+android.hardware.location.IActivityRecognitionHardwareClient$Stub$Proxy
+android.hardware.location.IActivityRecognitionHardwareSink
+android.hardware.location.IActivityRecognitionHardwareSink$Stub
+android.hardware.location.IActivityRecognitionHardwareSink$Stub$Proxy
+android.hardware.location.IActivityRecognitionHardwareWatcher
+android.hardware.location.IContextHubService
+android.hardware.location.IContextHubService$Stub
+android.hardware.location.IFusedLocationHardware
+android.hardware.location.IFusedLocationHardware$Stub
+android.hardware.location.IFusedLocationHardware$Stub$Proxy
+android.hardware.location.IFusedLocationHardwareSink
+android.hardware.location.IFusedLocationHardwareSink$Stub
+android.hardware.location.IFusedLocationHardwareSink$Stub$Proxy
+android.hardware.location.IGeofenceHardware
+android.hardware.location.IGeofenceHardware$Stub
+android.hardware.location.IGeofenceHardware$Stub$Proxy
+android.hardware.location.IGeofenceHardwareCallback
+android.hardware.location.IGeofenceHardwareCallback$Stub
+android.hardware.location.IGeofenceHardwareCallback$Stub$Proxy
+android.hardware.location.IGeofenceHardwareMonitorCallback
+android.hardware.location.IGeofenceHardwareMonitorCallback$Stub
+android.hardware.location.IGeofenceHardwareMonitorCallback$Stub$Proxy
+android.hardware.location.MemoryRegion
+android.hardware.location.NanoAppInstanceInfo
+android.hardware.location.NanoAppInstanceInfo$1
+android.hardware.radio.RadioManager
+android.hardware.radio.RadioManager$AmBandConfig
+android.hardware.radio.RadioManager$AmBandConfig$1
+android.hardware.radio.RadioManager$AmBandDescriptor
+android.hardware.radio.RadioManager$AmBandDescriptor$1
+android.hardware.radio.RadioManager$BandConfig
+android.hardware.radio.RadioManager$BandConfig$1
+android.hardware.radio.RadioManager$BandDescriptor
+android.hardware.radio.RadioManager$BandDescriptor$1
+android.hardware.radio.RadioManager$FmBandConfig
+android.hardware.radio.RadioManager$FmBandConfig$1
+android.hardware.radio.RadioManager$FmBandDescriptor
+android.hardware.radio.RadioManager$FmBandDescriptor$1
+android.hardware.radio.RadioManager$ModuleProperties
+android.hardware.radio.RadioManager$ModuleProperties$1
+android.hardware.radio.RadioManager$ProgramInfo
+android.hardware.radio.RadioManager$ProgramInfo$1
+android.hardware.radio.RadioMetadata
+android.hardware.radio.RadioMetadata$1
+android.hardware.radio.RadioModule
+android.hardware.radio.RadioTuner
+android.hardware.soundtrigger.IRecognitionStatusCallback
+android.hardware.soundtrigger.IRecognitionStatusCallback$Stub
+android.hardware.soundtrigger.KeyphraseEnrollmentInfo
+android.hardware.soundtrigger.KeyphraseMetadata
+android.hardware.soundtrigger.SoundTrigger
+android.hardware.soundtrigger.SoundTrigger$ConfidenceLevel
+android.hardware.soundtrigger.SoundTrigger$ConfidenceLevel$1
+android.hardware.soundtrigger.SoundTrigger$GenericRecognitionEvent
+android.hardware.soundtrigger.SoundTrigger$GenericRecognitionEvent$1
+android.hardware.soundtrigger.SoundTrigger$GenericSoundModel
+android.hardware.soundtrigger.SoundTrigger$Keyphrase
+android.hardware.soundtrigger.SoundTrigger$Keyphrase$1
+android.hardware.soundtrigger.SoundTrigger$KeyphraseRecognitionEvent
+android.hardware.soundtrigger.SoundTrigger$KeyphraseRecognitionEvent$1
+android.hardware.soundtrigger.SoundTrigger$KeyphraseRecognitionExtra
+android.hardware.soundtrigger.SoundTrigger$KeyphraseRecognitionExtra$1
+android.hardware.soundtrigger.SoundTrigger$KeyphraseSoundModel
+android.hardware.soundtrigger.SoundTrigger$KeyphraseSoundModel$1
+android.hardware.soundtrigger.SoundTrigger$ModuleProperties
+android.hardware.soundtrigger.SoundTrigger$ModuleProperties$1
+android.hardware.soundtrigger.SoundTrigger$RecognitionConfig
+android.hardware.soundtrigger.SoundTrigger$RecognitionConfig$1
+android.hardware.soundtrigger.SoundTrigger$RecognitionEvent
+android.hardware.soundtrigger.SoundTrigger$RecognitionEvent$1
+android.hardware.soundtrigger.SoundTrigger$SoundModel
+android.hardware.soundtrigger.SoundTrigger$SoundModelEvent
+android.hardware.soundtrigger.SoundTrigger$SoundModelEvent$1
+android.hardware.soundtrigger.SoundTrigger$StatusListener
+android.hardware.soundtrigger.SoundTriggerModule
+android.hardware.usb.IUsbManager
+android.hardware.usb.IUsbManager$Stub
+android.hardware.usb.IUsbManager$Stub$Proxy
+android.hardware.usb.UsbAccessory
+android.hardware.usb.UsbDevice
+android.hardware.usb.UsbDeviceConnection
+android.hardware.usb.UsbInterface
+android.hardware.usb.UsbManager
+android.hardware.usb.UsbPort
+android.hardware.usb.UsbPort$1
+android.hardware.usb.UsbPortStatus
+android.hardware.usb.UsbPortStatus$1
+android.hardware.usb.UsbRequest
+android.icu.impl.BMPSet
+android.icu.impl.CacheBase
+android.icu.impl.CalendarData
+android.icu.impl.CalendarUtil
+android.icu.impl.CharTrie
+android.icu.impl.CharacterIteration
+android.icu.impl.ClassLoaderUtil
+android.icu.impl.CurrencyData
+android.icu.impl.CurrencyData$CurrencyDisplayInfo
+android.icu.impl.CurrencyData$CurrencyDisplayInfoProvider
+android.icu.impl.CurrencyData$CurrencySpacingInfo
+android.icu.impl.DateNumberFormat
+android.icu.impl.DontCareFieldPosition
+android.icu.impl.Grego
+android.icu.impl.ICUBinary
+android.icu.impl.ICUBinary$Authenticate
+android.icu.impl.ICUBinary$DatPackageReader
+android.icu.impl.ICUBinary$DatPackageReader$IsAcceptable
+android.icu.impl.ICUBinary$DataFile
+android.icu.impl.ICUBinary$PackageDataFile
+android.icu.impl.ICUCache
+android.icu.impl.ICUConfig
+android.icu.impl.ICUCurrencyDisplayInfoProvider
+android.icu.impl.ICUCurrencyDisplayInfoProvider$ICUCurrencyDisplayInfo
+android.icu.impl.ICUCurrencyMetaInfo
+android.icu.impl.ICUCurrencyMetaInfo$Collector
+android.icu.impl.ICUCurrencyMetaInfo$CurrencyCollector
+android.icu.impl.ICUCurrencyMetaInfo$UniqueList
+android.icu.impl.ICUData
+android.icu.impl.ICUDebug
+android.icu.impl.ICULangDataTables
+android.icu.impl.ICULocaleService
+android.icu.impl.ICULocaleService$ICUResourceBundleFactory
+android.icu.impl.ICULocaleService$LocaleKey
+android.icu.impl.ICULocaleService$LocaleKeyFactory
+android.icu.impl.ICUNotifier
+android.icu.impl.ICURWLock
+android.icu.impl.ICURegionDataTables
+android.icu.impl.ICUResourceBundle
+android.icu.impl.ICUResourceBundle$1
+android.icu.impl.ICUResourceBundle$2
+android.icu.impl.ICUResourceBundle$2$1
+android.icu.impl.ICUResourceBundle$AvailEntry
+android.icu.impl.ICUResourceBundle$OpenType
+android.icu.impl.ICUResourceBundle$WholeBundle
+android.icu.impl.ICUResourceBundleImpl
+android.icu.impl.ICUResourceBundleImpl$ResourceArray
+android.icu.impl.ICUResourceBundleImpl$ResourceBinary
+android.icu.impl.ICUResourceBundleImpl$ResourceContainer
+android.icu.impl.ICUResourceBundleImpl$ResourceInt
+android.icu.impl.ICUResourceBundleImpl$ResourceIntVector
+android.icu.impl.ICUResourceBundleImpl$ResourceString
+android.icu.impl.ICUResourceBundleImpl$ResourceTable
+android.icu.impl.ICUResourceBundleReader
+android.icu.impl.ICUResourceBundleReader$Array
+android.icu.impl.ICUResourceBundleReader$Array16
+android.icu.impl.ICUResourceBundleReader$Array32
+android.icu.impl.ICUResourceBundleReader$Container
+android.icu.impl.ICUResourceBundleReader$IsAcceptable
+android.icu.impl.ICUResourceBundleReader$ReaderCache
+android.icu.impl.ICUResourceBundleReader$ReaderCacheKey
+android.icu.impl.ICUResourceBundleReader$ReaderValue
+android.icu.impl.ICUResourceBundleReader$ResourceCache
+android.icu.impl.ICUResourceBundleReader$ResourceCache$Level
+android.icu.impl.ICUResourceBundleReader$Table
+android.icu.impl.ICUResourceBundleReader$Table16
+android.icu.impl.ICUResourceBundleReader$Table1632
+android.icu.impl.ICUResourceTableAccess
+android.icu.impl.ICUService
+android.icu.impl.ICUService$CacheEntry
+android.icu.impl.ICUService$Factory
+android.icu.impl.ICUService$Key
+android.icu.impl.IDNA2003
+android.icu.impl.JavaTimeZone
+android.icu.impl.LocaleDisplayNamesImpl
+android.icu.impl.LocaleDisplayNamesImpl$Cache
+android.icu.impl.LocaleDisplayNamesImpl$CapitalizationContextUsage
+android.icu.impl.LocaleDisplayNamesImpl$DataTable
+android.icu.impl.LocaleDisplayNamesImpl$DataTables
+android.icu.impl.LocaleDisplayNamesImpl$ICUDataTable
+android.icu.impl.LocaleDisplayNamesImpl$ICUDataTables
+android.icu.impl.LocaleDisplayNamesImpl$LangDataTables
+android.icu.impl.LocaleDisplayNamesImpl$RegionDataTables
+android.icu.impl.LocaleIDParser
+android.icu.impl.LocaleIDs
+android.icu.impl.Norm2AllModes
+android.icu.impl.Norm2AllModes$1
+android.icu.impl.Norm2AllModes$ComposeNormalizer2
+android.icu.impl.Norm2AllModes$DecomposeNormalizer2
+android.icu.impl.Norm2AllModes$FCDNormalizer2
+android.icu.impl.Norm2AllModes$NFCSingleton
+android.icu.impl.Norm2AllModes$NFKCSingleton
+android.icu.impl.Norm2AllModes$NoopNormalizer2
+android.icu.impl.Norm2AllModes$Norm2AllModesSingleton
+android.icu.impl.Norm2AllModes$Normalizer2WithImpl
+android.icu.impl.Normalizer2Impl
+android.icu.impl.Normalizer2Impl$1
+android.icu.impl.Normalizer2Impl$IsAcceptable
+android.icu.impl.Normalizer2Impl$ReorderingBuffer
+android.icu.impl.OlsonTimeZone
+android.icu.impl.Pair
+android.icu.impl.PatternProps
+android.icu.impl.PatternTokenizer
+android.icu.impl.PluralRulesLoader
+android.icu.impl.ReplaceableUCharacterIterator
+android.icu.impl.RuleCharacterIterator
+android.icu.impl.SimpleCache
+android.icu.impl.SimplePatternFormatter
+android.icu.impl.SoftCache
+android.icu.impl.SoftCache$SettableSoftReference
+android.icu.impl.StandardPlural
+android.icu.impl.StringPrepDataReader
+android.icu.impl.TextTrieMap
+android.icu.impl.TextTrieMap$CharIterator
+android.icu.impl.TextTrieMap$Node
+android.icu.impl.TimeZoneNamesFactoryImpl
+android.icu.impl.TimeZoneNamesImpl
+android.icu.impl.TimeZoneNamesImpl$MZ2TZsCache
+android.icu.impl.TimeZoneNamesImpl$MZMapEntry
+android.icu.impl.TimeZoneNamesImpl$NameInfo
+android.icu.impl.TimeZoneNamesImpl$TZ2MZsCache
+android.icu.impl.TimeZoneNamesImpl$ZNames
+android.icu.impl.TimeZoneNamesImpl$ZNamesLoader
+android.icu.impl.Trie
+android.icu.impl.Trie$DataManipulate
+android.icu.impl.Trie$DefaultGetFoldingOffset
+android.icu.impl.Trie2
+android.icu.impl.Trie2$1
+android.icu.impl.Trie2$Range
+android.icu.impl.Trie2$Trie2Iterator
+android.icu.impl.Trie2$UTrie2Header
+android.icu.impl.Trie2$ValueMapper
+android.icu.impl.Trie2$ValueWidth
+android.icu.impl.Trie2_16
+android.icu.impl.Trie2_32
+android.icu.impl.UBiDiProps
+android.icu.impl.UBiDiProps$IsAcceptable
+android.icu.impl.UCaseProps
+android.icu.impl.UCaseProps$ContextIterator
+android.icu.impl.UCaseProps$IsAcceptable
+android.icu.impl.UCharacterProperty
+android.icu.impl.UCharacterProperty$1
+android.icu.impl.UCharacterProperty$10
+android.icu.impl.UCharacterProperty$11
+android.icu.impl.UCharacterProperty$12
+android.icu.impl.UCharacterProperty$13
+android.icu.impl.UCharacterProperty$14
+android.icu.impl.UCharacterProperty$15
+android.icu.impl.UCharacterProperty$16
+android.icu.impl.UCharacterProperty$17
+android.icu.impl.UCharacterProperty$18
+android.icu.impl.UCharacterProperty$19
+android.icu.impl.UCharacterProperty$2
+android.icu.impl.UCharacterProperty$20
+android.icu.impl.UCharacterProperty$21
+android.icu.impl.UCharacterProperty$22
+android.icu.impl.UCharacterProperty$23
+android.icu.impl.UCharacterProperty$3
+android.icu.impl.UCharacterProperty$4
+android.icu.impl.UCharacterProperty$5
+android.icu.impl.UCharacterProperty$6
+android.icu.impl.UCharacterProperty$7
+android.icu.impl.UCharacterProperty$8
+android.icu.impl.UCharacterProperty$9
+android.icu.impl.UCharacterProperty$BiDiIntProperty
+android.icu.impl.UCharacterProperty$BinaryProperty
+android.icu.impl.UCharacterProperty$CaseBinaryProperty
+android.icu.impl.UCharacterProperty$CombiningClassIntProperty
+android.icu.impl.UCharacterProperty$IntProperty
+android.icu.impl.UCharacterProperty$IsAcceptable
+android.icu.impl.UCharacterProperty$NormInertBinaryProperty
+android.icu.impl.UCharacterProperty$NormQuickCheckIntProperty
+android.icu.impl.UPropertyAliases
+android.icu.impl.UPropertyAliases$IsAcceptable
+android.icu.impl.URLHandler$URLVisitor
+android.icu.impl.UResource$Key
+android.icu.impl.UResource$TableSink
+android.icu.impl.UResource$Value
+android.icu.impl.USerializedSet
+android.icu.impl.Utility
+android.icu.impl.ZoneMeta
+android.icu.impl.ZoneMeta$CustomTimeZoneCache
+android.icu.impl.ZoneMeta$SystemTimeZoneCache
+android.icu.impl.coll.Collation
+android.icu.impl.coll.CollationCompare
+android.icu.impl.coll.CollationData
+android.icu.impl.coll.CollationDataReader
+android.icu.impl.coll.CollationDataReader$IsAcceptable
+android.icu.impl.coll.CollationFCD
+android.icu.impl.coll.CollationFastLatin
+android.icu.impl.coll.CollationIterator
+android.icu.impl.coll.CollationIterator$CEBuffer
+android.icu.impl.coll.CollationKeys
+android.icu.impl.coll.CollationKeys$LevelCallback
+android.icu.impl.coll.CollationKeys$SortKeyByteSink
+android.icu.impl.coll.CollationLoader
+android.icu.impl.coll.CollationRoot
+android.icu.impl.coll.CollationSettings
+android.icu.impl.coll.CollationTailoring
+android.icu.impl.coll.ContractionsAndExpansions
+android.icu.impl.coll.FCDUTF16CollationIterator
+android.icu.impl.coll.SharedObject
+android.icu.impl.coll.SharedObject$Reference
+android.icu.impl.coll.UTF16CollationIterator
+android.icu.impl.locale.AsciiUtil
+android.icu.impl.locale.BaseLocale
+android.icu.impl.locale.BaseLocale$Cache
+android.icu.impl.locale.BaseLocale$Key
+android.icu.impl.locale.LocaleObjectCache
+android.icu.impl.locale.LocaleObjectCache$CacheEntry
+android.icu.impl.locale.LocaleSyntaxException
+android.icu.lang.UCharacter
+android.icu.lang.UCharacter$StringContextIterator
+android.icu.lang.UCharacterEnums$ECharacterCategory
+android.icu.lang.UCharacterEnums$ECharacterDirection
+android.icu.lang.UScript
+android.icu.lang.UScript$ScriptUsage
+android.icu.math.BigDecimal
+android.icu.math.MathContext
+android.icu.text.AlphabeticIndex
+android.icu.text.AlphabeticIndex$1
+android.icu.text.AlphabeticIndex$Bucket
+android.icu.text.AlphabeticIndex$Bucket$LabelType
+android.icu.text.AlphabeticIndex$BucketList
+android.icu.text.AlphabeticIndex$ImmutableIndex
+android.icu.text.Bidi
+android.icu.text.Bidi$BracketData
+android.icu.text.Bidi$ImpTabPair
+android.icu.text.Bidi$InsertPoints
+android.icu.text.Bidi$IsoRun
+android.icu.text.Bidi$LevState
+android.icu.text.Bidi$Opening
+android.icu.text.Bidi$Point
+android.icu.text.BidiLine
+android.icu.text.BidiRun
+android.icu.text.BreakIterator
+android.icu.text.BreakIterator$BreakIteratorCache
+android.icu.text.BreakIterator$BreakIteratorServiceShim
+android.icu.text.BreakIteratorFactory
+android.icu.text.BreakIteratorFactory$BFService
+android.icu.text.BreakIteratorFactory$BFService$1RBBreakIteratorFactory
+android.icu.text.CollationKey
+android.icu.text.Collator
+android.icu.text.Collator$ServiceShim
+android.icu.text.CollatorServiceShim
+android.icu.text.CollatorServiceShim$CService
+android.icu.text.CollatorServiceShim$CService$1CollatorFactory
+android.icu.text.CurrencyDisplayNames
+android.icu.text.CurrencyMetaInfo
+android.icu.text.CurrencyMetaInfo$CurrencyDigits
+android.icu.text.CurrencyMetaInfo$CurrencyFilter
+android.icu.text.DateFormat
+android.icu.text.DateFormat$BooleanAttribute
+android.icu.text.DateFormat$Field
+android.icu.text.DateFormatSymbols
+android.icu.text.DateFormatSymbols$CapitalizationContextUsage
+android.icu.text.DateIntervalFormat
+android.icu.text.DateIntervalFormat$BestMatchInfo
+android.icu.text.DateIntervalFormat$SkeletonAndItsBestMatch
+android.icu.text.DateIntervalInfo
+android.icu.text.DateIntervalInfo$PatternInfo
+android.icu.text.DateTimePatternGenerator
+android.icu.text.DateTimePatternGenerator$DTPGflags
+android.icu.text.DateTimePatternGenerator$DateTimeMatcher
+android.icu.text.DateTimePatternGenerator$DistanceInfo
+android.icu.text.DateTimePatternGenerator$FormatParser
+android.icu.text.DateTimePatternGenerator$PatternInfo
+android.icu.text.DateTimePatternGenerator$PatternWithMatcher
+android.icu.text.DateTimePatternGenerator$PatternWithSkeletonFlag
+android.icu.text.DateTimePatternGenerator$VariableField
+android.icu.text.DecimalFormat
+android.icu.text.DecimalFormat$Unit
+android.icu.text.DecimalFormatSymbols
+android.icu.text.DigitList
+android.icu.text.DisplayContext
+android.icu.text.DisplayContext$Type
+android.icu.text.IDNA
+android.icu.text.LanguageBreakEngine
+android.icu.text.ListFormatter
+android.icu.text.ListFormatter$Cache
+android.icu.text.ListFormatter$FormattedListBuilder
+android.icu.text.ListFormatter$Style
+android.icu.text.LocaleDisplayNames
+android.icu.text.LocaleDisplayNames$DialectHandling
+android.icu.text.MessageFormat
+android.icu.text.MessageFormat$AppendableWrapper
+android.icu.text.MessageFormat$Field
+android.icu.text.MessagePattern
+android.icu.text.MessagePattern$ApostropheMode
+android.icu.text.MessagePattern$ArgType
+android.icu.text.MessagePattern$Part
+android.icu.text.MessagePattern$Part$Type
+android.icu.text.Normalizer
+android.icu.text.Normalizer$FCDMode
+android.icu.text.Normalizer$Mode
+android.icu.text.Normalizer$ModeImpl
+android.icu.text.Normalizer$NFCMode
+android.icu.text.Normalizer$NFCModeImpl
+android.icu.text.Normalizer$NFDMode
+android.icu.text.Normalizer$NFDModeImpl
+android.icu.text.Normalizer$NFKCMode
+android.icu.text.Normalizer$NFKDMode
+android.icu.text.Normalizer$NFKDModeImpl
+android.icu.text.Normalizer$NONEMode
+android.icu.text.Normalizer$QuickCheckResult
+android.icu.text.Normalizer2
+android.icu.text.NumberFormat
+android.icu.text.NumberFormat$Field
+android.icu.text.NumberFormat$NumberFormatShim
+android.icu.text.NumberFormatServiceShim
+android.icu.text.NumberFormatServiceShim$NFService
+android.icu.text.NumberFormatServiceShim$NFService$1RBNumberFormatFactory
+android.icu.text.NumberingSystem
+android.icu.text.PluralRanges
+android.icu.text.PluralRanges$Matrix
+android.icu.text.PluralRules
+android.icu.text.PluralRules$1
+android.icu.text.PluralRules$AndConstraint
+android.icu.text.PluralRules$BinaryConstraint
+android.icu.text.PluralRules$Constraint
+android.icu.text.PluralRules$Factory
+android.icu.text.PluralRules$FixedDecimal
+android.icu.text.PluralRules$FixedDecimalRange
+android.icu.text.PluralRules$FixedDecimalSamples
+android.icu.text.PluralRules$Operand
+android.icu.text.PluralRules$PluralType
+android.icu.text.PluralRules$RangeConstraint
+android.icu.text.PluralRules$Rule
+android.icu.text.PluralRules$RuleList
+android.icu.text.PluralRules$SampleType
+android.icu.text.PluralRules$SimpleTokenizer
+android.icu.text.QuantityFormatter
+android.icu.text.RBBIDataWrapper
+android.icu.text.RBBIDataWrapper$IsAcceptable
+android.icu.text.RBBIDataWrapper$RBBIDataHeader
+android.icu.text.RBBIDataWrapper$TrieFoldingFunc
+android.icu.text.RawCollationKey
+android.icu.text.RelativeDateTimeFormatter
+android.icu.text.RelativeDateTimeFormatter$AbsoluteUnit
+android.icu.text.RelativeDateTimeFormatter$Cache
+android.icu.text.RelativeDateTimeFormatter$Direction
+android.icu.text.RelativeDateTimeFormatter$Loader
+android.icu.text.RelativeDateTimeFormatter$RelDateTimeFmtDataSink
+android.icu.text.RelativeDateTimeFormatter$RelDateTimeFmtDataSink$DateTimeUnit
+android.icu.text.RelativeDateTimeFormatter$RelDateTimeFmtDataSink$RelativeSink
+android.icu.text.RelativeDateTimeFormatter$RelDateTimeFmtDataSink$RelativeTimeDetailSink
+android.icu.text.RelativeDateTimeFormatter$RelDateTimeFmtDataSink$RelativeTimeSink
+android.icu.text.RelativeDateTimeFormatter$RelDateTimeFmtDataSink$UnitSink
+android.icu.text.RelativeDateTimeFormatter$RelativeDateTimeFormatterData
+android.icu.text.RelativeDateTimeFormatter$RelativeUnit
+android.icu.text.RelativeDateTimeFormatter$Style
+android.icu.text.Replaceable
+android.icu.text.ReplaceableString
+android.icu.text.RuleBasedBreakIterator
+android.icu.text.RuleBasedCollator
+android.icu.text.RuleBasedCollator$CollationBuffer
+android.icu.text.RuleBasedCollator$CollationKeyByteSink
+android.icu.text.RuleBasedCollator$FCDUTF16NFDIterator
+android.icu.text.RuleBasedCollator$NFDIterator
+android.icu.text.RuleBasedCollator$UTF16NFDIterator
+android.icu.text.SimpleDateFormat
+android.icu.text.SimpleDateFormat$PatternItem
+android.icu.text.StringPrep
+android.icu.text.StringPrepParseException
+android.icu.text.TimeZoneNames
+android.icu.text.TimeZoneNames$Cache
+android.icu.text.TimeZoneNames$Factory
+android.icu.text.TimeZoneNames$NameType
+android.icu.text.UCharacterIterator
+android.icu.text.UFieldPosition
+android.icu.text.UFormat
+android.icu.text.UForwardCharacterIterator
+android.icu.text.UTF16
+android.icu.text.UTF16$StringComparator
+android.icu.text.UnhandledBreakEngine
+android.icu.text.UnicodeFilter
+android.icu.text.UnicodeMatcher
+android.icu.text.UnicodeSet
+android.icu.text.UnicodeSet$Filter
+android.icu.text.UnicodeSet$GeneralCategoryMaskFilter
+android.icu.text.UnicodeSet$IntPropertyFilter
+android.icu.text.UnicodeSet$UnicodeSetIterator2
+android.icu.util.BasicTimeZone
+android.icu.util.ByteArrayWrapper
+android.icu.util.BytesTrie
+android.icu.util.BytesTrie$Result
+android.icu.util.Calendar
+android.icu.util.Calendar$CalType
+android.icu.util.Calendar$FormatConfiguration
+android.icu.util.Calendar$PatternData
+android.icu.util.Calendar$WeekData
+android.icu.util.Calendar$WeekDataCache
+android.icu.util.CharsTrie
+android.icu.util.CharsTrie$Entry
+android.icu.util.CharsTrie$Iterator
+android.icu.util.Currency
+android.icu.util.Currency$CurrencyUsage
+android.icu.util.Currency$EquivalenceRelation
+android.icu.util.CurrencyAmount
+android.icu.util.Freezable
+android.icu.util.GregorianCalendar
+android.icu.util.LocaleData
+android.icu.util.Measure
+android.icu.util.MeasureUnit
+android.icu.util.MeasureUnit$1
+android.icu.util.MeasureUnit$2
+android.icu.util.MeasureUnit$3
+android.icu.util.MeasureUnit$Factory
+android.icu.util.Output
+android.icu.util.SimpleTimeZone
+android.icu.util.TimeUnit
+android.icu.util.TimeZone
+android.icu.util.TimeZone$ConstantZone
+android.icu.util.ULocale
+android.icu.util.ULocale$Category
+android.icu.util.ULocale$JDKLocaleHelper
+android.icu.util.ULocale$Type
+android.icu.util.UResourceBundle
+android.icu.util.UResourceBundle$ResourceCacheKey
+android.icu.util.UResourceBundleIterator
+android.icu.util.UResourceTypeMismatchException
+android.icu.util.VersionInfo
+android.inputmethodservice.AbstractInputMethodService
+android.inputmethodservice.AbstractInputMethodService$AbstractInputMethodImpl
+android.inputmethodservice.AbstractInputMethodService$AbstractInputMethodSessionImpl
+android.inputmethodservice.IInputMethodSessionWrapper
+android.inputmethodservice.IInputMethodSessionWrapper$ImeInputEventReceiver
+android.inputmethodservice.IInputMethodWrapper
+android.inputmethodservice.IInputMethodWrapper$InputMethodSessionCallbackWrapper
+android.inputmethodservice.InputMethodService
+android.inputmethodservice.InputMethodService$1
+android.inputmethodservice.InputMethodService$2
+android.inputmethodservice.InputMethodService$InputMethodImpl
+android.inputmethodservice.InputMethodService$InputMethodSessionImpl
+android.inputmethodservice.InputMethodService$Insets
+android.inputmethodservice.InputMethodService$SettingsObserver
+android.inputmethodservice.Keyboard
+android.inputmethodservice.Keyboard$Key
+android.inputmethodservice.Keyboard$Row
+android.inputmethodservice.KeyboardView
+android.inputmethodservice.KeyboardView$1
+android.inputmethodservice.KeyboardView$2
+android.inputmethodservice.KeyboardView$OnKeyboardActionListener
+android.inputmethodservice.KeyboardView$SwipeTracker
+android.inputmethodservice.SoftInputWindow
+android.location.Address
+android.location.Address$1
+android.location.Country
+android.location.Country$1
+android.location.CountryDetector
+android.location.CountryDetector$ListenerTransport
+android.location.CountryDetector$ListenerTransport$1
+android.location.CountryListener
+android.location.Criteria
+android.location.Criteria$1
+android.location.FusedBatchOptions
+android.location.FusedBatchOptions$1
+android.location.FusedBatchOptions$SourceTechnologies
+android.location.Geocoder
+android.location.GeocoderParams
+android.location.GeocoderParams$1
+android.location.Geofence
+android.location.GnssMeasurementCallbackTransport
+android.location.GnssMeasurementCallbackTransport$ListenerTransport
+android.location.GnssNavigationMessageCallbackTransport
+android.location.GnssNavigationMessageCallbackTransport$ListenerTransport
+android.location.GnssStatus
+android.location.GnssStatusCallback
+android.location.GpsMeasurementsEvent
+android.location.GpsMeasurementsEvent$Listener
+android.location.GpsNavigationMessageEvent
+android.location.GpsNavigationMessageEvent$Listener
+android.location.GpsSatellite
+android.location.GpsStatus
+android.location.GpsStatus$1
+android.location.GpsStatus$Listener
+android.location.GpsStatus$SatelliteIterator
+android.location.ICountryDetector
+android.location.ICountryDetector$Stub
+android.location.ICountryDetector$Stub$Proxy
+android.location.ICountryListener
+android.location.ICountryListener$Stub
+android.location.ICountryListener$Stub$Proxy
+android.location.IFusedGeofenceHardware
+android.location.IFusedGeofenceHardware$Stub
+android.location.IFusedProvider
+android.location.IFusedProvider$Stub
+android.location.IFusedProvider$Stub$Proxy
+android.location.IGeocodeProvider
+android.location.IGeocodeProvider$Stub
+android.location.IGeocodeProvider$Stub$Proxy
+android.location.IGeofenceProvider
+android.location.IGeofenceProvider$Stub
+android.location.IGeofenceProvider$Stub$Proxy
+android.location.IGnssMeasurementsListener
+android.location.IGnssMeasurementsListener$Stub
+android.location.IGnssNavigationMessageListener
+android.location.IGnssNavigationMessageListener$Stub
+android.location.IGnssStatusListener
+android.location.IGnssStatusListener$Stub
+android.location.IGnssStatusListener$Stub$Proxy
+android.location.IGnssStatusProvider
+android.location.IGnssStatusProvider$Stub
+android.location.IGpsGeofenceHardware
+android.location.IGpsGeofenceHardware$Stub
+android.location.ILocationListener
+android.location.ILocationListener$Stub
+android.location.ILocationListener$Stub$Proxy
+android.location.ILocationManager
+android.location.ILocationManager$Stub
+android.location.ILocationManager$Stub$Proxy
+android.location.INetInitiatedListener
+android.location.INetInitiatedListener$Stub
+android.location.LocalListenerHelper
+android.location.Location
+android.location.Location$1
+android.location.Location$2
+android.location.Location$BearingDistanceCache
+android.location.LocationListener
+android.location.LocationManager
+android.location.LocationManager$GnssStatusListenerTransport
+android.location.LocationManager$GnssStatusListenerTransport$1
+android.location.LocationManager$GnssStatusListenerTransport$GnssHandler
+android.location.LocationManager$ListenerTransport
+android.location.LocationManager$ListenerTransport$1
+android.location.LocationManager$ListenerTransport$2
+android.location.LocationProvider
+android.location.LocationRequest
+android.location.LocationRequest$1
+android.location.SettingInjectorService
+android.media.AmrInputStream
+android.media.AudioAttributes
+android.media.AudioAttributes$1
+android.media.AudioAttributes$Builder
+android.media.AudioDeviceCallback
+android.media.AudioDeviceInfo
+android.media.AudioDevicePort
+android.media.AudioDevicePortConfig
+android.media.AudioFocusInfo
+android.media.AudioFocusInfo$1
+android.media.AudioFormat
+android.media.AudioFormat$1
+android.media.AudioFormat$Builder
+android.media.AudioGain
+android.media.AudioGainConfig
+android.media.AudioHandle
+android.media.AudioManager
+android.media.AudioManager$1
+android.media.AudioManager$2
+android.media.AudioManager$NativeEventHandlerDelegate
+android.media.AudioManager$NativeEventHandlerDelegate$1
+android.media.AudioManager$OnAmPortUpdateListener
+android.media.AudioManager$OnAudioFocusChangeListener
+android.media.AudioManager$OnAudioPortUpdateListener
+android.media.AudioManager$ServiceEventHandlerDelegate
+android.media.AudioManager$ServiceEventHandlerDelegate$1
+android.media.AudioManagerInternal
+android.media.AudioManagerInternal$RingerModeDelegate
+android.media.AudioMixPort
+android.media.AudioMixPortConfig
+android.media.AudioPatch
+android.media.AudioPort
+android.media.AudioPortConfig
+android.media.AudioPortEventHandler
+android.media.AudioPortEventHandler$1
+android.media.AudioRecord
+android.media.AudioRecordingConfiguration
+android.media.AudioRecordingConfiguration$1
+android.media.AudioRoutesInfo
+android.media.AudioRoutesInfo$1
+android.media.AudioRouting
+android.media.AudioSystem
+android.media.AudioSystem$AudioRecordingCallback
+android.media.AudioSystem$DynamicPolicyCallback
+android.media.AudioSystem$ErrorCallback
+android.media.AudioTimestamp
+android.media.AudioTrack
+android.media.CamcorderProfile
+android.media.CameraProfile
+android.media.Cea708CaptionRenderer
+android.media.ClosedCaptionRenderer
+android.media.DecoderCapabilities
+android.media.DeniedByServerException
+android.media.EncoderCapabilities
+android.media.ExifInterface
+android.media.ExifInterface$ByteOrderAwarenessDataInputStream
+android.media.ExifInterface$ExifDataOutputStream
+android.media.ExifInterface$ExifTag
+android.media.IAudioFocusDispatcher
+android.media.IAudioFocusDispatcher$Stub
+android.media.IAudioFocusDispatcher$Stub$Proxy
+android.media.IAudioRoutesObserver
+android.media.IAudioRoutesObserver$Stub
+android.media.IAudioRoutesObserver$Stub$Proxy
+android.media.IAudioService
+android.media.IAudioService$Stub
+android.media.IAudioService$Stub$Proxy
+android.media.IMediaHTTPConnection
+android.media.IMediaHTTPConnection$Stub
+android.media.IMediaHTTPService
+android.media.IMediaHTTPService$Stub
+android.media.IMediaRouterClient
+android.media.IMediaRouterClient$Stub
+android.media.IMediaRouterClient$Stub$Proxy
+android.media.IMediaRouterService
+android.media.IMediaRouterService$Stub
+android.media.IMediaRouterService$Stub$Proxy
+android.media.IMediaScannerListener
+android.media.IMediaScannerListener$Stub
+android.media.IMediaScannerService
+android.media.IMediaScannerService$Stub
+android.media.IRecordingConfigDispatcher
+android.media.IRecordingConfigDispatcher$Stub
+android.media.IRemoteVolumeController
+android.media.IRemoteVolumeController$Stub
+android.media.IRemoteVolumeController$Stub$Proxy
+android.media.IRemoteVolumeObserver
+android.media.IRemoteVolumeObserver$Stub
+android.media.IRingtonePlayer
+android.media.IRingtonePlayer$Stub
+android.media.IRingtonePlayer$Stub$Proxy
+android.media.IVolumeController
+android.media.IVolumeController$Stub
+android.media.IVolumeController$Stub$Proxy
+android.media.Image
+android.media.Image$Plane
+android.media.ImageReader
+android.media.ImageReader$ListenerHandler
+android.media.ImageReader$OnImageAvailableListener
+android.media.ImageReader$SurfaceImage
+android.media.ImageReader$SurfaceImage$SurfacePlane
+android.media.ImageUtils
+android.media.ImageWriter
+android.media.ImageWriter$ListenerHandler
+android.media.ImageWriter$OnImageReleasedListener
+android.media.ImageWriter$WriterSurfaceImage
+android.media.ImageWriter$WriterSurfaceImage$SurfacePlane
+android.media.JetPlayer
+android.media.MediaActionSound
+android.media.MediaActionSound$1
+android.media.MediaActionSound$SoundState
+android.media.MediaCodec
+android.media.MediaCodec$BufferInfo
+android.media.MediaCodec$BufferMap
+android.media.MediaCodec$BufferMap$CodecBuffer
+android.media.MediaCodec$Callback
+android.media.MediaCodec$CodecException
+android.media.MediaCodec$CryptoException
+android.media.MediaCodec$CryptoInfo
+android.media.MediaCodec$CryptoInfo$Pattern
+android.media.MediaCodec$EventHandler
+android.media.MediaCodec$PersistentSurface
+android.media.MediaCodecInfo
+android.media.MediaCodecInfo$AudioCapabilities
+android.media.MediaCodecInfo$CodecCapabilities
+android.media.MediaCodecInfo$CodecProfileLevel
+android.media.MediaCodecInfo$EncoderCapabilities
+android.media.MediaCodecInfo$Feature
+android.media.MediaCodecInfo$VideoCapabilities
+android.media.MediaCodecList
+android.media.MediaCrypto
+android.media.MediaCryptoException
+android.media.MediaDescription
+android.media.MediaDescription$1
+android.media.MediaDescription$Builder
+android.media.MediaDrm
+android.media.MediaDrm$Certificate
+android.media.MediaDrm$EventHandler
+android.media.MediaDrm$KeyRequest
+android.media.MediaDrm$MediaDrmStateException
+android.media.MediaDrm$OnEventListener
+android.media.MediaDrm$ProvisionRequest
+android.media.MediaDrmException
+android.media.MediaExtractor
+android.media.MediaFile
+android.media.MediaFile$MediaFileType
+android.media.MediaFormat
+android.media.MediaHTTPConnection
+android.media.MediaHTTPService
+android.media.MediaInserter
+android.media.MediaMetadata
+android.media.MediaMetadata$1
+android.media.MediaMetadata$Builder
+android.media.MediaMetadataEditor
+android.media.MediaMetadataRetriever
+android.media.MediaMuxer
+android.media.MediaPlayer
+android.media.MediaPlayer$1
+android.media.MediaPlayer$2
+android.media.MediaPlayer$2$1
+android.media.MediaPlayer$EventHandler
+android.media.MediaPlayer$OnBufferingUpdateListener
+android.media.MediaPlayer$OnCompletionListener
+android.media.MediaPlayer$OnErrorListener
+android.media.MediaPlayer$OnInfoListener
+android.media.MediaPlayer$OnPreparedListener
+android.media.MediaPlayer$OnSeekCompleteListener
+android.media.MediaPlayer$OnSubtitleDataListener
+android.media.MediaPlayer$OnVideoSizeChangedListener
+android.media.MediaPlayer$TimeProvider
+android.media.MediaPlayer$TimeProvider$EventHandler
+android.media.MediaPlayer$TrackInfo
+android.media.MediaPlayer$TrackInfo$1
+android.media.MediaRecorder
+android.media.MediaRecorder$EventHandler
+android.media.MediaRecorder$OnErrorListener
+android.media.MediaRecorder$OnInfoListener
+android.media.MediaRouter
+android.media.MediaRouter$Callback
+android.media.MediaRouter$CallbackInfo
+android.media.MediaRouter$RouteCategory
+android.media.MediaRouter$RouteGroup
+android.media.MediaRouter$RouteInfo
+android.media.MediaRouter$RouteInfo$1
+android.media.MediaRouter$SimpleCallback
+android.media.MediaRouter$Static
+android.media.MediaRouter$Static$1
+android.media.MediaRouter$Static$Client
+android.media.MediaRouter$Static$Client$1
+android.media.MediaRouter$UserRouteInfo
+android.media.MediaRouter$VolumeCallback
+android.media.MediaRouter$VolumeCallbackInfo
+android.media.MediaRouter$VolumeChangeReceiver
+android.media.MediaRouter$WifiDisplayStatusChangedReceiver
+android.media.MediaRouterClientState
+android.media.MediaRouterClientState$1
+android.media.MediaRouterClientState$RouteInfo
+android.media.MediaRouterClientState$RouteInfo$1
+android.media.MediaScanner
+android.media.MediaScanner$FileEntry
+android.media.MediaScanner$MediaBulkDeleter
+android.media.MediaScanner$MyMediaScannerClient
+android.media.MediaScannerClient
+android.media.MediaScannerConnection
+android.media.MediaScannerConnection$1
+android.media.MediaScannerConnection$MediaScannerConnectionClient
+android.media.MediaScannerConnection$OnScanCompletedListener
+android.media.MediaSync
+android.media.MediaTimeProvider
+android.media.MediaTimeProvider$OnMediaTimeListener
+android.media.Metadata
+android.media.MiniThumbFile
+android.media.NotProvisionedException
+android.media.PlaybackParams
+android.media.PlaybackParams$1
+android.media.Rating
+android.media.Rating$1
+android.media.RemoteControlClient
+android.media.RemoteControlClient$MetadataEditor
+android.media.RemoteControlClient$OnMetadataUpdateListener
+android.media.RemoteControlClient$OnPlaybackPositionUpdateListener
+android.media.RemoteDisplay
+android.media.ResampleInputStream
+android.media.Ringtone
+android.media.Ringtone$MyOnCompletionListener
+android.media.RingtoneManager
+android.media.SoundPool
+android.media.SoundPool$1
+android.media.SoundPool$Builder
+android.media.SoundPool$EventHandler
+android.media.SoundPool$OnLoadCompleteListener
+android.media.SubtitleController
+android.media.SubtitleController$1
+android.media.SubtitleController$2
+android.media.SubtitleController$Anchor
+android.media.SubtitleController$Listener
+android.media.SubtitleController$Renderer
+android.media.SubtitleTrack
+android.media.SyncParams
+android.media.ThumbnailUtils
+android.media.ThumbnailUtils$SizedThumbnailBitmap
+android.media.ToneGenerator
+android.media.TtmlRenderer
+android.media.UnsupportedSchemeException
+android.media.Utils
+android.media.Utils$1
+android.media.Utils$2
+android.media.VolumePolicy
+android.media.VolumePolicy$1
+android.media.VolumeProvider
+android.media.WebVttRenderer
+android.media.audiofx.AcousticEchoCanceler
+android.media.audiofx.AudioEffect
+android.media.audiofx.AudioEffect$Descriptor
+android.media.audiofx.AutomaticGainControl
+android.media.audiofx.BassBoost
+android.media.audiofx.BassBoost$Settings
+android.media.audiofx.Equalizer
+android.media.audiofx.LoudnessEnhancer
+android.media.audiofx.NoiseSuppressor
+android.media.audiofx.PresetReverb
+android.media.audiofx.Virtualizer
+android.media.audiofx.Virtualizer$Settings
+android.media.audiofx.Visualizer
+android.media.audiofx.Visualizer$OnDataCaptureListener
+android.media.audiopolicy.AudioMix
+android.media.audiopolicy.AudioMixingRule
+android.media.audiopolicy.AudioMixingRule$AudioMixMatchCriterion
+android.media.audiopolicy.AudioPolicyConfig
+android.media.audiopolicy.IAudioPolicyCallback
+android.media.audiopolicy.IAudioPolicyCallback$Stub
+android.media.midi.IMidiDeviceListener
+android.media.midi.IMidiDeviceOpenCallback
+android.media.midi.IMidiDeviceServer
+android.media.midi.IMidiManager
+android.media.midi.IMidiManager$Stub
+android.media.midi.MidiDeviceInfo
+android.media.midi.MidiDeviceStatus
+android.media.midi.MidiManager
+android.media.projection.IMediaProjection
+android.media.projection.IMediaProjectionManager
+android.media.projection.IMediaProjectionManager$Stub
+android.media.projection.IMediaProjectionManager$Stub$Proxy
+android.media.projection.IMediaProjectionWatcherCallback
+android.media.projection.IMediaProjectionWatcherCallback$Stub
+android.media.projection.IMediaProjectionWatcherCallback$Stub$Proxy
+android.media.projection.MediaProjectionInfo
+android.media.projection.MediaProjectionManager
+android.media.projection.MediaProjectionManager$Callback
+android.media.projection.MediaProjectionManager$CallbackDelegate
+android.media.session.IActiveSessionsListener
+android.media.session.IActiveSessionsListener$Stub
+android.media.session.IActiveSessionsListener$Stub$Proxy
+android.media.session.ISession
+android.media.session.ISession$Stub
+android.media.session.ISession$Stub$Proxy
+android.media.session.ISessionCallback
+android.media.session.ISessionCallback$Stub
+android.media.session.ISessionCallback$Stub$Proxy
+android.media.session.ISessionController
+android.media.session.ISessionController$Stub
+android.media.session.ISessionController$Stub$Proxy
+android.media.session.ISessionControllerCallback
+android.media.session.ISessionControllerCallback$Stub
+android.media.session.ISessionControllerCallback$Stub$Proxy
+android.media.session.ISessionManager
+android.media.session.ISessionManager$Stub
+android.media.session.ISessionManager$Stub$Proxy
+android.media.session.MediaController
+android.media.session.MediaController$Callback
+android.media.session.MediaController$CallbackStub
+android.media.session.MediaController$MessageHandler
+android.media.session.MediaController$PlaybackInfo
+android.media.session.MediaController$TransportControls
+android.media.session.MediaSession
+android.media.session.MediaSession$Callback
+android.media.session.MediaSession$CallbackMessageHandler
+android.media.session.MediaSession$CallbackStub
+android.media.session.MediaSession$QueueItem
+android.media.session.MediaSession$QueueItem$1
+android.media.session.MediaSession$Token
+android.media.session.MediaSession$Token$1
+android.media.session.MediaSessionLegacyHelper
+android.media.session.MediaSessionManager
+android.media.session.MediaSessionManager$OnActiveSessionsChangedListener
+android.media.session.MediaSessionManager$SessionsChangedWrapper
+android.media.session.MediaSessionManager$SessionsChangedWrapper$1
+android.media.session.MediaSessionManager$SessionsChangedWrapper$1$1
+android.media.session.ParcelableVolumeInfo
+android.media.session.ParcelableVolumeInfo$1
+android.media.session.PlaybackState
+android.media.session.PlaybackState$1
+android.media.session.PlaybackState$Builder
+android.media.session.PlaybackState$CustomAction
+android.media.session.PlaybackState$CustomAction$1
+android.media.session.PlaybackState$CustomAction$Builder
+android.media.soundtrigger.SoundTriggerManager
+android.media.tv.TvInputHardwareInfo$Builder
+android.media.tv.TvInputManager
+android.media.tv.TvStreamConfig
+android.media.tv.TvStreamConfig$Builder
+android.mtp.MtpConstants
+android.mtp.MtpDatabase
+android.mtp.MtpDevice
+android.mtp.MtpDeviceInfo
+android.mtp.MtpEvent
+android.mtp.MtpObjectInfo
+android.mtp.MtpObjectInfo$Builder
+android.mtp.MtpPropertyGroup
+android.mtp.MtpPropertyList
+android.mtp.MtpServer
+android.mtp.MtpStorage
+android.mtp.MtpStorageInfo
+android.net.ConnectivityManager
+android.net.ConnectivityManager$CallbackHandler
+android.net.ConnectivityManager$NetworkCallback
+android.net.ConnectivityManager$OnNetworkActiveListener
+android.net.ConnectivityManager$OnStartTetheringCallback
+android.net.ConnectivityManager$PacketKeepalive
+android.net.ConnectivityManager$PacketKeepaliveCallback
+android.net.ConnectivityMetricsEvent
+android.net.ConnectivityMetricsEvent$1
+android.net.ConnectivityMetricsEvent$Reference
+android.net.ConnectivityMetricsLogger
+android.net.ConnectivityThread
+android.net.Credentials
+android.net.DataUsageRequest
+android.net.DhcpInfo
+android.net.DhcpInfo$1
+android.net.DhcpResults
+android.net.DhcpResults$1
+android.net.EthernetManager
+android.net.EthernetManager$1
+android.net.EthernetManager$2
+android.net.IConnectivityManager
+android.net.IConnectivityManager$Stub
+android.net.IConnectivityManager$Stub$Proxy
+android.net.IConnectivityMetricsLogger
+android.net.IConnectivityMetricsLogger$Stub
+android.net.IEthernetManager
+android.net.IEthernetManager$Stub
+android.net.IEthernetServiceListener
+android.net.IEthernetServiceListener$Stub
+android.net.INetworkManagementEventObserver
+android.net.INetworkManagementEventObserver$Stub
+android.net.INetworkPolicyListener
+android.net.INetworkPolicyListener$Stub
+android.net.INetworkPolicyListener$Stub$Proxy
+android.net.INetworkPolicyManager
+android.net.INetworkPolicyManager$Stub
+android.net.INetworkPolicyManager$Stub$Proxy
+android.net.INetworkScoreCache
+android.net.INetworkScoreCache$Stub
+android.net.INetworkScoreService
+android.net.INetworkScoreService$Stub
+android.net.INetworkStatsService
+android.net.INetworkStatsService$Stub
+android.net.INetworkStatsService$Stub$Proxy
+android.net.INetworkStatsSession
+android.net.INetworkStatsSession$Stub
+android.net.INetworkStatsSession$Stub$Proxy
+android.net.InterfaceConfiguration
+android.net.InterfaceConfiguration$1
+android.net.IpConfiguration
+android.net.IpConfiguration$1
+android.net.IpConfiguration$IpAssignment
+android.net.IpConfiguration$ProxySettings
+android.net.IpPrefix
+android.net.IpPrefix$1
+android.net.LinkAddress
+android.net.LinkAddress$1
+android.net.LinkProperties
+android.net.LinkProperties$1
+android.net.LinkProperties$CompareResult
+android.net.LinkProperties$ProvisioningChange
+android.net.LocalServerSocket
+android.net.LocalSocket
+android.net.LocalSocketAddress
+android.net.LocalSocketAddress$Namespace
+android.net.LocalSocketImpl
+android.net.LocalSocketImpl$SocketInputStream
+android.net.LocalSocketImpl$SocketOutputStream
+android.net.Network
+android.net.Network$1
+android.net.Network$2
+android.net.Network$NetworkBoundSocketFactory
+android.net.NetworkAgent
+android.net.NetworkCapabilities
+android.net.NetworkCapabilities$1
+android.net.NetworkConfig
+android.net.NetworkFactory
+android.net.NetworkFactory$NetworkRequestInfo
+android.net.NetworkIdentity
+android.net.NetworkInfo
+android.net.NetworkInfo$1
+android.net.NetworkInfo$DetailedState
+android.net.NetworkInfo$State
+android.net.NetworkKey
+android.net.NetworkKey$1
+android.net.NetworkMisc
+android.net.NetworkMisc$1
+android.net.NetworkPolicy
+android.net.NetworkPolicy$1
+android.net.NetworkPolicyManager
+android.net.NetworkQuotaInfo
+android.net.NetworkRequest
+android.net.NetworkRequest$1
+android.net.NetworkRequest$Builder
+android.net.NetworkScoreManager
+android.net.NetworkScorerAppManager
+android.net.NetworkState
+android.net.NetworkState$1
+android.net.NetworkStats
+android.net.NetworkStats$1
+android.net.NetworkStats$Entry
+android.net.NetworkStats$NonMonotonicObserver
+android.net.NetworkStatsHistory
+android.net.NetworkStatsHistory$1
+android.net.NetworkStatsHistory$DataStreamUtils
+android.net.NetworkStatsHistory$Entry
+android.net.NetworkStatsHistory$ParcelUtils
+android.net.NetworkTemplate
+android.net.NetworkTemplate$1
+android.net.NetworkUtils
+android.net.ParseException
+android.net.Proxy
+android.net.ProxyInfo
+android.net.ProxyInfo$1
+android.net.RouteInfo
+android.net.RouteInfo$1
+android.net.SSLCertificateSocketFactory
+android.net.SSLCertificateSocketFactory$1
+android.net.SSLSessionCache
+android.net.ScoredNetwork
+android.net.SntpClient
+android.net.StaticIpConfiguration
+android.net.StaticIpConfiguration$1
+android.net.TrafficStats
+android.net.UidRange
+android.net.Uri
+android.net.Uri$1
+android.net.Uri$AbstractHierarchicalUri
+android.net.Uri$AbstractPart
+android.net.Uri$Builder
+android.net.Uri$HierarchicalUri
+android.net.Uri$OpaqueUri
+android.net.Uri$Part
+android.net.Uri$Part$EmptyPart
+android.net.Uri$PathPart
+android.net.Uri$PathSegments
+android.net.Uri$PathSegmentsBuilder
+android.net.Uri$StringUri
+android.net.UrlQuerySanitizer
+android.net.WebAddress
+android.net.WifiKey
+android.net.WifiKey$1
+android.net.http.AndroidHttpClient
+android.net.http.AndroidHttpClient$1
+android.net.http.AndroidHttpClient$2
+android.net.http.AndroidHttpClient$CurlLogger
+android.net.http.AndroidHttpClient$LoggingConfiguration
+android.net.http.HttpResponseCache
+android.net.http.SslCertificate
+android.net.http.SslError
+android.net.http.X509TrustManagerExtensions
+android.net.metrics.CaptivePortalCheckResultEvent
+android.net.metrics.CaptivePortalCheckResultEvent$1
+android.net.metrics.CaptivePortalStateChangeEvent
+android.net.metrics.CaptivePortalStateChangeEvent$1
+android.net.metrics.ConnectivityServiceChangeEvent
+android.net.metrics.ConnectivityServiceChangeEvent$1
+android.net.metrics.DhcpClientEvent
+android.net.metrics.DhcpClientEvent$1
+android.net.metrics.IpConnectivityEvent
+android.net.metrics.IpReachabilityMonitorMessageEvent
+android.net.metrics.IpReachabilityMonitorMessageEvent$1
+android.net.metrics.IpReachabilityMonitorProbeEvent
+android.net.metrics.IpReachabilityMonitorProbeEvent$1
+android.net.nsd.INsdManager
+android.net.nsd.INsdManager$Stub
+android.net.nsd.NsdManager
+android.net.sip.ISipService
+android.net.sip.ISipService$Stub
+android.net.sip.SipManager
+android.net.sip.SipProfile
+android.net.sip.SipProfile$Builder
+android.net.wifi.AnqpInformationElement
+android.net.wifi.IRttManager
+android.net.wifi.IRttManager$Stub
+android.net.wifi.IRttManager$Stub$Proxy
+android.net.wifi.IWifiManager
+android.net.wifi.IWifiManager$Stub
+android.net.wifi.IWifiManager$Stub$Proxy
+android.net.wifi.IWifiScanner
+android.net.wifi.IWifiScanner$Stub
+android.net.wifi.IWifiScanner$Stub$Proxy
+android.net.wifi.RssiPacketCountInfo
+android.net.wifi.RttManager
+android.net.wifi.RttManager$RttCapabilities
+android.net.wifi.RttManager$RttCapabilities$1
+android.net.wifi.RttManager$RttListener
+android.net.wifi.RttManager$RttResult
+android.net.wifi.RttManager$ServiceHandler
+android.net.wifi.ScanResult
+android.net.wifi.ScanResult$1
+android.net.wifi.ScanResult$InformationElement
+android.net.wifi.ScanSettings
+android.net.wifi.SupplicantState
+android.net.wifi.SupplicantState$1
+android.net.wifi.WifiActivityEnergyInfo
+android.net.wifi.WifiActivityEnergyInfo$1
+android.net.wifi.WifiChannel
+android.net.wifi.WifiConfiguration
+android.net.wifi.WifiConfiguration$1
+android.net.wifi.WifiConfiguration$AuthAlgorithm
+android.net.wifi.WifiConfiguration$GroupCipher
+android.net.wifi.WifiConfiguration$KeyMgmt
+android.net.wifi.WifiConfiguration$NetworkSelectionStatus
+android.net.wifi.WifiConfiguration$PairwiseCipher
+android.net.wifi.WifiConfiguration$Protocol
+android.net.wifi.WifiConfiguration$Visibility
+android.net.wifi.WifiConnectionStatistics
+android.net.wifi.WifiConnectionStatistics$1
+android.net.wifi.WifiEnterpriseConfig
+android.net.wifi.WifiEnterpriseConfig$1
+android.net.wifi.WifiEnterpriseConfig$Eap
+android.net.wifi.WifiEnterpriseConfig$Phase2
+android.net.wifi.WifiEnterpriseConfig$SupplicantLoader
+android.net.wifi.WifiInfo
+android.net.wifi.WifiInfo$1
+android.net.wifi.WifiLinkLayerStats
+android.net.wifi.WifiLinkLayerStats$1
+android.net.wifi.WifiManager
+android.net.wifi.WifiManager$ActionListener
+android.net.wifi.WifiManager$MulticastLock
+android.net.wifi.WifiManager$WifiLock
+android.net.wifi.WifiScanner
+android.net.wifi.WifiScanner$ActionListener
+android.net.wifi.WifiScanner$ChannelSpec
+android.net.wifi.WifiScanner$OperationResult
+android.net.wifi.WifiScanner$OperationResult$1
+android.net.wifi.WifiScanner$ParcelableScanData
+android.net.wifi.WifiScanner$ParcelableScanData$1
+android.net.wifi.WifiScanner$PnoSettings$PnoNetwork
+android.net.wifi.WifiScanner$ScanData
+android.net.wifi.WifiScanner$ScanData$1
+android.net.wifi.WifiScanner$ScanListener
+android.net.wifi.WifiScanner$ScanSettings
+android.net.wifi.WifiScanner$ScanSettings$1
+android.net.wifi.WifiScanner$ServiceHandler
+android.net.wifi.WifiSsid
+android.net.wifi.WifiSsid$1
+android.net.wifi.WifiWakeReasonAndCounts
+android.net.wifi.WpsInfo
+android.net.wifi.WpsInfo$1
+android.net.wifi.WpsResult
+android.net.wifi.nan.WifiNanManager
+android.net.wifi.p2p.IWifiP2pManager
+android.net.wifi.p2p.IWifiP2pManager$Stub
+android.net.wifi.p2p.WifiP2pConfig
+android.net.wifi.p2p.WifiP2pConfig$1
+android.net.wifi.p2p.WifiP2pDevice
+android.net.wifi.p2p.WifiP2pDevice$1
+android.net.wifi.p2p.WifiP2pDeviceList
+android.net.wifi.p2p.WifiP2pDeviceList$1
+android.net.wifi.p2p.WifiP2pGroup
+android.net.wifi.p2p.WifiP2pGroup$1
+android.net.wifi.p2p.WifiP2pGroupList
+android.net.wifi.p2p.WifiP2pGroupList$1
+android.net.wifi.p2p.WifiP2pGroupList$2
+android.net.wifi.p2p.WifiP2pGroupList$GroupDeleteListener
+android.net.wifi.p2p.WifiP2pInfo
+android.net.wifi.p2p.WifiP2pInfo$1
+android.net.wifi.p2p.WifiP2pManager
+android.net.wifi.p2p.WifiP2pManager$PeerListListener
+android.net.wifi.p2p.WifiP2pManager$PersistentGroupInfoListener
+android.net.wifi.p2p.WifiP2pWfdInfo
+android.net.wifi.p2p.WifiP2pWfdInfo$1
+android.nfc.BeamShareData
+android.nfc.ErrorCodes
+android.nfc.FormatException
+android.nfc.IAppCallback
+android.nfc.IAppCallback$Stub
+android.nfc.IAppCallback$Stub$Proxy
+android.nfc.INfcAdapter
+android.nfc.INfcAdapter$Stub
+android.nfc.INfcAdapter$Stub$Proxy
+android.nfc.INfcAdapterExtras
+android.nfc.INfcCardEmulation
+android.nfc.INfcCardEmulation$Stub
+android.nfc.INfcCardEmulation$Stub$Proxy
+android.nfc.INfcFCardEmulation
+android.nfc.INfcFCardEmulation$Stub
+android.nfc.INfcFCardEmulation$Stub$Proxy
+android.nfc.INfcTag
+android.nfc.INfcTag$Stub
+android.nfc.INfcTag$Stub$Proxy
+android.nfc.INfcUnlockHandler
+android.nfc.NdefMessage
+android.nfc.NdefRecord
+android.nfc.NfcActivityManager
+android.nfc.NfcActivityManager$NfcActivityState
+android.nfc.NfcActivityManager$NfcApplicationState
+android.nfc.NfcAdapter
+android.nfc.NfcAdapter$1
+android.nfc.NfcAdapter$CreateBeamUrisCallback
+android.nfc.NfcAdapter$CreateNdefMessageCallback
+android.nfc.NfcAdapter$NfcUnlockHandler
+android.nfc.NfcAdapter$OnNdefPushCompleteCallback
+android.nfc.NfcEvent
+android.nfc.NfcManager
+android.nfc.Tag
+android.nfc.TechListParcel
+android.nfc.TransceiveResult
+android.nfc.cardemulation.AidGroup
+android.nfc.cardemulation.AidGroup$1
+android.nfc.cardemulation.ApduServiceInfo
+android.nfc.cardemulation.ApduServiceInfo$1
+android.nfc.cardemulation.CardEmulation
+android.nfc.cardemulation.HostApduService
+android.nfc.cardemulation.HostApduService$MsgHandler
+android.nfc.cardemulation.NfcFCardEmulation
+android.nfc.cardemulation.NfcFServiceInfo
+android.nfc.tech.BasicTagTechnology
+android.nfc.tech.MifareClassic
+android.nfc.tech.Ndef
+android.nfc.tech.NfcBarcode
+android.nfc.tech.TagTechnology
+android.opengl.EGL14
+android.opengl.EGLConfig
+android.opengl.EGLContext
+android.opengl.EGLDisplay
+android.opengl.EGLExt
+android.opengl.EGLObjectHandle
+android.opengl.EGLSurface
+android.opengl.ETC1
+android.opengl.ETC1Util
+android.opengl.GLDebugHelper
+android.opengl.GLES10
+android.opengl.GLES10Ext
+android.opengl.GLES11
+android.opengl.GLES11Ext
+android.opengl.GLES20
+android.opengl.GLES30
+android.opengl.GLES31
+android.opengl.GLES31Ext
+android.opengl.GLES32
+android.opengl.GLSurfaceView
+android.opengl.GLSurfaceView$BaseConfigChooser
+android.opengl.GLSurfaceView$ComponentSizeChooser
+android.opengl.GLSurfaceView$DefaultContextFactory
+android.opengl.GLSurfaceView$DefaultWindowSurfaceFactory
+android.opengl.GLSurfaceView$EGLConfigChooser
+android.opengl.GLSurfaceView$EGLContextFactory
+android.opengl.GLSurfaceView$EGLWindowSurfaceFactory
+android.opengl.GLSurfaceView$EglHelper
+android.opengl.GLSurfaceView$GLThread
+android.opengl.GLSurfaceView$GLThreadManager
+android.opengl.GLSurfaceView$Renderer
+android.opengl.GLSurfaceView$SimpleEGLConfigChooser
+android.opengl.GLU
+android.opengl.GLUtils
+android.opengl.Matrix
+android.opengl.Visibility
+android.os.AsyncResult
+android.os.AsyncTask$1
+android.os.AsyncTask$2
+android.os.AsyncTask$3
+android.os.AsyncTask$AsyncTaskResult
+android.os.AsyncTask$InternalHandler
+android.os.AsyncTask$SerialExecutor
+android.os.AsyncTask$SerialExecutor$1
+android.os.AsyncTask$Status
+android.os.AsyncTask$WorkerRunnable
+android.os.BadParcelableException
+android.os.BaseBundle
+android.os.BatteryManager
+android.os.BatteryManagerInternal
+android.os.BatteryProperties
+android.os.BatteryProperties$1
+android.os.BatteryStats
+android.os.BatteryStats$BitDescription
+android.os.BatteryStats$ControllerActivityCounter
+android.os.BatteryStats$Counter
+android.os.BatteryStats$DailyItem
+android.os.BatteryStats$HistoryEventTracker
+android.os.BatteryStats$HistoryItem
+android.os.BatteryStats$HistoryPrinter
+android.os.BatteryStats$HistoryStepDetails
+android.os.BatteryStats$HistoryTag
+android.os.BatteryStats$LevelStepTracker
+android.os.BatteryStats$LongCounter
+android.os.BatteryStats$PackageChange
+android.os.BatteryStats$Timer
+android.os.BatteryStats$Uid
+android.os.BatteryStats$Uid$Pid
+android.os.BatteryStats$Uid$Pkg
+android.os.BatteryStats$Uid$Pkg$Serv
+android.os.BatteryStats$Uid$Sensor
+android.os.BatteryStats$Uid$Wakelock
+android.os.Binder
+android.os.BinderProxy
+android.os.Build
+android.os.Build$VERSION
+android.os.Bundle
+android.os.Bundle$1
+android.os.CancellationSignal
+android.os.CancellationSignal$OnCancelListener
+android.os.CancellationSignal$Transport
+android.os.CommonTimeConfig$OnServerDiedListener
+android.os.ConditionVariable
+android.os.CountDownTimer
+android.os.CountDownTimer$1
+android.os.CpuUsageInfo
+android.os.CpuUsageInfo$1
+android.os.DeadObjectException
+android.os.DeadSystemException
+android.os.Debug
+android.os.Debug$MemoryInfo
+android.os.Debug$MemoryInfo$1
+android.os.DropBoxManager
+android.os.DropBoxManager$Entry
+android.os.DropBoxManager$Entry$1
+android.os.Environment
+android.os.Environment$UserEnvironment
+android.os.FactoryTest
+android.os.FileBridge
+android.os.FileBridge$FileBridgeOutputStream
+android.os.FileObserver$ObserverThread
+android.os.FileUtils
+android.os.Handler
+android.os.Handler$BlockingRunnable
+android.os.Handler$Callback
+android.os.Handler$MessengerImpl
+android.os.HandlerThread
+android.os.HardwarePropertiesManager
+android.os.IBatteryPropertiesListener
+android.os.IBatteryPropertiesListener$Stub
+android.os.IBatteryPropertiesRegistrar
+android.os.IBatteryPropertiesRegistrar$Stub
+android.os.IBatteryPropertiesRegistrar$Stub$Proxy
+android.os.IBinder
+android.os.IBinder$DeathRecipient
+android.os.ICancellationSignal
+android.os.ICancellationSignal$Stub
+android.os.ICancellationSignal$Stub$Proxy
+android.os.IDeviceIdleController
+android.os.IDeviceIdleController$Stub
+android.os.IDeviceIdleController$Stub$Proxy
+android.os.IHardwarePropertiesManager
+android.os.IHardwarePropertiesManager$Stub
+android.os.IInterface
+android.os.IMaintenanceActivityListener
+android.os.IMessenger
+android.os.IMessenger$Stub
+android.os.IMessenger$Stub$Proxy
+android.os.INetworkActivityListener
+android.os.INetworkManagementService
+android.os.INetworkManagementService$Stub
+android.os.INetworkManagementService$Stub$Proxy
+android.os.IPermissionController
+android.os.IPermissionController$Stub
+android.os.IPowerManager
+android.os.IPowerManager$Stub
+android.os.IPowerManager$Stub$Proxy
+android.os.IProcessInfoService
+android.os.IProcessInfoService$Stub
+android.os.IProgressListener
+android.os.IProgressListener$Stub
+android.os.IRecoverySystem
+android.os.IRecoverySystem$Stub
+android.os.IRecoverySystemProgressListener
+android.os.IRemoteCallback
+android.os.IRemoteCallback$Stub
+android.os.ISchedulingPolicyService
+android.os.ISchedulingPolicyService$Stub
+android.os.IServiceManager
+android.os.IUpdateLock
+android.os.IUpdateLock$Stub
+android.os.IUserManager
+android.os.IUserManager$Stub
+android.os.IUserManager$Stub$Proxy
+android.os.IVibratorService
+android.os.IVibratorService$Stub
+android.os.IVibratorService$Stub$Proxy
+android.os.Looper
+android.os.MemoryFile
+android.os.Message
+android.os.Message$1
+android.os.MessageQueue
+android.os.MessageQueue$FileDescriptorRecord
+android.os.MessageQueue$IdleHandler
+android.os.MessageQueue$OnFileDescriptorEventListener
+android.os.Messenger
+android.os.Messenger$1
+android.os.NullVibrator
+android.os.OperationCanceledException
+android.os.Parcel
+android.os.Parcel$1
+android.os.Parcel$2
+android.os.ParcelFileDescriptor
+android.os.ParcelFileDescriptor$1
+android.os.ParcelFileDescriptor$2
+android.os.ParcelFileDescriptor$AutoCloseInputStream
+android.os.ParcelFileDescriptor$AutoCloseOutputStream
+android.os.ParcelFileDescriptor$OnCloseListener
+android.os.ParcelFileDescriptor$Status
+android.os.ParcelFormatException
+android.os.ParcelUuid
+android.os.ParcelUuid$1
+android.os.Parcelable
+android.os.Parcelable$ClassLoaderCreator
+android.os.Parcelable$Creator
+android.os.ParcelableParcel
+android.os.ParcelableParcel$1
+android.os.PatternMatcher
+android.os.PatternMatcher$1
+android.os.PersistableBundle
+android.os.PersistableBundle$1
+android.os.PersistableBundle$MyReadMapCallback
+android.os.PowerManager
+android.os.PowerManager$WakeLock
+android.os.PowerManager$WakeLock$1
+android.os.PowerManagerInternal
+android.os.PowerManagerInternal$LowPowerModeListener
+android.os.Process
+android.os.Process$ProcessStartResult
+android.os.Process$ZygoteState
+android.os.RecoverySystem
+android.os.Registrant
+android.os.RegistrantList
+android.os.RemoteCallback
+android.os.RemoteCallbackList
+android.os.RemoteCallbackList$Callback
+android.os.RemoteException
+android.os.ResultReceiver
+android.os.ResultReceiver$1
+android.os.ResultReceiver$MyResultReceiver
+android.os.ResultReceiver$MyRunnable
+android.os.SELinux
+android.os.ServiceManager
+android.os.ServiceManagerNative
+android.os.ServiceManagerProxy
+android.os.ServiceSpecificException
+android.os.StatFs
+android.os.StrictMode
+android.os.StrictMode$1
+android.os.StrictMode$2
+android.os.StrictMode$3
+android.os.StrictMode$4
+android.os.StrictMode$5
+android.os.StrictMode$6
+android.os.StrictMode$7
+android.os.StrictMode$8
+android.os.StrictMode$9
+android.os.StrictMode$AndroidBlockGuardPolicy
+android.os.StrictMode$AndroidBlockGuardPolicy$1
+android.os.StrictMode$AndroidCloseGuardReporter
+android.os.StrictMode$InstanceCountViolation
+android.os.StrictMode$InstanceTracker
+android.os.StrictMode$LogStackTrace
+android.os.StrictMode$Span
+android.os.StrictMode$StrictModeDiskReadViolation
+android.os.StrictMode$StrictModeDiskWriteViolation
+android.os.StrictMode$StrictModeResourceMismatchViolation
+android.os.StrictMode$StrictModeViolation
+android.os.StrictMode$ThreadPolicy
+android.os.StrictMode$ThreadPolicy$Builder
+android.os.StrictMode$ThreadSpanState
+android.os.StrictMode$ViolationInfo
+android.os.StrictMode$VmPolicy
+android.os.StrictMode$VmPolicy$Builder
+android.os.SystemClock
+android.os.SystemProperties
+android.os.SystemService
+android.os.SystemService$1
+android.os.SystemService$State
+android.os.SystemVibrator
+android.os.TokenWatcher
+android.os.TokenWatcher$1
+android.os.TokenWatcher$Death
+android.os.Trace
+android.os.Trace$1
+android.os.TransactionTooLargeException
+android.os.UEventObserver
+android.os.UEventObserver$UEvent
+android.os.UEventObserver$UEventThread
+android.os.UpdateLock
+android.os.UserHandle
+android.os.UserHandle$1
+android.os.UserManager
+android.os.UserManagerInternal
+android.os.UserManagerInternal$UserRestrictionsListener
+android.os.Vibrator
+android.os.WorkSource
+android.os.WorkSource$1
+android.os.ZygoteStartFailedEx
+android.os.health.HealthStatsParceler
+android.os.health.SystemHealthManager
+android.os.storage.DiskInfo
+android.os.storage.DiskInfo$1
+android.os.storage.IMountService
+android.os.storage.IMountService$Stub
+android.os.storage.IMountService$Stub$Proxy
+android.os.storage.IMountServiceListener
+android.os.storage.IMountServiceListener$Stub
+android.os.storage.IMountServiceListener$Stub$Proxy
+android.os.storage.IMountShutdownObserver
+android.os.storage.IObbActionListener
+android.os.storage.IObbActionListener$Stub
+android.os.storage.MountServiceInternal
+android.os.storage.MountServiceInternal$ExternalStorageMountPolicy
+android.os.storage.StorageEventListener
+android.os.storage.StorageManager
+android.os.storage.StorageManager$ObbActionListener
+android.os.storage.StorageManager$StorageEventListenerDelegate
+android.os.storage.StorageVolume
+android.os.storage.StorageVolume$1
+android.os.storage.VolumeInfo
+android.os.storage.VolumeInfo$1
+android.os.storage.VolumeInfo$2
+android.os.storage.VolumeRecord
+android.os.storage.VolumeRecord$1
+android.preference.DialogPreference
+android.preference.GenericInflater
+android.preference.GenericInflater$Parent
+android.preference.ListPreference
+android.preference.Preference
+android.preference.Preference$OnPreferenceChangeInternalListener
+android.preference.Preference$OnPreferenceChangeListener
+android.preference.Preference$OnPreferenceClickListener
+android.preference.PreferenceActivity
+android.preference.PreferenceActivity$1
+android.preference.PreferenceActivity$Header
+android.preference.PreferenceActivity$Header$1
+android.preference.PreferenceActivity$HeaderAdapter
+android.preference.PreferenceActivity$HeaderAdapter$HeaderViewHolder
+android.preference.PreferenceCategory
+android.preference.PreferenceFragment
+android.preference.PreferenceFragment$1
+android.preference.PreferenceFragment$2
+android.preference.PreferenceFragment$3
+android.preference.PreferenceFragment$OnPreferenceStartFragmentCallback
+android.preference.PreferenceFrameLayout
+android.preference.PreferenceFrameLayout$LayoutParams
+android.preference.PreferenceGroup
+android.preference.PreferenceGroupAdapter
+android.preference.PreferenceGroupAdapter$1
+android.preference.PreferenceGroupAdapter$PreferenceLayout
+android.preference.PreferenceInflater
+android.preference.PreferenceManager
+android.preference.PreferenceManager$OnActivityDestroyListener
+android.preference.PreferenceManager$OnPreferenceTreeClickListener
+android.preference.PreferenceScreen
+android.preference.SeekBarVolumizer
+android.preference.SeekBarVolumizer$Callback
+android.preference.SeekBarVolumizer$H
+android.preference.SeekBarVolumizer$Observer
+android.preference.SeekBarVolumizer$Receiver
+android.preference.SwitchPreference
+android.preference.SwitchPreference$Listener
+android.preference.TwoStatePreference
+android.print.IPrintDocumentAdapter
+android.print.IPrintJobStateChangeListener
+android.print.IPrintJobStateChangeListener$Stub
+android.print.IPrintJobStateChangeListener$Stub$Proxy
+android.print.IPrintManager
+android.print.IPrintManager$Stub
+android.print.IPrintManager$Stub$Proxy
+android.print.IPrintServicesChangeListener
+android.print.IPrintServicesChangeListener$Stub
+android.print.IPrintServicesChangeListener$Stub$Proxy
+android.print.IPrintSpooler
+android.print.IPrintSpooler$Stub
+android.print.IPrintSpooler$Stub$Proxy
+android.print.IPrintSpoolerCallbacks
+android.print.IPrintSpoolerCallbacks$Stub
+android.print.IPrintSpoolerCallbacks$Stub$Proxy
+android.print.IPrintSpoolerClient
+android.print.IPrintSpoolerClient$Stub
+android.print.IPrintSpoolerClient$Stub$Proxy
+android.print.IPrinterDiscoveryObserver
+android.print.PageRange
+android.print.PrintAttributes
+android.print.PrintAttributes$Builder
+android.print.PrintAttributes$Margins
+android.print.PrintAttributes$MediaSize
+android.print.PrintAttributes$Resolution
+android.print.PrintDocumentAdapter
+android.print.PrintDocumentAdapter$LayoutResultCallback
+android.print.PrintDocumentAdapter$WriteResultCallback
+android.print.PrintDocumentInfo
+android.print.PrintDocumentInfo$Builder
+android.print.PrintJob
+android.print.PrintJobId
+android.print.PrintJobInfo
+android.print.PrintJobInfo$1
+android.print.PrintManager
+android.print.PrintManager$1
+android.print.PrintManager$PrintJobStateChangeListener
+android.print.PrintManager$PrintJobStateChangeListenerWrapper
+android.print.PrintManager$PrintServicesChangeListener
+android.print.PrintManager$PrintServicesChangeListenerWrapper
+android.print.PrintServicesLoader
+android.print.PrintServicesLoader$1
+android.print.PrintServicesLoader$MyHandler
+android.print.PrinterId
+android.printservice.IPrintServiceClient
+android.printservice.IPrintServiceClient$Stub
+android.printservice.PrintServiceInfo
+android.printservice.PrintServiceInfo$1
+android.printservice.recommendation.IRecommendationsChangeListener
+android.provider.BaseColumns
+android.provider.BlockedNumberContract
+android.provider.BlockedNumberContract$BlockedNumbers
+android.provider.CalendarContract
+android.provider.CalendarContract$Attendees
+android.provider.CalendarContract$AttendeesColumns
+android.provider.CalendarContract$CalendarAlerts
+android.provider.CalendarContract$CalendarAlertsColumns
+android.provider.CalendarContract$CalendarCache
+android.provider.CalendarContract$CalendarCacheColumns
+android.provider.CalendarContract$CalendarColumns
+android.provider.CalendarContract$CalendarEntity
+android.provider.CalendarContract$CalendarEntity$EntityIteratorImpl
+android.provider.CalendarContract$CalendarSyncColumns
+android.provider.CalendarContract$Calendars
+android.provider.CalendarContract$Colors
+android.provider.CalendarContract$ColorsColumns
+android.provider.CalendarContract$Events
+android.provider.CalendarContract$EventsColumns
+android.provider.CalendarContract$EventsEntity
+android.provider.CalendarContract$EventsEntity$EntityIteratorImpl
+android.provider.CalendarContract$ExtendedProperties
+android.provider.CalendarContract$ExtendedPropertiesColumns
+android.provider.CalendarContract$Instances
+android.provider.CalendarContract$Reminders
+android.provider.CalendarContract$RemindersColumns
+android.provider.CalendarContract$SyncColumns
+android.provider.CalendarContract$SyncState
+android.provider.CallLog
+android.provider.CallLog$Calls
+android.provider.Contacts
+android.provider.Contacts$ContactMethods
+android.provider.Contacts$ContactMethodsColumns
+android.provider.Contacts$PeopleColumns
+android.provider.ContactsContract
+android.provider.ContactsContract$AggregationExceptions
+android.provider.ContactsContract$BaseSyncColumns
+android.provider.ContactsContract$CommonDataKinds$BaseTypes
+android.provider.ContactsContract$CommonDataKinds$Callable
+android.provider.ContactsContract$CommonDataKinds$CommonColumns
+android.provider.ContactsContract$CommonDataKinds$Email
+android.provider.ContactsContract$CommonDataKinds$Event
+android.provider.ContactsContract$CommonDataKinds$Im
+android.provider.ContactsContract$CommonDataKinds$Phone
+android.provider.ContactsContract$CommonDataKinds$Relation
+android.provider.ContactsContract$CommonDataKinds$SipAddress
+android.provider.ContactsContract$CommonDataKinds$StructuredPostal
+android.provider.ContactsContract$ContactCounts
+android.provider.ContactsContract$ContactNameColumns
+android.provider.ContactsContract$ContactOptionsColumns
+android.provider.ContactsContract$ContactStatusColumns
+android.provider.ContactsContract$Contacts
+android.provider.ContactsContract$Contacts$AggregationSuggestions$Builder
+android.provider.ContactsContract$ContactsColumns
+android.provider.ContactsContract$Data
+android.provider.ContactsContract$DataColumns
+android.provider.ContactsContract$DataColumnsWithJoins
+android.provider.ContactsContract$DataUsageFeedback
+android.provider.ContactsContract$DataUsageStatColumns
+android.provider.ContactsContract$DeletedContacts
+android.provider.ContactsContract$DeletedContactsColumns
+android.provider.ContactsContract$Directory
+android.provider.ContactsContract$DisplayPhoto
+android.provider.ContactsContract$Groups
+android.provider.ContactsContract$Groups$EntityIteratorImpl
+android.provider.ContactsContract$GroupsColumns
+android.provider.ContactsContract$MetadataSync
+android.provider.ContactsContract$MetadataSyncColumns
+android.provider.ContactsContract$PhoneLookup
+android.provider.ContactsContract$PhoneLookupColumns
+android.provider.ContactsContract$PinnedPositions
+android.provider.ContactsContract$Profile
+android.provider.ContactsContract$ProviderStatus
+android.provider.ContactsContract$QuickContact
+android.provider.ContactsContract$RawContacts
+android.provider.ContactsContract$RawContacts$EntityIteratorImpl
+android.provider.ContactsContract$RawContactsColumns
+android.provider.ContactsContract$RawContactsEntity
+android.provider.ContactsContract$Settings
+android.provider.ContactsContract$SettingsColumns
+android.provider.ContactsContract$StatusColumns
+android.provider.ContactsContract$StreamItems
+android.provider.ContactsContract$StreamItemsColumns
+android.provider.ContactsContract$SyncColumns
+android.provider.ContactsContract$SyncState
+android.provider.DocumentsContract
+android.provider.DocumentsContract$Root
+android.provider.DocumentsProvider
+android.provider.Downloads
+android.provider.Downloads$Impl
+android.provider.MediaStore
+android.provider.MediaStore$Audio
+android.provider.MediaStore$Audio$AlbumColumns
+android.provider.MediaStore$Audio$Albums
+android.provider.MediaStore$Audio$AudioColumns
+android.provider.MediaStore$Audio$Genres
+android.provider.MediaStore$Audio$Genres$Members
+android.provider.MediaStore$Audio$GenresColumns
+android.provider.MediaStore$Audio$Media
+android.provider.MediaStore$Audio$Playlists
+android.provider.MediaStore$Audio$Playlists$Members
+android.provider.MediaStore$Audio$PlaylistsColumns
+android.provider.MediaStore$Files
+android.provider.MediaStore$Images$ImageColumns
+android.provider.MediaStore$Images$Media
+android.provider.MediaStore$Images$Thumbnails
+android.provider.MediaStore$InternalThumbnails
+android.provider.MediaStore$MediaColumns
+android.provider.MediaStore$Video
+android.provider.MediaStore$Video$Media
+android.provider.MediaStore$Video$Thumbnails
+android.provider.MediaStore$Video$VideoColumns
+android.provider.OpenableColumns
+android.provider.SearchIndexableData
+android.provider.SearchIndexableResource
+android.provider.SearchIndexablesContract
+android.provider.SearchIndexablesProvider
+android.provider.SearchRecentSuggestions
+android.provider.SearchRecentSuggestions$1
+android.provider.Settings
+android.provider.Settings$Global
+android.provider.Settings$NameValueCache
+android.provider.Settings$NameValueTable
+android.provider.Settings$Secure
+android.provider.Settings$SettingNotFoundException
+android.provider.Settings$System
+android.provider.Settings$System$1
+android.provider.Settings$System$2
+android.provider.Settings$System$3
+android.provider.Settings$System$4
+android.provider.Settings$System$5
+android.provider.Settings$System$6
+android.provider.Settings$System$7
+android.provider.Settings$System$8
+android.provider.Settings$System$9
+android.provider.Settings$System$DiscreteValueValidator
+android.provider.Settings$System$InclusiveFloatRangeValidator
+android.provider.Settings$System$InclusiveIntegerRangeValidator
+android.provider.Settings$System$Validator
+android.provider.SyncStateContract$Columns
+android.provider.SyncStateContract$Helpers
+android.provider.Telephony$BaseMmsColumns
+android.provider.Telephony$Carriers
+android.provider.Telephony$Mms
+android.provider.Telephony$Mms$Inbox
+android.provider.Telephony$Mms$Sent
+android.provider.Telephony$MmsSms
+android.provider.Telephony$Sms
+android.provider.Telephony$Sms$Inbox
+android.provider.Telephony$Sms$Intents
+android.provider.Telephony$Sms$Sent
+android.provider.Telephony$TextBasedSmsColumns
+android.provider.Telephony$Threads
+android.provider.Telephony$ThreadsColumns
+android.provider.UserDictionary$Words
+android.provider.VoicemailContract$Status
+android.provider.VoicemailContract$Voicemails
+android.renderscript.Allocation
+android.renderscript.BaseObj
+android.renderscript.Element
+android.renderscript.Matrix4f
+android.renderscript.RSRuntimeException
+android.renderscript.RenderScript
+android.renderscript.RenderScriptCacheDir
+android.renderscript.Script
+android.renderscript.ScriptIntrinsic
+android.renderscript.ScriptIntrinsicBlur
+android.renderscript.Type
+android.security.Credentials
+android.security.FrameworkNetworkSecurityPolicy
+android.security.GateKeeper
+android.security.IKeyChainService
+android.security.IKeyChainService$Stub
+android.security.IKeyChainService$Stub$Proxy
+android.security.IKeystoreService
+android.security.IKeystoreService$Stub
+android.security.IKeystoreService$Stub$Proxy
+android.security.KeyChain
+android.security.KeyChain$1
+android.security.KeyChain$KeyChainConnection
+android.security.KeyStore
+android.security.KeyStoreException
+android.security.NetworkSecurityPolicy
+android.security.keymaster.KeyCharacteristics
+android.security.keymaster.KeyCharacteristics$1
+android.security.keymaster.KeymasterArgument
+android.security.keymaster.KeymasterArgument$1
+android.security.keymaster.KeymasterArguments
+android.security.keymaster.KeymasterArguments$1
+android.security.keymaster.KeymasterBlobArgument
+android.security.keymaster.KeymasterBooleanArgument
+android.security.keymaster.KeymasterDateArgument
+android.security.keymaster.KeymasterDefs
+android.security.keymaster.KeymasterIntArgument
+android.security.keymaster.KeymasterLongArgument
+android.security.keymaster.OperationResult
+android.security.keymaster.OperationResult$1
+android.security.keystore.AndroidKeyStoreBCWorkaroundProvider
+android.security.keystore.AndroidKeyStoreCipherSpiBase
+android.security.keystore.AndroidKeyStoreKey
+android.security.keystore.AndroidKeyStoreKeyGeneratorSpi
+android.security.keystore.AndroidKeyStoreKeyGeneratorSpi$AES
+android.security.keystore.AndroidKeyStoreProvider
+android.security.keystore.AndroidKeyStoreSecretKey
+android.security.keystore.AndroidKeyStoreSecretKeyFactorySpi
+android.security.keystore.AndroidKeyStoreSpi
+android.security.keystore.AndroidKeyStoreUnauthenticatedAESCipherSpi
+android.security.keystore.AndroidKeyStoreUnauthenticatedAESCipherSpi$CBC
+android.security.keystore.AndroidKeyStoreUnauthenticatedAESCipherSpi$CBC$PKCS7Padding
+android.security.keystore.ArrayUtils
+android.security.keystore.KeyGenParameterSpec
+android.security.keystore.KeyGenParameterSpec$Builder
+android.security.keystore.KeyInfo
+android.security.keystore.KeyPermanentlyInvalidatedException
+android.security.keystore.KeyProperties
+android.security.keystore.KeyProperties$BlockMode
+android.security.keystore.KeyProperties$Digest
+android.security.keystore.KeyProperties$EncryptionPadding
+android.security.keystore.KeyProperties$KeyAlgorithm
+android.security.keystore.KeyProperties$Origin
+android.security.keystore.KeyProperties$Purpose
+android.security.keystore.KeyStoreCryptoOperation
+android.security.keystore.KeyStoreCryptoOperationChunkedStreamer
+android.security.keystore.KeyStoreCryptoOperationChunkedStreamer$MainDataStream
+android.security.keystore.KeyStoreCryptoOperationChunkedStreamer$Stream
+android.security.keystore.KeyStoreCryptoOperationStreamer
+android.security.keystore.KeyStoreCryptoOperationUtils
+android.security.keystore.KeymasterUtils
+android.security.keystore.UserNotAuthenticatedException
+android.security.keystore.Utils
+android.security.net.config.ApplicationConfig
+android.security.net.config.CertificateSource
+android.security.net.config.CertificatesEntryRef
+android.security.net.config.ConfigNetworkSecurityPolicy
+android.security.net.config.ConfigSource
+android.security.net.config.DirectoryCertificateSource
+android.security.net.config.DirectoryCertificateSource$1
+android.security.net.config.DirectoryCertificateSource$3
+android.security.net.config.DirectoryCertificateSource$CertSelector
+android.security.net.config.KeyStoreCertificateSource
+android.security.net.config.KeyStoreConfigSource
+android.security.net.config.ManifestConfigSource
+android.security.net.config.ManifestConfigSource$DefaultConfigSource
+android.security.net.config.NetworkSecurityConfig
+android.security.net.config.NetworkSecurityConfig$1
+android.security.net.config.NetworkSecurityConfig$Builder
+android.security.net.config.NetworkSecurityConfigProvider
+android.security.net.config.NetworkSecurityTrustManager
+android.security.net.config.PinSet
+android.security.net.config.RootTrustManager
+android.security.net.config.RootTrustManagerFactorySpi
+android.security.net.config.SystemCertificateSource
+android.security.net.config.TrustedCertificateStoreAdapter
+android.security.net.config.UserCertificateSource
+android.service.carrier.CarrierIdentifier
+android.service.carrier.CarrierIdentifier$1
+android.service.carrier.ICarrierService
+android.service.carrier.ICarrierService$Stub
+android.service.carrier.ICarrierService$Stub$Proxy
+android.service.chooser.ChooserTarget
+android.service.chooser.ChooserTargetService
+android.service.dreams.DreamManagerInternal
+android.service.dreams.DreamService
+android.service.dreams.DreamService$1
+android.service.dreams.DreamService$DreamServiceWrapper
+android.service.dreams.DreamService$DreamServiceWrapper$1
+android.service.dreams.DreamService$DreamServiceWrapper$2
+android.service.dreams.DreamService$DreamServiceWrapper$3
+android.service.dreams.IDreamManager
+android.service.dreams.IDreamManager$Stub
+android.service.dreams.IDreamManager$Stub$Proxy
+android.service.dreams.IDreamService
+android.service.dreams.IDreamService$Stub
+android.service.dreams.IDreamService$Stub$Proxy
+android.service.gatekeeper.GateKeeperResponse
+android.service.gatekeeper.GateKeeperResponse$1
+android.service.gatekeeper.IGateKeeperService
+android.service.gatekeeper.IGateKeeperService$Stub
+android.service.gatekeeper.IGateKeeperService$Stub$Proxy
+android.service.media.CameraPrewarmService
+android.service.notification.Condition
+android.service.notification.Condition$1
+android.service.notification.ConditionProviderService
+android.service.notification.ConditionProviderService$H
+android.service.notification.ConditionProviderService$Provider
+android.service.notification.IConditionListener
+android.service.notification.IConditionListener$Stub
+android.service.notification.IConditionProvider
+android.service.notification.IConditionProvider$Stub
+android.service.notification.INotificationListener
+android.service.notification.INotificationListener$Stub
+android.service.notification.INotificationListener$Stub$Proxy
+android.service.notification.IStatusBarNotificationHolder
+android.service.notification.IStatusBarNotificationHolder$Stub
+android.service.notification.IStatusBarNotificationHolder$Stub$Proxy
+android.service.notification.NotificationListenerService
+android.service.notification.NotificationListenerService$MyHandler
+android.service.notification.NotificationListenerService$NotificationListenerWrapper
+android.service.notification.NotificationListenerService$Ranking
+android.service.notification.NotificationListenerService$RankingMap
+android.service.notification.NotificationListenerService$RankingMap$1
+android.service.notification.NotificationRankerService
+android.service.notification.NotificationRankerService$Adjustment
+android.service.notification.NotificationRankerService$MyHandler
+android.service.notification.NotificationRankerService$NotificationRankingServiceWrapper
+android.service.notification.NotificationRankingUpdate
+android.service.notification.NotificationRankingUpdate$1
+android.service.notification.StatusBarNotification
+android.service.notification.StatusBarNotification$1
+android.service.notification.ZenModeConfig
+android.service.notification.ZenModeConfig$1
+android.service.notification.ZenModeConfig$Diff
+android.service.notification.ZenModeConfig$EventInfo
+android.service.notification.ZenModeConfig$Migration
+android.service.notification.ZenModeConfig$ScheduleInfo
+android.service.notification.ZenModeConfig$XmlV1
+android.service.notification.ZenModeConfig$ZenRule
+android.service.notification.ZenModeConfig$ZenRule$1
+android.service.persistentdata.IPersistentDataBlockService
+android.service.persistentdata.IPersistentDataBlockService$Stub
+android.service.persistentdata.IPersistentDataBlockService$Stub$Proxy
+android.service.persistentdata.PersistentDataBlockManager
+android.service.quicksettings.IQSService
+android.service.quicksettings.IQSService$Stub
+android.service.quicksettings.IQSTileService
+android.service.quicksettings.Tile
+android.service.textservice.SpellCheckerService
+android.service.textservice.SpellCheckerService$InternalISpellCheckerSession
+android.service.textservice.SpellCheckerService$Session
+android.service.textservice.SpellCheckerService$SpellCheckerServiceBinder
+android.service.trust.ITrustAgentService
+android.service.trust.ITrustAgentService$Stub
+android.service.trust.ITrustAgentService$Stub$Proxy
+android.service.trust.ITrustAgentServiceCallback
+android.service.trust.ITrustAgentServiceCallback$Stub
+android.service.trust.ITrustAgentServiceCallback$Stub$Proxy
+android.service.trust.TrustAgentService
+android.service.trust.TrustAgentService$1
+android.service.trust.TrustAgentService$ConfigurationData
+android.service.trust.TrustAgentService$TrustAgentServiceWrapper
+android.service.voice.AlwaysOnHotwordDetector
+android.service.voice.AlwaysOnHotwordDetector$Callback
+android.service.voice.AlwaysOnHotwordDetector$EventPayload
+android.service.voice.AlwaysOnHotwordDetector$MyHandler
+android.service.voice.AlwaysOnHotwordDetector$RefreshAvailabiltyTask
+android.service.voice.AlwaysOnHotwordDetector$SoundTriggerListener
+android.service.voice.IVoiceInteractionService
+android.service.voice.IVoiceInteractionService$Stub
+android.service.voice.IVoiceInteractionService$Stub$Proxy
+android.service.voice.IVoiceInteractionSession
+android.service.voice.VoiceInteractionManagerInternal
+android.service.voice.VoiceInteractionService
+android.service.voice.VoiceInteractionService$1
+android.service.voice.VoiceInteractionService$MyHandler
+android.service.voice.VoiceInteractionServiceInfo
+android.service.voice.VoiceInteractionSession
+android.service.wallpaper.IWallpaperConnection
+android.service.wallpaper.IWallpaperConnection$Stub
+android.service.wallpaper.IWallpaperConnection$Stub$Proxy
+android.service.wallpaper.IWallpaperEngine
+android.service.wallpaper.IWallpaperEngine$Stub
+android.service.wallpaper.IWallpaperEngine$Stub$Proxy
+android.service.wallpaper.IWallpaperService
+android.service.wallpaper.IWallpaperService$Stub
+android.service.wallpaper.IWallpaperService$Stub$Proxy
+android.service.wallpaper.WallpaperService
+android.service.wallpaper.WallpaperService$Engine
+android.service.wallpaper.WallpaperService$Engine$1
+android.service.wallpaper.WallpaperService$Engine$2
+android.service.wallpaper.WallpaperService$Engine$3
+android.service.wallpaper.WallpaperService$Engine$WallpaperInputEventReceiver
+android.service.wallpaper.WallpaperService$IWallpaperEngineWrapper
+android.service.wallpaper.WallpaperService$IWallpaperServiceWrapper
+android.service.wallpaper.WallpaperService$WallpaperCommand
+android.speech.RecognitionService
+android.speech.SpeechRecognizer
+android.speech.tts.AudioPlaybackHandler
+android.speech.tts.AudioPlaybackHandler$MessageLoop
+android.speech.tts.ITextToSpeechCallback
+android.speech.tts.ITextToSpeechCallback$Stub
+android.speech.tts.ITextToSpeechCallback$Stub$Proxy
+android.speech.tts.ITextToSpeechService
+android.speech.tts.ITextToSpeechService$Stub
+android.speech.tts.ITextToSpeechService$Stub$Proxy
+android.speech.tts.SynthesisCallback
+android.speech.tts.SynthesisRequest
+android.speech.tts.TextToSpeech
+android.speech.tts.TextToSpeech$10
+android.speech.tts.TextToSpeech$16
+android.speech.tts.TextToSpeech$7
+android.speech.tts.TextToSpeech$Action
+android.speech.tts.TextToSpeech$Connection
+android.speech.tts.TextToSpeech$Connection$1
+android.speech.tts.TextToSpeech$Connection$SetupConnectionAsyncTask
+android.speech.tts.TextToSpeech$EngineInfo
+android.speech.tts.TextToSpeech$OnInitListener
+android.speech.tts.TextToSpeechService
+android.speech.tts.TextToSpeechService$1
+android.speech.tts.TextToSpeechService$CallbackMap
+android.speech.tts.TextToSpeechService$SynthHandler
+android.speech.tts.TextToSpeechService$SynthHandler$2
+android.speech.tts.TextToSpeechService$SynthThread
+android.speech.tts.TtsEngines
+android.speech.tts.TtsEngines$EngineInfoComparator
+android.speech.tts.UtteranceProgressListener
+android.speech.tts.Voice
+android.system.ErrnoException
+android.system.GaiException
+android.system.NetlinkSocketAddress
+android.system.Os
+android.system.OsConstants
+android.system.PacketSocketAddress
+android.system.StructAddrinfo
+android.system.StructFlock
+android.system.StructGroupReq
+android.system.StructGroupSourceReq
+android.system.StructLinger
+android.system.StructPasswd
+android.system.StructPollfd
+android.system.StructStat
+android.system.StructStatVfs
+android.system.StructTimeval
+android.system.StructUcred
+android.system.StructUtsname
+android.system.UnixSocketAddress
+android.telecom.AudioState
+android.telecom.AudioState$1
+android.telecom.Call
+android.telecom.Call$1
+android.telecom.Call$4
+android.telecom.Call$8
+android.telecom.Call$Callback
+android.telecom.Call$Details
+android.telecom.CallAudioState
+android.telecom.CallAudioState$1
+android.telecom.CallbackRecord
+android.telecom.Conference
+android.telecom.Conference$Listener
+android.telecom.Conferenceable
+android.telecom.Connection
+android.telecom.Connection$1
+android.telecom.Connection$2
+android.telecom.Connection$FailureSignalingConnection
+android.telecom.Connection$Listener
+android.telecom.Connection$VideoProvider
+android.telecom.ConnectionRequest
+android.telecom.ConnectionRequest$1
+android.telecom.ConnectionService
+android.telecom.ConnectionService$1
+android.telecom.ConnectionService$2
+android.telecom.ConnectionService$2$1
+android.telecom.ConnectionService$3
+android.telecom.ConnectionService$4
+android.telecom.ConnectionService$5
+android.telecom.ConnectionService$5$1
+android.telecom.ConnectionServiceAdapter
+android.telecom.DefaultDialerManager
+android.telecom.DisconnectCause
+android.telecom.DisconnectCause$1
+android.telecom.GatewayInfo
+android.telecom.InCallAdapter
+android.telecom.InCallService
+android.telecom.InCallService$1
+android.telecom.InCallService$2
+android.telecom.InCallService$InCallServiceBinder
+android.telecom.InCallService$VideoCall
+android.telecom.InCallService$VideoCall$Callback
+android.telecom.Log
+android.telecom.Log$1
+android.telecom.ParcelableCall
+android.telecom.ParcelableCall$1
+android.telecom.ParcelableCallAnalytics
+android.telecom.ParcelableConference
+android.telecom.ParcelableConnection
+android.telecom.ParcelableConnection$1
+android.telecom.Phone
+android.telecom.Phone$Listener
+android.telecom.PhoneAccount
+android.telecom.PhoneAccount$1
+android.telecom.PhoneAccount$Builder
+android.telecom.PhoneAccountHandle
+android.telecom.PhoneAccountHandle$1
+android.telecom.RemoteConnectionManager
+android.telecom.Response
+android.telecom.StatusHints
+android.telecom.TelecomManager
+android.telecom.VideoProfile
+android.telecom.VideoProfile$1
+android.telephony.CarrierConfigManager
+android.telephony.CellIdentityGsm
+android.telephony.CellIdentityGsm$1
+android.telephony.CellIdentityLte
+android.telephony.CellIdentityLte$1
+android.telephony.CellIdentityWcdma
+android.telephony.CellIdentityWcdma$1
+android.telephony.CellInfo
+android.telephony.CellInfo$1
+android.telephony.CellInfoCdma
+android.telephony.CellInfoGsm
+android.telephony.CellInfoGsm$1
+android.telephony.CellInfoLte
+android.telephony.CellInfoWcdma
+android.telephony.CellInfoWcdma$1
+android.telephony.CellLocation
+android.telephony.CellSignalStrength
+android.telephony.CellSignalStrengthCdma
+android.telephony.CellSignalStrengthGsm
+android.telephony.CellSignalStrengthGsm$1
+android.telephony.CellSignalStrengthLte
+android.telephony.CellSignalStrengthWcdma
+android.telephony.CellSignalStrengthWcdma$1
+android.telephony.DisconnectCause
+android.telephony.IccOpenLogicalChannelResponse
+android.telephony.ModemActivityInfo
+android.telephony.ModemActivityInfo$1
+android.telephony.PhoneNumberFormattingTextWatcher
+android.telephony.PhoneNumberUtils
+android.telephony.PhoneStateListener
+android.telephony.PhoneStateListener$1
+android.telephony.PhoneStateListener$IPhoneStateListenerStub
+android.telephony.PreciseCallState
+android.telephony.PreciseCallState$1
+android.telephony.PreciseDataConnectionState
+android.telephony.PreciseDataConnectionState$1
+android.telephony.RadioAccessFamily
+android.telephony.Rlog
+android.telephony.ServiceState
+android.telephony.ServiceState$1
+android.telephony.SignalStrength
+android.telephony.SignalStrength$1
+android.telephony.SmsManager
+android.telephony.SmsMessage
+android.telephony.SmsMessage$MessageClass
+android.telephony.SubscriptionInfo
+android.telephony.SubscriptionInfo$1
+android.telephony.SubscriptionManager
+android.telephony.SubscriptionManager$OnSubscriptionsChangedListener
+android.telephony.SubscriptionManager$OnSubscriptionsChangedListener$1
+android.telephony.SubscriptionManager$OnSubscriptionsChangedListener$2
+android.telephony.TelephonyManager
+android.telephony.TelephonyManager$MultiSimVariants
+android.telephony.VoLteServiceState
+android.telephony.VoLteServiceState$1
+android.telephony.gsm.GsmCellLocation
+android.telephony.gsm.SmsMessage
+android.text.AndroidBidi
+android.text.AndroidCharacter
+android.text.Annotation
+android.text.BidiFormatter
+android.text.BidiFormatter$DirectionalityEstimator
+android.text.BoringLayout
+android.text.BoringLayout$Metrics
+android.text.ClipboardManager
+android.text.DynamicLayout
+android.text.DynamicLayout$ChangeWatcher
+android.text.Editable
+android.text.Editable$Factory
+android.text.GetChars
+android.text.GraphicsOperations
+android.text.Html
+android.text.Html$HtmlParser
+android.text.Html$ImageGetter
+android.text.Html$TagHandler
+android.text.HtmlToSpannedConverter
+android.text.HtmlToSpannedConverter$Alignment
+android.text.HtmlToSpannedConverter$Background
+android.text.HtmlToSpannedConverter$Bold
+android.text.HtmlToSpannedConverter$Foreground
+android.text.HtmlToSpannedConverter$Href
+android.text.HtmlToSpannedConverter$Newline
+android.text.HtmlToSpannedConverter$Strikethrough
+android.text.Hyphenator
+android.text.InputFilter
+android.text.InputFilter$LengthFilter
+android.text.InputType
+android.text.Layout
+android.text.Layout$Alignment
+android.text.Layout$Directions
+android.text.Layout$Ellipsizer
+android.text.Layout$SpannedEllipsizer
+android.text.MeasuredText
+android.text.NoCopySpan
+android.text.NoCopySpan$Concrete
+android.text.PackedIntVector
+android.text.PackedObjectVector
+android.text.ParcelableSpan
+android.text.Selection
+android.text.Selection$END
+android.text.Selection$PositionIterator
+android.text.Selection$START
+android.text.SpanSet
+android.text.SpanWatcher
+android.text.Spannable
+android.text.Spannable$Factory
+android.text.SpannableString
+android.text.SpannableStringBuilder
+android.text.SpannableStringInternal
+android.text.Spanned
+android.text.SpannedString
+android.text.StaticLayout
+android.text.StaticLayout$Builder
+android.text.StaticLayout$LineBreaks
+android.text.TextDirectionHeuristic
+android.text.TextDirectionHeuristics
+android.text.TextDirectionHeuristics$AnyStrong
+android.text.TextDirectionHeuristics$FirstStrong
+android.text.TextDirectionHeuristics$TextDirectionAlgorithm
+android.text.TextDirectionHeuristics$TextDirectionHeuristicImpl
+android.text.TextDirectionHeuristics$TextDirectionHeuristicInternal
+android.text.TextDirectionHeuristics$TextDirectionHeuristicLocale
+android.text.TextLine
+android.text.TextPaint
+android.text.TextUtils
+android.text.TextUtils$1
+android.text.TextUtils$EllipsizeCallback
+android.text.TextUtils$SimpleStringSplitter
+android.text.TextUtils$StringSplitter
+android.text.TextUtils$TruncateAt
+android.text.TextWatcher
+android.text.format.DateFormat
+android.text.format.DateUtils
+android.text.format.Formatter
+android.text.format.Formatter$BytesResult
+android.text.format.Time
+android.text.format.Time$TimeCalculator
+android.text.format.TimeFormatter
+android.text.method.AllCapsTransformationMethod
+android.text.method.ArrowKeyMovementMethod
+android.text.method.BaseKeyListener
+android.text.method.BaseMovementMethod
+android.text.method.DialerKeyListener
+android.text.method.DigitsKeyListener
+android.text.method.KeyListener
+android.text.method.LinkMovementMethod
+android.text.method.MetaKeyKeyListener
+android.text.method.MovementMethod
+android.text.method.NumberKeyListener
+android.text.method.PasswordTransformationMethod
+android.text.method.PasswordTransformationMethod$PasswordCharSequence
+android.text.method.PasswordTransformationMethod$ViewReference
+android.text.method.PasswordTransformationMethod$Visible
+android.text.method.QwertyKeyListener
+android.text.method.QwertyKeyListener$Replaced
+android.text.method.ReplacementTransformationMethod
+android.text.method.ReplacementTransformationMethod$ReplacementCharSequence
+android.text.method.ReplacementTransformationMethod$SpannedReplacementCharSequence
+android.text.method.ScrollingMovementMethod
+android.text.method.SingleLineTransformationMethod
+android.text.method.TextKeyListener
+android.text.method.TextKeyListener$Capitalize
+android.text.method.TextKeyListener$SettingsObserver
+android.text.method.Touch
+android.text.method.Touch$DragState
+android.text.method.TransformationMethod
+android.text.method.TransformationMethod2
+android.text.method.WordIterator
+android.text.style.AbsoluteSizeSpan
+android.text.style.AlignmentSpan
+android.text.style.AlignmentSpan$Standard
+android.text.style.BackgroundColorSpan
+android.text.style.BulletSpan
+android.text.style.CharacterStyle
+android.text.style.CharacterStyle$Passthrough
+android.text.style.ClickableSpan
+android.text.style.DynamicDrawableSpan
+android.text.style.EasyEditSpan
+android.text.style.ForegroundColorSpan
+android.text.style.ImageSpan
+android.text.style.LeadingMarginSpan
+android.text.style.LeadingMarginSpan$LeadingMarginSpan2
+android.text.style.LeadingMarginSpan$Standard
+android.text.style.LineBackgroundSpan
+android.text.style.LineHeightSpan
+android.text.style.LineHeightSpan$WithDensity
+android.text.style.MetricAffectingSpan
+android.text.style.MetricAffectingSpan$Passthrough
+android.text.style.ParagraphStyle
+android.text.style.QuoteSpan
+android.text.style.RelativeSizeSpan
+android.text.style.ReplacementSpan
+android.text.style.SpellCheckSpan
+android.text.style.StrikethroughSpan
+android.text.style.StyleSpan
+android.text.style.SubscriptSpan
+android.text.style.SuggestionSpan
+android.text.style.SuggestionSpan$1
+android.text.style.SuperscriptSpan
+android.text.style.TabStopSpan
+android.text.style.TextAppearanceSpan
+android.text.style.TtsSpan
+android.text.style.TtsSpan$Builder
+android.text.style.TtsSpan$DigitsBuilder
+android.text.style.TtsSpan$SemioticClassBuilder
+android.text.style.TtsSpan$TelephoneBuilder
+android.text.style.TtsSpan$TextBuilder
+android.text.style.TtsSpan$VerbatimBuilder
+android.text.style.TypefaceSpan
+android.text.style.URLSpan
+android.text.style.UnderlineSpan
+android.text.style.UpdateAppearance
+android.text.style.UpdateLayout
+android.text.style.WrapTogetherSpan
+android.text.util.Linkify
+android.text.util.Linkify$1
+android.text.util.Linkify$2
+android.text.util.Linkify$3
+android.text.util.Linkify$4
+android.text.util.Linkify$MatchFilter
+android.text.util.Linkify$TransformFilter
+android.text.util.Rfc822Token
+android.text.util.Rfc822Tokenizer
+android.transition.ArcMotion
+android.transition.AutoTransition
+android.transition.ChangeBounds
+android.transition.ChangeBounds$1
+android.transition.ChangeBounds$2
+android.transition.ChangeBounds$3
+android.transition.ChangeBounds$4
+android.transition.ChangeBounds$5
+android.transition.ChangeBounds$6
+android.transition.ChangeBounds$7
+android.transition.ChangeBounds$9
+android.transition.ChangeBounds$ViewBounds
+android.transition.ChangeClipBounds
+android.transition.ChangeImageTransform
+android.transition.ChangeImageTransform$1
+android.transition.ChangeImageTransform$2
+android.transition.ChangeTransform
+android.transition.ChangeTransform$1
+android.transition.ChangeTransform$2
+android.transition.ChangeTransform$3
+android.transition.ChangeTransform$GhostListener
+android.transition.ChangeTransform$PathAnimatorMatrix
+android.transition.ChangeTransform$Transforms
+android.transition.CircularPropagation
+android.transition.Explode
+android.transition.Fade
+android.transition.Fade$1
+android.transition.Fade$FadeAnimatorListener
+android.transition.PathMotion
+android.transition.Scene
+android.transition.SidePropagation
+android.transition.Slide
+android.transition.Slide$1
+android.transition.Slide$2
+android.transition.Slide$3
+android.transition.Slide$4
+android.transition.Slide$5
+android.transition.Slide$6
+android.transition.Slide$CalculateSlide
+android.transition.Slide$CalculateSlideHorizontal
+android.transition.Slide$CalculateSlideVertical
+android.transition.Transition
+android.transition.Transition$1
+android.transition.Transition$2
+android.transition.Transition$3
+android.transition.Transition$AnimationInfo
+android.transition.Transition$ArrayListManager
+android.transition.Transition$EpicenterCallback
+android.transition.Transition$TransitionListener
+android.transition.Transition$TransitionListenerAdapter
+android.transition.TransitionInflater
+android.transition.TransitionManager
+android.transition.TransitionManager$MultiListener
+android.transition.TransitionManager$MultiListener$1
+android.transition.TransitionPropagation
+android.transition.TransitionSet
+android.transition.TransitionSet$TransitionSetListener
+android.transition.TransitionUtils
+android.transition.TransitionUtils$MatrixEvaluator
+android.transition.TransitionValues
+android.transition.TransitionValuesMaps
+android.transition.TranslationAnimationCreator
+android.transition.TranslationAnimationCreator$TransitionPositionListener
+android.transition.Visibility
+android.transition.Visibility$1
+android.transition.Visibility$DisappearListener
+android.transition.Visibility$VisibilityInfo
+android.transition.VisibilityPropagation
+android.util.AndroidException
+android.util.AndroidRuntimeException
+android.util.ArrayMap
+android.util.ArrayMap$1
+android.util.ArraySet
+android.util.ArraySet$1
+android.util.AtomicFile
+android.util.AttributeSet
+android.util.Base64
+android.util.Base64$Coder
+android.util.Base64$Decoder
+android.util.Base64$Encoder
+android.util.ContainerHelpers
+android.util.DebugUtils
+android.util.DisplayMetrics
+android.util.EventLog
+android.util.EventLog$Event
+android.util.FastImmutableArraySet
+android.util.FastImmutableArraySet$FastIterator
+android.util.FloatProperty
+android.util.IntArray
+android.util.IntProperty
+android.util.JsonReader
+android.util.JsonScope
+android.util.JsonToken
+android.util.JsonWriter
+android.util.KeyValueListParser
+android.util.LocalLog
+android.util.LocalLog$ReadOnlyLocalLog
+android.util.LocaleList
+android.util.LocaleList$1
+android.util.Log
+android.util.Log$1
+android.util.Log$ImmediateLogWriter
+android.util.Log$TerribleFailure
+android.util.Log$TerribleFailureHandler
+android.util.LogPrinter
+android.util.LongSparseArray
+android.util.LongSparseLongArray
+android.util.LruCache
+android.util.MapCollections
+android.util.MapCollections$ArrayIterator
+android.util.MapCollections$EntrySet
+android.util.MapCollections$KeySet
+android.util.MapCollections$MapIterator
+android.util.MapCollections$ValuesCollection
+android.util.MathUtils
+android.util.MutableBoolean
+android.util.MutableInt
+android.util.MutableLong
+android.util.NtpTrustedTime
+android.util.Pair
+android.util.PathParser
+android.util.PathParser$PathData
+android.util.Patterns
+android.util.Pools$Pool
+android.util.Pools$SimplePool
+android.util.Pools$SynchronizedPool
+android.util.PrintWriterPrinter
+android.util.Printer
+android.util.Property
+android.util.Range
+android.util.Rational
+android.util.Singleton
+android.util.Size
+android.util.SizeF
+android.util.Slog
+android.util.SparseArray
+android.util.SparseBooleanArray
+android.util.SparseIntArray
+android.util.SparseLongArray
+android.util.Spline
+android.util.Spline$MonotoneCubicSpline
+android.util.StateSet
+android.util.StringBuilderPrinter
+android.util.SuperNotCalledException
+android.util.TimeFormatException
+android.util.TimeUtils
+android.util.TimedRemoteCaller
+android.util.TimingLogger
+android.util.TrustedTime
+android.util.TypedValue
+android.util.Xml
+android.util.Xml$Encoding
+android.util.Xml$XmlSerializerFactory
+android.util.apk.ApkSignatureSchemeV2Verifier
+android.util.apk.ApkSignatureSchemeV2Verifier$ByteBufferDataSource
+android.util.apk.ApkSignatureSchemeV2Verifier$DataSource
+android.util.apk.ApkSignatureSchemeV2Verifier$MemoryMappedFileDataSource
+android.util.apk.ApkSignatureSchemeV2Verifier$SignatureInfo
+android.util.apk.ApkSignatureSchemeV2Verifier$SignatureNotFoundException
+android.util.apk.ApkSignatureSchemeV2Verifier$VerbatimX509Certificate
+android.util.apk.ApkSignatureSchemeV2Verifier$WrappedX509Certificate
+android.util.apk.ZipUtils
+android.util.jar.StrictJarFile
+android.util.jar.StrictJarFile$EntryIterator
+android.util.jar.StrictJarFile$JarFileInputStream
+android.util.jar.StrictJarFile$RAFStream
+android.util.jar.StrictJarFile$ZipInflaterInputStream
+android.util.jar.StrictJarManifest
+android.util.jar.StrictJarManifest$Chunk
+android.util.jar.StrictJarManifestReader
+android.util.jar.StrictJarVerifier
+android.util.jar.StrictJarVerifier$VerifierEntry
+android.view.AbsSavedState
+android.view.AbsSavedState$1
+android.view.AbsSavedState$2
+android.view.ActionMode
+android.view.ActionMode$Callback
+android.view.ActionMode$Callback2
+android.view.ActionProvider
+android.view.ActionProvider$SubUiVisibilityListener
+android.view.AppTransitionAnimationSpec
+android.view.AppTransitionAnimationSpec$1
+android.view.Choreographer
+android.view.Choreographer$1
+android.view.Choreographer$2
+android.view.Choreographer$CallbackQueue
+android.view.Choreographer$CallbackRecord
+android.view.Choreographer$FrameCallback
+android.view.Choreographer$FrameDisplayEventReceiver
+android.view.Choreographer$FrameHandler
+android.view.CollapsibleActionView
+android.view.ContextMenu
+android.view.ContextMenu$ContextMenuInfo
+android.view.ContextThemeWrapper
+android.view.Display
+android.view.Display$ColorTransform
+android.view.Display$ColorTransform$1
+android.view.Display$Mode
+android.view.Display$Mode$1
+android.view.DisplayAdjustments
+android.view.DisplayEventReceiver
+android.view.DisplayInfo
+android.view.DisplayInfo$1
+android.view.DisplayListCanvas
+android.view.DragEvent
+android.view.FallbackEventHandler
+android.view.FocusFinder
+android.view.FocusFinder$1
+android.view.FocusFinder$SequentialFocusComparator
+android.view.FrameInfo
+android.view.FrameMetrics
+android.view.FrameMetricsObserver
+android.view.FrameStats
+android.view.GestureDetector
+android.view.GestureDetector$GestureHandler
+android.view.GestureDetector$OnContextClickListener
+android.view.GestureDetector$OnDoubleTapListener
+android.view.GestureDetector$OnGestureListener
+android.view.GestureDetector$SimpleOnGestureListener
+android.view.GhostView
+android.view.GraphicBuffer
+android.view.GraphicBuffer$1
+android.view.Gravity
+android.view.HandlerActionQueue
+android.view.HandlerActionQueue$HandlerAction
+android.view.HardwareLayer
+android.view.IAppTransitionAnimationSpecsFuture
+android.view.IAppTransitionAnimationSpecsFuture$Stub
+android.view.IApplicationToken
+android.view.IApplicationToken$Stub
+android.view.IAssetAtlas
+android.view.IAssetAtlas$Stub
+android.view.IAssetAtlas$Stub$Proxy
+android.view.IDockedStackListener
+android.view.IDockedStackListener$Stub
+android.view.IDockedStackListener$Stub$Proxy
+android.view.IGraphicsStats
+android.view.IGraphicsStats$Stub
+android.view.IGraphicsStats$Stub$Proxy
+android.view.IInputFilter
+android.view.IOnKeyguardExitResult
+android.view.IRotationWatcher
+android.view.IRotationWatcher$Stub
+android.view.IWindow
+android.view.IWindow$Stub
+android.view.IWindow$Stub$Proxy
+android.view.IWindowFocusObserver
+android.view.IWindowId
+android.view.IWindowId$Stub
+android.view.IWindowId$Stub$Proxy
+android.view.IWindowManager
+android.view.IWindowManager$Stub
+android.view.IWindowManager$Stub$Proxy
+android.view.IWindowSession
+android.view.IWindowSession$Stub
+android.view.IWindowSession$Stub$Proxy
+android.view.IWindowSessionCallback
+android.view.IWindowSessionCallback$Stub
+android.view.IWindowSessionCallback$Stub$Proxy
+android.view.InflateException
+android.view.InputChannel
+android.view.InputChannel$1
+android.view.InputDevice
+android.view.InputDevice$1
+android.view.InputDevice$MotionRange
+android.view.InputEvent
+android.view.InputEvent$1
+android.view.InputEventConsistencyVerifier
+android.view.InputEventReceiver
+android.view.InputEventReceiver$Factory
+android.view.InputEventSender
+android.view.InputQueue
+android.view.InputQueue$Callback
+android.view.InputQueue$FinishedInputEventCallback
+android.view.KeyCharacterMap
+android.view.KeyCharacterMap$1
+android.view.KeyCharacterMap$FallbackAction
+android.view.KeyCharacterMap$KeyData
+android.view.KeyEvent
+android.view.KeyEvent$1
+android.view.KeyEvent$Callback
+android.view.KeyEvent$DispatcherState
+android.view.KeyboardShortcutGroup
+android.view.KeyboardShortcutInfo
+android.view.LayoutInflater
+android.view.LayoutInflater$Factory
+android.view.LayoutInflater$Factory2
+android.view.LayoutInflater$FactoryMerger
+android.view.LayoutInflater$Filter
+android.view.MagnificationSpec
+android.view.Menu
+android.view.MenuInflater
+android.view.MenuInflater$MenuState
+android.view.MenuItem
+android.view.MenuItem$OnActionExpandListener
+android.view.MenuItem$OnMenuItemClickListener
+android.view.MotionEvent
+android.view.MotionEvent$1
+android.view.MotionEvent$PointerCoords
+android.view.MotionEvent$PointerProperties
+android.view.NotificationHeaderView
+android.view.NotificationHeaderView$HeaderTouchListener
+android.view.OrientationEventListener
+android.view.OrientationEventListener$SensorEventListenerImpl
+android.view.PointerIcon
+android.view.PointerIcon$1
+android.view.RemotableViewMethod
+android.view.RenderNode
+android.view.RenderNodeAnimator
+android.view.RenderNodeAnimator$1
+android.view.RenderNodeAnimator$DelayedAnimationHelper
+android.view.ScaleGestureDetector
+android.view.ScaleGestureDetector$1
+android.view.ScaleGestureDetector$OnScaleGestureListener
+android.view.ScaleGestureDetector$SimpleOnScaleGestureListener
+android.view.SearchEvent
+android.view.SoundEffectConstants
+android.view.SubMenu
+android.view.Surface
+android.view.Surface$1
+android.view.Surface$CompatibleCanvas
+android.view.Surface$OutOfResourcesException
+android.view.SurfaceControl
+android.view.SurfaceControl$PhysicalDisplayInfo
+android.view.SurfaceHolder
+android.view.SurfaceHolder$Callback
+android.view.SurfaceHolder$Callback2
+android.view.SurfaceSession
+android.view.SurfaceView
+android.view.SurfaceView$1
+android.view.SurfaceView$2
+android.view.SurfaceView$3
+android.view.SurfaceView$4
+android.view.SurfaceView$MyWindow
+android.view.TextureView
+android.view.TextureView$1
+android.view.TextureView$SurfaceTextureListener
+android.view.ThreadedRenderer
+android.view.ThreadedRenderer$HardwareDrawCallbacks
+android.view.ThreadedRenderer$ProcessInitializer
+android.view.TouchDelegate
+android.view.VelocityTracker
+android.view.VelocityTracker$Estimator
+android.view.View
+android.view.View$1
+android.view.View$10
+android.view.View$11
+android.view.View$12
+android.view.View$2
+android.view.View$3
+android.view.View$4
+android.view.View$5
+android.view.View$6
+android.view.View$7
+android.view.View$8
+android.view.View$9
+android.view.View$AccessibilityDelegate
+android.view.View$AttachInfo
+android.view.View$AttachInfo$Callbacks
+android.view.View$BaseSavedState
+android.view.View$BaseSavedState$1
+android.view.View$CheckForLongPress
+android.view.View$CheckForTap
+android.view.View$DeclaredOnClickListener
+android.view.View$DragShadowBuilder
+android.view.View$ForegroundInfo
+android.view.View$ListenerInfo
+android.view.View$MatchIdPredicate
+android.view.View$MeasureSpec
+android.view.View$OnApplyWindowInsetsListener
+android.view.View$OnAttachStateChangeListener
+android.view.View$OnClickListener
+android.view.View$OnCreateContextMenuListener
+android.view.View$OnDragListener
+android.view.View$OnFocusChangeListener
+android.view.View$OnGenericMotionListener
+android.view.View$OnHoverListener
+android.view.View$OnKeyListener
+android.view.View$OnLayoutChangeListener
+android.view.View$OnLongClickListener
+android.view.View$OnSystemUiVisibilityChangeListener
+android.view.View$OnTouchListener
+android.view.View$PerformClick
+android.view.View$ScrollabilityCache
+android.view.View$TintInfo
+android.view.View$TransformationInfo
+android.view.View$UnsetPressedState
+android.view.ViewAnimationUtils
+android.view.ViewConfiguration
+android.view.ViewDebug$HierarchyHandler
+android.view.ViewGroup
+android.view.ViewGroup$1
+android.view.ViewGroup$2
+android.view.ViewGroup$3
+android.view.ViewGroup$LayoutParams
+android.view.ViewGroup$MarginLayoutParams
+android.view.ViewGroup$OnHierarchyChangeListener
+android.view.ViewGroup$TouchTarget
+android.view.ViewGroupOverlay
+android.view.ViewHierarchyEncoder
+android.view.ViewManager
+android.view.ViewOutlineProvider
+android.view.ViewOutlineProvider$1
+android.view.ViewOutlineProvider$2
+android.view.ViewOutlineProvider$3
+android.view.ViewOverlay
+android.view.ViewOverlay$OverlayViewGroup
+android.view.ViewParent
+android.view.ViewPropertyAnimator
+android.view.ViewPropertyAnimator$1
+android.view.ViewPropertyAnimator$2
+android.view.ViewPropertyAnimator$3
+android.view.ViewPropertyAnimator$AnimatorEventListener
+android.view.ViewPropertyAnimator$NameValuesHolder
+android.view.ViewPropertyAnimator$PropertyBundle
+android.view.ViewRootImpl
+android.view.ViewRootImpl$1
+android.view.ViewRootImpl$2
+android.view.ViewRootImpl$4
+android.view.ViewRootImpl$AccessibilityInteractionConnectionManager
+android.view.ViewRootImpl$AsyncInputStage
+android.view.ViewRootImpl$ConsumeBatchedInputImmediatelyRunnable
+android.view.ViewRootImpl$ConsumeBatchedInputRunnable
+android.view.ViewRootImpl$EarlyPostImeInputStage
+android.view.ViewRootImpl$HighContrastTextManager
+android.view.ViewRootImpl$ImeInputStage
+android.view.ViewRootImpl$InputStage
+android.view.ViewRootImpl$InvalidateOnAnimationRunnable
+android.view.ViewRootImpl$NativePostImeInputStage
+android.view.ViewRootImpl$NativePreImeInputStage
+android.view.ViewRootImpl$QueuedInputEvent
+android.view.ViewRootImpl$SyntheticInputStage
+android.view.ViewRootImpl$SyntheticJoystickHandler
+android.view.ViewRootImpl$SyntheticKeyboardHandler
+android.view.ViewRootImpl$SyntheticTouchNavigationHandler
+android.view.ViewRootImpl$SyntheticTouchNavigationHandler$1
+android.view.ViewRootImpl$SyntheticTrackballHandler
+android.view.ViewRootImpl$SystemUiVisibilityInfo
+android.view.ViewRootImpl$TrackballAxis
+android.view.ViewRootImpl$TraversalRunnable
+android.view.ViewRootImpl$ViewPostImeInputStage
+android.view.ViewRootImpl$ViewPreImeInputStage
+android.view.ViewRootImpl$ViewRootHandler
+android.view.ViewRootImpl$W
+android.view.ViewRootImpl$WindowInputEventReceiver
+android.view.ViewStructure
+android.view.ViewStub
+android.view.ViewStub$OnInflateListener
+android.view.ViewTreeObserver
+android.view.ViewTreeObserver$CopyOnWriteArray
+android.view.ViewTreeObserver$CopyOnWriteArray$Access
+android.view.ViewTreeObserver$InternalInsetsInfo
+android.view.ViewTreeObserver$OnComputeInternalInsetsListener
+android.view.ViewTreeObserver$OnDrawListener
+android.view.ViewTreeObserver$OnGlobalFocusChangeListener
+android.view.ViewTreeObserver$OnGlobalLayoutListener
+android.view.ViewTreeObserver$OnPreDrawListener
+android.view.ViewTreeObserver$OnScrollChangedListener
+android.view.ViewTreeObserver$OnTouchModeChangeListener
+android.view.Window
+android.view.Window$Callback
+android.view.Window$OnWindowDismissedCallback
+android.view.Window$WindowControllerCallback
+android.view.WindowAnimationFrameStats
+android.view.WindowAnimationFrameStats$1
+android.view.WindowCallbackWrapper
+android.view.WindowCallbacks
+android.view.WindowContentFrameStats
+android.view.WindowContentFrameStats$1
+android.view.WindowId
+android.view.WindowId$1
+android.view.WindowInsets
+android.view.WindowLeaked
+android.view.WindowManager
+android.view.WindowManager$BadTokenException
+android.view.WindowManager$InvalidDisplayException
+android.view.WindowManager$KeyboardShortcutsReceiver
+android.view.WindowManager$LayoutParams
+android.view.WindowManager$LayoutParams$1
+android.view.WindowManagerGlobal
+android.view.WindowManagerGlobal$1
+android.view.WindowManagerGlobal$2
+android.view.WindowManagerImpl
+android.view.WindowManagerInternal
+android.view.WindowManagerInternal$AppTransitionListener
+android.view.WindowManagerInternal$MagnificationCallbacks
+android.view.WindowManagerInternal$OnHardKeyboardStatusChangeListener
+android.view.WindowManagerInternal$WindowsForAccessibilityCallback
+android.view.WindowManagerPolicy
+android.view.WindowManagerPolicy$InputConsumer
+android.view.WindowManagerPolicy$OnKeyguardExitResult
+android.view.WindowManagerPolicy$PointerEventListener
+android.view.WindowManagerPolicy$ScreenOnListener
+android.view.WindowManagerPolicy$WindowManagerFuncs
+android.view.WindowManagerPolicy$WindowState
+android.view.accessibility.AccessibilityEvent
+android.view.accessibility.AccessibilityEvent$1
+android.view.accessibility.AccessibilityEventSource
+android.view.accessibility.AccessibilityManager
+android.view.accessibility.AccessibilityManager$1
+android.view.accessibility.AccessibilityManager$AccessibilityStateChangeListener
+android.view.accessibility.AccessibilityManager$HighTextContrastChangeListener
+android.view.accessibility.AccessibilityManager$MyHandler
+android.view.accessibility.AccessibilityManager$TouchExplorationStateChangeListener
+android.view.accessibility.AccessibilityNodeInfo
+android.view.accessibility.AccessibilityNodeInfo$AccessibilityAction
+android.view.accessibility.AccessibilityNodeInfo$CollectionInfo
+android.view.accessibility.AccessibilityNodeProvider
+android.view.accessibility.AccessibilityRecord
+android.view.accessibility.CaptioningManager
+android.view.accessibility.CaptioningManager$1
+android.view.accessibility.CaptioningManager$CaptionStyle
+android.view.accessibility.CaptioningManager$CaptioningChangeListener
+android.view.accessibility.CaptioningManager$MyContentObserver
+android.view.accessibility.IAccessibilityInteractionConnection
+android.view.accessibility.IAccessibilityManager
+android.view.accessibility.IAccessibilityManager$Stub
+android.view.accessibility.IAccessibilityManager$Stub$Proxy
+android.view.accessibility.IAccessibilityManagerClient
+android.view.accessibility.IAccessibilityManagerClient$Stub
+android.view.accessibility.IAccessibilityManagerClient$Stub$Proxy
+android.view.animation.AccelerateDecelerateInterpolator
+android.view.animation.AccelerateInterpolator
+android.view.animation.AlphaAnimation
+android.view.animation.Animation
+android.view.animation.Animation$1
+android.view.animation.Animation$2
+android.view.animation.Animation$3
+android.view.animation.Animation$AnimationListener
+android.view.animation.Animation$Description
+android.view.animation.AnimationSet
+android.view.animation.AnimationUtils
+android.view.animation.BaseInterpolator
+android.view.animation.ClipRectAnimation
+android.view.animation.DecelerateInterpolator
+android.view.animation.GridLayoutAnimationController$AnimationParameters
+android.view.animation.Interpolator
+android.view.animation.LayoutAnimationController
+android.view.animation.LayoutAnimationController$AnimationParameters
+android.view.animation.LinearInterpolator
+android.view.animation.OvershootInterpolator
+android.view.animation.PathInterpolator
+android.view.animation.RotateAnimation
+android.view.animation.ScaleAnimation
+android.view.animation.Transformation
+android.view.animation.TranslateAnimation
+android.view.inputmethod.BaseInputConnection
+android.view.inputmethod.CompletionInfo
+android.view.inputmethod.CompletionInfo$1
+android.view.inputmethod.ComposingText
+android.view.inputmethod.CorrectionInfo
+android.view.inputmethod.CursorAnchorInfo
+android.view.inputmethod.CursorAnchorInfo$1
+android.view.inputmethod.CursorAnchorInfo$Builder
+android.view.inputmethod.EditorInfo
+android.view.inputmethod.EditorInfo$1
+android.view.inputmethod.ExtractedText
+android.view.inputmethod.ExtractedText$1
+android.view.inputmethod.ExtractedTextRequest
+android.view.inputmethod.ExtractedTextRequest$1
+android.view.inputmethod.InputBinding
+android.view.inputmethod.InputBinding$1
+android.view.inputmethod.InputConnection
+android.view.inputmethod.InputConnectionInspector
+android.view.inputmethod.InputConnectionWrapper
+android.view.inputmethod.InputMethod
+android.view.inputmethod.InputMethod$SessionCallback
+android.view.inputmethod.InputMethodInfo
+android.view.inputmethod.InputMethodInfo$1
+android.view.inputmethod.InputMethodManager
+android.view.inputmethod.InputMethodManager$1
+android.view.inputmethod.InputMethodManager$ControlledInputConnectionWrapper
+android.view.inputmethod.InputMethodManager$FinishedInputEventCallback
+android.view.inputmethod.InputMethodManager$H
+android.view.inputmethod.InputMethodManager$ImeInputEventSender
+android.view.inputmethod.InputMethodManager$PendingEvent
+android.view.inputmethod.InputMethodManagerInternal
+android.view.inputmethod.InputMethodSession
+android.view.inputmethod.InputMethodSession$EventCallback
+android.view.inputmethod.InputMethodSubtype
+android.view.inputmethod.InputMethodSubtype$1
+android.view.inputmethod.InputMethodSubtype$InputMethodSubtypeBuilder
+android.view.inputmethod.InputMethodSubtypeArray
+android.view.inputmethod.SparseRectFArray
+android.view.inputmethod.SparseRectFArray$1
+android.view.inputmethod.SparseRectFArray$SparseRectFArrayBuilder
+android.view.textservice.SentenceSuggestionsInfo
+android.view.textservice.SentenceSuggestionsInfo$1
+android.view.textservice.SpellCheckerInfo
+android.view.textservice.SpellCheckerInfo$1
+android.view.textservice.SpellCheckerSession
+android.view.textservice.SpellCheckerSession$1
+android.view.textservice.SpellCheckerSession$InternalListener
+android.view.textservice.SpellCheckerSession$SpellCheckerSessionListener
+android.view.textservice.SpellCheckerSession$SpellCheckerSessionListenerImpl
+android.view.textservice.SpellCheckerSession$SpellCheckerSessionListenerImpl$SpellCheckerParams
+android.view.textservice.SpellCheckerSubtype
+android.view.textservice.SpellCheckerSubtype$1
+android.view.textservice.SuggestionsInfo
+android.view.textservice.SuggestionsInfo$1
+android.view.textservice.TextInfo
+android.view.textservice.TextInfo$1
+android.view.textservice.TextServicesManager
+android.webkit.ClientCertRequest
+android.webkit.ConsoleMessage
+android.webkit.ConsoleMessage$MessageLevel
+android.webkit.CookieManager
+android.webkit.CookieSyncManager
+android.webkit.DownloadListener
+android.webkit.FindActionModeCallback
+android.webkit.GeolocationPermissions
+android.webkit.GeolocationPermissions$Callback
+android.webkit.HttpAuthHandler
+android.webkit.IWebViewUpdateService
+android.webkit.IWebViewUpdateService$Stub
+android.webkit.IWebViewUpdateService$Stub$Proxy
+android.webkit.JavascriptInterface
+android.webkit.JsDialogHelper
+android.webkit.JsPromptResult
+android.webkit.JsResult
+android.webkit.JsResult$ResultReceiver
+android.webkit.MimeTypeMap
+android.webkit.PermissionRequest
+android.webkit.ServiceWorkerController
+android.webkit.SslErrorHandler
+android.webkit.TokenBindingService
+android.webkit.URLUtil
+android.webkit.ValueCallback
+android.webkit.WebBackForwardList
+android.webkit.WebChromeClient
+android.webkit.WebChromeClient$CustomViewCallback
+android.webkit.WebChromeClient$FileChooserParams
+android.webkit.WebHistoryItem
+android.webkit.WebIconDatabase
+android.webkit.WebMessage
+android.webkit.WebMessagePort
+android.webkit.WebResourceError
+android.webkit.WebResourceRequest
+android.webkit.WebResourceResponse
+android.webkit.WebSettings
+android.webkit.WebSettings$LayoutAlgorithm
+android.webkit.WebSettings$PluginState
+android.webkit.WebSettings$RenderPriority
+android.webkit.WebSettings$ZoomDensity
+android.webkit.WebStorage
+android.webkit.WebStorage$QuotaUpdater
+android.webkit.WebSyncManager
+android.webkit.WebView
+android.webkit.WebView$FindListener
+android.webkit.WebView$HitTestResult
+android.webkit.WebView$PictureListener
+android.webkit.WebView$PrivateAccess
+android.webkit.WebView$VisualStateCallback
+android.webkit.WebView$WebViewTransport
+android.webkit.WebViewClient
+android.webkit.WebViewDatabase
+android.webkit.WebViewDelegate
+android.webkit.WebViewDelegate$1
+android.webkit.WebViewDelegate$OnTraceEnabledChangeListener
+android.webkit.WebViewFactory
+android.webkit.WebViewFactory$1
+android.webkit.WebViewFactory$MissingWebViewPackageException
+android.webkit.WebViewFactory$RelroFileCreator
+android.webkit.WebViewFactoryProvider
+android.webkit.WebViewFactoryProvider$Statics
+android.webkit.WebViewProvider
+android.webkit.WebViewProvider$ScrollDelegate
+android.webkit.WebViewProvider$ViewDelegate
+android.webkit.WebViewProviderInfo
+android.webkit.WebViewProviderInfo$1
+android.webkit.WebViewProviderResponse
+android.webkit.WebViewProviderResponse$1
+android.widget.AbsListView
+android.widget.AbsListView$3
+android.widget.AbsListView$4
+android.widget.AbsListView$AbsPositionScroller
+android.widget.AbsListView$AdapterDataSetObserver
+android.widget.AbsListView$CheckForLongPress
+android.widget.AbsListView$CheckForTap
+android.widget.AbsListView$FlingRunnable
+android.widget.AbsListView$FlingRunnable$1
+android.widget.AbsListView$InputConnectionWrapper
+android.widget.AbsListView$LayoutParams
+android.widget.AbsListView$MultiChoiceModeListener
+android.widget.AbsListView$MultiChoiceModeWrapper
+android.widget.AbsListView$OnScrollListener
+android.widget.AbsListView$PerformClick
+android.widget.AbsListView$PositionScroller
+android.widget.AbsListView$PositionScroller$3
+android.widget.AbsListView$RecycleBin
+android.widget.AbsListView$RecyclerListener
+android.widget.AbsListView$SavedState
+android.widget.AbsListView$SavedState$1
+android.widget.AbsListView$SelectionBoundsAdjuster
+android.widget.AbsListView$WindowRunnnable
+android.widget.AbsSeekBar
+android.widget.AbsSpinner
+android.widget.AbsSpinner$RecycleBin
+android.widget.AbsSpinner$SavedState
+android.widget.AbsSpinner$SavedState$1
+android.widget.AbsoluteLayout
+android.widget.AbsoluteLayout$LayoutParams
+android.widget.ActionMenuPresenter
+android.widget.ActionMenuPresenter$1
+android.widget.ActionMenuPresenter$2
+android.widget.ActionMenuPresenter$ActionMenuPopupCallback
+android.widget.ActionMenuPresenter$OverflowMenuButton
+android.widget.ActionMenuPresenter$OverflowMenuButton$1
+android.widget.ActionMenuPresenter$PopupPresenterCallback
+android.widget.ActionMenuPresenter$SavedState
+android.widget.ActionMenuPresenter$SavedState$1
+android.widget.ActionMenuView
+android.widget.ActionMenuView$ActionMenuChildView
+android.widget.ActionMenuView$ActionMenuPresenterCallback
+android.widget.ActionMenuView$LayoutParams
+android.widget.ActionMenuView$MenuBuilderCallback
+android.widget.ActionMenuView$OnMenuItemClickListener
+android.widget.Adapter
+android.widget.AdapterView
+android.widget.AdapterView$AdapterContextMenuInfo
+android.widget.AdapterView$AdapterDataSetObserver
+android.widget.AdapterView$OnItemClickListener
+android.widget.AdapterView$OnItemLongClickListener
+android.widget.AdapterView$OnItemSelectedListener
+android.widget.AdapterView$SelectionNotifier
+android.widget.Advanceable
+android.widget.ArrayAdapter
+android.widget.AutoCompleteTextView
+android.widget.AutoCompleteTextView$DropDownItemClickListener
+android.widget.AutoCompleteTextView$MyWatcher
+android.widget.AutoCompleteTextView$PassThroughClickListener
+android.widget.AutoCompleteTextView$PopupDataSetObserver
+android.widget.AutoCompleteTextView$PopupDataSetObserver$1
+android.widget.AutoCompleteTextView$Validator
+android.widget.BaseAdapter
+android.widget.Button
+android.widget.CheckBox
+android.widget.Checkable
+android.widget.CheckedTextView
+android.widget.Chronometer
+android.widget.Chronometer$1
+android.widget.CompoundButton
+android.widget.CompoundButton$OnCheckedChangeListener
+android.widget.CompoundButton$SavedState
+android.widget.CompoundButton$SavedState$1
+android.widget.CursorAdapter
+android.widget.CursorFilter$CursorFilterClient
+android.widget.DatePicker
+android.widget.DatePicker$OnDateChangedListener
+android.widget.DateTimeView
+android.widget.DateTimeView$ReceiverInfo
+android.widget.DateTimeView$ReceiverInfo$1
+android.widget.DateTimeView$ReceiverInfo$2
+android.widget.DropDownListView
+android.widget.EdgeEffect
+android.widget.EditText
+android.widget.Editor
+android.widget.Editor$1
+android.widget.Editor$2
+android.widget.Editor$Blink
+android.widget.Editor$CursorAnchorInfoNotifier
+android.widget.Editor$CursorController
+android.widget.Editor$EditOperation
+android.widget.Editor$EditOperation$1
+android.widget.Editor$HandleView
+android.widget.Editor$InputContentType
+android.widget.Editor$InputMethodState
+android.widget.Editor$InsertionHandleView
+android.widget.Editor$InsertionHandleView$2
+android.widget.Editor$InsertionPointCursorController
+android.widget.Editor$PositionListener
+android.widget.Editor$ProcessTextIntentActionsHandler
+android.widget.Editor$SelectionModifierCursorController
+android.widget.Editor$SpanController
+android.widget.Editor$SuggestionHelper
+android.widget.Editor$SuggestionHelper$SuggestionSpanComparator
+android.widget.Editor$TextRenderNode
+android.widget.Editor$TextViewPositionListener
+android.widget.Editor$UndoInputFilter
+android.widget.ExpandableListConnector
+android.widget.ExpandableListView
+android.widget.FastScroller
+android.widget.FastScroller$1
+android.widget.FastScroller$2
+android.widget.FastScroller$3
+android.widget.FastScroller$4
+android.widget.FastScroller$5
+android.widget.FastScroller$6
+android.widget.Filter
+android.widget.Filter$FilterListener
+android.widget.Filter$FilterResults
+android.widget.Filter$RequestArguments
+android.widget.Filter$RequestHandler
+android.widget.Filter$ResultsHandler
+android.widget.FilterQueryProvider
+android.widget.Filterable
+android.widget.ForwardingListener
+android.widget.ForwardingListener$DisallowIntercept
+android.widget.ForwardingListener$TriggerLongPress
+android.widget.FrameLayout
+android.widget.FrameLayout$LayoutParams
+android.widget.GridLayout
+android.widget.GridLayout$1
+android.widget.GridLayout$2
+android.widget.GridLayout$3
+android.widget.GridLayout$4
+android.widget.GridLayout$5
+android.widget.GridLayout$6
+android.widget.GridLayout$6$1
+android.widget.GridLayout$7
+android.widget.GridLayout$8
+android.widget.GridLayout$Alignment
+android.widget.GridLayout$Arc
+android.widget.GridLayout$Assoc
+android.widget.GridLayout$Axis
+android.widget.GridLayout$Axis$1
+android.widget.GridLayout$Bounds
+android.widget.GridLayout$Interval
+android.widget.GridLayout$LayoutParams
+android.widget.GridLayout$MutableInt
+android.widget.GridLayout$PackedMap
+android.widget.GridLayout$Spec
+android.widget.GridView
+android.widget.HeaderViewListAdapter
+android.widget.HorizontalScrollView
+android.widget.HorizontalScrollView$SavedState
+android.widget.HorizontalScrollView$SavedState$1
+android.widget.ImageButton
+android.widget.ImageView
+android.widget.ImageView$ScaleType
+android.widget.LinearLayout
+android.widget.LinearLayout$LayoutParams
+android.widget.ListAdapter
+android.widget.ListPopupWindow
+android.widget.ListPopupWindow$2
+android.widget.ListPopupWindow$3
+android.widget.ListPopupWindow$ListSelectorHider
+android.widget.ListPopupWindow$PopupDataSetObserver
+android.widget.ListPopupWindow$PopupScrollListener
+android.widget.ListPopupWindow$PopupTouchInterceptor
+android.widget.ListPopupWindow$ResizePopupRunnable
+android.widget.ListView
+android.widget.ListView$ArrowScrollFocusResult
+android.widget.ListView$FixedViewInfo
+android.widget.MediaController
+android.widget.MediaController$1
+android.widget.MediaController$2
+android.widget.MediaController$3
+android.widget.MediaController$4
+android.widget.MediaController$5
+android.widget.MediaController$6
+android.widget.MediaController$7
+android.widget.MediaController$8
+android.widget.MediaController$MediaPlayerControl
+android.widget.MultiAutoCompleteTextView
+android.widget.MultiAutoCompleteTextView$Tokenizer
+android.widget.NumberPicker
+android.widget.NumberPicker$Formatter
+android.widget.NumberPicker$OnValueChangeListener
+android.widget.OverScroller
+android.widget.OverScroller$SplineOverScroller
+android.widget.PopupMenu
+android.widget.PopupMenu$1
+android.widget.PopupMenu$2
+android.widget.PopupMenu$3
+android.widget.PopupMenu$OnDismissListener
+android.widget.PopupMenu$OnMenuItemClickListener
+android.widget.PopupWindow
+android.widget.PopupWindow$1
+android.widget.PopupWindow$2
+android.widget.PopupWindow$3
+android.widget.PopupWindow$4
+android.widget.PopupWindow$OnDismissListener
+android.widget.PopupWindow$PopupBackgroundView
+android.widget.PopupWindow$PopupDecorView
+android.widget.PopupWindow$PopupDecorView$1
+android.widget.PopupWindow$PopupDecorView$2
+android.widget.PopupWindow$PopupDecorView$2$1
+android.widget.PopupWindow$PopupDecorView$3
+android.widget.ProgressBar
+android.widget.ProgressBar$1
+android.widget.ProgressBar$ProgressTintInfo
+android.widget.ProgressBar$RefreshData
+android.widget.ProgressBar$RefreshProgressRunnable
+android.widget.ProgressBar$SavedState
+android.widget.ProgressBar$SavedState$1
+android.widget.QuickContactBadge
+android.widget.QuickContactBadge$QueryHandler
+android.widget.RadioButton
+android.widget.RadioGroup
+android.widget.RadioGroup$CheckedStateTracker
+android.widget.RadioGroup$LayoutParams
+android.widget.RadioGroup$OnCheckedChangeListener
+android.widget.RadioGroup$PassThroughHierarchyChangeListener
+android.widget.RatingBar
+android.widget.RelativeLayout
+android.widget.RelativeLayout$DependencyGraph
+android.widget.RelativeLayout$DependencyGraph$Node
+android.widget.RelativeLayout$LayoutParams
+android.widget.RemoteViews
+android.widget.RemoteViews$1
+android.widget.RemoteViews$2
+android.widget.RemoteViews$3
+android.widget.RemoteViews$4
+android.widget.RemoteViews$Action
+android.widget.RemoteViews$ActionException
+android.widget.RemoteViews$BitmapCache
+android.widget.RemoteViews$LayoutParamAction
+android.widget.RemoteViews$MemoryUsageCounter
+android.widget.RemoteViews$MutablePair
+android.widget.RemoteViews$OnClickHandler
+android.widget.RemoteViews$ReflectionAction
+android.widget.RemoteViews$RemoteView
+android.widget.RemoteViews$RuntimeAction
+android.widget.RemoteViews$SetDrawableParameters
+android.widget.RemoteViews$SetOnClickPendingIntent
+android.widget.RemoteViews$SetOnClickPendingIntent$1
+android.widget.RemoteViews$ViewGroupAction
+android.widget.RemoteViews$ViewPaddingAction
+android.widget.RemoteViewsAdapter$RemoteAdapterConnectionCallback
+android.widget.RemoteViewsService
+android.widget.RemoteViewsService$RemoteViewsFactory
+android.widget.ResourceCursorAdapter
+android.widget.RtlSpacingHelper
+android.widget.ScrollBarDrawable
+android.widget.ScrollView
+android.widget.ScrollView$SavedState
+android.widget.ScrollView$SavedState$1
+android.widget.Scroller
+android.widget.Scroller$ViscousFluidInterpolator
+android.widget.SearchView
+android.widget.SearchView$1
+android.widget.SearchView$10
+android.widget.SearchView$11
+android.widget.SearchView$2
+android.widget.SearchView$3
+android.widget.SearchView$4
+android.widget.SearchView$5
+android.widget.SearchView$6
+android.widget.SearchView$7
+android.widget.SearchView$8
+android.widget.SearchView$9
+android.widget.SearchView$OnCloseListener
+android.widget.SearchView$OnQueryTextListener
+android.widget.SearchView$SearchAutoComplete
+android.widget.SectionIndexer
+android.widget.SeekBar
+android.widget.SeekBar$OnSeekBarChangeListener
+android.widget.SimpleAdapter
+android.widget.SimpleCursorAdapter
+android.widget.SlidingDrawer
+android.widget.SlidingDrawer$1
+android.widget.SlidingDrawer$DrawerToggler
+android.widget.Space
+android.widget.SpellChecker
+android.widget.SpellChecker$1
+android.widget.SpellChecker$SpellParser
+android.widget.Spinner
+android.widget.Spinner$1
+android.widget.Spinner$DialogPopup
+android.widget.Spinner$DropDownAdapter
+android.widget.Spinner$DropdownPopup
+android.widget.Spinner$DropdownPopup$1
+android.widget.Spinner$DropdownPopup$2
+android.widget.Spinner$DropdownPopup$3
+android.widget.Spinner$SavedState
+android.widget.Spinner$SavedState$1
+android.widget.Spinner$SpinnerPopup
+android.widget.SpinnerAdapter
+android.widget.Switch
+android.widget.Switch$1
+android.widget.TabHost
+android.widget.TabHost$1
+android.widget.TabHost$2
+android.widget.TabHost$ContentStrategy
+android.widget.TabHost$FactoryContentStrategy
+android.widget.TabHost$IndicatorStrategy
+android.widget.TabHost$OnTabChangeListener
+android.widget.TabHost$TabContentFactory
+android.widget.TabHost$TabSpec
+android.widget.TabHost$ViewIdContentStrategy
+android.widget.TabHost$ViewIndicatorStrategy
+android.widget.TabWidget
+android.widget.TabWidget$OnTabSelectionChanged
+android.widget.TabWidget$TabClickListener
+android.widget.TableLayout
+android.widget.TableLayout$LayoutParams
+android.widget.TableLayout$PassThroughHierarchyChangeListener
+android.widget.TableRow
+android.widget.TableRow$ChildrenTracker
+android.widget.TableRow$LayoutParams
+android.widget.TextClock
+android.widget.TextClock$1
+android.widget.TextClock$2
+android.widget.TextClock$FormatChangeObserver
+android.widget.TextSwitcher
+android.widget.TextView
+android.widget.TextView$2
+android.widget.TextView$3
+android.widget.TextView$BufferType
+android.widget.TextView$ChangeWatcher
+android.widget.TextView$CharWrapper
+android.widget.TextView$Drawables
+android.widget.TextView$Marquee
+android.widget.TextView$Marquee$1
+android.widget.TextView$Marquee$2
+android.widget.TextView$Marquee$3
+android.widget.TextView$OnEditorActionListener
+android.widget.TextView$SavedState
+android.widget.TextView$SavedState$1
+android.widget.ThemedSpinnerAdapter
+android.widget.TimePicker
+android.widget.TimePicker$OnTimeChangedListener
+android.widget.Toast
+android.widget.Toast$TN
+android.widget.Toast$TN$1
+android.widget.Toast$TN$2
+android.widget.ToggleButton
+android.widget.Toolbar
+android.widget.Toolbar$1
+android.widget.Toolbar$2
+android.widget.Toolbar$ExpandedActionViewMenuPresenter
+android.widget.Toolbar$LayoutParams
+android.widget.Toolbar$OnMenuItemClickListener
+android.widget.Toolbar$SavedState
+android.widget.Toolbar$SavedState$1
+android.widget.VideoView
+android.widget.VideoView$1
+android.widget.VideoView$2
+android.widget.VideoView$3
+android.widget.VideoView$4
+android.widget.VideoView$5
+android.widget.VideoView$6
+android.widget.VideoView$7
+android.widget.ViewAnimator
+android.widget.ViewFlipper
+android.widget.ViewFlipper$1
+android.widget.ViewFlipper$2
+android.widget.ViewSwitcher
+android.widget.WrapperListAdapter
+android.widget.ZoomButtonsController
+android.widget.ZoomButtonsController$OnZoomListener
+com.android.dex.Annotation
+com.android.dex.ClassData
+com.android.dex.ClassData$Method
+com.android.dex.ClassDef
+com.android.dex.Code
+com.android.dex.Dex
+com.android.dex.Dex$ClassDefIterable
+com.android.dex.Dex$FieldIdTable
+com.android.dex.Dex$MethodIdTable
+com.android.dex.Dex$ProtoIdTable
+com.android.dex.Dex$Section
+com.android.dex.Dex$StringTable
+com.android.dex.Dex$TypeIndexToDescriptorIndexTable
+com.android.dex.Dex$TypeIndexToDescriptorTable
+com.android.dex.DexException
+com.android.dex.DexFormat
+com.android.dex.EncodedValue
+com.android.dex.EncodedValueCodec
+com.android.dex.EncodedValueReader
+com.android.dex.FieldId
+com.android.dex.Leb128
+com.android.dex.MethodId
+com.android.dex.Mutf8
+com.android.dex.TableOfContents
+com.android.dex.TableOfContents$Section
+com.android.dex.TypeList
+com.android.dex.util.ByteArrayByteInput
+com.android.dex.util.ByteInput
+com.android.dex.util.ByteOutput
+com.android.dex.util.ExceptionWithContext
+com.android.dex.util.FileUtils
+com.android.i18n.phonenumbers.AlternateFormatsCountryCodeSet
+com.android.i18n.phonenumbers.AsYouTypeFormatter
+com.android.i18n.phonenumbers.CountryCodeToRegionCodeMap
+com.android.i18n.phonenumbers.MetadataLoader
+com.android.i18n.phonenumbers.MetadataManager
+com.android.i18n.phonenumbers.MetadataSource
+com.android.i18n.phonenumbers.MultiFileMetadataSourceImpl
+com.android.i18n.phonenumbers.NumberParseException
+com.android.i18n.phonenumbers.NumberParseException$ErrorType
+com.android.i18n.phonenumbers.PhoneNumberMatcher
+com.android.i18n.phonenumbers.PhoneNumberMatcher$State
+com.android.i18n.phonenumbers.PhoneNumberUtil
+com.android.i18n.phonenumbers.PhoneNumberUtil$1
+com.android.i18n.phonenumbers.PhoneNumberUtil$2
+com.android.i18n.phonenumbers.PhoneNumberUtil$Leniency
+com.android.i18n.phonenumbers.PhoneNumberUtil$Leniency$1
+com.android.i18n.phonenumbers.PhoneNumberUtil$Leniency$2
+com.android.i18n.phonenumbers.PhoneNumberUtil$Leniency$3
+com.android.i18n.phonenumbers.PhoneNumberUtil$Leniency$4
+com.android.i18n.phonenumbers.PhoneNumberUtil$PhoneNumberFormat
+com.android.i18n.phonenumbers.PhoneNumberUtil$PhoneNumberType
+com.android.i18n.phonenumbers.PhoneNumberUtil$ValidationResult
+com.android.i18n.phonenumbers.Phonenumber$PhoneNumber
+com.android.i18n.phonenumbers.Phonenumber$PhoneNumber$CountryCodeSource
+com.android.i18n.phonenumbers.RegexCache
+com.android.i18n.phonenumbers.RegexCache$LRUCache
+com.android.i18n.phonenumbers.RegexCache$LRUCache$1
+com.android.i18n.phonenumbers.ShortNumbersRegionCodeSet
+com.android.i18n.phonenumbers.geocoding.PhoneNumberOfflineGeocoder
+com.android.i18n.phonenumbers.nano.Phonemetadata$NumberFormat
+com.android.i18n.phonenumbers.nano.Phonemetadata$PhoneMetadata
+com.android.i18n.phonenumbers.nano.Phonemetadata$PhoneMetadataCollection
+com.android.i18n.phonenumbers.nano.Phonemetadata$PhoneNumberDesc
+com.android.i18n.phonenumbers.prefixmapper.DefaultMapStorage
+com.android.i18n.phonenumbers.prefixmapper.MappingFileProvider
+com.android.i18n.phonenumbers.prefixmapper.PhonePrefixMap
+com.android.i18n.phonenumbers.prefixmapper.PhonePrefixMapStorageStrategy
+com.android.i18n.phonenumbers.prefixmapper.PrefixFileReader
+com.android.ims.ImsCall$Listener
+com.android.ims.ImsCallForwardInfo
+com.android.ims.ImsCallProfile
+com.android.ims.ImsConfig
+com.android.ims.ImsConfigListener
+com.android.ims.ImsConfigListener$Stub
+com.android.ims.ImsConnectionStateListener
+com.android.ims.ImsEcbm
+com.android.ims.ImsEcbm$ImsEcbmListenerProxy
+com.android.ims.ImsEcbmStateListener
+com.android.ims.ImsException
+com.android.ims.ImsManager
+com.android.ims.ImsManager$1
+com.android.ims.ImsManager$2
+com.android.ims.ImsManager$ImsRegistrationListenerProxy
+com.android.ims.ImsManager$ImsServiceDeathRecipient
+com.android.ims.ImsReasonInfo
+com.android.ims.ImsReasonInfo$1
+com.android.ims.ImsSsInfo
+com.android.ims.internal.IImsCallSession
+com.android.ims.internal.IImsCallSessionListener
+com.android.ims.internal.IImsConfig
+com.android.ims.internal.IImsConfig$Stub
+com.android.ims.internal.IImsEcbm
+com.android.ims.internal.IImsEcbm$Stub
+com.android.ims.internal.IImsEcbmListener
+com.android.ims.internal.IImsEcbmListener$Stub
+com.android.ims.internal.IImsMultiEndpoint
+com.android.ims.internal.IImsRegistrationListener
+com.android.ims.internal.IImsRegistrationListener$Stub
+com.android.ims.internal.IImsService
+com.android.ims.internal.IImsService$Stub
+com.android.ims.internal.IImsUt
+com.android.ims.internal.IImsUt$Stub
+com.android.ims.internal.IImsUtListener
+com.android.ims.internal.IImsUtListener$Stub
+com.android.internal.R$styleable
+com.android.internal.alsa.AlsaCardsParser
+com.android.internal.alsa.AlsaCardsParser$AlsaCardRecord
+com.android.internal.alsa.AlsaDevicesParser
+com.android.internal.alsa.LineTokenizer
+com.android.internal.app.AlertActivity
+com.android.internal.app.AlertController
+com.android.internal.app.AlertController$1
+com.android.internal.app.AlertController$AlertParams
+com.android.internal.app.AlertController$AlertParams$3
+com.android.internal.app.AlertController$ButtonHandler
+com.android.internal.app.AlertController$CheckedItemAdapter
+com.android.internal.app.AlertController$RecycleListView
+com.android.internal.app.AssistUtils
+com.android.internal.app.ChooserActivity
+com.android.internal.app.ChooserActivity$1
+com.android.internal.app.ChooserActivity$BaseChooserTargetComparator
+com.android.internal.app.ChooserActivity$ChooserListAdapter
+com.android.internal.app.ChooserActivity$ChooserRowAdapter
+com.android.internal.app.ChooserActivity$ChooserRowAdapter$1
+com.android.internal.app.ChooserActivity$ChooserRowAdapter$2
+com.android.internal.app.ChooserActivity$ChooserRowAdapter$3
+com.android.internal.app.ChooserActivity$OffsetDataSetObserver
+com.android.internal.app.ChooserActivity$RowScale
+com.android.internal.app.ChooserActivity$RowViewHolder
+com.android.internal.app.IAppOpsCallback
+com.android.internal.app.IAppOpsCallback$Stub
+com.android.internal.app.IAppOpsCallback$Stub$Proxy
+com.android.internal.app.IAppOpsService
+com.android.internal.app.IAppOpsService$Stub
+com.android.internal.app.IAppOpsService$Stub$Proxy
+com.android.internal.app.IAssistScreenshotReceiver
+com.android.internal.app.IBatteryStats
+com.android.internal.app.IBatteryStats$Stub
+com.android.internal.app.IBatteryStats$Stub$Proxy
+com.android.internal.app.IMediaContainerService
+com.android.internal.app.IMediaContainerService$Stub
+com.android.internal.app.IMediaContainerService$Stub$Proxy
+com.android.internal.app.ISoundTriggerService
+com.android.internal.app.ISoundTriggerService$Stub
+com.android.internal.app.IVoiceInteractionManagerService
+com.android.internal.app.IVoiceInteractionManagerService$Stub
+com.android.internal.app.IVoiceInteractionManagerService$Stub$Proxy
+com.android.internal.app.IVoiceInteractionSessionShowCallback
+com.android.internal.app.IVoiceInteractionSessionShowCallback$Stub
+com.android.internal.app.IVoiceInteractor
+com.android.internal.app.IVoiceInteractor$Stub
+com.android.internal.app.IntentForwarderActivity
+com.android.internal.app.LocaleHelper
+com.android.internal.app.LocalePicker
+com.android.internal.app.LocalePickerWithRegion$LocaleSelectedListener
+com.android.internal.app.PlatLogoActivity
+com.android.internal.app.ProcessMap
+com.android.internal.app.ResolverActivity
+com.android.internal.app.ResolverActivity$1
+com.android.internal.app.ResolverActivity$2
+com.android.internal.app.ResolverActivity$3
+com.android.internal.app.ResolverActivity$DisplayResolveInfo
+com.android.internal.app.ResolverActivity$LoadAdapterIconTask
+com.android.internal.app.ResolverActivity$LoadIconTask
+com.android.internal.app.ResolverActivity$ResolveListAdapter
+com.android.internal.app.ResolverActivity$ResolvedComponentInfo
+com.android.internal.app.ResolverActivity$TargetInfo
+com.android.internal.app.ResolverActivity$ViewHolder
+com.android.internal.app.ResolverComparator
+com.android.internal.app.ResolverComparator$ScoredTarget
+com.android.internal.app.ToolbarActionBar
+com.android.internal.app.ToolbarActionBar$1
+com.android.internal.app.ToolbarActionBar$2
+com.android.internal.app.ToolbarActionBar$ActionMenuPresenterCallback
+com.android.internal.app.ToolbarActionBar$MenuBuilderCallback
+com.android.internal.app.ToolbarActionBar$ToolbarCallbackWrapper
+com.android.internal.app.WindowDecorActionBar
+com.android.internal.app.WindowDecorActionBar$1
+com.android.internal.app.WindowDecorActionBar$2
+com.android.internal.app.WindowDecorActionBar$3
+com.android.internal.app.WindowDecorActionBar$ActionModeImpl
+com.android.internal.app.procstats.DumpUtils
+com.android.internal.app.procstats.DurationsTable
+com.android.internal.app.procstats.IProcessStats
+com.android.internal.app.procstats.IProcessStats$Stub
+com.android.internal.app.procstats.IProcessStats$Stub$Proxy
+com.android.internal.app.procstats.ProcessState
+com.android.internal.app.procstats.ProcessState$1
+com.android.internal.app.procstats.ProcessState$PssAggr
+com.android.internal.app.procstats.ProcessStats
+com.android.internal.app.procstats.ProcessStats$1
+com.android.internal.app.procstats.ProcessStats$PackageState
+com.android.internal.app.procstats.ProcessStats$ProcessDataCollection
+com.android.internal.app.procstats.ProcessStats$ProcessStateHolder
+com.android.internal.app.procstats.ProcessStats$TotalMemoryUseCollection
+com.android.internal.app.procstats.PssTable
+com.android.internal.app.procstats.ServiceState
+com.android.internal.app.procstats.SparseMappingTable
+com.android.internal.app.procstats.SparseMappingTable$Table
+com.android.internal.app.procstats.SysMemUsageTable
+com.android.internal.appwidget.IAppWidgetHost
+com.android.internal.appwidget.IAppWidgetHost$Stub
+com.android.internal.appwidget.IAppWidgetHost$Stub$Proxy
+com.android.internal.appwidget.IAppWidgetService
+com.android.internal.appwidget.IAppWidgetService$Stub
+com.android.internal.appwidget.IAppWidgetService$Stub$Proxy
+com.android.internal.backup.IBackupTransport
+com.android.internal.backup.IBackupTransport$Stub
+com.android.internal.backup.IBackupTransport$Stub$Proxy
+com.android.internal.backup.LocalTransport
+com.android.internal.backup.LocalTransportService
+com.android.internal.content.NativeLibraryHelper
+com.android.internal.content.NativeLibraryHelper$Handle
+com.android.internal.content.PackageHelper
+com.android.internal.content.PackageMonitor
+com.android.internal.content.ReferrerIntent
+com.android.internal.content.ReferrerIntent$1
+com.android.internal.inputmethod.InputMethodSubtypeHandle
+com.android.internal.inputmethod.InputMethodSubtypeSwitchingController
+com.android.internal.inputmethod.InputMethodSubtypeSwitchingController$ControllerImpl
+com.android.internal.inputmethod.InputMethodSubtypeSwitchingController$DynamicRotationList
+com.android.internal.inputmethod.InputMethodSubtypeSwitchingController$ImeSubtypeListItem
+com.android.internal.inputmethod.InputMethodSubtypeSwitchingController$InputMethodAndSubtypeList
+com.android.internal.inputmethod.InputMethodSubtypeSwitchingController$InputMethodAndSubtypeList$1
+com.android.internal.inputmethod.InputMethodSubtypeSwitchingController$StaticRotationList
+com.android.internal.inputmethod.InputMethodUtils
+com.android.internal.inputmethod.InputMethodUtils$1
+com.android.internal.inputmethod.InputMethodUtils$InputMethodSettings
+com.android.internal.inputmethod.LocaleUtils
+com.android.internal.inputmethod.LocaleUtils$LocaleExtractor
+com.android.internal.inputmethod.LocaleUtils$ScoreEntry
+com.android.internal.location.GpsNetInitiatedHandler
+com.android.internal.location.GpsNetInitiatedHandler$1
+com.android.internal.location.GpsNetInitiatedHandler$2
+com.android.internal.location.ILocationProvider
+com.android.internal.location.ILocationProvider$Stub
+com.android.internal.location.ILocationProvider$Stub$Proxy
+com.android.internal.location.ProviderProperties
+com.android.internal.location.ProviderProperties$1
+com.android.internal.location.ProviderRequest
+com.android.internal.location.ProviderRequest$1
+com.android.internal.logging.AndroidConfig
+com.android.internal.logging.AndroidHandler
+com.android.internal.logging.AndroidHandler$1
+com.android.internal.logging.EventLogTags
+com.android.internal.logging.MetricsLogger
+com.android.internal.net.LegacyVpnInfo
+com.android.internal.net.NetworkStatsFactory
+com.android.internal.net.VpnConfig
+com.android.internal.net.VpnInfo
+com.android.internal.net.VpnProfile
+com.android.internal.os.AndroidPrintStream
+com.android.internal.os.AtomicFile
+com.android.internal.os.BackgroundThread
+com.android.internal.os.BatterySipper
+com.android.internal.os.BatterySipper$DrainType
+com.android.internal.os.BatteryStatsHelper
+com.android.internal.os.BatteryStatsHelper$1
+com.android.internal.os.BatteryStatsImpl
+com.android.internal.os.BatteryStatsImpl$1
+com.android.internal.os.BatteryStatsImpl$5
+com.android.internal.os.BatteryStatsImpl$BatchTimer
+com.android.internal.os.BatteryStatsImpl$BatteryCallback
+com.android.internal.os.BatteryStatsImpl$Clocks
+com.android.internal.os.BatteryStatsImpl$ControllerActivityCounterImpl
+com.android.internal.os.BatteryStatsImpl$Counter
+com.android.internal.os.BatteryStatsImpl$ExternalStatsSync
+com.android.internal.os.BatteryStatsImpl$LongSamplingCounter
+com.android.internal.os.BatteryStatsImpl$MyHandler
+com.android.internal.os.BatteryStatsImpl$OverflowArrayMap
+com.android.internal.os.BatteryStatsImpl$SamplingTimer
+com.android.internal.os.BatteryStatsImpl$StopwatchTimer
+com.android.internal.os.BatteryStatsImpl$SystemClocks
+com.android.internal.os.BatteryStatsImpl$TimeBase
+com.android.internal.os.BatteryStatsImpl$TimeBaseObs
+com.android.internal.os.BatteryStatsImpl$Timer
+com.android.internal.os.BatteryStatsImpl$Uid
+com.android.internal.os.BatteryStatsImpl$Uid$1
+com.android.internal.os.BatteryStatsImpl$Uid$2
+com.android.internal.os.BatteryStatsImpl$Uid$3
+com.android.internal.os.BatteryStatsImpl$Uid$Pkg
+com.android.internal.os.BatteryStatsImpl$Uid$Pkg$Serv
+com.android.internal.os.BatteryStatsImpl$Uid$Sensor
+com.android.internal.os.BatteryStatsImpl$Uid$Wakelock
+com.android.internal.os.BinderInternal
+com.android.internal.os.BinderInternal$GcWatcher
+com.android.internal.os.BluetoothPowerCalculator
+com.android.internal.os.CameraPowerCalculator
+com.android.internal.os.CpuPowerCalculator
+com.android.internal.os.FlashlightPowerCalculator
+com.android.internal.os.HandlerCaller
+com.android.internal.os.HandlerCaller$Callback
+com.android.internal.os.HandlerCaller$MyHandler
+com.android.internal.os.IDropBoxManagerService
+com.android.internal.os.IDropBoxManagerService$Stub
+com.android.internal.os.IDropBoxManagerService$Stub$Proxy
+com.android.internal.os.IParcelFileDescriptorFactory
+com.android.internal.os.IResultReceiver
+com.android.internal.os.IResultReceiver$Stub
+com.android.internal.os.IResultReceiver$Stub$Proxy
+com.android.internal.os.InstallerConnection
+com.android.internal.os.InstallerConnection$InstallerException
+com.android.internal.os.KernelCpuSpeedReader
+com.android.internal.os.KernelUidCpuTimeReader
+com.android.internal.os.KernelWakelockReader
+com.android.internal.os.KernelWakelockStats
+com.android.internal.os.KernelWakelockStats$Entry
+com.android.internal.os.LoggingPrintStream
+com.android.internal.os.LoggingPrintStream$1
+com.android.internal.os.MobileRadioPowerCalculator
+com.android.internal.os.PowerCalculator
+com.android.internal.os.PowerProfile
+com.android.internal.os.PowerProfile$CpuClusterKey
+com.android.internal.os.ProcessCpuTracker
+com.android.internal.os.ProcessCpuTracker$1
+com.android.internal.os.ProcessCpuTracker$Stats
+com.android.internal.os.RuntimeInit
+com.android.internal.os.RuntimeInit$1
+com.android.internal.os.RuntimeInit$Arguments
+com.android.internal.os.RuntimeInit$UncaughtHandler
+com.android.internal.os.SamplingProfilerIntegration
+com.android.internal.os.SensorPowerCalculator
+com.android.internal.os.SomeArgs
+com.android.internal.os.WakelockPowerCalculator
+com.android.internal.os.WifiPowerCalculator
+com.android.internal.os.Zygote
+com.android.internal.os.ZygoteConnection
+com.android.internal.os.ZygoteConnection$Arguments
+com.android.internal.os.ZygoteInit
+com.android.internal.os.ZygoteInit$MethodAndArgsCaller
+com.android.internal.os.ZygoteSecurityException
+com.android.internal.policy.DecorContext
+com.android.internal.policy.DecorView
+com.android.internal.policy.DecorView$1
+com.android.internal.policy.DecorView$4
+com.android.internal.policy.DecorView$ActionModeCallback2Wrapper
+com.android.internal.policy.DecorView$ColorViewState
+com.android.internal.policy.DividerSnapAlgorithm
+com.android.internal.policy.DividerSnapAlgorithm$SnapTarget
+com.android.internal.policy.DockedDividerUtils
+com.android.internal.policy.IKeyguardDrawnCallback
+com.android.internal.policy.IKeyguardDrawnCallback$Stub
+com.android.internal.policy.IKeyguardDrawnCallback$Stub$Proxy
+com.android.internal.policy.IKeyguardExitCallback
+com.android.internal.policy.IKeyguardService
+com.android.internal.policy.IKeyguardService$Stub
+com.android.internal.policy.IKeyguardService$Stub$Proxy
+com.android.internal.policy.IKeyguardStateCallback
+com.android.internal.policy.IKeyguardStateCallback$Stub
+com.android.internal.policy.IKeyguardStateCallback$Stub$Proxy
+com.android.internal.policy.IShortcutService
+com.android.internal.policy.IShortcutService$Stub
+com.android.internal.policy.IShortcutService$Stub$Proxy
+com.android.internal.policy.PhoneFallbackEventHandler
+com.android.internal.policy.PhoneLayoutInflater
+com.android.internal.policy.PhoneWindow
+com.android.internal.policy.PhoneWindow$1
+com.android.internal.policy.PhoneWindow$ActionMenuPresenterCallback
+com.android.internal.policy.PhoneWindow$PanelFeatureState
+com.android.internal.policy.PhoneWindow$PanelFeatureState$SavedState
+com.android.internal.policy.PhoneWindow$PanelFeatureState$SavedState$1
+com.android.internal.policy.PhoneWindow$PhoneWindowMenuCallback
+com.android.internal.policy.PhoneWindow$RotationWatcher
+com.android.internal.policy.PhoneWindow$RotationWatcher$1
+com.android.internal.statusbar.IStatusBar
+com.android.internal.statusbar.IStatusBar$Stub
+com.android.internal.statusbar.IStatusBar$Stub$Proxy
+com.android.internal.statusbar.IStatusBarService
+com.android.internal.statusbar.IStatusBarService$Stub
+com.android.internal.statusbar.IStatusBarService$Stub$Proxy
+com.android.internal.statusbar.NotificationVisibility
+com.android.internal.statusbar.NotificationVisibility$1
+com.android.internal.statusbar.StatusBarIcon
+com.android.internal.statusbar.StatusBarIcon$1
+com.android.internal.telecom.IConnectionService
+com.android.internal.telecom.IConnectionService$Stub
+com.android.internal.telecom.IConnectionService$Stub$Proxy
+com.android.internal.telecom.IConnectionServiceAdapter
+com.android.internal.telecom.IConnectionServiceAdapter$Stub
+com.android.internal.telecom.IConnectionServiceAdapter$Stub$Proxy
+com.android.internal.telecom.IInCallAdapter
+com.android.internal.telecom.IInCallAdapter$Stub
+com.android.internal.telecom.IInCallAdapter$Stub$Proxy
+com.android.internal.telecom.IInCallService
+com.android.internal.telecom.IInCallService$Stub
+com.android.internal.telecom.IInCallService$Stub$Proxy
+com.android.internal.telecom.ITelecomService
+com.android.internal.telecom.ITelecomService$Stub
+com.android.internal.telecom.ITelecomService$Stub$Proxy
+com.android.internal.telecom.IVideoProvider
+com.android.internal.telecom.IVideoProvider$Stub
+com.android.internal.telecom.RemoteServiceCallback
+com.android.internal.telecom.RemoteServiceCallback$Stub
+com.android.internal.telecom.RemoteServiceCallback$Stub$Proxy
+com.android.internal.telephony.AsyncEmergencyContactNotifier
+com.android.internal.telephony.BaseCommands
+com.android.internal.telephony.Call
+com.android.internal.telephony.Call$SrvccState
+com.android.internal.telephony.Call$State
+com.android.internal.telephony.CallManager
+com.android.internal.telephony.CallManager$CallManagerHandler
+com.android.internal.telephony.CallStateException
+com.android.internal.telephony.CallTracker
+com.android.internal.telephony.CallerInfo
+com.android.internal.telephony.CallerInfoAsyncQuery
+com.android.internal.telephony.CallerInfoAsyncQuery$CallerInfoAsyncQueryHandler
+com.android.internal.telephony.CallerInfoAsyncQuery$CallerInfoAsyncQueryHandler$CallerInfoWorkerHandler
+com.android.internal.telephony.CallerInfoAsyncQuery$CookieWrapper
+com.android.internal.telephony.CallerInfoAsyncQuery$OnQueryCompleteListener
+com.android.internal.telephony.CarrierAppUtils
+com.android.internal.telephony.CarrierServiceBindHelper
+com.android.internal.telephony.CarrierServiceBindHelper$1
+com.android.internal.telephony.CarrierServiceBindHelper$AppBinding
+com.android.internal.telephony.CarrierServiceBindHelper$PackageChangedBroadcastReceiver
+com.android.internal.telephony.CellBroadcastHandler
+com.android.internal.telephony.CellNetworkScanResult
+com.android.internal.telephony.CommandException
+com.android.internal.telephony.CommandException$Error
+com.android.internal.telephony.CommandsInterface
+com.android.internal.telephony.CommandsInterface$RadioState
+com.android.internal.telephony.Connection
+com.android.internal.telephony.DctConstants$Activity
+com.android.internal.telephony.DctConstants$State
+com.android.internal.telephony.DebugService
+com.android.internal.telephony.DefaultPhoneNotifier
+com.android.internal.telephony.EncodeException
+com.android.internal.telephony.GsmAlphabet
+com.android.internal.telephony.GsmAlphabet$TextEncodingDetails
+com.android.internal.telephony.GsmCdmaCall
+com.android.internal.telephony.GsmCdmaCallTracker
+com.android.internal.telephony.GsmCdmaCallTracker$1
+com.android.internal.telephony.GsmCdmaConnection
+com.android.internal.telephony.GsmCdmaPhone
+com.android.internal.telephony.GsmCdmaPhone$1
+com.android.internal.telephony.GsmCdmaPhone$2
+com.android.internal.telephony.HardwareConfig
+com.android.internal.telephony.ICarrierConfigLoader
+com.android.internal.telephony.ICarrierConfigLoader$Stub
+com.android.internal.telephony.ICarrierConfigLoader$Stub$Proxy
+com.android.internal.telephony.IIccPhoneBook
+com.android.internal.telephony.IIccPhoneBook$Stub
+com.android.internal.telephony.IMms
+com.android.internal.telephony.IMms$Stub
+com.android.internal.telephony.IOnSubscriptionsChangedListener
+com.android.internal.telephony.IOnSubscriptionsChangedListener$Stub
+com.android.internal.telephony.IOnSubscriptionsChangedListener$Stub$Proxy
+com.android.internal.telephony.IPhoneStateListener
+com.android.internal.telephony.IPhoneStateListener$Stub
+com.android.internal.telephony.IPhoneStateListener$Stub$Proxy
+com.android.internal.telephony.IPhoneSubInfo
+com.android.internal.telephony.IPhoneSubInfo$Stub
+com.android.internal.telephony.IPhoneSubInfo$Stub$Proxy
+com.android.internal.telephony.ISms
+com.android.internal.telephony.ISms$Stub
+com.android.internal.telephony.ISms$Stub$Proxy
+com.android.internal.telephony.ISub
+com.android.internal.telephony.ISub$Stub
+com.android.internal.telephony.ISub$Stub$Proxy
+com.android.internal.telephony.ITelephony
+com.android.internal.telephony.ITelephony$Stub
+com.android.internal.telephony.ITelephony$Stub$Proxy
+com.android.internal.telephony.ITelephonyDebug
+com.android.internal.telephony.ITelephonyDebug$Stub
+com.android.internal.telephony.ITelephonyDebug$Stub$Proxy
+com.android.internal.telephony.ITelephonyDebugSubscriber
+com.android.internal.telephony.ITelephonyDebugSubscriber$Stub
+com.android.internal.telephony.ITelephonyDebugSubscriber$Stub$Proxy
+com.android.internal.telephony.ITelephonyRegistry
+com.android.internal.telephony.ITelephonyRegistry$Stub
+com.android.internal.telephony.ITelephonyRegistry$Stub$Proxy
+com.android.internal.telephony.IWapPushManager
+com.android.internal.telephony.IccCard
+com.android.internal.telephony.IccCardConstants$State
+com.android.internal.telephony.IccPhoneBookInterfaceManager
+com.android.internal.telephony.IccPhoneBookInterfaceManager$1
+com.android.internal.telephony.IccProvider
+com.android.internal.telephony.IccSmsInterfaceManager
+com.android.internal.telephony.IccSmsInterfaceManager$1
+com.android.internal.telephony.IccSmsInterfaceManager$CdmaBroadcastRangeManager
+com.android.internal.telephony.IccSmsInterfaceManager$CellBroadcastRangeManager
+com.android.internal.telephony.ImsSMSDispatcher
+com.android.internal.telephony.InboundSmsHandler
+com.android.internal.telephony.InboundSmsHandler$DefaultState
+com.android.internal.telephony.InboundSmsHandler$DeliveringState
+com.android.internal.telephony.InboundSmsHandler$IdleState
+com.android.internal.telephony.InboundSmsHandler$StartupState
+com.android.internal.telephony.InboundSmsHandler$WaitingState
+com.android.internal.telephony.IntRangeManager
+com.android.internal.telephony.MccTable
+com.android.internal.telephony.MmiCode
+com.android.internal.telephony.MmiCode$State
+com.android.internal.telephony.OperatorInfo
+com.android.internal.telephony.Phone
+com.android.internal.telephony.Phone$1
+com.android.internal.telephony.PhoneBase
+com.android.internal.telephony.PhoneConstants$DataState
+com.android.internal.telephony.PhoneConstants$State
+com.android.internal.telephony.PhoneFactory
+com.android.internal.telephony.PhoneInternalInterface
+com.android.internal.telephony.PhoneInternalInterface$DataActivityState
+com.android.internal.telephony.PhoneInternalInterface$SuppService
+com.android.internal.telephony.PhoneNotifier
+com.android.internal.telephony.PhoneProxy
+com.android.internal.telephony.PhoneStateIntentReceiver
+com.android.internal.telephony.PhoneSubInfoController
+com.android.internal.telephony.PhoneSwitcher
+com.android.internal.telephony.PhoneSwitcher$1
+com.android.internal.telephony.PhoneSwitcher$2
+com.android.internal.telephony.PhoneSwitcher$PhoneState
+com.android.internal.telephony.PhoneSwitcher$PhoneSwitcherNetworkRequestListener
+com.android.internal.telephony.ProxyController
+com.android.internal.telephony.ProxyController$1
+com.android.internal.telephony.RIL
+com.android.internal.telephony.RIL$1
+com.android.internal.telephony.RIL$2
+com.android.internal.telephony.RIL$RILReceiver
+com.android.internal.telephony.RIL$RILSender
+com.android.internal.telephony.RILConstants
+com.android.internal.telephony.RILRequest
+com.android.internal.telephony.RadioCapability
+com.android.internal.telephony.RestrictedState
+com.android.internal.telephony.RetryManager
+com.android.internal.telephony.SMSDispatcher
+com.android.internal.telephony.SMSDispatcher$SettingsObserver
+com.android.internal.telephony.ServiceStateTracker
+com.android.internal.telephony.ServiceStateTracker$1
+com.android.internal.telephony.ServiceStateTracker$2
+com.android.internal.telephony.ServiceStateTracker$3
+com.android.internal.telephony.ServiceStateTracker$CellInfoResult
+com.android.internal.telephony.ServiceStateTracker$SstSubscriptionsChangedListener
+com.android.internal.telephony.SmsApplication
+com.android.internal.telephony.SmsApplication$SmsApplicationData
+com.android.internal.telephony.SmsApplication$SmsPackageMonitor
+com.android.internal.telephony.SmsBroadcastUndelivered
+com.android.internal.telephony.SmsBroadcastUndelivered$1
+com.android.internal.telephony.SmsBroadcastUndelivered$1$1
+com.android.internal.telephony.SmsMessageBase
+com.android.internal.telephony.SmsStorageMonitor
+com.android.internal.telephony.SmsStorageMonitor$1
+com.android.internal.telephony.SmsUsageMonitor
+com.android.internal.telephony.SmsUsageMonitor$SettingsObserver
+com.android.internal.telephony.SmsUsageMonitor$SettingsObserverHandler
+com.android.internal.telephony.SubscriptionController
+com.android.internal.telephony.SubscriptionController$ScLocalLog
+com.android.internal.telephony.SubscriptionInfoUpdater
+com.android.internal.telephony.SubscriptionInfoUpdater$1
+com.android.internal.telephony.SubscriptionInfoUpdater$2
+com.android.internal.telephony.SubscriptionMonitor
+com.android.internal.telephony.SubscriptionMonitor$1
+com.android.internal.telephony.SubscriptionMonitor$2
+com.android.internal.telephony.TelephonyCapabilities
+com.android.internal.telephony.TelephonyComponentFactory
+com.android.internal.telephony.TelephonyDevController
+com.android.internal.telephony.TelephonyEvent
+com.android.internal.telephony.TelephonyEvent$1
+com.android.internal.telephony.TelephonyEventLog
+com.android.internal.telephony.TelephonyEventLog$1
+com.android.internal.telephony.TelephonyTester
+com.android.internal.telephony.TelephonyTester$1
+com.android.internal.telephony.UUSInfo
+com.android.internal.telephony.UiccPhoneBookController
+com.android.internal.telephony.UiccSmsController
+com.android.internal.telephony.WakeLockStateMachine
+com.android.internal.telephony.WakeLockStateMachine$1
+com.android.internal.telephony.WakeLockStateMachine$DefaultState
+com.android.internal.telephony.WakeLockStateMachine$IdleState
+com.android.internal.telephony.WakeLockStateMachine$WaitingState
+com.android.internal.telephony.WapPushOverSms
+com.android.internal.telephony.cat.AppInterface
+com.android.internal.telephony.cat.CatLog
+com.android.internal.telephony.cat.CatService
+com.android.internal.telephony.cdma.CdmaCallWaitingNotification
+com.android.internal.telephony.cdma.CdmaInboundSmsHandler
+com.android.internal.telephony.cdma.CdmaInformationRecords$CdmaDisplayInfoRec
+com.android.internal.telephony.cdma.CdmaInformationRecords$CdmaSignalInfoRec
+com.android.internal.telephony.cdma.CdmaSMSDispatcher
+com.android.internal.telephony.cdma.CdmaServiceCategoryProgramHandler
+com.android.internal.telephony.cdma.CdmaServiceCategoryProgramHandler$1
+com.android.internal.telephony.cdma.CdmaSubscriptionSourceManager
+com.android.internal.telephony.cdma.EriManager
+com.android.internal.telephony.cdma.EriManager$EriFile
+com.android.internal.telephony.cdma.SignalToneUtil
+com.android.internal.telephony.dataconnection.ApnContext
+com.android.internal.telephony.dataconnection.ApnSetting
+com.android.internal.telephony.dataconnection.DataConnection
+com.android.internal.telephony.dataconnection.DcController
+com.android.internal.telephony.dataconnection.DcController$1
+com.android.internal.telephony.dataconnection.DcController$DccDefaultState
+com.android.internal.telephony.dataconnection.DcFailBringUp
+com.android.internal.telephony.dataconnection.DcFailCause
+com.android.internal.telephony.dataconnection.DcRequest
+com.android.internal.telephony.dataconnection.DcTesterDeactivateAll
+com.android.internal.telephony.dataconnection.DcTesterDeactivateAll$1
+com.android.internal.telephony.dataconnection.DcTesterFailBringUpAll
+com.android.internal.telephony.dataconnection.DcTesterFailBringUpAll$1
+com.android.internal.telephony.dataconnection.DcTracker
+com.android.internal.telephony.dataconnection.DcTracker$1
+com.android.internal.telephony.dataconnection.DcTracker$2
+com.android.internal.telephony.dataconnection.DcTracker$3
+com.android.internal.telephony.dataconnection.DcTracker$4
+com.android.internal.telephony.dataconnection.DcTracker$ApnChangeObserver
+com.android.internal.telephony.dataconnection.DcTracker$RetryFailures
+com.android.internal.telephony.dataconnection.DcTracker$TxRxSum
+com.android.internal.telephony.dataconnection.TelephonyNetworkFactory
+com.android.internal.telephony.dataconnection.TelephonyNetworkFactory$InternalHandler
+com.android.internal.telephony.gsm.GsmCellBroadcastHandler
+com.android.internal.telephony.gsm.GsmInboundSmsHandler
+com.android.internal.telephony.gsm.GsmSMSDispatcher
+com.android.internal.telephony.gsm.SmsMessage
+com.android.internal.telephony.gsm.UsimDataDownloadHandler
+com.android.internal.telephony.imsphone.ImsExternalCallTracker
+com.android.internal.telephony.imsphone.ImsExternalConnection
+com.android.internal.telephony.imsphone.ImsPhone
+com.android.internal.telephony.imsphone.ImsPhone$1
+com.android.internal.telephony.imsphone.ImsPhone$2
+com.android.internal.telephony.imsphone.ImsPhone$3
+com.android.internal.telephony.imsphone.ImsPhoneBase
+com.android.internal.telephony.imsphone.ImsPhoneCall
+com.android.internal.telephony.imsphone.ImsPhoneCallTracker
+com.android.internal.telephony.imsphone.ImsPhoneCallTracker$1
+com.android.internal.telephony.imsphone.ImsPhoneCallTracker$2
+com.android.internal.telephony.imsphone.ImsPhoneCallTracker$3
+com.android.internal.telephony.imsphone.ImsPhoneCallTracker$4
+com.android.internal.telephony.imsphone.ImsPhoneCallTracker$5
+com.android.internal.telephony.imsphone.ImsPhoneCallTracker$6
+com.android.internal.telephony.imsphone.ImsPhoneCommandInterface
+com.android.internal.telephony.imsphone.ImsPhoneFactory
+com.android.internal.telephony.sip.SipPhone
+com.android.internal.telephony.sip.SipPhoneBase
+com.android.internal.telephony.test.SimulatedRadioControl
+com.android.internal.telephony.uicc.IccCardApplicationStatus
+com.android.internal.telephony.uicc.IccCardApplicationStatus$AppType
+com.android.internal.telephony.uicc.IccCardProxy
+com.android.internal.telephony.uicc.IccCardStatus
+com.android.internal.telephony.uicc.IccCardStatus$CardState
+com.android.internal.telephony.uicc.IccCardStatus$PinState
+com.android.internal.telephony.uicc.IccConstants
+com.android.internal.telephony.uicc.IccIoResult
+com.android.internal.telephony.uicc.IccRecords
+com.android.internal.telephony.uicc.IccUtils
+com.android.internal.telephony.uicc.UiccCard
+com.android.internal.telephony.uicc.UiccCard$1
+com.android.internal.telephony.uicc.UiccCardApplication
+com.android.internal.telephony.uicc.UiccController
+com.android.internal.textservice.ISpellCheckerService
+com.android.internal.textservice.ISpellCheckerService$Stub
+com.android.internal.textservice.ISpellCheckerService$Stub$Proxy
+com.android.internal.textservice.ISpellCheckerSession
+com.android.internal.textservice.ISpellCheckerSession$Stub
+com.android.internal.textservice.ISpellCheckerSession$Stub$Proxy
+com.android.internal.textservice.ISpellCheckerSessionListener
+com.android.internal.textservice.ISpellCheckerSessionListener$Stub
+com.android.internal.textservice.ISpellCheckerSessionListener$Stub$Proxy
+com.android.internal.textservice.ITextServicesManager
+com.android.internal.textservice.ITextServicesManager$Stub
+com.android.internal.textservice.ITextServicesManager$Stub$Proxy
+com.android.internal.textservice.ITextServicesSessionListener
+com.android.internal.textservice.ITextServicesSessionListener$Stub
+com.android.internal.textservice.ITextServicesSessionListener$Stub$Proxy
+com.android.internal.transition.EpicenterTranslateClipReveal
+com.android.internal.transition.EpicenterTranslateClipReveal$1
+com.android.internal.transition.EpicenterTranslateClipReveal$State
+com.android.internal.transition.EpicenterTranslateClipReveal$StateEvaluator
+com.android.internal.transition.EpicenterTranslateClipReveal$StateProperty
+com.android.internal.transition.TransitionConstants
+com.android.internal.util.ArrayUtils
+com.android.internal.util.AsyncChannel
+com.android.internal.util.AsyncChannel$AsyncChannelConnection
+com.android.internal.util.AsyncChannel$DeathMonitor
+com.android.internal.util.AsyncChannel$SyncMessenger
+com.android.internal.util.AsyncChannel$SyncMessenger$SyncHandler
+com.android.internal.util.DumpUtils$Dump
+com.android.internal.util.FastMath
+com.android.internal.util.FastPrintWriter
+com.android.internal.util.FastPrintWriter$DummyWriter
+com.android.internal.util.FastXmlSerializer
+com.android.internal.util.FileRotator
+com.android.internal.util.FileRotator$FileInfo
+com.android.internal.util.FileRotator$Reader
+com.android.internal.util.FileRotator$Rewriter
+com.android.internal.util.FileRotator$Writer
+com.android.internal.util.GrowingArrayUtils
+com.android.internal.util.HexDump
+com.android.internal.util.IState
+com.android.internal.util.ImageUtils
+com.android.internal.util.IndentingPrintWriter
+com.android.internal.util.JournaledFile
+com.android.internal.util.LineBreakBufferedWriter
+com.android.internal.util.LocalLog
+com.android.internal.util.MemInfoReader
+com.android.internal.util.MessageUtils
+com.android.internal.util.NotificationColorUtil
+com.android.internal.util.NotificationColorUtil$ColorUtilsFromCompat
+com.android.internal.util.Preconditions
+com.android.internal.util.Predicate
+com.android.internal.util.ProcFileReader
+com.android.internal.util.ProgressReporter
+com.android.internal.util.ScreenShapeHelper
+com.android.internal.util.State
+com.android.internal.util.StateMachine
+com.android.internal.util.StateMachine$LogRec
+com.android.internal.util.StateMachine$LogRecords
+com.android.internal.util.StateMachine$SmHandler
+com.android.internal.util.StateMachine$SmHandler$HaltingState
+com.android.internal.util.StateMachine$SmHandler$QuittingState
+com.android.internal.util.StateMachine$SmHandler$StateInfo
+com.android.internal.util.UserIcons
+com.android.internal.util.VirtualRefBasePtr
+com.android.internal.util.WakeupMessage
+com.android.internal.util.XmlUtils
+com.android.internal.util.XmlUtils$ReadMapCallback
+com.android.internal.util.XmlUtils$WriteMapCallback
+com.android.internal.view.ActionBarPolicy
+com.android.internal.view.BaseIWindow
+com.android.internal.view.BaseSurfaceHolder
+com.android.internal.view.FloatingActionMode
+com.android.internal.view.FloatingActionMode$1
+com.android.internal.view.FloatingActionMode$2
+com.android.internal.view.FloatingActionMode$3
+com.android.internal.view.FloatingActionMode$4
+com.android.internal.view.FloatingActionMode$FloatingToolbarVisibilityHelper
+com.android.internal.view.IInputConnectionWrapper
+com.android.internal.view.IInputConnectionWrapper$MyHandler
+com.android.internal.view.IInputConnectionWrapper$SomeArgs
+com.android.internal.view.IInputContext
+com.android.internal.view.IInputContext$Stub
+com.android.internal.view.IInputContext$Stub$Proxy
+com.android.internal.view.IInputContextCallback
+com.android.internal.view.IInputContextCallback$Stub
+com.android.internal.view.IInputContextCallback$Stub$Proxy
+com.android.internal.view.IInputMethod
+com.android.internal.view.IInputMethod$Stub
+com.android.internal.view.IInputMethod$Stub$Proxy
+com.android.internal.view.IInputMethodClient
+com.android.internal.view.IInputMethodClient$Stub
+com.android.internal.view.IInputMethodClient$Stub$Proxy
+com.android.internal.view.IInputMethodManager
+com.android.internal.view.IInputMethodManager$Stub
+com.android.internal.view.IInputMethodManager$Stub$Proxy
+com.android.internal.view.IInputMethodSession
+com.android.internal.view.IInputMethodSession$Stub
+com.android.internal.view.IInputMethodSession$Stub$Proxy
+com.android.internal.view.IInputSessionCallback
+com.android.internal.view.IInputSessionCallback$Stub
+com.android.internal.view.IInputSessionCallback$Stub$Proxy
+com.android.internal.view.InputBindResult
+com.android.internal.view.InputBindResult$1
+com.android.internal.view.InputConnectionWrapper
+com.android.internal.view.InputConnectionWrapper$InputContextCallback
+com.android.internal.view.RootViewSurfaceTaker
+com.android.internal.view.RotationPolicy
+com.android.internal.view.RotationPolicy$RotationPolicyListener
+com.android.internal.view.RotationPolicy$RotationPolicyListener$1
+com.android.internal.view.WindowManagerPolicyThread
+com.android.internal.view.animation.FallbackLUTInterpolator
+com.android.internal.view.animation.HasNativeInterpolator
+com.android.internal.view.animation.NativeInterpolatorFactory
+com.android.internal.view.animation.NativeInterpolatorFactoryHelper
+com.android.internal.view.menu.ActionMenuItem
+com.android.internal.view.menu.ActionMenuItemView
+com.android.internal.view.menu.ActionMenuItemView$ActionMenuItemForwardingListener
+com.android.internal.view.menu.ActionMenuItemView$PopupCallback
+com.android.internal.view.menu.BaseMenuPresenter
+com.android.internal.view.menu.ContextMenuBuilder
+com.android.internal.view.menu.MenuBuilder
+com.android.internal.view.menu.MenuBuilder$Callback
+com.android.internal.view.menu.MenuBuilder$ItemInvoker
+com.android.internal.view.menu.MenuHelper
+com.android.internal.view.menu.MenuItemImpl
+com.android.internal.view.menu.MenuPopupHelper
+com.android.internal.view.menu.MenuPopupHelper$1
+com.android.internal.view.menu.MenuPresenter
+com.android.internal.view.menu.MenuPresenter$Callback
+com.android.internal.view.menu.MenuView
+com.android.internal.view.menu.MenuView$ItemView
+com.android.internal.view.menu.ShowableListMenu
+com.android.internal.view.menu.SubMenuBuilder
+com.android.internal.widget.AbsActionBarView
+com.android.internal.widget.AbsActionBarView$VisibilityAnimListener
+com.android.internal.widget.ActionBarContainer
+com.android.internal.widget.ActionBarContainer$ActionBarBackgroundDrawable
+com.android.internal.widget.ActionBarContextView
+com.android.internal.widget.ActionBarContextView$1
+com.android.internal.widget.ActionBarOverlayLayout
+com.android.internal.widget.ActionBarOverlayLayout$1
+com.android.internal.widget.ActionBarOverlayLayout$2
+com.android.internal.widget.ActionBarOverlayLayout$3
+com.android.internal.widget.ActionBarOverlayLayout$4
+com.android.internal.widget.ActionBarOverlayLayout$5
+com.android.internal.widget.ActionBarOverlayLayout$ActionBarVisibilityCallback
+com.android.internal.widget.ActionBarOverlayLayout$LayoutParams
+com.android.internal.widget.AlertDialogLayout
+com.android.internal.widget.BackgroundFallback
+com.android.internal.widget.ButtonBarLayout
+com.android.internal.widget.DecorContentParent
+com.android.internal.widget.DecorToolbar
+com.android.internal.widget.DialogTitle
+com.android.internal.widget.EditableInputConnection
+com.android.internal.widget.ExploreByTouchHelper
+com.android.internal.widget.FloatingToolbar
+com.android.internal.widget.FloatingToolbar$1
+com.android.internal.widget.FloatingToolbar$2
+com.android.internal.widget.FloatingToolbar$FloatingToolbarPopup
+com.android.internal.widget.FloatingToolbar$FloatingToolbarPopup$1
+com.android.internal.widget.FloatingToolbar$FloatingToolbarPopup$12
+com.android.internal.widget.FloatingToolbar$FloatingToolbarPopup$13
+com.android.internal.widget.FloatingToolbar$FloatingToolbarPopup$14
+com.android.internal.widget.FloatingToolbar$FloatingToolbarPopup$15
+com.android.internal.widget.FloatingToolbar$FloatingToolbarPopup$16
+com.android.internal.widget.FloatingToolbar$FloatingToolbarPopup$2
+com.android.internal.widget.FloatingToolbar$FloatingToolbarPopup$3
+com.android.internal.widget.FloatingToolbar$FloatingToolbarPopup$4
+com.android.internal.widget.FloatingToolbar$FloatingToolbarPopup$5
+com.android.internal.widget.FloatingToolbar$FloatingToolbarPopup$LogAccelerateInterpolator
+com.android.internal.widget.FloatingToolbar$FloatingToolbarPopup$OverflowPanel
+com.android.internal.widget.FloatingToolbar$FloatingToolbarPopup$OverflowPanelViewHelper
+com.android.internal.widget.ILockSettings
+com.android.internal.widget.ILockSettings$Stub
+com.android.internal.widget.ILockSettings$Stub$Proxy
+com.android.internal.widget.ImageFloatingTextView
+com.android.internal.widget.LinearLayoutWithDefaultTouchRecepient
+com.android.internal.widget.LockPatternChecker
+com.android.internal.widget.LockPatternChecker$2
+com.android.internal.widget.LockPatternChecker$3
+com.android.internal.widget.LockPatternChecker$4
+com.android.internal.widget.LockPatternChecker$OnCheckCallback
+com.android.internal.widget.LockPatternChecker$OnVerifyCallback
+com.android.internal.widget.LockPatternUtils
+com.android.internal.widget.LockPatternUtils$1
+com.android.internal.widget.LockPatternUtils$RequestThrottledException
+com.android.internal.widget.LockPatternUtils$StrongAuthTracker
+com.android.internal.widget.LockPatternUtils$StrongAuthTracker$1
+com.android.internal.widget.LockPatternUtils$StrongAuthTracker$H
+com.android.internal.widget.LockPatternView
+com.android.internal.widget.LockPatternView$4
+com.android.internal.widget.LockPatternView$5
+com.android.internal.widget.LockPatternView$6
+com.android.internal.widget.LockPatternView$7
+com.android.internal.widget.LockPatternView$8
+com.android.internal.widget.LockPatternView$Cell
+com.android.internal.widget.LockPatternView$CellState
+com.android.internal.widget.LockPatternView$DisplayMode
+com.android.internal.widget.LockPatternView$OnPatternListener
+com.android.internal.widget.LockPatternView$PatternExploreByTouchHelper
+com.android.internal.widget.MediaNotificationView
+com.android.internal.widget.PasswordEntryKeyboard
+com.android.internal.widget.PasswordEntryKeyboard$LatinKey
+com.android.internal.widget.PasswordEntryKeyboardHelper
+com.android.internal.widget.PasswordEntryKeyboardView
+com.android.internal.widget.PreferenceImageView
+com.android.internal.widget.ResolverDrawerLayout
+com.android.internal.widget.ResolverDrawerLayout$1
+com.android.internal.widget.ResolverDrawerLayout$LayoutParams
+com.android.internal.widget.ResolverDrawerLayout$OnDismissedListener
+com.android.internal.widget.ScrollBarUtils
+com.android.internal.widget.TextViewInputDisabler
+com.android.internal.widget.TextViewInputDisabler$1
+com.android.internal.widget.ToolbarWidgetWrapper
+com.android.internal.widget.ToolbarWidgetWrapper$1
+com.android.internal.widget.ToolbarWidgetWrapper$2
+com.android.internal.widget.ToolbarWidgetWrapper$3
+com.android.internal.widget.VerifyCredentialResponse
+com.android.internal.widget.VerifyCredentialResponse$1
+com.android.okhttp.Address
+com.android.okhttp.AndroidInternal
+com.android.okhttp.AndroidShimResponseCache
+com.android.okhttp.Authenticator
+com.android.okhttp.Cache
+com.android.okhttp.Cache$1
+com.android.okhttp.Cache$CacheRequestImpl
+com.android.okhttp.Cache$CacheRequestImpl$1
+com.android.okhttp.Cache$Entry
+com.android.okhttp.CacheControl
+com.android.okhttp.CacheControl$Builder
+com.android.okhttp.CertificatePinner
+com.android.okhttp.CertificatePinner$Builder
+com.android.okhttp.Challenge
+com.android.okhttp.CipherSuite
+com.android.okhttp.ConfigAwareConnectionPool
+com.android.okhttp.ConfigAwareConnectionPool$1
+com.android.okhttp.Connection
+com.android.okhttp.ConnectionPool
+com.android.okhttp.ConnectionPool$1
+com.android.okhttp.ConnectionSpec
+com.android.okhttp.ConnectionSpec$Builder
+com.android.okhttp.Dispatcher
+com.android.okhttp.Handshake
+com.android.okhttp.Headers
+com.android.okhttp.Headers$Builder
+com.android.okhttp.HttpHandler
+com.android.okhttp.HttpHandler$CleartextURLFilter
+com.android.okhttp.HttpUrl
+com.android.okhttp.HttpUrl$Builder
+com.android.okhttp.HttpUrl$Builder$ParseResult
+com.android.okhttp.HttpsHandler
+com.android.okhttp.OkCacheContainer
+com.android.okhttp.OkHttpClient
+com.android.okhttp.OkHttpClient$1
+com.android.okhttp.OkUrlFactory
+com.android.okhttp.Protocol
+com.android.okhttp.Request
+com.android.okhttp.Request$Builder
+com.android.okhttp.RequestBody
+com.android.okhttp.RequestBody$2
+com.android.okhttp.Response
+com.android.okhttp.Response$Builder
+com.android.okhttp.ResponseBody
+com.android.okhttp.Route
+com.android.okhttp.TlsVersion
+com.android.okhttp.internal.ConnectionSpecSelector
+com.android.okhttp.internal.DiskLruCache
+com.android.okhttp.internal.DiskLruCache$1
+com.android.okhttp.internal.DiskLruCache$2
+com.android.okhttp.internal.DiskLruCache$3
+com.android.okhttp.internal.DiskLruCache$Editor
+com.android.okhttp.internal.DiskLruCache$Editor$1
+com.android.okhttp.internal.DiskLruCache$Entry
+com.android.okhttp.internal.FaultHidingSink
+com.android.okhttp.internal.Internal
+com.android.okhttp.internal.InternalCache
+com.android.okhttp.internal.Network
+com.android.okhttp.internal.Network$1
+com.android.okhttp.internal.OptionalMethod
+com.android.okhttp.internal.Platform
+com.android.okhttp.internal.RouteDatabase
+com.android.okhttp.internal.URLFilter
+com.android.okhttp.internal.Util
+com.android.okhttp.internal.Util$1
+com.android.okhttp.internal.http.AuthenticatorAdapter
+com.android.okhttp.internal.http.CacheRequest
+com.android.okhttp.internal.http.CacheStrategy
+com.android.okhttp.internal.http.CacheStrategy$Factory
+com.android.okhttp.internal.http.HeaderParser
+com.android.okhttp.internal.http.HttpConnection
+com.android.okhttp.internal.http.HttpConnection$AbstractSource
+com.android.okhttp.internal.http.HttpConnection$ChunkedSink
+com.android.okhttp.internal.http.HttpConnection$ChunkedSource
+com.android.okhttp.internal.http.HttpConnection$FixedLengthSink
+com.android.okhttp.internal.http.HttpConnection$FixedLengthSource
+com.android.okhttp.internal.http.HttpConnection$UnknownLengthSource
+com.android.okhttp.internal.http.HttpEngine
+com.android.okhttp.internal.http.HttpEngine$1
+com.android.okhttp.internal.http.HttpEngine$2
+com.android.okhttp.internal.http.HttpMethod
+com.android.okhttp.internal.http.HttpTransport
+com.android.okhttp.internal.http.OkHeaders
+com.android.okhttp.internal.http.OkHeaders$1
+com.android.okhttp.internal.http.RealResponseBody
+com.android.okhttp.internal.http.RequestException
+com.android.okhttp.internal.http.RequestLine
+com.android.okhttp.internal.http.RetryableSink
+com.android.okhttp.internal.http.RouteException
+com.android.okhttp.internal.http.RouteSelector
+com.android.okhttp.internal.http.StatusLine
+com.android.okhttp.internal.http.Transport
+com.android.okhttp.internal.huc.DelegatingHttpsURLConnection
+com.android.okhttp.internal.huc.HttpURLConnectionImpl
+com.android.okhttp.internal.huc.HttpsURLConnectionImpl
+com.android.okhttp.internal.io.FileSystem
+com.android.okhttp.internal.io.FileSystem$1
+com.android.okhttp.internal.tls.OkHostnameVerifier
+com.android.okhttp.okio.AsyncTimeout
+com.android.okhttp.okio.AsyncTimeout$1
+com.android.okhttp.okio.AsyncTimeout$2
+com.android.okhttp.okio.AsyncTimeout$Watchdog
+com.android.okhttp.okio.Base64
+com.android.okhttp.okio.Buffer
+com.android.okhttp.okio.BufferedSink
+com.android.okhttp.okio.BufferedSource
+com.android.okhttp.okio.ByteString
+com.android.okhttp.okio.ForwardingSink
+com.android.okhttp.okio.ForwardingTimeout
+com.android.okhttp.okio.GzipSource
+com.android.okhttp.okio.InflaterSource
+com.android.okhttp.okio.Okio
+com.android.okhttp.okio.Okio$1
+com.android.okhttp.okio.Okio$2
+com.android.okhttp.okio.Okio$3
+com.android.okhttp.okio.RealBufferedSink
+com.android.okhttp.okio.RealBufferedSink$1
+com.android.okhttp.okio.RealBufferedSource
+com.android.okhttp.okio.RealBufferedSource$1
+com.android.okhttp.okio.Segment
+com.android.okhttp.okio.SegmentPool
+com.android.okhttp.okio.Sink
+com.android.okhttp.okio.Source
+com.android.okhttp.okio.Timeout
+com.android.okhttp.okio.Timeout$1
+com.android.okhttp.okio.Util
+com.android.org.bouncycastle.asn1.ASN1Encodable
+com.android.org.bouncycastle.asn1.ASN1Object
+com.android.org.bouncycastle.asn1.ASN1ObjectIdentifier
+com.android.org.bouncycastle.asn1.ASN1ObjectIdentifier$OidHandle
+com.android.org.bouncycastle.asn1.ASN1Primitive
+com.android.org.bouncycastle.asn1.OIDTokenizer
+com.android.org.bouncycastle.asn1.bc.BCObjectIdentifiers
+com.android.org.bouncycastle.asn1.iana.IANAObjectIdentifiers
+com.android.org.bouncycastle.asn1.misc.MiscObjectIdentifiers
+com.android.org.bouncycastle.asn1.nist.NISTObjectIdentifiers
+com.android.org.bouncycastle.asn1.oiw.OIWObjectIdentifiers
+com.android.org.bouncycastle.asn1.pkcs.PKCSObjectIdentifiers
+com.android.org.bouncycastle.asn1.x509.X509ObjectIdentifiers
+com.android.org.bouncycastle.asn1.x9.X9ObjectIdentifiers
+com.android.org.bouncycastle.crypto.AsymmetricBlockCipher
+com.android.org.bouncycastle.crypto.BlockCipher
+com.android.org.bouncycastle.crypto.BufferedBlockCipher
+com.android.org.bouncycastle.crypto.CipherKeyGenerator
+com.android.org.bouncycastle.crypto.CipherParameters
+com.android.org.bouncycastle.crypto.CryptoException
+com.android.org.bouncycastle.crypto.DataLengthException
+com.android.org.bouncycastle.crypto.Digest
+com.android.org.bouncycastle.crypto.ExtendedDigest
+com.android.org.bouncycastle.crypto.InvalidCipherTextException
+com.android.org.bouncycastle.crypto.KeyGenerationParameters
+com.android.org.bouncycastle.crypto.OutputLengthException
+com.android.org.bouncycastle.crypto.RuntimeCryptoException
+com.android.org.bouncycastle.crypto.digests.AndroidDigestFactory
+com.android.org.bouncycastle.crypto.digests.AndroidDigestFactoryInterface
+com.android.org.bouncycastle.crypto.digests.AndroidDigestFactoryOpenSSL
+com.android.org.bouncycastle.crypto.digests.OpenSSLDigest
+com.android.org.bouncycastle.crypto.digests.OpenSSLDigest$SHA1
+com.android.org.bouncycastle.crypto.encodings.OAEPEncoding
+com.android.org.bouncycastle.crypto.engines.AESFastEngine
+com.android.org.bouncycastle.crypto.engines.RSABlindedEngine
+com.android.org.bouncycastle.crypto.engines.RSACoreEngine
+com.android.org.bouncycastle.crypto.modes.CBCBlockCipher
+com.android.org.bouncycastle.crypto.paddings.BlockCipherPadding
+com.android.org.bouncycastle.crypto.paddings.PKCS7Padding
+com.android.org.bouncycastle.crypto.paddings.PaddedBufferedBlockCipher
+com.android.org.bouncycastle.crypto.params.KeyParameter
+com.android.org.bouncycastle.jcajce.PBKDFKey
+com.android.org.bouncycastle.jcajce.PKCS12Key
+com.android.org.bouncycastle.jcajce.provider.asymmetric.DH$Mappings
+com.android.org.bouncycastle.jcajce.provider.asymmetric.DSA$Mappings
+com.android.org.bouncycastle.jcajce.provider.asymmetric.EC$Mappings
+com.android.org.bouncycastle.jcajce.provider.asymmetric.RSA$Mappings
+com.android.org.bouncycastle.jcajce.provider.asymmetric.X509$Mappings
+com.android.org.bouncycastle.jcajce.provider.asymmetric.dh.KeyFactorySpi
+com.android.org.bouncycastle.jcajce.provider.asymmetric.dsa.DSAUtil
+com.android.org.bouncycastle.jcajce.provider.asymmetric.dsa.KeyFactorySpi
+com.android.org.bouncycastle.jcajce.provider.asymmetric.ec.KeyFactorySpi
+com.android.org.bouncycastle.jcajce.provider.asymmetric.ec.KeyFactorySpi$EC
+com.android.org.bouncycastle.jcajce.provider.asymmetric.rsa.CipherSpi
+com.android.org.bouncycastle.jcajce.provider.asymmetric.rsa.CipherSpi$NoPadding
+com.android.org.bouncycastle.jcajce.provider.asymmetric.rsa.KeyFactorySpi
+com.android.org.bouncycastle.jcajce.provider.asymmetric.util.BaseCipherSpi
+com.android.org.bouncycastle.jcajce.provider.asymmetric.util.BaseKeyFactorySpi
+com.android.org.bouncycastle.jcajce.provider.config.ConfigurableProvider
+com.android.org.bouncycastle.jcajce.provider.config.ProviderConfiguration
+com.android.org.bouncycastle.jcajce.provider.config.ProviderConfigurationPermission
+com.android.org.bouncycastle.jcajce.provider.digest.DigestAlgorithmProvider
+com.android.org.bouncycastle.jcajce.provider.digest.MD5
+com.android.org.bouncycastle.jcajce.provider.digest.MD5$Mappings
+com.android.org.bouncycastle.jcajce.provider.digest.SHA1
+com.android.org.bouncycastle.jcajce.provider.digest.SHA1$KeyGenerator
+com.android.org.bouncycastle.jcajce.provider.digest.SHA1$Mappings
+com.android.org.bouncycastle.jcajce.provider.digest.SHA224
+com.android.org.bouncycastle.jcajce.provider.digest.SHA224$Mappings
+com.android.org.bouncycastle.jcajce.provider.digest.SHA256
+com.android.org.bouncycastle.jcajce.provider.digest.SHA256$Mappings
+com.android.org.bouncycastle.jcajce.provider.digest.SHA384
+com.android.org.bouncycastle.jcajce.provider.digest.SHA384$Mappings
+com.android.org.bouncycastle.jcajce.provider.digest.SHA512
+com.android.org.bouncycastle.jcajce.provider.digest.SHA512$Mappings
+com.android.org.bouncycastle.jcajce.provider.keystore.BC$Mappings
+com.android.org.bouncycastle.jcajce.provider.keystore.PKCS12$Mappings
+com.android.org.bouncycastle.jcajce.provider.keystore.bc.BcKeyStoreSpi
+com.android.org.bouncycastle.jcajce.provider.keystore.bc.BcKeyStoreSpi$Std
+com.android.org.bouncycastle.jcajce.provider.symmetric.AES
+com.android.org.bouncycastle.jcajce.provider.symmetric.AES$ECB
+com.android.org.bouncycastle.jcajce.provider.symmetric.AES$ECB$1
+com.android.org.bouncycastle.jcajce.provider.symmetric.AES$KeyGen
+com.android.org.bouncycastle.jcajce.provider.symmetric.AES$Mappings
+com.android.org.bouncycastle.jcajce.provider.symmetric.ARC4
+com.android.org.bouncycastle.jcajce.provider.symmetric.ARC4$Mappings
+com.android.org.bouncycastle.jcajce.provider.symmetric.Blowfish
+com.android.org.bouncycastle.jcajce.provider.symmetric.Blowfish$Mappings
+com.android.org.bouncycastle.jcajce.provider.symmetric.DES
+com.android.org.bouncycastle.jcajce.provider.symmetric.DES$Mappings
+com.android.org.bouncycastle.jcajce.provider.symmetric.DESede
+com.android.org.bouncycastle.jcajce.provider.symmetric.DESede$Mappings
+com.android.org.bouncycastle.jcajce.provider.symmetric.PBEPKCS12
+com.android.org.bouncycastle.jcajce.provider.symmetric.PBEPKCS12$Mappings
+com.android.org.bouncycastle.jcajce.provider.symmetric.RC2
+com.android.org.bouncycastle.jcajce.provider.symmetric.RC2$Mappings
+com.android.org.bouncycastle.jcajce.provider.symmetric.SymmetricAlgorithmProvider
+com.android.org.bouncycastle.jcajce.provider.symmetric.Twofish
+com.android.org.bouncycastle.jcajce.provider.symmetric.Twofish$Mappings
+com.android.org.bouncycastle.jcajce.provider.symmetric.util.BCPBEKey
+com.android.org.bouncycastle.jcajce.provider.symmetric.util.BaseBlockCipher
+com.android.org.bouncycastle.jcajce.provider.symmetric.util.BaseBlockCipher$BufferedGenericBlockCipher
+com.android.org.bouncycastle.jcajce.provider.symmetric.util.BaseBlockCipher$GenericBlockCipher
+com.android.org.bouncycastle.jcajce.provider.symmetric.util.BaseKeyGenerator
+com.android.org.bouncycastle.jcajce.provider.symmetric.util.BaseWrapCipher
+com.android.org.bouncycastle.jcajce.provider.symmetric.util.BlockCipherProvider
+com.android.org.bouncycastle.jcajce.provider.symmetric.util.PBE
+com.android.org.bouncycastle.jcajce.provider.util.AlgorithmProvider
+com.android.org.bouncycastle.jcajce.provider.util.AsymmetricAlgorithmProvider
+com.android.org.bouncycastle.jcajce.provider.util.AsymmetricKeyInfoConverter
+com.android.org.bouncycastle.jcajce.provider.util.DigestFactory
+com.android.org.bouncycastle.jcajce.util.BCJcaJceHelper
+com.android.org.bouncycastle.jcajce.util.JcaJceHelper
+com.android.org.bouncycastle.jcajce.util.ProviderJcaJceHelper
+com.android.org.bouncycastle.jce.interfaces.BCKeyStore
+com.android.org.bouncycastle.jce.provider.BouncyCastleProvider
+com.android.org.bouncycastle.jce.provider.BouncyCastleProvider$1
+com.android.org.bouncycastle.jce.provider.BouncyCastleProviderConfiguration
+com.android.org.bouncycastle.util.Arrays
+com.android.org.bouncycastle.util.Encodable
+com.android.org.bouncycastle.util.Strings
+com.android.org.bouncycastle.util.Strings$1
+com.android.org.conscrypt.AbstractSessionContext
+com.android.org.conscrypt.AbstractSessionContext$1
+com.android.org.conscrypt.AddressUtils
+com.android.org.conscrypt.ByteArray
+com.android.org.conscrypt.CertPinManager
+com.android.org.conscrypt.CertificatePriorityComparator
+com.android.org.conscrypt.ChainStrengthAnalyzer
+com.android.org.conscrypt.ClientSessionContext
+com.android.org.conscrypt.ClientSessionContext$HostAndPort
+com.android.org.conscrypt.CryptoUpcalls
+com.android.org.conscrypt.FileClientSessionCache
+com.android.org.conscrypt.FileClientSessionCache$CacheFile
+com.android.org.conscrypt.FileClientSessionCache$Impl
+com.android.org.conscrypt.Hex
+com.android.org.conscrypt.JSSEProvider
+com.android.org.conscrypt.KeyManagerFactoryImpl
+com.android.org.conscrypt.KeyManagerImpl
+com.android.org.conscrypt.NativeCrypto
+com.android.org.conscrypt.NativeCrypto$SSLHandshakeCallbacks
+com.android.org.conscrypt.NativeCryptoJni
+com.android.org.conscrypt.NativeRef
+com.android.org.conscrypt.NativeRef$EC_GROUP
+com.android.org.conscrypt.NativeRef$EC_POINT
+com.android.org.conscrypt.NativeRef$EVP_CIPHER_CTX
+com.android.org.conscrypt.NativeRef$EVP_MD_CTX
+com.android.org.conscrypt.NativeRef$EVP_PKEY
+com.android.org.conscrypt.NativeRef$HMAC_CTX
+com.android.org.conscrypt.OpenSSLBIOInputStream
+com.android.org.conscrypt.OpenSSLCipher
+com.android.org.conscrypt.OpenSSLCipher$EVP_CIPHER
+com.android.org.conscrypt.OpenSSLCipher$EVP_CIPHER$AES
+com.android.org.conscrypt.OpenSSLCipher$EVP_CIPHER$AES$CBC
+com.android.org.conscrypt.OpenSSLCipher$EVP_CIPHER$AES$CBC$PKCS5Padding
+com.android.org.conscrypt.OpenSSLCipher$Mode
+com.android.org.conscrypt.OpenSSLCipher$Padding
+com.android.org.conscrypt.OpenSSLContextImpl
+com.android.org.conscrypt.OpenSSLContextImpl$TLSv12
+com.android.org.conscrypt.OpenSSLECGroupContext
+com.android.org.conscrypt.OpenSSLECKeyFactory
+com.android.org.conscrypt.OpenSSLECPointContext
+com.android.org.conscrypt.OpenSSLECPublicKey
+com.android.org.conscrypt.OpenSSLExtendedSessionImpl
+com.android.org.conscrypt.OpenSSLKey
+com.android.org.conscrypt.OpenSSLKeyHolder
+com.android.org.conscrypt.OpenSSLMac
+com.android.org.conscrypt.OpenSSLMac$HmacSHA1
+com.android.org.conscrypt.OpenSSLMessageDigestJDK
+com.android.org.conscrypt.OpenSSLMessageDigestJDK$MD5
+com.android.org.conscrypt.OpenSSLMessageDigestJDK$SHA1
+com.android.org.conscrypt.OpenSSLMessageDigestJDK$SHA256
+com.android.org.conscrypt.OpenSSLMessageDigestJDK$SHA512
+com.android.org.conscrypt.OpenSSLProvider
+com.android.org.conscrypt.OpenSSLRSAKeyFactory
+com.android.org.conscrypt.OpenSSLRSAKeyPairGenerator
+com.android.org.conscrypt.OpenSSLRSAPrivateCrtKey
+com.android.org.conscrypt.OpenSSLRSAPrivateKey
+com.android.org.conscrypt.OpenSSLRSAPublicKey
+com.android.org.conscrypt.OpenSSLRandom
+com.android.org.conscrypt.OpenSSLSessionImpl
+com.android.org.conscrypt.OpenSSLSignature
+com.android.org.conscrypt.OpenSSLSignature$EngineType
+com.android.org.conscrypt.OpenSSLSignature$RSAPKCS1Padding
+com.android.org.conscrypt.OpenSSLSignature$SHA1RSA
+com.android.org.conscrypt.OpenSSLSignature$SHA256RSA
+com.android.org.conscrypt.OpenSSLSocketFactoryImpl
+com.android.org.conscrypt.OpenSSLSocketImpl
+com.android.org.conscrypt.OpenSSLSocketImpl$SSLInputStream
+com.android.org.conscrypt.OpenSSLSocketImpl$SSLOutputStream
+com.android.org.conscrypt.OpenSSLSocketImplWrapper
+com.android.org.conscrypt.OpenSSLX509CertPath
+com.android.org.conscrypt.OpenSSLX509CertPath$Encoding
+com.android.org.conscrypt.OpenSSLX509Certificate
+com.android.org.conscrypt.OpenSSLX509CertificateFactory
+com.android.org.conscrypt.OpenSSLX509CertificateFactory$1
+com.android.org.conscrypt.OpenSSLX509CertificateFactory$2
+com.android.org.conscrypt.OpenSSLX509CertificateFactory$Parser
+com.android.org.conscrypt.OpenSSLX509CertificateFactory$ParsingException
+com.android.org.conscrypt.PinEntryException
+com.android.org.conscrypt.PinManagerException
+com.android.org.conscrypt.Platform
+com.android.org.conscrypt.SSLClientSessionCache
+com.android.org.conscrypt.SSLParametersImpl
+com.android.org.conscrypt.SSLParametersImpl$AliasChooser
+com.android.org.conscrypt.SSLParametersImpl$PSKCallbacks
+com.android.org.conscrypt.ServerSessionContext
+com.android.org.conscrypt.TrustManagerFactoryImpl
+com.android.org.conscrypt.TrustManagerImpl
+com.android.org.conscrypt.TrustManagerImpl$ExtendedKeyUsagePKIXCertPathChecker
+com.android.org.conscrypt.TrustManagerImpl$TrustAnchorComparator
+com.android.org.conscrypt.TrustedCertificateIndex
+com.android.org.conscrypt.TrustedCertificateKeyStoreSpi
+com.android.org.conscrypt.TrustedCertificateStore
+com.android.org.conscrypt.TrustedCertificateStore$1
+com.android.org.conscrypt.TrustedCertificateStore$CertSelector
+com.android.org.conscrypt.util.ArrayUtils
+com.android.protobuf.nano.CodedInputByteBufferNano
+com.android.protobuf.nano.InternalNano
+com.android.protobuf.nano.InvalidProtocolBufferNanoException
+com.android.protobuf.nano.MessageNano
+com.android.protobuf.nano.WireFormatNano
+com.android.server.AppWidgetBackupBridge
+com.android.server.BootReceiver
+com.android.server.BootReceiver$1
+com.android.server.BootReceiver$2
+com.android.server.LocalServices
+com.android.server.NetworkManagementSocketTagger
+com.android.server.NetworkManagementSocketTagger$1
+com.android.server.NetworkManagementSocketTagger$SocketTags
+com.android.server.SystemConfig
+com.android.server.SystemConfig$PermissionEntry
+com.android.server.WidgetBackupProvider
+com.android.server.backup.AccountSyncSettingsBackupHelper
+com.android.server.net.BaseNetworkObserver
+com.android.server.net.DnsServerRepository
+com.android.server.net.NetlinkTracker
+com.android.server.net.NetlinkTracker$Callback
+com.android.server.sip.SipService
+com.android.server.sip.SipService$ConnectivityReceiver
+com.android.server.sip.SipService$MyExecutor
+com.android.server.sip.SipWakeLock
+com.android.server.sip.SipWakeupTimer
+com.android.server.sip.SipWakeupTimer$MyEventComparator
+com.google.android.collect.Lists
+com.google.android.collect.Maps
+com.google.android.collect.Sets
+com.google.android.gles_jni.EGLConfigImpl
+com.google.android.gles_jni.EGLContextImpl
+com.google.android.gles_jni.EGLDisplayImpl
+com.google.android.gles_jni.EGLImpl
+com.google.android.gles_jni.EGLSurfaceImpl
+com.google.android.gles_jni.GLImpl
+com.google.android.mms.MmsException
+dalvik.system.BaseDexClassLoader
+dalvik.system.BlockGuard
+dalvik.system.BlockGuard$1
+dalvik.system.BlockGuard$2
+dalvik.system.BlockGuard$BlockGuardPolicyException
+dalvik.system.BlockGuard$Policy
+dalvik.system.CloseGuard
+dalvik.system.CloseGuard$DefaultReporter
+dalvik.system.CloseGuard$Reporter
+dalvik.system.DalvikLogHandler
+dalvik.system.DalvikLogging
+dalvik.system.DexClassLoader
+dalvik.system.DexFile
+dalvik.system.DexFile$DFEnum
+dalvik.system.DexPathList
+dalvik.system.DexPathList$Element
+dalvik.system.PathClassLoader
+dalvik.system.SocketTagger
+dalvik.system.SocketTagger$1
+dalvik.system.VMDebug
+dalvik.system.VMRuntime
+dalvik.system.VMStack
+dalvik.system.ZygoteHooks
+java.beans.ChangeListenerMap
+java.beans.PropertyChangeEvent
+java.beans.PropertyChangeListener
+java.beans.PropertyChangeSupport
+java.beans.PropertyChangeSupport$PropertyChangeListenerMap
+java.io.Bits
+java.io.BufferedInputStream
+java.io.BufferedOutputStream
+java.io.BufferedReader
+java.io.BufferedWriter
+java.io.ByteArrayInputStream
+java.io.ByteArrayOutputStream
+java.io.CharArrayReader
+java.io.CharArrayWriter
+java.io.CharConversionException
+java.io.Closeable
+java.io.Console
+java.io.DataInput
+java.io.DataInputStream
+java.io.DataOutput
+java.io.DataOutputStream
+java.io.EOFException
+java.io.ExpiringCache
+java.io.ExpiringCache$1
+java.io.ExpiringCache$Entry
+java.io.Externalizable
+java.io.File
+java.io.File$PathStatus
+java.io.FileDescriptor
+java.io.FileFilter
+java.io.FileInputStream
+java.io.FileInputStream$UseManualSkipException
+java.io.FileNotFoundException
+java.io.FileOutputStream
+java.io.FileReader
+java.io.FileSystem
+java.io.FileWriter
+java.io.FilenameFilter
+java.io.FilterInputStream
+java.io.FilterOutputStream
+java.io.FilterReader
+java.io.Flushable
+java.io.IOException
+java.io.InputStream
+java.io.InputStreamReader
+java.io.InterruptedIOException
+java.io.InvalidClassException
+java.io.InvalidObjectException
+java.io.ObjectInput
+java.io.ObjectInputStream
+java.io.ObjectInputStream$BlockDataInputStream
+java.io.ObjectInputStream$HandleTable
+java.io.ObjectInputStream$HandleTable$HandleList
+java.io.ObjectInputStream$PeekInputStream
+java.io.ObjectInputStream$ValidationList
+java.io.ObjectOutput
+java.io.ObjectOutputStream
+java.io.ObjectOutputStream$BlockDataOutputStream
+java.io.ObjectOutputStream$HandleTable
+java.io.ObjectOutputStream$ReplaceTable
+java.io.ObjectStreamClass
+java.io.ObjectStreamClass$1
+java.io.ObjectStreamClass$2
+java.io.ObjectStreamClass$3
+java.io.ObjectStreamClass$4
+java.io.ObjectStreamClass$5
+java.io.ObjectStreamClass$Caches
+java.io.ObjectStreamClass$ClassDataSlot
+java.io.ObjectStreamClass$EntryFuture
+java.io.ObjectStreamClass$ExceptionInfo
+java.io.ObjectStreamClass$FieldReflector
+java.io.ObjectStreamClass$FieldReflectorKey
+java.io.ObjectStreamClass$MemberSignature
+java.io.ObjectStreamClass$WeakClassKey
+java.io.ObjectStreamConstants
+java.io.ObjectStreamException
+java.io.ObjectStreamField
+java.io.OutputStream
+java.io.OutputStreamWriter
+java.io.PipedInputStream
+java.io.PipedOutputStream
+java.io.PrintStream
+java.io.PrintWriter
+java.io.PushbackInputStream
+java.io.PushbackReader
+java.io.RandomAccessFile
+java.io.Reader
+java.io.SequenceInputStream
+java.io.SerialCallbackContext
+java.io.Serializable
+java.io.SerializablePermission
+java.io.StreamCorruptedException
+java.io.StringBufferInputStream
+java.io.StringReader
+java.io.StringWriter
+java.io.UTFDataFormatException
+java.io.UnixFileSystem
+java.io.UnsupportedEncodingException
+java.io.Writer
+java.lang.AbstractMethodError
+java.lang.AbstractStringBuilder
+java.lang.Appendable
+java.lang.ArithmeticException
+java.lang.ArrayIndexOutOfBoundsException
+java.lang.ArrayStoreException
+java.lang.AssertionError
+java.lang.AutoCloseable
+java.lang.Boolean
+java.lang.BootClassLoader
+java.lang.Byte
+java.lang.Byte$ByteCache
+java.lang.CaseMapper
+java.lang.CaseMapper$1
+java.lang.CharSequence
+java.lang.Character
+java.lang.Character$CharacterCache
+java.lang.Character$Subset
+java.lang.Character$UnicodeBlock
+java.lang.Class
+java.lang.Class$Caches
+java.lang.ClassCastException
+java.lang.ClassCircularityError
+java.lang.ClassLoader
+java.lang.ClassLoader$SystemClassLoader
+java.lang.ClassNotFoundException
+java.lang.CloneNotSupportedException
+java.lang.Cloneable
+java.lang.Comparable
+java.lang.Daemons
+java.lang.Daemons$Daemon
+java.lang.Daemons$FinalizerDaemon
+java.lang.Daemons$FinalizerWatchdogDaemon
+java.lang.Daemons$HeapTaskDaemon
+java.lang.Daemons$ReferenceQueueDaemon
+java.lang.Deprecated
+java.lang.DexCache
+java.lang.Double
+java.lang.Enum
+java.lang.Enum$1
+java.lang.EnumConstantNotPresentException
+java.lang.Error
+java.lang.Exception
+java.lang.ExceptionInInitializerError
+java.lang.Float
+java.lang.FloatingDecimal
+java.lang.FloatingDecimal$1
+java.lang.FloatingDecimal$2
+java.lang.IllegalAccessError
+java.lang.IllegalAccessException
+java.lang.IllegalArgumentException
+java.lang.IllegalMonitorStateException
+java.lang.IllegalStateException
+java.lang.IllegalThreadStateException
+java.lang.IncompatibleClassChangeError
+java.lang.IndexOutOfBoundsException
+java.lang.InheritableThreadLocal
+java.lang.InstantiationException
+java.lang.Integer
+java.lang.Integer$IntegerCache
+java.lang.InternalError
+java.lang.InterruptedException
+java.lang.Iterable
+java.lang.JavaLangAccess
+java.lang.LinkageError
+java.lang.Long
+java.lang.Long$LongCache
+java.lang.Math
+java.lang.Math$NoImagePreloadHolder
+java.lang.NoClassDefFoundError
+java.lang.NoSuchFieldError
+java.lang.NoSuchFieldException
+java.lang.NoSuchMethodError
+java.lang.NoSuchMethodException
+java.lang.NullPointerException
+java.lang.Number
+java.lang.NumberFormatException
+java.lang.Object
+java.lang.OutOfMemoryError
+java.lang.Package
+java.lang.Process
+java.lang.ProcessBuilder
+java.lang.ProcessBuilder$NullInputStream
+java.lang.ProcessBuilder$NullOutputStream
+java.lang.ProcessEnvironment
+java.lang.ProcessEnvironment$ExternalData
+java.lang.ProcessEnvironment$StringEnvironment
+java.lang.ProcessEnvironment$Value
+java.lang.ProcessEnvironment$Variable
+java.lang.ProcessImpl
+java.lang.Readable
+java.lang.ReflectiveOperationException
+java.lang.Runnable
+java.lang.Runtime
+java.lang.RuntimeException
+java.lang.RuntimePermission
+java.lang.SecurityException
+java.lang.SecurityManager
+java.lang.Short
+java.lang.Short$ShortCache
+java.lang.Shutdown
+java.lang.StackOverflowError
+java.lang.StackTraceElement
+java.lang.StrictMath
+java.lang.String
+java.lang.String$CaseInsensitiveComparator
+java.lang.StringBuffer
+java.lang.StringBuilder
+java.lang.StringCoding
+java.lang.StringFactory
+java.lang.StringIndexOutOfBoundsException
+java.lang.System
+java.lang.System$PropertiesWithNonOverrideableDefaults
+java.lang.Thread
+java.lang.Thread$1
+java.lang.Thread$Caches
+java.lang.Thread$State
+java.lang.Thread$UncaughtExceptionHandler
+java.lang.Thread$WeakClassKey
+java.lang.ThreadDeath
+java.lang.ThreadGroup
+java.lang.ThreadLocal
+java.lang.ThreadLocal$ThreadLocalMap
+java.lang.ThreadLocal$ThreadLocalMap$Entry
+java.lang.Throwable
+java.lang.Throwable$PrintStreamOrWriter
+java.lang.Throwable$SentinelHolder
+java.lang.Throwable$WrappedPrintStream
+java.lang.Throwable$WrappedPrintWriter
+java.lang.TypeNotPresentException
+java.lang.UNIXProcess
+java.lang.UNIXProcess$1
+java.lang.UNIXProcess$2
+java.lang.UNIXProcess$3
+java.lang.UNIXProcess$ProcessPipeInputStream
+java.lang.UNIXProcess$ProcessPipeOutputStream
+java.lang.UNIXProcess$ProcessReaperThreadFactory
+java.lang.UNIXProcess$ProcessReaperThreadFactory$1
+java.lang.UnsatisfiedLinkError
+java.lang.UnsupportedOperationException
+java.lang.VMClassLoader
+java.lang.VerifyError
+java.lang.VirtualMachineError
+java.lang.Void
+java.lang.annotation.Annotation
+java.lang.annotation.AnnotationTypeMismatchException
+java.lang.annotation.IncompleteAnnotationException
+java.lang.annotation.Inherited
+java.lang.annotation.Retention
+java.lang.annotation.Target
+java.lang.ref.FinalizerReference
+java.lang.ref.FinalizerReference$Sentinel
+java.lang.ref.PhantomReference
+java.lang.ref.Reference
+java.lang.ref.ReferenceQueue
+java.lang.ref.SoftReference
+java.lang.ref.WeakReference
+java.lang.reflect.AbstractMethod
+java.lang.reflect.AbstractMethod$GenericInfo
+java.lang.reflect.AccessibleObject
+java.lang.reflect.AnnotatedElement
+java.lang.reflect.Array
+java.lang.reflect.Constructor
+java.lang.reflect.Field
+java.lang.reflect.GenericArrayType
+java.lang.reflect.GenericDeclaration
+java.lang.reflect.InvocationHandler
+java.lang.reflect.InvocationTargetException
+java.lang.reflect.Member
+java.lang.reflect.Method
+java.lang.reflect.Method$1
+java.lang.reflect.Modifier
+java.lang.reflect.ParameterizedType
+java.lang.reflect.Proxy
+java.lang.reflect.Proxy$1
+java.lang.reflect.Type
+java.lang.reflect.TypeVariable
+java.lang.reflect.UndeclaredThrowableException
+java.lang.reflect.WildcardType
+java.math.BigDecimal
+java.math.BigInt
+java.math.BigInteger
+java.math.BitLevel
+java.math.Conversion
+java.math.Division
+java.math.Multiplication
+java.math.NativeBN
+java.math.RoundingMode
+java.net.AbstractPlainDatagramSocketImpl
+java.net.AbstractPlainSocketImpl
+java.net.AddressCache
+java.net.AddressCache$AddressCacheEntry
+java.net.AddressCache$AddressCacheKey
+java.net.Authenticator
+java.net.Authenticator$RequestorType
+java.net.ConnectException
+java.net.CookieHandler
+java.net.CookieManager
+java.net.CookiePolicy
+java.net.CookiePolicy$1
+java.net.CookiePolicy$2
+java.net.CookiePolicy$3
+java.net.CookieStore
+java.net.DatagramPacket
+java.net.DatagramSocket
+java.net.DatagramSocket$1
+java.net.DatagramSocketImpl
+java.net.DefaultDatagramSocketImplFactory
+java.net.DefaultFileNameMap
+java.net.DefaultInterface
+java.net.FileNameMap
+java.net.HttpCookie
+java.net.HttpCookie$1
+java.net.HttpCookie$10
+java.net.HttpCookie$11
+java.net.HttpCookie$2
+java.net.HttpCookie$3
+java.net.HttpCookie$4
+java.net.HttpCookie$5
+java.net.HttpCookie$6
+java.net.HttpCookie$7
+java.net.HttpCookie$8
+java.net.HttpCookie$9
+java.net.HttpCookie$CookieAttributeAssignor
+java.net.HttpURLConnection
+java.net.IDN
+java.net.InMemoryCookieStore
+java.net.Inet4Address
+java.net.Inet6Address
+java.net.Inet6AddressImpl
+java.net.InetAddress
+java.net.InetAddress$1
+java.net.InetAddress$InetAddressHolder
+java.net.InetAddressImpl
+java.net.InetSocketAddress
+java.net.InetSocketAddress$InetSocketAddressHolder
+java.net.InterfaceAddress
+java.net.JarURLConnection
+java.net.MalformedURLException
+java.net.MulticastSocket
+java.net.NetworkInterface
+java.net.NetworkInterface$1
+java.net.NetworkInterface$1checkedAddresses
+java.net.NoRouteToHostException
+java.net.Parts
+java.net.PasswordAuthentication
+java.net.PlainDatagramSocketImpl
+java.net.PlainSocketImpl
+java.net.PortUnreachableException
+java.net.ProtocolException
+java.net.ProtocolFamily
+java.net.Proxy
+java.net.Proxy$Type
+java.net.ProxySelector
+java.net.ResponseCache
+java.net.ServerSocket
+java.net.Socket
+java.net.Socket$1
+java.net.Socket$2
+java.net.Socket$3
+java.net.SocketAddress
+java.net.SocketException
+java.net.SocketImpl
+java.net.SocketInputStream
+java.net.SocketOptions
+java.net.SocketOutputStream
+java.net.SocketTimeoutException
+java.net.SocksConsts
+java.net.SocksSocketImpl
+java.net.SocksSocketImpl$3
+java.net.StandardProtocolFamily
+java.net.URI
+java.net.URI$Parser
+java.net.URISyntaxException
+java.net.URL
+java.net.URLConnection
+java.net.URLDecoder
+java.net.URLEncoder
+java.net.URLStreamHandler
+java.net.URLStreamHandlerFactory
+java.net.UnknownHostException
+java.net.UnknownServiceException
+java.nio.Bits
+java.nio.Buffer
+java.nio.BufferOverflowException
+java.nio.BufferUnderflowException
+java.nio.ByteBuffer
+java.nio.ByteBufferAsCharBuffer
+java.nio.ByteBufferAsDoubleBuffer
+java.nio.ByteBufferAsFloatBuffer
+java.nio.ByteBufferAsIntBuffer
+java.nio.ByteBufferAsLongBuffer
+java.nio.ByteBufferAsShortBuffer
+java.nio.ByteOrder
+java.nio.CharBuffer
+java.nio.DirectByteBuffer
+java.nio.DirectByteBuffer$MemoryRef
+java.nio.DoubleBuffer
+java.nio.FloatBuffer
+java.nio.HeapByteBuffer
+java.nio.HeapCharBuffer
+java.nio.HeapIntBuffer
+java.nio.IntBuffer
+java.nio.InvalidMarkException
+java.nio.LongBuffer
+java.nio.MappedByteBuffer
+java.nio.NIOAccess
+java.nio.NioUtils
+java.nio.ReadOnlyBufferException
+java.nio.ShortBuffer
+java.nio.StringCharBuffer
+java.nio.channels.AsynchronousCloseException
+java.nio.channels.ByteChannel
+java.nio.channels.CancelledKeyException
+java.nio.channels.Channel
+java.nio.channels.Channels
+java.nio.channels.Channels$1
+java.nio.channels.Channels$ReadableByteChannelImpl
+java.nio.channels.ClosedByInterruptException
+java.nio.channels.ClosedChannelException
+java.nio.channels.DatagramChannel
+java.nio.channels.FileChannel
+java.nio.channels.FileChannel$MapMode
+java.nio.channels.FileLock
+java.nio.channels.GatheringByteChannel
+java.nio.channels.InterruptibleChannel
+java.nio.channels.NetworkChannel
+java.nio.channels.NonWritableChannelException
+java.nio.channels.OverlappingFileLockException
+java.nio.channels.Pipe
+java.nio.channels.Pipe$SinkChannel
+java.nio.channels.Pipe$SourceChannel
+java.nio.channels.ReadableByteChannel
+java.nio.channels.ScatteringByteChannel
+java.nio.channels.SeekableByteChannel
+java.nio.channels.SelectableChannel
+java.nio.channels.SelectionKey
+java.nio.channels.Selector
+java.nio.channels.ServerSocketChannel
+java.nio.channels.SocketChannel
+java.nio.channels.WritableByteChannel
+java.nio.channels.spi.AbstractInterruptibleChannel
+java.nio.channels.spi.AbstractInterruptibleChannel$1
+java.nio.channels.spi.AbstractSelectableChannel
+java.nio.channels.spi.AbstractSelectionKey
+java.nio.channels.spi.AbstractSelector
+java.nio.channels.spi.AbstractSelector$1
+java.nio.channels.spi.SelectorProvider
+java.nio.channels.spi.SelectorProvider$1
+java.nio.charset.CharacterCodingException
+java.nio.charset.Charset
+java.nio.charset.CharsetDecoder
+java.nio.charset.CharsetDecoderICU
+java.nio.charset.CharsetEncoder
+java.nio.charset.CharsetEncoderICU
+java.nio.charset.CharsetICU
+java.nio.charset.CoderResult
+java.nio.charset.CoderResult$1
+java.nio.charset.CoderResult$2
+java.nio.charset.CoderResult$Cache
+java.nio.charset.CodingErrorAction
+java.nio.charset.IllegalCharsetNameException
+java.nio.charset.StandardCharsets
+java.nio.charset.UnsupportedCharsetException
+java.security.AccessControlContext
+java.security.AccessControlException
+java.security.AccessController
+java.security.AlgorithmConstraints
+java.security.AlgorithmParameters
+java.security.AlgorithmParametersSpi
+java.security.BasicPermission
+java.security.CodeSigner
+java.security.CryptoPrimitive
+java.security.DigestException
+java.security.DigestInputStream
+java.security.GeneralSecurityException
+java.security.Guard
+java.security.InvalidAlgorithmParameterException
+java.security.InvalidKeyException
+java.security.InvalidParameterException
+java.security.Key
+java.security.KeyException
+java.security.KeyFactory
+java.security.KeyFactorySpi
+java.security.KeyManagementException
+java.security.KeyPair
+java.security.KeyPairGenerator
+java.security.KeyPairGenerator$Delegate
+java.security.KeyPairGeneratorSpi
+java.security.KeyStore
+java.security.KeyStore$1
+java.security.KeyStore$LoadStoreParameter
+java.security.KeyStoreException
+java.security.KeyStoreSpi
+java.security.MessageDigest
+java.security.MessageDigest$Delegate
+java.security.MessageDigestSpi
+java.security.NoSuchAlgorithmException
+java.security.NoSuchProviderException
+java.security.Permission
+java.security.PermissionCollection
+java.security.Permissions
+java.security.Principal
+java.security.PrivateKey
+java.security.PrivilegedAction
+java.security.PrivilegedActionException
+java.security.PrivilegedExceptionAction
+java.security.ProtectionDomain
+java.security.Provider
+java.security.Provider$EngineDescription
+java.security.Provider$Service
+java.security.Provider$ServiceKey
+java.security.Provider$UString
+java.security.PublicKey
+java.security.SecureRandom
+java.security.SecureRandomSpi
+java.security.Security
+java.security.Signature
+java.security.Signature$Delegate
+java.security.SignatureException
+java.security.SignatureSpi
+java.security.UnrecoverableEntryException
+java.security.UnrecoverableKeyException
+java.security.cert.CRL
+java.security.cert.CRLException
+java.security.cert.CertPath
+java.security.cert.CertPathChecker
+java.security.cert.CertPathHelperImpl
+java.security.cert.CertPathParameters
+java.security.cert.CertPathValidator
+java.security.cert.CertPathValidatorException
+java.security.cert.CertPathValidatorResult
+java.security.cert.CertPathValidatorSpi
+java.security.cert.CertSelector
+java.security.cert.Certificate
+java.security.cert.CertificateEncodingException
+java.security.cert.CertificateException
+java.security.cert.CertificateExpiredException
+java.security.cert.CertificateFactory
+java.security.cert.CertificateFactorySpi
+java.security.cert.CertificateNotYetValidException
+java.security.cert.CertificateParsingException
+java.security.cert.Extension
+java.security.cert.PKIXCertPathChecker
+java.security.cert.PKIXCertPathValidatorResult
+java.security.cert.PKIXParameters
+java.security.cert.PKIXRevocationChecker
+java.security.cert.PolicyNode
+java.security.cert.PolicyQualifierInfo
+java.security.cert.TrustAnchor
+java.security.cert.X509CertSelector
+java.security.cert.X509Certificate
+java.security.cert.X509Extension
+java.security.interfaces.DSAKey
+java.security.interfaces.DSAPublicKey
+java.security.interfaces.ECKey
+java.security.interfaces.ECPrivateKey
+java.security.interfaces.ECPublicKey
+java.security.interfaces.RSAKey
+java.security.interfaces.RSAPrivateCrtKey
+java.security.interfaces.RSAPrivateKey
+java.security.interfaces.RSAPublicKey
+java.security.spec.AlgorithmParameterSpec
+java.security.spec.ECField
+java.security.spec.ECFieldF2m
+java.security.spec.ECFieldFp
+java.security.spec.ECParameterSpec
+java.security.spec.ECPoint
+java.security.spec.ECPublicKeySpec
+java.security.spec.EllipticCurve
+java.security.spec.EncodedKeySpec
+java.security.spec.InvalidKeySpecException
+java.security.spec.InvalidParameterSpecException
+java.security.spec.KeySpec
+java.security.spec.MGF1ParameterSpec
+java.security.spec.PKCS8EncodedKeySpec
+java.security.spec.RSAPublicKeySpec
+java.security.spec.X509EncodedKeySpec
+java.sql.Date
+java.sql.Time
+java.sql.Timestamp
+java.text.AttributedCharacterIterator$Attribute
+java.text.Bidi
+java.text.BreakIterator
+java.text.CalendarBuilder
+java.text.CharacterIterator
+java.text.CollationKey
+java.text.Collator
+java.text.DateFormat
+java.text.DateFormat$Field
+java.text.DateFormatSymbols
+java.text.DecimalFormat
+java.text.DecimalFormatSymbols
+java.text.DontCareFieldPosition
+java.text.DontCareFieldPosition$1
+java.text.FieldPosition
+java.text.FieldPosition$Delegate
+java.text.Format
+java.text.Format$Field
+java.text.Format$FieldDelegate
+java.text.IcuIteratorWrapper
+java.text.MessageFormat
+java.text.MessageFormat$Field
+java.text.Normalizer
+java.text.Normalizer$Form
+java.text.NumberFormat
+java.text.ParseException
+java.text.ParsePosition
+java.text.RuleBasedCollator
+java.text.SimpleDateFormat
+java.text.StringCharacterIterator
+java.text.spi.DateFormatProvider
+java.text.spi.DateFormatSymbolsProvider
+java.text.spi.DecimalFormatSymbolsProvider
+java.text.spi.NumberFormatProvider
+java.util.AbstractCollection
+java.util.AbstractList
+java.util.AbstractList$Itr
+java.util.AbstractList$ListItr
+java.util.AbstractMap
+java.util.AbstractMap$1
+java.util.AbstractMap$2
+java.util.AbstractMap$2$1
+java.util.AbstractMap$SimpleEntry
+java.util.AbstractMap$SimpleImmutableEntry
+java.util.AbstractQueue
+java.util.AbstractSequentialList
+java.util.AbstractSet
+java.util.ArrayDeque
+java.util.ArrayDeque$DeqIterator
+java.util.ArrayList
+java.util.ArrayList$ArrayListSpliterator
+java.util.ArrayList$Itr
+java.util.ArrayList$ListItr
+java.util.ArrayList$SubList
+java.util.ArrayList$SubList$1
+java.util.Arrays
+java.util.Arrays$ArrayList
+java.util.BitSet
+java.util.Calendar
+java.util.Collection
+java.util.Collections
+java.util.Collections$1
+java.util.Collections$2
+java.util.Collections$3
+java.util.Collections$AsLIFOQueue
+java.util.Collections$CheckedCollection
+java.util.Collections$CheckedList
+java.util.Collections$CheckedMap
+java.util.Collections$CheckedRandomAccessList
+java.util.Collections$CheckedSet
+java.util.Collections$CheckedSortedMap
+java.util.Collections$CheckedSortedSet
+java.util.Collections$CopiesList
+java.util.Collections$EmptyEnumeration
+java.util.Collections$EmptyIterator
+java.util.Collections$EmptyList
+java.util.Collections$EmptyListIterator
+java.util.Collections$EmptyMap
+java.util.Collections$EmptySet
+java.util.Collections$ReverseComparator
+java.util.Collections$ReverseComparator2
+java.util.Collections$SetFromMap
+java.util.Collections$SingletonList
+java.util.Collections$SingletonMap
+java.util.Collections$SingletonSet
+java.util.Collections$SynchronizedCollection
+java.util.Collections$SynchronizedList
+java.util.Collections$SynchronizedMap
+java.util.Collections$SynchronizedRandomAccessList
+java.util.Collections$SynchronizedSet
+java.util.Collections$SynchronizedSortedMap
+java.util.Collections$SynchronizedSortedSet
+java.util.Collections$UnmodifiableCollection
+java.util.Collections$UnmodifiableCollection$1
+java.util.Collections$UnmodifiableList
+java.util.Collections$UnmodifiableList$1
+java.util.Collections$UnmodifiableMap
+java.util.Collections$UnmodifiableMap$UnmodifiableEntrySet
+java.util.Collections$UnmodifiableMap$UnmodifiableEntrySet$1
+java.util.Collections$UnmodifiableMap$UnmodifiableEntrySet$UnmodifiableEntry
+java.util.Collections$UnmodifiableRandomAccessList
+java.util.Collections$UnmodifiableSet
+java.util.Collections$UnmodifiableSortedMap
+java.util.Collections$UnmodifiableSortedSet
+java.util.ComparableTimSort
+java.util.Comparator
+java.util.Comparator$-java_util_Comparator_comparingDouble_java_util_function_ToDoubleFunction_keyExtractor_LambdaImpl0
+java.util.Comparator$-java_util_Comparator_comparingInt_java_util_function_ToIntFunction_keyExtractor_LambdaImpl0
+java.util.Comparator$-java_util_Comparator_comparingLong_java_util_function_ToLongFunction_keyExtractor_LambdaImpl0
+java.util.Comparator$-java_util_Comparator_comparing_java_util_function_Function_keyExtractor_LambdaImpl0
+java.util.Comparator$-java_util_Comparator_comparing_java_util_function_Function_keyExtractor_java_util_Comparator_keyComparator_LambdaImpl0
+java.util.Comparator$-java_util_Comparator_thenComparing_java_util_Comparator_other_LambdaImpl0
+java.util.Comparators$NaturalOrderComparator
+java.util.Comparators$NullComparator
+java.util.ConcurrentModificationException
+java.util.Currency
+java.util.Date
+java.util.Deque
+java.util.Dictionary
+java.util.DualPivotQuicksort
+java.util.EmptyStackException
+java.util.EnumMap
+java.util.EnumMap$1
+java.util.EnumMap$EntryIterator
+java.util.EnumMap$EntryIterator$Entry
+java.util.EnumMap$EntrySet
+java.util.EnumMap$EnumMapIterator
+java.util.EnumMap$KeyIterator
+java.util.EnumMap$KeySet
+java.util.EnumMap$ValueIterator
+java.util.EnumMap$Values
+java.util.EnumSet
+java.util.EnumSet$SerializationProxy
+java.util.Enumeration
+java.util.EventListener
+java.util.EventObject
+java.util.FormatFlagsConversionMismatchException
+java.util.Formattable
+java.util.Formatter
+java.util.Formatter$Conversion
+java.util.Formatter$DateTime
+java.util.Formatter$FixedString
+java.util.Formatter$Flags
+java.util.Formatter$FormatSpecifier
+java.util.Formatter$FormatSpecifierParser
+java.util.Formatter$FormatString
+java.util.GregorianCalendar
+java.util.HashMap
+java.util.HashMap$EntryIterator
+java.util.HashMap$EntrySet
+java.util.HashMap$HashIterator
+java.util.HashMap$HashMapEntry
+java.util.HashMap$Holder
+java.util.HashMap$KeyIterator
+java.util.HashMap$KeySet
+java.util.HashMap$ValueIterator
+java.util.HashMap$Values
+java.util.HashSet
+java.util.Hashtable
+java.util.Hashtable$EntrySet
+java.util.Hashtable$Enumerator
+java.util.Hashtable$HashtableEntry
+java.util.Hashtable$Holder
+java.util.Hashtable$KeySet
+java.util.Hashtable$ValueCollection
+java.util.IdentityHashMap
+java.util.IdentityHashMap$EntryIterator
+java.util.IdentityHashMap$EntryIterator$Entry
+java.util.IdentityHashMap$EntrySet
+java.util.IdentityHashMap$IdentityHashMapIterator
+java.util.IdentityHashMap$KeyIterator
+java.util.IdentityHashMap$KeySet
+java.util.IdentityHashMap$ValueIterator
+java.util.IdentityHashMap$Values
+java.util.IllegalFormatException
+java.util.IllformedLocaleException
+java.util.Iterator
+java.util.JumboEnumSet
+java.util.JumboEnumSet$EnumSetIterator
+java.util.LinkedHashMap
+java.util.LinkedHashMap$EntryIterator
+java.util.LinkedHashMap$KeyIterator
+java.util.LinkedHashMap$LinkedHashIterator
+java.util.LinkedHashMap$LinkedHashMapEntry
+java.util.LinkedHashMap$ValueIterator
+java.util.LinkedHashSet
+java.util.LinkedList
+java.util.LinkedList$DescendingIterator
+java.util.LinkedList$ListItr
+java.util.LinkedList$Node
+java.util.List
+java.util.ListIterator
+java.util.Locale
+java.util.Locale$Builder
+java.util.Locale$Cache
+java.util.Locale$Category
+java.util.Locale$LocaleKey
+java.util.Map
+java.util.Map$Entry
+java.util.MissingFormatArgumentException
+java.util.MissingResourceException
+java.util.NavigableMap
+java.util.NavigableSet
+java.util.NoSuchElementException
+java.util.Objects
+java.util.Observable
+java.util.Observer
+java.util.PriorityQueue
+java.util.PriorityQueue$Itr
+java.util.Properties
+java.util.Properties$LineReader
+java.util.PropertyResourceBundle
+java.util.Queue
+java.util.Random
+java.util.RandomAccess
+java.util.RandomAccessSubList
+java.util.RegularEnumSet
+java.util.RegularEnumSet$EnumSetIterator
+java.util.ResourceBundle
+java.util.ResourceBundle$1
+java.util.ResourceBundle$BundleReference
+java.util.ResourceBundle$CacheKey
+java.util.ResourceBundle$CacheKeyReference
+java.util.ResourceBundle$Control
+java.util.ResourceBundle$Control$1
+java.util.ResourceBundle$Control$CandidateListCache
+java.util.ResourceBundle$LoaderReference
+java.util.ResourceBundle$RBClassLoader
+java.util.ResourceBundle$RBClassLoader$1
+java.util.Scanner
+java.util.Scanner$1
+java.util.ServiceConfigurationError
+java.util.ServiceLoader
+java.util.ServiceLoader$1
+java.util.ServiceLoader$LazyIterator
+java.util.Set
+java.util.SimpleTimeZone
+java.util.SortedMap
+java.util.SortedSet
+java.util.Spliterator
+java.util.Spliterator$OfDouble
+java.util.Spliterator$OfInt
+java.util.Spliterator$OfLong
+java.util.Spliterator$OfPrimitive
+java.util.Spliterators
+java.util.Spliterators$EmptySpliterator
+java.util.Spliterators$EmptySpliterator$OfDouble
+java.util.Spliterators$EmptySpliterator$OfInt
+java.util.Spliterators$EmptySpliterator$OfLong
+java.util.Spliterators$EmptySpliterator$OfRef
+java.util.Stack
+java.util.StringTokenizer
+java.util.SubList
+java.util.SubList$1
+java.util.TaskQueue
+java.util.TimSort
+java.util.TimeZone
+java.util.Timer
+java.util.Timer$1
+java.util.TimerTask
+java.util.TimerThread
+java.util.TreeMap
+java.util.TreeMap$AscendingSubMap
+java.util.TreeMap$AscendingSubMap$AscendingEntrySetView
+java.util.TreeMap$EntryIterator
+java.util.TreeMap$EntrySet
+java.util.TreeMap$KeyIterator
+java.util.TreeMap$KeySet
+java.util.TreeMap$NavigableSubMap
+java.util.TreeMap$NavigableSubMap$EntrySetView
+java.util.TreeMap$NavigableSubMap$SubMapEntryIterator
+java.util.TreeMap$NavigableSubMap$SubMapIterator
+java.util.TreeMap$NavigableSubMap$SubMapKeyIterator
+java.util.TreeMap$PrivateEntryIterator
+java.util.TreeMap$TreeMapEntry
+java.util.TreeMap$ValueIterator
+java.util.TreeMap$Values
+java.util.TreeSet
+java.util.UUID
+java.util.UUID$Holder
+java.util.UnknownFormatConversionException
+java.util.Vector
+java.util.Vector$1
+java.util.Vector$Itr
+java.util.WeakHashMap
+java.util.WeakHashMap$Entry
+java.util.WeakHashMap$EntryIterator
+java.util.WeakHashMap$EntrySet
+java.util.WeakHashMap$HashIterator
+java.util.WeakHashMap$Holder
+java.util.WeakHashMap$KeyIterator
+java.util.WeakHashMap$KeySet
+java.util.WeakHashMap$ValueIterator
+java.util.WeakHashMap$Values
+java.util.XMLUtils
+java.util.concurrent.AbstractExecutorService
+java.util.concurrent.ArrayBlockingQueue
+java.util.concurrent.BlockingDeque
+java.util.concurrent.BlockingQueue
+java.util.concurrent.Callable
+java.util.concurrent.CancellationException
+java.util.concurrent.CompletionService
+java.util.concurrent.ConcurrentHashMap
+java.util.concurrent.ConcurrentHashMap$BaseIterator
+java.util.concurrent.ConcurrentHashMap$CollectionView
+java.util.concurrent.ConcurrentHashMap$CounterCell
+java.util.concurrent.ConcurrentHashMap$EntryIterator
+java.util.concurrent.ConcurrentHashMap$EntrySetView
+java.util.concurrent.ConcurrentHashMap$ForwardingNode
+java.util.concurrent.ConcurrentHashMap$KeyIterator
+java.util.concurrent.ConcurrentHashMap$KeySetView
+java.util.concurrent.ConcurrentHashMap$MapEntry
+java.util.concurrent.ConcurrentHashMap$Node
+java.util.concurrent.ConcurrentHashMap$Segment
+java.util.concurrent.ConcurrentHashMap$Traverser
+java.util.concurrent.ConcurrentHashMap$TreeBin
+java.util.concurrent.ConcurrentHashMap$TreeNode
+java.util.concurrent.ConcurrentHashMap$ValueIterator
+java.util.concurrent.ConcurrentHashMap$ValuesView
+java.util.concurrent.ConcurrentLinkedQueue
+java.util.concurrent.ConcurrentLinkedQueue$Itr
+java.util.concurrent.ConcurrentLinkedQueue$Node
+java.util.concurrent.ConcurrentMap
+java.util.concurrent.ConcurrentNavigableMap
+java.util.concurrent.ConcurrentSkipListMap
+java.util.concurrent.ConcurrentSkipListMap$HeadIndex
+java.util.concurrent.ConcurrentSkipListMap$Index
+java.util.concurrent.ConcurrentSkipListMap$KeySet
+java.util.concurrent.ConcurrentSkipListMap$Node
+java.util.concurrent.ConcurrentSkipListMap$SubMap
+java.util.concurrent.CopyOnWriteArrayList
+java.util.concurrent.CopyOnWriteArrayList$CowIterator
+java.util.concurrent.CopyOnWriteArraySet
+java.util.concurrent.CountDownLatch
+java.util.concurrent.CountDownLatch$Sync
+java.util.concurrent.DelayQueue
+java.util.concurrent.Delayed
+java.util.concurrent.ExecutionException
+java.util.concurrent.Executor
+java.util.concurrent.ExecutorCompletionService
+java.util.concurrent.ExecutorCompletionService$QueueingFuture
+java.util.concurrent.ExecutorService
+java.util.concurrent.Executors
+java.util.concurrent.Executors$DefaultThreadFactory
+java.util.concurrent.Executors$DelegatedExecutorService
+java.util.concurrent.Executors$DelegatedScheduledExecutorService
+java.util.concurrent.Executors$FinalizableDelegatedExecutorService
+java.util.concurrent.Executors$RunnableAdapter
+java.util.concurrent.Future
+java.util.concurrent.FutureTask
+java.util.concurrent.FutureTask$WaitNode
+java.util.concurrent.LinkedBlockingDeque
+java.util.concurrent.LinkedBlockingDeque$AbstractItr
+java.util.concurrent.LinkedBlockingDeque$Itr
+java.util.concurrent.LinkedBlockingDeque$Node
+java.util.concurrent.LinkedBlockingQueue
+java.util.concurrent.LinkedBlockingQueue$Itr
+java.util.concurrent.LinkedBlockingQueue$Node
+java.util.concurrent.PriorityBlockingQueue
+java.util.concurrent.RejectedExecutionException
+java.util.concurrent.RejectedExecutionHandler
+java.util.concurrent.RunnableFuture
+java.util.concurrent.RunnableScheduledFuture
+java.util.concurrent.ScheduledExecutorService
+java.util.concurrent.ScheduledFuture
+java.util.concurrent.ScheduledThreadPoolExecutor
+java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue
+java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask
+java.util.concurrent.Semaphore
+java.util.concurrent.Semaphore$FairSync
+java.util.concurrent.Semaphore$NonfairSync
+java.util.concurrent.Semaphore$Sync
+java.util.concurrent.SynchronousQueue
+java.util.concurrent.SynchronousQueue$TransferStack
+java.util.concurrent.SynchronousQueue$TransferStack$SNode
+java.util.concurrent.SynchronousQueue$Transferer
+java.util.concurrent.ThreadFactory
+java.util.concurrent.ThreadLocalRandom
+java.util.concurrent.ThreadLocalRandom$1
+java.util.concurrent.ThreadPoolExecutor
+java.util.concurrent.ThreadPoolExecutor$AbortPolicy
+java.util.concurrent.ThreadPoolExecutor$DiscardPolicy
+java.util.concurrent.ThreadPoolExecutor$Worker
+java.util.concurrent.TimeUnit
+java.util.concurrent.TimeUnit$1
+java.util.concurrent.TimeUnit$2
+java.util.concurrent.TimeUnit$3
+java.util.concurrent.TimeUnit$4
+java.util.concurrent.TimeUnit$5
+java.util.concurrent.TimeUnit$6
+java.util.concurrent.TimeUnit$7
+java.util.concurrent.TimeoutException
+java.util.concurrent.atomic.AtomicBoolean
+java.util.concurrent.atomic.AtomicInteger
+java.util.concurrent.atomic.AtomicIntegerArray
+java.util.concurrent.atomic.AtomicIntegerFieldUpdater
+java.util.concurrent.atomic.AtomicIntegerFieldUpdater$AtomicIntegerFieldUpdaterImpl
+java.util.concurrent.atomic.AtomicIntegerFieldUpdater$AtomicIntegerFieldUpdaterImpl$1
+java.util.concurrent.atomic.AtomicLong
+java.util.concurrent.atomic.AtomicLongFieldUpdater
+java.util.concurrent.atomic.AtomicLongFieldUpdater$CASUpdater
+java.util.concurrent.atomic.AtomicReference
+java.util.concurrent.atomic.AtomicReferenceArray
+java.util.concurrent.atomic.AtomicReferenceFieldUpdater
+java.util.concurrent.atomic.AtomicReferenceFieldUpdater$AtomicReferenceFieldUpdaterImpl
+java.util.concurrent.locks.AbstractOwnableSynchronizer
+java.util.concurrent.locks.AbstractQueuedSynchronizer
+java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject
+java.util.concurrent.locks.AbstractQueuedSynchronizer$Node
+java.util.concurrent.locks.Condition
+java.util.concurrent.locks.Lock
+java.util.concurrent.locks.LockSupport
+java.util.concurrent.locks.ReadWriteLock
+java.util.concurrent.locks.ReentrantLock
+java.util.concurrent.locks.ReentrantLock$FairSync
+java.util.concurrent.locks.ReentrantLock$NonfairSync
+java.util.concurrent.locks.ReentrantLock$Sync
+java.util.concurrent.locks.ReentrantReadWriteLock
+java.util.concurrent.locks.ReentrantReadWriteLock$FairSync
+java.util.concurrent.locks.ReentrantReadWriteLock$NonfairSync
+java.util.concurrent.locks.ReentrantReadWriteLock$ReadLock
+java.util.concurrent.locks.ReentrantReadWriteLock$Sync
+java.util.concurrent.locks.ReentrantReadWriteLock$Sync$HoldCounter
+java.util.concurrent.locks.ReentrantReadWriteLock$Sync$ThreadLocalHoldCounter
+java.util.concurrent.locks.ReentrantReadWriteLock$WriteLock
+java.util.function.BiConsumer
+java.util.function.BiFunction
+java.util.function.Consumer
+java.util.function.Function
+java.util.function.Predicate
+java.util.function.Supplier
+java.util.function.ToDoubleFunction
+java.util.function.ToIntFunction
+java.util.function.ToLongFunction
+java.util.function.UnaryOperator
+java.util.jar.Attributes
+java.util.jar.Attributes$Name
+java.util.jar.JarEntry
+java.util.jar.JarFile
+java.util.jar.JarFile$1
+java.util.jar.JarFile$JarFileEntry
+java.util.jar.JarVerifier
+java.util.jar.JarVerifier$1
+java.util.jar.JarVerifier$VerifierStream
+java.util.jar.Manifest
+java.util.jar.Manifest$FastInputStream
+java.util.logging.ErrorManager
+java.util.logging.FileHandler
+java.util.logging.FileHandler$InitializationErrorManager
+java.util.logging.FileHandler$MeteredStream
+java.util.logging.Filter
+java.util.logging.Formatter
+java.util.logging.Handler
+java.util.logging.Level
+java.util.logging.Level$KnownLevel
+java.util.logging.LogManager
+java.util.logging.LogManager$1
+java.util.logging.LogManager$2
+java.util.logging.LogManager$4
+java.util.logging.LogManager$Cleaner
+java.util.logging.LogManager$LogNode
+java.util.logging.LogManager$LoggerContext
+java.util.logging.LogManager$LoggerContext$1
+java.util.logging.LogManager$LoggerWeakRef
+java.util.logging.LogManager$RootLogger
+java.util.logging.LogManager$SystemLoggerContext
+java.util.logging.LogRecord
+java.util.logging.Logger
+java.util.logging.Logger$1
+java.util.logging.LoggingPermission
+java.util.logging.LoggingProxyImpl
+java.util.logging.SimpleFormatter
+java.util.logging.StreamHandler
+java.util.logging.XMLFormatter
+java.util.prefs.AbstractPreferences
+java.util.prefs.FileSystemPreferences
+java.util.prefs.Preferences
+java.util.regex.MatchResult
+java.util.regex.Matcher
+java.util.regex.Pattern
+java.util.regex.PatternSyntaxException
+java.util.spi.LocaleServiceProvider
+java.util.stream.BaseStream
+java.util.stream.Stream
+java.util.stream.StreamSupport
+java.util.zip.Adler32
+java.util.zip.CRC32
+java.util.zip.CheckedInputStream
+java.util.zip.Checksum
+java.util.zip.DataFormatException
+java.util.zip.Deflater
+java.util.zip.DeflaterOutputStream
+java.util.zip.GZIPInputStream
+java.util.zip.GZIPOutputStream
+java.util.zip.Inflater
+java.util.zip.InflaterInputStream
+java.util.zip.ZStreamRef
+java.util.zip.ZipCoder
+java.util.zip.ZipConstants
+java.util.zip.ZipEntry
+java.util.zip.ZipException
+java.util.zip.ZipFile
+java.util.zip.ZipFile$1
+java.util.zip.ZipFile$ZipFileInflaterInputStream
+java.util.zip.ZipFile$ZipFileInputStream
+java.util.zip.ZipOutputStream
+javax.crypto.BadPaddingException
+javax.crypto.Cipher
+javax.crypto.Cipher$CipherSpiAndProvider
+javax.crypto.Cipher$InitParams
+javax.crypto.Cipher$InitType
+javax.crypto.Cipher$NeedToSet
+javax.crypto.Cipher$SpiAndProviderUpdater
+javax.crypto.Cipher$Transform
+javax.crypto.CipherOutputStream
+javax.crypto.CipherSpi
+javax.crypto.EncryptedPrivateKeyInfo
+javax.crypto.IllegalBlockSizeException
+javax.crypto.JarVerifier
+javax.crypto.JceSecurity
+javax.crypto.JceSecurity$1
+javax.crypto.KeyGenerator
+javax.crypto.KeyGeneratorSpi
+javax.crypto.Mac
+javax.crypto.MacSpi
+javax.crypto.NoSuchPaddingException
+javax.crypto.NullCipher
+javax.crypto.SecretKey
+javax.crypto.SecretKeyFactory
+javax.crypto.SecretKeyFactorySpi
+javax.crypto.ShortBufferException
+javax.crypto.interfaces.PBEKey
+javax.crypto.spec.GCMParameterSpec
+javax.crypto.spec.IvParameterSpec
+javax.crypto.spec.OAEPParameterSpec
+javax.crypto.spec.PBEKeySpec
+javax.crypto.spec.PBEParameterSpec
+javax.crypto.spec.PSource
+javax.crypto.spec.PSource$PSpecified
+javax.crypto.spec.SecretKeySpec
+javax.microedition.khronos.egl.EGL
+javax.microedition.khronos.egl.EGL10
+javax.microedition.khronos.egl.EGLConfig
+javax.microedition.khronos.egl.EGLContext
+javax.microedition.khronos.egl.EGLDisplay
+javax.microedition.khronos.egl.EGLSurface
+javax.microedition.khronos.opengles.GL
+javax.microedition.khronos.opengles.GL10
+javax.microedition.khronos.opengles.GL10Ext
+javax.microedition.khronos.opengles.GL11
+javax.microedition.khronos.opengles.GL11Ext
+javax.microedition.khronos.opengles.GL11ExtensionPack
+javax.net.DefaultSocketFactory
+javax.net.ServerSocketFactory
+javax.net.SocketFactory
+javax.net.ssl.ExtendedSSLSession
+javax.net.ssl.HandshakeCompletedListener
+javax.net.ssl.HostnameVerifier
+javax.net.ssl.HttpsURLConnection
+javax.net.ssl.KeyManager
+javax.net.ssl.KeyManagerFactory
+javax.net.ssl.KeyManagerFactory$1
+javax.net.ssl.KeyManagerFactorySpi
+javax.net.ssl.SNIHostName
+javax.net.ssl.SNIServerName
+javax.net.ssl.SSLContext
+javax.net.ssl.SSLContextSpi
+javax.net.ssl.SSLEngine
+javax.net.ssl.SSLException
+javax.net.ssl.SSLHandshakeException
+javax.net.ssl.SSLParameters
+javax.net.ssl.SSLPeerUnverifiedException
+javax.net.ssl.SSLProtocolException
+javax.net.ssl.SSLServerSocketFactory
+javax.net.ssl.SSLSession
+javax.net.ssl.SSLSessionContext
+javax.net.ssl.SSLSocket
+javax.net.ssl.SSLSocketFactory
+javax.net.ssl.SSLSocketFactory$1
+javax.net.ssl.TrustManager
+javax.net.ssl.TrustManagerFactory
+javax.net.ssl.TrustManagerFactory$1
+javax.net.ssl.TrustManagerFactorySpi
+javax.net.ssl.X509ExtendedKeyManager
+javax.net.ssl.X509ExtendedTrustManager
+javax.net.ssl.X509KeyManager
+javax.net.ssl.X509TrustManager
+javax.security.auth.callback.UnsupportedCallbackException
+javax.security.auth.x500.X500Principal
+javax.security.cert.Certificate
+javax.security.cert.CertificateException
+javax.security.cert.X509Certificate
+javax.sip.SipException
+javax.xml.parsers.DocumentBuilder
+javax.xml.parsers.DocumentBuilderFactory
+javax.xml.parsers.ParserConfigurationException
+javax.xml.parsers.SAXParser
+javax.xml.parsers.SAXParserFactory
+javax.xml.transform.Result
+javax.xml.transform.Source
+javax.xml.transform.Transformer
+javax.xml.transform.TransformerConfigurationException
+javax.xml.transform.TransformerException
+javax.xml.transform.TransformerFactory
+javax.xml.transform.dom.DOMSource
+javax.xml.transform.stream.StreamResult
+junit.framework.Assert
+libcore.icu.CollationKeyICU
+libcore.icu.DateIntervalFormat
+libcore.icu.DateUtilsBridge
+libcore.icu.ICU
+libcore.icu.LocaleData
+libcore.icu.NativeConverter
+libcore.icu.RelativeDateTimeFormatter
+libcore.icu.RelativeDateTimeFormatter$FormatterCache
+libcore.icu.TimeZoneNames
+libcore.icu.TimeZoneNames$1
+libcore.icu.TimeZoneNames$ZoneStringsCache
+libcore.internal.StringPool
+libcore.io.AsynchronousCloseMonitor
+libcore.io.Base64
+libcore.io.Base64$InvalidBase64ByteException
+libcore.io.BlockGuardOs
+libcore.io.BufferIterator
+libcore.io.ClassPathURLStreamHandler
+libcore.io.ClassPathURLStreamHandler$ClassPathURLConnection
+libcore.io.ClassPathURLStreamHandler$ClassPathURLConnection$1
+libcore.io.DropBox
+libcore.io.DropBox$DefaultReporter
+libcore.io.DropBox$Reporter
+libcore.io.EventLogger
+libcore.io.EventLogger$DefaultReporter
+libcore.io.EventLogger$Reporter
+libcore.io.ForwardingOs
+libcore.io.IoBridge
+libcore.io.IoUtils
+libcore.io.IoUtils$FileReader
+libcore.io.Libcore
+libcore.io.Memory
+libcore.io.MemoryMappedFile
+libcore.io.NioBufferIterator
+libcore.io.Os
+libcore.io.Posix
+libcore.io.Streams
+libcore.math.MathUtils
+libcore.net.MimeUtils
+libcore.net.NetworkSecurityPolicy
+libcore.net.NetworkSecurityPolicy$DefaultNetworkSecurityPolicy
+libcore.net.UriCodec
+libcore.net.event.NetworkEventDispatcher
+libcore.net.event.NetworkEventListener
+libcore.reflect.AnnotatedElements
+libcore.reflect.AnnotationAccess
+libcore.reflect.AnnotationFactory
+libcore.reflect.AnnotationMember
+libcore.reflect.AnnotationMember$DefaultValues
+libcore.reflect.GenericArrayTypeImpl
+libcore.reflect.GenericSignatureParser
+libcore.reflect.InternalNames
+libcore.reflect.ListOfTypes
+libcore.reflect.ListOfVariables
+libcore.reflect.ParameterizedTypeImpl
+libcore.reflect.TypeVariableImpl
+libcore.reflect.Types
+libcore.util.BasicLruCache
+libcore.util.CharsetUtils
+libcore.util.CollectionUtils
+libcore.util.EmptyArray
+libcore.util.HexEncoding
+libcore.util.NativeAllocationRegistry
+libcore.util.NativeAllocationRegistry$CleanerRunner
+libcore.util.NativeAllocationRegistry$CleanerThunk
+libcore.util.Objects
+libcore.util.ZoneInfo
+libcore.util.ZoneInfo$CheckedArithmeticException
+libcore.util.ZoneInfo$OffsetInterval
+libcore.util.ZoneInfo$WallTime
+libcore.util.ZoneInfoDB
+libcore.util.ZoneInfoDB$TzData
+libcore.util.ZoneInfoDB$TzData$1
+org.apache.commons.logging.Log
+org.apache.commons.logging.LogFactory
+org.apache.commons.logging.impl.Jdk14Logger
+org.apache.commons.logging.impl.WeakHashtable
+org.apache.harmony.dalvik.NativeTestTarget
+org.apache.harmony.dalvik.ddmc.Chunk
+org.apache.harmony.dalvik.ddmc.ChunkHandler
+org.apache.harmony.dalvik.ddmc.DdmServer
+org.apache.harmony.dalvik.ddmc.DdmVmInternal
+org.apache.harmony.luni.internal.util.TimezoneGetter
+org.apache.harmony.xml.ExpatAttributes
+org.apache.harmony.xml.ExpatException
+org.apache.harmony.xml.ExpatParser
+org.apache.harmony.xml.ExpatParser$CurrentAttributes
+org.apache.harmony.xml.ExpatParser$ExpatLocator
+org.apache.harmony.xml.ExpatReader
+org.apache.harmony.xml.parsers.SAXParserFactoryImpl
+org.apache.harmony.xml.parsers.SAXParserImpl
+org.apache.http.ConnectionClosedException
+org.apache.http.ConnectionReuseStrategy
+org.apache.http.FormattedHeader
+org.apache.http.Header
+org.apache.http.HeaderElement
+org.apache.http.HeaderElementIterator
+org.apache.http.HeaderIterator
+org.apache.http.HttpClientConnection
+org.apache.http.HttpConnection
+org.apache.http.HttpConnectionMetrics
+org.apache.http.HttpEntity
+org.apache.http.HttpEntityEnclosingRequest
+org.apache.http.HttpException
+org.apache.http.HttpHost
+org.apache.http.HttpInetConnection
+org.apache.http.HttpMessage
+org.apache.http.HttpRequest
+org.apache.http.HttpRequestFactory
+org.apache.http.HttpRequestInterceptor
+org.apache.http.HttpResponse
+org.apache.http.HttpResponseFactory
+org.apache.http.HttpResponseInterceptor
+org.apache.http.HttpServerConnection
+org.apache.http.HttpVersion
+org.apache.http.MethodNotSupportedException
+org.apache.http.NameValuePair
+org.apache.http.NoHttpResponseException
+org.apache.http.ParseException
+org.apache.http.ProtocolException
+org.apache.http.ProtocolVersion
+org.apache.http.ReasonPhraseCatalog
+org.apache.http.RequestLine
+org.apache.http.StatusLine
+org.apache.http.auth.AuthSchemeFactory
+org.apache.http.auth.AuthSchemeRegistry
+org.apache.http.auth.AuthState
+org.apache.http.auth.AuthenticationException
+org.apache.http.client.AuthenticationHandler
+org.apache.http.client.ClientProtocolException
+org.apache.http.client.CookieStore
+org.apache.http.client.CredentialsProvider
+org.apache.http.client.HttpClient
+org.apache.http.client.HttpRequestRetryHandler
+org.apache.http.client.HttpResponseException
+org.apache.http.client.RedirectHandler
+org.apache.http.client.RequestDirector
+org.apache.http.client.ResponseHandler
+org.apache.http.client.UserTokenHandler
+org.apache.http.client.entity.UrlEncodedFormEntity
+org.apache.http.client.methods.AbortableHttpRequest
+org.apache.http.client.methods.HttpDelete
+org.apache.http.client.methods.HttpEntityEnclosingRequestBase
+org.apache.http.client.methods.HttpGet
+org.apache.http.client.methods.HttpHead
+org.apache.http.client.methods.HttpOptions
+org.apache.http.client.methods.HttpPost
+org.apache.http.client.methods.HttpPut
+org.apache.http.client.methods.HttpRequestBase
+org.apache.http.client.methods.HttpTrace
+org.apache.http.client.methods.HttpUriRequest
+org.apache.http.client.params.HttpClientParams
+org.apache.http.client.protocol.RequestAddCookies
+org.apache.http.client.protocol.RequestDefaultHeaders
+org.apache.http.client.protocol.RequestProxyAuthentication
+org.apache.http.client.protocol.RequestTargetAuthentication
+org.apache.http.client.protocol.ResponseProcessCookies
+org.apache.http.client.utils.URIUtils
+org.apache.http.client.utils.URLEncodedUtils
+org.apache.http.conn.BasicManagedEntity
+org.apache.http.conn.ClientConnectionManager
+org.apache.http.conn.ClientConnectionOperator
+org.apache.http.conn.ClientConnectionRequest
+org.apache.http.conn.ConnectTimeoutException
+org.apache.http.conn.ConnectionKeepAliveStrategy
+org.apache.http.conn.ConnectionPoolTimeoutException
+org.apache.http.conn.ConnectionReleaseTrigger
+org.apache.http.conn.EofSensorInputStream
+org.apache.http.conn.EofSensorWatcher
+org.apache.http.conn.ManagedClientConnection
+org.apache.http.conn.OperatedClientConnection
+org.apache.http.conn.params.ConnManagerPNames
+org.apache.http.conn.params.ConnManagerParamBean
+org.apache.http.conn.params.ConnManagerParams
+org.apache.http.conn.params.ConnManagerParams$1
+org.apache.http.conn.params.ConnPerRoute
+org.apache.http.conn.params.ConnPerRouteBean
+org.apache.http.conn.params.ConnRoutePNames
+org.apache.http.conn.params.ConnRouteParams
+org.apache.http.conn.routing.BasicRouteDirector
+org.apache.http.conn.routing.HttpRoute
+org.apache.http.conn.routing.HttpRouteDirector
+org.apache.http.conn.routing.HttpRoutePlanner
+org.apache.http.conn.routing.RouteInfo
+org.apache.http.conn.routing.RouteInfo$LayerType
+org.apache.http.conn.routing.RouteInfo$TunnelType
+org.apache.http.conn.routing.RouteTracker
+org.apache.http.conn.scheme.HostNameResolver
+org.apache.http.conn.scheme.LayeredSocketFactory
+org.apache.http.conn.scheme.PlainSocketFactory
+org.apache.http.conn.scheme.Scheme
+org.apache.http.conn.scheme.SchemeRegistry
+org.apache.http.conn.scheme.SocketFactory
+org.apache.http.conn.ssl.AbstractVerifier
+org.apache.http.conn.ssl.AllowAllHostnameVerifier
+org.apache.http.conn.ssl.AndroidDistinguishedNameParser
+org.apache.http.conn.ssl.BrowserCompatHostnameVerifier
+org.apache.http.conn.ssl.SSLSocketFactory
+org.apache.http.conn.ssl.StrictHostnameVerifier
+org.apache.http.conn.ssl.X509HostnameVerifier
+org.apache.http.cookie.ClientCookie
+org.apache.http.cookie.Cookie
+org.apache.http.cookie.CookieAttributeHandler
+org.apache.http.cookie.CookieIdentityComparator
+org.apache.http.cookie.CookieOrigin
+org.apache.http.cookie.CookiePathComparator
+org.apache.http.cookie.CookieSpec
+org.apache.http.cookie.CookieSpecFactory
+org.apache.http.cookie.CookieSpecRegistry
+org.apache.http.cookie.MalformedCookieException
+org.apache.http.cookie.SetCookie
+org.apache.http.entity.AbstractHttpEntity
+org.apache.http.entity.BasicHttpEntity
+org.apache.http.entity.ByteArrayEntity
+org.apache.http.entity.ContentLengthStrategy
+org.apache.http.entity.FileEntity
+org.apache.http.entity.HttpEntityWrapper
+org.apache.http.entity.InputStreamEntity
+org.apache.http.entity.StringEntity
+org.apache.http.impl.AbstractHttpClientConnection
+org.apache.http.impl.AbstractHttpServerConnection
+org.apache.http.impl.DefaultConnectionReuseStrategy
+org.apache.http.impl.DefaultHttpRequestFactory
+org.apache.http.impl.DefaultHttpResponseFactory
+org.apache.http.impl.DefaultHttpServerConnection
+org.apache.http.impl.EnglishReasonPhraseCatalog
+org.apache.http.impl.HttpConnectionMetricsImpl
+org.apache.http.impl.SocketHttpClientConnection
+org.apache.http.impl.SocketHttpServerConnection
+org.apache.http.impl.auth.BasicSchemeFactory
+org.apache.http.impl.auth.DigestSchemeFactory
+org.apache.http.impl.client.AbstractAuthenticationHandler
+org.apache.http.impl.client.AbstractHttpClient
+org.apache.http.impl.client.BasicCookieStore
+org.apache.http.impl.client.BasicCredentialsProvider
+org.apache.http.impl.client.BasicResponseHandler
+org.apache.http.impl.client.ClientParamsStack
+org.apache.http.impl.client.DefaultConnectionKeepAliveStrategy
+org.apache.http.impl.client.DefaultHttpClient
+org.apache.http.impl.client.DefaultHttpRequestRetryHandler
+org.apache.http.impl.client.DefaultProxyAuthenticationHandler
+org.apache.http.impl.client.DefaultRedirectHandler
+org.apache.http.impl.client.DefaultRequestDirector
+org.apache.http.impl.client.DefaultTargetAuthenticationHandler
+org.apache.http.impl.client.DefaultUserTokenHandler
+org.apache.http.impl.client.EntityEnclosingRequestWrapper
+org.apache.http.impl.client.RedirectLocations
+org.apache.http.impl.client.RequestWrapper
+org.apache.http.impl.client.RoutedRequest
+org.apache.http.impl.client.TunnelRefusedException
+org.apache.http.impl.conn.AbstractClientConnAdapter
+org.apache.http.impl.conn.AbstractPoolEntry
+org.apache.http.impl.conn.AbstractPooledConnAdapter
+org.apache.http.impl.conn.DefaultClientConnection
+org.apache.http.impl.conn.DefaultClientConnectionOperator
+org.apache.http.impl.conn.DefaultResponseParser
+org.apache.http.impl.conn.IdleConnectionHandler
+org.apache.http.impl.conn.IdleConnectionHandler$TimeValues
+org.apache.http.impl.conn.ProxySelectorRoutePlanner
+org.apache.http.impl.conn.tsccm.AbstractConnPool
+org.apache.http.impl.conn.tsccm.BasicPoolEntry
+org.apache.http.impl.conn.tsccm.BasicPoolEntryRef
+org.apache.http.impl.conn.tsccm.BasicPooledConnAdapter
+org.apache.http.impl.conn.tsccm.ConnPoolByRoute
+org.apache.http.impl.conn.tsccm.ConnPoolByRoute$1
+org.apache.http.impl.conn.tsccm.PoolEntryRequest
+org.apache.http.impl.conn.tsccm.RefQueueHandler
+org.apache.http.impl.conn.tsccm.RefQueueWorker
+org.apache.http.impl.conn.tsccm.RouteSpecificPool
+org.apache.http.impl.conn.tsccm.ThreadSafeClientConnManager
+org.apache.http.impl.conn.tsccm.ThreadSafeClientConnManager$1
+org.apache.http.impl.conn.tsccm.WaitingThread
+org.apache.http.impl.conn.tsccm.WaitingThreadAborter
+org.apache.http.impl.cookie.AbstractCookieAttributeHandler
+org.apache.http.impl.cookie.AbstractCookieSpec
+org.apache.http.impl.cookie.BasicClientCookie
+org.apache.http.impl.cookie.BasicCommentHandler
+org.apache.http.impl.cookie.BasicDomainHandler
+org.apache.http.impl.cookie.BasicExpiresHandler
+org.apache.http.impl.cookie.BasicMaxAgeHandler
+org.apache.http.impl.cookie.BasicPathHandler
+org.apache.http.impl.cookie.BasicSecureHandler
+org.apache.http.impl.cookie.BestMatchSpec
+org.apache.http.impl.cookie.BestMatchSpecFactory
+org.apache.http.impl.cookie.BrowserCompatSpec
+org.apache.http.impl.cookie.BrowserCompatSpecFactory
+org.apache.http.impl.cookie.CookieSpecBase
+org.apache.http.impl.cookie.DateParseException
+org.apache.http.impl.cookie.DateUtils
+org.apache.http.impl.cookie.DateUtils$DateFormatHolder
+org.apache.http.impl.cookie.DateUtils$DateFormatHolder$1
+org.apache.http.impl.cookie.NetscapeDomainHandler
+org.apache.http.impl.cookie.NetscapeDraftHeaderParser
+org.apache.http.impl.cookie.NetscapeDraftSpec
+org.apache.http.impl.cookie.NetscapeDraftSpecFactory
+org.apache.http.impl.cookie.RFC2109DomainHandler
+org.apache.http.impl.cookie.RFC2109Spec
+org.apache.http.impl.cookie.RFC2109SpecFactory
+org.apache.http.impl.cookie.RFC2109VersionHandler
+org.apache.http.impl.cookie.RFC2965CommentUrlAttributeHandler
+org.apache.http.impl.cookie.RFC2965DiscardAttributeHandler
+org.apache.http.impl.cookie.RFC2965DomainAttributeHandler
+org.apache.http.impl.cookie.RFC2965PortAttributeHandler
+org.apache.http.impl.cookie.RFC2965Spec
+org.apache.http.impl.cookie.RFC2965SpecFactory
+org.apache.http.impl.cookie.RFC2965VersionAttributeHandler
+org.apache.http.impl.entity.EntityDeserializer
+org.apache.http.impl.entity.EntitySerializer
+org.apache.http.impl.entity.LaxContentLengthStrategy
+org.apache.http.impl.entity.StrictContentLengthStrategy
+org.apache.http.impl.io.AbstractMessageParser
+org.apache.http.impl.io.AbstractMessageWriter
+org.apache.http.impl.io.AbstractSessionInputBuffer
+org.apache.http.impl.io.AbstractSessionOutputBuffer
+org.apache.http.impl.io.ChunkedInputStream
+org.apache.http.impl.io.ContentLengthInputStream
+org.apache.http.impl.io.ContentLengthOutputStream
+org.apache.http.impl.io.HttpRequestParser
+org.apache.http.impl.io.HttpRequestWriter
+org.apache.http.impl.io.HttpResponseWriter
+org.apache.http.impl.io.HttpTransportMetricsImpl
+org.apache.http.impl.io.IdentityOutputStream
+org.apache.http.impl.io.SocketInputBuffer
+org.apache.http.impl.io.SocketOutputBuffer
+org.apache.http.io.HttpMessageParser
+org.apache.http.io.HttpMessageWriter
+org.apache.http.io.HttpTransportMetrics
+org.apache.http.io.SessionInputBuffer
+org.apache.http.io.SessionOutputBuffer
+org.apache.http.message.AbstractHttpMessage
+org.apache.http.message.BasicHeader
+org.apache.http.message.BasicHeaderElement
+org.apache.http.message.BasicHeaderElementIterator
+org.apache.http.message.BasicHeaderValueParser
+org.apache.http.message.BasicHttpRequest
+org.apache.http.message.BasicHttpResponse
+org.apache.http.message.BasicLineFormatter
+org.apache.http.message.BasicLineParser
+org.apache.http.message.BasicListHeaderIterator
+org.apache.http.message.BasicNameValuePair
+org.apache.http.message.BasicRequestLine
+org.apache.http.message.BasicStatusLine
+org.apache.http.message.BufferedHeader
+org.apache.http.message.HeaderGroup
+org.apache.http.message.HeaderValueParser
+org.apache.http.message.LineFormatter
+org.apache.http.message.LineParser
+org.apache.http.message.ParserCursor
+org.apache.http.params.AbstractHttpParams
+org.apache.http.params.BasicHttpParams
+org.apache.http.params.CoreConnectionPNames
+org.apache.http.params.CoreProtocolPNames
+org.apache.http.params.DefaultedHttpParams
+org.apache.http.params.HttpAbstractParamBean
+org.apache.http.params.HttpConnectionParams
+org.apache.http.params.HttpParams
+org.apache.http.params.HttpProtocolParams
+org.apache.http.protocol.BasicHttpContext
+org.apache.http.protocol.BasicHttpProcessor
+org.apache.http.protocol.DefaultedHttpContext
+org.apache.http.protocol.HTTP
+org.apache.http.protocol.HttpContext
+org.apache.http.protocol.HttpProcessor
+org.apache.http.protocol.HttpRequestExecutor
+org.apache.http.protocol.HttpRequestHandler
+org.apache.http.protocol.HttpRequestHandlerRegistry
+org.apache.http.protocol.HttpRequestHandlerResolver
+org.apache.http.protocol.HttpRequestInterceptorList
+org.apache.http.protocol.HttpResponseInterceptorList
+org.apache.http.protocol.HttpService
+org.apache.http.protocol.RequestConnControl
+org.apache.http.protocol.RequestContent
+org.apache.http.protocol.RequestExpectContinue
+org.apache.http.protocol.RequestTargetHost
+org.apache.http.protocol.RequestUserAgent
+org.apache.http.protocol.ResponseConnControl
+org.apache.http.protocol.ResponseContent
+org.apache.http.protocol.UriPatternMatcher
+org.apache.http.util.ByteArrayBuffer
+org.apache.http.util.CharArrayBuffer
+org.apache.http.util.EncodingUtils
+org.apache.http.util.EntityUtils
+org.apache.http.util.LangUtils
+org.ccil.cowan.tagsoup.AttributesImpl
+org.ccil.cowan.tagsoup.AutoDetector
+org.ccil.cowan.tagsoup.Element
+org.ccil.cowan.tagsoup.ElementType
+org.ccil.cowan.tagsoup.HTMLModels
+org.ccil.cowan.tagsoup.HTMLScanner
+org.ccil.cowan.tagsoup.HTMLSchema
+org.ccil.cowan.tagsoup.Parser
+org.ccil.cowan.tagsoup.Parser$1
+org.ccil.cowan.tagsoup.ScanHandler
+org.ccil.cowan.tagsoup.Scanner
+org.ccil.cowan.tagsoup.Schema
+org.json.JSON
+org.json.JSONArray
+org.json.JSONException
+org.json.JSONObject
+org.json.JSONObject$1
+org.json.JSONStringer
+org.json.JSONStringer$Scope
+org.json.JSONTokener
+org.kxml2.io.KXmlParser
+org.kxml2.io.KXmlParser$ValueContext
+org.kxml2.io.KXmlSerializer
+org.w3c.dom.Document
+org.w3c.dom.Element
+org.w3c.dom.NamedNodeMap
+org.w3c.dom.Node
+org.w3c.dom.NodeList
+org.xml.sax.Attributes
+org.xml.sax.ContentHandler
+org.xml.sax.DTDHandler
+org.xml.sax.EntityResolver
+org.xml.sax.ErrorHandler
+org.xml.sax.InputSource
+org.xml.sax.Locator
+org.xml.sax.SAXException
+org.xml.sax.SAXNotRecognizedException
+org.xml.sax.SAXNotSupportedException
+org.xml.sax.SAXParseException
+org.xml.sax.XMLReader
+org.xml.sax.ext.DeclHandler
+org.xml.sax.ext.DefaultHandler2
+org.xml.sax.ext.EntityResolver2
+org.xml.sax.ext.LexicalHandler
+org.xml.sax.helpers.AttributesImpl
+org.xml.sax.helpers.DefaultHandler
+org.xmlpull.v1.XmlPullParser
+org.xmlpull.v1.XmlPullParserException
+org.xmlpull.v1.XmlPullParserFactory
+org.xmlpull.v1.XmlSerializer
+sun.misc.ASCIICaseInsensitiveComparator
+sun.misc.BASE64Decoder
+sun.misc.CEStreamExhausted
+sun.misc.CharacterDecoder
+sun.misc.Cleaner
+sun.misc.CompoundEnumeration
+sun.misc.FDBigInt
+sun.misc.FormattedFloatingDecimal
+sun.misc.FormattedFloatingDecimal$1
+sun.misc.FormattedFloatingDecimal$Form
+sun.misc.FpUtils
+sun.misc.Hashing
+sun.misc.IOUtils
+sun.misc.IoTrace
+sun.misc.LRUCache
+sun.misc.REException
+sun.misc.Unsafe
+sun.misc.VM
+sun.misc.Version
+sun.net.ConnectionResetException
+sun.net.NetHooks
+sun.net.NetProperties
+sun.net.NetProperties$1
+sun.net.ResourceManager
+sun.net.spi.DefaultProxySelector
+sun.net.spi.DefaultProxySelector$1
+sun.net.spi.DefaultProxySelector$2
+sun.net.spi.DefaultProxySelector$NonProxyInfo
+sun.net.spi.nameservice.NameService
+sun.net.util.IPAddressUtil
+sun.net.www.ParseUtil
+sun.net.www.protocol.file.Handler
+sun.net.www.protocol.jar.Handler
+sun.nio.ch.AllocatedNativeObject
+sun.nio.ch.ChannelInputStream
+sun.nio.ch.DatagramChannelImpl
+sun.nio.ch.DatagramDispatcher
+sun.nio.ch.DefaultSelectorProvider
+sun.nio.ch.DirectBuffer
+sun.nio.ch.EPollArrayWrapper
+sun.nio.ch.EPollSelectorImpl
+sun.nio.ch.EPollSelectorProvider
+sun.nio.ch.FileChannelImpl
+sun.nio.ch.FileChannelImpl$Unmapper
+sun.nio.ch.FileDescriptorHolderSocketImpl
+sun.nio.ch.FileDispatcher
+sun.nio.ch.FileDispatcherImpl
+sun.nio.ch.FileKey
+sun.nio.ch.FileLockImpl
+sun.nio.ch.FileLockTable
+sun.nio.ch.IOStatus
+sun.nio.ch.IOUtil
+sun.nio.ch.InheritedChannel
+sun.nio.ch.Interruptible
+sun.nio.ch.NativeDispatcher
+sun.nio.ch.NativeObject
+sun.nio.ch.NativeThread
+sun.nio.ch.NativeThreadSet
+sun.nio.ch.Net
+sun.nio.ch.Net$1
+sun.nio.ch.PipeImpl
+sun.nio.ch.SelChImpl
+sun.nio.ch.SelectionKeyImpl
+sun.nio.ch.SelectorImpl
+sun.nio.ch.SelectorProviderImpl
+sun.nio.ch.ServerSocketChannelImpl
+sun.nio.ch.SharedFileLockTable
+sun.nio.ch.SharedFileLockTable$FileLockReference
+sun.nio.ch.SinkChannelImpl
+sun.nio.ch.SocketAdaptor
+sun.nio.ch.SocketAdaptor$1
+sun.nio.ch.SocketAdaptor$2
+sun.nio.ch.SocketAdaptor$SocketInputStream
+sun.nio.ch.SocketChannelImpl
+sun.nio.ch.SocketDispatcher
+sun.nio.ch.SourceChannelImpl
+sun.nio.ch.Util
+sun.nio.ch.Util$1
+sun.nio.ch.Util$2
+sun.nio.ch.Util$BufferCache
+sun.nio.cs.ArrayDecoder
+sun.nio.cs.ArrayEncoder
+sun.nio.cs.StreamDecoder
+sun.nio.cs.StreamEncoder
+sun.nio.cs.ThreadLocalCoders
+sun.nio.cs.ThreadLocalCoders$1
+sun.nio.cs.ThreadLocalCoders$2
+sun.nio.cs.ThreadLocalCoders$Cache
+sun.reflect.annotation.AnnotationType
+sun.reflect.misc.ReflectUtil
+sun.security.action.GetBooleanAction
+sun.security.action.GetPropertyAction
+sun.security.ec.ECKeyFactory
+sun.security.ec.ECKeyFactory$1
+sun.security.ec.ECKeyFactory$2
+sun.security.ec.ECParameters
+sun.security.ec.NamedCurve
+sun.security.jca.GetInstance
+sun.security.jca.GetInstance$Instance
+sun.security.jca.JCAUtil
+sun.security.jca.ProviderConfig
+sun.security.jca.ProviderConfig$2
+sun.security.jca.ProviderList
+sun.security.jca.ProviderList$1
+sun.security.jca.ProviderList$2
+sun.security.jca.ProviderList$3
+sun.security.jca.ProviderList$ServiceList
+sun.security.jca.ProviderList$ServiceList$1
+sun.security.jca.Providers
+sun.security.jca.ServiceId
+sun.security.pkcs.ContentInfo
+sun.security.pkcs.PKCS7
+sun.security.pkcs.PKCS9Attribute
+sun.security.pkcs.ParsingException
+sun.security.pkcs.SignerInfo
+sun.security.provider.CertPathProvider
+sun.security.provider.X509Factory
+sun.security.provider.certpath.AdaptableX509CertSelector
+sun.security.provider.certpath.AlgorithmChecker
+sun.security.provider.certpath.BasicChecker
+sun.security.provider.certpath.CertPathHelper
+sun.security.provider.certpath.ConstraintsChecker
+sun.security.provider.certpath.KeyChecker
+sun.security.provider.certpath.PKIX
+sun.security.provider.certpath.PKIX$ValidatorParams
+sun.security.provider.certpath.PKIXCertPathValidator
+sun.security.provider.certpath.PKIXMasterCertPathValidator
+sun.security.provider.certpath.PolicyChecker
+sun.security.provider.certpath.PolicyNodeImpl
+sun.security.provider.certpath.UntrustedChecker
+sun.security.util.BitArray
+sun.security.util.ByteArrayLexOrder
+sun.security.util.ByteArrayTagOrder
+sun.security.util.Cache
+sun.security.util.Cache$EqualByteArray
+sun.security.util.Debug
+sun.security.util.DerEncoder
+sun.security.util.DerIndefLenConverter
+sun.security.util.DerInputBuffer
+sun.security.util.DerInputStream
+sun.security.util.DerOutputStream
+sun.security.util.DerValue
+sun.security.util.DisabledAlgorithmConstraints
+sun.security.util.DisabledAlgorithmConstraints$1
+sun.security.util.DisabledAlgorithmConstraints$KeySizeConstraint
+sun.security.util.DisabledAlgorithmConstraints$KeySizeConstraint$Operator
+sun.security.util.DisabledAlgorithmConstraints$KeySizeConstraints
+sun.security.util.KeyUtil
+sun.security.util.Length
+sun.security.util.ManifestDigester
+sun.security.util.ManifestDigester$Entry
+sun.security.util.ManifestDigester$Position
+sun.security.util.ManifestEntryVerifier
+sun.security.util.ManifestEntryVerifier$SunProviderHolder
+sun.security.util.MemoryCache
+sun.security.util.MemoryCache$CacheEntry
+sun.security.util.MemoryCache$SoftCacheEntry
+sun.security.util.ObjectIdentifier
+sun.security.util.SignatureFileVerifier
+sun.security.util.UntrustedCertificates
+sun.security.x509.AVA
+sun.security.x509.AVAKeyword
+sun.security.x509.AccessDescription
+sun.security.x509.AlgorithmId
+sun.security.x509.AuthorityInfoAccessExtension
+sun.security.x509.AuthorityKeyIdentifierExtension
+sun.security.x509.BasicConstraintsExtension
+sun.security.x509.CRLDistributionPointsExtension
+sun.security.x509.CRLNumberExtension
+sun.security.x509.CRLReasonCodeExtension
+sun.security.x509.CertAttrSet
+sun.security.x509.CertificateAlgorithmId
+sun.security.x509.CertificateExtensions
+sun.security.x509.CertificateIssuerExtension
+sun.security.x509.CertificatePoliciesExtension
+sun.security.x509.CertificatePolicyId
+sun.security.x509.CertificateSerialNumber
+sun.security.x509.CertificateValidity
+sun.security.x509.CertificateVersion
+sun.security.x509.CertificateX509Key
+sun.security.x509.DNSName
+sun.security.x509.DeltaCRLIndicatorExtension
+sun.security.x509.DistributionPoint
+sun.security.x509.ExtendedKeyUsageExtension
+sun.security.x509.Extension
+sun.security.x509.FreshestCRLExtension
+sun.security.x509.GeneralName
+sun.security.x509.GeneralNameInterface
+sun.security.x509.GeneralNames
+sun.security.x509.InhibitAnyPolicyExtension
+sun.security.x509.IssuerAlternativeNameExtension
+sun.security.x509.IssuingDistributionPointExtension
+sun.security.x509.KeyIdentifier
+sun.security.x509.KeyUsageExtension
+sun.security.x509.NameConstraintsExtension
+sun.security.x509.NetscapeCertTypeExtension
+sun.security.x509.OCSPNoCheckExtension
+sun.security.x509.OIDMap
+sun.security.x509.OIDMap$OIDInfo
+sun.security.x509.PKIXExtensions
+sun.security.x509.PolicyConstraintsExtension
+sun.security.x509.PolicyInformation
+sun.security.x509.PolicyMappingsExtension
+sun.security.x509.PrivateKeyUsageExtension
+sun.security.x509.RDN
+sun.security.x509.SerialNumber
+sun.security.x509.SubjectAlternativeNameExtension
+sun.security.x509.SubjectInfoAccessExtension
+sun.security.x509.SubjectKeyIdentifierExtension
+sun.security.x509.URIName
+sun.security.x509.X500Name
+sun.security.x509.X500Name$1
+sun.security.x509.X509AttributeName
+sun.security.x509.X509CertImpl
+sun.security.x509.X509CertInfo
+sun.security.x509.X509Key
+sun.util.LocaleServiceProviderPool
+sun.util.LocaleServiceProviderPool$1
+sun.util.calendar.AbstractCalendar
+sun.util.calendar.BaseCalendar
+sun.util.calendar.BaseCalendar$Date
+sun.util.calendar.CalendarDate
+sun.util.calendar.CalendarSystem
+sun.util.calendar.CalendarUtils
+sun.util.calendar.Era
+sun.util.calendar.Gregorian
+sun.util.calendar.Gregorian$Date
+sun.util.calendar.ImmutableGregorianDate
+sun.util.calendar.JulianCalendar
+sun.util.calendar.JulianCalendar$Date
+sun.util.calendar.LocalGregorianCalendar
+sun.util.locale.BaseLocale
+sun.util.locale.BaseLocale$Cache
+sun.util.locale.BaseLocale$Key
+sun.util.locale.Extension
+sun.util.locale.InternalLocaleBuilder
+sun.util.locale.InternalLocaleBuilder$CaseInsensitiveChar
+sun.util.locale.LanguageTag
+sun.util.locale.LocaleExtensions
+sun.util.locale.LocaleObjectCache
+sun.util.locale.LocaleObjectCache$CacheEntry
+sun.util.locale.LocaleSyntaxException
+sun.util.locale.LocaleUtils
+sun.util.locale.ParseStatus
+sun.util.locale.StringTokenIterator
+sun.util.locale.UnicodeLocaleExtension
+sun.util.logging.LoggingProxy
+sun.util.logging.LoggingSupport
+sun.util.logging.LoggingSupport$1
+sun.util.logging.LoggingSupport$2
+sun.util.logging.PlatformLogger
+sun.util.logging.PlatformLogger$1
+sun.util.logging.PlatformLogger$JavaLoggerProxy
+sun.util.logging.PlatformLogger$Level
+sun.util.logging.PlatformLogger$LoggerProxy
diff --git a/core/java/android/accessibilityservice/AccessibilityService.java b/core/java/android/accessibilityservice/AccessibilityService.java
index 56728ad..8b277b2 100644
--- a/core/java/android/accessibilityservice/AccessibilityService.java
+++ b/core/java/android/accessibilityservice/AccessibilityService.java
@@ -925,18 +925,25 @@
         }
 
         /**
-         * Returns the region of the screen currently being magnified. If
-         * magnification is not enabled, the returned region will be empty.
+         * Returns the region of the screen currently active for magnification. Changes to
+         * magnification scale and center only affect this portion of the screen. The rest of the
+         * screen, for example input methods, cannot be magnified. This region is relative to the
+         * unscaled screen and is independent of the scale and center point.
+         * <p>
+         * The returned region will be empty if magnification is not active. Magnification is active
+         * if magnification gestures are enabled or if a service is running that can control
+         * magnification.
          * <p>
          * <strong>Note:</strong> If the service is not yet connected (e.g.
          * {@link AccessibilityService#onServiceConnected()} has not yet been
          * called) or the service has been disconnected, this method will
          * return an empty region.
          *
-         * @return the screen-relative bounds of the magnified region
+         * @return the region of the screen currently active for magnification, or an empty region
+         * if magnification is not active.
          */
         @NonNull
-        public Region getMagnifiedRegion() {
+        public Region getMagnificationRegion() {
             final IAccessibilityServiceConnection connection =
                     AccessibilityInteractionClient.getInstance().getConnection(
                             mService.mConnectionId);
@@ -1049,11 +1056,12 @@
              * Called when the magnified region, scale, or center changes.
              *
              * @param controller the magnification controller
-             * @param region the new magnified region, may be empty if
-             *               magnification is not enabled (e.g. scale is 1)
+             * @param region the magnification region
              * @param scale the new scale
-             * @param centerX the new X coordinate around which magnification is focused
-             * @param centerY the new Y coordinate around which magnification is focused
+             * @param centerX the new X coordinate, in unscaled coordinates, around which
+             * magnification is focused
+             * @param centerY the new Y coordinate, in unscaled coordinates, around which
+             * magnification is focused
              */
             void onMagnificationChanged(@NonNull MagnificationController controller,
                     @NonNull Region region, float scale, float centerX, float centerY);
diff --git a/core/java/android/accessibilityservice/GestureDescription.java b/core/java/android/accessibilityservice/GestureDescription.java
index e18a34d..fc9581e 100644
--- a/core/java/android/accessibilityservice/GestureDescription.java
+++ b/core/java/android/accessibilityservice/GestureDescription.java
@@ -18,7 +18,6 @@
 
 import android.annotation.IntRange;
 import android.annotation.NonNull;
-import android.graphics.Matrix;
 import android.graphics.Path;
 import android.graphics.PathMeasure;
 import android.graphics.RectF;
@@ -26,10 +25,8 @@
 import android.view.MotionEvent;
 import android.view.MotionEvent.PointerCoords;
 import android.view.MotionEvent.PointerProperties;
-import android.view.ViewConfiguration;
 
 import java.util.ArrayList;
-import java.util.Arrays;
 import java.util.List;
 
 /**
@@ -160,9 +157,10 @@
         private final List<StrokeDescription> mStrokes = new ArrayList<>();
 
         /**
-         * Add a stroke to the gesture description. Up to {@code MAX_STROKE_COUNT} paths may be
-         * added to a gesture, and the total gesture duration (earliest path start time to latest path
-         * end time) may not exceed {@code MAX_GESTURE_DURATION_MS}.
+         * Add a stroke to the gesture description. Up to
+         * {@link GestureDescription#getMaxStrokeCount()} paths may be
+         * added to a gesture, and the total gesture duration (earliest path start time to latest
+         * path end time) may not exceed {@link GestureDescription#getMaxGestureDuration()}.
          *
          * @param strokeDescription the stroke to add.
          *
@@ -201,10 +199,13 @@
         long mEndTime;
         private float mTimeToLengthConversion;
         private PathMeasure mPathMeasure;
+        // The tap location is only set for zero-length paths
+        float[] mTapLocation;
 
         /**
-         * @param path The path to follow. Must have exactly one contour, and that contour must
-         * have nonzero length. The bounds of the path must not be negative.
+         * @param path The path to follow. Must have exactly one contour. The bounds of the path
+         * must not be negative. The path must not be empty. If the path has zero length
+         * (for example, a single {@code moveTo()}), the stroke is a touch that doesn't move.
          * @param startTime The time, in milliseconds, from the time the gesture starts to the
          * time the stroke should start. Must not be negative.
          * @param duration The duration, in milliseconds, the stroke takes to traverse the path.
@@ -225,10 +226,18 @@
                     || (bounds.left < 0)) {
                 throw new IllegalArgumentException("Path bounds must not be negative");
             }
+            if (path.isEmpty()) {
+                throw new IllegalArgumentException("Path is empty");
+            }
             mPath = new Path(path);
             mPathMeasure = new PathMeasure(path, false);
             if (mPathMeasure.getLength() == 0) {
-                throw new IllegalArgumentException("Path has zero length");
+                // Treat zero-length paths as taps
+                Path tempPath = new Path(path);
+                tempPath.lineTo(-1, -1);
+                mTapLocation = new float[2];
+                PathMeasure pathMeasure = new PathMeasure(tempPath, false);
+                pathMeasure.getPosTan(0, mTapLocation, null);
             }
             if (mPathMeasure.nextContour()) {
                 throw new IllegalArgumentException("Path has more than one contour");
@@ -237,12 +246,10 @@
              * Calling nextContour has moved mPathMeasure off the first contour, which is the only
              * one we care about. Set the path again to go back to the first contour.
              */
-            mPathMeasure.setPath(path, false);
+            mPathMeasure.setPath(mPath, false);
             mStartTime = startTime;
             mEndTime = startTime + duration;
-            if (duration > 0) {
-                mTimeToLengthConversion = getLength() / duration;
-            }
+            mTimeToLengthConversion = getLength() / duration;
         }
 
         /**
@@ -278,6 +285,11 @@
 
         /* Assumes hasPointForTime returns true */
         boolean getPosForTime(long time, float[] pos) {
+            if (mTapLocation != null) {
+                pos[0] = mTapLocation[0];
+                pos[1] = mTapLocation[1];
+                return true;
+            }
             if (time == mEndTime) {
                 // Close to the end time, roundoff can be a problem
                 return mPathMeasure.getPosTan(getLength(), pos, null);
diff --git a/core/java/android/animation/ObjectAnimator.java b/core/java/android/animation/ObjectAnimator.java
index 542ecf4..1d10860 100644
--- a/core/java/android/animation/ObjectAnimator.java
+++ b/core/java/android/animation/ObjectAnimator.java
@@ -585,6 +585,11 @@
      * along the way, and an ending value (these values will be distributed evenly across
      * the duration of the animation).
      *
+     * <p><strong>Note:</strong> The values are stored as references to the original
+     * objects, which means that changes to those objects after this method is called will
+     * affect the values on the animator. If the objects will be mutated externally after
+     * this method is called, callers should pass a copy of those objects instead.
+     *
      * @param target The object whose property is to be animated. This object should
      * have a public method on it called <code>setName()</code>, where <code>name</code> is
      * the value of the <code>propertyName</code> parameter.
@@ -635,6 +640,11 @@
      * along the way, and an ending value (these values will be distributed evenly across
      * the duration of the animation).
      *
+     * <p><strong>Note:</strong> The values are stored as references to the original
+     * objects, which means that changes to those objects after this method is called will
+     * affect the values on the animator. If the objects will be mutated externally after
+     * this method is called, callers should pass a copy of those objects instead.
+     *
      * @param target The object whose property is to be animated.
      * @param property The property being animated.
      * @param evaluator A TypeEvaluator that will be called on each animation frame to
@@ -663,6 +673,11 @@
      * supplied, the <code>TypeConverter</code> must be a
      * {@link android.animation.BidirectionalTypeConverter} to retrieve the current value.
      *
+     * <p><strong>Note:</strong> The values are stored as references to the original
+     * objects, which means that changes to those objects after this method is called will
+     * affect the values on the animator. If the objects will be mutated externally after
+     * this method is called, callers should pass a copy of those objects instead.
+     *
      * @param target The object whose property is to be animated.
      * @param property The property being animated.
      * @param converter Converts the animated object to the Property type.
diff --git a/core/java/android/animation/PropertyValuesHolder.java b/core/java/android/animation/PropertyValuesHolder.java
index ffea6f5..224823e 100644
--- a/core/java/android/animation/PropertyValuesHolder.java
+++ b/core/java/android/animation/PropertyValuesHolder.java
@@ -388,6 +388,11 @@
      * set of Object values. This variant also takes a TypeEvaluator because the system
      * cannot automatically interpolate between objects of unknown type.
      *
+     * <p><strong>Note:</strong> The Object values are stored as references to the original
+     * objects, which means that changes to those objects after this method is called will
+     * affect the values on the PropertyValuesHolder. If the objects will be mutated externally
+     * after this method is called, callers should pass a copy of those objects instead.
+     *
      * @param propertyName The name of the property being animated.
      * @param evaluator A TypeEvaluator that will be called on each animation frame to
      * provide the necessary interpolation between the Object values to derive the animated
@@ -433,6 +438,11 @@
      * set of Object values. This variant also takes a TypeEvaluator because the system
      * cannot automatically interpolate between objects of unknown type.
      *
+     * <p><strong>Note:</strong> The Object values are stored as references to the original
+     * objects, which means that changes to those objects after this method is called will
+     * affect the values on the PropertyValuesHolder. If the objects will be mutated externally
+     * after this method is called, callers should pass a copy of those objects instead.
+     *
      * @param property The property being animated. Should not be null.
      * @param evaluator A TypeEvaluator that will be called on each animation frame to
      * provide the necessary interpolation between the Object values to derive the animated
@@ -458,6 +468,11 @@
      * must be a {@link android.animation.BidirectionalTypeConverter} to retrieve the current
      * value.
      *
+     * <p><strong>Note:</strong> The Object values are stored as references to the original
+     * objects, which means that changes to those objects after this method is called will
+     * affect the values on the PropertyValuesHolder. If the objects will be mutated externally
+     * after this method is called, callers should pass a copy of those objects instead.
+     *
      * @param property The property being animated. Should not be null.
      * @param converter Converts the animated object to the Property type.
      * @param evaluator A TypeEvaluator that will be called on each animation frame to
@@ -636,7 +651,12 @@
      * {@link ObjectAnimator}, and with a getter function
      * derived automatically from <code>propertyName</code>, since otherwise PropertyValuesHolder has
      * no way of determining what the value should be.
-     * 
+     *
+     * <p><strong>Note:</strong> The Object values are stored as references to the original
+     * objects, which means that changes to those objects after this method is called will
+     * affect the values on the PropertyValuesHolder. If the objects will be mutated externally
+     * after this method is called, callers should pass a copy of those objects instead.
+     *
      * @param values One or more values that the animation will animate between.
      */
     public void setObjectValues(Object... values) {
diff --git a/core/java/android/animation/ValueAnimator.java b/core/java/android/animation/ValueAnimator.java
index 31035a7..0a9b5de 100644
--- a/core/java/android/animation/ValueAnimator.java
+++ b/core/java/android/animation/ValueAnimator.java
@@ -353,6 +353,11 @@
      * from the target object and property being animated). Therefore, there should typically
      * be two or more values.
      *
+     * <p><strong>Note:</strong> The Object values are stored as references to the original
+     * objects, which means that changes to those objects after this method is called will
+     * affect the values on the animator. If the objects will be mutated externally after
+     * this method is called, callers should pass a copy of those objects instead.
+     *
      * <p>Since ValueAnimator does not know how to animate between arbitrary Objects, this
      * factory method also takes a TypeEvaluator object that the ValueAnimator will use
      * to perform that interpolation.
@@ -434,6 +439,11 @@
      * from the target object and property being animated). Therefore, there should typically
      * be two or more values.
      *
+     * <p><strong>Note:</strong> The Object values are stored as references to the original
+     * objects, which means that changes to those objects after this method is called will
+     * affect the values on the animator. If the objects will be mutated externally after
+     * this method is called, callers should pass a copy of those objects instead.
+     *
      * <p>If there are already multiple sets of values defined for this ValueAnimator via more
      * than one PropertyValuesHolder object, this method will set the values for the first
      * of those objects.</p>
diff --git a/core/java/android/app/Activity.java b/core/java/android/app/Activity.java
index 0149952..b5490cf 100644
--- a/core/java/android/app/Activity.java
+++ b/core/java/android/app/Activity.java
@@ -2975,6 +2975,18 @@
     }
 
     /**
+     * Puts the activity in picture-in-picture mode if the activity supports.
+     * @see android.R.attr#supportsPictureInPicture
+     * @hide
+     */
+    @Override
+    public void enterPictureInPictureModeIfPossible() {
+        if (mActivityInfo.resizeMode == ActivityInfo.RESIZE_MODE_RESIZEABLE_AND_PIPABLE) {
+            enterPictureInPictureMode();
+        }
+    }
+
+    /**
      * Called to process key events.  You can override this to intercept all
      * key events before they are dispatched to the window.  Be sure to call
      * this implementation for key events that should be handled normally.
diff --git a/core/java/android/app/ActivityManager.java b/core/java/android/app/ActivityManager.java
index d440017..ff8cf66 100644
--- a/core/java/android/app/ActivityManager.java
+++ b/core/java/android/app/ActivityManager.java
@@ -3430,6 +3430,8 @@
     public static final int FLAG_AND_LOCKED = 1 << 1;
     /** {@hide} */
     public static final int FLAG_AND_UNLOCKED = 1 << 2;
+    /** {@hide} */
+    public static final int FLAG_AND_UNLOCKING_OR_UNLOCKED = 1 << 3;
 
     /**
      * Return whether the given user is actively running.  This means that
@@ -3449,26 +3451,6 @@
     }
 
     /** {@hide} */
-    public boolean isUserRunningAndLocked(int userId) {
-        try {
-            return ActivityManagerNative.getDefault().isUserRunning(userId,
-                    ActivityManager.FLAG_AND_LOCKED);
-        } catch (RemoteException e) {
-            throw e.rethrowFromSystemServer();
-        }
-    }
-
-    /** {@hide} */
-    public boolean isUserRunningAndUnlocked(int userId) {
-        try {
-            return ActivityManagerNative.getDefault().isUserRunning(userId,
-                    ActivityManager.FLAG_AND_UNLOCKED);
-        } catch (RemoteException e) {
-            throw e.rethrowFromSystemServer();
-        }
-    }
-
-    /** {@hide} */
     public boolean isVrModePackageEnabled(ComponentName component) {
         try {
             return ActivityManagerNative.getDefault().isVrModePackageEnabled(component);
diff --git a/core/java/android/app/ActivityManagerNative.java b/core/java/android/app/ActivityManagerNative.java
index a3f3b2b3..1a7c746 100644
--- a/core/java/android/app/ActivityManagerNative.java
+++ b/core/java/android/app/ActivityManagerNative.java
@@ -794,7 +794,9 @@
             if (hasBounds) {
                 bounds = Rect.CREATOR.createFromParcel(data);
             }
-            boolean res = moveTaskToDockedStack(taskId, createMode, toTop, animate, bounds);
+            final boolean moveHomeStackFront = data.readInt() != 0;
+            final boolean res = moveTaskToDockedStack(
+                    taskId, createMode, toTop, animate, bounds, moveHomeStackFront);
             reply.writeNoException();
             reply.writeInt(res ? 1 : 0);
             return true;
@@ -3865,7 +3867,7 @@
     }
     @Override
     public boolean moveTaskToDockedStack(int taskId, int createMode, boolean toTop, boolean animate,
-            Rect initialBounds) throws RemoteException
+            Rect initialBounds, boolean moveHomeStackFront) throws RemoteException
     {
         Parcel data = Parcel.obtain();
         Parcel reply = Parcel.obtain();
@@ -3880,6 +3882,7 @@
         } else {
             data.writeInt(0);
         }
+        data.writeInt(moveHomeStackFront ? 1 : 0);
         mRemote.transact(MOVE_TASK_TO_DOCKED_STACK_TRANSACTION, data, reply, 0);
         reply.readException();
         boolean res = reply.readInt() > 0;
diff --git a/core/java/android/app/ActivityOptions.java b/core/java/android/app/ActivityOptions.java
index 2846798..051295e 100644
--- a/core/java/android/app/ActivityOptions.java
+++ b/core/java/android/app/ActivityOptions.java
@@ -160,6 +160,12 @@
     private static final String KEY_LAUNCH_TASK_ID = "android.activity.launchTaskId";
 
     /**
+     * See {@link #setAvoidMoveToFront}.
+     * @hide
+     */
+    private static final String KEY_DONT_MOVE_TO_FRONT = "android.activity.dontMoveToFront";
+
+    /**
      * Where the docked stack should be positioned.
      * @hide
      */
@@ -232,6 +238,7 @@
     private int mLaunchStackId = INVALID_STACK_ID;
     private int mLaunchTaskId = -1;
     private int mDockCreateMode = DOCKED_STACK_CREATE_MODE_TOP_OR_LEFT;
+    private boolean mAvoidMoveToFront;
     private AppTransitionAnimationSpec mAnimSpecs[];
 
     /**
@@ -774,6 +781,7 @@
         }
         mLaunchStackId = opts.getInt(KEY_LAUNCH_STACK_ID, INVALID_STACK_ID);
         mLaunchTaskId = opts.getInt(KEY_LAUNCH_TASK_ID, -1);
+        mAvoidMoveToFront = opts.getBoolean(KEY_DONT_MOVE_TO_FRONT, false);
         mDockCreateMode = opts.getInt(KEY_DOCK_CREATE_MODE, DOCKED_STACK_CREATE_MODE_TOP_OR_LEFT);
         if (opts.containsKey(KEY_ANIM_SPECS)) {
             Parcelable[] specs = opts.getParcelableArray(KEY_ANIM_SPECS);
@@ -950,6 +958,23 @@
         return mLaunchTaskId;
     }
 
+    /**
+     * Set's whether the task should be moved to the front. This is different from
+     * {@link #getLaunchTaskBehind()} as we don't want to have an animation at all when launching
+     * an activity that shouldn't be moved to the front.
+     * @hide
+     */
+    public void setAvoidMoveToFront(boolean avoidMoveToFront) {
+        mAvoidMoveToFront = avoidMoveToFront;
+    }
+
+    /**
+     * @hide
+     */
+    public boolean getAvoidMoveToFront() {
+        return mAvoidMoveToFront;
+    }
+
     /** @hide */
     public int getDockCreateMode() {
         return mDockCreateMode;
@@ -1103,6 +1128,7 @@
         }
         b.putInt(KEY_LAUNCH_STACK_ID, mLaunchStackId);
         b.putInt(KEY_LAUNCH_TASK_ID, mLaunchTaskId);
+        b.putBoolean(KEY_DONT_MOVE_TO_FRONT, mAvoidMoveToFront);
         b.putInt(KEY_DOCK_CREATE_MODE, mDockCreateMode);
         if (mAnimSpecs != null) {
             b.putParcelableArray(KEY_ANIM_SPECS, mAnimSpecs);
diff --git a/core/java/android/app/ActivityThread.java b/core/java/android/app/ActivityThread.java
index 1da21b0..6d805ed 100644
--- a/core/java/android/app/ActivityThread.java
+++ b/core/java/android/app/ActivityThread.java
@@ -3474,6 +3474,14 @@
                 if (r.mPreserveWindow) {
                     a.mWindowAdded = true;
                     r.mPreserveWindow = false;
+                    // Normally the ViewRoot sets up callbacks with the Activity
+                    // in addView->ViewRootImpl#setView. If we are instead reusing
+                    // the decor view we have to notify the view root that the
+                    // callbacks may have changed.
+                    ViewRootImpl impl = decor.getViewRootImpl();
+                    if (impl != null) {
+                        impl.notifyChildRebuilt();
+                    }
                 }
                 if (a.mVisibleFromClient && !a.mWindowAdded) {
                     a.mWindowAdded = true;
@@ -4609,16 +4617,7 @@
             // onConfigurationChanged
             int diff = activity.mCurrentConfig.diff(newConfig);
             if (diff != 0) {
-                // If this activity doesn't handle any of the config changes then don't bother
-                // calling onConfigurationChanged as we're going to destroy it.
-                // Except in the case where the configuration changed on the activity manager side,
-                // but wasn't big enough to cause a resource change so the activity wasn't destroyed.
-                // In this case we still want to change the configuration of the activity but not
-                // report it to the app.
-                if ((~activity.mActivityInfo.getRealConfigChanged() & diff) == 0
-                        || !reportToActivity) {
-                    shouldChangeConfig = true;
-                }
+                shouldChangeConfig = true;
             }
         }
 
diff --git a/core/java/android/app/Application.java b/core/java/android/app/Application.java
index 1174387..156df36 100644
--- a/core/java/android/app/Application.java
+++ b/core/java/android/app/Application.java
@@ -28,19 +28,21 @@
 import android.os.Bundle;
 
 /**
- * Base class for those who need to maintain global application state. You can
- * provide your own implementation by specifying its name in your
- * AndroidManifest.xml's &lt;application&gt; tag, which will cause that class
- * to be instantiated for you when the process for your application/package is
- * created.
- * 
- * <p class="note">There is normally no need to subclass Application.  In
- * most situation, static singletons can provide the same functionality in a
- * more modular way.  If your singleton needs a global context (for example
- * to register broadcast receivers), the function to retrieve it can be
- * given a {@link android.content.Context} which internally uses
+ * Base class for maintaining global application state. You can provide your own
+ * implementation by creating a subclass and specifying the fully-qualified name
+ * of this subclass as the <code>"android:name"</code> attribute in your
+ * AndroidManifest.xml's <code>&lt;application&gt;</code> tag. The Application
+ * class, or your subclass of the Application class, is instantiated before any
+ * other class when the process for your application/package is created.
+ *
+ * <p class="note"><strong>Note: </strong>There is normally no need to subclass
+ * Application.  In most situations, static singletons can provide the same
+ * functionality in a more modular way.  If your singleton needs a global
+ * context (for example to register broadcast receivers), include
  * {@link android.content.Context#getApplicationContext() Context.getApplicationContext()}
- * when first constructing the singleton.</p>
+ * as a {@link android.content.Context} argument when invoking your singleton's
+ * <code>getInstance()</code> method.
+ * </p>
  */
 public class Application extends ContextWrapper implements ComponentCallbacks2 {
     private ArrayList<ComponentCallbacks> mComponentCallbacks =
@@ -84,7 +86,7 @@
     /**
      * Called when the application is starting, before any activity, service,
      * or receiver objects (excluding content providers) have been created.
-     * Implementations should be as quick as possible (for example using 
+     * Implementations should be as quick as possible (for example using
      * lazy initialization of state) since the time spent in this function
      * directly impacts the performance of starting the first activity,
      * service, or receiver in a process.
@@ -179,7 +181,7 @@
     }
 
     // ------------------ Internal API ------------------
-    
+
     /**
      * @hide
      */
@@ -287,4 +289,4 @@
             }
         }
     }
-}
+}
\ No newline at end of file
diff --git a/core/java/android/app/ApplicationLoaders.java b/core/java/android/app/ApplicationLoaders.java
index 0fc097e..d89e186 100644
--- a/core/java/android/app/ApplicationLoaders.java
+++ b/core/java/android/app/ApplicationLoaders.java
@@ -18,6 +18,7 @@
 
 import android.os.Trace;
 import android.util.ArrayMap;
+import com.android.internal.os.PathClassLoaderFactory;
 import dalvik.system.PathClassLoader;
 
 class ApplicationLoaders {
@@ -51,24 +52,19 @@
                 if (loader != null) {
                     return loader;
                 }
-    
+
                 Trace.traceBegin(Trace.TRACE_TAG_ACTIVITY_MANAGER, zip);
 
-                PathClassLoader pathClassloader =
-                    new PathClassLoader(zip, librarySearchPath, parent);
+                PathClassLoader pathClassloader = PathClassLoaderFactory.createClassLoader(
+                                                      zip,
+                                                      librarySearchPath,
+                                                      libraryPermittedPath,
+                                                      parent,
+                                                      targetSdkVersion,
+                                                      isBundled);
 
-                String errorMessage = createClassloaderNamespace(pathClassloader,
-                                                                 targetSdkVersion,
-                                                                 librarySearchPath,
-                                                                 libraryPermittedPath,
-                                                                 isBundled);
                 Trace.traceEnd(Trace.TRACE_TAG_ACTIVITY_MANAGER);
 
-                if (errorMessage != null) {
-                    throw new UnsatisfiedLinkError("Unable to create namespace for the classloader " +
-                                                   pathClassloader + ": " + errorMessage);
-                }
-
                 mLoaders.put(zip, pathClassloader);
                 return pathClassloader;
             }
@@ -80,12 +76,6 @@
         }
     }
 
-    private static native String createClassloaderNamespace(ClassLoader classLoader,
-                                                            int targetSdkVersion,
-                                                            String librarySearchPath,
-                                                            String libraryPermittedPath,
-                                                            boolean isShared);
-
     /**
      * Adds a new path the classpath of the given loader.
      * @throws IllegalStateException if the provided class loader is not a {@link PathClassLoader}.
@@ -100,6 +90,5 @@
 
     private final ArrayMap<String, ClassLoader> mLoaders = new ArrayMap<String, ClassLoader>();
 
-    private static final ApplicationLoaders gApplicationLoaders
-        = new ApplicationLoaders();
+    private static final ApplicationLoaders gApplicationLoaders = new ApplicationLoaders();
 }
diff --git a/core/java/android/app/ContextImpl.java b/core/java/android/app/ContextImpl.java
index f2e5997..cf663a3 100644
--- a/core/java/android/app/ContextImpl.java
+++ b/core/java/android/app/ContextImpl.java
@@ -1958,7 +1958,7 @@
             }
 
             if (res != null) {
-                if (!res.exists()) {
+                if (!res.exists() && android.os.Process.myUid() == android.os.Process.SYSTEM_UID) {
                     Log.wtf(TAG, "Data directory doesn't exist for package " + getPackageName(),
                             new Throwable());
                 }
diff --git a/core/java/android/app/IActivityManager.java b/core/java/android/app/IActivityManager.java
index 66b4fcf..55ce6c2 100644
--- a/core/java/android/app/IActivityManager.java
+++ b/core/java/android/app/IActivityManager.java
@@ -147,7 +147,7 @@
     public void moveTaskBackwards(int task) throws RemoteException;
     public void moveTaskToStack(int taskId, int stackId, boolean toTop) throws RemoteException;
     public boolean moveTaskToDockedStack(int taskId, int createMode, boolean toTop, boolean animate,
-            Rect initialBounds) throws RemoteException;
+            Rect initialBounds, boolean moveHomeStackFront) throws RemoteException;
     public boolean moveTopActivityToPinnedStack(int stackId, Rect bounds) throws RemoteException;
 
     /**
diff --git a/core/java/android/app/LoadedApk.java b/core/java/android/app/LoadedApk.java
index 2be55317..bb2cc95 100644
--- a/core/java/android/app/LoadedApk.java
+++ b/core/java/android/app/LoadedApk.java
@@ -356,14 +356,18 @@
             if (instrumentationSplitAppDirs != null) {
                 Collections.addAll(outZipPaths, instrumentationSplitAppDirs);
             }
-            outZipPaths.add(instrumentedAppDir);
-            if (instrumentedSplitAppDirs != null) {
-                Collections.addAll(outZipPaths, instrumentedSplitAppDirs);
+            if (!instrumentationAppDir.equals(instrumentedAppDir)) {
+                outZipPaths.add(instrumentedAppDir);
+                if (instrumentedSplitAppDirs != null) {
+                    Collections.addAll(outZipPaths, instrumentedSplitAppDirs);
+                }
             }
 
             if (outLibPaths != null) {
                 outLibPaths.add(instrumentationLibDir);
-                outLibPaths.add(instrumentedLibDir);
+                if (!instrumentationLibDir.equals(instrumentedLibDir)) {
+                    outLibPaths.add(instrumentedLibDir);
+                }
             }
 
             if (!instrumentedAppDir.equals(instrumentationAppDir)) {
@@ -510,11 +514,15 @@
         }
 
         // Setup jit profile support.
+        //
         // It is ok to call this multiple times if the application gets updated with new splits.
         // The runtime only keeps track of unique code paths and can handle re-registration of
         // the same code path. There's no need to pass `addedPaths` since any new code paths
         // are already in `mApplicationInfo`.
-        if (needToSetupJitProfiles) {
+        //
+        // It is NOT ok to call this function from the system_server (for any of the packages it
+        // loads code from) so we explicitly disallow it there.
+        if (needToSetupJitProfiles && !ActivityThread.isSystem()) {
             // Temporarily disable logging of disk reads/writes on the Looper thread
             // as this is early and necessary. Write is only needed to create the
             // profile file if it's not already there.
diff --git a/core/java/android/app/LoaderManager.java b/core/java/android/app/LoaderManager.java
index f203f46..c14dec9 100644
--- a/core/java/android/app/LoaderManager.java
+++ b/core/java/android/app/LoaderManager.java
@@ -339,13 +339,16 @@
             }
         }
 
-        void cancel() {
+        boolean cancel() {
             if (DEBUG) Log.v(TAG, "  Canceling: " + this);
             if (mStarted && mLoader != null && mListenerRegistered) {
-                if (!mLoader.cancelLoad()) {
+                final boolean cancelLoadResult = mLoader.cancelLoad();
+                if (!cancelLoadResult) {
                     onLoadCanceled(mLoader);
                 }
+                return cancelLoadResult;
             }
+            return false;
         }
 
         void destroy() {
@@ -667,20 +670,21 @@
                     mInactiveLoaders.put(id, info);
                 } else {
                     // We already have an inactive loader for this ID that we are
-                    // waiting for!  What to do, what to do...
-                    if (!info.mStarted) {
-                        // The current Loader has not been started...  we thus
-                        // have no reason to keep it around, so bam, slam,
-                        // thank-you-ma'am.
+                    // waiting for! Try to cancel; if this returns true then the task is still
+                    // running and we have more work to do.
+                    if (!info.cancel()) {
+                        // The current Loader has not been started or was successfully canceled,
+                        // we thus have no reason to keep it around. Remove it and a new
+                        // LoaderInfo will be created below.
                         if (DEBUG) Log.v(TAG, "  Current loader is stopped; replacing");
                         mLoaders.put(id, null);
                         info.destroy();
                     } else {
                         // Now we have three active loaders... we'll queue
                         // up this request to be processed once one of the other loaders
-                        // finishes or is canceled.
-                        if (DEBUG) Log.v(TAG, "  Current loader is running; attempting to cancel");
-                        info.cancel();
+                        // finishes.
+                        if (DEBUG) Log.v(TAG,
+                                "  Current loader is running; configuring pending loader");
                         if (info.mPendingLoader != null) {
                             if (DEBUG) Log.v(TAG, "  Removing pending loader: " + info.mPendingLoader);
                             info.mPendingLoader.destroy();
diff --git a/core/java/android/app/Notification.java b/core/java/android/app/Notification.java
index d7705b9..460640e 100644
--- a/core/java/android/app/Notification.java
+++ b/core/java/android/app/Notification.java
@@ -939,14 +939,6 @@
     public static final String EXTRA_SELF_DISPLAY_NAME = "android.selfDisplayName";
 
     /**
-     * {@link #extras} key: a boolean describing whether the platform should automatically
-     * generate possible replies to
-     * {@link android.app.Notification.MessagingStyle.Message} objects provided by a
-     * {@link android.app.Notification.MessagingStyle} notification.
-     */
-    public static final String EXTRA_ALLOW_GENERATED_REPLIES = "android.allowGeneratedReplies";
-
-    /**
      * {@link #extras} key: a {@link String} to be displayed as the title to a conversation
      * represented by a {@link android.app.Notification.MessagingStyle}
      */
@@ -996,6 +988,7 @@
         private final Bundle mExtras;
         private Icon mIcon;
         private final RemoteInput[] mRemoteInputs;
+        private boolean mAllowGeneratedReplies = false;
 
         /**
          * Small icon representing the action.
@@ -1029,6 +1022,7 @@
             }
             mExtras = Bundle.setDefusable(in.readBundle(), true);
             mRemoteInputs = in.createTypedArray(RemoteInput.CREATOR);
+            mAllowGeneratedReplies = in.readInt() == 1;
         }
 
         /**
@@ -1036,11 +1030,11 @@
          */
         @Deprecated
         public Action(int icon, CharSequence title, PendingIntent intent) {
-            this(Icon.createWithResource("", icon), title, intent, new Bundle(), null);
+            this(Icon.createWithResource("", icon), title, intent, new Bundle(), null, false);
         }
 
         private Action(Icon icon, CharSequence title, PendingIntent intent, Bundle extras,
-                RemoteInput[] remoteInputs) {
+                RemoteInput[] remoteInputs, boolean allowGeneratedReplies) {
             this.mIcon = icon;
             if (icon != null && icon.getType() == Icon.TYPE_RESOURCE) {
                 this.icon = icon.getResId();
@@ -1049,6 +1043,7 @@
             this.actionIntent = intent;
             this.mExtras = extras != null ? extras : new Bundle();
             this.mRemoteInputs = remoteInputs;
+            this.mAllowGeneratedReplies = allowGeneratedReplies;
         }
 
         /**
@@ -1070,6 +1065,14 @@
         }
 
         /**
+         * Return whether the platform should automatically generate possible replies for this
+         * {@link Action}
+         */
+        public boolean getAllowGeneratedReplies() {
+            return mAllowGeneratedReplies;
+        }
+
+        /**
          * Get the list of inputs to be collected from the user when this action is sent.
          * May return null if no remote inputs were added.
          */
@@ -1084,6 +1087,7 @@
             private final Icon mIcon;
             private final CharSequence mTitle;
             private final PendingIntent mIntent;
+            private boolean mAllowGeneratedReplies;
             private final Bundle mExtras;
             private ArrayList<RemoteInput> mRemoteInputs;
 
@@ -1169,6 +1173,20 @@
             }
 
             /**
+             * Set whether the platform should automatically generate possible replies to add to
+             * {@link RemoteInput#getChoices()}. If the {@link Action} doesn't have a
+             * {@link RemoteInput}, this has no effect.
+             * @param allowGeneratedReplies {@code true} to allow generated replies, {@code false}
+             * otherwise
+             * @return this object for method chaining
+             * The default value is {@code false}
+             */
+            public Builder setAllowGeneratedReplies(boolean allowGeneratedReplies) {
+                mAllowGeneratedReplies = allowGeneratedReplies;
+                return this;
+            }
+
+            /**
              * Apply an extender to this action builder. Extenders may be used to add
              * metadata or change options on this builder.
              */
@@ -1185,7 +1203,8 @@
             public Action build() {
                 RemoteInput[] remoteInputs = mRemoteInputs != null
                         ? mRemoteInputs.toArray(new RemoteInput[mRemoteInputs.size()]) : null;
-                return new Action(mIcon, mTitle, mIntent, mExtras, remoteInputs);
+                return new Action(mIcon, mTitle, mIntent, mExtras, remoteInputs,
+                        mAllowGeneratedReplies);
             }
         }
 
@@ -1196,7 +1215,8 @@
                     title,
                     actionIntent, // safe to alias
                     new Bundle(mExtras),
-                    getRemoteInputs());
+                    getRemoteInputs(),
+                    getAllowGeneratedReplies());
         }
         @Override
         public int describeContents() {
@@ -1220,6 +1240,7 @@
             }
             out.writeBundle(mExtras);
             out.writeTypedArray(mRemoteInputs, flags);
+            out.writeInt(mAllowGeneratedReplies ? 1 : 0);
         }
         public static final Parcelable.Creator<Action> CREATOR =
                 new Parcelable.Creator<Action>() {
@@ -3351,7 +3372,8 @@
         }
 
         private void resetStandardTemplateWithActions(RemoteViews big) {
-            big.setViewVisibility(R.id.actions_container, View.GONE);
+            // actions_container is only reset when there are no actions to avoid focus issues with
+            // remote inputs.
             big.setViewVisibility(R.id.actions, View.GONE);
             big.removeAllViews(R.id.actions);
 
@@ -3390,12 +3412,10 @@
                     validRemoteInput |= hasValidRemoteInput(action);
 
                     final RemoteViews button = generateActionButton(action);
-                    if (i == N - 1) {
-                        button.setViewLayoutWidth(com.android.internal.R.id.action0,
-                                ViewGroup.LayoutParams.MATCH_PARENT);
-                    }
                     big.addView(R.id.actions, button);
                 }
+            } else {
+                big.setViewVisibility(R.id.actions_container, View.GONE);
             }
 
             CharSequence[] replyText = mN.extras.getCharSequenceArray(EXTRA_REMOTE_INPUT_HISTORY);
@@ -4265,15 +4285,19 @@
         public RemoteViews makeBigContentView() {
 
             // Nasty
-            CharSequence oldBuilderContentText =
-                    mBuilder.getAllExtras().getCharSequence(EXTRA_TEXT);
+            CharSequence text = mBuilder.getAllExtras().getCharSequence(EXTRA_TEXT);
             mBuilder.getAllExtras().putCharSequence(EXTRA_TEXT, null);
 
             RemoteViews contentView = getStandardView(mBuilder.getBigTextLayoutResource());
 
-            mBuilder.getAllExtras().putCharSequence(EXTRA_TEXT, oldBuilderContentText);
+            mBuilder.getAllExtras().putCharSequence(EXTRA_TEXT, text);
 
             CharSequence bigTextText = mBuilder.processLegacyText(mBigText);
+            if (TextUtils.isEmpty(bigTextText)) {
+                // In case the bigtext is null / empty fall back to the normal text to avoid a weird
+                // experience
+                bigTextText = mBuilder.processLegacyText(text);
+            }
             contentView.setTextViewText(R.id.big_text, bigTextText);
             contentView.setViewVisibility(R.id.big_text,
                     TextUtils.isEmpty(bigTextText) ? View.GONE : View.VISIBLE);
@@ -4326,7 +4350,6 @@
 
         CharSequence mUserDisplayName;
         CharSequence mConversationTitle;
-        boolean mAllowGeneratedReplies = true;
         List<Message> mMessages = new ArrayList<>();
 
         MessagingStyle() {
@@ -4350,25 +4373,6 @@
         }
 
         /**
-         * Set whether the platform should automatically generate possible replies from messages.
-         * @param allowGeneratedReplies {@code true} to allow generated replies, {@code false}
-         * otherwise
-         * @return this object for method chaining
-         * The default value is {@code true}
-         */
-        public MessagingStyle setAllowGeneratedReplies(boolean allowGeneratedReplies) {
-            mAllowGeneratedReplies = allowGeneratedReplies;
-            return this;
-        }
-
-        /**
-         * Return whether the platform should automatically generate possible replies from messages.
-         */
-        public boolean getAllowGeneratedReplies() {
-            return mAllowGeneratedReplies;
-        }
-
-        /**
          * Sets the title to be displayed on this conversation. This should only be used for
          * group messaging and left unset for one-on-one conversations.
          * @param conversationTitle
@@ -4442,7 +4446,6 @@
             if (mConversationTitle != null) {
                 extras.putCharSequence(EXTRA_CONVERSATION_TITLE, mConversationTitle);
             }
-            extras.putBoolean(EXTRA_ALLOW_GENERATED_REPLIES, mAllowGeneratedReplies);
             if (!mMessages.isEmpty()) { extras.putParcelableArray(EXTRA_MESSAGES,
                     Message.getBundleArrayForMessages(mMessages));
             }
@@ -4458,11 +4461,9 @@
             mMessages.clear();
             mUserDisplayName = extras.getString(EXTRA_SELF_DISPLAY_NAME);
             mConversationTitle = extras.getString(EXTRA_CONVERSATION_TITLE);
-            mAllowGeneratedReplies = extras.getBoolean(EXTRA_ALLOW_GENERATED_REPLIES,
-                    mAllowGeneratedReplies);
             Parcelable[] parcelables = extras.getParcelableArray(EXTRA_MESSAGES);
-            if (parcelables != null && parcelables instanceof Bundle[]) {
-                mMessages = Message.getMessagesFromBundleArray((Bundle[]) parcelables);
+            if (parcelables != null && parcelables instanceof Parcelable[]) {
+                mMessages = Message.getMessagesFromBundleArray(parcelables);
             }
         }
 
@@ -4558,6 +4559,25 @@
             return sb;
         }
 
+        /**
+         * @hide
+         */
+        @Override
+        public RemoteViews makeHeadsUpContentView() {
+            Message m = findLatestIncomingMessage();
+            CharSequence title = mConversationTitle != null
+                    ? mConversationTitle
+                    : (m == null) ? null : m.mSender;
+            CharSequence text = (m == null)
+                    ? null
+                    : mConversationTitle != null ? makeMessageLine(m) : m.mText;
+
+            return mBuilder.applyStandardTemplateWithActions(mBuilder.getBigBaseLayoutResource(),
+                    false /* hasProgress */,
+                    title,
+                    text);
+        }
+
         private static TextAppearanceSpan makeFontColorSpan(int color) {
             return new TextAppearanceSpan(null, 0, 0,
                     ColorStateList.valueOf(color), null);
@@ -4691,12 +4711,14 @@
                 return bundles;
             }
 
-            static List<Message> getMessagesFromBundleArray(Bundle[] bundles) {
+            static List<Message> getMessagesFromBundleArray(Parcelable[] bundles) {
                 List<Message> messages = new ArrayList<>(bundles.length);
                 for (int i = 0; i < bundles.length; i++) {
-                    Message message = getMessageFromBundle(bundles[i]);
-                    if (message != null) {
-                        messages.add(message);
+                    if (bundles[i] instanceof Bundle) {
+                        Message message = getMessageFromBundle((Bundle)bundles[i]);
+                        if (message != null) {
+                            messages.add(message);
+                        }
                     }
                 }
                 return messages;
@@ -5460,6 +5482,7 @@
         private static final String KEY_CUSTOM_CONTENT_HEIGHT = "customContentHeight";
         private static final String KEY_GRAVITY = "gravity";
         private static final String KEY_HINT_SCREEN_TIMEOUT = "hintScreenTimeout";
+        private static final String KEY_DISMISSAL_ID = "dismissalId";
 
         // Flags bitwise-ored to mFlags
         private static final int FLAG_CONTENT_INTENT_AVAILABLE_OFFLINE = 0x1;
@@ -5488,6 +5511,7 @@
         private int mCustomContentHeight;
         private int mGravity = DEFAULT_GRAVITY;
         private int mHintScreenTimeout;
+        private String mDismissalId;
 
         /**
          * Create a {@link android.app.Notification.WearableExtender} with default
@@ -5524,6 +5548,7 @@
                 mCustomContentHeight = wearableBundle.getInt(KEY_CUSTOM_CONTENT_HEIGHT);
                 mGravity = wearableBundle.getInt(KEY_GRAVITY, DEFAULT_GRAVITY);
                 mHintScreenTimeout = wearableBundle.getInt(KEY_HINT_SCREEN_TIMEOUT);
+                mDismissalId = wearableBundle.getString(KEY_DISMISSAL_ID);
             }
         }
 
@@ -5574,6 +5599,9 @@
             if (mHintScreenTimeout != 0) {
                 wearableBundle.putInt(KEY_HINT_SCREEN_TIMEOUT, mHintScreenTimeout);
             }
+            if (mDismissalId != null) {
+                wearableBundle.putString(KEY_DISMISSAL_ID, mDismissalId);
+            }
 
             builder.getExtras().putBundle(EXTRA_WEARABLE_EXTENSIONS, wearableBundle);
             return builder;
@@ -5594,6 +5622,7 @@
             that.mCustomContentHeight = this.mCustomContentHeight;
             that.mGravity = this.mGravity;
             that.mHintScreenTimeout = this.mHintScreenTimeout;
+            that.mDismissalId = this.mDismissalId;
             return that;
         }
 
@@ -6081,6 +6110,29 @@
             return (mFlags & FLAG_HINT_CONTENT_INTENT_LAUNCHES_ACTIVITY) != 0;
         }
 
+        /**
+         * When you post a notification, if you set the dismissal id field, then when that
+         * notification is canceled, notifications on other wearables and the paired Android phone
+         * having that same dismissal id will also be canceled.  Note that this only works if you
+         * have notification bridge mode set to NO_BRIDGING in your Wear app manifest.  See
+         * <a href="{@docRoot}wear/notifications/index.html">Adding Wearable Features to
+         * Notifications</a> for more information on how to use the bridge mode feature.
+         * @param dismissalId the dismissal id of the notification.
+         * @return this object for method chaining
+         */
+        public WearableExtender setDismissalId(String dismissalId) {
+            mDismissalId = dismissalId;
+            return this;
+        }
+
+        /**
+         * Returns the dismissal id of the notification.
+         * @return the dismissal id of the notification or null if it has not been set.
+         */
+        public String getDismissalId() {
+            return mDismissalId;
+        }
+
         private void setFlag(int mask, boolean value) {
             if (value) {
                 mFlags |= mask;
diff --git a/core/java/android/app/job/JobInfo.java b/core/java/android/app/job/JobInfo.java
index ecfc527..c475575 100644
--- a/core/java/android/app/job/JobInfo.java
+++ b/core/java/android/app/job/JobInfo.java
@@ -16,6 +16,8 @@
 
 package android.app.job;
 
+import static android.util.TimeUtils.formatDuration;
+
 import android.annotation.NonNull;
 import android.annotation.Nullable;
 import android.content.ComponentName;
@@ -24,7 +26,6 @@
 import android.os.Parcelable;
 import android.os.PersistableBundle;
 import android.util.Log;
-import static android.util.TimeUtils.formatDuration;
 
 import java.util.ArrayList;
 
@@ -154,6 +155,20 @@
      */
     public static final int PRIORITY_ADJ_ALWAYS_RUNNING = -80;
 
+    /**
+     * Indicates that the implementation of this job will be using
+     * {@link JobService#startForeground(int, android.app.Notification)} to run
+     * in the foreground.
+     * <p>
+     * When set, the internal scheduling of this job will ignore any background
+     * network restrictions for the requesting app. Note that this flag alone
+     * doesn't actually place your {@link JobService} in the foreground; you
+     * still need to post the notification yourself.
+     *
+     * @hide
+     */
+    public static final int FLAG_WILL_BE_FOREGROUND = 1 << 0;
+
     private final int jobId;
     private final PersistableBundle extras;
     private final ComponentName service;
@@ -174,6 +189,7 @@
     private final long initialBackoffMillis;
     private final int backoffPolicy;
     private final int priority;
+    private final int flags;
 
     /**
      * Unique job id associated with this class. This is assigned to your job by the scheduler.
@@ -201,6 +217,11 @@
         return priority;
     }
 
+    /** @hide */
+    public int getFlags() {
+        return flags;
+    }
+
     /**
      * Whether this job needs the device to be plugged in.
      */
@@ -356,6 +377,7 @@
         hasEarlyConstraint = in.readInt() == 1;
         hasLateConstraint = in.readInt() == 1;
         priority = in.readInt();
+        flags = in.readInt();
     }
 
     private JobInfo(JobInfo.Builder b) {
@@ -381,6 +403,7 @@
         hasEarlyConstraint = b.mHasEarlyConstraint;
         hasLateConstraint = b.mHasLateConstraint;
         priority = b.mPriority;
+        flags = b.mFlags;
     }
 
     @Override
@@ -410,6 +433,7 @@
         out.writeInt(hasEarlyConstraint ? 1 : 0);
         out.writeInt(hasLateConstraint ? 1 : 0);
         out.writeInt(priority);
+        out.writeInt(this.flags);
     }
 
     public static final Creator<JobInfo> CREATOR = new Creator<JobInfo>() {
@@ -504,6 +528,7 @@
         private PersistableBundle mExtras = PersistableBundle.EMPTY;
         private ComponentName mJobService;
         private int mPriority = PRIORITY_DEFAULT;
+        private int mFlags;
         // Requirements.
         private boolean mRequiresCharging;
         private boolean mRequiresDeviceIdle;
@@ -539,14 +564,18 @@
             mJobId = jobId;
         }
 
-        /**
-         * @hide
-         */
+        /** @hide */
         public Builder setPriority(int priority) {
             mPriority = priority;
             return this;
         }
 
+        /** @hide */
+        public Builder setFlags(int flags) {
+            mFlags = flags;
+            return this;
+        }
+
         /**
          * Set optional extras. This is persisted, so we only allow primitive types.
          * @param extras Bundle containing extras you want the scheduler to hold on to for you.
diff --git a/core/java/android/app/usage/NetworkStats.java b/core/java/android/app/usage/NetworkStats.java
index 6d5c81b..9963eab 100644
--- a/core/java/android/app/usage/NetworkStats.java
+++ b/core/java/android/app/usage/NetworkStats.java
@@ -64,6 +64,11 @@
     private int mUidOrUidIndex;
 
     /**
+     * Tag id in case if was specified in the query.
+     */
+    private int mTag = android.net.NetworkStats.TAG_NONE;
+
+    /**
      * The session while the query requires it, null if all the stats have been collected or close()
      * has been called.
      */
@@ -434,7 +439,7 @@
             mHistory = mSession.getHistoryIntervalForUid(mTemplate, uid,
                     android.net.NetworkStats.SET_ALL, tag,
                     NetworkStatsHistory.FIELD_ALL, mStartTimeStamp, mEndTimeStamp);
-            setSingleUid(uid);
+            setSingleUidTag(uid, tag);
         } catch (RemoteException e) {
             Log.w(TAG, e);
             // Leaving mHistory null
@@ -538,6 +543,7 @@
                 mRecycledHistoryEntry = mHistory.getValues(mEnumerationIndex++,
                         mRecycledHistoryEntry);
                 bucketOut.mUid = Bucket.convertUid(getUid());
+                bucketOut.mTag = Bucket.convertTag(mTag);
                 bucketOut.mState = Bucket.STATE_ALL;
                 bucketOut.mRoaming = Bucket.ROAMING_ALL;
                 bucketOut.mBeginTimeStamp = mRecycledHistoryEntry.bucketStart;
@@ -579,8 +585,9 @@
         return mUidOrUidIndex;
     }
 
-    private void setSingleUid(int uid) {
+    private void setSingleUidTag(int uid, int tag) {
         mUidOrUidIndex = uid;
+        mTag = tag;
     }
 
     private void stepUid() {
diff --git a/core/java/android/content/ContentResolver.java b/core/java/android/content/ContentResolver.java
index 4db4567..aeda7a2 100644
--- a/core/java/android/content/ContentResolver.java
+++ b/core/java/android/content/ContentResolver.java
@@ -1748,7 +1748,7 @@
      *
      * @hide
      */
-    public void notifyChange(Uri uri, ContentObserver observer, boolean syncToNetwork,
+    public void notifyChange(@NonNull Uri uri, ContentObserver observer, boolean syncToNetwork,
             @UserIdInt int userHandle) {
         try {
             getContentService().notifyChange(
@@ -1765,7 +1765,7 @@
      *
      * @hide
      */
-    public void notifyChange(Uri uri, ContentObserver observer, @NotifyFlags int flags,
+    public void notifyChange(@NonNull Uri uri, ContentObserver observer, @NotifyFlags int flags,
             @UserIdInt int userHandle) {
         try {
             getContentService().notifyChange(
diff --git a/core/java/android/content/Loader.java b/core/java/android/content/Loader.java
index e9d82af..c5e0ea7 100644
--- a/core/java/android/content/Loader.java
+++ b/core/java/android/content/Loader.java
@@ -484,7 +484,7 @@
      */
     public void rollbackContentChanged() {
         if (mProcessingChange) {
-            mContentChanged = true;
+            onContentChanged();
         }
     }
 
diff --git a/core/java/android/content/pm/ActivityInfo.java b/core/java/android/content/pm/ActivityInfo.java
index 0f4cbbb..bdea1e0 100644
--- a/core/java/android/content/pm/ActivityInfo.java
+++ b/core/java/android/content/pm/ActivityInfo.java
@@ -188,7 +188,14 @@
      * See {@link android.R.attr#resizeableActivity}.
      * @hide
      */
-    public int resizeMode;
+    public int resizeMode = RESIZE_MODE_RESIZEABLE;
+
+    /**
+     * Name of the VrListenerService component to run for this activity.
+     * @see android.R.attr#enableVrMode
+     * @hide
+     */
+    public String requestedVrComponent;
 
     /**
      * Bit in {@link #flags} indicating whether this activity is able to
@@ -794,6 +801,7 @@
         lockTaskLaunchMode = orig.lockTaskLaunchMode;
         windowLayout = orig.windowLayout;
         resizeMode = orig.resizeMode;
+        requestedVrComponent = orig.requestedVrComponent;
     }
 
     /**
@@ -896,6 +904,9 @@
                     + windowLayout.heightFraction + ", " + windowLayout.gravity);
         }
         pw.println(prefix + "resizeMode=" + resizeModeToString(resizeMode));
+        if (requestedVrComponent != null) {
+            pw.println(prefix + "requestedVrComponent=" + requestedVrComponent);
+        }
         super.dumpBack(pw, prefix, flags);
     }
 
@@ -939,6 +950,7 @@
             dest.writeInt(0);
         }
         dest.writeInt(resizeMode);
+        dest.writeString(requestedVrComponent);
     }
 
     public static final Parcelable.Creator<ActivityInfo> CREATOR
@@ -972,6 +984,7 @@
             windowLayout = new WindowLayout(source);
         }
         resizeMode = source.readInt();
+        requestedVrComponent = source.readString();
     }
 
     /**
diff --git a/core/java/android/content/pm/IPackageManager.aidl b/core/java/android/content/pm/IPackageManager.aidl
index 0c79312..03f83d6 100644
--- a/core/java/android/content/pm/IPackageManager.aidl
+++ b/core/java/android/content/pm/IPackageManager.aidl
@@ -222,7 +222,7 @@
             in String installerPackageName,
             int userId);
 
-    void finishPackageInstall(int token);
+    void finishPackageInstall(int token, boolean didLaunch);
 
     void setInstallerPackageName(in String targetPackage, in String installerPackageName);
 
diff --git a/core/java/android/content/pm/PackageManager.java b/core/java/android/content/pm/PackageManager.java
index b04cbc5..a96da09 100644
--- a/core/java/android/content/pm/PackageManager.java
+++ b/core/java/android/content/pm/PackageManager.java
@@ -684,6 +684,14 @@
     public static final int INSTALL_DONT_KILL_APP = 0x00001000;
 
     /**
+     * Flag parameter for {@link #installPackage} to indicate that this package is an
+     * upgrade to a package that refers to the SDK via release letter.
+     *
+     * @hide
+     */
+    public static final int INSTALL_FORCE_SDK = 0x00002000;
+
+    /**
      * Flag parameter for
      * {@link #setComponentEnabledSetting(android.content.ComponentName, int, int)} to indicate
      * that you don't want to kill the app containing the component.  Be careful when you set this
diff --git a/core/java/android/content/pm/PackageParser.java b/core/java/android/content/pm/PackageParser.java
index f42a340..6534f5b 100644
--- a/core/java/android/content/pm/PackageParser.java
+++ b/core/java/android/content/pm/PackageParser.java
@@ -159,6 +159,7 @@
     private static final String TAG_SUPPORTS_INPUT = "supports-input";
     private static final String TAG_EAT_COMMENT = "eat-comment";
     private static final String TAG_PACKAGE = "package";
+    private static final String TAG_RESTRICT_UPDATE = "restrict-update";
 
     // These are the tags supported by child packages
     private static final Set<String> CHILD_PACKAGE_TAGS = new ArraySet<>();
@@ -652,6 +653,7 @@
     public final static int PARSE_TRUSTED_OVERLAY = 1<<9;
     public final static int PARSE_ENFORCE_CODE = 1<<10;
     public final static int PARSE_IS_EPHEMERAL = 1<<11;
+    public final static int PARSE_FORCE_SDK = 1<<12;
 
     private static final Comparator<String> sSplitNameComparator = new SplitNameComparator();
 
@@ -1638,9 +1640,9 @@
     /**
      * This is the common parsing routing for handling parent and child
      * packages in a base APK. The difference between parent and child
-     * parsing is that some targs are not supported by child packages as
+     * parsing is that some tags are not supported by child packages as
      * well as some manifest attributes are ignored. The implementation
-     * assumes the calling code already handled the manifest tag if needed
+     * assumes the calling code has already handled the manifest tag if needed
      * (this applies to the parent only).
      *
      * @param pkg The package which to populate
@@ -2088,6 +2090,29 @@
                     // If parsing a child failed the error is already set
                     return null;
                 }
+
+            } else if (tagName.equals(TAG_RESTRICT_UPDATE)) {
+                if ((flags & PARSE_IS_SYSTEM_DIR) != 0) {
+                    sa = res.obtainAttributes(parser,
+                            com.android.internal.R.styleable.AndroidManifestRestrictUpdate);
+                    final String hash = sa.getNonConfigurationString(
+                            com.android.internal.R.styleable.AndroidManifestRestrictUpdate_hash, 0);
+                    sa.recycle();
+
+                    pkg.restrictUpdateHash = null;
+                    if (hash != null) {
+                        final int hashLength = hash.length();
+                        final byte[] hashBytes = new byte[hashLength / 2];
+                        for (int i = 0; i < hashLength; i += 2){
+                            hashBytes[i/2] = (byte) ((Character.digit(hash.charAt(i), 16) << 4)
+                                    + Character.digit(hash.charAt(i + 1), 16));
+                        }
+                        pkg.restrictUpdateHash = hashBytes;
+                    }
+                }
+
+                XmlUtils.skipCurrentTag(parser);
+
             } else if (RIGID_PARSER) {
                 outError[0] = "Bad element under <manifest>: "
                     + parser.getName();
@@ -3532,6 +3557,9 @@
             a.info.encryptionAware = a.info.directBootAware = sa.getBoolean(
                     R.styleable.AndroidManifestActivity_directBootAware,
                     false);
+
+            a.info.requestedVrComponent =
+                sa.getString(R.styleable.AndroidManifestActivity_enableVrMode);
         } else {
             a.info.launchMode = ActivityInfo.LAUNCH_MULTIPLE;
             a.info.configChanges = 0;
@@ -4818,6 +4846,8 @@
          */
         public boolean use32bitAbi;
 
+        public byte[] restrictUpdateHash;
+
         public Package(String packageName) {
             this.packageName = packageName;
             applicationInfo.packageName = packageName;
@@ -5096,6 +5126,19 @@
             return latestUse;
         }
 
+        public long getLatestForegroundPackageUseTimeInMills() {
+            int[] foregroundReasons = {
+                PackageManager.NOTIFY_PACKAGE_USE_ACTIVITY,
+                PackageManager.NOTIFY_PACKAGE_USE_FOREGROUND_SERVICE
+            };
+
+            long latestUse = 0L;
+            for (int reason : foregroundReasons) {
+                latestUse = Math.max(latestUse, mLastPackageUsageTimeInMills[reason]);
+            }
+            return latestUse;
+        }
+
         public String toString() {
             return "Package{"
                 + Integer.toHexString(System.identityHashCode(this))
diff --git a/core/java/android/content/res/Configuration.java b/core/java/android/content/res/Configuration.java
index 9b1d462..177374c 100644
--- a/core/java/android/content/res/Configuration.java
+++ b/core/java/android/content/res/Configuration.java
@@ -87,7 +87,8 @@
      * resource qualifier.
      *
      * @deprecated Do not set or read this directly. Use {@link #getLocales()} and
-     * {@link #setLocales(LocaleList)}.
+     * {@link #setLocales(LocaleList)}. If only the primary locale is needed,
+     * <code>getLocales().get(0)</code> is now the preferred accessor.
      */
     @Deprecated public Locale locale;
 
diff --git a/core/java/android/hardware/Sensor.java b/core/java/android/hardware/Sensor.java
index cc82eb6..0f07419 100644
--- a/core/java/android/hardware/Sensor.java
+++ b/core/java/android/hardware/Sensor.java
@@ -912,9 +912,9 @@
      * its type and name.
      */
     public int getId() {
-        if (mUuid == ALL_0_UUID) {
+        if (mUuid.equals(ALL_0_UUID)) {
             return 0;
-        } else if (mUuid == ALL_F_UUID) {
+        } else if (mUuid.equals(ALL_F_UUID)) {
             return -1;
         } else {
             int id = Math.abs(mUuid.hashCode()) + 1;
@@ -1139,4 +1139,26 @@
                 return false;
         }
     }
+
+    /**
+     * Sets the UUID associated with the sensor.
+     *
+     * NOTE: to be used only by native bindings in SensorManager.
+     *
+     * @see #getUuid
+     * @see UUID
+     */
+    private void setUuid(long msb, long lsb) {
+        // reuse static object if possible
+        if (msb == lsb) {
+            if (msb == 0L) {
+                mUuid = ALL_0_UUID;
+                return;
+            } else if (msb == ~0L) {
+                mUuid = ALL_F_UUID;
+                return;
+            }
+        }
+        mUuid = new UUID(msb, lsb);
+    }
 }
diff --git a/core/java/android/hardware/camera2/CaptureResult.java b/core/java/android/hardware/camera2/CaptureResult.java
index 8c73e6a..f9049db 100644
--- a/core/java/android/hardware/camera2/CaptureResult.java
+++ b/core/java/android/hardware/camera2/CaptureResult.java
@@ -3357,7 +3357,7 @@
      * color channel listed in the CFA.</p>
      * <p>This key will be available if {@link CameraCharacteristics#SENSOR_OPTICAL_BLACK_REGIONS android.sensor.opticalBlackRegions} is
      * available or the camera device advertises this key via
-     * {@link android.hardware.camera2.CameraCharacteristics#getAvailableCaptureRequestKeys }.</p>
+     * {@link android.hardware.camera2.CameraCharacteristics#getAvailableCaptureResultKeys }.</p>
      * <p><b>Range of valid values:</b><br>
      * &gt;= 0 for each.</p>
      * <p><b>Optional</b> - This value may be {@code null} on some devices.</p>
diff --git a/core/java/android/hardware/location/ContextHubInfo.java b/core/java/android/hardware/location/ContextHubInfo.java
index 194b9ee..aaf6c57 100644
--- a/core/java/android/hardware/location/ContextHubInfo.java
+++ b/core/java/android/hardware/location/ContextHubInfo.java
@@ -357,6 +357,7 @@
       retVal += "\n\tPeakMips : " + mPeakMips;
       retVal += ", StoppedPowerDraw : " + mStoppedPowerDrawMw + " mW";
       retVal += ", PeakPowerDraw : " + mPeakPowerDrawMw + " mW";
+      retVal += ", MaxPacketLength : " + mMaxPacketLengthBytes + " Bytes";
       retVal += "\n\tSupported sensors : " + Arrays.toString(mSupportedSensors);
       retVal += "\n\tMemory Regions : " + Arrays.toString(mMemoryRegions);
 
@@ -375,6 +376,7 @@
         mStoppedPowerDrawMw = in.readFloat();
         mSleepPowerDrawMw = in.readFloat();
         mPeakPowerDrawMw = in.readFloat();
+        mMaxPacketLengthBytes = in.readInt();
 
         int numSupportedSensors = in.readInt();
         mSupportedSensors = new int[numSupportedSensors];
@@ -398,6 +400,7 @@
         out.writeFloat(mStoppedPowerDrawMw);
         out.writeFloat(mSleepPowerDrawMw);
         out.writeFloat(mPeakPowerDrawMw);
+        out.writeInt(mMaxPacketLengthBytes);
 
         out.writeInt(mSupportedSensors.length);
         out.writeIntArray(mSupportedSensors);
@@ -414,4 +417,4 @@
             return new ContextHubInfo[size];
         }
     };
-}
\ No newline at end of file
+}
diff --git a/core/java/android/net/ConnectivityManager.java b/core/java/android/net/ConnectivityManager.java
index 9070ad9..933dddf 100644
--- a/core/java/android/net/ConnectivityManager.java
+++ b/core/java/android/net/ConnectivityManager.java
@@ -81,13 +81,6 @@
 public class ConnectivityManager {
     private static final String TAG = "ConnectivityManager";
 
-    private static final SparseArray<String> sMagicDecoderRing = MessageUtils.findMessageNames(
-            new Class[]{ConnectivityManager.class}, new String[]{"CALLBACK_"});
-
-    private static final String whatToString(int what) {
-        return sMagicDecoderRing.get(what, Integer.toString(what));
-    }
-
     /**
      * A change in network connectivity has occurred. A default connection has either
      * been established or lost. The NetworkInfo for the affected network is
@@ -781,8 +774,13 @@
      * @hide
      */
     public Network getActiveNetworkForUid(int uid) {
+        return getActiveNetworkForUid(uid, false);
+    }
+
+    /** {@hide} */
+    public Network getActiveNetworkForUid(int uid, boolean ignoreBlocked) {
         try {
-            return mService.getActiveNetworkForUid(uid);
+            return mService.getActiveNetworkForUid(uid, ignoreBlocked);
         } catch (RemoteException e) {
             throw e.rethrowFromSystemServer();
         }
@@ -843,8 +841,13 @@
      * {@hide}
      */
     public NetworkInfo getActiveNetworkInfoForUid(int uid) {
+        return getActiveNetworkInfoForUid(uid, false);
+    }
+
+    /** {@hide} */
+    public NetworkInfo getActiveNetworkInfoForUid(int uid, boolean ignoreBlocked) {
         try {
-            return mService.getActiveNetworkInfoForUid(uid);
+            return mService.getActiveNetworkInfoForUid(uid, ignoreBlocked);
         } catch (RemoteException e) {
             throw e.rethrowFromSystemServer();
         }
@@ -887,8 +890,13 @@
      *        is not valid.
      */
     public NetworkInfo getNetworkInfo(Network network) {
+        return getNetworkInfoForUid(network, Process.myUid(), false);
+    }
+
+    /** {@hide} */
+    public NetworkInfo getNetworkInfoForUid(Network network, int uid, boolean ignoreBlocked) {
         try {
-            return mService.getNetworkInfoForNetwork(network);
+            return mService.getNetworkInfoForUid(network, uid, ignoreBlocked);
         } catch (RemoteException e) {
             throw e.rethrowFromSystemServer();
         }
@@ -3360,4 +3368,32 @@
             throw e.rethrowFromSystemServer();
         }
     }
+
+    /**
+     * A holder class for debug info (mapping CALLBACK values to field names). This is stored
+     * in a holder for two reasons:
+     * 1) The reflection necessary to establish the map can't be run at compile-time. Thus, this
+     *    code will make the enclosing class not compile-time initializeable, deferring its
+     *    initialization to zygote startup. This leads to dirty (but shared) memory.
+     *    As this is debug info, use a holder that isn't initialized by default. This way the map
+     *    will be created on demand, while ConnectivityManager can be compile-time initialized.
+     * 2) Static initialization is still preferred for its strong thread safety guarantees without
+     *    requiring a lock.
+     */
+    private static class NoPreloadHolder {
+        public static final SparseArray<String> sMagicDecoderRing = MessageUtils.findMessageNames(
+                new Class[]{ConnectivityManager.class}, new String[]{"CALLBACK_"});
+    }
+
+    static {
+        // When debug is enabled, aggressively initialize the holder by touching the field (which
+        // will guarantee static initialization).
+        if (CallbackHandler.DBG) {
+            Object dummy = NoPreloadHolder.sMagicDecoderRing;
+        }
+    }
+
+    private static final String whatToString(int what) {
+        return NoPreloadHolder.sMagicDecoderRing.get(what, Integer.toString(what));
+    }
 }
diff --git a/core/java/android/net/ConnectivityMetricsEvent.java b/core/java/android/net/ConnectivityMetricsEvent.java
index 5153ba9..eaaef7f 100644
--- a/core/java/android/net/ConnectivityMetricsEvent.java
+++ b/core/java/android/net/ConnectivityMetricsEvent.java
@@ -77,8 +77,8 @@
     }
 
     public String toString() {
-        return String.format("ConnectivityMetricsEvent(%d, %d, %d)", timestamp,
-                componentTag, eventTag);
+        return String.format("ConnectivityMetricsEvent(%tT.%tL, %d, %d): %s",
+                timestamp, timestamp, componentTag, eventTag, data);
     }
 
     /** {@hide} */
diff --git a/core/java/android/net/IConnectivityManager.aidl b/core/java/android/net/IConnectivityManager.aidl
index c897c45..aec6b3e 100644
--- a/core/java/android/net/IConnectivityManager.aidl
+++ b/core/java/android/net/IConnectivityManager.aidl
@@ -44,11 +44,11 @@
 interface IConnectivityManager
 {
     Network getActiveNetwork();
-    Network getActiveNetworkForUid(int uid);
+    Network getActiveNetworkForUid(int uid, boolean ignoreBlocked);
     NetworkInfo getActiveNetworkInfo();
-    NetworkInfo getActiveNetworkInfoForUid(int uid);
+    NetworkInfo getActiveNetworkInfoForUid(int uid, boolean ignoreBlocked);
     NetworkInfo getNetworkInfo(int networkType);
-    NetworkInfo getNetworkInfoForNetwork(in Network network);
+    NetworkInfo getNetworkInfoForUid(in Network network, int uid, boolean ignoreBlocked);
     NetworkInfo[] getAllNetworkInfo();
     Network getNetworkForType(int networkType);
     Network[] getAllNetworks();
diff --git a/core/java/android/net/INetworkPolicyManager.aidl b/core/java/android/net/INetworkPolicyManager.aidl
index a57fac3..224ff5b 100644
--- a/core/java/android/net/INetworkPolicyManager.aidl
+++ b/core/java/android/net/INetworkPolicyManager.aidl
@@ -38,6 +38,9 @@
 
     boolean isUidForeground(int uid);
 
+    /** Higher priority listener before general event dispatch */
+    void setConnectivityListener(INetworkPolicyListener listener);
+
     void registerListener(INetworkPolicyListener listener);
     void unregisterListener(INetworkPolicyListener listener);
 
@@ -52,6 +55,9 @@
     void setRestrictBackground(boolean restrictBackground);
     boolean getRestrictBackground();
 
+    /** Callback used to change internal state on tethering */
+    void onTetheringChanged(String iface, boolean tethering);
+
     /** Control which applications can be exempt from background data restrictions */
     void addRestrictBackgroundWhitelistedUid(int uid);
     void removeRestrictBackgroundWhitelistedUid(int uid);
diff --git a/core/java/android/net/NetworkCapabilities.java b/core/java/android/net/NetworkCapabilities.java
index 64186145..6243f46 100644
--- a/core/java/android/net/NetworkCapabilities.java
+++ b/core/java/android/net/NetworkCapabilities.java
@@ -809,17 +809,7 @@
     @Override
     public String toString() {
         int[] types = getTransportTypes();
-        String transports = (types.length > 0 ? " Transports: " : "");
-        for (int i = 0; i < types.length;) {
-            switch (types[i]) {
-                case TRANSPORT_CELLULAR:    transports += "CELLULAR"; break;
-                case TRANSPORT_WIFI:        transports += "WIFI"; break;
-                case TRANSPORT_BLUETOOTH:   transports += "BLUETOOTH"; break;
-                case TRANSPORT_ETHERNET:    transports += "ETHERNET"; break;
-                case TRANSPORT_VPN:         transports += "VPN"; break;
-            }
-            if (++i < types.length) transports += "|";
-        }
+        String transports = (types.length > 0) ? " Transports: " + transportNamesOf(types) : "";
 
         types = getCapabilities();
         String capabilities = (types.length > 0 ? " Capabilities: " : "");
@@ -859,4 +849,22 @@
 
         return "[" + transports + capabilities + upBand + dnBand + specifier + signalStrength + "]";
     }
+
+    /**
+     * @hide
+     */
+    public static String transportNamesOf(int[] types) {
+        String transports = "";
+        for (int i = 0; i < types.length;) {
+            switch (types[i]) {
+                case TRANSPORT_CELLULAR:    transports += "CELLULAR"; break;
+                case TRANSPORT_WIFI:        transports += "WIFI"; break;
+                case TRANSPORT_BLUETOOTH:   transports += "BLUETOOTH"; break;
+                case TRANSPORT_ETHERNET:    transports += "ETHERNET"; break;
+                case TRANSPORT_VPN:         transports += "VPN"; break;
+            }
+            if (++i < types.length) transports += "|";
+        }
+        return transports;
+    }
 }
diff --git a/core/java/android/net/metrics/DefaultNetworkEvent.java b/core/java/android/net/metrics/DefaultNetworkEvent.java
index f3c357b..6138b83 100644
--- a/core/java/android/net/metrics/DefaultNetworkEvent.java
+++ b/core/java/android/net/metrics/DefaultNetworkEvent.java
@@ -17,6 +17,7 @@
 package android.net.metrics;
 
 import android.annotation.SystemApi;
+import android.net.NetworkCapabilities;
 import android.os.Parcel;
 import android.os.Parcelable;
 
@@ -65,6 +66,12 @@
         return 0;
     }
 
+    @Override
+    public String toString() {
+      return String.format("DefaultNetworkEvent(%d -> %d, %s, IPv4: %b, IPv6: %b)", prevNetId,
+              netId, NetworkCapabilities.transportNamesOf(transportTypes), prevIPv4, prevIPv6);
+    }
+
     public static final Parcelable.Creator<DefaultNetworkEvent> CREATOR
         = new Parcelable.Creator<DefaultNetworkEvent>() {
         public DefaultNetworkEvent createFromParcel(Parcel in) {
@@ -78,8 +85,6 @@
 
     public static void logEvent(
             int netId, int[] transports, int prevNetId, boolean hadIPv4, boolean hadIPv6) {
-        final DefaultNetworkEvent ev =
-                new DefaultNetworkEvent(netId, transports, prevNetId, hadIPv4, hadIPv6);
-        logEvent(IPCE_CONSRV_DEFAULT_NET_CHANGE, ev);
+        logEvent(new DefaultNetworkEvent(netId, transports, prevNetId, hadIPv4, hadIPv6));
     }
 };
diff --git a/core/java/android/net/metrics/DhcpClientEvent.java b/core/java/android/net/metrics/DhcpClientEvent.java
index 6e295a9..ec560bf 100644
--- a/core/java/android/net/metrics/DhcpClientEvent.java
+++ b/core/java/android/net/metrics/DhcpClientEvent.java
@@ -47,6 +47,11 @@
         return 0;
     }
 
+    @Override
+    public String toString() {
+        return String.format("DhcpClientEvent(%s, %s)", ifName, msg);
+    }
+
     public static final Parcelable.Creator<DhcpClientEvent> CREATOR
         = new Parcelable.Creator<DhcpClientEvent>() {
         public DhcpClientEvent createFromParcel(Parcel in) {
@@ -59,6 +64,6 @@
     };
 
     public static void logStateEvent(String ifName, String state) {
-        logEvent(IPCE_DHCP_STATE_CHANGE, new DhcpClientEvent(ifName, state));
+        logEvent(new DhcpClientEvent(ifName, state));
     }
 };
diff --git a/core/java/android/net/metrics/DhcpErrorEvent.java b/core/java/android/net/metrics/DhcpErrorEvent.java
index 46fdd18..84795b8 100644
--- a/core/java/android/net/metrics/DhcpErrorEvent.java
+++ b/core/java/android/net/metrics/DhcpErrorEvent.java
@@ -19,6 +19,9 @@
 import android.annotation.SystemApi;
 import android.os.Parcel;
 import android.os.Parcelable;
+import android.util.SparseArray;
+
+import com.android.internal.util.MessageUtils;
 
 /**
  * {@hide} Event class used to record error events when parsing DHCP response packets.
@@ -89,11 +92,11 @@
     };
 
     public static void logParseError(String ifName, int errorCode) {
-        logEvent(IPCE_DHCP_PARSE_ERROR, new DhcpErrorEvent(ifName, errorCode));
+        logEvent(new DhcpErrorEvent(ifName, errorCode));
     }
 
     public static void logReceiveError(String ifName) {
-        logEvent(IPCE_DHCP_RECV_ERROR, new DhcpErrorEvent(ifName, RECEIVE_ERROR));
+        logEvent(new DhcpErrorEvent(ifName, RECEIVE_ERROR));
     }
 
     public static int errorCodeWithOption(int errorCode, int option) {
@@ -103,4 +106,15 @@
     private static int makeErrorCode(int type, int subtype) {
         return (type << 24) | ((0xFF & subtype) << 16);
     }
+
+    @Override
+    public String toString() {
+        return String.format("DhcpErrorEvent(%s, %s)", ifName, Decoder.constants.get(errorCode));
+    }
+
+    final static class Decoder {
+        static final SparseArray<String> constants =
+                MessageUtils.findMessageNames(new Class[]{DhcpErrorEvent.class},
+                new String[]{"L2_", "L3_", "L4_", "BOOTP_", "DHCP_", "BUFFER_", "RECEIVE_"});
+    }
 }
diff --git a/core/java/android/net/metrics/DnsEvent.java b/core/java/android/net/metrics/DnsEvent.java
index bf6e95c..b94dda0 100644
--- a/core/java/android/net/metrics/DnsEvent.java
+++ b/core/java/android/net/metrics/DnsEvent.java
@@ -63,6 +63,11 @@
         return 0;
     }
 
+    @Override
+    public String toString() {
+        return String.format("DnsEvent(%d, %d events)", netId, eventTypes.length);
+    }
+
     public static final Parcelable.Creator<DnsEvent> CREATOR = new Parcelable.Creator<DnsEvent>() {
         @Override
         public DnsEvent createFromParcel(Parcel in) {
@@ -77,6 +82,6 @@
 
     public static void logEvent(
             int netId, byte[] eventTypes, byte[] returnCodes, int[] latenciesMs) {
-        logEvent(IPCE_DNS_LOOKUPS, new DnsEvent(netId, eventTypes, returnCodes, latenciesMs));
+        logEvent(new DnsEvent(netId, eventTypes, returnCodes, latenciesMs));
     }
 }
diff --git a/core/java/android/net/metrics/IpConnectivityEvent.java b/core/java/android/net/metrics/IpConnectivityEvent.java
index 0b5e354..95576c2 100644
--- a/core/java/android/net/metrics/IpConnectivityEvent.java
+++ b/core/java/android/net/metrics/IpConnectivityEvent.java
@@ -16,7 +16,6 @@
 
 package android.net.metrics;
 
-import android.annotation.SystemApi;
 import android.net.ConnectivityMetricsLogger;
 import android.os.Parcel;
 import android.os.Parcelable;
@@ -24,50 +23,13 @@
 /**
  * {@hide}
  */
-@SystemApi
 public abstract class IpConnectivityEvent {
-    // IPRM   = IpReachabilityMonitor
-    // DHCP   = DhcpClient
-    // NETMON = NetworkMonitorEvent
-    // CONSRV = ConnectivityServiceEvent
-    // IPMGR  = IpManager
-    // DNS    = DnsEvent
-    public static final int IPCE_IPRM_BASE                 = 0 * 1024;
-    public static final int IPCE_DHCP_BASE                 = 1 * 1024;
-    public static final int IPCE_NETMON_BASE               = 2 * 1024;
-    public static final int IPCE_CONSRV_BASE               = 3 * 1024;
-    public static final int IPCE_IPMGR_BASE                = 4 * 1024;
-    public static final int IPCE_DNS_BASE                  = 5 * 1024;
+    private static final int COMPONENT_TAG = ConnectivityMetricsLogger.COMPONENT_TAG_CONNECTIVITY;
 
-    public static final int IPCE_IPRM_PROBE_STARTED        = IPCE_IPRM_BASE + 0;
-    public static final int IPCE_IPRM_PROBE_FAILURE        = IPCE_IPRM_BASE + 1;
-    public static final int IPCE_IPRM_NUD_FAILED           = IPCE_IPRM_BASE + 2;
-    public static final int IPCE_IPRM_PROVISIONING_LOST    = IPCE_IPRM_BASE + 3;
+    private static final ConnectivityMetricsLogger sMetricsLogger = new ConnectivityMetricsLogger();
 
-    public static final int IPCE_DHCP_RECV_ERROR           = IPCE_DHCP_BASE + 0;
-    public static final int IPCE_DHCP_PARSE_ERROR          = IPCE_DHCP_BASE + 1;
-    public static final int IPCE_DHCP_STATE_CHANGE         = IPCE_DHCP_BASE + 2;
-
-    public static final int IPCE_NETMON_STATE_CHANGE       = IPCE_NETMON_BASE + 0;
-    public static final int IPCE_NETMON_CHECK_RESULT       = IPCE_NETMON_BASE + 1;
-    public static final int IPCE_NETMON_VALIDATED          = IPCE_NETMON_BASE + 2;
-    public static final int IPCE_NETMON_PORTAL_PROBE       = IPCE_NETMON_BASE + 3;
-    public static final int IPCE_NETMON_CAPPORT_FOUND      = IPCE_NETMON_BASE + 4;
-
-    public static final int IPCE_CONSRV_DEFAULT_NET_CHANGE = IPCE_CONSRV_BASE + 0;
-
-    public static final int IPCE_IPMGR_PROVISIONING_OK     = IPCE_IPMGR_BASE + 0;
-    public static final int IPCE_IPMGR_PROVISIONING_FAIL   = IPCE_IPMGR_BASE + 1;
-    public static final int IPCE_IPMGR_COMPLETE_LIFECYCLE  = IPCE_IPMGR_BASE + 2;
-
-    public static final int IPCE_DNS_LOOKUPS               = IPCE_DNS_BASE + 0;
-
-    private static ConnectivityMetricsLogger mMetricsLogger = new ConnectivityMetricsLogger();
-
-    public static <T extends IpConnectivityEvent & Parcelable> void logEvent(int tag, T event) {
-        final long timestamp = System.currentTimeMillis();
-        final int componentTag = ConnectivityMetricsLogger.COMPONENT_TAG_CONNECTIVITY;
+    public static <T extends IpConnectivityEvent & Parcelable> void logEvent(T event) {
         // TODO: consider using different component for DNS event.
-        mMetricsLogger.logEvent(timestamp, componentTag, tag, event);
+        sMetricsLogger.logEvent(System.currentTimeMillis(), COMPONENT_TAG, 0, event);
     }
 };
diff --git a/core/java/android/net/metrics/IpManagerEvent.java b/core/java/android/net/metrics/IpManagerEvent.java
index 5bbcbf1..0940bd0 100644
--- a/core/java/android/net/metrics/IpManagerEvent.java
+++ b/core/java/android/net/metrics/IpManagerEvent.java
@@ -19,27 +19,39 @@
 import android.annotation.SystemApi;
 import android.os.Parcel;
 import android.os.Parcelable;
+import android.util.SparseArray;
+
+import com.android.internal.util.MessageUtils;
 
 /**
  * {@hide}
  */
 @SystemApi
 public final class IpManagerEvent extends IpConnectivityEvent implements Parcelable {
+
+    public static final int PROVISIONING_OK    = 1;
+    public static final int PROVISIONING_FAIL  = 2;
+    public static final int COMPLETE_LIFECYCLE = 3;
+
     public final String ifName;
+    public final int eventType;
     public final long durationMs;
 
-    private IpManagerEvent(String ifName, long duration) {
+    private IpManagerEvent(String ifName, int eventType, long duration) {
         this.ifName = ifName;
+        this.eventType = eventType;
         this.durationMs = duration;
     }
 
     private IpManagerEvent(Parcel in) {
         this.ifName = in.readString();
+        this.eventType = in.readInt();
         this.durationMs = in.readLong();
     }
 
     public void writeToParcel(Parcel out, int flags) {
         out.writeString(ifName);
+        out.writeInt(eventType);
         out.writeLong(durationMs);
     }
 
@@ -59,6 +71,17 @@
     };
 
     public static void logEvent(int eventType, String ifName, long durationMs) {
-        logEvent(eventType, new IpManagerEvent(ifName, durationMs));
+        logEvent(new IpManagerEvent(ifName, eventType, durationMs));
+    }
+
+    @Override
+    public String toString() {
+        return String.format("IpManagerEvent(%s, %s, %dms)",
+                ifName, Decoder.constants.get(eventType), durationMs);
+    }
+
+    final static class Decoder {
+        static final SparseArray<String> constants = MessageUtils.findMessageNames(
+                new Class[]{IpManagerEvent.class}, new String[]{"PROVISIONING_", "COMPLETE_"});
     }
 };
diff --git a/core/java/android/net/metrics/IpReachabilityEvent.java b/core/java/android/net/metrics/IpReachabilityEvent.java
index 73dcb94..d40389c 100644
--- a/core/java/android/net/metrics/IpReachabilityEvent.java
+++ b/core/java/android/net/metrics/IpReachabilityEvent.java
@@ -19,6 +19,9 @@
 import android.annotation.SystemApi;
 import android.os.Parcel;
 import android.os.Parcelable;
+import android.util.SparseArray;
+
+import com.android.internal.util.MessageUtils;
 
 /**
  * {@hide}
@@ -69,16 +72,26 @@
     };
 
     public static void logProbeEvent(String ifName, int nlErrorCode) {
-        final int tag = (nlErrorCode == 0) ? IPCE_IPRM_PROBE_STARTED : IPCE_IPRM_PROBE_FAILURE;
-        final int eventType = PROBE | (nlErrorCode & 0xFF);
-        logEvent(tag, new IpReachabilityEvent(ifName, eventType));
+        logEvent(new IpReachabilityEvent(ifName, PROBE | (nlErrorCode & 0xFF)));
     }
 
     public static void logNudFailed(String ifName) {
-        logEvent(IPCE_IPRM_NUD_FAILED, new IpReachabilityEvent(ifName, NUD_FAILED));
+        logEvent(new IpReachabilityEvent(ifName, NUD_FAILED));
     }
 
     public static void logProvisioningLost(String ifName) {
-        logEvent(IPCE_IPRM_PROVISIONING_LOST, new IpReachabilityEvent(ifName, PROVISIONING_LOST));
+        logEvent(new IpReachabilityEvent(ifName, PROVISIONING_LOST));
+    }
+
+    @Override
+    public String toString() {
+        return String.format("IpReachabilityEvent(%s, %s)", ifName,
+                Decoder.constants.get(eventType));
+    }
+
+    final static class Decoder {
+        static final SparseArray<String> constants =
+                MessageUtils.findMessageNames(new Class[]{IpReachabilityEvent.class},
+                new String[]{"PROBE", "PROVISIONING_", "NUD_"});
     }
 };
diff --git a/core/java/android/net/metrics/NetworkEvent.java b/core/java/android/net/metrics/NetworkEvent.java
index b15dcee..08c9c75 100644
--- a/core/java/android/net/metrics/NetworkEvent.java
+++ b/core/java/android/net/metrics/NetworkEvent.java
@@ -19,6 +19,9 @@
 import android.annotation.SystemApi;
 import android.os.Parcel;
 import android.os.Parcelable;
+import android.util.SparseArray;
+
+import com.android.internal.util.MessageUtils;
 
 /**
  * {@hide}
@@ -72,15 +75,25 @@
     };
 
     public static void logEvent(int netId, int eventType) {
-        logEvent(IPCE_NETMON_STATE_CHANGE, new NetworkEvent(netId, eventType, 0));
+        logEvent(new NetworkEvent(netId, eventType, 0));
     }
 
     public static void logValidated(int netId, long durationMs) {
-        logEvent(IPCE_NETMON_VALIDATED, new NetworkEvent(netId, NETWORK_VALIDATED, durationMs));
+        logEvent(new NetworkEvent(netId, NETWORK_VALIDATED, durationMs));
     }
 
     public static void logCaptivePortalFound(int netId, long durationMs) {
-        final NetworkEvent ev = new NetworkEvent(netId, NETWORK_CAPTIVE_PORTAL_FOUND, durationMs);
-        logEvent(IPCE_NETMON_CAPPORT_FOUND, ev);
+        logEvent(new NetworkEvent(netId, NETWORK_CAPTIVE_PORTAL_FOUND, durationMs));
+    }
+
+    @Override
+    public String toString() {
+        return String.format("NetworkEvent(%d, %s, %dms)",
+                netId, Decoder.constants.get(eventType), durationMs);
+    }
+
+    final static class Decoder {
+        static final SparseArray<String> constants = MessageUtils.findMessageNames(
+                new Class[]{NetworkEvent.class}, new String[]{"NETWORK_"});
     }
 };
diff --git a/core/java/android/net/metrics/ValidationProbeEvent.java b/core/java/android/net/metrics/ValidationProbeEvent.java
index 0a524c6..751c35f 100644
--- a/core/java/android/net/metrics/ValidationProbeEvent.java
+++ b/core/java/android/net/metrics/ValidationProbeEvent.java
@@ -19,6 +19,9 @@
 import android.annotation.SystemApi;
 import android.os.Parcel;
 import android.os.Parcelable;
+import android.util.SparseArray;
+
+import com.android.internal.util.MessageUtils;
 
 /**
  * {@hide}
@@ -26,8 +29,13 @@
 @SystemApi
 public final class ValidationProbeEvent extends IpConnectivityEvent implements Parcelable {
 
-    public static final int PROBE_HTTP  = 0;
-    public static final int PROBE_HTTPS = 1;
+    public static final int PROBE_DNS   = 0;
+    public static final int PROBE_HTTP  = 1;
+    public static final int PROBE_HTTPS = 2;
+    public static final int PROBE_PAC   = 3;
+
+    public static final int DNS_FAILURE = 0;
+    public static final int DNS_SUCCESS = 1;
 
     public final int netId;
     public final long durationMs;
@@ -70,8 +78,23 @@
         }
     };
 
+    /** @hide */
+    public static String getProbeName(int probeType) {
+        return Decoder.constants.get(probeType, "PROBE_???");
+    }
+
     public static void logEvent(int netId, long durationMs, int probeType, int returnCode) {
-        logEvent(IPCE_NETMON_PORTAL_PROBE,
-                 new ValidationProbeEvent(netId, durationMs, probeType, returnCode));
+        logEvent(new ValidationProbeEvent(netId, durationMs, probeType, returnCode));
+    }
+
+    @Override
+    public String toString() {
+        return String.format("ValidationProbeEvent(%d, %s:%d, %dms)",
+                netId, getProbeName(probeType), returnCode, durationMs);
+    }
+
+    final static class Decoder {
+        static final SparseArray<String> constants = MessageUtils.findMessageNames(
+                new Class[]{ValidationProbeEvent.class}, new String[]{"PROBE_"});
     }
 };
diff --git a/core/java/android/nfc/INfcAdapter.aidl b/core/java/android/nfc/INfcAdapter.aidl
index 940565f..f991efe 100644
--- a/core/java/android/nfc/INfcAdapter.aidl
+++ b/core/java/android/nfc/INfcAdapter.aidl
@@ -28,6 +28,7 @@
 import android.nfc.INfcCardEmulation;
 import android.nfc.INfcFCardEmulation;
 import android.nfc.INfcUnlockHandler;
+import android.nfc.ITagRemovedCallback;
 import android.os.Bundle;
 
 /**
@@ -55,6 +56,8 @@
     oneway void invokeBeam();
     oneway void invokeBeamInternal(in BeamShareData shareData);
 
+    boolean ignore(int nativeHandle, int debounceMs, ITagRemovedCallback callback);
+
     void dispatch(in Tag tag);
 
     void setReaderMode (IBinder b, IAppCallback callback, int flags, in Bundle extras);
diff --git a/core/java/android/nfc/INfcTag.aidl b/core/java/android/nfc/INfcTag.aidl
index 26d2bec..539fd4a 100644
--- a/core/java/android/nfc/INfcTag.aidl
+++ b/core/java/android/nfc/INfcTag.aidl
@@ -31,7 +31,6 @@
     boolean isNdef(int nativeHandle);
     boolean isPresent(int nativeHandle);
     TransceiveResult transceive(int nativeHandle, in byte[] data, boolean raw);
-    boolean done(int nativeHandle, int debounceMs);
 
     NdefMessage ndefRead(int nativeHandle);
     int ndefWrite(int nativeHandle, in NdefMessage msg);
diff --git a/core/java/android/nfc/ITagRemovedCallback.aidl b/core/java/android/nfc/ITagRemovedCallback.aidl
new file mode 100644
index 0000000..2a06ff3
--- /dev/null
+++ b/core/java/android/nfc/ITagRemovedCallback.aidl
@@ -0,0 +1,8 @@
+package android.nfc;
+
+/**
+ * @hide
+ */
+oneway interface ITagRemovedCallback {
+    void onTagRemoved();
+}
diff --git a/core/java/android/nfc/NfcAdapter.java b/core/java/android/nfc/NfcAdapter.java
index 6f911ce..8406bcf 100644
--- a/core/java/android/nfc/NfcAdapter.java
+++ b/core/java/android/nfc/NfcAdapter.java
@@ -35,11 +35,14 @@
 import android.nfc.tech.NfcA;
 import android.nfc.tech.NfcF;
 import android.os.Bundle;
+import android.os.Handler;
 import android.os.IBinder;
 import android.os.RemoteException;
 import android.os.ServiceManager;
 import android.util.Log;
 
+import java.io.IOException;
+
 /**
  * Represents the local NFC adapter.
  * <p>
@@ -315,6 +318,8 @@
     final HashMap<NfcUnlockHandler, INfcUnlockHandler> mNfcUnlockHandlers;
     final Object mLock;
 
+    ITagRemovedCallback mTagRemovedListener; // protected by mLock
+
     /**
      * A callback to be invoked when the system finds a tag while the foreground activity is
      * operating in reader mode.
@@ -386,6 +391,13 @@
     }
 
     /**
+     * A callback that is invoked when a tag is removed from the field.
+     */
+    public interface OnTagRemovedListener {
+        void onTagRemoved();
+    }
+
+    /**
      * A callback to be invoked when an application has registered as a
      * handler to unlock the device given an NFC tag at the lockscreen.
      * @hide
@@ -541,6 +553,7 @@
         mContext = context;
         mNfcActivityManager = new NfcActivityManager(this);
         mNfcUnlockHandlers = new HashMap<NfcUnlockHandler, INfcUnlockHandler>();
+        mTagRemovedListener = null;
         mLock = new Object();
     }
 
@@ -1494,6 +1507,75 @@
     }
 
     /**
+     * Signals that you are no longer interested in communicating with an NFC tag
+     * for as long as it remains in range.
+     *
+     * All future attempted communication to this tag will fail with {@link IOException}.
+     * The NFC controller will be put in a low-power polling mode, allowing the device
+     * to save power in cases where it's "attached" to a tag all the time (e.g. a tag in
+     * car dock).
+     *
+     * Additionally the debounceMs parameter allows you to specify for how long the tag needs
+     * to have gone out of range, before it will be dispatched again.
+     *
+     * Note: the NFC controller typically polls at a pretty slow interval (100 - 500 ms).
+     * This means that if the tag repeatedly goes in and out of range (for example, in
+     * case of a flaky connection), and the controller happens to poll every time the
+     * tag is out of range, it *will* re-dispatch the tag after debounceMs, despite the tag
+     * having been "in range" during the interval.
+     *
+     * Note 2: if a tag with another UID is detected after this API is called, its effect
+     * will be cancelled; if this tag shows up before the amount of time specified in
+     * debounceMs, it will be dispatched again.
+     *
+     * Note 3: some tags have a random UID, in which case this API won't work reliably.
+     *
+     * @param tag        the {@link android.nfc.Tag Tag} to ignore.
+     * @param debounceMs minimum amount of time the tag needs to be out of range before being
+     *                   dispatched again.
+     * @param tagRemovedListener listener to be called when the tag is removed from the field.
+     *                           Note that this will only be called if the tag has been out of range
+     *                           for at least debounceMs, or if another tag came into range before
+     *                           debounceMs. May be null in case you don't want a callback.
+     * @param handler the {@link android.os.Handler Handler} that will be used for delivering
+     *                the callback. if the handler is null, then the thread used for delivering
+     *                the callback is unspecified.
+     * @return false if the tag couldn't be found (or has already gone out of range), true otherwise
+     */
+    public boolean ignore(final Tag tag, int debounceMs,
+                          final OnTagRemovedListener tagRemovedListener, final Handler handler) {
+        ITagRemovedCallback.Stub iListener = null;
+        if (tagRemovedListener != null) {
+            iListener = new ITagRemovedCallback.Stub() {
+                @Override
+                public void onTagRemoved() throws RemoteException {
+                    if (handler != null) {
+                        handler.post(new Runnable() {
+                            @Override
+                            public void run() {
+                                tagRemovedListener.onTagRemoved();
+                            }
+                        });
+                    } else {
+                        tagRemovedListener.onTagRemoved();
+                    }
+                    synchronized (mLock) {
+                        mTagRemovedListener = null;
+                    }
+                }
+            };
+        }
+        synchronized (mLock) {
+            mTagRemovedListener = iListener;
+        }
+        try {
+            return sService.ignore(tag.getServiceHandle(), debounceMs, iListener);
+        } catch (RemoteException e) {
+            return false;
+        }
+    }
+
+    /**
      * Inject a mock NFC tag.<p>
      * Used for testing purposes.
      * <p class="note">Requires the
diff --git a/core/java/android/nfc/Tag.java b/core/java/android/nfc/Tag.java
index 40d5a8db..154d5a1 100644
--- a/core/java/android/nfc/Tag.java
+++ b/core/java/android/nfc/Tag.java
@@ -214,42 +214,6 @@
         return techIntList;
     }
 
-    /**
-     * Signals that you are no longer interested in communicating with this tag
-     * for as long as it remains in range.
-     *
-     * All future attempted communication to this tag will fail with {@link IOException}.
-     * The NFC controller will be put in a low-power polling mode, allowing the device
-     * to save power in cases where it's "attached" to a tag all the time (eg a tag in
-     * car dock).
-     *
-     * Additionally the debounceMs parameter allows you to specify for how long the tag needs
-     * to have gone out of range, before it will be dispatched again.
-     *
-     * Note: the NFC controller typically polls at a pretty slow interval (100 - 500 ms).
-     * This means that if the tag repeatedly goes in and out of range (for example, in
-     * case of a flaky connection), and the controller happens to poll every time the
-     * tag is out of range, it *will* re-dispatch the tag after debounceMs, despite the tag
-     * having been "in range" during the interval.
-     *
-     * Note 2: if a tag with another UID is detected after this API is called, its effect
-     * will be cancelled; if this tag shows up before the amount of time specified in
-     * debounceMs, it will be dispatched again.
-     *
-     * Note 3: some tags have a random UID, in which case this API won't work.
-     *
-     * @param debounceMs minimum amount of time the tag needs to be out of range before being
-     *                   dispatched again.
-     * @return false if the Tag couldn't be found (or has gone out of range), true otherwise
-     */
-    public boolean done(int debounceMs) {
-        try {
-            return mTagService.done(getServiceHandle(), debounceMs);
-        } catch (RemoteException e) {
-            return false;
-        }
-    }
-
     private static HashMap<String, Integer> getTechStringToCodeMap() {
         HashMap<String, Integer> techStringToCodeMap = new HashMap<String, Integer>();
 
diff --git a/core/java/android/os/BatteryStats.java b/core/java/android/os/BatteryStats.java
index b9a3cff..959b309 100644
--- a/core/java/android/os/BatteryStats.java
+++ b/core/java/android/os/BatteryStats.java
@@ -1070,6 +1070,9 @@
         public int statSoftIrqTime;
         public int statIdlTime;
 
+        // Platform-level low power state stats
+        public String statPlatformIdleState;
+
         public HistoryStepDetails() {
             clear();
         }
@@ -1099,6 +1102,7 @@
             out.writeInt(statIrqTime);
             out.writeInt(statSoftIrqTime);
             out.writeInt(statIdlTime);
+            out.writeString(statPlatformIdleState);
         }
 
         public void readFromParcel(Parcel in) {
@@ -1119,6 +1123,7 @@
             statIrqTime = in.readInt();
             statSoftIrqTime = in.readInt();
             statIdlTime = in.readInt();
+            statPlatformIdleState = in.readString();
         }
     }
 
@@ -1152,6 +1157,8 @@
         
         public short batteryTemperature;
         public char batteryVoltage;
+
+        public int batteryChargeCoulombs;
         
         // Constants from SCREEN_BRIGHTNESS_*
         public static final int STATE_BRIGHTNESS_SHIFT = 0;
@@ -1176,6 +1183,8 @@
         public static final int STATE_WIFI_SCAN_FLAG = 1<<27;
         public static final int STATE_WIFI_RADIO_ACTIVE_FLAG = 1<<26;
         public static final int STATE_MOBILE_RADIO_ACTIVE_FLAG = 1<<25;
+        // Do not use, this is used for coulomb delta count.
+        private static final int STATE_RESERVED_0 = 1<<24;
         // These are on the lower bits used for the command; if they change
         // we need to write another int of data.
         public static final int STATE_SENSOR_ON_FLAG = 1<<23;
@@ -1347,6 +1356,7 @@
             bat = (((int)batteryTemperature)&0xffff)
                     | ((((int)batteryVoltage)<<16)&0xffff0000);
             dest.writeInt(bat);
+            dest.writeInt(batteryChargeCoulombs);
             dest.writeInt(states);
             dest.writeInt(states2);
             if (wakelockTag != null) {
@@ -1375,6 +1385,7 @@
             int bat2 = src.readInt();
             batteryTemperature = (short)(bat2&0xffff);
             batteryVoltage = (char)((bat2>>16)&0xffff);
+            batteryChargeCoulombs = src.readInt();
             states = src.readInt();
             states2 = src.readInt();
             if ((bat&0x10000000) != 0) {
@@ -1414,6 +1425,7 @@
             batteryPlugType = 0;
             batteryTemperature = 0;
             batteryVoltage = 0;
+            batteryChargeCoulombs = 0;
             states = 0;
             states2 = 0;
             wakelockTag = null;
@@ -1441,6 +1453,7 @@
             batteryPlugType = o.batteryPlugType;
             batteryTemperature = o.batteryTemperature;
             batteryVoltage = o.batteryVoltage;
+            batteryChargeCoulombs = o.batteryChargeCoulombs;
             states = o.states;
             states2 = o.states2;
             if (o.wakelockTag != null) {
@@ -1472,6 +1485,7 @@
                     && batteryPlugType == o.batteryPlugType
                     && batteryTemperature == o.batteryTemperature
                     && batteryVoltage == o.batteryVoltage
+                    && batteryChargeCoulombs == o.batteryChargeCoulombs
                     && states == o.states
                     && states2 == o.states2
                     && currentTime == o.currentTime;
@@ -4522,6 +4536,7 @@
         int oldPlug = -1;
         int oldTemp = -1;
         int oldVolt = -1;
+        int oldCharge = -1;
         long lastTime = -1;
 
         void reset() {
@@ -4532,6 +4547,7 @@
             oldPlug = -1;
             oldTemp = -1;
             oldVolt = -1;
+            oldCharge = -1;
         }
 
         public void printNextItem(PrintWriter pw, HistoryItem rec, long baseTime, boolean checkin,
@@ -4693,6 +4709,11 @@
                     pw.print(checkin ? ",Bv=" : " volt=");
                     pw.print(oldVolt);
                 }
+                if (oldCharge != rec.batteryChargeCoulombs) {
+                    oldCharge = rec.batteryChargeCoulombs;
+                    pw.print(checkin ? ",Bcc=" : " charge=");
+                    pw.print(oldCharge);
+                }
                 printBitDescriptions(pw, oldState, rec.states, rec.wakelockTag,
                         HISTORY_STATE_DESCRIPTIONS, !checkin);
                 printBitDescriptions(pw, oldState2, rec.states2, null,
@@ -4788,6 +4809,8 @@
                             pw.print(sb);
                             pw.print(")");
                         }
+                        pw.print(", PlatformIdleStat ");
+                        pw.print(rec.stepDetails.statPlatformIdleState);
                         pw.println();
                     } else {
                         pw.print(BATTERY_STATS_CHECKIN_VERSION); pw.print(',');
@@ -4821,6 +4844,8 @@
                         pw.print(rec.stepDetails.statSoftIrqTime);
                         pw.print(',');
                         pw.print(rec.stepDetails.statIdlTime);
+                        pw.print(',');
+                        pw.print(rec.stepDetails.statPlatformIdleState);
                         pw.println();
                     }
                 }
diff --git a/core/java/android/os/FileUtils.java b/core/java/android/os/FileUtils.java
index 7d74a12..fa32848 100644
--- a/core/java/android/os/FileUtils.java
+++ b/core/java/android/os/FileUtils.java
@@ -72,8 +72,13 @@
     public static final int S_IWOTH = 00002;
     public static final int S_IXOTH = 00001;
 
-    /** Regular expression for safe filenames: no spaces or metacharacters */
-    private static final Pattern SAFE_FILENAME_PATTERN = Pattern.compile("[\\w%+,./=_-]+");
+    /** Regular expression for safe filenames: no spaces or metacharacters.
+      *
+      * Use a preload holder so that FileUtils can be compile-time initialized.
+      */
+    private static class NoImagePreloadHolder {
+        public static final Pattern SAFE_FILENAME_PATTERN = Pattern.compile("[\\w%+,./=_-]+");
+    }
 
     private static final File[] EMPTY = new File[0];
 
@@ -243,7 +248,7 @@
         // Note, we check whether it matches what's known to be safe,
         // rather than what's known to be unsafe.  Non-ASCII, control
         // characters, etc. are all unsafe by default.
-        return SAFE_FILENAME_PATTERN.matcher(file.getPath()).matches();
+        return NoImagePreloadHolder.SAFE_FILENAME_PATTERN.matcher(file.getPath()).matches();
     }
 
     /**
diff --git a/core/java/android/os/INetworkManagementService.aidl b/core/java/android/os/INetworkManagementService.aidl
index 68b0a9f..b546da0 100644
--- a/core/java/android/os/INetworkManagementService.aidl
+++ b/core/java/android/os/INetworkManagementService.aidl
@@ -324,6 +324,11 @@
     void removeIdleTimer(String iface);
 
     /**
+     * Configure name servers, search paths, and resolver parameters for the given network.
+     */
+    void setDnsConfigurationForNetwork(int netId, in String[] servers, String domains);
+
+    /**
      * Bind name servers to a network in the DNS resolver.
      */
     void setDnsServersForNetwork(int netId, in String[] servers, String domains);
diff --git a/core/java/android/os/RecoverySystem.java b/core/java/android/os/RecoverySystem.java
index b25b33d..403e06c 100644
--- a/core/java/android/os/RecoverySystem.java
+++ b/core/java/android/os/RecoverySystem.java
@@ -434,6 +434,9 @@
             String filename = packageFile.getCanonicalPath();
             Log.w(TAG, "!!! REBOOTING TO INSTALL " + filename + " !!!");
 
+            // If the package name ends with "_s.zip", it's a security update.
+            boolean securityUpdate = filename.endsWith("_s.zip");
+
             // If the package is on the /data partition, the package needs to
             // be processed (i.e. uncrypt'd). The caller specifies if that has
             // been done in 'processed' parameter.
@@ -468,7 +471,12 @@
 
             final String filenameArg = "--update_package=" + filename + "\n";
             final String localeArg = "--locale=" + Locale.getDefault().toString() + "\n";
-            final String command = filenameArg + localeArg;
+            final String securityArg = "--security\n";
+
+            String command = filenameArg + localeArg;
+            if (securityUpdate) {
+                command += securityArg;
+            }
 
             RecoverySystem rs = (RecoverySystem) context.getSystemService(
                     Context.RECOVERY_SERVICE);
@@ -501,6 +509,7 @@
     public static void scheduleUpdateOnBoot(Context context, File packageFile)
             throws IOException {
         String filename = packageFile.getCanonicalPath();
+        boolean securityUpdate = filename.endsWith("_s.zip");
 
         // If the package is on the /data partition, use the block map file as
         // the package name instead.
@@ -510,7 +519,12 @@
 
         final String filenameArg = "--update_package=" + filename + "\n";
         final String localeArg = "--locale=" + Locale.getDefault().toString() + "\n";
-        final String command = filenameArg + localeArg;
+        final String securityArg = "--security\n";
+
+        String command = filenameArg + localeArg;
+        if (securityUpdate) {
+            command += securityArg;
+        }
 
         RecoverySystem rs = (RecoverySystem) context.getSystemService(Context.RECOVERY_SERVICE);
         if (!rs.setupBcb(command)) {
diff --git a/core/java/android/os/UserManager.java b/core/java/android/os/UserManager.java
index dd53cbb..d55201f 100644
--- a/core/java/android/os/UserManager.java
+++ b/core/java/android/os/UserManager.java
@@ -36,7 +36,6 @@
 import android.graphics.BitmapFactory;
 import android.graphics.Rect;
 import android.graphics.drawable.Drawable;
-import android.os.storage.StorageManager;
 import android.provider.Settings;
 import android.telephony.TelephonyManager;
 import android.view.WindowManager.LayoutParams;
@@ -984,10 +983,27 @@
 
     /** {@hide} */
     public boolean isUserUnlocked(@UserIdInt int userId) {
-        // TODO: eventually pivot this back to look at ActivityManager state,
-        // but there is race where we can start a non-encryption-aware launcher
-        // before that lifecycle has entered the running unlocked state.
-        return mContext.getSystemService(StorageManager.class).isUserKeyUnlocked(userId);
+        try {
+            return ActivityManagerNative.getDefault().isUserRunning(userId,
+                    ActivityManager.FLAG_AND_UNLOCKED);
+        } catch (RemoteException re) {
+            throw re.rethrowFromSystemServer();
+        }
+    }
+
+    /** {@hide} */
+    public boolean isUserUnlockingOrUnlocked(UserHandle user) {
+        return isUserUnlockingOrUnlocked(user.getIdentifier());
+    }
+
+    /** {@hide} */
+    public boolean isUserUnlockingOrUnlocked(@UserIdInt int userId) {
+        try {
+            return ActivityManagerNative.getDefault().isUserRunning(userId,
+                    ActivityManager.FLAG_AND_UNLOCKING_OR_UNLOCKED);
+        } catch (RemoteException re) {
+            throw re.rethrowFromSystemServer();
+        }
     }
 
     /**
diff --git a/core/java/android/os/storage/StorageManager.java b/core/java/android/os/storage/StorageManager.java
index f68e227..fbf7b26 100644
--- a/core/java/android/os/storage/StorageManager.java
+++ b/core/java/android/os/storage/StorageManager.java
@@ -25,6 +25,7 @@
 import android.content.Context;
 import android.content.pm.IPackageMoveObserver;
 import android.content.pm.PackageManager;
+import android.os.Binder;
 import android.os.Environment;
 import android.os.FileUtils;
 import android.os.Handler;
@@ -1062,11 +1063,20 @@
     }
 
     /** {@hide} */
-    public boolean isUserKeyUnlocked(int userId) {
+    public static boolean isUserKeyUnlocked(int userId) {
+        final IMountService mount = IMountService.Stub
+                .asInterface(ServiceManager.getService("mount"));
+        if (mount == null) {
+            Slog.w(TAG, "Early during boot, assuming locked");
+            return false;
+        }
+        final long token = Binder.clearCallingIdentity();
         try {
-            return mMountService.isUserKeyUnlocked(userId);
+            return mount.isUserKeyUnlocked(userId);
         } catch (RemoteException e) {
-            throw e.rethrowFromSystemServer();
+            throw e.rethrowAsRuntimeException();
+        } finally {
+            Binder.restoreCallingIdentity(token);
         }
     }
 
diff --git a/core/java/android/provider/CallLog.java b/core/java/android/provider/CallLog.java
index 8a0759f..893eb37 100644
--- a/core/java/android/provider/CallLog.java
+++ b/core/java/android/provider/CallLog.java
@@ -824,6 +824,8 @@
                 UserHandle user, ContentValues values) {
             final ContentResolver resolver = context.getContentResolver();
 
+            // Since we're doing this operation on behalf of an app, we only
+            // want to use the actual "unlocked" state.
             final Uri uri = ContentProvider.maybeAddUserId(
                     userManager.isUserUnlocked(user) ? CONTENT_URI : SHADOW_CONTENT_URI,
                     user.getIdentifier());
diff --git a/core/java/android/provider/Settings.java b/core/java/android/provider/Settings.java
index d80d4be..700c2d2 100755
--- a/core/java/android/provider/Settings.java
+++ b/core/java/android/provider/Settings.java
@@ -16,6 +16,7 @@
 
 package android.provider;
 
+import android.annotation.NonNull;
 import android.annotation.SdkConstant;
 import android.annotation.SdkConstant.SdkConstantType;
 import android.annotation.SystemApi;
@@ -50,7 +51,6 @@
 import android.os.Process;
 import android.os.RemoteException;
 import android.os.ServiceManager;
-import android.os.SystemProperties;
 import android.os.UserHandle;
 import android.os.Build.VERSION_CODES;
 import android.speech.tts.TextToSpeech;
@@ -61,9 +61,12 @@
 import android.util.LocaleList;
 import android.util.Log;
 
+import android.util.MemoryIntArray;
+import com.android.internal.annotations.GuardedBy;
 import com.android.internal.util.ArrayUtils;
 import com.android.internal.widget.ILockSettings;
 
+import java.io.IOException;
 import java.net.URISyntaxException;
 import java.text.SimpleDateFormat;
 import java.util.HashMap;
@@ -723,18 +726,18 @@
             "android.settings.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS";
 
     /**
-     * Activity Action: Show screen for controlling which apps can ignore background data
-     * restrictions.
+     * Activity Action: Show screen for controlling background data
+     * restrictions for a particular application.
      * <p>
-     * Input: if the Intent's data URI is set with an application name (using the "package" schema,
-     * like "package:com.my.app"), then when the screen is displayed it will focus on such app. If
-     * the data is not set, it will just open the screen.
+     * Input: Intent's data URI set with an application name, using the
+     * "package" schema (like "package:com.my.app").
+     *
      * <p>
      * Output: Nothing.
      * <p>
      * Applications can also use {@link android.net.ConnectivityManager#getRestrictBackgroundStatus
-     * ConnectivityManager#getRestrictBackgroundStatus()} to determine the status of the background
-     * data restrictions for them.
+     * ConnectivityManager#getRestrictBackgroundStatus()} to determine the
+     * status of the background data restrictions for them.
      */
     @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION)
     public static final String ACTION_IGNORE_BACKGROUND_DATA_RESTRICTIONS_SETTINGS =
@@ -1282,6 +1285,29 @@
     public static final String CALL_METHOD_GET_GLOBAL = "GET_global";
 
     /**
+     * @hide - Specifies that the caller of the fast-path call()-based flow tracks
+     * the settings generation in order to cache values locally. If this key is
+     * mapped to a <code>null</code> string extra in the request bundle, the response
+     * bundle will contain the same key mapped to a parcelable extra which would be
+     * an {@link android.util.MemoryIntArray}. The response will also contain an
+     * integer mapped to the {@link #CALL_METHOD_GENERATION_INDEX_KEY} which is the
+     * index in the array clients should use to lookup the generation. For efficiency
+     * the caller should request the generation tracking memory array only if it
+     * doesn't already have it.
+     *
+     * @see #CALL_METHOD_GENERATION_INDEX_KEY
+     */
+    public static final String CALL_METHOD_TRACK_GENERATION_KEY = "_track_generation";
+
+    /**
+     * @hide Key with the location in the {@link android.util.MemoryIntArray} where
+     * to look up the generation id of the backing table.
+     *
+     * @see #CALL_METHOD_TRACK_GENERATION_KEY
+     */
+    public static final String CALL_METHOD_GENERATION_INDEX_KEY = "_generation_index";
+
+    /**
      * @hide - User handle argument extra to the fast-path call()-based requests
      */
     public static final String CALL_METHOD_USER_KEY = "_user";
@@ -1424,9 +1450,42 @@
         }
     }
 
+    private static final class GenerationTracker {
+        private final MemoryIntArray mArray;
+        private final int mIndex;
+        private int mCurrentGeneration;
+
+        public GenerationTracker(@NonNull MemoryIntArray array, int index) {
+            mArray = array;
+            mIndex = index;
+            mCurrentGeneration = readCurrentGeneration();
+        }
+
+        public boolean isGenerationChanged() {
+            final int currentGeneration = readCurrentGeneration();
+            if (currentGeneration >= 0) {
+                if (currentGeneration == mCurrentGeneration) {
+                    return false;
+                }
+                mCurrentGeneration = currentGeneration;
+            }
+            return true;
+        }
+
+        private int readCurrentGeneration() {
+            try {
+                return mArray.get(mIndex);
+            } catch (IOException e) {
+                Log.e(TAG, "Error getting current generation", e);
+            }
+            return -1;
+        }
+    }
+
     // Thread-safe.
     private static class NameValueCache {
-        private final String mVersionSystemProperty;
+        private static final boolean DEBUG = false;
+
         private final Uri mUri;
 
         private static final String[] SELECT_VALUE =
@@ -1435,7 +1494,6 @@
 
         // Must synchronize on 'this' to access mValues and mValuesVersion.
         private final HashMap<String, String> mValues = new HashMap<String, String>();
-        private long mValuesVersion = 0;
 
         // Initially null; set lazily and held forever.  Synchronized on 'this'.
         private IContentProvider mContentProvider = null;
@@ -1445,9 +1503,10 @@
         private final String mCallGetCommand;
         private final String mCallSetCommand;
 
-        public NameValueCache(String versionSystemProperty, Uri uri,
-                String getCommand, String setCommand) {
-            mVersionSystemProperty = versionSystemProperty;
+        @GuardedBy("this")
+        private GenerationTracker mGenerationTracker;
+
+        public NameValueCache(Uri uri, String getCommand, String setCommand) {
             mUri = uri;
             mCallGetCommand = getCommand;
             mCallSetCommand = setCommand;
@@ -1482,22 +1541,18 @@
         public String getStringForUser(ContentResolver cr, String name, final int userHandle) {
             final boolean isSelf = (userHandle == UserHandle.myUserId());
             if (isSelf) {
-                long newValuesVersion = SystemProperties.getLong(mVersionSystemProperty, 0);
-
-                // Our own user's settings data uses a client-side cache
                 synchronized (this) {
-                    if (mValuesVersion != newValuesVersion) {
-                        if (LOCAL_LOGV || false) {
-                            Log.v(TAG, "invalidate [" + mUri.getLastPathSegment() + "]: current "
-                                    + newValuesVersion + " != cached " + mValuesVersion);
+                    if (mGenerationTracker != null) {
+                        if (mGenerationTracker.isGenerationChanged()) {
+                            if (DEBUG) {
+                                Log.i(TAG, "Generation changed for type:"
+                                        + mUri.getPath() + " in package:"
+                                        + cr.getPackageName() +" and user:" + userHandle);
+                            }
+                            mValues.clear();
+                        } else if (mValues.containsKey(name)) {
+                            return mValues.get(name);
                         }
-
-                        mValues.clear();
-                        mValuesVersion = newValuesVersion;
-                    }
-
-                    if (mValues.containsKey(name)) {
-                        return mValues.get(name);  // Could be null, that's OK -- negative caching
                     }
                 }
             } else {
@@ -1518,12 +1573,42 @@
                         args = new Bundle();
                         args.putInt(CALL_METHOD_USER_KEY, userHandle);
                     }
+                    boolean needsGenerationTracker = false;
+                    synchronized (this) {
+                        if (isSelf && mGenerationTracker == null) {
+                            needsGenerationTracker = true;
+                            if (args == null) {
+                                args = new Bundle();
+                            }
+                            args.putString(CALL_METHOD_TRACK_GENERATION_KEY, null);
+                            if (DEBUG) {
+                                Log.i(TAG, "Requested generation tracker for type: "+ mUri.getPath()
+                                        + " in package:" + cr.getPackageName() +" and user:"
+                                        + userHandle);
+                            }
+                        }
+                    }
                     Bundle b = cp.call(cr.getPackageName(), mCallGetCommand, name, args);
                     if (b != null) {
-                        String value = b.getPairValue();
+                        String value = b.getString(Settings.NameValueTable.VALUE);
                         // Don't update our cache for reads of other users' data
                         if (isSelf) {
                             synchronized (this) {
+                                if (needsGenerationTracker) {
+                                    MemoryIntArray array = b.getParcelable(
+                                            CALL_METHOD_TRACK_GENERATION_KEY);
+                                    final int index = b.getInt(
+                                            CALL_METHOD_GENERATION_INDEX_KEY, -1);
+                                    if (array != null && index >= 0) {
+                                        if (DEBUG) {
+                                            Log.i(TAG, "Received generation tracker for type:"
+                                                    + mUri.getPath() + " in package:"
+                                                    + cr.getPackageName() + " and user:"
+                                                    + userHandle + " with index:" + index);
+                                        }
+                                        mGenerationTracker = new GenerationTracker(array, index);
+                                    }
+                                }
                                 mValues.put(name, value);
                             }
                         } else {
@@ -1592,8 +1677,6 @@
      * functions for accessing individual settings entries.
      */
     public static final class System extends NameValueTable {
-        public static final String SYS_PROP_SETTING_VERSION = "sys.settings_system_version";
-
         private static final float DEFAULT_FONT_SCALE = 1.0f;
 
         /** @hide */
@@ -1608,7 +1691,6 @@
             Uri.parse("content://" + AUTHORITY + "/system");
 
         private static final NameValueCache sNameValueCache = new NameValueCache(
-                SYS_PROP_SETTING_VERSION,
                 CONTENT_URI,
                 CALL_METHOD_GET_SYSTEM,
                 CALL_METHOD_PUT_SYSTEM);
@@ -3913,8 +3995,6 @@
      * APIs for those values, not modified directly by applications.
      */
     public static final class Secure extends NameValueTable {
-        public static final String SYS_PROP_SETTING_VERSION = "sys.settings_secure_version";
-
         /**
          * The content:// style URL for this table
          */
@@ -3923,7 +4003,6 @@
 
         // Populated lazily, guarded by class object:
         private static final NameValueCache sNameValueCache = new NameValueCache(
-                SYS_PROP_SETTING_VERSION,
                 CONTENT_URI,
                 CALL_METHOD_GET_SECURE,
                 CALL_METHOD_PUT_SECURE);
@@ -5867,7 +5946,10 @@
         /**
          * Names of the packages that the current user has explicitly allowed to
          * manage notification policy configuration, separated by ':'.
+         *
+         * @hide
          */
+        @TestApi
         public static final String ENABLED_NOTIFICATION_POLICY_ACCESS_PACKAGES =
                 "enabled_notification_policy_access_packages";
 
@@ -6357,8 +6439,6 @@
      * explicitly modify through the system UI or specialized APIs for those values.
      */
     public static final class Global extends NameValueTable {
-        public static final String SYS_PROP_SETTING_VERSION = "sys.settings_global_version";
-
         /**
          * The content:// style URL for global secure settings items.  Not public.
          */
@@ -6789,14 +6869,6 @@
                "hdmi_control_auto_device_off_enabled";
 
        /**
-        * Whether to use the DHCP client from Lollipop and earlier instead of the newer Android DHCP
-        * client.
-        * (0 = false, 1 = true)
-        * @hide
-        */
-       public static final String LEGACY_DHCP_CLIENT = "legacy_dhcp_client";
-
-       /**
         * Whether TV will switch to MHL port when a mobile device is plugged in.
         * (0 = false, 1 = true)
         * @hide
@@ -6902,6 +6974,33 @@
        public static final String STORAGE_BENCHMARK_INTERVAL = "storage_benchmark_interval";
 
        /**
+        * Sample validity in seconds to configure for the system DNS resolver.
+        * {@hide}
+        */
+       public static final String DNS_RESOLVER_SAMPLE_VALIDITY_SECONDS =
+               "dns_resolver_sample_validity_seconds";
+
+       /**
+        * Success threshold in percent for use with the system DNS resolver.
+        * {@hide}
+        */
+       public static final String DNS_RESOLVER_SUCCESS_THRESHOLD_PERCENT =
+                "dns_resolver_success_threshold_percent";
+
+       /**
+        * Minimum number of samples needed for statistics to be considered meaningful in the
+        * system DNS resolver.
+        * {@hide}
+        */
+       public static final String DNS_RESOLVER_MIN_SAMPLES = "dns_resolver_min_samples";
+
+       /**
+        * Maximum number taken into account for statistics purposes in the system DNS resolver.
+        * {@hide}
+        */
+       public static final String DNS_RESOLVER_MAX_SAMPLES = "dns_resolver_max_samples";
+
+       /**
         * Whether to disable the automatic scheduling of system updates.
         * 1 = system updates won't be automatically scheduled (will always
         * present notification instead).
@@ -7626,6 +7725,15 @@
         public static final String CAPTIVE_PORTAL_SERVER = "captive_portal_server";
 
         /**
+         * Whether to use HTTPS for network validation. This is enabled by default and the setting
+         * needs to be set to 0 to disable it. This setting is a misnomer because captive portals
+         * don't actually use HTTPS, but it's consistent with the other settings.
+         *
+         * @hide
+         */
+        public static final String CAPTIVE_PORTAL_USE_HTTPS = "captive_portal_use_https";
+
+        /**
          * Whether network service discovery is enabled.
          *
          * @hide
@@ -8409,7 +8517,6 @@
 
         // Populated lazily, guarded by class object:
         private static NameValueCache sNameValueCache = new NameValueCache(
-                    SYS_PROP_SETTING_VERSION,
                     CONTENT_URI,
                     CALL_METHOD_GET_GLOBAL,
                     CALL_METHOD_PUT_GLOBAL);
diff --git a/core/java/android/service/notification/NotificationListenerService.java b/core/java/android/service/notification/NotificationListenerService.java
index e708b0a..cf783d2 100644
--- a/core/java/android/service/notification/NotificationListenerService.java
+++ b/core/java/android/service/notification/NotificationListenerService.java
@@ -764,9 +764,9 @@
         }
         mSystemContext = context;
         INotificationManager noMan = getNotificationInterface();
-        noMan.registerListener(mWrapper, componentName, currentUser);
-        mCurrentUser = currentUser;
         mHandler = new MyHandler(context.getMainLooper());
+        mCurrentUser = currentUser;
+        noMan.registerListener(mWrapper, componentName, currentUser);
     }
 
     /**
diff --git a/core/java/android/service/notification/ZenModeConfig.java b/core/java/android/service/notification/ZenModeConfig.java
index 3e25edb..6911b01 100644
--- a/core/java/android/service/notification/ZenModeConfig.java
+++ b/core/java/android/service/notification/ZenModeConfig.java
@@ -40,6 +40,7 @@
 
 import java.io.IOException;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.Calendar;
 import java.util.GregorianCalendar;
 import java.util.Locale;
@@ -878,6 +879,19 @@
             rt.nextAlarm = nextAlarm;
             return rt;
         }
+
+        @Override
+        public String toString() {
+            return "ScheduleInfo{" +
+                    "days=" + Arrays.toString(days) +
+                    ", startHour=" + startHour +
+                    ", startMinute=" + startMinute +
+                    ", endHour=" + endHour +
+                    ", endMinute=" + endMinute +
+                    ", exitAtAlarm=" + exitAtAlarm +
+                    ", nextAlarm=" + nextAlarm +
+                    '}';
+        }
     }
 
     // ==== Built-in system condition: event ====
diff --git a/core/java/android/text/TextUtils.java b/core/java/android/text/TextUtils.java
index 49cb8e2..71b53f1 100644
--- a/core/java/android/text/TextUtils.java
+++ b/core/java/android/text/TextUtils.java
@@ -505,15 +505,14 @@
         return false;
     }
 
-    /*
-     * @deprecated
-     * Do not use. This function only reverses individual {@code char}s and not their associated
-     * spans. It doesn't support surrogate pairs (that correspond to non-BMP code points),
-     * combining sequences or conjuncts either.
+    /**
+     * This function only reverses individual {@code char}s and not their associated
+     * spans. It doesn't support surrogate pairs (that correspond to non-BMP code points), combining
+     * sequences or conjuncts either.
+     * @deprecated Do not use.
      */
     @Deprecated
-    public static CharSequence getReverse(CharSequence source,
-                                          int start, int end) {
+    public static CharSequence getReverse(CharSequence source, int start, int end) {
         return new Reverser(source, start, end);
     }
 
diff --git a/core/java/android/util/LocaleList.java b/core/java/android/util/LocaleList.java
index fa3921c..b153e92 100644
--- a/core/java/android/util/LocaleList.java
+++ b/core/java/android/util/LocaleList.java
@@ -32,8 +32,8 @@
 import java.util.Locale;
 
 /**
- * LocaleList is an immutable list of Locales, typically used to keep an
- * ordered user preferences for locales.
+ * LocaleList is an immutable list of Locales, typically used to keep an ordered list of user
+ * preferences for locales.
  */
 public final class LocaleList implements Parcelable {
     private final Locale[] mList;
@@ -46,19 +46,42 @@
     private static final Locale[] sEmptyList = new Locale[0];
     private static final LocaleList sEmptyLocaleList = new LocaleList();
 
-    public Locale get(int location) {
-        return (0 <= location && location < mList.length) ? mList[location] : null;
+    /**
+     * Retrieves the {@link Locale} at the specified index.
+     *
+     * @param index The position to retrieve.
+     * @return The {@link Locale} in the given index.
+     */
+    public Locale get(int index) {
+        return (0 <= index && index < mList.length) ? mList[index] : null;
     }
 
+    /**
+     * Returns whether the {@link LocaleList} contains no {@link Locale} items.
+     *
+     * @return {@code true} if this {@link LocaleList} has no {@link Locale} items, {@code false}
+     *     otherwise.
+     */
     public boolean isEmpty() {
         return mList.length == 0;
     }
 
+    /**
+     * Returns the number of {@link Locale} items in this {@link LocaleList}.
+     */
     @IntRange(from=0)
     public int size() {
         return mList.length;
     }
 
+    /**
+     * Searches this {@link LocaleList} for the specified {@link Locale} and returns the index of
+     * the first occurrence.
+     *
+     * @param locale The {@link Locale} to search for.
+     * @return The index of the first occurrence of the {@link Locale} or {@code -1} if the item
+     *     wasn't found.
+     */
     @IntRange(from=-1)
     public int indexOf(Locale locale) {
         for (int i = 0; i < mList.length; i++) {
@@ -118,6 +141,9 @@
         dest.writeString(mStringRepresentation);
     }
 
+    /**
+     * Retrieves a String representation of the language tags in this list.
+     */
     @NonNull
     public String toLanguageTags() {
         return mStringRepresentation;
@@ -126,6 +152,8 @@
     /**
      * It is almost always better to call {@link #getEmptyLocaleList()} instead which returns
      * a pre-constructed empty locale list.
+     *
+     * @hide
      */
     public LocaleList() {
         mList = sEmptyList;
@@ -133,25 +161,15 @@
     }
 
     /**
+     * Creates a new {@link LocaleList}.
+     *
+     * <p>For empty lists of {@link Locale} items it is better to use {@link #getEmptyLocaleList()},
+     * which returns a pre-constructed empty list.</p>
+     *
      * @throws NullPointerException if any of the input locales is <code>null</code>.
      * @throws IllegalArgumentException if any of the input locales repeat.
      */
-    public LocaleList(@Nullable Locale locale) {
-        if (locale == null) {
-            mList = sEmptyList;
-            mStringRepresentation = "";
-        } else {
-            mList = new Locale[1];
-            mList[0] = (Locale) locale.clone();
-            mStringRepresentation = locale.toLanguageTag();
-        }
-    }
-
-    /**
-     * @throws NullPointerException if any of the input locales is <code>null</code>.
-     * @throws IllegalArgumentException if any of the input locales repeat.
-     */
-    public LocaleList(@Nullable Locale[] list) {
+    public LocaleList(@Nullable Locale... list) {
         if (list == null || list.length == 0) {
             mList = sEmptyList;
             mStringRepresentation = "";
@@ -242,11 +260,20 @@
         }
     };
 
+    /**
+     * Retrieve an empty instance of {@link LocaleList}.
+     */
     @NonNull
     public static LocaleList getEmptyLocaleList() {
         return sEmptyLocaleList;
     }
 
+    /**
+     * Generates a new LocaleList with the given language tags.
+     *
+     * @param list The language tags to be included as a single {@link String} separated by commas.
+     * @return A new instance with the {@link Locale} items identified by the given tags.
+     */
     @NonNull
     public static LocaleList forLanguageTags(@Nullable String list) {
         if (list == null || list.equals("")) {
@@ -374,7 +401,8 @@
      * Returns the first match in the locale list given an unordered array of supported locales
      * in BCP 47 format.
      *
-     * If the locale list is empty, null would be returned.
+     * @return The first {@link Locale} from this list that appears in the given array, or
+     *     {@code null} if the {@link LocaleList} is empty.
      */
     @Nullable
     public Locale getFirstMatch(String[] supportedLocales) {
@@ -445,9 +473,9 @@
      * preferred locales, having concluded that the primary preference is not supported but a
      * secondary preference is.
      *
-     * Note that the default LocaleList would change if Locale.setDefault() is called. This method
-     * takes that into account by always checking the output of Locale.getDefault() and
-     * recalculating the default LocaleList if needed.
+     * <p>Note that the default LocaleList would change if Locale.setDefault() is called. This
+     * method takes that into account by always checking the output of Locale.getDefault() and
+     * recalculating the default LocaleList if needed.</p>
      */
     @NonNull @Size(min=1)
     public static LocaleList getDefault() {
diff --git a/core/java/android/util/MemoryIntArray.aidl b/core/java/android/util/MemoryIntArray.aidl
new file mode 100644
index 0000000..3b15535
--- /dev/null
+++ b/core/java/android/util/MemoryIntArray.aidl
@@ -0,0 +1,19 @@
+/**
+ * Copyright (c) 2016, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.util;
+
+parcelable MemoryIntArray;
diff --git a/core/java/android/util/MemoryIntArray.java b/core/java/android/util/MemoryIntArray.java
new file mode 100644
index 0000000..c3bd963
--- /dev/null
+++ b/core/java/android/util/MemoryIntArray.java
@@ -0,0 +1,258 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.util;
+
+import android.os.Parcel;
+import android.os.ParcelFileDescriptor;
+import android.os.Parcelable;
+import android.os.Process;
+
+import java.io.Closeable;
+import java.io.IOException;
+import java.util.UUID;
+
+/**
+ * This class is an array of integers that is backed by shared memory.
+ * It is useful for efficiently sharing state between processes. The
+ * write and read operations are guaranteed to not result in read/
+ * write memory tear, i.e. they are atomic. However, multiple read/
+ * write operations are <strong>not</strong> synchronized between
+ * each other.
+ * <p>
+ * The data structure is designed to have one owner process that can
+ * read/write. There may be multiple client processes that can only read or
+ * read/write depending how the data structure was configured when
+ * instantiated. The owner process is the process that created the array.
+ * The shared memory is pinned (not reclaimed by the system) until the
+ * owning process dies or the data structure is closed. This class
+ * is <strong>not</strong> thread safe. You should not interact with
+ * an instance of this class once it is closed.
+ * </p>
+ *
+ * @hide
+ */
+public final class MemoryIntArray implements Parcelable, Closeable {
+    private static final int MAX_SIZE = 1024;
+
+    private final int mOwnerPid;
+    private final boolean mClientWritable;
+    private final long mMemoryAddr;
+    private ParcelFileDescriptor mFd;
+
+    /**
+     * Creates a new instance.
+     *
+     * @param size The size of the array in terms of integer slots. Cannot be
+     *     more than {@link #getMaxSize()}.
+     * @param clientWritable Whether other processes can write to the array.
+     * @throws IOException If an error occurs while accessing the shared memory.
+     */
+    public MemoryIntArray(int size, boolean clientWritable) throws IOException {
+        if (size > MAX_SIZE) {
+            throw new IllegalArgumentException("Max size is " + MAX_SIZE);
+        }
+        mOwnerPid = Process.myPid();
+        mClientWritable = clientWritable;
+        final String name = UUID.randomUUID().toString();
+        mFd = ParcelFileDescriptor.fromFd(nativeCreate(name, size));
+        mMemoryAddr = nativeOpen(mFd.getFd(), true, clientWritable);
+    }
+
+    private MemoryIntArray(Parcel parcel) throws IOException {
+        mOwnerPid = parcel.readInt();
+        mClientWritable = (parcel.readInt() == 1);
+        mFd = parcel.readParcelable(null);
+        if (mFd == null) {
+            throw new IOException("No backing file descriptor");
+        }
+        final long memoryAddress = parcel.readLong();
+        if (isOwner()) {
+            mMemoryAddr = memoryAddress;
+        } else {
+            mMemoryAddr = nativeOpen(mFd.getFd(), false, mClientWritable);
+        }
+    }
+
+    /**
+     * @return Gets whether this array is mutable.
+     */
+    public boolean isWritable() {
+        enforceNotClosed();
+        return isOwner() || mClientWritable;
+    }
+
+    /**
+     * Gets the value at a given index.
+     *
+     * @param index The index.
+     * @return The value at this index.
+     * @throws IOException If an error occurs while accessing the shared memory.
+     */
+    public int get(int index) throws IOException {
+        enforceNotClosed();
+        enforceValidIndex(index);
+        return nativeGet(mFd.getFd(), mMemoryAddr, index, isOwner());
+    }
+
+    /**
+     * Sets the value at a given index. This method can be called only if
+     * {@link #isWritable()} returns true which means your process is the
+     * owner.
+     *
+     * @param index The index.
+     * @param value The value to set.
+     * @throws IOException If an error occurs while accessing the shared memory.
+     */
+    public void set(int index, int value) throws IOException {
+        enforceNotClosed();
+        enforceWritable();
+        enforceValidIndex(index);
+        nativeSet(mFd.getFd(), mMemoryAddr, index, value, isOwner());
+    }
+
+    /**
+     * Gets the array size.
+     *
+     * @throws IOException If an error occurs while accessing the shared memory.
+     */
+    public int size() throws IOException {
+        enforceNotClosed();
+        return nativeSize(mFd.getFd());
+    }
+
+    /**
+     * Closes the array releasing resources.
+     *
+     * @throws IOException If an error occurs while accessing the shared memory.
+     */
+    @Override
+    public void close() throws IOException {
+        if (!isClosed()) {
+            nativeClose(mFd.getFd(), mMemoryAddr, isOwner());
+            mFd = null;
+        }
+    }
+
+    /**
+     * @return Whether this array is closed and shouldn't be used.
+     */
+    public boolean isClosed() {
+        return mFd == null;
+    }
+
+    @Override
+    protected void finalize() throws Throwable {
+        close();
+        super.finalize();
+    }
+
+    @Override
+    public int describeContents() {
+        return CONTENTS_FILE_DESCRIPTOR;
+    }
+
+    @Override
+    public void writeToParcel(Parcel parcel, int flags) {
+        parcel.writeInt(mOwnerPid);
+        parcel.writeInt(mClientWritable ? 1 : 0);
+        parcel.writeParcelable(mFd, 0);
+        parcel.writeLong(mMemoryAddr);
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (obj == null) {
+            return false;
+        }
+        if (this == obj) {
+            return true;
+        }
+        if (getClass() != obj.getClass()) {
+            return false;
+        }
+        MemoryIntArray other = (MemoryIntArray) obj;
+        if (mFd == null) {
+            if (other.mFd != null) {
+                return false;
+            }
+        } else if (mFd.getFd() != other.mFd.getFd()) {
+            return false;
+        }
+        return true;
+    }
+
+    @Override
+    public int hashCode() {
+        return mFd != null ? mFd.hashCode() : 1;
+    }
+
+    private boolean isOwner() {
+        return mOwnerPid == Process.myPid();
+    }
+
+    private void enforceNotClosed() {
+        if (isClosed()) {
+            throw new IllegalStateException("cannot interact with a closed instance");
+        }
+    }
+
+    private void enforceValidIndex(int index) throws IOException {
+        final int size = size();
+        if (index < 0 || index > size - 1) {
+            throw new IndexOutOfBoundsException(
+                    index + " not between 0 and " + (size - 1));
+        }
+    }
+
+    private void enforceWritable() {
+        if (!isWritable()) {
+            throw new UnsupportedOperationException("array is not writable");
+        }
+    }
+
+    private native int nativeCreate(String name, int size);
+    private native long nativeOpen(int fd, boolean owner, boolean writable);
+    private native void nativeClose(int fd, long memoryAddr, boolean owner);
+    private native int nativeGet(int fd, long memoryAddr, int index, boolean owner);
+    private native void nativeSet(int fd, long memoryAddr, int index, int value, boolean owner);
+    private native int nativeSize(int fd);
+    private native static int nativeGetMemoryPageSize();
+
+    /**
+     * @return The max array size.
+     */
+    public static int getMaxSize() {
+        return MAX_SIZE;
+    }
+
+    public static final Parcelable.Creator<MemoryIntArray> CREATOR =
+            new Parcelable.Creator<MemoryIntArray>() {
+        @Override
+        public MemoryIntArray createFromParcel(Parcel parcel) {
+            try {
+                return new MemoryIntArray(parcel);
+            } catch (IOException ioe) {
+                throw new RuntimeException(ioe);
+            }
+        }
+
+        @Override
+        public MemoryIntArray[] newArray(int size) {
+            return new MemoryIntArray[size];
+        }
+    };
+}
diff --git a/core/java/android/view/Display.java b/core/java/android/view/Display.java
index 22d5ed8..48eee05 100644
--- a/core/java/android/view/Display.java
+++ b/core/java/android/view/Display.java
@@ -719,10 +719,12 @@
 
     /**
      * Returns the display's HDR capabilities.
-     * @hide
      */
     public HdrCapabilities getHdrCapabilities() {
-        return new HdrCapabilities();
+        synchronized (this) {
+            updateDisplayInfoLocked();
+            return mDisplayInfo.hdrCapabilities;
+        }
     }
 
     /**
@@ -1127,7 +1129,6 @@
      * For example, what HDR types it supports and details about the desired luminance data.
      * <p>You can get an instance for a given {@link Display} object with
      * {@link Display#getHdrCapabilities getHdrCapabilities()}.
-     * @hide
      */
     public static final class HdrCapabilities implements Parcelable {
         /**
@@ -1147,6 +1148,7 @@
          */
         public static final int HDR_TYPE_HLG = 3;
 
+        /** @hide */
         @IntDef({
             HDR_TYPE_DOLBY_VISION,
             HDR_TYPE_HDR10,
@@ -1160,9 +1162,20 @@
         private float mMaxAverageLuminance = INVALID_LUMINANCE;
         private float mMinLuminance = INVALID_LUMINANCE;
 
+        /**
+         * @hide
+         */
         public HdrCapabilities() {
         }
 
+        public HdrCapabilities(int[] supportedHdrTypes, float maxLuminance,
+                float maxAverageLuminance, float minLuminance) {
+            mSupportedHdrTypes = supportedHdrTypes;
+            mMaxLuminance = maxLuminance;
+            mMaxAverageLuminance = maxAverageLuminance;
+            mMinLuminance = minLuminance;
+        }
+
         /**
          * Gets the supported HDR types of this display.
          * Returns empty array if HDR is not supported by the display.
@@ -1205,6 +1218,9 @@
             readFromParcel(source);
         }
 
+        /**
+         * @hide
+         */
         public void readFromParcel(Parcel source) {
             int types = source.readInt();
             mSupportedHdrTypes = new int[types];
diff --git a/core/java/android/view/DisplayInfo.java b/core/java/android/view/DisplayInfo.java
index ee76274..8aeeffd 100644
--- a/core/java/android/view/DisplayInfo.java
+++ b/core/java/android/view/DisplayInfo.java
@@ -178,6 +178,9 @@
     /** The list of supported color transforms */
     public Display.ColorTransform[] supportedColorTransforms = Display.ColorTransform.EMPTY_ARRAY;
 
+    /** The display's HDR capabilities */
+    public Display.HdrCapabilities hdrCapabilities;
+
     /**
      * The logical display density which is the basis for density-independent
      * pixels.
@@ -290,6 +293,7 @@
                 && defaultModeId == other.defaultModeId
                 && colorTransformId == other.colorTransformId
                 && defaultColorTransformId == other.defaultColorTransformId
+                && Objects.equal(hdrCapabilities, other.hdrCapabilities)
                 && logicalDensityDpi == other.logicalDensityDpi
                 && physicalXDpi == other.physicalXDpi
                 && physicalYDpi == other.physicalYDpi
@@ -332,6 +336,7 @@
         defaultColorTransformId = other.defaultColorTransformId;
         supportedColorTransforms = Arrays.copyOf(
                 other.supportedColorTransforms, other.supportedColorTransforms.length);
+        hdrCapabilities = other.hdrCapabilities;
         logicalDensityDpi = other.logicalDensityDpi;
         physicalXDpi = other.physicalXDpi;
         physicalYDpi = other.physicalYDpi;
@@ -375,6 +380,7 @@
         for (int i = 0; i < nColorTransforms; i++) {
             supportedColorTransforms[i] = Display.ColorTransform.CREATOR.createFromParcel(source);
         }
+        hdrCapabilities = source.readParcelable(null);
         logicalDensityDpi = source.readInt();
         physicalXDpi = source.readFloat();
         physicalYDpi = source.readFloat();
@@ -418,6 +424,7 @@
         for (int i = 0; i < supportedColorTransforms.length; i++) {
             supportedColorTransforms[i].writeToParcel(dest, flags);
         }
+        dest.writeParcelable(hdrCapabilities, flags);
         dest.writeInt(logicalDensityDpi);
         dest.writeFloat(physicalXDpi);
         dest.writeFloat(physicalYDpi);
@@ -614,6 +621,8 @@
         sb.append(defaultColorTransformId);
         sb.append(", supportedColorTransforms ");
         sb.append(Arrays.toString(supportedColorTransforms));
+        sb.append(", hdrCapabilities ");
+        sb.append(hdrCapabilities);
         sb.append(", rotation ");
         sb.append(rotation);
         sb.append(", density ");
diff --git a/core/java/android/view/DisplayListCanvas.java b/core/java/android/view/DisplayListCanvas.java
index 415c291..cb7c5a2 100644
--- a/core/java/android/view/DisplayListCanvas.java
+++ b/core/java/android/view/DisplayListCanvas.java
@@ -37,6 +37,8 @@
     // view hierarchy because display lists are generated recursively.
     private static final int POOL_LIMIT = 25;
 
+    private static final int MAX_BITMAP_SIZE = 100 * 1024 * 1024; // 100 MB
+
     private static final SynchronizedPool<DisplayListCanvas> sPool =
             new SynchronizedPool<DisplayListCanvas>(POOL_LIMIT);
 
@@ -249,4 +251,14 @@
 
     private static native void nDrawRoundRect(long renderer, long propLeft, long propTop,
             long propRight, long propBottom, long propRx, long propRy, long propPaint);
+
+    @Override
+    protected void throwIfCannotDraw(Bitmap bitmap) {
+        super.throwIfCannotDraw(bitmap);
+        int bitmapSize = bitmap.getByteCount();
+        if (bitmapSize > MAX_BITMAP_SIZE) {
+            throw new RuntimeException(
+                    "Canvas: trying to draw too large(" + bitmapSize + "bytes) bitmap.");
+        }
+    }
 }
diff --git a/core/java/android/view/SurfaceControl.java b/core/java/android/view/SurfaceControl.java
index dc9014b..7b01267 100644
--- a/core/java/android/view/SurfaceControl.java
+++ b/core/java/android/view/SurfaceControl.java
@@ -88,6 +88,7 @@
     private static native void nativeSetOverrideScalingMode(long nativeObject,
             int scalingMode);
     private static native IBinder nativeGetHandle(long nativeObject);
+    private static native Display.HdrCapabilities nativeGetHdrCapabilities(IBinder displayToken);
 
 
     private final CloseGuard mCloseGuard = CloseGuard.get();
@@ -656,6 +657,13 @@
         nativeSetDisplaySize(displayToken, width, height);
     }
 
+    public static Display.HdrCapabilities getHdrCapabilities(IBinder displayToken) {
+        if (displayToken == null) {
+            throw new IllegalArgumentException("displayToken must not be null");
+        }
+        return nativeGetHdrCapabilities(displayToken);
+    }
+
     public static IBinder createDisplay(String name, boolean secure) {
         if (name == null) {
             throw new IllegalArgumentException("name must not be null");
diff --git a/core/java/android/view/ThreadedRenderer.java b/core/java/android/view/ThreadedRenderer.java
index 34110df..9c6e6b7 100644
--- a/core/java/android/view/ThreadedRenderer.java
+++ b/core/java/android/view/ThreadedRenderer.java
@@ -909,7 +909,7 @@
         nSerializeDisplayListTree(mNativeProxy);
     }
 
-    public static boolean copySurfaceInto(Surface surface, Bitmap bitmap) {
+    public static int copySurfaceInto(Surface surface, Bitmap bitmap) {
         return nCopySurfaceInto(surface, bitmap);
     }
 
@@ -1051,5 +1051,5 @@
     private static native long nAddFrameMetricsObserver(long nativeProxy, FrameMetricsObserver observer);
     private static native void nRemoveFrameMetricsObserver(long nativeProxy, long nativeObserver);
 
-    private static native boolean nCopySurfaceInto(Surface surface, Bitmap bitmap);
+    private static native int nCopySurfaceInto(Surface surface, Bitmap bitmap);
 }
diff --git a/core/java/android/view/View.java b/core/java/android/view/View.java
index eb895ff..4e7d1914 100644
--- a/core/java/android/view/View.java
+++ b/core/java/android/view/View.java
@@ -3071,6 +3071,13 @@
     /**
      * @hide
      *
+     * Whether the TV's picture-in-picture is visible or not.
+     */
+    public static final int TV_PICTURE_IN_PICTURE_VISIBLE = 0x00010000;
+
+    /**
+     * @hide
+     *
      * Makes navigation bar transparent (but not the status bar).
      */
     public static final int NAVIGATION_BAR_TRANSPARENT = 0x00008000;
@@ -3899,7 +3906,6 @@
      * cleanup.
      */
     final RenderNode mRenderNode;
-    private Runnable mRenderNodeDetachedCallback;
 
     /**
      * Set to true when the view is sending hover accessibility events because it
@@ -5743,9 +5749,9 @@
      * view-relative coordinate.
      *
      * @param x the X coordinate in pixels relative to the view to which the
-     *          menu should be anchored
+     *          menu should be anchored, or {@link Float#NaN} to disable anchoring
      * @param y the Y coordinate in pixels relative to the view to which the
-     *          menu should be anchored
+     *          menu should be anchored, or {@link Float#NaN} to disable anchoring
      * @return {@code true} if the context menu was shown, {@code false}
      *         otherwise
      */
@@ -16058,20 +16064,6 @@
      * @hide
      */
     public void onRenderNodeDetached(RenderNode renderNode) {
-        if (renderNode == mRenderNode && mRenderNodeDetachedCallback != null) {
-            mRenderNodeDetachedCallback.run();
-        }
-    }
-
-    /**
-     * Set callback for functor detach. Exposed to WebView through WebViewDelegate.
-     * Should not be used otherwise.
-     * @hide
-     */
-    public final Runnable setRenderNodeDetachedCallback(@Nullable Runnable callback) {
-        Runnable oldCallback = mRenderNodeDetachedCallback;
-        mRenderNodeDetachedCallback = callback;
-        return oldCallback;
     }
 
     /**
diff --git a/core/java/android/view/ViewParent.java b/core/java/android/view/ViewParent.java
index 06afef2..849c8b9 100644
--- a/core/java/android/view/ViewParent.java
+++ b/core/java/android/view/ViewParent.java
@@ -199,9 +199,11 @@
      * @param originalView the source view where the context menu was first
      *                     invoked
      * @param x the X coordinate in pixels relative to the original view to
-     *          which the menu should be anchored
+     *          which the menu should be anchored, or {@link Float#NaN} to
+     *          disable anchoring
      * @param y the Y coordinate in pixels relative to the original view to
-     *          which the menu should be anchored
+     *          which the menu should be anchored, or {@link Float#NaN} to
+     *          disable anchoring
      * @return {@code true} if the context menu was shown, {@code false}
      *         otherwise
      */
diff --git a/core/java/android/view/ViewRootImpl.java b/core/java/android/view/ViewRootImpl.java
index 9e4f26f..edf05ba 100644
--- a/core/java/android/view/ViewRootImpl.java
+++ b/core/java/android/view/ViewRootImpl.java
@@ -389,6 +389,8 @@
     /** Set to true once doDie() has been called. */
     private boolean mRemoved;
 
+    private boolean mNeedsHwRendererSetup;
+
     /**
      * Consistency verifier for debugging purposes.
      */
@@ -514,6 +516,34 @@
     }
 
     /**
+     * Notifies us that our child has been rebuilt, following
+     * a window preservation operation. In these cases we
+     * keep the same DecorView, but the activity controlling it
+     * is a different instance, and we need to update our
+     * callbacks.
+     *
+     * @hide
+     */
+    public void notifyChildRebuilt() {
+        if (mView instanceof RootViewSurfaceTaker) {
+            mSurfaceHolderCallback =
+                ((RootViewSurfaceTaker)mView).willYouTakeTheSurface();
+            if (mSurfaceHolderCallback != null) {
+                mSurfaceHolder = new TakenSurfaceHolder();
+                mSurfaceHolder.setFormat(PixelFormat.UNKNOWN);
+            } else {
+                mSurfaceHolder = null;
+            }
+
+            mInputQueueCallback =
+                ((RootViewSurfaceTaker)mView).willYouTakeTheInputQueue();
+            if (mInputQueueCallback != null) {
+                mInputQueueCallback.onInputQueueCreated(mInputQueue);
+            }
+        }
+    }
+
+    /**
      * We have one child
      */
     public void setView(View view, WindowManager.LayoutParams attrs, View panelParentView) {
@@ -887,6 +917,11 @@
                 mWindowAttributes.surfaceInsets.set(
                         oldInsetLeft, oldInsetTop, oldInsetRight, oldInsetBottom);
                 mWindowAttributes.hasManualSurfaceInsets = oldHasManualSurfaceInsets;
+            } else if (mWindowAttributes.surfaceInsets.left != oldInsetLeft
+                    || mWindowAttributes.surfaceInsets.top != oldInsetTop
+                    || mWindowAttributes.surfaceInsets.right != oldInsetRight
+                    || mWindowAttributes.surfaceInsets.bottom != oldInsetBottom) {
+                mNeedsHwRendererSetup = true;
             }
 
             applyKeepScreenOnFlag(mWindowAttributes);
@@ -1645,6 +1680,8 @@
         boolean insetsPending = false;
         int relayoutResult = 0;
 
+        final int surfaceGenerationId = mSurface.getGenerationId();
+
         final boolean isViewVisible = viewVisibility == View.VISIBLE;
         if (mFirst || windowShouldResize || insetsChanged ||
                 viewVisibilityChanged || params != null || mForceNextWindowRelayout) {
@@ -1689,7 +1726,6 @@
                     }
                     mChoreographer.mFrameInfo.addFlags(FrameInfo.FLAG_WINDOW_LAYOUT_CHANGED);
                 }
-                final int surfaceGenerationId = mSurface.getGenerationId();
                 relayoutResult = relayoutWindow(params, viewVisibility, insetsPending);
 
                 if (DEBUG_LAYOUT) Log.v(mTag, "relayout: frame=" + frame.toShortString()
@@ -1883,7 +1919,7 @@
                 mSurfaceHolder.setSurfaceFrameSize(mWidth, mHeight);
                 mSurfaceHolder.mSurfaceLock.unlock();
                 if (mSurface.isValid()) {
-                    if (!hadSurface) {
+                    if (!hadSurface || surfaceGenerationId != mSurface.getGenerationId()) {
                         mSurfaceHolder.ungetCallbacks();
 
                         mIsCreating = true;
@@ -1930,9 +1966,11 @@
             if (hardwareRenderer != null && hardwareRenderer.isEnabled()) {
                 if (hwInitialized
                         || mWidth != hardwareRenderer.getWidth()
-                        || mHeight != hardwareRenderer.getHeight()) {
+                        || mHeight != hardwareRenderer.getHeight()
+                        || mNeedsHwRendererSetup) {
                     hardwareRenderer.setup(mWidth, mHeight, mAttachInfo,
                             mWindowAttributes.surfaceInsets);
+                    mNeedsHwRendererSetup = false;
                 }
             }
 
diff --git a/core/java/android/view/Window.java b/core/java/android/view/Window.java
index e3abb5d..85c16b8 100644
--- a/core/java/android/view/Window.java
+++ b/core/java/android/view/Window.java
@@ -24,6 +24,7 @@
 import android.annotation.Nullable;
 import android.annotation.StyleRes;
 import android.annotation.SystemApi;
+import android.app.ActivityManagerNative;
 import android.content.Context;
 import android.content.res.Configuration;
 import android.content.res.Resources;
@@ -592,6 +593,12 @@
          */
         void exitFreeformMode() throws RemoteException;
 
+        /**
+         * Puts the activity in picture-in-picture mode if the activity supports.
+         * @see android.R.attr#supportsPictureInPicture
+         */
+        void enterPictureInPictureModeIfPossible();
+
         /** Returns the current stack Id for the window. */
         int getWindowStackId() throws RemoteException;
     }
diff --git a/core/java/android/view/WindowManagerInternal.java b/core/java/android/view/WindowManagerInternal.java
index 3ad730b..4b188c4 100644
--- a/core/java/android/view/WindowManagerInternal.java
+++ b/core/java/android/view/WindowManagerInternal.java
@@ -54,13 +54,12 @@
     public interface MagnificationCallbacks {
 
         /**
-         * Called when the bounds of the screen content that is magnified changed.
-         * Note that not the entire screen is magnified.
+         * Called when the region where magnification operates changes. Note that this isn't the
+         * entire screen. For example, IMEs are not magnified.
          *
-         * @param magnifiedBounds the currently magnified region
-         * @param availableBounds the region available for magnification
+         * @param magnificationRegion the current magnification region
          */
-        public void onMagnifiedBoundsChanged(Region magnifiedBounds, Region availableBounds);
+        public void onMagnificationRegionChanged(Region magnificationRegion);
 
         /**
          * Called when an application requests a rectangle on the screen to allow
@@ -158,13 +157,11 @@
     public abstract void setMagnificationSpec(MagnificationSpec spec);
 
     /**
-     * Obtains the magnified and available regions.
+     * Obtains the magnification regions.
      *
-     * @param outMagnified the currently magnified region
-     * @param outAvailable the region available for magnification
+     * @param magnificationRegion the current magnification region
      */
-    public abstract void getMagnificationRegions(@NonNull Region outMagnified,
-            @NonNull Region outAvailable);
+    public abstract void getMagnificationRegion(@NonNull Region magnificationRegion);
 
     /**
      * Gets the magnification and translation applied to a window given its token.
diff --git a/core/java/android/webkit/WebChromeClient.java b/core/java/android/webkit/WebChromeClient.java
index 4737e9b..2d3b6ab 100644
--- a/core/java/android/webkit/WebChromeClient.java
+++ b/core/java/android/webkit/WebChromeClient.java
@@ -284,6 +284,13 @@
      * currently set for that origin. The host application should invoke the
      * specified callback with the desired permission state. See
      * {@link GeolocationPermissions} for details.
+     *
+     * <p>Note that for applications targeting Android N and later SDKs
+     * (API level > {@link android.os.Build.VERSION_CODES#M})
+     * this method is only called for requests originating from secure
+     * origins such as https. On non-secure origins geolocation requests
+     * are automatically denied.</p>
+     *
      * @param origin The origin of the web content attempting to use the
      *               Geolocation API.
      * @param callback The callback to use to set the permission state for the
diff --git a/core/java/android/webkit/WebSettings.java b/core/java/android/webkit/WebSettings.java
index 9595db2..49effe4 100644
--- a/core/java/android/webkit/WebSettings.java
+++ b/core/java/android/webkit/WebSettings.java
@@ -16,9 +16,15 @@
 
 package android.webkit;
 
+import android.annotation.IntDef;
 import android.annotation.SystemApi;
 import android.content.Context;
 
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
 /**
  * Manages settings state for a WebView. When a WebView is first created, it
  * obtains a set of default settings. These default settings will be returned
@@ -1362,18 +1368,32 @@
     public abstract boolean getOffscreenPreRaster();
 
     /**
+     * @hide
+     */
+    @IntDef(flag = true,
+            value = {
+                    MENU_ITEM_NONE,
+                    MENU_ITEM_SHARE,
+                    MENU_ITEM_WEB_SEARCH,
+                    MENU_ITEM_PROCESS_TEXT
+            })
+    @Retention(RetentionPolicy.SOURCE)
+    @Target({ElementType.PARAMETER, ElementType.METHOD})
+    private @interface MenuItemFlags {}
+
+    /**
      * Disables the action mode menu items according to {@code menuItems} flag.
      * @param menuItems an integer field flag for the menu items to be disabled.
      */
-    public abstract void setDisabledActionModeMenuItems(int menuItems);
+    public abstract void setDisabledActionModeMenuItems(@MenuItemFlags int menuItems);
 
     /**
      * Gets the action mode menu items that are disabled, expressed in an integer field flag.
      * The default value is {@link #MENU_ITEM_NONE}
      *
-     * @return all the disabled menu item flags combined with OR.
+     * @return all the disabled menu item flags combined with bitwise OR.
      */
-    public abstract int getDisabledActionModeMenuItems();
+    public abstract @MenuItemFlags int getDisabledActionModeMenuItems();
 
     /**
      * Used with {@link #setDisabledActionModeMenuItems}.
diff --git a/core/java/android/webkit/WebView.java b/core/java/android/webkit/WebView.java
index ada7731..f54edf1 100644
--- a/core/java/android/webkit/WebView.java
+++ b/core/java/android/webkit/WebView.java
@@ -255,6 +255,16 @@
  * is loading.
  * </p>
  *
+ * <h3>HTML5 Geolocation API support</h3>
+ *
+ * <p>For applications targeting Android N and later releases
+ * (API level > {@link android.os.Build.VERSION_CODES#M}) the geolocation api is only supported on
+ * secure origins such as https. For such applications requests to geolocation api on non-secure
+ * origins are automatically denied without invoking the corresponding
+ * {@link WebChromeClient#onGeolocationPermissionsShowPrompt(String, GeolocationPermissions.Callback)}
+ * method.
+ * </p>
+ *
  * <h3>Layout size</h3>
  * <p>
  * It is recommended to set the WebView layout height to a fixed value or to
diff --git a/core/java/android/webkit/WebViewDelegate.java b/core/java/android/webkit/WebViewDelegate.java
index 85d7cd0..9e73af2 100644
--- a/core/java/android/webkit/WebViewDelegate.java
+++ b/core/java/android/webkit/WebViewDelegate.java
@@ -131,24 +131,6 @@
     }
 
     /**
-     * Set the Runnable callback the DrawGlFunction functor is detached and free to be destroyed.
-     * This will replace the previous callback, if any.
-     *
-     * @param view The view to set the callback. Should be the view where onDraw inserted
-     *        DrawGLFunctor.
-     * @param callback The new callback to set on the view.
-     * @throws IllegalArgumentException if view is null.
-     * @return The previous callback on this view.
-     */
-    public Runnable setDrawGlFunctionDetachedCallback(
-        @NonNull View view, @Nullable Runnable callback) {
-        if (view == null) {
-            throw new IllegalArgumentException("View cannot be null");
-        }
-        return view.setRenderNodeDetachedCallback(callback);
-    }
-
-    /**
      * Detaches the draw GL functor.
      *
      * @param nativeDrawGLFunctor the pointer to the native functor that implements
diff --git a/core/java/android/webkit/WebViewFactory.java b/core/java/android/webkit/WebViewFactory.java
index f13cbae..5db0f16 100644
--- a/core/java/android/webkit/WebViewFactory.java
+++ b/core/java/android/webkit/WebViewFactory.java
@@ -216,7 +216,7 @@
         }
         if (chosen.versionCode > toUse.versionCode) {
             throw new MissingWebViewPackageException("Failed to verify WebView provider, "
-                    + "version code mismatch, expected: " + chosen.versionCode
+                    + "version code is lower than expected: " + chosen.versionCode
                     + " actual: " + toUse.versionCode);
         }
         if (getWebViewLibrary(toUse.applicationInfo) == null) {
diff --git a/core/java/android/widget/AbsSpinner.java b/core/java/android/widget/AbsSpinner.java
index 1cb7f2a..18db54e 100644
--- a/core/java/android/widget/AbsSpinner.java
+++ b/core/java/android/widget/AbsSpinner.java
@@ -356,10 +356,18 @@
                     return mFirstPosition + i;
                 }
             }
-        } 
+        }
         return INVALID_POSITION;
     }
-    
+
+    @Override
+    protected void dispatchRestoreInstanceState(SparseArray<Parcelable> container) {
+        super.dispatchRestoreInstanceState(container);
+        // Restores the selected position when Spinner gets restored,
+        // rather than wait until the next measure/layout pass to do it.
+        handleDataChanged();
+    }
+
     static class SavedState extends BaseSavedState {
         long selectedId;
         int position;
diff --git a/core/java/android/widget/AdapterView.java b/core/java/android/widget/AdapterView.java
index 6ed7ab8..2cfefba 100644
--- a/core/java/android/widget/AdapterView.java
+++ b/core/java/android/widget/AdapterView.java
@@ -815,7 +815,6 @@
     @Override
     protected void dispatchRestoreInstanceState(SparseArray<Parcelable> container) {
         dispatchThawSelfOnly(container);
-        handleDataChanged();
     }
 
     class AdapterDataSetObserver extends DataSetObserver {
diff --git a/core/java/android/widget/CheckedTextView.java b/core/java/android/widget/CheckedTextView.java
index df506ca..21595d15 100644
--- a/core/java/android/widget/CheckedTextView.java
+++ b/core/java/android/widget/CheckedTextView.java
@@ -185,11 +185,12 @@
             d.setCallback(this);
             d.setVisible(getVisibility() == VISIBLE, false);
             d.setState(CHECKED_STATE_SET);
-            setMinHeight(d.getIntrinsicHeight());
 
+            // Record the intrinsic dimensions when in "checked" state.
+            setMinHeight(d.getIntrinsicHeight());
             mCheckMarkWidth = d.getIntrinsicWidth();
+
             d.setState(getDrawableState());
-            applyCheckMarkTint();
         } else {
             mCheckMarkWidth = 0;
         }
@@ -197,6 +198,8 @@
         mCheckMarkDrawable = d;
         mCheckMarkResource = resId;
 
+        applyCheckMarkTint();
+
         // Do padding resolution. This will call internalSetPadding() and do a
         // requestLayout() if needed.
         resolvePadding();
diff --git a/core/java/android/widget/EditText.java b/core/java/android/widget/EditText.java
index ad35550..24d8618 100644
--- a/core/java/android/widget/EditText.java
+++ b/core/java/android/widget/EditText.java
@@ -149,26 +149,4 @@
             info.addAction(AccessibilityNodeInfo.AccessibilityAction.ACTION_SET_TEXT);
         }
     }
-
-    /** @hide */
-    @Override
-    public boolean performAccessibilityActionInternal(int action, Bundle arguments) {
-        switch (action) {
-            case AccessibilityNodeInfo.ACTION_SET_TEXT: {
-                if (!isEnabled()) {
-                    return false;
-                }
-                CharSequence text = (arguments != null) ? arguments.getCharSequence(
-                        AccessibilityNodeInfo.ACTION_ARGUMENT_SET_TEXT_CHARSEQUENCE) : null;
-                setText(text);
-                if (text != null && text.length() > 0) {
-                    setSelection(text.length());
-                }
-                return true;
-            }
-            default: {
-                return super.performAccessibilityActionInternal(action, arguments);
-            }
-        }
-    }
 }
diff --git a/core/java/android/widget/ListView.java b/core/java/android/widget/ListView.java
index bfc87f2..bb1ffcb 100644
--- a/core/java/android/widget/ListView.java
+++ b/core/java/android/widget/ListView.java
@@ -1308,7 +1308,7 @@
 
         // Include the padding of the list
         int returnedHeight = mListPadding.top + mListPadding.bottom;
-        final int dividerHeight = ((mDividerHeight > 0) && mDivider != null) ? mDividerHeight : 0;
+        final int dividerHeight = mDividerHeight;
         // The previous height value that was less than maxHeight and contained
         // no partial children
         int prevHeightWithoutPartialChild = 0;
diff --git a/core/java/android/widget/TextView.java b/core/java/android/widget/TextView.java
index 3216fba..26697f9 100644
--- a/core/java/android/widget/TextView.java
+++ b/core/java/android/widget/TextView.java
@@ -9203,8 +9203,11 @@
                 CharSequence text = (arguments != null) ? arguments.getCharSequence(
                         AccessibilityNodeInfo.ACTION_ARGUMENT_SET_TEXT_CHARSEQUENCE) : null;
                 setText(text);
-                if (text != null && text.length() > 0) {
-                    Selection.setSelection((Spannable) mText, text.length());
+                if (mText != null) {
+                    int updatedTextLength = mText.length();
+                    if (updatedTextLength > 0) {
+                        Selection.setSelection((Spannable) mText, updatedTextLength);
+                    }
                 }
             } return true;
             default: {
diff --git a/core/java/android/widget/TimePickerClockDelegate.java b/core/java/android/widget/TimePickerClockDelegate.java
index b6200a1..c21f1df 100644
--- a/core/java/android/widget/TimePickerClockDelegate.java
+++ b/core/java/android/widget/TimePickerClockDelegate.java
@@ -38,6 +38,7 @@
 import android.view.accessibility.AccessibilityEvent;
 import android.view.accessibility.AccessibilityNodeInfo;
 import android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction;
+import android.widget.RadialTimePickerView.OnValueSelectedListener;
 
 import com.android.internal.R;
 import com.android.internal.widget.NumericTextView;
@@ -48,8 +49,7 @@
 /**
  * A delegate implementing the radial clock-based TimePicker.
  */
-class TimePickerClockDelegate extends TimePicker.AbstractTimePickerDelegate implements
-        RadialTimePickerView.OnValueSelectedListener {
+class TimePickerClockDelegate extends TimePicker.AbstractTimePickerDelegate {
     /**
      * Delay in milliseconds before valid but potentially incomplete, for
      * example "1" but not "12", keyboard edits are propagated from the
@@ -88,8 +88,8 @@
 
     private boolean mIsEnabled = true;
     private boolean mAllowAutoAdvance;
-    private int mInitialHourOfDay;
-    private int mInitialMinute;
+    private int mCurrentHour;
+    private int mCurrentMinute;
     private boolean mIs24Hour;
     private boolean mIsAmPmAtStart;
 
@@ -189,8 +189,7 @@
 
         mRadialTimePickerView = (RadialTimePickerView) mainView.findViewById(R.id.radial_picker);
         mRadialTimePickerView.applyAttributes(attrs, defStyleAttr, defStyleRes);
-
-        setupListeners();
+        mRadialTimePickerView.setOnValueSelectedListener(mOnValueSelectedListener);
 
         mAllowAutoAdvance = true;
 
@@ -324,28 +323,24 @@
     }
 
     private void initialize(int hourOfDay, int minute, boolean is24HourView, int index) {
-        mInitialHourOfDay = hourOfDay;
-        mInitialMinute = minute;
+        mCurrentHour = hourOfDay;
+        mCurrentMinute = minute;
         mIs24Hour = is24HourView;
         updateUI(index);
     }
 
-    private void setupListeners() {
-        mRadialTimePickerView.setOnValueSelectedListener(this);
-    }
-
     private void updateUI(int index) {
         updateHeaderAmPm();
-        updateHeaderHour(mInitialHourOfDay, false);
+        updateHeaderHour(mCurrentHour, false);
         updateHeaderSeparator();
-        updateHeaderMinute(mInitialMinute, false);
+        updateHeaderMinute(mCurrentMinute, false);
         updateRadialPicker(index);
 
         mDelegator.invalidate();
     }
 
     private void updateRadialPicker(int index) {
-        mRadialTimePickerView.initialize(mInitialHourOfDay, mInitialMinute, mIs24Hour);
+        mRadialTimePickerView.initialize(mCurrentHour, mCurrentMinute, mIs24Hour);
         setCurrentItemShowing(index, false, true);
     }
 
@@ -358,7 +353,7 @@
             final boolean isAmPmAtStart = dateTimePattern.startsWith("a");
             setAmPmAtStart(isAmPmAtStart);
 
-            updateAmPmLabelStates(mInitialHourOfDay < 12 ? AM : PM);
+            updateAmPmLabelStates(mCurrentHour < 12 ? AM : PM);
         }
     }
 
@@ -388,15 +383,25 @@
      */
     @Override
     public void setHour(int hour) {
-        if (mInitialHourOfDay != hour) {
-            mInitialHourOfDay = hour;
-            updateHeaderHour(hour, true);
-            updateHeaderAmPm();
-            mRadialTimePickerView.setCurrentHour(hour);
-            mRadialTimePickerView.setAmOrPm(mInitialHourOfDay < 12 ? AM : PM);
-            mDelegator.invalidate();
-            onTimeChanged();
+        setHourInternal(hour, false, true);
+    }
+
+    private void setHourInternal(int hour, boolean isFromPicker, boolean announce) {
+        if (mCurrentHour == hour) {
+            return;
         }
+
+        mCurrentHour = hour;
+        updateHeaderHour(hour, announce);
+        updateHeaderAmPm();
+
+        if (!isFromPicker) {
+            mRadialTimePickerView.setCurrentHour(hour);
+            mRadialTimePickerView.setAmOrPm(hour < 12 ? AM : PM);
+        }
+
+        mDelegator.invalidate();
+        onTimeChanged();
     }
 
     /**
@@ -421,13 +426,23 @@
      */
     @Override
     public void setMinute(int minute) {
-        if (mInitialMinute != minute) {
-            mInitialMinute = minute;
-            updateHeaderMinute(minute, true);
-            mRadialTimePickerView.setCurrentMinute(minute);
-            mDelegator.invalidate();
-            onTimeChanged();
+        setMinuteInternal(minute, false);
+    }
+
+    private void setMinuteInternal(int minute, boolean isFromPicker) {
+        if (mCurrentMinute == minute) {
+            return;
         }
+
+        mCurrentMinute = minute;
+        updateHeaderMinute(minute, true);
+
+        if (!isFromPicker) {
+            mRadialTimePickerView.setCurrentMinute(minute);
+        }
+
+        mDelegator.invalidate();
+        onTimeChanged();
     }
 
     /**
@@ -448,7 +463,7 @@
     public void setIs24Hour(boolean is24Hour) {
         if (mIs24Hour != is24Hour) {
             mIs24Hour = is24Hour;
-            mInitialHourOfDay = getHour();
+            mCurrentHour = getHour();
 
             updateHourFormat();
             updateUI(mRadialTimePickerView.getCurrentItemShowing());
@@ -563,34 +578,6 @@
     }
 
     /**
-     * Called by the picker for updating the header display.
-     */
-    @Override
-    public void onValueSelected(int pickerIndex, int newValue, boolean autoAdvance) {
-        switch (pickerIndex) {
-            case HOUR_INDEX:
-                if (mAllowAutoAdvance && autoAdvance) {
-                    updateHeaderHour(newValue, false);
-                    setCurrentItemShowing(MINUTE_INDEX, true, false);
-                    mDelegator.announceForAccessibility(newValue + ". " + mSelectMinutes);
-                } else {
-                    updateHeaderHour(newValue, true);
-                }
-                break;
-            case MINUTE_INDEX:
-                updateHeaderMinute(newValue, true);
-                break;
-            case AMPM_INDEX:
-                updateAmPmLabelStates(newValue);
-                break;
-        }
-
-        if (mOnTimeChangedListener != null) {
-            mOnTimeChangedListener.onTimeChanged(mDelegator, getHour(), getMinute());
-        }
-    }
-
-    /**
      * Converts hour-of-day (0-23) time into a localized hour number.
      * <p>
      * The localized value may be in the range (0-23), (1-24), (0-11), or
@@ -702,11 +689,43 @@
     private void setAmOrPm(int amOrPm) {
         updateAmPmLabelStates(amOrPm);
 
-        if (mRadialTimePickerView.setAmOrPm(amOrPm) && mOnTimeChangedListener != null) {
-            mOnTimeChangedListener.onTimeChanged(mDelegator, getHour(), getMinute());
+        if (mRadialTimePickerView.setAmOrPm(amOrPm)) {
+            mCurrentHour = getHour();
+
+            if (mOnTimeChangedListener != null) {
+                mOnTimeChangedListener.onTimeChanged(mDelegator, getHour(), getMinute());
+            }
         }
     }
 
+    /** Listener for RadialTimePickerView interaction. */
+    private final OnValueSelectedListener mOnValueSelectedListener = new OnValueSelectedListener() {
+        @Override
+        public void onValueSelected(int pickerIndex, int newValue, boolean autoAdvance) {
+            switch (pickerIndex) {
+                case HOUR_INDEX:
+                    final boolean isTransition = mAllowAutoAdvance && autoAdvance;
+                    setHourInternal(newValue, true, !isTransition);
+                    if (isTransition) {
+                        setCurrentItemShowing(MINUTE_INDEX, true, false);
+                        mDelegator.announceForAccessibility(newValue + ". " + mSelectMinutes);
+                    }
+                    break;
+                case MINUTE_INDEX:
+                    setMinuteInternal(newValue, true);
+                    break;
+                case AMPM_INDEX:
+                    updateAmPmLabelStates(newValue);
+                    break;
+            }
+
+            if (mOnTimeChangedListener != null) {
+                mOnTimeChangedListener.onTimeChanged(mDelegator, getHour(), getMinute());
+            }
+        }
+    };
+
+    /** Listener for keyboard interaction. */
     private final OnValueChangedListener mDigitEnteredListener = new OnValueChangedListener() {
         @Override
         public void onValueChanged(NumericTextView view, int value,
diff --git a/core/java/com/android/internal/app/IBatteryStats.aidl b/core/java/com/android/internal/app/IBatteryStats.aidl
index a2a135b..42b89d5 100644
--- a/core/java/com/android/internal/app/IBatteryStats.aidl
+++ b/core/java/com/android/internal/app/IBatteryStats.aidl
@@ -122,7 +122,8 @@
     void noteNetworkInterfaceType(String iface, int type);
     void noteNetworkStatsEnabled();
     void noteDeviceIdleMode(int mode, String activeReason, int activeUid);
-    void setBatteryState(int status, int health, int plugType, int level, int temp, int volt);
+    void setBatteryState(int status, int health, int plugType, int level, int temp, int volt,
+            int chargeCount);
     long getAwakeTimeBattery();
     long getAwakeTimePlugged();
 
diff --git a/core/java/com/android/internal/app/WindowDecorActionBar.java b/core/java/com/android/internal/app/WindowDecorActionBar.java
index c6bf1b4..a09dbe5 100644
--- a/core/java/com/android/internal/app/WindowDecorActionBar.java
+++ b/core/java/com/android/internal/app/WindowDecorActionBar.java
@@ -505,6 +505,9 @@
         mContextView.killMode();
         ActionModeImpl mode = new ActionModeImpl(mContextView.getContext(), callback);
         if (mode.dispatchOnCreate()) {
+            // This needs to be set before invalidate() so that it calls
+            // onPrepareActionMode()
+            mActionMode = mode;
             mode.invalidate();
             mContextView.initForMode(mode);
             animateToMode(true);
@@ -518,7 +521,6 @@
                 }
             }
             mContextView.sendAccessibilityEvent(AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED);
-            mActionMode = mode;
             return mode;
         }
         return null;
diff --git a/core/java/com/android/internal/content/PackageMonitor.java b/core/java/com/android/internal/content/PackageMonitor.java
index 7bd64e5..c6b6a7fb 100644
--- a/core/java/com/android/internal/content/PackageMonitor.java
+++ b/core/java/com/android/internal/content/PackageMonitor.java
@@ -45,6 +45,7 @@
         sPackageFilt.addAction(Intent.ACTION_PACKAGE_CHANGED);
         sPackageFilt.addAction(Intent.ACTION_QUERY_PACKAGE_RESTART);
         sPackageFilt.addAction(Intent.ACTION_PACKAGE_RESTARTED);
+        sPackageFilt.addAction(Intent.ACTION_PACKAGE_DATA_CLEARED);
         sPackageFilt.addDataScheme("package");
         sNonDataFilt.addAction(Intent.ACTION_UID_REMOVED);
         sNonDataFilt.addAction(Intent.ACTION_USER_STOPPED);
@@ -275,6 +276,9 @@
     public void onFinishPackageChanges() {
     }
 
+    public void onPackageDataCleared(String packageName, int uid) {
+    }
+
     public int getChangingUserId() {
         return mChangeUserId;
     }
@@ -365,6 +369,12 @@
                 }
                 onPackageModified(pkg);
             }
+        } else if (Intent.ACTION_PACKAGE_DATA_CLEARED.equals(action)) {
+            String pkg = getPackageName(intent);
+            int uid = intent.getIntExtra(Intent.EXTRA_UID, 0);
+            if (pkg != null) {
+                onPackageDataCleared(pkg, uid);
+            }
         } else if (Intent.ACTION_QUERY_PACKAGE_RESTART.equals(action)) {
             mDisappearingPackages = intent.getStringArrayExtra(Intent.EXTRA_PACKAGES);
             mChangeType = PACKAGE_TEMPORARY_CHANGE;
diff --git a/core/java/com/android/internal/os/BatteryStatsImpl.java b/core/java/com/android/internal/os/BatteryStatsImpl.java
index e69ed35..654a4f1 100644
--- a/core/java/com/android/internal/os/BatteryStatsImpl.java
+++ b/core/java/com/android/internal/os/BatteryStatsImpl.java
@@ -108,7 +108,7 @@
     private static final int MAGIC = 0xBA757475; // 'BATSTATS'
 
     // Current on-disk Parcel version
-    private static final int VERSION = 142 + (USE_OLD_HISTORY ? 1000 : 0);
+    private static final int VERSION = 144 + (USE_OLD_HISTORY ? 1000 : 0);
 
     // Maximum number of items we will record in the history.
     private static final int MAX_HISTORY_ITEMS = 2000;
@@ -150,6 +150,13 @@
         public void batterySendBroadcast(Intent intent);
     }
 
+    public interface PlatformIdleStateCallback {
+        public String getPlatformLowPowerStats();
+    }
+
+    private final PlatformIdleStateCallback mPlatformIdleStateCallback;
+
+
     final class MyHandler extends Handler {
         public MyHandler(Looper looper) {
             super(looper, null, true);
@@ -569,6 +576,7 @@
         mDailyFile = null;
         mHandler = null;
         mExternalSync = null;
+        mPlatformIdleStateCallback = null;
         clearHistoryLocked();
     }
 
@@ -2081,27 +2089,111 @@
         tag.poolIdx = index;
     }
 
+    /*
+        The history delta format uses flags to denote further data in subsequent ints in the parcel.
+
+        There is always the first token, which may contain the delta time, or an indicator of
+        the length of the time (int or long) following this token.
+
+        First token: always present,
+        31              23              15               7             0
+        █M|L|K|J|I|H|G|F█E|D|C|B|A|T|T|T█T|T|T|T|T|T|T|T█T|T|T|T|T|T|T|T█
+
+        T: the delta time if it is <= 0x7fffd. Otherwise 0x7fffe indicates an int immediately
+           follows containing the time, and 0x7ffff indicates a long immediately follows with the
+           delta time.
+        A: battery level changed and an int follows with battery data.
+        B: state changed and an int follows with state change data.
+        C: state2 has changed and an int follows with state2 change data.
+        D: wakelock/wakereason has changed and an wakelock/wakereason struct follows.
+        E: event data has changed and an event struct follows.
+        F: battery charge in coulombs has changed and an int with the charge follows.
+        G: state flag denoting that the mobile radio was active.
+        H: state flag denoting that the wifi radio was active.
+        I: state flag denoting that a wifi scan occurred.
+        J: state flag denoting that a wifi full lock was held.
+        K: state flag denoting that the gps was on.
+        L: state flag denoting that a wakelock was held.
+        M: state flag denoting that the cpu was running.
+
+        Time int/long: if T in the first token is 0x7ffff or 0x7fffe, then an int or long follows
+        with the time delta.
+
+        Battery level int: if A in the first token is set,
+        31              23              15               7             0
+        █L|L|L|L|L|L|L|T█T|T|T|T|T|T|T|T█T|V|V|V|V|V|V|V█V|V|V|V|V|V|V|D█
+
+        D: indicates that extra history details follow.
+        V: the battery voltage.
+        T: the battery temperature.
+        L: the battery level (out of 100).
+
+        State change int: if B in the first token is set,
+        31              23              15               7             0
+        █S|S|S|H|H|H|P|P█F|E|D|C|B| | |A█ | | | | | | | █ | | | | | | | █
+
+        A: wifi multicast was on.
+        B: battery was plugged in.
+        C: screen was on.
+        D: phone was scanning for signal.
+        E: audio was on.
+        F: a sensor was active.
+
+        State2 change int: if C in the first token is set,
+        31              23              15               7             0
+        █M|L|K|J|I|H|H|G█F|E|D|C| | | | █ | | | | | | | █ |B|B|B|A|A|A|A█
+
+        A: 4 bits indicating the wifi supplicant state: {@link BatteryStats#WIFI_SUPPL_STATE_NAMES}.
+        B: 3 bits indicating the wifi signal strength: 0, 1, 2, 3, 4.
+        C: a bluetooth scan was active.
+        D: the camera was active.
+        E: bluetooth was on.
+        F: a phone call was active.
+        G: the device was charging.
+        H: 2 bits indicating the device-idle (doze) state: off, light, full
+        I: the flashlight was on.
+        J: wifi was on.
+        K: wifi was running.
+        L: video was playing.
+        M: power save mode was on.
+
+        Wakelock/wakereason struct: if D in the first token is set,
+        TODO(adamlesinski): describe wakelock/wakereason struct.
+
+        Event struct: if E in the first token is set,
+        TODO(adamlesinski): describe the event struct.
+
+        History step details struct: if D in the battery level int is set,
+        TODO(adamlesinski): describe the history step details struct.
+
+        Battery charge int: if F in the first token is set, an int representing the battery charge
+        in coulombs follows.
+     */
+
     // Part of initial delta int that specifies the time delta.
     static final int DELTA_TIME_MASK = 0x7ffff;
     static final int DELTA_TIME_LONG = 0x7ffff;   // The delta is a following long
     static final int DELTA_TIME_INT = 0x7fffe;    // The delta is a following int
     static final int DELTA_TIME_ABS = 0x7fffd;    // Following is an entire abs update.
     // Flag in delta int: a new battery level int follows.
-    static final int DELTA_BATTERY_LEVEL_FLAG   = 0x00080000;
+    static final int DELTA_BATTERY_LEVEL_FLAG               = 0x00080000;
     // Flag in delta int: a new full state and battery status int follows.
-    static final int DELTA_STATE_FLAG           = 0x00100000;
+    static final int DELTA_STATE_FLAG                       = 0x00100000;
     // Flag in delta int: a new full state2 int follows.
-    static final int DELTA_STATE2_FLAG          = 0x00200000;
+    static final int DELTA_STATE2_FLAG                      = 0x00200000;
     // Flag in delta int: contains a wakelock or wakeReason tag.
-    static final int DELTA_WAKELOCK_FLAG        = 0x00400000;
+    static final int DELTA_WAKELOCK_FLAG                    = 0x00400000;
     // Flag in delta int: contains an event description.
-    static final int DELTA_EVENT_FLAG           = 0x00800000;
+    static final int DELTA_EVENT_FLAG                       = 0x00800000;
+    // Flag in delta int: contains a coulomb charge count.
+    static final int DELTA_BATTERY_CHARGE_COULOMBS_FLAG     = 0x01000000;
     // These upper bits are the frequently changing state bits.
-    static final int DELTA_STATE_MASK           = 0xff000000;
+    static final int DELTA_STATE_MASK                       = 0xfe000000;
 
     // These are the pieces of battery state that are packed in to the upper bits of
     // the state int that have been packed in to the first delta int.  They must fit
-    // in DELTA_STATE_MASK.
+    // in STATE_BATTERY_MASK.
+    static final int STATE_BATTERY_MASK         = 0xff000000;
     static final int STATE_BATTERY_STATUS_MASK  = 0x00000007;
     static final int STATE_BATTERY_STATUS_SHIFT = 29;
     static final int STATE_BATTERY_HEALTH_MASK  = 0x00000007;
@@ -2157,6 +2249,12 @@
         if (cur.eventCode != HistoryItem.EVENT_NONE) {
             firstToken |= DELTA_EVENT_FLAG;
         }
+
+        final boolean batteryChargeCoulombsChanged = cur.batteryChargeCoulombs
+                != last.batteryChargeCoulombs;
+        if (batteryChargeCoulombsChanged) {
+            firstToken |= DELTA_BATTERY_CHARGE_COULOMBS_FLAG;
+        }
         dest.writeInt(firstToken);
         if (DEBUG) Slog.i(TAG, "WRITE DELTA: firstToken=0x" + Integer.toHexString(firstToken)
                 + " deltaTime=" + deltaTime);
@@ -2220,6 +2318,12 @@
                     + cur.eventTag.string);
         }
         if (computeStepDetails) {
+            if (mPlatformIdleStateCallback != null) {
+                mCurHistoryStepDetails.statPlatformIdleState =
+                        mPlatformIdleStateCallback.getPlatformLowPowerStats();
+                if (DEBUG) Slog.i(TAG, "WRITE PlatformIdleState:" +
+                        mCurHistoryStepDetails.statPlatformIdleState);
+            }
             computeHistoryStepDetails(mCurHistoryStepDetails, mLastHistoryStepDetails);
             if (includeStepDetails != 0) {
                 mCurHistoryStepDetails.writeToParcel(dest);
@@ -2233,6 +2337,12 @@
             mLastHistoryStepDetails = null;
         }
         mLastHistoryStepLevel = cur.batteryLevel;
+
+        if (batteryChargeCoulombsChanged) {
+            if (DEBUG) Slog.i(TAG, "WRITE DELTA: batteryChargeCoulombs="
+                    + cur.batteryChargeCoulombs);
+            dest.writeInt(cur.batteryChargeCoulombs);
+        }
     }
 
     private int buildBatteryLevelInt(HistoryItem h) {
@@ -2259,7 +2369,7 @@
         return ((h.batteryStatus&STATE_BATTERY_STATUS_MASK)<<STATE_BATTERY_STATUS_SHIFT)
                 | ((h.batteryHealth&STATE_BATTERY_HEALTH_MASK)<<STATE_BATTERY_HEALTH_SHIFT)
                 | ((plugType&STATE_BATTERY_PLUG_MASK)<<STATE_BATTERY_PLUG_SHIFT)
-                | (h.states&(~DELTA_STATE_MASK));
+                | (h.states&(~STATE_BATTERY_MASK));
     }
 
     private void computeHistoryStepDetails(final HistoryStepDetails out,
@@ -2398,7 +2508,7 @@
 
         if ((firstToken&DELTA_STATE_FLAG) != 0) {
             int stateInt = src.readInt();
-            cur.states = (firstToken&DELTA_STATE_MASK) | (stateInt&(~DELTA_STATE_MASK));
+            cur.states = (firstToken&DELTA_STATE_MASK) | (stateInt&(~STATE_BATTERY_MASK));
             cur.batteryStatus = (byte)((stateInt>>STATE_BATTERY_STATUS_SHIFT)
                     & STATE_BATTERY_STATUS_MASK);
             cur.batteryHealth = (byte)((stateInt>>STATE_BATTERY_HEALTH_SHIFT)
@@ -2424,7 +2534,7 @@
                     + " batteryPlugType=" + cur.batteryPlugType
                     + " states=0x" + Integer.toHexString(cur.states));
         } else {
-            cur.states = (firstToken&DELTA_STATE_MASK) | (cur.states&(~DELTA_STATE_MASK));
+            cur.states = (firstToken&DELTA_STATE_MASK) | (cur.states&(~STATE_BATTERY_MASK));
         }
 
         if ((firstToken&DELTA_STATE2_FLAG) != 0) {
@@ -2479,6 +2589,10 @@
         } else {
             cur.stepDetails = null;
         }
+
+        if ((firstToken&DELTA_BATTERY_CHARGE_COULOMBS_FLAG) != 0) {
+            cur.batteryChargeCoulombs = src.readInt();
+        }
     }
 
     @Override
@@ -5597,12 +5711,12 @@
                 mWifiControllerActivity.reset(false);
             }
 
-            if (mBsi.mBluetoothActivity != null) {
-                mBsi.mBluetoothActivity.reset(false);
+            if (mBluetoothControllerActivity != null) {
+                mBluetoothControllerActivity.reset(false);
             }
 
-            if (mBsi.mModemActivity != null) {
-                mBsi.mModemActivity.reset(false);
+            if (mModemControllerActivity != null) {
+                mModemControllerActivity.reset(false);
             }
 
             mUserCpuTime.reset(false);
@@ -7372,11 +7486,16 @@
     }
 
     public BatteryStatsImpl(File systemDir, Handler handler, ExternalStatsSync externalSync) {
-        this(new SystemClocks(), systemDir, handler, externalSync);
+        this(new SystemClocks(), systemDir, handler, externalSync, null);
+    }
+
+    public BatteryStatsImpl(File systemDir, Handler handler, ExternalStatsSync externalSync,
+                            PlatformIdleStateCallback cb) {
+        this(new SystemClocks(), systemDir, handler, externalSync, cb);
     }
 
     public BatteryStatsImpl(Clocks clocks, File systemDir, Handler handler,
-            ExternalStatsSync externalSync) {
+            ExternalStatsSync externalSync, PlatformIdleStateCallback cb) {
         init(clocks);
 
         if (systemDir != null) {
@@ -7462,6 +7581,7 @@
         initDischarge();
         clearHistoryLocked();
         updateDailyDeadlineLocked();
+        mPlatformIdleStateCallback = cb;
     }
 
     public BatteryStatsImpl(Parcel p) {
@@ -7477,6 +7597,7 @@
         mExternalSync = null;
         clearHistoryLocked();
         readFromParcel(p);
+        mPlatformIdleStateCallback = null;
     }
 
     public void setPowerProfile(PowerProfile profile) {
@@ -9189,7 +9310,7 @@
     public static final int BATTERY_PLUGGED_NONE = 0;
 
     public void setBatteryStateLocked(int status, int health, int plugType, int level,
-            int temp, int volt) {
+            int temp, int volt, int chargeCount) {
         final boolean onBattery = plugType == BATTERY_PLUGGED_NONE;
         final long uptime = mClocks.uptimeMillis();
         final long elapsedRealtime = mClocks.elapsedRealtime();
@@ -9233,6 +9354,7 @@
         if (mDischargePlugLevel < 0) {
             mDischargePlugLevel = level;
         }
+
         if (onBattery != mOnBattery) {
             mHistoryCur.batteryLevel = (byte)level;
             mHistoryCur.batteryStatus = (byte)status;
@@ -9240,6 +9362,7 @@
             mHistoryCur.batteryPlugType = (byte)plugType;
             mHistoryCur.batteryTemperature = (short)temp;
             mHistoryCur.batteryVoltage = (char)volt;
+            mHistoryCur.batteryChargeCoulombs = chargeCount;
             setOnBatteryLocked(elapsedRealtime, uptime, onBattery, oldStatus, level);
         } else {
             boolean changed = false;
@@ -9273,6 +9396,11 @@
                 mHistoryCur.batteryVoltage = (char)volt;
                 changed = true;
             }
+            if (chargeCount >= (mHistoryCur.batteryChargeCoulombs+10)
+                    || chargeCount <= (mHistoryCur.batteryChargeCoulombs-10)) {
+                mHistoryCur.batteryChargeCoulombs = chargeCount;
+                changed = true;
+            }
             long modeBits = (((long)mInitStepMode) << STEP_LEVEL_INITIAL_MODE_SHIFT)
                     | (((long)mModStepMode) << STEP_LEVEL_MODIFIED_MODE_SHIFT)
                     | (((long)(level&0xff)) << STEP_LEVEL_LEVEL_SHIFT);
diff --git a/core/java/com/android/internal/os/InstallerConnection.java b/core/java/com/android/internal/os/InstallerConnection.java
index 47f2c70..a7a3cb5 100644
--- a/core/java/com/android/internal/os/InstallerConnection.java
+++ b/core/java/com/android/internal/os/InstallerConnection.java
@@ -135,14 +135,15 @@
     }
 
     public void dexopt(String apkPath, int uid, String instructionSet, int dexoptNeeded,
-            int dexFlags, String compilerFilter, String volumeUuid) throws InstallerException {
-        dexopt(apkPath, uid, "*", instructionSet, dexoptNeeded,
-                null /*outputPath*/, dexFlags, compilerFilter, volumeUuid);
+            int dexFlags, String compilerFilter, String volumeUuid, String sharedLibraries)
+            throws InstallerException {
+        dexopt(apkPath, uid, "*", instructionSet, dexoptNeeded, null /*outputPath*/, dexFlags,
+                compilerFilter, volumeUuid, sharedLibraries);
     }
 
     public void dexopt(String apkPath, int uid, String pkgName, String instructionSet,
             int dexoptNeeded, String outputPath, int dexFlags, String compilerFilter,
-            String volumeUuid) throws InstallerException {
+            String volumeUuid, String sharedLibraries) throws InstallerException {
         execute("dexopt",
                 apkPath,
                 uid,
@@ -152,7 +153,8 @@
                 outputPath,
                 dexFlags,
                 compilerFilter,
-                volumeUuid);
+                volumeUuid,
+                sharedLibraries);
     }
 
     public boolean mergeProfiles(int uid, String pkgName) throws InstallerException {
diff --git a/core/java/com/android/internal/os/PathClassLoaderFactory.java b/core/java/com/android/internal/os/PathClassLoaderFactory.java
new file mode 100644
index 0000000..e5d3694
--- /dev/null
+++ b/core/java/com/android/internal/os/PathClassLoaderFactory.java
@@ -0,0 +1,62 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.internal.os;
+
+import dalvik.system.PathClassLoader;
+
+/**
+ * Creates path class loaders.
+ *
+ * @hide
+ */
+public class PathClassLoaderFactory {
+    // Unconstructable
+    private PathClassLoaderFactory() {}
+
+    /**
+     * Create a PathClassLoader and initialize a linker-namespace for it.
+     *
+     * @hide
+     */
+    public static PathClassLoader createClassLoader(String dexPath,
+                                                    String librarySearchPath,
+                                                    String libraryPermittedPath,
+                                                    ClassLoader parent,
+                                                    int targetSdkVersion,
+                                                    boolean isNamespaceShared) {
+        PathClassLoader pathClassloader = new PathClassLoader(dexPath, librarySearchPath, parent);
+
+        String errorMessage = createClassloaderNamespace(pathClassloader,
+                                                         targetSdkVersion,
+                                                         librarySearchPath,
+                                                         libraryPermittedPath,
+                                                         isNamespaceShared);
+
+        if (errorMessage != null) {
+            throw new UnsatisfiedLinkError("Unable to create namespace for the classloader " +
+                                           pathClassloader + ": " + errorMessage);
+        }
+
+        return pathClassloader;
+    }
+
+    private static native String createClassloaderNamespace(ClassLoader classLoader,
+                                                            int targetSdkVersion,
+                                                            String librarySearchPath,
+                                                            String libraryPermittedPath,
+                                                            boolean isNamespaceShared);
+}
diff --git a/core/java/com/android/internal/os/ZygoteInit.java b/core/java/com/android/internal/os/ZygoteInit.java
index 78b5d61..2b7afea 100644
--- a/core/java/com/android/internal/os/ZygoteInit.java
+++ b/core/java/com/android/internal/os/ZygoteInit.java
@@ -475,7 +475,9 @@
         } else {
             ClassLoader cl = null;
             if (systemServerClasspath != null) {
-                cl = new PathClassLoader(systemServerClasspath, ClassLoader.getSystemClassLoader());
+                cl = createSystemServerClassLoader(systemServerClasspath,
+                                                   parsedArgs.targetSdkVersion);
+
                 Thread.currentThread().setContextClassLoader(cl);
             }
 
@@ -489,6 +491,23 @@
     }
 
     /**
+     * Creates a PathClassLoader for the system server. It also creates
+     * a shared namespace associated with the classloader to let it access
+     * platform-private native libraries.
+     */
+    private static PathClassLoader createSystemServerClassLoader(String systemServerClasspath,
+                                                                 int targetSdkVersion) {
+      String librarySearchPath = System.getProperty("java.library.path");
+
+      return PathClassLoaderFactory.createClassLoader(systemServerClasspath,
+                                                      librarySearchPath,
+                                                      null /* libraryPermittedPath */,
+                                                      ClassLoader.getSystemClassLoader(),
+                                                      targetSdkVersion,
+                                                      true /* isNamespaceShared */);
+    }
+
+    /**
      * Performs dex-opt on the elements of {@code classPath}, if needed. We
      * choose the instruction set of the current runtime.
      */
@@ -499,6 +518,7 @@
         final String instructionSet = VMRuntime.getRuntime().vmInstructionSet();
 
         try {
+            String sharedLibraries = "";
             for (String classPathElement : classPathElements) {
                 // System server is fully AOTed and never profiled
                 // for profile guided compilation.
@@ -508,9 +528,13 @@
                         false /* newProfile */);
                 if (dexoptNeeded != DexFile.NO_DEXOPT_NEEDED) {
                     installer.dexopt(classPathElement, Process.SYSTEM_UID, instructionSet,
-                            dexoptNeeded, 0 /*dexFlags*/, "speed",
-                            null /*volumeUuid*/);
+                            dexoptNeeded, 0 /*dexFlags*/, "speed", null /*volumeUuid*/,
+                            sharedLibraries);
                 }
+                if (!sharedLibraries.isEmpty()) {
+                    sharedLibraries += ":";
+                }
+                sharedLibraries += classPathElement;
             }
         } catch (IOException | InstallerException e) {
             throw new RuntimeException("Error starting system_server", e);
diff --git a/core/java/com/android/internal/policy/DecorView.java b/core/java/com/android/internal/policy/DecorView.java
index 3aa7719..68a1378 100644
--- a/core/java/com/android/internal/policy/DecorView.java
+++ b/core/java/com/android/internal/policy/DecorView.java
@@ -78,6 +78,7 @@
 
 import static android.app.ActivityManager.StackId;
 import static android.app.ActivityManager.StackId.FULLSCREEN_WORKSPACE_STACK_ID;
+import static android.app.ActivityManager.StackId.PINNED_STACK_ID;
 import static android.app.ActivityManager.StackId.INVALID_STACK_ID;
 import static android.content.res.Configuration.ORIENTATION_PORTRAIT;
 import static android.os.Build.VERSION_CODES.M;
@@ -733,16 +734,16 @@
 
     @Override
     public boolean showContextMenuForChild(View originalView) {
-        return showContextMenuForChildInternal(originalView, 0, 0, false);
+        return showContextMenuForChildInternal(originalView, Float.NaN, Float.NaN);
     }
 
     @Override
     public boolean showContextMenuForChild(View originalView, float x, float y) {
-        return showContextMenuForChildInternal(originalView, x, y, true);
+        return showContextMenuForChildInternal(originalView, x, y);
     }
 
     private boolean showContextMenuForChildInternal(View originalView,
-            float x, float y, boolean isPopup) {
+            float x, float y) {
         // Only allow one context menu at a time.
         if (mWindow.mContextMenuHelper != null) {
             mWindow.mContextMenuHelper.dismiss();
@@ -759,6 +760,7 @@
         }
 
         final MenuHelper helper;
+        final boolean isPopup = !Float.isNaN(x) && !Float.isNaN(y);
         if (isPopup) {
             helper = mWindow.mContextMenu.showPopup(getContext(), originalView, x, y);
         } else {
@@ -2059,8 +2061,11 @@
         if (StackId.hasWindowShadow(mStackId) && !isResizing()) {
             elevation = hasWindowFocus() ?
                     DECOR_SHADOW_FOCUSED_HEIGHT_IN_DIP : DECOR_SHADOW_UNFOCUSED_HEIGHT_IN_DIP;
+            // Add a maximum shadow height value to the top level view.
+            // Note that pinned stack doesn't have focus
+            // so maximum shadow height adjustment isn't needed.
             // TODO(skuhne): Remove this if clause once b/22668382 got fixed.
-            if (!mAllowUpdateElevation) {
+            if (!mAllowUpdateElevation && mStackId != PINNED_STACK_ID) {
                 elevation = DECOR_SHADOW_FOCUSED_HEIGHT_IN_DIP;
             }
             // Convert the DP elevation into physical pixels.
diff --git a/core/java/com/android/internal/policy/PhoneWindow.java b/core/java/com/android/internal/policy/PhoneWindow.java
index 151c530..5bb8969 100644
--- a/core/java/com/android/internal/policy/PhoneWindow.java
+++ b/core/java/com/android/internal/policy/PhoneWindow.java
@@ -16,6 +16,7 @@
 
 package com.android.internal.policy;
 
+import static android.provider.Settings.Global.DEVELOPMENT_FORCE_RESIZABLE_ACTIVITIES;
 import static android.view.ViewGroup.LayoutParams.MATCH_PARENT;
 import static android.view.ViewGroup.LayoutParams.WRAP_CONTENT;
 import static android.view.WindowManager.LayoutParams.*;
@@ -80,6 +81,7 @@
 import android.os.Parcelable;
 import android.os.RemoteException;
 import android.os.ServiceManager;
+import android.provider.Settings;
 import android.transition.Scene;
 import android.transition.Transition;
 import android.transition.TransitionInflater;
@@ -204,6 +206,10 @@
      */
     int mPanelChordingKey;
 
+    // This stores if the system supports Picture-in-Picture
+    // to see if KEYCODE_WINDOW should be handled here or not.
+    private boolean mSupportsPictureInPicture;
+
     private ImageView mLeftIconView;
 
     private ImageView mRightIconView;
@@ -313,6 +319,12 @@
             // the token will not be updated as for a new window.
             getAttributes().token = preservedWindow.getAttributes().token;
         }
+        // Even though the device doesn't support picture-in-picture mode,
+        // an user can force using it through developer options.
+        boolean forceResizable = Settings.Global.getInt(context.getContentResolver(),
+                DEVELOPMENT_FORCE_RESIZABLE_ACTIVITIES, 0) != 0;
+        mSupportsPictureInPicture = forceResizable || context.getPackageManager().hasSystemFeature(
+                PackageManager.FEATURE_PICTURE_IN_PICTURE);
     }
 
     @Override
@@ -2002,6 +2014,13 @@
                 }
                 return true;
             }
+
+            case KeyEvent.KEYCODE_WINDOW: {
+                if (mSupportsPictureInPicture && !event.isCanceled()) {
+                    getWindowControllerCallback().enterPictureInPictureModeIfPossible();
+                }
+                return true;
+            }
         }
 
         return false;
diff --git a/core/java/com/android/internal/statusbar/IStatusBar.aidl b/core/java/com/android/internal/statusbar/IStatusBar.aidl
index 5cbe1ce..7706ff7 100644
--- a/core/java/com/android/internal/statusbar/IStatusBar.aidl
+++ b/core/java/com/android/internal/statusbar/IStatusBar.aidl
@@ -105,14 +105,9 @@
     void onCameraLaunchGestureDetected(int source);
 
     /**
-     * Request picture-in-picture.
-     *
-     * <p>
-     * This is called when an user presses picture-in-picture key or equivalent.
-     * TV device may start picture-in-picture from foreground activity if there's none.
-     * Picture-in-picture overlay menu will be shown instead otherwise.
+     * Shows the TV's picture-in-picture menu if an activity is in picture-in-picture mode.
      */
-    void requestTvPictureInPicture();
+    void showTvPictureInPictureMenu();
 
     void addQsTile(in ComponentName tile);
     void remQsTile(in ComponentName tile);
diff --git a/core/java/com/android/internal/view/FloatingActionMode.java b/core/java/com/android/internal/view/FloatingActionMode.java
index b44baa2..ccdb024 100644
--- a/core/java/com/android/internal/view/FloatingActionMode.java
+++ b/core/java/com/android/internal/view/FloatingActionMode.java
@@ -24,6 +24,8 @@
 import android.view.MenuItem;
 import android.view.View;
 import android.view.ViewConfiguration;
+import android.view.ViewGroup;
+import android.view.ViewParent;
 
 import com.android.internal.R;
 import com.android.internal.util.Preconditions;
@@ -165,7 +167,17 @@
         checkToolbarInitialized();
 
         mContentRectOnScreen.set(mContentRect);
-        mContentRectOnScreen.offset(mViewPositionOnScreen[0], mViewPositionOnScreen[1]);
+
+        // Offset the content rect into screen coordinates, taking into account any transformations
+        // that may be applied to the originating view or its ancestors.
+        final ViewParent parent = mOriginatingView.getParent();
+        if (parent instanceof ViewGroup) {
+            ((ViewGroup) parent).getChildVisibleRect(
+                    mOriginatingView, mContentRectOnScreen, null /* offset */);
+            mContentRectOnScreen.offset(mRootViewPositionOnScreen[0], mRootViewPositionOnScreen[1]);
+        } else {
+            mContentRectOnScreen.offset(mViewPositionOnScreen[0], mViewPositionOnScreen[1]);
+        }
 
         if (isContentRectWithinBounds()) {
             mFloatingToolbarVisibilityHelper.setOutOfBounds(false);
diff --git a/core/java/com/android/internal/view/menu/CascadingMenuPopup.java b/core/java/com/android/internal/view/menu/CascadingMenuPopup.java
index 72ed9d0..07f3801 100644
--- a/core/java/com/android/internal/view/menu/CascadingMenuPopup.java
+++ b/core/java/com/android/internal/view/menu/CascadingMenuPopup.java
@@ -349,21 +349,18 @@
         final LayoutInflater inflater = LayoutInflater.from(mContext);
         final MenuAdapter adapter = new MenuAdapter(menu, inflater, mOverflowOnly);
 
-        // Apply "force show icon" setting. There are 4 cases:
-        // (1) This is the top level menu. Only add spacing for icons if forced.
+        // Apply "force show icon" setting. There are 3 cases:
+        // (1) This is the top level menu and icon spacing is forced. Add spacing.
         // (2) This is a submenu. Add spacing if any of the visible menu items has an icon.
-        // (3) This is a top level menu that is not an overflow menu. Add spacing if any of the
-        //     visible menu items has an icon.
-        // (4) This is an overflow menu or a top level menu that doesn't have "force" set.
-        //     Don't allow spacing.
+        // (3) This is the top level menu and icon spacing isn't forced. Do not add spacing.
         if (!isShowing() && mForceShowIcon) {
           // Case 1
           adapter.setForceShowIcon(true);
-        } else if (isShowing() || !isShowing() && !mForceShowIcon && !mOverflowOnly) {
-          // Case 2 or 3
+        } else if (isShowing()) {
+          // Case 2
           adapter.setForceShowIcon(MenuPopup.shouldPreserveIconSpacing(menu));
         }
-        // Case 4: Else, don't allow spacing for icons.
+        // Case 3: Else, don't allow spacing for icons (default behavior; do nothing).
 
         final int menuWidth = measureIndividualMenuWidth(adapter, null, mContext, mMenuMaxWidth);
         final MenuPopupWindow popupWindow = createPopupWindow();
diff --git a/core/java/com/android/internal/view/menu/MenuPopupHelper.java b/core/java/com/android/internal/view/menu/MenuPopupHelper.java
index 1f1e594..324f923 100644
--- a/core/java/com/android/internal/view/menu/MenuPopupHelper.java
+++ b/core/java/com/android/internal/view/menu/MenuPopupHelper.java
@@ -23,10 +23,13 @@
 import android.annotation.Nullable;
 import android.annotation.StyleRes;
 import android.content.Context;
+import android.graphics.Point;
 import android.graphics.Rect;
 import android.util.DisplayMetrics;
+import android.view.Display;
 import android.view.Gravity;
 import android.view.View;
+import android.view.WindowManager;
 import android.widget.PopupWindow.OnDismissListener;
 
 /**
@@ -104,6 +107,9 @@
      */
     public void setForceShowIcon(boolean forceShowIcon) {
         mForceShowIcon = forceShowIcon;
+        if (mPopup != null) {
+            mPopup.setForceShowIcon(forceShowIcon);
+        }
     }
 
     /**
@@ -206,8 +212,16 @@
      */
     @NonNull
     private MenuPopup createPopup() {
-        final boolean enableCascadingSubmenus = mContext.getResources().getBoolean(
-                com.android.internal.R.bool.config_enableCascadingSubmenus);
+        final WindowManager windowManager = (WindowManager) mContext.getSystemService(
+            Context.WINDOW_SERVICE);
+        final Display display = windowManager.getDefaultDisplay();
+        final Point displaySize = new Point();
+        display.getRealSize(displaySize);
+
+        final int smallestWidth = Math.min(displaySize.x, displaySize.y);
+        final int minSmallestWidthCascading = mContext.getResources().getDimensionPixelSize(
+            com.android.internal.R.dimen.cascading_menus_min_smallest_width);
+        final boolean enableCascadingSubmenus = smallestWidth >= minSmallestWidthCascading;
 
         final MenuPopup popup;
         if (enableCascadingSubmenus) {
diff --git a/core/java/com/android/internal/widget/FloatingToolbar.java b/core/java/com/android/internal/widget/FloatingToolbar.java
index 1848fe8..bc12391 100644
--- a/core/java/com/android/internal/widget/FloatingToolbar.java
+++ b/core/java/com/android/internal/widget/FloatingToolbar.java
@@ -592,9 +592,11 @@
         private void refreshCoordinatesAndOverflowDirection(Rect contentRectOnScreen) {
             refreshViewPort();
 
-            int x = contentRectOnScreen.centerX() - mPopupWindow.getWidth() / 2;
-            // Update x so that the toolbar isn't rendered behind the nav bar in landscape.
-            x = Math.max(0, Math.min(x, mViewPortOnScreen.right - mPopupWindow.getWidth()));
+            // Initialize x ensuring that the toolbar isn't rendered behind the nav bar in
+            // landscape.
+            final int x = Math.min(
+                    contentRectOnScreen.centerX() - mPopupWindow.getWidth() / 2,
+                    mViewPortOnScreen.right - mPopupWindow.getWidth());
 
             final int y;
 
@@ -684,7 +686,8 @@
             int rootViewTopOnWindow = mTmpCoords[1];
             int windowLeftOnScreen = rootViewLeftOnScreen - rootViewLeftOnWindow;
             int windowTopOnScreen = rootViewTopOnScreen - rootViewTopOnWindow;
-            mCoordsOnWindow.set(x - windowLeftOnScreen, y - windowTopOnScreen);
+            mCoordsOnWindow.set(
+                    Math.max(0, x - windowLeftOnScreen), Math.max(0, y - windowTopOnScreen));
         }
 
         /**
diff --git a/core/java/com/android/internal/widget/ImageFloatingTextView.java b/core/java/com/android/internal/widget/ImageFloatingTextView.java
index e2d8ffc..926ebd1 100644
--- a/core/java/com/android/internal/widget/ImageFloatingTextView.java
+++ b/core/java/com/android/internal/widget/ImageFloatingTextView.java
@@ -16,22 +16,19 @@
 
 package com.android.internal.widget;
 
-import com.android.internal.R;
-
 import android.annotation.Nullable;
 import android.content.Context;
-import android.content.res.Configuration;
-import android.content.res.TypedArray;
 import android.text.BoringLayout;
 import android.text.Layout;
 import android.text.StaticLayout;
 import android.text.TextUtils;
 import android.util.AttributeSet;
-import android.util.TypedValue;
 import android.view.RemotableViewMethod;
 import android.widget.RemoteViews;
 import android.widget.TextView;
 
+import com.android.internal.R;
+
 /**
  * A TextView that can float around an image on the end.
  *
@@ -96,9 +93,7 @@
 
     @RemotableViewMethod
     public void setHasImage(boolean hasImage) {
-        mIndentLines = hasImage ? 2 : 0;
-        // The new layout will be automatically created when the text is
-        // set again by the notification.
+        setNumIndentLines(hasImage ? 2 : 0);
     }
 
     /**
diff --git a/core/java/com/android/internal/widget/NotificationActionListLayout.java b/core/java/com/android/internal/widget/NotificationActionListLayout.java
new file mode 100644
index 0000000..9dd118c
--- /dev/null
+++ b/core/java/com/android/internal/widget/NotificationActionListLayout.java
@@ -0,0 +1,268 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License
+ */
+
+package com.android.internal.widget;
+
+import android.content.Context;
+import android.util.AttributeSet;
+import android.util.Pair;
+import android.view.Gravity;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.RemoteViews;
+import android.widget.TextView;
+
+import java.util.ArrayList;
+import java.util.Comparator;
+
+/**
+ * Layout for notification actions that ensures that no action consumes more than their share of
+ * the remaining available width, and the last action consumes the remaining space.
+ */
+@RemoteViews.RemoteView
+public class NotificationActionListLayout extends ViewGroup {
+
+    private int mTotalWidth = 0;
+    private ArrayList<Pair<Integer, TextView>> mMeasureOrderTextViews = new ArrayList<>();
+    private ArrayList<View> mMeasureOrderOther = new ArrayList<>();
+
+    public NotificationActionListLayout(Context context, AttributeSet attrs) {
+        super(context, attrs);
+    }
+
+    @Override
+    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
+        final int N = getChildCount();
+        int textViews = 0;
+        int otherViews = 0;
+        int notGoneChildren = 0;
+
+        View lastNotGoneChild = null;
+        for (int i = 0; i < N; i++) {
+            View c = getChildAt(i);
+            if (c instanceof TextView) {
+                textViews++;
+            } else {
+                otherViews++;
+            }
+            if (c.getVisibility() != GONE) {
+                notGoneChildren++;
+                lastNotGoneChild = c;
+            }
+        }
+
+        // Rebuild the measure order if the number of children changed or the text length of
+        // any of the children changed.
+        boolean needRebuild = false;
+        if (textViews != mMeasureOrderTextViews.size()
+                || otherViews != mMeasureOrderOther.size()) {
+            needRebuild = true;
+        }
+        if (!needRebuild) {
+            final int size = mMeasureOrderTextViews.size();
+            for (int i = 0; i < size; i++) {
+                Pair<Integer, TextView> pair = mMeasureOrderTextViews.get(i);
+                if (pair.first != pair.second.getText().length()) {
+                    needRebuild = true;
+                }
+            }
+        }
+        if (notGoneChildren > 1 && needRebuild) {
+            rebuildMeasureOrder(textViews, otherViews);
+        }
+
+        final boolean constrained =
+                MeasureSpec.getMode(widthMeasureSpec) != MeasureSpec.UNSPECIFIED;
+
+        final int innerWidth = MeasureSpec.getSize(widthMeasureSpec) - mPaddingLeft - mPaddingRight;
+        final int otherSize = mMeasureOrderOther.size();
+        int usedWidth = 0;
+
+        // Optimization: Don't do this if there's only one child.
+        int measuredChildren = 0;
+        for (int i = 0; i < N && notGoneChildren > 1; i++) {
+            // Measure shortest children first. To avoid measuring twice, we approximate by looking
+            // at the text length.
+            View c;
+            if (i < otherSize) {
+                c = mMeasureOrderOther.get(i);
+            } else {
+                c = mMeasureOrderTextViews.get(i - otherSize).second;
+            }
+            if (c.getVisibility() == GONE) {
+                continue;
+            }
+            MarginLayoutParams lp = (MarginLayoutParams) c.getLayoutParams();
+
+            int usedWidthForChild = usedWidth;
+            if (constrained) {
+                // Make sure that this child doesn't consume more than its share of the remaining
+                // total available space. Not used space will benefit subsequent views. Since we
+                // measure in the order of (approx.) size, a large view can still take more than its
+                // share if the others are small.
+                int availableWidth = innerWidth - usedWidth;
+                int maxWidthForChild = availableWidth / (notGoneChildren - measuredChildren);
+
+                usedWidthForChild = innerWidth - maxWidthForChild;
+            }
+
+            measureChildWithMargins(c, widthMeasureSpec, usedWidthForChild,
+                    heightMeasureSpec, 0 /* usedHeight */);
+
+            usedWidth += c.getMeasuredWidth() + lp.rightMargin + lp.leftMargin;
+            measuredChildren++;
+        }
+
+        // Make sure to measure the last child full-width if we didn't use up the entire width,
+        // or we didn't measure yet because there's just one child.
+        if (lastNotGoneChild != null && (constrained && usedWidth < innerWidth
+                || notGoneChildren == 1)) {
+            MarginLayoutParams lp = (MarginLayoutParams) lastNotGoneChild.getLayoutParams();
+            if (notGoneChildren > 1) {
+                // Need to make room, since we already measured this once.
+                usedWidth -= lastNotGoneChild.getMeasuredWidth() + lp.rightMargin + lp.leftMargin;
+            }
+
+            int originalWidth = lp.width;
+            lp.width = LayoutParams.MATCH_PARENT;
+            measureChildWithMargins(lastNotGoneChild, widthMeasureSpec, usedWidth,
+                    heightMeasureSpec, 0 /* usedHeight */);
+            lp.width = originalWidth;
+
+            usedWidth += lastNotGoneChild.getMeasuredWidth() + lp.rightMargin + lp.leftMargin;
+        }
+
+        mTotalWidth = usedWidth + mPaddingRight + mPaddingLeft;
+        setMeasuredDimension(resolveSize(getSuggestedMinimumWidth(), widthMeasureSpec),
+                resolveSize(getSuggestedMinimumHeight(), heightMeasureSpec));
+    }
+
+    private void rebuildMeasureOrder(int capacityText, int capacityOther) {
+        clearMeasureOrder();
+        mMeasureOrderTextViews.ensureCapacity(capacityText);
+        mMeasureOrderOther.ensureCapacity(capacityOther);
+        final int childCount = getChildCount();
+        for (int i = 0; i < childCount; i++) {
+            View c = getChildAt(i);
+            if (c instanceof TextView && ((TextView) c).getText().length() > 0) {
+                mMeasureOrderTextViews.add(Pair.create(((TextView) c).getText().length(),
+                        (TextView)c));
+            } else {
+                mMeasureOrderOther.add(c);
+            }
+        }
+        mMeasureOrderTextViews.sort(MEASURE_ORDER_COMPARATOR);
+    }
+
+    private void clearMeasureOrder() {
+        mMeasureOrderOther.clear();
+        mMeasureOrderTextViews.clear();
+    }
+
+    @Override
+    public void onViewAdded(View child) {
+        super.onViewAdded(child);
+        clearMeasureOrder();
+    }
+
+    @Override
+    public void onViewRemoved(View child) {
+        super.onViewRemoved(child);
+        clearMeasureOrder();
+    }
+
+    @Override
+    protected void onLayout(boolean changed, int left, int top, int right, int bottom) {
+        final boolean isLayoutRtl = isLayoutRtl();
+        final int paddingTop = mPaddingTop;
+
+        int childTop;
+        int childLeft;
+
+        // Where bottom of child should go
+        final int height = bottom - top;
+
+        // Space available for child
+        int innerHeight = height - paddingTop - mPaddingBottom;
+
+        final int count = getChildCount();
+
+        final int layoutDirection = getLayoutDirection();
+        switch (Gravity.getAbsoluteGravity(Gravity.START, layoutDirection)) {
+            case Gravity.RIGHT:
+                // mTotalWidth contains the padding already
+                childLeft = mPaddingLeft + right - left - mTotalWidth;
+                break;
+
+            case Gravity.LEFT:
+            default:
+                childLeft = mPaddingLeft;
+                break;
+        }
+
+        int start = 0;
+        int dir = 1;
+        //In case of RTL, start drawing from the last child.
+        if (isLayoutRtl) {
+            start = count - 1;
+            dir = -1;
+        }
+
+        for (int i = 0; i < count; i++) {
+            final int childIndex = start + dir * i;
+            final View child = getChildAt(childIndex);
+            if (child.getVisibility() != GONE) {
+                final int childWidth = child.getMeasuredWidth();
+                final int childHeight = child.getMeasuredHeight();
+
+                final MarginLayoutParams lp = (MarginLayoutParams) child.getLayoutParams();
+
+                childTop = paddingTop + ((innerHeight - childHeight) / 2)
+                            + lp.topMargin - lp.bottomMargin;
+
+                childLeft += lp.leftMargin;
+                child.layout(childLeft, childTop, childLeft + childWidth, childTop + childHeight);
+                childLeft += childWidth + lp.rightMargin;
+            }
+        }
+    }
+
+    @Override
+    public LayoutParams generateLayoutParams(AttributeSet attrs) {
+        return new MarginLayoutParams(getContext(), attrs);
+    }
+
+    @Override
+    protected LayoutParams generateDefaultLayoutParams() {
+        return new MarginLayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.MATCH_PARENT);
+    }
+
+    @Override
+    protected LayoutParams generateLayoutParams(LayoutParams p) {
+        if (p instanceof MarginLayoutParams) {
+            return new MarginLayoutParams((MarginLayoutParams)p);
+        }
+        return new MarginLayoutParams(p);
+    }
+
+    @Override
+    protected boolean checkLayoutParams(LayoutParams p) {
+        return p instanceof MarginLayoutParams;
+    }
+
+    public static final Comparator<Pair<Integer, TextView>> MEASURE_ORDER_COMPARATOR
+            = (a, b) -> a.first.compareTo(b.first);
+}
diff --git a/core/jni/Android.mk b/core/jni/Android.mk
index 8a512a6..986a5fd 100644
--- a/core/jni/Android.mk
+++ b/core/jni/Android.mk
@@ -34,7 +34,6 @@
     com_google_android_gles_jni_EGLImpl.cpp \
     com_google_android_gles_jni_GLImpl.cpp.arm \
     android_app_Activity.cpp \
-    android_app_ApplicationLoaders.cpp \
     android_app_NativeActivity.cpp \
     android_app_admin_SecurityLog.cpp \
     android_opengl_EGL14.cpp \
@@ -95,6 +94,7 @@
     android_util_AssetManager.cpp \
     android_util_Binder.cpp \
     android_util_EventLog.cpp \
+    android_util_MemoryIntArray.cpp \
     android_util_Log.cpp \
     android_util_PathParser.cpp \
     android_util_Process.cpp \
@@ -173,6 +173,7 @@
     android_content_res_Configuration.cpp \
     android_animation_PropertyValuesHolder.cpp \
     com_android_internal_net_NetworkStatsFactory.cpp \
+    com_android_internal_os_PathClassLoaderFactory.cpp \
     com_android_internal_os_Zygote.cpp \
     com_android_internal_util_VirtualRefBasePtr.cpp \
     com_android_internal_view_animation_NativeInterpolatorFactoryHelper.cpp
diff --git a/core/jni/AndroidRuntime.cpp b/core/jni/AndroidRuntime.cpp
index d3dca5d9..c2273d6 100644
--- a/core/jni/AndroidRuntime.cpp
+++ b/core/jni/AndroidRuntime.cpp
@@ -113,6 +113,7 @@
 extern int register_android_content_AssetManager(JNIEnv* env);
 extern int register_android_util_EventLog(JNIEnv* env);
 extern int register_android_util_Log(JNIEnv* env);
+extern int register_android_util_MemoryIntArray(JNIEnv* env);
 extern int register_android_util_PathParser(JNIEnv* env);
 extern int register_android_content_StringBlock(JNIEnv* env);
 extern int register_android_content_XmlBlock(JNIEnv* env);
@@ -178,7 +179,6 @@
 extern int register_android_backup_FileBackupHelperBase(JNIEnv *env);
 extern int register_android_backup_BackupHelperDispatcher(JNIEnv *env);
 extern int register_android_app_backup_FullBackup(JNIEnv *env);
-extern int register_android_app_ApplicationLoaders(JNIEnv* env);
 extern int register_android_app_Activity(JNIEnv *env);
 extern int register_android_app_ActivityThread(JNIEnv *env);
 extern int register_android_app_NativeActivity(JNIEnv *env);
@@ -199,6 +199,7 @@
 extern int register_android_animation_PropertyValuesHolder(JNIEnv *env);
 extern int register_com_android_internal_content_NativeLibraryHelper(JNIEnv *env);
 extern int register_com_android_internal_net_NetworkStatsFactory(JNIEnv *env);
+extern int register_com_android_internal_os_PathClassLoaderFactory(JNIEnv* env);
 extern int register_com_android_internal_os_Zygote(JNIEnv *env);
 extern int register_com_android_internal_util_VirtualRefBasePtr(JNIEnv *env);
 
@@ -593,6 +594,7 @@
     char jitthresholdOptsBuf[sizeof("-Xjitthreshold:")-1 + PROPERTY_VALUE_MAX];
     char useJitProfilesOptsBuf[sizeof("-Xjitsaveprofilinginfo:")-1 + PROPERTY_VALUE_MAX];
     char jitprithreadweightOptBuf[sizeof("-Xjitprithreadweight:")-1 + PROPERTY_VALUE_MAX];
+    char jittransitionweightOptBuf[sizeof("-Xjittransitionweight:")-1 + PROPERTY_VALUE_MAX];
     char gctypeOptsBuf[sizeof("-Xgc:")-1 + PROPERTY_VALUE_MAX];
     char backgroundgcOptsBuf[sizeof("-XX:BackgroundGC=")-1 + PROPERTY_VALUE_MAX];
     char heaptargetutilizationOptsBuf[sizeof("-XX:HeapTargetUtilization=")-1 + PROPERTY_VALUE_MAX];
@@ -702,10 +704,15 @@
     if (strcmp(useJitProfilesOptsBuf, "true") == 0) {
         addOption("-Xjitsaveprofilinginfo");
     }
+
     parseRuntimeOption("dalvik.vm.jitprithreadweight",
                        jitprithreadweightOptBuf,
                        "-Xjitprithreadweight:");
 
+    parseRuntimeOption("dalvik.vm.jittransitionweight",
+                       jittransitionweightOptBuf,
+                       "-Xjittransitionweight:");
+
     property_get("ro.config.low_ram", propBuf, "");
     if (strcmp(propBuf, "true") == 0) {
       addOption("-XX:LowMemoryMode");
@@ -1256,6 +1263,7 @@
     REG_JNI(register_android_os_SystemClock),
     REG_JNI(register_android_util_EventLog),
     REG_JNI(register_android_util_Log),
+    REG_JNI(register_android_util_MemoryIntArray),
     REG_JNI(register_android_util_PathParser),
     REG_JNI(register_android_app_admin_SecurityLog),
     REG_JNI(register_android_content_AssetManager),
@@ -1347,6 +1355,7 @@
     REG_JNI(register_android_net_NetworkUtils),
     REG_JNI(register_android_net_TrafficStats),
     REG_JNI(register_android_os_MemoryFile),
+    REG_JNI(register_com_android_internal_os_PathClassLoaderFactory),
     REG_JNI(register_com_android_internal_os_Zygote),
     REG_JNI(register_com_android_internal_util_VirtualRefBasePtr),
     REG_JNI(register_android_hardware_Camera),
@@ -1378,7 +1387,6 @@
     REG_JNI(register_android_backup_FileBackupHelperBase),
     REG_JNI(register_android_backup_BackupHelperDispatcher),
     REG_JNI(register_android_app_backup_FullBackup),
-    REG_JNI(register_android_app_ApplicationLoaders),
     REG_JNI(register_android_app_Activity),
     REG_JNI(register_android_app_ActivityThread),
     REG_JNI(register_android_app_NativeActivity),
diff --git a/core/jni/android/graphics/pdf/PdfEditor.cpp b/core/jni/android/graphics/pdf/PdfEditor.cpp
index 2c840bd..d2d39cd 100644
--- a/core/jni/android/graphics/pdf/PdfEditor.cpp
+++ b/core/jni/android/graphics/pdf/PdfEditor.cpp
@@ -51,22 +51,22 @@
     jfieldID bottom;
 } gRectClassInfo;
 
-static Mutex sLock;
-
-static int sUnmatchedInitRequestCount = 0;
+// Also used in PdfRenderer.cpp
+Mutex sPdfiumLock;
+int sUnmatchedPdfiumInitRequestCount = 0;
 
 static void initializeLibraryIfNeeded() {
-    Mutex::Autolock _l(sLock);
-    if (sUnmatchedInitRequestCount == 0) {
+    Mutex::Autolock _l(sPdfiumLock);
+    if (sUnmatchedPdfiumInitRequestCount == 0) {
         FPDF_InitLibrary();
     }
-    sUnmatchedInitRequestCount++;
+    sUnmatchedPdfiumInitRequestCount++;
 }
 
 static void destroyLibraryIfNeeded() {
-    Mutex::Autolock _l(sLock);
-    sUnmatchedInitRequestCount--;
-    if (sUnmatchedInitRequestCount == 0) {
+    Mutex::Autolock _l(sPdfiumLock);
+    sUnmatchedPdfiumInitRequestCount--;
+    if (sUnmatchedPdfiumInitRequestCount == 0) {
        FPDF_DestroyLibrary();
     }
 }
diff --git a/core/jni/android/graphics/pdf/PdfRenderer.cpp b/core/jni/android/graphics/pdf/PdfRenderer.cpp
index 27f3493..71bec78 100644
--- a/core/jni/android/graphics/pdf/PdfRenderer.cpp
+++ b/core/jni/android/graphics/pdf/PdfRenderer.cpp
@@ -43,22 +43,22 @@
     jfieldID y;
 } gPointClassInfo;
 
-static Mutex sLock;
-
-static int sUnmatchedInitRequestCount = 0;
+// See PdfEditor.cpp
+extern Mutex sPdfiumLock;
+extern int sUnmatchedPdfiumInitRequestCount;
 
 static void initializeLibraryIfNeeded() {
-    Mutex::Autolock _l(sLock);
-    if (sUnmatchedInitRequestCount == 0) {
+    Mutex::Autolock _l(sPdfiumLock);
+    if (sUnmatchedPdfiumInitRequestCount == 0) {
         FPDF_InitLibrary();
     }
-    sUnmatchedInitRequestCount++;
+    sUnmatchedPdfiumInitRequestCount++;
 }
 
 static void destroyLibraryIfNeeded() {
-    Mutex::Autolock _l(sLock);
-    sUnmatchedInitRequestCount--;
-    if (sUnmatchedInitRequestCount == 0) {
+    Mutex::Autolock _l(sPdfiumLock);
+    sUnmatchedPdfiumInitRequestCount--;
+    if (sUnmatchedPdfiumInitRequestCount == 0) {
        FPDF_DestroyLibrary();
     }
 }
diff --git a/core/jni/android_hardware_Camera.cpp b/core/jni/android_hardware_Camera.cpp
index 91f003d..9459257 100644
--- a/core/jni/android_hardware_Camera.cpp
+++ b/core/jni/android_hardware_Camera.cpp
@@ -77,6 +77,7 @@
     virtual void postData(int32_t msgType, const sp<IMemory>& dataPtr,
                           camera_frame_metadata_t *metadata);
     virtual void postDataTimestamp(nsecs_t timestamp, int32_t msgType, const sp<IMemory>& dataPtr);
+    virtual void postRecordingFrameHandleTimestamp(nsecs_t timestamp, native_handle_t* handle);
     void postMetadata(JNIEnv *env, int32_t msgType, camera_frame_metadata_t *metadata);
     void addCallbackBuffer(JNIEnv *env, jbyteArray cbb, int msgType);
     void setCallbackMode(JNIEnv *env, bool installed, bool manualMode);
@@ -349,6 +350,11 @@
     postData(msgType, dataPtr, NULL);
 }
 
+void JNICameraContext::postRecordingFrameHandleTimestamp(nsecs_t, native_handle_t*) {
+    // This is not needed at app layer. This should not be called because JNICameraContext cannot
+    // start video recording.
+}
+
 void JNICameraContext::postMetadata(JNIEnv *env, int32_t msgType, camera_frame_metadata_t *metadata)
 {
     jobjectArray obj = NULL;
diff --git a/core/jni/android_hardware_SensorManager.cpp b/core/jni/android_hardware_SensorManager.cpp
index 90f407f..f4237d2 100644
--- a/core/jni/android_hardware_SensorManager.cpp
+++ b/core/jni/android_hardware_SensorManager.cpp
@@ -13,28 +13,25 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-
 #define LOG_TAG "SensorManager"
 
-#include <map>
+#include "JNIHelp.h"
+#include "android_os_MessageQueue.h"
+#include "core_jni_helpers.h"
+#include "jni.h"
 
 #include <ScopedUtfChars.h>
 #include <ScopedLocalRef.h>
-
+#include <android_runtime/AndroidRuntime.h>
+#include <gui/Sensor.h>
+#include <gui/SensorEventQueue.h>
+#include <gui/SensorManager.h>
 #include <utils/Log.h>
 #include <utils/Looper.h>
 #include <utils/Vector.h>
 
-#include <gui/Sensor.h>
-#include <gui/SensorManager.h>
-#include <gui/SensorEventQueue.h>
-
-#include "jni.h"
-#include "JNIHelp.h"
-#include "android_os_MessageQueue.h"
-#include <android_runtime/AndroidRuntime.h>
-
-#include "core_jni_helpers.h"
+#include <endian.h>   // htobe64
+#include <map>
 
 namespace {
 
@@ -50,6 +47,7 @@
 struct SensorOffsets
 {
     jclass      clazz;
+    //fields
     jfieldID    name;
     jfieldID    vendor;
     jfieldID    version;
@@ -64,7 +62,9 @@
     jfieldID    requiredPermission;
     jfieldID    maxDelay;
     jfieldID    flags;
+    //methods
     jmethodID   setType;
+    jmethodID   setUuid;
     jmethodID   init;
 } gSensorOffsets;
 
@@ -102,6 +102,7 @@
     sensorOffsets.flags = _env->GetFieldID(sensorClass, "mFlags",  "I");
 
     sensorOffsets.setType = _env->GetMethodID(sensorClass, "setType", "(I)Z");
+    sensorOffsets.setUuid = _env->GetMethodID(sensorClass, "setUuid", "(JJ)V");
     sensorOffsets.init = _env->GetMethodID(sensorClass, "<init>", "()V");
 
     // java.util.List;
@@ -192,11 +193,26 @@
                             requiredPermission);
         env->SetIntField(sensor, sensorOffsets.maxDelay, nativeSensor.getMaxDelay());
         env->SetIntField(sensor, sensorOffsets.flags, nativeSensor.getFlags());
+
         if (env->CallBooleanMethod(sensor, sensorOffsets.setType, nativeSensor.getType())
                 == JNI_FALSE) {
             jstring stringType = getInternedString(env, &nativeSensor.getStringType());
             env->SetObjectField(sensor, sensorOffsets.stringType, stringType);
         }
+
+        // java.util.UUID constructor UUID(long a, long b) assumes the two long inputs a and b
+        // correspond to first half and second half of the 16-byte stream in big-endian,
+        // respectively, if the byte stream is serialized according to RFC 4122 (Sec. 4.1.2).
+        //
+        // For Java UUID 12345678-90AB-CDEF-1122-334455667788, the byte stream will be
+        // (uint8_t) {0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF, ....} according RFC 4122.
+        //
+        // According to Java UUID constructor document, the long parameter a should be always
+        // 0x12345678980ABCDEF regardless of host machine endianess. Thus, htobe64 is used to
+        // convert int64_t read directly, which will be in host-endian, to the big-endian required
+        // by Java constructor.
+        const int64_t (&uuid)[2] = nativeSensor.getUuid().i64;
+        env->CallVoidMethod(sensor, sensorOffsets.setUuid, htobe64(uuid[0]), htobe64(uuid[1]));
     }
     return sensor;
 }
@@ -212,32 +228,7 @@
         return false;
     }
 
-    Sensor const* const list = sensorList[index];
-    const SensorOffsets& sensorOffsets(gSensorOffsets);
-    jstring name = getInternedString(env, &list->getName());
-    jstring vendor = getInternedString(env, &list->getVendor());
-    jstring requiredPermission = getInternedString(env, &list->getRequiredPermission());
-    env->SetObjectField(sensor, sensorOffsets.name,      name);
-    env->SetObjectField(sensor, sensorOffsets.vendor,    vendor);
-    env->SetIntField(sensor, sensorOffsets.version,      list->getVersion());
-    env->SetIntField(sensor, sensorOffsets.handle,       list->getHandle());
-    env->SetFloatField(sensor, sensorOffsets.range,      list->getMaxValue());
-    env->SetFloatField(sensor, sensorOffsets.resolution, list->getResolution());
-    env->SetFloatField(sensor, sensorOffsets.power,      list->getPowerUsage());
-    env->SetIntField(sensor, sensorOffsets.minDelay,     list->getMinDelay());
-    env->SetIntField(sensor, sensorOffsets.fifoReservedEventCount,
-                     list->getFifoReservedEventCount());
-    env->SetIntField(sensor, sensorOffsets.fifoMaxEventCount,
-                     list->getFifoMaxEventCount());
-    env->SetObjectField(sensor, sensorOffsets.requiredPermission,
-                        requiredPermission);
-    env->SetIntField(sensor, sensorOffsets.maxDelay, list->getMaxDelay());
-    env->SetIntField(sensor, sensorOffsets.flags, list->getFlags());
-    if (env->CallBooleanMethod(sensor, sensorOffsets.setType, list->getType()) == JNI_FALSE) {
-        jstring stringType = getInternedString(env, &list->getStringType());
-        env->SetObjectField(sensor, sensorOffsets.stringType, stringType);
-    }
-    return true;
+    return translateNativeSensorToJavaSensor(env, sensor, *sensorList[index]) != NULL;
 }
 
 static void
diff --git a/core/jni/android_hardware_location_ContextHubService.cpp b/core/jni/android_hardware_location_ContextHubService.cpp
index 5c961d9..98d6b24 100644
--- a/core/jni/android_hardware_location_ContextHubService.cpp
+++ b/core/jni/android_hardware_location_ContextHubService.cpp
@@ -44,7 +44,6 @@
 static constexpr int HEADER_FIELD_HUB_HANDLE=2;
 static constexpr int HEADER_FIELD_APP_INSTANCE=3;
 
-
 namespace android {
 
 namespace {
@@ -164,9 +163,20 @@
     return db.hubInfo.hubs[hubHandle].hub_id;
 }
 
+static int get_app_instance_for_app_id(uint64_t app_id) {
+    auto end = db.appInstances.end();
+    for (auto current = db.appInstances.begin(); current != end; ++current) {
+        if (current->second.appInfo.app_name.id == app_id) {
+            return current->first;
+        }
+    }
+    ALOGD("Cannot find app for app instance %" PRIu64 ".", app_id);
+    return -1;
+}
+
 static int set_dest_app(hub_message_t *msg, int id) {
     if (!db.appInstances.count(id)) {
-        ALOGD("%s: Cannod find app for app instance %d", __FUNCTION__, id);
+        ALOGD("%s: Cannot find app for app instance %d", __FUNCTION__, id);
         return -1;
     }
 
@@ -301,7 +311,7 @@
     }
 }
 
-static int onMessageReceipt(int *header, int headerLen, char *msg, int msgLen) {
+static int onMessageReceipt(uint32_t *header, size_t headerLen, char *msg, size_t msgLen) {
     JNIEnv *env;
 
     if ((db.jniInfo.vm)->AttachCurrentThread(&env, nullptr) != JNI_OK) {
@@ -396,14 +406,9 @@
 int context_hub_callback(uint32_t hubId,
                          const struct hub_message_t *msg,
                          void *cookie) {
-    int msgHeader[MSG_HEADER_SIZE];
-
     if (!msg) {
         return -1;
     }
-
-    msgHeader[HEADER_FIELD_MSG_TYPE] = msg->message_type;
-
     if (!sanity_check_cookie(cookie, hubId)) {
         ALOGW("Incorrect cookie %" PRId32 " for cookie %p! Bailing",
               hubId, cookie);
@@ -411,17 +416,22 @@
         return -1;
     }
 
-    msgHeader[HEADER_FIELD_HUB_HANDLE] = *(uint32_t*)cookie;
+    uint32_t messageType = msg->message_type;
+    uint32_t hubHandle = *(uint32_t*) cookie;
 
-    if (msgHeader[HEADER_FIELD_MSG_TYPE] < CONTEXT_HUB_TYPE_PRIVATE_MSG_BASE &&
-        msgHeader[HEADER_FIELD_MSG_TYPE] != 0 ) {
-        handle_os_message(msgHeader[HEADER_FIELD_MSG_TYPE],
-                          msgHeader[HEADER_FIELD_HUB_HANDLE],
-                          (char *)msg->message,
-                          msg->message_len);
+    if (messageType < CONTEXT_HUB_TYPE_PRIVATE_MSG_BASE) {
+        handle_os_message(messageType, hubHandle, (char*) msg->message, msg->message_len);
     } else {
-        onMessageReceipt(msgHeader, sizeof(msgHeader),
-                         (char *)msg->message, msg->message_len);
+        int appHandle = get_app_instance_for_app_id(msg->app_name.id);
+        if (appHandle < 0) {
+            ALOGE("Filtering out message due to invalid App Instance.");
+        } else {
+            uint32_t msgHeader[MSG_HEADER_SIZE] = {};
+            msgHeader[HEADER_FIELD_MSG_TYPE] = messageType;
+            msgHeader[HEADER_FIELD_HUB_HANDLE] = hubHandle;
+            msgHeader[HEADER_FIELD_APP_INSTANCE] = appHandle;
+            onMessageReceipt(msgHeader, MSG_HEADER_SIZE, (char*) msg->message, msg->message_len);
+        }
     }
 
     return 0;
diff --git a/core/jni/android_os_Debug.cpp b/core/jni/android_os_Debug.cpp
index f870a89..e0bfecb 100644
--- a/core/jni/android_os_Debug.cpp
+++ b/core/jni/android_os_Debug.cpp
@@ -597,6 +597,13 @@
 
 static long get_allocated_vmalloc_memory() {
     char line[1024];
+    // Ignored tags that don't actually consume memory (ie remappings)
+    static const char* const ignored_tags[] = {
+            "ioremap",
+            "map_lowmem",
+            "vm_map_ram",
+            NULL
+    };
     long size, vmalloc_allocated_size = 0;
     FILE* fp = fopen("/proc/vmallocinfo", "r");
     if (fp == NULL) {
@@ -606,12 +613,17 @@
         if (fgets(line, 1024, fp) == NULL) {
             break;
         }
-
-        if (!strstr(line, "ioremap") && !strstr(line, "map_lowmem")) {
-            // Ignore ioremap and map_lowmem regions, since they don't actually consume memory
-            if (sscanf(line, "%*x-%*x %ld", &size) == 1) {
-                vmalloc_allocated_size += size;
+        bool valid_line = true;
+        int i = 0;
+        while (ignored_tags[i]) {
+            if (strstr(line, ignored_tags[i]) != NULL) {
+                valid_line = false;
+                break;
             }
+            i++;
+        }
+        if (valid_line && (sscanf(line, "%*x-%*x %ld", &size) == 1)) {
+            vmalloc_allocated_size += size;
         }
     }
     fclose(fp);
diff --git a/core/jni/android_util_MemoryIntArray.cpp b/core/jni/android_util_MemoryIntArray.cpp
new file mode 100644
index 0000000..dbe8ed3
--- /dev/null
+++ b/core/jni/android_util_MemoryIntArray.cpp
@@ -0,0 +1,219 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+#include "core_jni_helpers.h"
+#include <cutils/ashmem.h>
+#include <sys/mman.h>
+
+namespace android {
+
+static jint android_util_MemoryIntArray_create(JNIEnv* env, jobject clazz, jstring name,
+        jint size)
+{
+    if (name == NULL) {
+        jniThrowException(env, "java/io/IOException", "bad name");
+        return -1;
+    }
+
+    if (size <= 0) {
+        jniThrowException(env, "java/io/IOException", "bad size");
+        return -1;
+    }
+
+    const char* nameStr = env->GetStringUTFChars(name, NULL);
+    const int ashmemSize = sizeof(std::atomic_int) * size;
+    int fd = ashmem_create_region(nameStr, ashmemSize);
+    env->ReleaseStringUTFChars(name, nameStr);
+
+    if (fd < 0) {
+        jniThrowException(env, "java/io/IOException", "ashmem creation failed");
+        return -1;
+    }
+
+    if (ashmem_pin_region(fd, 0, 0) == ASHMEM_WAS_PURGED) {
+        jniThrowException(env, "java/io/IOException", "ashmem was purged");
+        return -1;
+    }
+
+    int setProtResult = ashmem_set_prot_region(fd, PROT_READ | PROT_WRITE);
+    if (setProtResult < 0) {
+        jniThrowException(env, "java/io/IOException", "cannot set ashmem prot mode");
+        return -1;
+    }
+
+    return fd;
+}
+
+static jlong android_util_MemoryIntArray_open(JNIEnv* env, jobject clazz, jint fd,
+    jboolean owner, jboolean writable)
+{
+    if (fd < 0) {
+        jniThrowException(env, "java/io/IOException", "bad file descriptor");
+        return -1;
+    }
+
+    int ashmemSize = ashmem_get_size_region(fd);
+    if (ashmemSize <= 0) {
+        jniThrowException(env, "java/io/IOException", "bad ashmem size");
+        return -1;
+    }
+
+    int protMode = (owner || writable) ? (PROT_READ | PROT_WRITE) : PROT_READ;
+    void* ashmemAddr = mmap(NULL, ashmemSize, protMode, MAP_SHARED, fd, 0);
+    if (ashmemAddr == MAP_FAILED) {
+        jniThrowException(env, "java/io/IOException", "cannot mmap ashmem");
+        return -1;
+    }
+
+    if (owner) {
+        int size = ashmemSize / sizeof(std::atomic_int);
+        new (ashmemAddr) std::atomic_int[size];
+    }
+
+    if (owner && !writable) {
+        int setProtResult = ashmem_set_prot_region(fd, PROT_READ);
+        if (setProtResult < 0) {
+            jniThrowException(env, "java/io/IOException", "cannot set ashmem prot mode");
+            return -1;
+        }
+    }
+
+    return reinterpret_cast<jlong>(ashmemAddr);
+}
+
+static void android_util_MemoryIntArray_close(JNIEnv* env, jobject clazz, jint fd,
+    jlong ashmemAddr, jboolean owner)
+{
+    if (fd < 0) {
+        jniThrowException(env, "java/io/IOException", "bad file descriptor");
+        return;
+    }
+
+    int ashmemSize = ashmem_get_size_region(fd);
+    if (ashmemSize <= 0) {
+        jniThrowException(env, "java/io/IOException", "bad ashmem size");
+        return;
+    }
+
+    int unmapResult = munmap(reinterpret_cast<void *>(ashmemAddr), ashmemSize);
+    if (unmapResult < 0) {
+        jniThrowException(env, "java/io/IOException", "munmap failed");
+        return;
+    }
+
+    // We don't deallocate the atomic ints we created with placement new in the ashmem
+    // region as the kernel we reclaim all pages when the ashmem region is destroyed.
+    if (owner && (ashmem_unpin_region(fd, 0, 0) != ASHMEM_IS_UNPINNED)) {
+        jniThrowException(env, "java/io/IOException", "ashmem unpinning failed");
+        return;
+    }
+
+    close(fd);
+}
+
+static jint android_util_MemoryIntArray_get(JNIEnv* env, jobject clazz,
+        jint fd, jlong address, jint index, jboolean owner)
+{
+    if (fd < 0) {
+        jniThrowException(env, "java/io/IOException", "bad file descriptor");
+        return -1;
+    }
+
+    bool unpin = false;
+
+    if (!owner) {
+        if (ashmem_pin_region(fd, 0, 0) == ASHMEM_WAS_PURGED) {
+            jniThrowException(env, "java/io/IOException", "ashmem region was purged");
+            return -1;
+        }
+        unpin = true;
+    }
+
+    std::atomic_int* value = reinterpret_cast<std::atomic_int*>(address) + index;
+    const int result = value->load(std::memory_order_relaxed);
+
+    if (unpin) {
+        ashmem_unpin_region(fd, 0, 0);
+    }
+
+    return result;
+}
+
+static void android_util_MemoryIntArray_set(JNIEnv* env, jobject clazz,
+        jint fd, jlong address, jint index, jint newValue, jboolean owner)
+{
+    if (fd < 0) {
+        jniThrowException(env, "java/io/IOException", "bad file descriptor");
+        return;
+    }
+
+    bool unpin = false;
+
+    if (!owner) {
+        if (ashmem_pin_region(fd, 0, 0) == ASHMEM_WAS_PURGED) {
+            jniThrowException(env, "java/io/IOException", "ashmem region was purged");
+            return;
+        }
+        unpin = true;
+    }
+
+    std::atomic_int* value = reinterpret_cast<std::atomic_int*>(address) + index;
+    value->store(newValue, std::memory_order_relaxed);
+
+    if (unpin) {
+        ashmem_unpin_region(fd, 0, 0);
+    }
+}
+
+static jint android_util_MemoryIntArray_size(JNIEnv* env, jobject clazz, jint fd) {
+    if (fd < 0) {
+        jniThrowException(env, "java/io/IOException", "bad file descriptor");
+        return -1;
+    }
+
+    // Use ASHMEM_GET_SIZE to find out if the fd refers to an ashmem region.
+    // ASHMEM_GET_SIZE should succeed for all ashmem regions, and the kernel
+    // should return ENOTTY for all other valid file descriptors
+    int ashmemSize = ashmem_get_size_region(fd);
+    if (ashmemSize < 0) {
+        if (errno == ENOTTY) {
+            // ENOTTY means that the ioctl does not apply to this object,
+            // i.e., it is not an ashmem region.
+            return -1;
+        }
+        // Some other error, throw exception
+        jniThrowIOException(env, errno);
+        return -1;
+    }
+    return ashmemSize / sizeof(std::atomic_int);
+}
+
+static const JNINativeMethod methods[] = {
+    {"nativeCreate",  "(Ljava/lang/String;I)I", (void*)android_util_MemoryIntArray_create},
+    {"nativeOpen",  "(IZZ)J", (void*)android_util_MemoryIntArray_open},
+    {"nativeClose", "(IJZ)V", (void*)android_util_MemoryIntArray_close},
+    {"nativeGet",  "(IJIZ)I", (void*)android_util_MemoryIntArray_get},
+    {"nativeSet", "(IJIIZ)V", (void*) android_util_MemoryIntArray_set},
+    {"nativeSize", "(I)I", (void*) android_util_MemoryIntArray_size},
+};
+
+int register_android_util_MemoryIntArray(JNIEnv* env)
+{
+    return RegisterMethodsOrDie(env, "android/util/MemoryIntArray", methods, NELEM(methods));
+}
+
+}
diff --git a/core/jni/android_view_RenderNode.cpp b/core/jni/android_view_RenderNode.cpp
index d3e18ed..a6db0f4 100644
--- a/core/jni/android_view_RenderNode.cpp
+++ b/core/jni/android_view_RenderNode.cpp
@@ -562,6 +562,16 @@
             bounds.top -= info.windowInsetTop;
             bounds.bottom -= info.windowInsetTop;
 
+            if (CC_LIKELY(transform.isPureTranslate())) {
+                // snap/round the computed bounds, so they match the rounding behavior
+                // of the clear done in SurfaceView#draw().
+                bounds.snapToPixelBoundaries();
+            } else {
+                // Conservatively round out so the punched hole (in the ZOrderOnTop = true case)
+                // doesn't extend beyond the other window
+                bounds.roundOut();
+            }
+
             auto functor = std::bind(
                 std::mem_fn(&SurfaceViewPositionUpdater::doUpdatePosition), this,
                 (jlong) info.canvasContext.getFrameNumber(),
diff --git a/core/jni/android_view_SurfaceControl.cpp b/core/jni/android_view_SurfaceControl.cpp
index 0590134..864a0bf 100644
--- a/core/jni/android_view_SurfaceControl.cpp
+++ b/core/jni/android_view_SurfaceControl.cpp
@@ -33,6 +33,7 @@
 #include <memory>
 #include <stdio.h>
 #include <ui/DisplayInfo.h>
+#include <ui/HdrCapabilities.h>
 #include <ui/FrameStats.h>
 #include <ui/Rect.h>
 #include <ui/Region.h>
@@ -83,6 +84,11 @@
     jmethodID init;
 } gWindowAnimationFrameStatsClassInfo;
 
+static struct {
+    jclass clazz;
+    jmethodID ctor;
+} gHdrCapabilitiesClassInfo;
+
 // ----------------------------------------------------------------------------
 
 static jlong nativeCreate(JNIEnv* env, jclass clazz, jobject sessionObj,
@@ -610,6 +616,22 @@
     return javaObjectForIBinder(env, ctrl->getHandle());
 }
 
+static jobject nativeGetHdrCapabilities(JNIEnv* env, jclass clazz, jobject tokenObject) {
+    sp<IBinder> token(ibinderForJavaObject(env, tokenObject));
+    if (token == NULL) return NULL;
+
+    HdrCapabilities capabilities;
+    SurfaceComposerClient::getHdrCapabilities(token, &capabilities);
+
+    const auto& types = capabilities.getSupportedHdrTypes();
+    auto typesArray = env->NewIntArray(types.size());
+    env->SetIntArrayRegion(typesArray, 0, types.size(), types.data());
+
+    return env->NewObject(gHdrCapabilitiesClassInfo.clazz, gHdrCapabilitiesClassInfo.ctor,
+            typesArray, capabilities.getDesiredMaxLuminance(),
+            capabilities.getDesiredMaxAverageLuminance(), capabilities.getDesiredMinLuminance());
+}
+
 // ----------------------------------------------------------------------------
 
 static const JNINativeMethod sSurfaceControlMethods[] = {
@@ -671,6 +693,8 @@
             (void*)nativeGetActiveConfig },
     {"nativeSetActiveConfig", "(Landroid/os/IBinder;I)Z",
             (void*)nativeSetActiveConfig },
+    {"nativeGetHdrCapabilities", "(Landroid/os/IBinder;)Landroid/view/Display$HdrCapabilities;",
+            (void*)nativeGetHdrCapabilities },
     {"nativeClearContentFrameStats", "(J)Z",
             (void*)nativeClearContentFrameStats },
     {"nativeGetContentFrameStats", "(JLandroid/view/WindowContentFrameStats;)Z",
@@ -733,6 +757,11 @@
             animFrameStatsClazz, "init", "(J[J)V");
     gWindowAnimationFrameStatsClassInfo.UNDEFINED_TIME_NANO = undefined_time_nano;
 
+    jclass hdrCapabilitiesClazz = FindClassOrDie(env, "android/view/Display$HdrCapabilities");
+    gHdrCapabilitiesClassInfo.clazz = MakeGlobalRefOrDie(env, hdrCapabilitiesClazz);
+    gHdrCapabilitiesClassInfo.ctor = GetMethodIDOrDie(env, hdrCapabilitiesClazz, "<init>",
+            "([IFFF)V");
+
     return err;
 }
 
diff --git a/core/jni/android_view_ThreadedRenderer.cpp b/core/jni/android_view_ThreadedRenderer.cpp
index 68c818e..650a0fc 100644
--- a/core/jni/android_view_ThreadedRenderer.cpp
+++ b/core/jni/android_view_ThreadedRenderer.cpp
@@ -669,7 +669,7 @@
     proxy->setContentDrawBounds(left, top, right, bottom);
 }
 
-static jboolean android_view_ThreadedRenderer_copySurfaceInto(JNIEnv* env,
+static jint android_view_ThreadedRenderer_copySurfaceInto(JNIEnv* env,
         jobject clazz, jobject jsurface, jobject jbitmap) {
     SkBitmap bitmap;
     GraphicsJNI::getSkBitmap(env, jbitmap, &bitmap);
@@ -783,7 +783,7 @@
     { "nRemoveFrameMetricsObserver",
             "(JJ)V",
             (void*)android_view_ThreadedRenderer_removeFrameMetricsObserver },
-    { "nCopySurfaceInto", "(Landroid/view/Surface;Landroid/graphics/Bitmap;)Z",
+    { "nCopySurfaceInto", "(Landroid/view/Surface;Landroid/graphics/Bitmap;)I",
                 (void*)android_view_ThreadedRenderer_copySurfaceInto },
 };
 
diff --git a/core/jni/android_app_ApplicationLoaders.cpp b/core/jni/com_android_internal_os_PathClassLoaderFactory.cpp
similarity index 85%
rename from core/jni/android_app_ApplicationLoaders.cpp
rename to core/jni/com_android_internal_os_PathClassLoaderFactory.cpp
index 89f22eb..a7a912c 100644
--- a/core/jni/android_app_ApplicationLoaders.cpp
+++ b/core/jni/com_android_internal_os_PathClassLoaderFactory.cpp
@@ -39,13 +39,13 @@
       reinterpret_cast<void*>(createClassloaderNamespace_native) },
 };
 
-static const char* const kApplicationLoadersPathName = "android/app/ApplicationLoaders";
+static const char* const kPathClassLoaderFactoryPathName = "com/android/internal/os/PathClassLoaderFactory";
 
 namespace android
 {
 
-int register_android_app_ApplicationLoaders(JNIEnv* env) {
-    return RegisterMethodsOrDie(env, kApplicationLoadersPathName, g_methods, NELEM(g_methods));
+int register_com_android_internal_os_PathClassLoaderFactory(JNIEnv* env) {
+    return RegisterMethodsOrDie(env, kPathClassLoaderFactoryPathName, g_methods, NELEM(g_methods));
 }
 
 } // namespace android
diff --git a/core/res/res/drawable-nodpi/default_wallpaper.png b/core/res/res/drawable-nodpi/default_wallpaper.png
index e9c4d5c..91ad252 100644
--- a/core/res/res/drawable-nodpi/default_wallpaper.png
+++ b/core/res/res/drawable-nodpi/default_wallpaper.png
Binary files differ
diff --git a/core/res/res/drawable-sw600dp-nodpi/default_wallpaper.png b/core/res/res/drawable-sw600dp-nodpi/default_wallpaper.png
index 9f3efa5..af8e251 100644
--- a/core/res/res/drawable-sw600dp-nodpi/default_wallpaper.png
+++ b/core/res/res/drawable-sw600dp-nodpi/default_wallpaper.png
Binary files differ
diff --git a/core/res/res/drawable-sw720dp-nodpi/default_wallpaper.png b/core/res/res/drawable-sw720dp-nodpi/default_wallpaper.png
index 8199e70..cb00d82 100644
--- a/core/res/res/drawable-sw720dp-nodpi/default_wallpaper.png
+++ b/core/res/res/drawable-sw720dp-nodpi/default_wallpaper.png
Binary files differ
diff --git a/core/res/res/layout-sw600dp/date_picker_dialog.xml b/core/res/res/layout-sw600dp/date_picker_dialog.xml
index f18485f..5e3ca14 100644
--- a/core/res/res/layout-sw600dp/date_picker_dialog.xml
+++ b/core/res/res/layout-sw600dp/date_picker_dialog.xml
@@ -21,4 +21,5 @@
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:spinnersShown="true"
-    android:calendarViewShown="true" />
+    android:calendarViewShown="true"
+    android:datePickerMode="@integer/date_picker_mode" />
diff --git a/core/res/res/layout/date_picker_dialog.xml b/core/res/res/layout/date_picker_dialog.xml
index 64ac1b9..8f36e95 100644
--- a/core/res/res/layout/date_picker_dialog.xml
+++ b/core/res/res/layout/date_picker_dialog.xml
@@ -21,4 +21,5 @@
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:spinnersShown="true"
-    android:calendarViewShown="false" />
+    android:calendarViewShown="false"
+    android:datePickerMode="@integer/date_picker_mode" />
diff --git a/core/res/res/layout/notification_material_action_list.xml b/core/res/res/layout/notification_material_action_list.xml
index ac37c4a..547d3ca 100644
--- a/core/res/res/layout/notification_material_action_list.xml
+++ b/core/res/res/layout/notification_material_action_list.xml
@@ -18,7 +18,7 @@
         android:id="@+id/actions_container"
         android:layout_width="match_parent"
         android:layout_height="wrap_content">
-    <LinearLayout
+    <com.android.internal.widget.NotificationActionListLayout
             android:id="@+id/actions"
             android:layout_width="match_parent"
             android:layout_height="56dp"
@@ -29,5 +29,5 @@
             android:background="@color/notification_action_list"
             >
         <!-- actions will be added here -->
-    </LinearLayout>
+    </com.android.internal.widget.NotificationActionListLayout>
 </FrameLayout>
diff --git a/core/res/res/layout/time_picker_dialog.xml b/core/res/res/layout/time_picker_dialog.xml
index 30fe910..d1f3902 100644
--- a/core/res/res/layout/time_picker_dialog.xml
+++ b/core/res/res/layout/time_picker_dialog.xml
@@ -21,4 +21,5 @@
     android:id="@+id/timePicker"
     android:layout_gravity="center_horizontal"
     android:layout_width="wrap_content"
-    android:layout_height="wrap_content" />
+    android:layout_height="wrap_content"
+    android:timePickerMode="@integer/time_picker_mode" />
diff --git a/core/res/res/values-af/strings.xml b/core/res/res/values-af/strings.xml
index 2b1aaf1..1bc1ed1 100644
--- a/core/res/res/values-af/strings.xml
+++ b/core/res/res/values-af/strings.xml
@@ -218,11 +218,9 @@
     <string name="bugreport_title" msgid="2667494803742548533">"Neem foutverslag"</string>
     <string name="bugreport_message" msgid="398447048750350456">"Dit sal inligting oor die huidige toestand van jou toestel insamel om as \'n e-posboodskap te stuur. Dit sal \'n tydjie neem vandat die foutverslag begin is totdat dit reg is om gestuur te word; wees asseblief geduldig."</string>
     <string name="bugreport_option_interactive_title" msgid="8635056131768862479">"Interaktiewe verslag"</string>
-    <!-- no translation found for bugreport_option_interactive_summary (229299488536107968) -->
-    <skip />
+    <string name="bugreport_option_interactive_summary" msgid="229299488536107968">"Gebruik dit in die meeste gevalle. Maak dit vir jou moontlik om die vordering van die verslag na te spoor, meer besonderhede oor die probleem in te voer en skermkiekies te neem. Dit sal dalk sommige afdelings wat minder gebruik word en waarvoor verslagdoening lank duur, weglaat."</string>
     <string name="bugreport_option_full_title" msgid="6354382025840076439">"Volle verslag"</string>
-    <!-- no translation found for bugreport_option_full_summary (7210859858969115745) -->
-    <skip />
+    <string name="bugreport_option_full_summary" msgid="7210859858969115745">"Gebruik hierdie opsie vir minimale stelselinmenging wanneer jou toestel nie reageer nie of te stadig is, of wanneer jy alle verslagafdelings benodig. Laat jou nie toe om meer besonderhede in te voer of bykomende skermkiekies te neem nie."</string>
     <plurals name="bugreport_countdown" formatted="false" msgid="6878900193900090368">
       <item quantity="other">Neem skermkiekie vir foutverslag oor <xliff:g id="NUMBER_1">%d</xliff:g> sekondes.</item>
       <item quantity="one">Neem skermkiekie vir foutverslag oor <xliff:g id="NUMBER_0">%d</xliff:g> sekonde.</item>
@@ -860,8 +858,7 @@
       <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> uur</item>
       <item quantity="one">1 uur</item>
     </plurals>
-    <!-- no translation found for now_string_shortest (8912796667087856402) -->
-    <skip />
+    <string name="now_string_shortest" msgid="8912796667087856402">"nou"</string>
     <!-- no translation found for duration_minutes_shortest (598436407511890455) -->
     <!-- no translation found for duration_hours_shortest (8300234116089026299) -->
     <!-- no translation found for duration_days_shortest (1363973360381363510) -->
@@ -968,6 +965,8 @@
     <string name="android_upgrading_title" msgid="1584192285441405746">"Android gradeer tans op..."</string>
     <string name="android_start_title" msgid="8418054686415318207">"Android begin tans …"</string>
     <string name="android_upgrading_fstrim" msgid="8036718871534640010">"Optimeer tans berging."</string>
+    <string name="android_upgrading_notification_title" msgid="1619393112444671028">"Android gradeer tans op"</string>
+    <string name="android_upgrading_notification_body" msgid="5761201379457064286">"Sommige programme sal dalk nie behoorlik werk voordat die opgradering voltooi is nie"</string>
     <string name="android_upgrading_apk" msgid="7904042682111526169">"Optimeer program <xliff:g id="NUMBER_0">%1$d</xliff:g> van <xliff:g id="NUMBER_1">%2$d</xliff:g>."</string>
     <string name="android_preparing_apk" msgid="8162599310274079154">"Berei tans <xliff:g id="APPNAME">%1$s</xliff:g> voor."</string>
     <string name="android_upgrading_starting_apps" msgid="451464516346926713">"Begin programme."</string>
@@ -1501,10 +1500,8 @@
     <string name="package_deleted_device_owner" msgid="7650577387493101353">"Deur jou administrateur uitgevee"</string>
     <string name="battery_saver_description" msgid="1960431123816253034">"Om batterylewe te help verbeter, verminder batterybespaarder jou toestel se werkverrigting en beperk vibrasie, liggingdienste en die meeste agtergronddata. E-pos, boodskappe en ander programme wat op sinkronisering staatmaak, sal dalk nie opdateer tensy jy hulle oopmaak nie.\n\nBatterybespaarder skakel outomaties af wanneer jou toestel besig is om te laai."</string>
     <string name="data_saver_description" msgid="6015391409098303235">"Databespaarder verhoed sommige programme om data in die agtergrond te stuur of te aanvaar om datagebruik te help verminder. \'n Program wat jy tans gebruik kan by data ingaan, maar sal dit dalk minder gereeld doen. Dit kan byvoorbeeld beteken dat prente nie wys totdat jy op hulle tik nie."</string>
-    <!-- no translation found for data_saver_enable_title (4674073932722787417) -->
-    <skip />
-    <!-- no translation found for data_saver_enable_button (7147735965247211818) -->
-    <skip />
+    <string name="data_saver_enable_title" msgid="4674073932722787417">"Skakel Databespaarder aan?"</string>
+    <string name="data_saver_enable_button" msgid="7147735965247211818">"Skakel aan"</string>
     <plurals name="zen_mode_duration_minutes_summary" formatted="false" msgid="4367877408072000848">
       <item quantity="other">%1$d minute lank (tot <xliff:g id="FORMATTEDTIME_1">%2$s</xliff:g>)</item>
       <item quantity="one">Een minuut lank (tot <xliff:g id="FORMATTEDTIME_0">%2$s</xliff:g>)</item>
diff --git a/core/res/res/values-am/strings.xml b/core/res/res/values-am/strings.xml
index 3892bfc..c325062 100644
--- a/core/res/res/values-am/strings.xml
+++ b/core/res/res/values-am/strings.xml
@@ -218,11 +218,9 @@
     <string name="bugreport_title" msgid="2667494803742548533">"የሳንካ ሪፖርት ውሰድ"</string>
     <string name="bugreport_message" msgid="398447048750350456">"ይሄ እንደ የኢሜይል መልዕክት አድርጎ የሚልከውን ስለመሣሪያዎ የአሁኑ ሁኔታ መረጃ ይሰበስባል። የሳንካ ሪፖርቱን ከመጀመር ጀምሮ እስኪላክ ድረስ ትንሽ ጊዜ ይወስዳል፤ እባክዎ ይታገሱ።"</string>
     <string name="bugreport_option_interactive_title" msgid="8635056131768862479">"መስተጋብራዊ ሪፖርት"</string>
-    <!-- no translation found for bugreport_option_interactive_summary (229299488536107968) -->
-    <skip />
+    <string name="bugreport_option_interactive_summary" msgid="229299488536107968">"በአብዛኛዎቹ ሁኔታዎች ላይ ይህን ይጠቀሙ። የሪፖርቱን ሂደት እንዲከታተሉ፣ ስለችግሩ ተጨማሪ ዝርዝሮችን እንዲያስገቡ እና ቅጽበታዊ ገጽ እይታዎችን እንዲያነሱ ያስችልዎታል። ሪፖርት ለማድረግ ረዥም ጊዜ የሚወስዱ አንዳንድ ብዙም ጥቅም ላይ የማይውሉ ክፍሎችን ሊያልፋቸው ይችላል።"</string>
     <string name="bugreport_option_full_title" msgid="6354382025840076439">"ሙሉ ሪፖርት"</string>
-    <!-- no translation found for bugreport_option_full_summary (7210859858969115745) -->
-    <skip />
+    <string name="bugreport_option_full_summary" msgid="7210859858969115745">"መሣሪያዎ ምላሽ የማይሰጥ ወይም በጣም ቀርፋፋ ከሆነ፣ ወይም ሁሉንም የሪፖርት ክፍሎች የሚያስፈልገዎት ከሆነ ለዝቅተኛ የስርዓት ጣልቃ-ገብነት ይህን አማራጭ ይጠቀሙ። ተጨማሪ ዝርዝሮችን እንዲያስገቡ ወይም ተጨማሪ ቅጽበታዊ ገጽ እይታዎችን እንዲያነሱ አያስችልዎትም።"</string>
     <plurals name="bugreport_countdown" formatted="false" msgid="6878900193900090368">
       <item quantity="one">በ<xliff:g id="NUMBER_1">%d</xliff:g> ሰከንዶች ውስጥ ለሳንካ ሪፖርት ቅጽበታዊ ገጽ ዕይታን በማንሳት ላይ።</item>
       <item quantity="other">በ<xliff:g id="NUMBER_1">%d</xliff:g> ሰከንዶች ውስጥ ለሳንካ ሪፖርት ቅጽበታዊ ገጽ ዕይታን በማንሳት ላይ።</item>
@@ -860,8 +858,7 @@
       <item quantity="one"><xliff:g id="COUNT">%d</xliff:g> ሰዓቶች</item>
       <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> ሰዓቶች</item>
     </plurals>
-    <!-- no translation found for now_string_shortest (8912796667087856402) -->
-    <skip />
+    <string name="now_string_shortest" msgid="8912796667087856402">"አሁን"</string>
     <!-- no translation found for duration_minutes_shortest (598436407511890455) -->
     <!-- no translation found for duration_hours_shortest (8300234116089026299) -->
     <!-- no translation found for duration_days_shortest (1363973360381363510) -->
@@ -968,6 +965,8 @@
     <string name="android_upgrading_title" msgid="1584192285441405746">"Android እያሻሻለ ነው..."</string>
     <string name="android_start_title" msgid="8418054686415318207">"Android በመጀመር ላይ ነው…"</string>
     <string name="android_upgrading_fstrim" msgid="8036718871534640010">"ማከማቻን በማመቻቸት ላይ።"</string>
+    <string name="android_upgrading_notification_title" msgid="1619393112444671028">"Android በማላቅ ላይ ነው"</string>
+    <string name="android_upgrading_notification_body" msgid="5761201379457064286">"አንዳንድ መተግበሪያዎች ማላቁ እስኪጠናቀቅ ድረስ በአግባቡ ላይሰሩ ይችላሉ"</string>
     <string name="android_upgrading_apk" msgid="7904042682111526169">"መተግበሪያዎች በአግባቡ በመጠቀም ላይ <xliff:g id="NUMBER_0">%1$d</xliff:g> ከ <xliff:g id="NUMBER_1">%2$d</xliff:g> ፡፡"</string>
     <string name="android_preparing_apk" msgid="8162599310274079154">"<xliff:g id="APPNAME">%1$s</xliff:g>ን ማዘጋጀት።"</string>
     <string name="android_upgrading_starting_apps" msgid="451464516346926713">"መተግበሪያዎችን በማስጀመር ላይ፡፡"</string>
@@ -1501,10 +1500,8 @@
     <string name="package_deleted_device_owner" msgid="7650577387493101353">"በእርስዎ አስተዳዳሪ ተሰርዟል"</string>
     <string name="battery_saver_description" msgid="1960431123816253034">"የባትሪ ዕድሜን ለማሻሻል ማገዝ እንዲቻል፣ ኢሜይል፣ መልዕክት አላላክ እና ሌሎች በማመሳሰል ላይ የሚመረኮዙ መተግበሪያዎች እርስዎ ካልከፈቱዋቸው በቀር አይዘምኑም።\n\nየባትሪ ኃይል ቆጣቢ የእርስዎ መሣሪያ ኃይል በሚሞላበት ጊዜ በራስ-ሰር ይጠፋል።"</string>
     <string name="data_saver_description" msgid="6015391409098303235">"የውሂብ አጠቃቀም እንዲቀንስ ለማገዝ ውሂብ ቆጣቢ አንዳንድ መተግበሪያዎች ከበስተጀርባ ሆነው ውሂብ እንዳይልኩ ወይም እንዳይቀበሉ ይከለክላቸዋል። በአሁኑ ጊዜ እየተጠቀሙበት ያለ መተግበሪያ ውሂብ ሊደርስ ይችላል፣ ነገር ግን ባነሰ ተደጋጋሚነት ሊሆን ይችላል። ይሄ ማለት ለምሳሌ ምስሎችን መታ እስኪያደርጓቸው ድረስ ላይታዩ ይችላሉ ማለት ነው።"</string>
-    <!-- no translation found for data_saver_enable_title (4674073932722787417) -->
-    <skip />
-    <!-- no translation found for data_saver_enable_button (7147735965247211818) -->
-    <skip />
+    <string name="data_saver_enable_title" msgid="4674073932722787417">"ውሂብ ቆጣቢ ይጥፋ?"</string>
+    <string name="data_saver_enable_button" msgid="7147735965247211818">"አብራ"</string>
     <plurals name="zen_mode_duration_minutes_summary" formatted="false" msgid="4367877408072000848">
       <item quantity="one">ለ%1$d ደቂቃዎች (እስከ <xliff:g id="FORMATTEDTIME_1">%2$s</xliff:g> ድረስ)</item>
       <item quantity="other">ለ%1$d ደቂቃዎች (እስከ <xliff:g id="FORMATTEDTIME_1">%2$s</xliff:g> ድረስ)</item>
diff --git a/core/res/res/values-ar/strings.xml b/core/res/res/values-ar/strings.xml
index 712ed7d..0841c82 100644
--- a/core/res/res/values-ar/strings.xml
+++ b/core/res/res/values-ar/strings.xml
@@ -226,11 +226,9 @@
     <string name="bugreport_title" msgid="2667494803742548533">"إعداد تقرير بالأخطاء"</string>
     <string name="bugreport_message" msgid="398447048750350456">"سيجمع هذا معلومات حول حالة جهازك الحالي لإرسالها كرسالة إلكترونية، ولكنه سيستغرق وقتًا قليلاً من بدء عرض تقرير بالأخطاء. وحتى يكون جاهزًا للإرسال، الرجاء الانتظار."</string>
     <string name="bugreport_option_interactive_title" msgid="8635056131768862479">"تقرير تفاعلي"</string>
-    <!-- no translation found for bugreport_option_interactive_summary (229299488536107968) -->
-    <skip />
+    <string name="bugreport_option_interactive_summary" msgid="229299488536107968">"يمكنك استخدام هذا الخيار في معظم الأحيان، حيث يتيح لك إمكانية تتبع مستوى تقدم التقرير والحصول على مزيد من المعلومات حول المشكلة وتسجيل لقطات شاشة. وقد يتم إغفال بعض الأقسام الأقل استخدامًا والتي تستغرق وقتًا طويلاً أثناء إعداد التقرير."</string>
     <string name="bugreport_option_full_title" msgid="6354382025840076439">"تقرير كامل"</string>
-    <!-- no translation found for bugreport_option_full_summary (7210859858969115745) -->
-    <skip />
+    <string name="bugreport_option_full_summary" msgid="7210859858969115745">"يمكنك استخدام هذا الخيار للحصول على حد أدنى من تدخل النظام عند توقف استجابة الجهاز أو عند بطئها الشديد أو عند الحاجة إلى جميع أقسام التقرير. ولا يسمح لك هذا الخيار بالحصول على مزيد من التفاصيل أو تسجيل لقطات شاشة إضافية."</string>
     <plurals name="bugreport_countdown" formatted="false" msgid="6878900193900090368">
       <item quantity="zero">سيتم التقاط لقطة شاشة لتقرير الخطأ خلال <xliff:g id="NUMBER_1">%d</xliff:g> ثانية.</item>
       <item quantity="two">سيتم التقاط لقطة شاشة لتقرير الخطأ خلال ثانيتين (<xliff:g id="NUMBER_1">%d</xliff:g>).</item>
@@ -888,8 +886,7 @@
       <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> من الساعات</item>
       <item quantity="one">ساعة واحدة</item>
     </plurals>
-    <!-- no translation found for now_string_shortest (8912796667087856402) -->
-    <skip />
+    <string name="now_string_shortest" msgid="8912796667087856402">"الآن"</string>
     <!-- no translation found for duration_minutes_shortest (598436407511890455) -->
     <!-- no translation found for duration_hours_shortest (8300234116089026299) -->
     <!-- no translation found for duration_days_shortest (1363973360381363510) -->
@@ -996,6 +993,8 @@
     <string name="android_upgrading_title" msgid="1584192285441405746">"‏جارٍ ترقية Android..."</string>
     <string name="android_start_title" msgid="8418054686415318207">"‏جارٍ تشغيل Android…"</string>
     <string name="android_upgrading_fstrim" msgid="8036718871534640010">"جارٍ تحسين السعة التخزينية."</string>
+    <string name="android_upgrading_notification_title" msgid="1619393112444671028">"‏جارٍ ترقية Android"</string>
+    <string name="android_upgrading_notification_body" msgid="5761201379457064286">"قد لا تعمل بعض التطبيقات بشكل مناسب إلا بعد انتهاء الترقية"</string>
     <string name="android_upgrading_apk" msgid="7904042682111526169">"جارٍ تحسين التطبيق <xliff:g id="NUMBER_0">%1$d</xliff:g> من <xliff:g id="NUMBER_1">%2$d</xliff:g>."</string>
     <string name="android_preparing_apk" msgid="8162599310274079154">"جارٍ تحضير <xliff:g id="APPNAME">%1$s</xliff:g>."</string>
     <string name="android_upgrading_starting_apps" msgid="451464516346926713">"بدء التطبيقات."</string>
@@ -1545,10 +1544,8 @@
     <string name="package_deleted_device_owner" msgid="7650577387493101353">"تم حذف الحزمة عن طريق المشرف"</string>
     <string name="battery_saver_description" msgid="1960431123816253034">"للمساعدة في تحسين عمر البطارية، يساعد موفر البطارية في تقليل أداء الجهاز ويفرض قيدًا على الاهتزاز وخدمات الموقع ومعظم بيانات الخلفية. قد لا يتم تحديث البريد الإلكتروني والمراسلة والتطبيقات الأخرى التي تعتمد على المزامنة ما لم تفتحها.\n\nيتم إيقاف موفر البطارية تلقائيًا أثناء شحن الجهاز."</string>
     <string name="data_saver_description" msgid="6015391409098303235">"للمساعدة في خفض استخدام البيانات، يمنع توفير البيانات بعض التطبيقات من إرسال البيانات وتلقيها في الخلفية. يمكن للتطبيق الذي تستخدمه الآن الوصول إلى البيانات، ولكن لا يمكنه تنفيذ ذلك كثيرًا. وهذا يعني أن الصور على سبيل المثال لا تظهر حتى تنقر عليها."</string>
-    <!-- no translation found for data_saver_enable_title (4674073932722787417) -->
-    <skip />
-    <!-- no translation found for data_saver_enable_button (7147735965247211818) -->
-    <skip />
+    <string name="data_saver_enable_title" msgid="4674073932722787417">"هل تريد تشغيل توفير البيانات؟"</string>
+    <string name="data_saver_enable_button" msgid="7147735965247211818">"تشغيل"</string>
     <plurals name="zen_mode_duration_minutes_summary" formatted="false" msgid="4367877408072000848">
       <item quantity="zero">‏لمدة أقل من دقيقة (%1$d) (حتى <xliff:g id="FORMATTEDTIME_1">%2$s</xliff:g>)</item>
       <item quantity="two">‏لمدة دقيقتين (%1$d) (حتى <xliff:g id="FORMATTEDTIME_1">%2$s</xliff:g>)</item>
diff --git a/core/res/res/values-az-rAZ/strings.xml b/core/res/res/values-az-rAZ/strings.xml
index 11f6ddc..a612641 100644
--- a/core/res/res/values-az-rAZ/strings.xml
+++ b/core/res/res/values-az-rAZ/strings.xml
@@ -218,11 +218,9 @@
     <string name="bugreport_title" msgid="2667494803742548533">"Baqı xəbər verin"</string>
     <string name="bugreport_message" msgid="398447048750350456">"Bu, sizin hazırkı cihaz durumu haqqında məlumat toplayacaq ki, elektron məktub şəklində göndərsin. Baq raportuna başlamaq üçün bir az vaxt lazım ola bilər, bir az səbr edin."</string>
     <string name="bugreport_option_interactive_title" msgid="8635056131768862479">"İnteraktiv hesabat"</string>
-    <!-- no translation found for bugreport_option_interactive_summary (229299488536107968) -->
-    <skip />
+    <string name="bugreport_option_interactive_summary" msgid="229299488536107968">"Bir çox hallarda bundan istifadə edin. Bu hesabatın gedişatını izləməyə, problem haqqında daha ətraflı məlumat daxil etməyə və skrinşot etməyə imkan verir. Bu, çox vaxt tələb edən bəzi az istifadə olunan bölmələri ixtisar edə bilər."</string>
     <string name="bugreport_option_full_title" msgid="6354382025840076439">"Tam hesabat"</string>
-    <!-- no translation found for bugreport_option_full_summary (7210859858969115745) -->
-    <skip />
+    <string name="bugreport_option_full_summary" msgid="7210859858969115745">"Cihazınız cavab verməyəndə və ya zəif işləyəndə və ya bütün hesabat bölmələri lazım olanda minimum sistem müdaxiləsi üçün bu seçimdən istifadə edin. Ətraflı məlumat daxil etməyə imkan vermir və ya əlavə skrinşot çəkmir."</string>
     <plurals name="bugreport_countdown" formatted="false" msgid="6878900193900090368">
       <item quantity="other">Baq hesabatı üçün <xliff:g id="NUMBER_1">%d</xliff:g> saniyədə sktinşot çəkilir.</item>
       <item quantity="one">Baq hesabatı üçün <xliff:g id="NUMBER_0">%d</xliff:g> saniyədə skrinşot çəkilir.</item>
@@ -860,8 +858,7 @@
       <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> saat</item>
       <item quantity="one">1 saat</item>
     </plurals>
-    <!-- no translation found for now_string_shortest (8912796667087856402) -->
-    <skip />
+    <string name="now_string_shortest" msgid="8912796667087856402">"indi"</string>
     <!-- no translation found for duration_minutes_shortest (598436407511890455) -->
     <!-- no translation found for duration_hours_shortest (8300234116089026299) -->
     <!-- no translation found for duration_days_shortest (1363973360381363510) -->
@@ -968,6 +965,8 @@
     <string name="android_upgrading_title" msgid="1584192285441405746">"Android təkmilləşdirilir..."</string>
     <string name="android_start_title" msgid="8418054686415318207">"Android işə başlayır..."</string>
     <string name="android_upgrading_fstrim" msgid="8036718871534640010">"Yaddaş optimallaşdırılır."</string>
+    <string name="android_upgrading_notification_title" msgid="1619393112444671028">"Android təkmilləşdirilir"</string>
+    <string name="android_upgrading_notification_body" msgid="5761201379457064286">"Güncəllənmə tamamlanana kimi bəzi tətbiqlər düzgün işləməyə bilər"</string>
     <string name="android_upgrading_apk" msgid="7904042682111526169">"<xliff:g id="NUMBER_1">%2$d</xliff:g> əddədən <xliff:g id="NUMBER_0">%1$d</xliff:g> tətbiq optimallaşır."</string>
     <string name="android_preparing_apk" msgid="8162599310274079154">"<xliff:g id="APPNAME">%1$s</xliff:g> proqramının hazırlanması."</string>
     <string name="android_upgrading_starting_apps" msgid="451464516346926713">"Tətbiqlər başladılır."</string>
@@ -1501,10 +1500,8 @@
     <string name="package_deleted_device_owner" msgid="7650577387493101353">"Administratorunuz tərəfindən silinib"</string>
     <string name="battery_saver_description" msgid="1960431123816253034">"Batareyanın istismar müddətini təkmilləşdirmək üçün batareya qənaəti cihazınızın məhsuldarlığını azaldır və titrətmə, məkan xidmətləri və ən son fon məlumatlarını məhdudlaşdırır. Sinxronlaşmaya arxayın olan e-poçt, mesajlaşma və digər proqramlar siz onları açmayana kimi yenilənməyə bilər.\n\nCihazınız doldurulan zaman batareya qənaəti avtomatik olaraq sönür."</string>
     <string name="data_saver_description" msgid="6015391409098303235">"Data istifadəsini azalatmaq üçün, Data Qanaəti bəzi tətbiqlərin arxafonda data göndərməsini və qəbulunun qarşısını alır. Hazırda istifadə etdiyiniz tətbiq dataya daxil ola bilər, lakin çox az hissəsini tez-tez edə bilər. Bu o deməkdir ki, məsələn, üzərinə tıklamadıqca o şəkillər göstərilməyəcək."</string>
-    <!-- no translation found for data_saver_enable_title (4674073932722787417) -->
-    <skip />
-    <!-- no translation found for data_saver_enable_button (7147735965247211818) -->
-    <skip />
+    <string name="data_saver_enable_title" msgid="4674073932722787417">"Data Qənaəti aktiv edilsin?"</string>
+    <string name="data_saver_enable_button" msgid="7147735965247211818">"Aktivləşdirin"</string>
     <plurals name="zen_mode_duration_minutes_summary" formatted="false" msgid="4367877408072000848">
       <item quantity="other"> %1$d dəqiqəlik (saat <xliff:g id="FORMATTEDTIME_1">%2$s</xliff:g> radəsinə qədər)</item>
       <item quantity="one">Bir dəqiqəlik (saat <xliff:g id="FORMATTEDTIME_0">%2$s</xliff:g> radəsinə qədər)</item>
diff --git a/core/res/res/values-b+sr+Latn/strings.xml b/core/res/res/values-b+sr+Latn/strings.xml
index 57e53c3..876ee89 100644
--- a/core/res/res/values-b+sr+Latn/strings.xml
+++ b/core/res/res/values-b+sr+Latn/strings.xml
@@ -220,11 +220,9 @@
     <string name="bugreport_title" msgid="2667494803742548533">"Napravi izveštaj o grešci"</string>
     <string name="bugreport_message" msgid="398447048750350456">"Ovim će se prikupiti informacije o trenutnom stanju uređaja kako bi bile poslate u poruci e-pošte. Od započinjanja izveštaja o grešci do trenutka za njegovo slanje proći će neko vreme; budite strpljivi."</string>
     <string name="bugreport_option_interactive_title" msgid="8635056131768862479">"Interaktiv. izveštaj"</string>
-    <!-- no translation found for bugreport_option_interactive_summary (229299488536107968) -->
-    <skip />
+    <string name="bugreport_option_interactive_summary" msgid="229299488536107968">"Koristite ovo u većini slučajeva. To vam omogućava da pratite napredak izveštaja, da unosite dodatne detalje o problemu i da snimate snimke ekrana. Verovatno će izostaviti neke manje korišćene odeljke za koje pravljenje izveštaja dugo traje."</string>
     <string name="bugreport_option_full_title" msgid="6354382025840076439">"Kompletan izveštaj"</string>
-    <!-- no translation found for bugreport_option_full_summary (7210859858969115745) -->
-    <skip />
+    <string name="bugreport_option_full_summary" msgid="7210859858969115745">"Koristite ovu opciju radi minimalnih sistemskih smetnji kada uređaj ne reaguje, prespor je ili su vam potrebni svi odeljci izveštaja. Ne dozvoljava vam unos dodatnih detalja niti snimanje dodatnih snimaka ekrana."</string>
     <plurals name="bugreport_countdown" formatted="false" msgid="6878900193900090368">
       <item quantity="one">Napravićemo snimak ekrana radi izveštaja o grešci za <xliff:g id="NUMBER_1">%d</xliff:g> sekundu.</item>
       <item quantity="few">Napravićemo snimak ekrana radi izveštaja o grešci za <xliff:g id="NUMBER_1">%d</xliff:g> sekunde.</item>
@@ -867,8 +865,7 @@
       <item quantity="few"><xliff:g id="COUNT">%d</xliff:g> sata</item>
       <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> sati</item>
     </plurals>
-    <!-- no translation found for now_string_shortest (8912796667087856402) -->
-    <skip />
+    <string name="now_string_shortest" msgid="8912796667087856402">"sada"</string>
     <!-- no translation found for duration_minutes_shortest (598436407511890455) -->
     <!-- no translation found for duration_hours_shortest (8300234116089026299) -->
     <!-- no translation found for duration_days_shortest (1363973360381363510) -->
@@ -975,6 +972,8 @@
     <string name="android_upgrading_title" msgid="1584192285441405746">"Android se nadograđuje…"</string>
     <string name="android_start_title" msgid="8418054686415318207">"Android se pokreće…"</string>
     <string name="android_upgrading_fstrim" msgid="8036718871534640010">"Memorija se optimizuje."</string>
+    <string name="android_upgrading_notification_title" msgid="1619393112444671028">"Android se nadograđuje…"</string>
+    <string name="android_upgrading_notification_body" msgid="5761201379457064286">"Neke aplikacije možda neće ispravno funkcionisati dok se nadogradnja ne dovrši"</string>
     <string name="android_upgrading_apk" msgid="7904042682111526169">"Optimizovanje aplikacije <xliff:g id="NUMBER_0">%1$d</xliff:g> od <xliff:g id="NUMBER_1">%2$d</xliff:g>."</string>
     <string name="android_preparing_apk" msgid="8162599310274079154">"Priprema se <xliff:g id="APPNAME">%1$s</xliff:g>."</string>
     <string name="android_upgrading_starting_apps" msgid="451464516346926713">"Pokretanje aplikacija."</string>
@@ -1512,10 +1511,8 @@
     <string name="package_deleted_device_owner" msgid="7650577387493101353">"Izbrisao je vaš admiistrator"</string>
     <string name="battery_saver_description" msgid="1960431123816253034">"Da bi produžila vreme trajanja baterije, ušteda baterije smanjuje performanse uređaja i ograničava vibraciju, usluge lokacije i većinu pozadinskih podataka. Imejl, razmena poruka i druge aplikacije koje se oslanjaju na sinhronizaciju možda neće da se ažuriraju ako ih ne otvorite.\n\nUšteda baterije se automatski isključuje kada se uređaj puni."</string>
     <string name="data_saver_description" msgid="6015391409098303235">"Da bi se smanjila potrošnja podataka, Ušteda podataka sprečava neke aplikacije da šalju ili primaju podatke u pozadini. Aplikacija koju trenutno koristite može da pristupa podacima, ali će to činiti ređe. Na primer, slike se neće prikazivati dok ih ne dodirnete."</string>
-    <!-- no translation found for data_saver_enable_title (4674073932722787417) -->
-    <skip />
-    <!-- no translation found for data_saver_enable_button (7147735965247211818) -->
-    <skip />
+    <string name="data_saver_enable_title" msgid="4674073932722787417">"Uključiti Uštedu podataka?"</string>
+    <string name="data_saver_enable_button" msgid="7147735965247211818">"Uključi"</string>
     <plurals name="zen_mode_duration_minutes_summary" formatted="false" msgid="4367877408072000848">
       <item quantity="one">%1$d minut (do <xliff:g id="FORMATTEDTIME_1">%2$s</xliff:g>)</item>
       <item quantity="few">%1$d minuta (do <xliff:g id="FORMATTEDTIME_1">%2$s</xliff:g>)</item>
diff --git a/core/res/res/values-be-rBY/strings.xml b/core/res/res/values-be-rBY/strings.xml
index ce9df69..871685b 100644
--- a/core/res/res/values-be-rBY/strings.xml
+++ b/core/res/res/values-be-rBY/strings.xml
@@ -222,11 +222,9 @@
     <string name="bugreport_title" msgid="2667494803742548533">"Справаздача пра памылку"</string>
     <string name="bugreport_message" msgid="398447048750350456">"Будзе збiрацца iнфармацыя пра бягучы стан прылады, якая будзе адпраўляцца на электронную пошту. Стварэнне справаздачы пра памылкi зойме некаторы час."</string>
     <string name="bugreport_option_interactive_title" msgid="8635056131768862479">"Інтэрактыўная справаздача"</string>
-    <!-- no translation found for bugreport_option_interactive_summary (229299488536107968) -->
-    <skip />
+    <string name="bugreport_option_interactive_summary" msgid="229299488536107968">"Выкарыстоўвайце ў большасці выпадкаў. Гэта дазваляе сачыць за ходам справаздачы, уводзіць дадатковыя звесткі аб праблеме і рабіць здымкі экрана. Могуць быць прапушчаны некаторыя раздзелы, якія выкарыстоўваюцца менш і паведаміць пра якія зойме шмат часу."</string>
     <string name="bugreport_option_full_title" msgid="6354382025840076439">"Поўная справаздача"</string>
-    <!-- no translation found for bugreport_option_full_summary (7210859858969115745) -->
-    <skip />
+    <string name="bugreport_option_full_summary" msgid="7210859858969115745">"Выкарыстоўвайце гэту опцыю, каб забяспечыць мінімальнае ўмяшанне сістэмы, калі прылада не адказвае ці працуе занадта павольна, або калі вам патрэбны ўсе раздзелы справаздачы. Выкарыстоўваючы гэту опцыю, вы не зможаце ўвесці больш падрабязную інфармацыю або зрабіць дадатковыя здымкі экрана."</string>
     <plurals name="bugreport_countdown" formatted="false" msgid="6878900193900090368">
       <item quantity="one">Здымак экрана для справаздачы пра памылкі будзе зроблены праз <xliff:g id="NUMBER_1">%d</xliff:g> секунду.</item>
       <item quantity="few">Здымак экрана для справаздачы пра памылкі будзе зроблены праз <xliff:g id="NUMBER_1">%d</xliff:g> секунды.</item>
@@ -874,8 +872,7 @@
       <item quantity="many"><xliff:g id="COUNT">%d</xliff:g> гадзін</item>
       <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> гадзіны</item>
     </plurals>
-    <!-- no translation found for now_string_shortest (8912796667087856402) -->
-    <skip />
+    <string name="now_string_shortest" msgid="8912796667087856402">"зараз"</string>
     <!-- no translation found for duration_minutes_shortest (598436407511890455) -->
     <!-- no translation found for duration_hours_shortest (8300234116089026299) -->
     <!-- no translation found for duration_days_shortest (1363973360381363510) -->
@@ -982,6 +979,8 @@
     <string name="android_upgrading_title" msgid="1584192285441405746">"Абнаўленне Android..."</string>
     <string name="android_start_title" msgid="8418054686415318207">"Android запускаецца..."</string>
     <string name="android_upgrading_fstrim" msgid="8036718871534640010">"Аптымізацыя сховішча."</string>
+    <string name="android_upgrading_notification_title" msgid="1619393112444671028">"Абнаўленне Android"</string>
+    <string name="android_upgrading_notification_body" msgid="5761201379457064286">"Пэўныя праграмы могуць не працаваць належным чынам, пакуль не скончыцца абнаўленне"</string>
     <string name="android_upgrading_apk" msgid="7904042682111526169">"Аптымізацыя прыкладання <xliff:g id="NUMBER_0">%1$d</xliff:g> з <xliff:g id="NUMBER_1">%2$d</xliff:g>."</string>
     <string name="android_preparing_apk" msgid="8162599310274079154">"Падрыхтоўка <xliff:g id="APPNAME">%1$s</xliff:g>."</string>
     <string name="android_upgrading_starting_apps" msgid="451464516346926713">"Запуск прыкладанняў."</string>
@@ -1523,10 +1522,8 @@
     <string name="package_deleted_device_owner" msgid="7650577387493101353">"Выдалена вашым адміністратарам"</string>
     <string name="battery_saver_description" msgid="1960431123816253034">"Каб падоўжыць час працы акумулятара, у рэжыме эканоміі зараду памяншаецца прадукцыйнасць вашай прылады, абмяжоўваецца выкарыстанне вібрацыі, службаў вызначэння месцазнаходжання і большасці задач фонавай перадачы даных. Электронная пошта, абмен паведамленнямі і іншыя праграмы, якія выкарыстоўваюць сінхранізацыю, могуць не абнаўляцца, пакуль вы іх не адкрыеце.\n\nРэжым эканоміі зараду адключаецца аўтаматычна, калі прылада зараджаецца."</string>
     <string name="data_saver_description" msgid="6015391409098303235">"Каб паменшыць выкарыстанне даных, Эканомія трафіку не дазваляе некаторым праграмам адпраўляць ці атрымліваць даныя ў фонавым рэжыме. Праграма, якую вы зараз выкарыстоўваеце, можа атрымліваць доступ да даных, але можа рабіць гэта радзей. Гэта можа азначаць, напрыклад, што відарысы не паказваюцца, пакуль вы не дакраняцеся да іх."</string>
-    <!-- no translation found for data_saver_enable_title (4674073932722787417) -->
-    <skip />
-    <!-- no translation found for data_saver_enable_button (7147735965247211818) -->
-    <skip />
+    <string name="data_saver_enable_title" msgid="4674073932722787417">"Уключыць Эканомію трафіку?"</string>
+    <string name="data_saver_enable_button" msgid="7147735965247211818">"Уключыць"</string>
     <plurals name="zen_mode_duration_minutes_summary" formatted="false" msgid="4367877408072000848">
       <item quantity="one">На %1$d хвіліну (да <xliff:g id="FORMATTEDTIME_1">%2$s</xliff:g>)</item>
       <item quantity="few">На %1$d хвіліны (да <xliff:g id="FORMATTEDTIME_1">%2$s</xliff:g>)</item>
diff --git a/core/res/res/values-bg/strings.xml b/core/res/res/values-bg/strings.xml
index 4ab1fb4..f6b746d 100644
--- a/core/res/res/values-bg/strings.xml
+++ b/core/res/res/values-bg/strings.xml
@@ -218,11 +218,9 @@
     <string name="bugreport_title" msgid="2667494803742548533">"Сигнал за програмна грешка"</string>
     <string name="bugreport_message" msgid="398447048750350456">"По този начин ще се събере информация за текущото състояние на устройството ви, която да се изпрати като имейл съобщение. След стартирането на процеса ще мине известно време, докато сигналът за програмна грешка бъде готов за подаване. Моля, имайте търпение."</string>
     <string name="bugreport_option_interactive_title" msgid="8635056131768862479">"Интерактивен сигнал"</string>
-    <!-- no translation found for bugreport_option_interactive_summary (229299488536107968) -->
-    <skip />
+    <string name="bugreport_option_interactive_summary" msgid="229299488536107968">"Използвайте тази опция в повечето случаи. Тя ви позволява да следите напредъка на сигнала, да въвеждате допълнителни подробности за проблема и да правите екранни снимки. Възможно е да бъдат пропуснати някои по-рядко използвани секции, за които подаването на сигнал отнема дълго време."</string>
     <string name="bugreport_option_full_title" msgid="6354382025840076439">"Пълен сигнал"</string>
-    <!-- no translation found for bugreport_option_full_summary (7210859858969115745) -->
-    <skip />
+    <string name="bugreport_option_full_summary" msgid="7210859858969115745">"Използвайте тази опция, за да възпрепятствате минимално работата на системата, когато устройството не реагира, функционира твърде бавно или са ви нужни всички секции за подаване на сигнал. Не можете да въвеждате други подробности, нито да правите допълнителни екранни снимки."</string>
     <plurals name="bugreport_countdown" formatted="false" msgid="6878900193900090368">
       <item quantity="other">Екранната снимка за сигнала за програмна грешка ще бъде направена след <xliff:g id="NUMBER_1">%d</xliff:g> секунди.</item>
       <item quantity="one">Екранната снимка за сигнала за програмна грешка ще бъде направена след <xliff:g id="NUMBER_0">%d</xliff:g> секунда.</item>
@@ -860,8 +858,7 @@
       <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> часа</item>
       <item quantity="one">1 час</item>
     </plurals>
-    <!-- no translation found for now_string_shortest (8912796667087856402) -->
-    <skip />
+    <string name="now_string_shortest" msgid="8912796667087856402">"сега"</string>
     <!-- no translation found for duration_minutes_shortest (598436407511890455) -->
     <!-- no translation found for duration_hours_shortest (8300234116089026299) -->
     <!-- no translation found for duration_days_shortest (1363973360381363510) -->
@@ -968,6 +965,8 @@
     <string name="android_upgrading_title" msgid="1584192285441405746">"Android се надстройва..."</string>
     <string name="android_start_title" msgid="8418054686415318207">"Android се стартира…"</string>
     <string name="android_upgrading_fstrim" msgid="8036718871534640010">"Хранилището се оптимизира."</string>
+    <string name="android_upgrading_notification_title" msgid="1619393112444671028">"Android се надстройва"</string>
+    <string name="android_upgrading_notification_body" msgid="5761201379457064286">"Някои приложения може да не работят правилно, докато надстройването не завърши"</string>
     <string name="android_upgrading_apk" msgid="7904042682111526169">"Оптимизира се приложение <xliff:g id="NUMBER_0">%1$d</xliff:g> от <xliff:g id="NUMBER_1">%2$d</xliff:g>."</string>
     <string name="android_preparing_apk" msgid="8162599310274079154">"<xliff:g id="APPNAME">%1$s</xliff:g> се подготвя."</string>
     <string name="android_upgrading_starting_apps" msgid="451464516346926713">"Приложенията се стартират."</string>
@@ -1501,10 +1500,8 @@
     <string name="package_deleted_device_owner" msgid="7650577387493101353">"Изтрито от администратора ви"</string>
     <string name="battery_saver_description" msgid="1960431123816253034">"С цел удължаване на живота на батерията режимът за запазването й намалява ефективността на устройството ви и ограничава вибрирането, услугите за местоположение и повечето данни на заден план. Приложенията за електронна поща, съобщения и др., които разчитат на синхронизиране, може да не се актуализират, освен ако не ги отворите.\n\nРежимът за запазване на батерията се изключва автоматично, когато устройството ви се зарежда."</string>
     <string name="data_saver_description" msgid="6015391409098303235">"С цел намаляване на преноса на данни функцията за икономия на данни не позволява на някои приложения да изпращат или получават данни на заден план. Понастоящем използвано от вас приложение може да осъществява достъп до информацията, но по-рядко. Това например може да означава, че изображенията не се показват, докато не ги докоснете."</string>
-    <!-- no translation found for data_saver_enable_title (4674073932722787417) -->
-    <skip />
-    <!-- no translation found for data_saver_enable_button (7147735965247211818) -->
-    <skip />
+    <string name="data_saver_enable_title" msgid="4674073932722787417">"Ще вкл. ли Икономия на данни?"</string>
+    <string name="data_saver_enable_button" msgid="7147735965247211818">"Включване"</string>
     <plurals name="zen_mode_duration_minutes_summary" formatted="false" msgid="4367877408072000848">
       <item quantity="other">За %1$d минути (до <xliff:g id="FORMATTEDTIME_1">%2$s</xliff:g>)</item>
       <item quantity="one">За една минута (до <xliff:g id="FORMATTEDTIME_0">%2$s</xliff:g>)</item>
diff --git a/core/res/res/values-bn-rBD/strings.xml b/core/res/res/values-bn-rBD/strings.xml
index edb9aec..6ec49dd 100644
--- a/core/res/res/values-bn-rBD/strings.xml
+++ b/core/res/res/values-bn-rBD/strings.xml
@@ -218,11 +218,9 @@
     <string name="bugreport_title" msgid="2667494803742548533">"ত্রুটির প্রতিবেদন করুন"</string>
     <string name="bugreport_message" msgid="398447048750350456">"এটি একটি ই-মেল বার্তা পাঠানোর জন্য আপনার ডিভাইসের বর্তমান অবস্থা সম্পর্কে তথ্য সংগ্রহ করবে৷ ত্রুটির প্রতিবেদন শুরুর সময় থেকে এটি পাঠানোর জন্য প্রস্তুত হতে কিছুটা সময় নেবে; দয়া করে ধৈর্য রাখুন৷"</string>
     <string name="bugreport_option_interactive_title" msgid="8635056131768862479">"ইন্টারেক্টিভ প্রতিবেদন"</string>
-    <!-- no translation found for bugreport_option_interactive_summary (229299488536107968) -->
-    <skip />
+    <string name="bugreport_option_interactive_summary" msgid="229299488536107968">"বেশিরভাগ পরিস্থিতিতে এটিকে ব্যবহার করুন৷ এটি আপনাকে প্রতিবেদনের কাজ কতটা হয়েছে তার উপর নজর রাখতে দেয়, সমস্যাটির সম্পর্কে আরো অনেক কিছু লিখতে দেয় এবং স্ক্রীনশটগুলি নিতে দেয়৷ এটি হয়ত প্রতিবেদন করতে খুব বেশি সময় নেয় এমনকি কম-ব্যবহৃত বিভাগগুলি সরিয়ে দিতে পারে৷"</string>
     <string name="bugreport_option_full_title" msgid="6354382025840076439">"সম্পূর্ণ প্রতিবেদন"</string>
-    <!-- no translation found for bugreport_option_full_summary (7210859858969115745) -->
-    <skip />
+    <string name="bugreport_option_full_summary" msgid="7210859858969115745">"যখন আপনার ডিভাইসটি প্রতিক্রিয়াবিহীন থাকে বা খুবই ধীর চলে বা যখন আপনার সমস্ত প্রতিবেদন বিভাগগুলির প্রয়োজন হয় তখন ন্যূনতম সিস্টেম হস্তক্ষেপের জন্য এই বিকল্পটি ব্যবহার করুন৷ আপনাকে আরো বিশদ বিবরণ প্রবেশ করানোর বা অতিরিক্ত স্ক্রীনশর্ট নেওয়ার মঞ্জুরি দেয় না৷"</string>
     <plurals name="bugreport_countdown" formatted="false" msgid="6878900193900090368">
       <item quantity="one"><xliff:g id="NUMBER_1">%d</xliff:g> সেকেন্ডের মধ্যে ত্রুটির প্রতিবেদনের জন্য স্ক্রীনশট নেওয়া হচ্ছে৷</item>
       <item quantity="other"><xliff:g id="NUMBER_1">%d</xliff:g> সেকেন্ডের মধ্যে ত্রুটির প্রতিবেদনের জন্য স্ক্রীনশট নেওয়া হচ্ছে৷</item>
@@ -860,8 +858,7 @@
       <item quantity="one"><xliff:g id="COUNT">%d</xliff:g> ঘণ্টা</item>
       <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> ঘণ্টা</item>
     </plurals>
-    <!-- no translation found for now_string_shortest (8912796667087856402) -->
-    <skip />
+    <string name="now_string_shortest" msgid="8912796667087856402">"এখন"</string>
     <!-- no translation found for duration_minutes_shortest (598436407511890455) -->
     <!-- no translation found for duration_hours_shortest (8300234116089026299) -->
     <!-- no translation found for duration_days_shortest (1363973360381363510) -->
@@ -968,6 +965,8 @@
     <string name="android_upgrading_title" msgid="1584192285441405746">"Android আপগ্রেড করা হচ্ছে..."</string>
     <string name="android_start_title" msgid="8418054686415318207">"Android চালু হচ্ছে…"</string>
     <string name="android_upgrading_fstrim" msgid="8036718871534640010">"সঞ্চয়স্থান অপ্টিমাইজ করা হচ্ছে৷"</string>
+    <string name="android_upgrading_notification_title" msgid="1619393112444671028">"Android আপগ্রেড করা হচ্ছে"</string>
+    <string name="android_upgrading_notification_body" msgid="5761201379457064286">"আপগ্রেড সম্পন্ন না হওয়া পর্যন্ত কিছু অ্যাপ্লিকেশান সঠিকভাবে কাজ নাও করতে পারে"</string>
     <string name="android_upgrading_apk" msgid="7904042682111526169">"<xliff:g id="NUMBER_1">%2$d</xliff:g>টির মধ্যে <xliff:g id="NUMBER_0">%1$d</xliff:g>টি অ্যাপ্লিকেশান অপ্টিমাইজ করা হচ্ছে৷"</string>
     <string name="android_preparing_apk" msgid="8162599310274079154">"<xliff:g id="APPNAME">%1$s</xliff:g> প্রস্তুত করা হচ্ছে৷"</string>
     <string name="android_upgrading_starting_apps" msgid="451464516346926713">"অ্যাপ্লিকেশানগুলি শুরু করা হচ্ছে৷"</string>
@@ -1501,10 +1500,8 @@
     <string name="package_deleted_device_owner" msgid="7650577387493101353">"আপনার প্রশাসক দ্বারা মুছে ফেলা হয়েছে"</string>
     <string name="battery_saver_description" msgid="1960431123816253034">"ব্যাটরির লাইফ উন্নত করতে সহায়তা করতে, ব্যাটারি সাশ্রয়কারী আপনার ডিভাইসের কার্যসম্পাদনা হ্রাস করে এবং কম্পন, অবস্থান পরিষেবাসমূহ এবং অধিকাংশ ব্যাকগ্রাউন্ড ডেটা সীমিত করে৷ ইমেল, বার্তাপ্রেরণ এবং অন্যান্য অ্যাপ্লিকেশানগুলিকে যেগুলি সিঙ্কের উপর নির্ভর করে সেগুলিকে আপনি না খোলা পর্যন্ত নাও আপডেট হতে পারে৷\n\nআপনার ডিভাইসটিকে যখন চার্জ করা হয় তখন ব্যাটারি সাশ্রয়কারী স্বয়ংক্রিয়ভাবে বন্ধ হয়ে যায়৷"</string>
     <string name="data_saver_description" msgid="6015391409098303235">"ডেটার ব্যবহার কমাতে সহায়তা করার জন্য, ডেটা সেভার পটভূমিতে কিছু অ্যাপ্লিকেশানকে ডেটা পাঠাতে বা গ্রহণ করতে বাধা দেয়৷ আপনি বর্তমানে এমন একটি অ্যাপ্লিকেশান ব্যবহার করছেন যেটি ডেটা অ্যাক্সেস করতে পারে, তবে সেটি কমই করে৷ এর ফলে যা হতে পারে, উদাহরণস্বরূপ, আপনি ছবিগুলিতে আলতো চাপ না দেওয়া পর্যন্ত সেগুলি প্রদর্শিত হবে না৷"</string>
-    <!-- no translation found for data_saver_enable_title (4674073932722787417) -->
-    <skip />
-    <!-- no translation found for data_saver_enable_button (7147735965247211818) -->
-    <skip />
+    <string name="data_saver_enable_title" msgid="4674073932722787417">"ডেটা সেভার চালু করবেন?"</string>
+    <string name="data_saver_enable_button" msgid="7147735965247211818">"চালু করুন"</string>
     <plurals name="zen_mode_duration_minutes_summary" formatted="false" msgid="4367877408072000848">
       <item quantity="one">%1$d মিনিটের জন্য (<xliff:g id="FORMATTEDTIME_1">%2$s</xliff:g> পর্যন্ত)</item>
       <item quantity="other">%1$d মিনিটের জন্য (<xliff:g id="FORMATTEDTIME_1">%2$s</xliff:g> পর্যন্ত)</item>
diff --git a/core/res/res/values-bs-rBA/strings.xml b/core/res/res/values-bs-rBA/strings.xml
index e316f21..b2e908f 100644
--- a/core/res/res/values-bs-rBA/strings.xml
+++ b/core/res/res/values-bs-rBA/strings.xml
@@ -220,11 +220,9 @@
     <string name="bugreport_title" msgid="2667494803742548533">"Kreirajte izvještaj o greškama"</string>
     <string name="bugreport_message" msgid="398447048750350456">"Ovim će se prikupljati informacije o trenutnom stanju uređaja, koji će biti poslani kao poruka e-pošte. Može malo potrajati dok se izvještaj o greškama ne kreira i bude spreman za slanje. Budite strpljivi."</string>
     <string name="bugreport_option_interactive_title" msgid="8635056131768862479">"Interaktivni izvještaj"</string>
-    <!-- no translation found for bugreport_option_interactive_summary (229299488536107968) -->
-    <skip />
+    <string name="bugreport_option_interactive_summary" msgid="229299488536107968">"Koristite ovu opciju u većini slučajeva. Ova opcija vam omogućava praćenje napretka izvještaja, unos dodatnih detalja o problemu i pravljenje snimaka ekrana. Moglo bi doći do izostavljanja nekih manje korištenih dijelova za čije prijavljivanje je potrebno dugo vremena."</string>
     <string name="bugreport_option_full_title" msgid="6354382025840076439">"Kompletan izvještaj"</string>
-    <!-- no translation found for bugreport_option_full_summary (7210859858969115745) -->
-    <skip />
+    <string name="bugreport_option_full_summary" msgid="7210859858969115745">"Koristite ovu opciju za minimalno ometanje sistema kada uređaj ne reagira ili je prespor, ili kada su vam potrebni svi dijelovi izvještaja. Ova opcija ne dozvoljava unos dodatnih detalja ili pravljenje dodatnih snimaka ekrana."</string>
     <plurals name="bugreport_countdown" formatted="false" msgid="6878900193900090368">
       <item quantity="one">Snimak ekrana za prijavu greške pravim za <xliff:g id="NUMBER_1">%d</xliff:g> sekundu.</item>
       <item quantity="few">Snimak ekrana za prijavu greške pravim za <xliff:g id="NUMBER_1">%d</xliff:g> sekunde.</item>
@@ -867,8 +865,7 @@
       <item quantity="few"><xliff:g id="COUNT">%d</xliff:g> sata</item>
       <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> sati</item>
     </plurals>
-    <!-- no translation found for now_string_shortest (8912796667087856402) -->
-    <skip />
+    <string name="now_string_shortest" msgid="8912796667087856402">"sada"</string>
     <!-- no translation found for duration_minutes_shortest (598436407511890455) -->
     <!-- no translation found for duration_hours_shortest (8300234116089026299) -->
     <!-- no translation found for duration_days_shortest (1363973360381363510) -->
@@ -977,6 +974,8 @@
     <string name="android_upgrading_title" msgid="1584192285441405746">"Nadogradnja sistema Android u toku..."</string>
     <string name="android_start_title" msgid="8418054686415318207">"Android se pokreće..."</string>
     <string name="android_upgrading_fstrim" msgid="8036718871534640010">"Optimiziranje pohrane."</string>
+    <string name="android_upgrading_notification_title" msgid="1619393112444671028">"Android se nadograđuje"</string>
+    <string name="android_upgrading_notification_body" msgid="5761201379457064286">"Neke aplikacije možda neće raditi ispravno dok traje nadogradnja"</string>
     <string name="android_upgrading_apk" msgid="7904042682111526169">"Optimiziranje aplikacije <xliff:g id="NUMBER_0">%1$d</xliff:g> od <xliff:g id="NUMBER_1">%2$d</xliff:g>."</string>
     <string name="android_preparing_apk" msgid="8162599310274079154">"Priprema se <xliff:g id="APPNAME">%1$s</xliff:g>."</string>
     <string name="android_upgrading_starting_apps" msgid="451464516346926713">"Pokretanje aplikacija."</string>
@@ -1514,10 +1513,8 @@
     <string name="package_deleted_device_owner" msgid="7650577387493101353">"Izbrisao administrator"</string>
     <string name="battery_saver_description" msgid="1960431123816253034">"Da bi se trajanje baterije produžilo, opcija za štednju baterije minimizira rad uređaja i ograničava vibriranje, usluge lokacije i većinu prijenosa podataka u pozadini. E-pošta, poruke i druge aplikacije koje se oslanjaju na sinhronizaciju ne mogu biti ažurirane dok ih ne otvorite.\n\nŠtednja baterije se automatski isključi prilikom punjenja uređaja."</string>
     <string name="data_saver_description" msgid="6015391409098303235">"Da bi se smanjilo koriptenje podataka, usluga Ušteda podataka sprečava da neke aplikacije šalju ili primaju podatke u pozadini. Aplikacija koju trenutno koristite može pristupiti podacima, ali se to može desiti rjeđe. To može značiti, naprimjer, da se slike ne prikazuju sve dok ih ne dodirnete."</string>
-    <!-- no translation found for data_saver_enable_title (4674073932722787417) -->
-    <skip />
-    <!-- no translation found for data_saver_enable_button (7147735965247211818) -->
-    <skip />
+    <string name="data_saver_enable_title" msgid="4674073932722787417">"Uključiti Uštedu podataka?"</string>
+    <string name="data_saver_enable_button" msgid="7147735965247211818">"Uključi"</string>
     <plurals name="zen_mode_duration_minutes_summary" formatted="false" msgid="4367877408072000848">
       <item quantity="one">%1$d minuta (do <xliff:g id="FORMATTEDTIME_1">%2$s</xliff:g>)</item>
       <item quantity="few">%1$d minute (do <xliff:g id="FORMATTEDTIME_1">%2$s</xliff:g>)</item>
diff --git a/core/res/res/values-ca/strings.xml b/core/res/res/values-ca/strings.xml
index 4fa7943..150271d 100644
--- a/core/res/res/values-ca/strings.xml
+++ b/core/res/res/values-ca/strings.xml
@@ -218,11 +218,9 @@
     <string name="bugreport_title" msgid="2667494803742548533">"Crea informe d\'errors"</string>
     <string name="bugreport_message" msgid="398447048750350456">"Es recopilarà informació sobre l\'estat actual del dispositiu i se t\'enviarà per correu electrònic. Passaran uns quants minuts des de l\'inici de l\'informe d\'errors fins al seu enviament, per la qual cosa et recomanem que tinguis paciència."</string>
     <string name="bugreport_option_interactive_title" msgid="8635056131768862479">"Informe interactiu"</string>
-    <!-- no translation found for bugreport_option_interactive_summary (229299488536107968) -->
-    <skip />
+    <string name="bugreport_option_interactive_summary" msgid="229299488536107968">"Utilitza aquesta opció en la majoria de circumstàncies. Et permet fer un seguiment del progrés de l\'informe, introduir més dades sobre el problema i fer captures de pantalla. És possible que ometi seccions poc utilitzades que requereixen molt de temps."</string>
     <string name="bugreport_option_full_title" msgid="6354382025840076439">"Informe complet"</string>
-    <!-- no translation found for bugreport_option_full_summary (7210859858969115745) -->
-    <skip />
+    <string name="bugreport_option_full_summary" msgid="7210859858969115745">"Utilitza aquesta opció perquè la interferència en el sistema sigui mínima si el dispositiu no respon o va massa lent, o bé si necessites totes les seccions de l\'informe. No et permet introduir més dades ni fer més captures de pantalla."</string>
     <plurals name="bugreport_countdown" formatted="false" msgid="6878900193900090368">
       <item quantity="other">Es farà una captura de pantalla de l\'informe d\'errors d\'aquí a <xliff:g id="NUMBER_1">%d</xliff:g> segons.</item>
       <item quantity="one">Es farà una captura de pantalla de l\'informe d\'errors d\'aquí a <xliff:g id="NUMBER_0">%d</xliff:g> segon.</item>
@@ -860,8 +858,7 @@
       <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> hores</item>
       <item quantity="one">1 hora</item>
     </plurals>
-    <!-- no translation found for now_string_shortest (8912796667087856402) -->
-    <skip />
+    <string name="now_string_shortest" msgid="8912796667087856402">"ara"</string>
     <!-- no translation found for duration_minutes_shortest (598436407511890455) -->
     <!-- no translation found for duration_hours_shortest (8300234116089026299) -->
     <!-- no translation found for duration_days_shortest (1363973360381363510) -->
@@ -968,6 +965,8 @@
     <string name="android_upgrading_title" msgid="1584192285441405746">"Android s\'està actualitzant..."</string>
     <string name="android_start_title" msgid="8418054686415318207">"S\'està iniciant Android…"</string>
     <string name="android_upgrading_fstrim" msgid="8036718871534640010">"S\'està optimitzant l\'emmagatzematge."</string>
+    <string name="android_upgrading_notification_title" msgid="1619393112444671028">"Android s\'està actualitzant"</string>
+    <string name="android_upgrading_notification_body" msgid="5761201379457064286">"Pot ser que algunes aplicacions no funcionin correctament fins que no es completi l\'actualització"</string>
     <string name="android_upgrading_apk" msgid="7904042682111526169">"S\'està optimitzant l\'aplicació <xliff:g id="NUMBER_0">%1$d</xliff:g> de <xliff:g id="NUMBER_1">%2$d</xliff:g>."</string>
     <string name="android_preparing_apk" msgid="8162599310274079154">"S\'està preparant <xliff:g id="APPNAME">%1$s</xliff:g>."</string>
     <string name="android_upgrading_starting_apps" msgid="451464516346926713">"S\'estan iniciant les aplicacions."</string>
@@ -1501,10 +1500,8 @@
     <string name="package_deleted_device_owner" msgid="7650577387493101353">"L\'administrador ho ha suprimit"</string>
     <string name="battery_saver_description" msgid="1960431123816253034">"Per tal d\'augmentar la durada de la bateria, la funció d\'estalvi de bateria redueix el rendiment del dispositiu i en limita la vibració i la majoria de dades en segon pla. És possible que el correu electrònic, la missatgeria i la resta d\'aplicacions que se sincronitzen amb freqüència no s\'actualitzin llevat que les obris.\n\nL\'estalvi de bateria es desactiva automàticament mentre el dispositiu s\'està carregant."</string>
     <string name="data_saver_description" msgid="6015391409098303235">"Per reduir l\'ús de dades, la funció Economitzador de dades evita que determinades aplicacions enviïn o rebin dades en segon pla. L\'aplicació que estiguis fent servir podrà accedir a dades, però potser ho farà menys sovint. Això vol dir, per exemple, que les imatges no es mostraran fins que no les toquis."</string>
-    <!-- no translation found for data_saver_enable_title (4674073932722787417) -->
-    <skip />
-    <!-- no translation found for data_saver_enable_button (7147735965247211818) -->
-    <skip />
+    <string name="data_saver_enable_title" msgid="4674073932722787417">"Activar Economitzador de dades?"</string>
+    <string name="data_saver_enable_button" msgid="7147735965247211818">"Activa"</string>
     <plurals name="zen_mode_duration_minutes_summary" formatted="false" msgid="4367877408072000848">
       <item quantity="other">Durant %1$d minuts (fins a les <xliff:g id="FORMATTEDTIME_1">%2$s</xliff:g>)</item>
       <item quantity="one">Durant 1 minut (fins a les <xliff:g id="FORMATTEDTIME_0">%2$s</xliff:g>)</item>
diff --git a/core/res/res/values-cs/strings.xml b/core/res/res/values-cs/strings.xml
index 5448a65..c263ac6 100644
--- a/core/res/res/values-cs/strings.xml
+++ b/core/res/res/values-cs/strings.xml
@@ -222,11 +222,9 @@
     <string name="bugreport_title" msgid="2667494803742548533">"Vytvořit chybové hlášení"</string>
     <string name="bugreport_message" msgid="398447048750350456">"Shromažďuje informace o aktuálním stavu zařízení. Tyto informace je následně možné poslat v e-mailové zprávě, chvíli však potrvá, než bude hlášení o chybě připraveno k odeslání. Buďte prosím trpěliví."</string>
     <string name="bugreport_option_interactive_title" msgid="8635056131768862479">"Interaktivní přehled"</string>
-    <!-- no translation found for bugreport_option_interactive_summary (229299488536107968) -->
-    <skip />
+    <string name="bugreport_option_interactive_summary" msgid="229299488536107968">"Tato možnost se používá ve většině případů. Umožňuje sledovat průběh přehledu, zadat další podrobnosti o problému a pořizovat snímky obrazovky. Mohou být vynechány některé méně používané sekce, jejichž kontrola trvá dlouho."</string>
     <string name="bugreport_option_full_title" msgid="6354382025840076439">"Úplný přehled"</string>
-    <!-- no translation found for bugreport_option_full_summary (7210859858969115745) -->
-    <skip />
+    <string name="bugreport_option_full_summary" msgid="7210859858969115745">"Tato možnost slouží k rychlému nahlášení, když zařízení neodpovídá, je příliš pomalé nebo pokud potřebujete zahrnout všechny sekce. Tímto způsobem nelze zadat více podrobností ani pořídit snímek obrazovky."</string>
     <plurals name="bugreport_countdown" formatted="false" msgid="6878900193900090368">
       <item quantity="few">Snímek obrazovky pro zprávu o chybě bude pořízen za <xliff:g id="NUMBER_1">%d</xliff:g> sekundy.</item>
       <item quantity="many">Snímek obrazovky pro zprávu o chybě bude pořízen za <xliff:g id="NUMBER_1">%d</xliff:g> sekundy.</item>
@@ -874,8 +872,7 @@
       <item quantity="other">[<xliff:g id="COUNT">%d</xliff:g>] hodin</item>
       <item quantity="one">1 hodina</item>
     </plurals>
-    <!-- no translation found for now_string_shortest (8912796667087856402) -->
-    <skip />
+    <string name="now_string_shortest" msgid="8912796667087856402">"nyní"</string>
     <!-- no translation found for duration_minutes_shortest (598436407511890455) -->
     <!-- no translation found for duration_hours_shortest (8300234116089026299) -->
     <!-- no translation found for duration_days_shortest (1363973360381363510) -->
@@ -982,6 +979,8 @@
     <string name="android_upgrading_title" msgid="1584192285441405746">"Android se upgraduje..."</string>
     <string name="android_start_title" msgid="8418054686415318207">"Spouštění systému Android…"</string>
     <string name="android_upgrading_fstrim" msgid="8036718871534640010">"Probíhá optimalizace úložiště."</string>
+    <string name="android_upgrading_notification_title" msgid="1619393112444671028">"Android se upgraduje"</string>
+    <string name="android_upgrading_notification_body" msgid="5761201379457064286">"Před dokončením upgradu nemusí některé aplikace fungovat správně"</string>
     <string name="android_upgrading_apk" msgid="7904042682111526169">"Optimalizování aplikace <xliff:g id="NUMBER_0">%1$d</xliff:g> z <xliff:g id="NUMBER_1">%2$d</xliff:g>."</string>
     <string name="android_preparing_apk" msgid="8162599310274079154">"Příprava aplikace <xliff:g id="APPNAME">%1$s</xliff:g>."</string>
     <string name="android_upgrading_starting_apps" msgid="451464516346926713">"Spouštění aplikací."</string>
@@ -1523,10 +1522,8 @@
     <string name="package_deleted_device_owner" msgid="7650577387493101353">"Smazáno administrátorem"</string>
     <string name="battery_saver_description" msgid="1960431123816253034">"Spořič baterie za účelem prodloužení výdrže baterie snižuje výkon zařízení a omezuje vibrace, služby určování polohy a většinu dat na pozadí. E-mail, aplikace pro zasílání zpráv a další aplikace, které používají synchronizaci, se nemusejí aktualizovat, dokud je neotevřete.\n\nPři nabíjení zařízení se spořič baterie automaticky vypne."</string>
     <string name="data_saver_description" msgid="6015391409098303235">"Spořič dat z důvodu snížení využití dat některým aplikacím brání v odesílání nebo příjmu dat na pozadí. Aplikace, kterou právě používáte, data přenášet může, ale může tak činit méně často. V důsledku toho se například obrázky nemusejí zobrazit, dokud na ně neklepnete."</string>
-    <!-- no translation found for data_saver_enable_title (4674073932722787417) -->
-    <skip />
-    <!-- no translation found for data_saver_enable_button (7147735965247211818) -->
-    <skip />
+    <string name="data_saver_enable_title" msgid="4674073932722787417">"Chcete zapnout Spořič dat?"</string>
+    <string name="data_saver_enable_button" msgid="7147735965247211818">"Zapnout"</string>
     <plurals name="zen_mode_duration_minutes_summary" formatted="false" msgid="4367877408072000848">
       <item quantity="few">%1$d minuty (do <xliff:g id="FORMATTEDTIME_1">%2$s</xliff:g>)</item>
       <item quantity="many">%1$d minuty (do <xliff:g id="FORMATTEDTIME_1">%2$s</xliff:g>)</item>
diff --git a/core/res/res/values-da/strings.xml b/core/res/res/values-da/strings.xml
index a1fcc31e..6432f16 100644
--- a/core/res/res/values-da/strings.xml
+++ b/core/res/res/values-da/strings.xml
@@ -218,11 +218,9 @@
     <string name="bugreport_title" msgid="2667494803742548533">"Lav fejlrapport"</string>
     <string name="bugreport_message" msgid="398447048750350456">"Der indsamles oplysninger om din enheds aktuelle status, der efterfølgende sendes i en e-mail. Der går lidt tid, fra fejlrapporten påbegyndes, til den er klar til at blive sendt. Tak for tålmodigheden."</string>
     <string name="bugreport_option_interactive_title" msgid="8635056131768862479">"Interaktiv rapport"</string>
-    <!-- no translation found for bugreport_option_interactive_summary (229299488536107968) -->
-    <skip />
+    <string name="bugreport_option_interactive_summary" msgid="229299488536107968">"Brug dette workflow under de fleste omstændigheder. Det giver dig mulighed for at se status på rapporten, angive flere oplysninger om problemet og tage skærmbilleder. Nogle mindre brugte sektioner, der tager lang tid at rapportere, udelades muligvis."</string>
     <string name="bugreport_option_full_title" msgid="6354382025840076439">"Fuld rapport"</string>
-    <!-- no translation found for bugreport_option_full_summary (7210859858969115745) -->
-    <skip />
+    <string name="bugreport_option_full_summary" msgid="7210859858969115745">"Brug denne mulighed for at gribe mindst muligt ind, når enheden ikke reagerer eller er for langsom, eller når du har brug for alle rapportsektioner. Du har ikke mulighed for at angive flere oplysninger eller tage yderligere skærmbilleder."</string>
     <plurals name="bugreport_countdown" formatted="false" msgid="6878900193900090368">
       <item quantity="one">Der tages et skærmbillede til fejlrapporten om <xliff:g id="NUMBER_1">%d</xliff:g> sekund.</item>
       <item quantity="other">Der tages et skærmbillede til fejlrapporten om <xliff:g id="NUMBER_1">%d</xliff:g> sekunder.</item>
@@ -860,8 +858,7 @@
       <item quantity="one"><xliff:g id="COUNT">%d</xliff:g> timer</item>
       <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> timer</item>
     </plurals>
-    <!-- no translation found for now_string_shortest (8912796667087856402) -->
-    <skip />
+    <string name="now_string_shortest" msgid="8912796667087856402">"nu"</string>
     <!-- no translation found for duration_minutes_shortest (598436407511890455) -->
     <!-- no translation found for duration_hours_shortest (8300234116089026299) -->
     <!-- no translation found for duration_days_shortest (1363973360381363510) -->
@@ -968,6 +965,8 @@
     <string name="android_upgrading_title" msgid="1584192285441405746">"Android opgraderes..."</string>
     <string name="android_start_title" msgid="8418054686415318207">"Android starter..."</string>
     <string name="android_upgrading_fstrim" msgid="8036718871534640010">"Lageret optimeres."</string>
+    <string name="android_upgrading_notification_title" msgid="1619393112444671028">"Android opgraderes"</string>
+    <string name="android_upgrading_notification_body" msgid="5761201379457064286">"Nogle apps fungerer muligvis ikke korrekt, før opgraderingen er gennemført"</string>
     <string name="android_upgrading_apk" msgid="7904042682111526169">"Optimerer app <xliff:g id="NUMBER_0">%1$d</xliff:g> ud af <xliff:g id="NUMBER_1">%2$d</xliff:g>."</string>
     <string name="android_preparing_apk" msgid="8162599310274079154">"Forbereder <xliff:g id="APPNAME">%1$s</xliff:g>."</string>
     <string name="android_upgrading_starting_apps" msgid="451464516346926713">"Åbner dine apps."</string>
@@ -1501,10 +1500,8 @@
     <string name="package_deleted_device_owner" msgid="7650577387493101353">"Slettet af din administrator"</string>
     <string name="battery_saver_description" msgid="1960431123816253034">"Batterisparefunktionen hjælper med at forlænge batteriets levetid ved at reducere enhedens ydeevne og begrænse vibration, placeringstjenester og det meste baggrundsdata. E-mail, beskedfunktioner og andre apps, der benytter synkronisering, opdateres muligvis ikke, medmindre du åbner dem.\n\nBatterisparefunktionen slukker automatisk, når enheden oplader."</string>
     <string name="data_saver_description" msgid="6015391409098303235">"Datasparefunktion forhindrer nogle apps i at sende eller modtage data i baggrunden for at reducere dataforbruget. En app, der er i brug, kan få adgang til data, men gør det måske ikke så ofte. Dette kan f.eks. betyde, at billeder ikke vises, før du trykker på dem."</string>
-    <!-- no translation found for data_saver_enable_title (4674073932722787417) -->
-    <skip />
-    <!-- no translation found for data_saver_enable_button (7147735965247211818) -->
-    <skip />
+    <string name="data_saver_enable_title" msgid="4674073932722787417">"Vil du slå Datasparefunktion til?"</string>
+    <string name="data_saver_enable_button" msgid="7147735965247211818">"Slå til"</string>
     <plurals name="zen_mode_duration_minutes_summary" formatted="false" msgid="4367877408072000848">
       <item quantity="one">I %1$d minutter (indtil <xliff:g id="FORMATTEDTIME_1">%2$s</xliff:g>)</item>
       <item quantity="other">I %1$d minutter (indtil <xliff:g id="FORMATTEDTIME_1">%2$s</xliff:g>)</item>
diff --git a/core/res/res/values-de/strings.xml b/core/res/res/values-de/strings.xml
index 5e7a9b5..a2d3c2a 100644
--- a/core/res/res/values-de/strings.xml
+++ b/core/res/res/values-de/strings.xml
@@ -218,11 +218,9 @@
     <string name="bugreport_title" msgid="2667494803742548533">"Fehlerbericht abrufen"</string>
     <string name="bugreport_message" msgid="398447048750350456">"Bei diesem Fehlerbericht werden Daten zum aktuellen Status deines Geräts erfasst und als E-Mail versandt. Vom Start des Berichts bis zu seinem Versand kann es eine Weile dauern. Bitte habe etwas Geduld."</string>
     <string name="bugreport_option_interactive_title" msgid="8635056131768862479">"Interaktiver Bericht"</string>
-    <!-- no translation found for bugreport_option_interactive_summary (229299488536107968) -->
-    <skip />
+    <string name="bugreport_option_interactive_summary" msgid="229299488536107968">"Diese Option kann in den meisten Fällen verwendet werden. Du kannst darüber den aktuellen Stand der Berichterstellung verfolgen, genauere Angaben zu dem Problem machen und Screenshots aufnehmen. Einige selten genutzte Bereiche, deren Berichterstellung längere Zeit in Anspruch nimmt, werden unter Umständen ausgelassen."</string>
     <string name="bugreport_option_full_title" msgid="6354382025840076439">"Vollständiger Bericht"</string>
-    <!-- no translation found for bugreport_option_full_summary (7210859858969115745) -->
-    <skip />
+    <string name="bugreport_option_full_summary" msgid="7210859858969115745">"Du kannst diese Option für minimale Störungen des Systems nutzen, wenn dein Gerät beispielsweise nicht reagiert oder zu langsam ist oder wenn du alle Bereiche für Berichte benötigst. Du kannst keine weiteren Angaben machen oder zusätzliche Screenshots aufnehmen."</string>
     <plurals name="bugreport_countdown" formatted="false" msgid="6878900193900090368">
       <item quantity="other">Screenshot für den Fehlerbericht wird in <xliff:g id="NUMBER_1">%d</xliff:g> Sekunden aufgenommen.</item>
       <item quantity="one">Screenshot für den Fehlerbericht wird in <xliff:g id="NUMBER_0">%d</xliff:g> Sekunde aufgenommen.</item>
@@ -860,8 +858,7 @@
       <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> Stunden</item>
       <item quantity="one">1 Stunde</item>
     </plurals>
-    <!-- no translation found for now_string_shortest (8912796667087856402) -->
-    <skip />
+    <string name="now_string_shortest" msgid="8912796667087856402">"jetzt"</string>
     <!-- no translation found for duration_minutes_shortest (598436407511890455) -->
     <!-- no translation found for duration_hours_shortest (8300234116089026299) -->
     <!-- no translation found for duration_days_shortest (1363973360381363510) -->
@@ -968,6 +965,8 @@
     <string name="android_upgrading_title" msgid="1584192285441405746">"Android wird aktualisiert..."</string>
     <string name="android_start_title" msgid="8418054686415318207">"Android wird gestartet…"</string>
     <string name="android_upgrading_fstrim" msgid="8036718871534640010">"Speicher wird optimiert"</string>
+    <string name="android_upgrading_notification_title" msgid="1619393112444671028">"Android wird aktualisiert"</string>
+    <string name="android_upgrading_notification_body" msgid="5761201379457064286">"Einige Apps funktionieren unter Umständen nicht richtig, bis das Upgrade abgeschlossen ist"</string>
     <string name="android_upgrading_apk" msgid="7904042682111526169">"App <xliff:g id="NUMBER_0">%1$d</xliff:g> von <xliff:g id="NUMBER_1">%2$d</xliff:g> wird optimiert..."</string>
     <string name="android_preparing_apk" msgid="8162599310274079154">"<xliff:g id="APPNAME">%1$s</xliff:g> wird vorbereitet"</string>
     <string name="android_upgrading_starting_apps" msgid="451464516346926713">"Apps werden gestartet..."</string>
@@ -1500,11 +1499,9 @@
     <string name="package_updated_device_owner" msgid="8856631322440187071">"Von deinem Administrator aktualisiert"</string>
     <string name="package_deleted_device_owner" msgid="7650577387493101353">"Von deinem Administrator gelöscht"</string>
     <string name="battery_saver_description" msgid="1960431123816253034">"Der Energiesparmodus schont den Akku, indem er die Leistung des Geräts reduziert und die Vibrationsfunktion sowie die meisten Hintergrunddatenaktivitäten einschränkt. E-Mail, SMS/MMS und andere Apps, die auf deinem Gerät synchronisiert werden, werden möglicherweise erst nach dem Öffnen aktualisiert.\n\nDer Energiesparmodus wird automatisch deaktiviert, wenn dein Gerät aufgeladen wird."</string>
-    <string name="data_saver_description" msgid="6015391409098303235">"Mit der Datenkomprimierung wird die Datennutzung verringert, indem verhindert wird, dass im Hintergrund Daten von Apps gesendet oder empfangen werden. Datenzugriffe sind mit einer aktiven App zwar möglich, erfolgen aber seltener. Als Folge davon könnten Bilder beispielsweise erst dann sichtbar werden, wenn sie angetippt werden."</string>
-    <!-- no translation found for data_saver_enable_title (4674073932722787417) -->
-    <skip />
-    <!-- no translation found for data_saver_enable_button (7147735965247211818) -->
-    <skip />
+    <string name="data_saver_description" msgid="6015391409098303235">"Mit dem Datensparmodus wird die Datennutzung verringert, indem verhindert wird, dass im Hintergrund Daten von Apps gesendet oder empfangen werden. Datenzugriffe sind mit einer aktiven App zwar möglich, erfolgen aber seltener. Als Folge davon könnten Bilder beispielsweise erst dann sichtbar werden, wenn sie angetippt werden."</string>
+    <string name="data_saver_enable_title" msgid="4674073932722787417">"Datensparmodus aktivieren?"</string>
+    <string name="data_saver_enable_button" msgid="7147735965247211818">"Aktivieren"</string>
     <plurals name="zen_mode_duration_minutes_summary" formatted="false" msgid="4367877408072000848">
       <item quantity="other">%1$d Minuten (bis <xliff:g id="FORMATTEDTIME_1">%2$s</xliff:g>)</item>
       <item quantity="one">1 Minute (bis <xliff:g id="FORMATTEDTIME_0">%2$s</xliff:g>)</item>
diff --git a/core/res/res/values-el/strings.xml b/core/res/res/values-el/strings.xml
index 3d3778c..775e39b 100644
--- a/core/res/res/values-el/strings.xml
+++ b/core/res/res/values-el/strings.xml
@@ -218,11 +218,9 @@
     <string name="bugreport_title" msgid="2667494803742548533">"Λήψη αναφοράς σφάλματος"</string>
     <string name="bugreport_message" msgid="398447048750350456">"Θα συλλέξει πληροφορίες σχετικά με την τρέχουσα κατάσταση της συσκευής σας και θα τις στείλει μέσω μηνύματος ηλεκτρονικού ταχυδρομείου. Απαιτείται λίγος χρόνος για τη σύνταξη της αναφοράς σφάλματος και την αποστολή της. Κάντε λίγη υπομονή."</string>
     <string name="bugreport_option_interactive_title" msgid="8635056131768862479">"Διαδραστική αναφορά"</string>
-    <!-- no translation found for bugreport_option_interactive_summary (229299488536107968) -->
-    <skip />
+    <string name="bugreport_option_interactive_summary" msgid="229299488536107968">"Χρησιμοποιήστε αυτήν την επιλογή στις περισσότερες περιπτώσεις. Σας επιτρέπει να παρακολουθείτε την πρόοδο της αναφοράς, να εισάγετε περισσότερες λεπτομέρειες σχετικά με το πρόβλημα που αντιμετωπίζετε και να τραβήξετε στιγμιότυπα οθόνης. Ενδέχεται να παραλείψει ορισμένες ενότητες που δεν χρησιμοποιούνται συχνά και για τις οποίες απαιτείται μεγάλο χρονικό διάστημα για τη δημιουργία αναφορών."</string>
     <string name="bugreport_option_full_title" msgid="6354382025840076439">"Πλήρης αναφορά"</string>
-    <!-- no translation found for bugreport_option_full_summary (7210859858969115745) -->
-    <skip />
+    <string name="bugreport_option_full_summary" msgid="7210859858969115745">"Χρησιμοποιήστε αυτήν την επιλογή για την ελάχιστη δυνατή παρέμβαση συστήματος, όταν η συσκευή σας δεν ανταποκρίνεται ή παρουσιάζει μεγάλη καθυστέρηση στη λειτουργία ή όταν χρειάζεστε όλες τις ενότητες αναφοράς. Δεν σας επιτρέπει να προσθέσετε περισσότερες λεπτομέρειες ή να τραβήξετε επιπλέον στιγμιότυπα οθόνης."</string>
     <plurals name="bugreport_countdown" formatted="false" msgid="6878900193900090368">
       <item quantity="other">Λήψη στιγμιότυπου οθόνης για αναφορά σφαλμάτων σε <xliff:g id="NUMBER_1">%d</xliff:g> δευτερόλεπτα.</item>
       <item quantity="one">Λήψη στιγμιότυπου οθόνης για αναφορά σφαλμάτων σε <xliff:g id="NUMBER_0">%d</xliff:g> δευτερόλεπτο.</item>
@@ -860,8 +858,7 @@
       <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> ώρες</item>
       <item quantity="one">1 ώρα</item>
     </plurals>
-    <!-- no translation found for now_string_shortest (8912796667087856402) -->
-    <skip />
+    <string name="now_string_shortest" msgid="8912796667087856402">"τώρα"</string>
     <!-- no translation found for duration_minutes_shortest (598436407511890455) -->
     <!-- no translation found for duration_hours_shortest (8300234116089026299) -->
     <!-- no translation found for duration_days_shortest (1363973360381363510) -->
@@ -968,6 +965,8 @@
     <string name="android_upgrading_title" msgid="1584192285441405746">"Το Android αναβαθμίζεται..."</string>
     <string name="android_start_title" msgid="8418054686415318207">"Εκκίνηση Android…"</string>
     <string name="android_upgrading_fstrim" msgid="8036718871534640010">"Βελτιστοποίηση αποθηκευτικού χώρου."</string>
+    <string name="android_upgrading_notification_title" msgid="1619393112444671028">"Το Android αναβαθμίζεται"</string>
+    <string name="android_upgrading_notification_body" msgid="5761201379457064286">"Ορισμένες εφαρμογές ενδέχεται να μην λειτουργούν σωστά μέχρι την ολοκλήρωση της αναβάθμισης"</string>
     <string name="android_upgrading_apk" msgid="7904042682111526169">"Βελτιστοποίηση της εφαρμογής <xliff:g id="NUMBER_0">%1$d</xliff:g> από <xliff:g id="NUMBER_1">%2$d</xliff:g>."</string>
     <string name="android_preparing_apk" msgid="8162599310274079154">"Προετοιμασία <xliff:g id="APPNAME">%1$s</xliff:g>."</string>
     <string name="android_upgrading_starting_apps" msgid="451464516346926713">"Έναρξη εφαρμογών."</string>
@@ -1501,10 +1500,8 @@
     <string name="package_deleted_device_owner" msgid="7650577387493101353">"Διαγράφηκε από το διαχειριστή σας"</string>
     <string name="battery_saver_description" msgid="1960431123816253034">"Προκειμένου να βελτιώσει τη διάρκεια ζωής της μπαταρίας σας, η Εξοικονόμηση μπαταρίας μειώνει την απόδοση της συσκευής σας και περιορίζει λειτουργίες όπως η δόνηση, οι υπηρεσίες τοποθεσίας και τα περισσότερα δεδομένα παρασκηνίου. Το ηλεκτρονικό ταχυδρομείο, η ανταλλαγή μηνυμάτων και άλλες εφαρμογές που βασίζονται στο συγχρονισμό ενδέχεται να μην ενημερώνονται έως ότου τις ανοίξετε.\n\nΗ Εξοικονόμηση μπαταρίας απενεργοποιείται αυτόματα όταν η συσκευή σας φορτίζει."</string>
     <string name="data_saver_description" msgid="6015391409098303235">"Προκειμένου να μειωθεί η χρήση δεδομένων, η Εξοικονόμηση δεδομένων αποτρέπει την αποστολή ή λήψη δεδομένων από ορισμένες εφαρμογές στο παρασκήνιο. Μια εφαρμογή που χρησιμοποιείτε αυτήν τη στιγμή μπορεί να χρησιμοποιήσει δεδομένα αλλά με μικρότερη συχνότητα. Για παράδειγμα, οι εικόνες μπορεί να μην εμφανίζονται μέχρι να τις πατήσετε."</string>
-    <!-- no translation found for data_saver_enable_title (4674073932722787417) -->
-    <skip />
-    <!-- no translation found for data_saver_enable_button (7147735965247211818) -->
-    <skip />
+    <string name="data_saver_enable_title" msgid="4674073932722787417">"Ενεργ.Εξοικονόμησης δεδομένων;"</string>
+    <string name="data_saver_enable_button" msgid="7147735965247211818">"Ενεργοποίηση"</string>
     <plurals name="zen_mode_duration_minutes_summary" formatted="false" msgid="4367877408072000848">
       <item quantity="other">Για %1$d λεπτά (έως τις <xliff:g id="FORMATTEDTIME_1">%2$s</xliff:g>)</item>
       <item quantity="one">Για ένα λεπτό (έως τις <xliff:g id="FORMATTEDTIME_0">%2$s</xliff:g>)</item>
diff --git a/core/res/res/values-en-rAU/strings.xml b/core/res/res/values-en-rAU/strings.xml
index 3e3ba9a..33d61dc 100644
--- a/core/res/res/values-en-rAU/strings.xml
+++ b/core/res/res/values-en-rAU/strings.xml
@@ -965,6 +965,8 @@
     <string name="android_upgrading_title" msgid="1584192285441405746">"Android is upgrading…"</string>
     <string name="android_start_title" msgid="8418054686415318207">"Android is starting…"</string>
     <string name="android_upgrading_fstrim" msgid="8036718871534640010">"Optimising storage."</string>
+    <string name="android_upgrading_notification_title" msgid="1619393112444671028">"Android is upgrading"</string>
+    <string name="android_upgrading_notification_body" msgid="5761201379457064286">"Some apps may not work properly until the upgrade finishes"</string>
     <string name="android_upgrading_apk" msgid="7904042682111526169">"Optimising app <xliff:g id="NUMBER_0">%1$d</xliff:g> of <xliff:g id="NUMBER_1">%2$d</xliff:g>."</string>
     <string name="android_preparing_apk" msgid="8162599310274079154">"Preparing <xliff:g id="APPNAME">%1$s</xliff:g>."</string>
     <string name="android_upgrading_starting_apps" msgid="451464516346926713">"Starting apps."</string>
diff --git a/core/res/res/values-en-rGB/strings.xml b/core/res/res/values-en-rGB/strings.xml
index 3e3ba9a..33d61dc 100644
--- a/core/res/res/values-en-rGB/strings.xml
+++ b/core/res/res/values-en-rGB/strings.xml
@@ -965,6 +965,8 @@
     <string name="android_upgrading_title" msgid="1584192285441405746">"Android is upgrading…"</string>
     <string name="android_start_title" msgid="8418054686415318207">"Android is starting…"</string>
     <string name="android_upgrading_fstrim" msgid="8036718871534640010">"Optimising storage."</string>
+    <string name="android_upgrading_notification_title" msgid="1619393112444671028">"Android is upgrading"</string>
+    <string name="android_upgrading_notification_body" msgid="5761201379457064286">"Some apps may not work properly until the upgrade finishes"</string>
     <string name="android_upgrading_apk" msgid="7904042682111526169">"Optimising app <xliff:g id="NUMBER_0">%1$d</xliff:g> of <xliff:g id="NUMBER_1">%2$d</xliff:g>."</string>
     <string name="android_preparing_apk" msgid="8162599310274079154">"Preparing <xliff:g id="APPNAME">%1$s</xliff:g>."</string>
     <string name="android_upgrading_starting_apps" msgid="451464516346926713">"Starting apps."</string>
diff --git a/core/res/res/values-en-rIN/strings.xml b/core/res/res/values-en-rIN/strings.xml
index 3e3ba9a..33d61dc 100644
--- a/core/res/res/values-en-rIN/strings.xml
+++ b/core/res/res/values-en-rIN/strings.xml
@@ -965,6 +965,8 @@
     <string name="android_upgrading_title" msgid="1584192285441405746">"Android is upgrading…"</string>
     <string name="android_start_title" msgid="8418054686415318207">"Android is starting…"</string>
     <string name="android_upgrading_fstrim" msgid="8036718871534640010">"Optimising storage."</string>
+    <string name="android_upgrading_notification_title" msgid="1619393112444671028">"Android is upgrading"</string>
+    <string name="android_upgrading_notification_body" msgid="5761201379457064286">"Some apps may not work properly until the upgrade finishes"</string>
     <string name="android_upgrading_apk" msgid="7904042682111526169">"Optimising app <xliff:g id="NUMBER_0">%1$d</xliff:g> of <xliff:g id="NUMBER_1">%2$d</xliff:g>."</string>
     <string name="android_preparing_apk" msgid="8162599310274079154">"Preparing <xliff:g id="APPNAME">%1$s</xliff:g>."</string>
     <string name="android_upgrading_starting_apps" msgid="451464516346926713">"Starting apps."</string>
diff --git a/core/res/res/values-es-rUS/strings.xml b/core/res/res/values-es-rUS/strings.xml
index 92bfa38..44267c9 100644
--- a/core/res/res/values-es-rUS/strings.xml
+++ b/core/res/res/values-es-rUS/strings.xml
@@ -218,11 +218,9 @@
     <string name="bugreport_title" msgid="2667494803742548533">"Iniciar informe de errores"</string>
     <string name="bugreport_message" msgid="398447048750350456">"Se recopilará información sobre el estado actual de tu dispositivo, que se enviará por correo. Pasarán unos minutos desde que se inicie el informe de errores hasta que se envíe, por lo que te recomendamos que tengas paciencia."</string>
     <string name="bugreport_option_interactive_title" msgid="8635056131768862479">"Informe interactivo"</string>
-    <!-- no translation found for bugreport_option_interactive_summary (229299488536107968) -->
-    <skip />
+    <string name="bugreport_option_interactive_summary" msgid="229299488536107968">"Usa esta opción en la mayoría de los casos. Te permite realizar un seguimiento del progreso del informe, ingresar más detalles acerca del problema y tomar capturas de pantalla. Es posible que se omitan secciones menos usadas cuyos informes demoran más en completarse."</string>
     <string name="bugreport_option_full_title" msgid="6354382025840076439">"Informe completo"</string>
-    <!-- no translation found for bugreport_option_full_summary (7210859858969115745) -->
-    <skip />
+    <string name="bugreport_option_full_summary" msgid="7210859858969115745">"Usa esta opción para reducir al mínimo la interferencia del sistema cuando tu dispositivo no responde o funciona muy lento, o cuando necesitas todas las secciones del informe. No permite ingresar más detalles ni tomar capturas de pantalla adicionales."</string>
     <plurals name="bugreport_countdown" formatted="false" msgid="6878900193900090368">
       <item quantity="other">Se tomará una captura de pantalla para el informe de errores en <xliff:g id="NUMBER_1">%d</xliff:g> segundos.</item>
       <item quantity="one">Se tomará una captura de pantalla para el informe de errores en <xliff:g id="NUMBER_0">%d</xliff:g> segundo.</item>
@@ -860,8 +858,7 @@
       <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> horas</item>
       <item quantity="one">1 hora</item>
     </plurals>
-    <!-- no translation found for now_string_shortest (8912796667087856402) -->
-    <skip />
+    <string name="now_string_shortest" msgid="8912796667087856402">"ahora"</string>
     <!-- no translation found for duration_minutes_shortest (598436407511890455) -->
     <!-- no translation found for duration_hours_shortest (8300234116089026299) -->
     <!-- no translation found for duration_days_shortest (1363973360381363510) -->
@@ -968,6 +965,8 @@
     <string name="android_upgrading_title" msgid="1584192285441405746">"Android se está actualizando..."</string>
     <string name="android_start_title" msgid="8418054686415318207">"Iniciando Android…"</string>
     <string name="android_upgrading_fstrim" msgid="8036718871534640010">"Optimizando almacenamiento"</string>
+    <string name="android_upgrading_notification_title" msgid="1619393112444671028">"Android se está actualizando"</string>
+    <string name="android_upgrading_notification_body" msgid="5761201379457064286">"Es posible que algunas apps no funcionen correctamente hasta que termine la actualización"</string>
     <string name="android_upgrading_apk" msgid="7904042682111526169">"Optimizando la aplicación <xliff:g id="NUMBER_0">%1$d</xliff:g> de <xliff:g id="NUMBER_1">%2$d</xliff:g>"</string>
     <string name="android_preparing_apk" msgid="8162599310274079154">"Preparando <xliff:g id="APPNAME">%1$s</xliff:g>."</string>
     <string name="android_upgrading_starting_apps" msgid="451464516346926713">"Iniciando aplicaciones"</string>
@@ -1501,10 +1500,8 @@
     <string name="package_deleted_device_owner" msgid="7650577387493101353">"Lo eliminó el administrador."</string>
     <string name="battery_saver_description" msgid="1960431123816253034">"Para ayudar a mejorar la duración de la batería, el ahorro de batería reduce el rendimiento del dispositivo y limita la vibración, los servicios de ubicación y la mayoría de los datos en segundo plano. Es posible que el correo electrónico, la mensajería y otras aplicaciones que se basan en la sincronización no puedan actualizarse, a menos que los abras.\n\nEl ahorro de batería se desactiva de forma automática cuando el dispositivo se está cargando."</string>
     <string name="data_saver_description" msgid="6015391409098303235">"Para reducir el uso de datos, \"Reducir datos\" evita que algunas apps envíen y reciban datos en segundo plano. La app que estés usando podrá acceder a los datos, pero con menor frecuencia. De esta forma, por ejemplo, las imágenes no se mostrarán hasta que las presiones."</string>
-    <!-- no translation found for data_saver_enable_title (4674073932722787417) -->
-    <skip />
-    <!-- no translation found for data_saver_enable_button (7147735965247211818) -->
-    <skip />
+    <string name="data_saver_enable_title" msgid="4674073932722787417">"¿Activar Ahorro de datos?"</string>
+    <string name="data_saver_enable_button" msgid="7147735965247211818">"Activar"</string>
     <plurals name="zen_mode_duration_minutes_summary" formatted="false" msgid="4367877408072000848">
       <item quantity="other">Durante %1$d minutos hasta la(s) <xliff:g id="FORMATTEDTIME_1">%2$s</xliff:g></item>
       <item quantity="one">Durante 1 minuto; hasta la(s) <xliff:g id="FORMATTEDTIME_0">%2$s</xliff:g></item>
diff --git a/core/res/res/values-es/strings.xml b/core/res/res/values-es/strings.xml
index 3c95936..758ef3c 100644
--- a/core/res/res/values-es/strings.xml
+++ b/core/res/res/values-es/strings.xml
@@ -218,11 +218,9 @@
     <string name="bugreport_title" msgid="2667494803742548533">"Crear informe de errores"</string>
     <string name="bugreport_message" msgid="398447048750350456">"Se recopilará información sobre el estado actual de tu dispositivo y se enviará por correo electrónico. Pasarán unos minutos desde que empiece a generarse el informe de errores hasta que se envíe."</string>
     <string name="bugreport_option_interactive_title" msgid="8635056131768862479">"Informe interactivo"</string>
-    <!-- no translation found for bugreport_option_interactive_summary (229299488536107968) -->
-    <skip />
+    <string name="bugreport_option_interactive_summary" msgid="229299488536107968">"Usa esta opción en la mayoría de los casos. Te permite realizar un seguimiento del progreso del informe, introducir más información sobre el problema y hacer capturas de pantalla. Es posible que se omitan algunas secciones menos utilizadas y que requieran más tiempo."</string>
     <string name="bugreport_option_full_title" msgid="6354382025840076439">"Informe completo"</string>
-    <!-- no translation found for bugreport_option_full_summary (7210859858969115745) -->
-    <skip />
+    <string name="bugreport_option_full_summary" msgid="7210859858969115745">"Utiliza esta opción para que la interferencia del sistema sea mínima cuando el dispositivo no responda o funcione demasiado lento, o bien cuando necesites todas las secciones del informe. No permite introducir más detalles ni hacer más capturas de pantalla."</string>
     <plurals name="bugreport_countdown" formatted="false" msgid="6878900193900090368">
       <item quantity="other">La captura de pantalla para el informe de errores se realizará en <xliff:g id="NUMBER_1">%d</xliff:g> segundos.</item>
       <item quantity="one">La captura de pantalla para el informe de errores se realizará en <xliff:g id="NUMBER_0">%d</xliff:g> segundo.</item>
@@ -860,8 +858,7 @@
       <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> horas</item>
       <item quantity="one">1 hora</item>
     </plurals>
-    <!-- no translation found for now_string_shortest (8912796667087856402) -->
-    <skip />
+    <string name="now_string_shortest" msgid="8912796667087856402">"ahora"</string>
     <!-- no translation found for duration_minutes_shortest (598436407511890455) -->
     <!-- no translation found for duration_hours_shortest (8300234116089026299) -->
     <!-- no translation found for duration_days_shortest (1363973360381363510) -->
@@ -968,6 +965,8 @@
     <string name="android_upgrading_title" msgid="1584192285441405746">"Actualizando Android"</string>
     <string name="android_start_title" msgid="8418054686415318207">"Android se está iniciando…"</string>
     <string name="android_upgrading_fstrim" msgid="8036718871534640010">"Optimizando almacenamiento."</string>
+    <string name="android_upgrading_notification_title" msgid="1619393112444671028">"Actualizando Android"</string>
+    <string name="android_upgrading_notification_body" msgid="5761201379457064286">"Es posible que algunas aplicaciones no funcionen correctamente hasta que finalice la actualización"</string>
     <string name="android_upgrading_apk" msgid="7904042682111526169">"Optimizando aplicación <xliff:g id="NUMBER_0">%1$d</xliff:g> de <xliff:g id="NUMBER_1">%2$d</xliff:g>..."</string>
     <string name="android_preparing_apk" msgid="8162599310274079154">"Preparando <xliff:g id="APPNAME">%1$s</xliff:g>."</string>
     <string name="android_upgrading_starting_apps" msgid="451464516346926713">"Iniciando aplicaciones"</string>
@@ -1501,10 +1500,8 @@
     <string name="package_deleted_device_owner" msgid="7650577387493101353">"Eliminado por tu administrador"</string>
     <string name="battery_saver_description" msgid="1960431123816253034">"Para ayudar a mejorar la duración de la batería, la función de ahorro de energía reduce el rendimiento del dispositivo y limita la vibración, los servicios de ubicación y la mayor parte de la transmisión de datos en segundo plano. Es posible que las aplicaciones que se sincronizan, como las de correo y mensajes, no se actualicen a menos que las abras.\n\nLa función de ahorro de energía se desactiva automáticamente cuando el dispositivo se está cargando."</string>
     <string name="data_saver_description" msgid="6015391409098303235">"El Economizador de Datos evita que algunas aplicaciones envíen o reciban datos en segundo plano, lo que permite reducir el uso de datos. Una aplicación activa podrá acceder a los datos, aunque con menos frecuencia. Esto significa que, por ejemplo, las imágenes no se mostrarán hasta que no las toques."</string>
-    <!-- no translation found for data_saver_enable_title (4674073932722787417) -->
-    <skip />
-    <!-- no translation found for data_saver_enable_button (7147735965247211818) -->
-    <skip />
+    <string name="data_saver_enable_title" msgid="4674073932722787417">"¿Activar Economizador de Datos?"</string>
+    <string name="data_saver_enable_button" msgid="7147735965247211818">"Activar"</string>
     <plurals name="zen_mode_duration_minutes_summary" formatted="false" msgid="4367877408072000848">
       <item quantity="other">Durante %1$d minutos (hasta las <xliff:g id="FORMATTEDTIME_1">%2$s</xliff:g>)</item>
       <item quantity="one">Durante un minuto (hasta las <xliff:g id="FORMATTEDTIME_0">%2$s</xliff:g>)</item>
diff --git a/core/res/res/values-et-rEE/strings.xml b/core/res/res/values-et-rEE/strings.xml
index 73e2e46..a7fa1c3 100644
--- a/core/res/res/values-et-rEE/strings.xml
+++ b/core/res/res/values-et-rEE/strings.xml
@@ -218,11 +218,9 @@
     <string name="bugreport_title" msgid="2667494803742548533">"Veaaruande võtmine"</string>
     <string name="bugreport_message" msgid="398447048750350456">"Nii kogutakse teavet teie seadme praeguse oleku kohta, et saata see meilisõnumina. Enne kui saate veaaruande ära saata, võtab selle loomine natuke aega; varuge kannatust."</string>
     <string name="bugreport_option_interactive_title" msgid="8635056131768862479">"Interakt. aruanne"</string>
-    <!-- no translation found for bugreport_option_interactive_summary (229299488536107968) -->
-    <skip />
+    <string name="bugreport_option_interactive_summary" msgid="229299488536107968">"Kasutage seda enamikul juhtudel. See võimaldab jälgida aruande edenemist, sisestada probleemi kohta täpsemat teavet ja jäädvustada ekraanipilte. Vahele võivad jääda mõned vähem kasutatud jaotised, millest teavitamine võtab rohkem aega."</string>
     <string name="bugreport_option_full_title" msgid="6354382025840076439">"Täielik aruanne"</string>
-    <!-- no translation found for bugreport_option_full_summary (7210859858969115745) -->
-    <skip />
+    <string name="bugreport_option_full_summary" msgid="7210859858969115745">"Kasutage seda valikut süsteemihäirete minimeerimiseks, kui seade ei reageeri, on liiga aeglane või vajate aruande kõiki jaotisi. Teil ei lubata sisestada lisateavet ega jäädvustada lisaekraanipilte."</string>
     <plurals name="bugreport_countdown" formatted="false" msgid="6878900193900090368">
       <item quantity="other">Veaaruande jaoks ekraanipildi jäädvustamine <xliff:g id="NUMBER_1">%d</xliff:g> sekundi pärast.</item>
       <item quantity="one">Veaaruande jaoks ekraanipildi jäädvustamine <xliff:g id="NUMBER_0">%d</xliff:g> sekundi pärast.</item>
@@ -860,8 +858,7 @@
       <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> tundi</item>
       <item quantity="one">1 tund</item>
     </plurals>
-    <!-- no translation found for now_string_shortest (8912796667087856402) -->
-    <skip />
+    <string name="now_string_shortest" msgid="8912796667087856402">"praegu"</string>
     <!-- no translation found for duration_minutes_shortest (598436407511890455) -->
     <!-- no translation found for duration_hours_shortest (8300234116089026299) -->
     <!-- no translation found for duration_days_shortest (1363973360381363510) -->
@@ -968,6 +965,8 @@
     <string name="android_upgrading_title" msgid="1584192285441405746">"Android viiakse üle uuemale versioonile ..."</string>
     <string name="android_start_title" msgid="8418054686415318207">"Android käivitub ..."</string>
     <string name="android_upgrading_fstrim" msgid="8036718871534640010">"Salvestusruumi optimeerimine."</string>
+    <string name="android_upgrading_notification_title" msgid="1619393112444671028">"Android viiakse üle uuemale versioonile"</string>
+    <string name="android_upgrading_notification_body" msgid="5761201379457064286">"Mõned rakendused ei pruugi enne uuemale versioonile ülemineku lõpetamist korralikult töötada"</string>
     <string name="android_upgrading_apk" msgid="7904042682111526169">"<xliff:g id="NUMBER_0">%1$d</xliff:g>. rakenduse <xliff:g id="NUMBER_1">%2$d</xliff:g>-st optimeerimine."</string>
     <string name="android_preparing_apk" msgid="8162599310274079154">"Rakenduse <xliff:g id="APPNAME">%1$s</xliff:g> ettevalmistamine."</string>
     <string name="android_upgrading_starting_apps" msgid="451464516346926713">"Rakenduste käivitamine."</string>
@@ -1501,10 +1500,8 @@
     <string name="package_deleted_device_owner" msgid="7650577387493101353">"Kustutas teie administraator"</string>
     <string name="battery_saver_description" msgid="1960431123816253034">"Aku kestuse parandamiseks vähendab akusäästja teie seadme toimivust ning piirab vibratsiooni, asukohateenuseid ja suuremat osa taustaandmetest. E-posti, sõnumsidet ja muid sünkroonimisele tuginevaid rakendusi võidakse värskendada ainult siis, kui te need avate.\n\nAkusäästja lülitatakse seadme laadimise ajal automaatselt välja."</string>
     <string name="data_saver_description" msgid="6015391409098303235">"Andmekasutuse vähendamiseks keelab andmemahu säästja mõne rakenduse puhul andmete taustal saatmise ja vastuvõtmise. Rakendus, mida praegu kasutate, pääseb andmetele juurde, kuid võib seda teha väiksema sagedusega. Seetõttu võidakse näiteks kujutised kuvada alles siis, kui neid puudutate."</string>
-    <!-- no translation found for data_saver_enable_title (4674073932722787417) -->
-    <skip />
-    <!-- no translation found for data_saver_enable_button (7147735965247211818) -->
-    <skip />
+    <string name="data_saver_enable_title" msgid="4674073932722787417">"Lül. andmemahu säästja sisse?"</string>
+    <string name="data_saver_enable_button" msgid="7147735965247211818">"Lülita sisse"</string>
     <plurals name="zen_mode_duration_minutes_summary" formatted="false" msgid="4367877408072000848">
       <item quantity="other">%1$d minutiks (kuni <xliff:g id="FORMATTEDTIME_1">%2$s</xliff:g>)</item>
       <item quantity="one">Üheks minutiks (kuni <xliff:g id="FORMATTEDTIME_0">%2$s</xliff:g>)</item>
diff --git a/core/res/res/values-eu-rES/strings.xml b/core/res/res/values-eu-rES/strings.xml
index 85f4214..876be34 100644
--- a/core/res/res/values-eu-rES/strings.xml
+++ b/core/res/res/values-eu-rES/strings.xml
@@ -218,11 +218,9 @@
     <string name="bugreport_title" msgid="2667494803742548533">"Sortu akatsen txostena"</string>
     <string name="bugreport_message" msgid="398447048750350456">"Gailuaren uneko egoerari buruzko informazioa bilduko da, mezu elektroniko gisa bidaltzeko. Minutu batzuk igaroko dira akatsen txostena sortzen hasten denetik bidaltzeko prest egon arte. Itxaron, mesedez."</string>
     <string name="bugreport_option_interactive_title" msgid="8635056131768862479">"Txosten dinamikoa"</string>
-    <!-- no translation found for bugreport_option_interactive_summary (229299488536107968) -->
-    <skip />
+    <string name="bugreport_option_interactive_summary" msgid="229299488536107968">"Aukera hau erabili beharko zenuke ia beti. Txostenaren jarraipena egin ahal izango duzu eta arazoari buruzko xehetasunak eman ahal izango dituzu. Baliteke gutxitan erabili behar izaten diren atalak ez agertzea, denbora aurrezteko."</string>
     <string name="bugreport_option_full_title" msgid="6354382025840076439">"Txosten osoa"</string>
-    <!-- no translation found for bugreport_option_full_summary (7210859858969115745) -->
-    <skip />
+    <string name="bugreport_option_full_summary" msgid="7210859858969115745">"Erabili aukera hau sisteman ahalik eta traba gutxien eragiteko gailuak erantzuten ez duenean, mantsoegi dabilenean edo txosteneko atal guztiak behar dituzunean. Ez dizu uzten xehetasun gehiago idazten, ezta beste pantaila-argazkirik ateratzen ere."</string>
     <plurals name="bugreport_countdown" formatted="false" msgid="6878900193900090368">
       <item quantity="other">Akatsen txostenaren argazkia aterako da <xliff:g id="NUMBER_1">%d</xliff:g> segundo barru.</item>
       <item quantity="one">Akatsen txostenaren argazkia aterako da <xliff:g id="NUMBER_0">%d</xliff:g> segundo barru.</item>
@@ -860,8 +858,7 @@
       <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> ordu</item>
       <item quantity="one">Ordubete</item>
     </plurals>
-    <!-- no translation found for now_string_shortest (8912796667087856402) -->
-    <skip />
+    <string name="now_string_shortest" msgid="8912796667087856402">"orain"</string>
     <!-- no translation found for duration_minutes_shortest (598436407511890455) -->
     <!-- no translation found for duration_hours_shortest (8300234116089026299) -->
     <!-- no translation found for duration_days_shortest (1363973360381363510) -->
@@ -968,6 +965,8 @@
     <string name="android_upgrading_title" msgid="1584192285441405746">"Android bertsio-berritzen ari da…"</string>
     <string name="android_start_title" msgid="8418054686415318207">"Android abiarazten ari da…"</string>
     <string name="android_upgrading_fstrim" msgid="8036718871534640010">"Memoria optimizatzen."</string>
+    <string name="android_upgrading_notification_title" msgid="1619393112444671028">"Android bertsioa berritzen ari gara"</string>
+    <string name="android_upgrading_notification_body" msgid="5761201379457064286">"Aplikazio batzuek agian ez dute behar bezala funtzionatuko bertsioa berritzen amaitu arte."</string>
     <string name="android_upgrading_apk" msgid="7904042682111526169">"<xliff:g id="NUMBER_0">%1$d</xliff:g>/<xliff:g id="NUMBER_1">%2$d</xliff:g> aplikazio optimizatzen."</string>
     <string name="android_preparing_apk" msgid="8162599310274079154">"<xliff:g id="APPNAME">%1$s</xliff:g> prestatzen."</string>
     <string name="android_upgrading_starting_apps" msgid="451464516346926713">"Aplikazioak abiarazten."</string>
@@ -1501,10 +1500,8 @@
     <string name="package_deleted_device_owner" msgid="7650577387493101353">"Administratzaileak ezabatu du"</string>
     <string name="battery_saver_description" msgid="1960431123816253034">"Bateriak gehiago iraun dezan, bateria-aurrezleak gailuaren funtzionamendua, dardara,  kokapen-zerbitzuak eta atzeko planoko datuen erabilera gehiena mugatzen ditu. Posta elektronikoa, mezuak eta sinkronizatzen diren gainerako zerbitzuak ez dira eguneratuko ireki ezean.\n\nGailua kargatzen ezarri orduko desaktibatzen da bateria-aurrezlea."</string>
     <string name="data_saver_description" msgid="6015391409098303235">"Datuen erabilera murrizteko, atzeko planoan datuak bidaltzea eta jasotzea galarazten die datu-aurrezleak aplikazio batzuei. Unean erabiltzen ari zaren aplikazioak atzi ditzake datuak, baina baliteke maiztasun txikiagoarekin atzitzea. Horrela, adibidez, baliteke irudiak ez erakustea haiek sakatu arte."</string>
-    <!-- no translation found for data_saver_enable_title (4674073932722787417) -->
-    <skip />
-    <!-- no translation found for data_saver_enable_button (7147735965247211818) -->
-    <skip />
+    <string name="data_saver_enable_title" msgid="4674073932722787417">"Datu-aurrezlea aktibatu nahi?"</string>
+    <string name="data_saver_enable_button" msgid="7147735965247211818">"Aktibatu"</string>
     <plurals name="zen_mode_duration_minutes_summary" formatted="false" msgid="4367877408072000848">
       <item quantity="other">%1$d minutuz (<xliff:g id="FORMATTEDTIME_1">%2$s</xliff:g> arte)</item>
       <item quantity="one">Minutu batez (<xliff:g id="FORMATTEDTIME_0">%2$s</xliff:g> arte)</item>
diff --git a/core/res/res/values-fa/strings.xml b/core/res/res/values-fa/strings.xml
index 55afe89..40aa294 100644
--- a/core/res/res/values-fa/strings.xml
+++ b/core/res/res/values-fa/strings.xml
@@ -147,9 +147,9 @@
     <string name="httpErrorOk" msgid="1191919378083472204">"تأیید"</string>
     <string name="httpError" msgid="7956392511146698522">"خطایی در شبکه وجود داشت."</string>
     <string name="httpErrorLookup" msgid="4711687456111963163">"‏URL پیدا نشد."</string>
-    <string name="httpErrorUnsupportedAuthScheme" msgid="6299980280442076799">"‏طرح کلی تأیید اعتبار سایت پشتیبانی نمی‌‎شود."</string>
-    <string name="httpErrorAuth" msgid="1435065629438044534">"تأیید اعتبار انجام نشد."</string>
-    <string name="httpErrorProxyAuth" msgid="1788207010559081331">"تأیید اعتبار از طریق سرور پروکسی انجام نشد."</string>
+    <string name="httpErrorUnsupportedAuthScheme" msgid="6299980280442076799">"‏طرح کلی احراز هویت سایت پشتیبانی نمی‌‎شود."</string>
+    <string name="httpErrorAuth" msgid="1435065629438044534">"تأیید اعتبار ناموفق بود."</string>
+    <string name="httpErrorProxyAuth" msgid="1788207010559081331">"احراز هویت از طریق سرور پروکسی انجام نشد."</string>
     <string name="httpErrorConnect" msgid="8714273236364640549">"اتصال به سرور انجام نشد."</string>
     <string name="httpErrorIO" msgid="2340558197489302188">"برقراری ارتباط با سرور ممکن نبود. بعداً دوباره امتحان کنید."</string>
     <string name="httpErrorTimeout" msgid="4743403703762883954">"زمان اتصال به سرور تمام شده است."</string>
@@ -218,11 +218,9 @@
     <string name="bugreport_title" msgid="2667494803742548533">"گرفتن گزارش اشکال"</string>
     <string name="bugreport_message" msgid="398447048750350456">"این گزارش اطلاعات مربوط به وضعیت دستگاه کنونی شما را جمع‌آوری می‌کند تا به صورت یک پیام ایمیل ارسال شود. از زمان شروع گزارش اشکال تا آماده شدن برای ارسال اندکی زمان می‌برد؛ لطفاً شکیبا باشید."</string>
     <string name="bugreport_option_interactive_title" msgid="8635056131768862479">"گزارش تعاملی"</string>
-    <!-- no translation found for bugreport_option_interactive_summary (229299488536107968) -->
-    <skip />
+    <string name="bugreport_option_interactive_summary" msgid="229299488536107968">"در بیشتر شرایط از این گزینه استفاده کنید. به شما امکان ردیابی پیشرفت گزارش و وارد کردن جزئیات بیشتری درباره مشکل را می‌دهد. ممکن است برخی از بخش‌هایی را که کمتر استفاده شده و باعث افزایش طول زمان گزارش می‌شود حذف کند."</string>
     <string name="bugreport_option_full_title" msgid="6354382025840076439">"گزارش کامل"</string>
-    <!-- no translation found for bugreport_option_full_summary (7210859858969115745) -->
-    <skip />
+    <string name="bugreport_option_full_summary" msgid="7210859858969115745">"از این گزینه برای به‌حداقل رساندن تداخل سیستم هنگام پاسخ‌گو نبودن یا کند بودن دستگاه یا هنگام نیازداشتن به همه بخش‌های گزارش استفاده کنید. عکس صفحه‌نمایش دیگری نمی‌گیرد یا امکان وارد کردن جزئیات بیشتری به شما نمی‌دهد."</string>
     <plurals name="bugreport_countdown" formatted="false" msgid="6878900193900090368">
       <item quantity="one">تا <xliff:g id="NUMBER_1">%d</xliff:g> ثانیه دیگر عکس صفحه‌نمایش برای گزارش اشکال گرفته می‌شود.</item>
       <item quantity="other">تا <xliff:g id="NUMBER_1">%d</xliff:g> ثانیه دیگر عکس صفحه‌نمایش برای گزارش اشکال گرفته می‌شود.</item>
@@ -860,8 +858,7 @@
       <item quantity="one"><xliff:g id="COUNT">%d</xliff:g> ساعت</item>
       <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> ساعت</item>
     </plurals>
-    <!-- no translation found for now_string_shortest (8912796667087856402) -->
-    <skip />
+    <string name="now_string_shortest" msgid="8912796667087856402">"اکنون"</string>
     <!-- no translation found for duration_minutes_shortest (598436407511890455) -->
     <!-- no translation found for duration_hours_shortest (8300234116089026299) -->
     <!-- no translation found for duration_days_shortest (1363973360381363510) -->
@@ -968,6 +965,8 @@
     <string name="android_upgrading_title" msgid="1584192285441405746">"‏Android در حال ارتقا است..."</string>
     <string name="android_start_title" msgid="8418054686415318207">"‏Android در حال راه‌اندازی است..."</string>
     <string name="android_upgrading_fstrim" msgid="8036718871534640010">"بهینه‌سازی فضای ذخیره‌سازی."</string>
+    <string name="android_upgrading_notification_title" msgid="1619393112444671028">"‏Android درحال ارتقا است"</string>
+    <string name="android_upgrading_notification_body" msgid="5761201379457064286">"تا پایان ارتقا، ممکن است برخی از برنامه‌ها به‌درستی کار نکنند."</string>
     <string name="android_upgrading_apk" msgid="7904042682111526169">"در حال بهینه‌سازی برنامهٔ <xliff:g id="NUMBER_0">%1$d</xliff:g> از <xliff:g id="NUMBER_1">%2$d</xliff:g>."</string>
     <string name="android_preparing_apk" msgid="8162599310274079154">"آماده‌سازی <xliff:g id="APPNAME">%1$s</xliff:g>."</string>
     <string name="android_upgrading_starting_apps" msgid="451464516346926713">"در حال آغاز برنامه‌ها."</string>
@@ -1501,10 +1500,8 @@
     <string name="package_deleted_device_owner" msgid="7650577387493101353">"توسط سرپرستتان حذف شد"</string>
     <string name="battery_saver_description" msgid="1960431123816253034">"برای کمک به بهبود عمر باتری، بهینه‌سازی باتری عملکرد دستگاهتان را کاهش می‌دهد و لرزش، سرویس‌های مبتنی بر مکان، و دسترسی به اکثر داده‌ها در پس‌زمینه را محدود می‌کند. ایمیل، پیام‌رسانی و برنامه‌های دیگری که به همگام‌سازی وابسته‌اند، تا زمانی‌که آن‌ها را باز نکنید نمی‌توانند به‌روز شوند.\n\nبهینه‌سازی باتری به‌صورت خودکار در هنگام شارژ شدن دستگاه خاموش می‌شود."</string>
     <string name="data_saver_description" msgid="6015391409098303235">"برای کمک به کاهش مصرف داده، «صرفه‌جویی داده» مانع ارسال و دریافت داده در پس‌زمینه ازطرف بعضی برنامه‌ها می‌شود. برنامه‌ای که درحال حاضر استفاده می‌کنید می‌تواند به داده دسترسی داشته باشد اما دفعات دسترسی آن محدود است. به این معنی که، برای مثال، تصاویر تا زمانی که روی آنها ضربه نزنید نشان داده نمی‌شوند."</string>
-    <!-- no translation found for data_saver_enable_title (4674073932722787417) -->
-    <skip />
-    <!-- no translation found for data_saver_enable_button (7147735965247211818) -->
-    <skip />
+    <string name="data_saver_enable_title" msgid="4674073932722787417">"صرفه‌جویی داده روشن شود؟"</string>
+    <string name="data_saver_enable_button" msgid="7147735965247211818">"روشن کردن"</string>
     <plurals name="zen_mode_duration_minutes_summary" formatted="false" msgid="4367877408072000848">
       <item quantity="one">‏به مدت %1$d دقیقه (تا <xliff:g id="FORMATTEDTIME_1">%2$s</xliff:g>)</item>
       <item quantity="other">‏به مدت %1$d دقیقه (تا <xliff:g id="FORMATTEDTIME_1">%2$s</xliff:g>)</item>
diff --git a/core/res/res/values-fi/strings.xml b/core/res/res/values-fi/strings.xml
index d517487..80e0cd9 100644
--- a/core/res/res/values-fi/strings.xml
+++ b/core/res/res/values-fi/strings.xml
@@ -218,11 +218,9 @@
     <string name="bugreport_title" msgid="2667494803742548533">"Luo virheraportti"</string>
     <string name="bugreport_message" msgid="398447048750350456">"Toiminto kerää tietoja laitteen tilasta ja lähettää ne sähköpostitse. Virheraportti on valmis lähetettäväksi hetken kuluttua - kiitos kärsivällisyydestäsi."</string>
     <string name="bugreport_option_interactive_title" msgid="8635056131768862479">"Interaktiivinen"</string>
-    <!-- no translation found for bugreport_option_interactive_summary (229299488536107968) -->
-    <skip />
+    <string name="bugreport_option_interactive_summary" msgid="229299488536107968">"Valitse tämä vaihtoehto useimmissa tapauksissa. Voit seurata raportin etenemistä, antaa lisätietoja ongelmasta ja tallentaa kuvakaappauksia. Tämä vaihtoehto saattaa ohittaa joitakin harvoin käytettyjä osioita, joiden käsittely raportissa kestää kauan."</string>
     <string name="bugreport_option_full_title" msgid="6354382025840076439">"Koko raportti"</string>
-    <!-- no translation found for bugreport_option_full_summary (7210859858969115745) -->
-    <skip />
+    <string name="bugreport_option_full_summary" msgid="7210859858969115745">"Valitse tämä, jos laitteesi ei ota komentoja vastaan, jos se toimii hitaasti tai tarvitset kaikkia raportin osioita. Raporttiin ei voi tallentaa lisätietoja tai useampia kuvakaappauksia."</string>
     <plurals name="bugreport_countdown" formatted="false" msgid="6878900193900090368">
       <item quantity="other">Virheraporttiin otetaan kuvakaappaus <xliff:g id="NUMBER_1">%d</xliff:g> sekunnin kuluttua.</item>
       <item quantity="one">Virheraporttiin otetaan kuvakaappaus <xliff:g id="NUMBER_0">%d</xliff:g> sekunnin kuluttua.</item>
@@ -860,8 +858,7 @@
       <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> tuntia</item>
       <item quantity="one">1 tunti</item>
     </plurals>
-    <!-- no translation found for now_string_shortest (8912796667087856402) -->
-    <skip />
+    <string name="now_string_shortest" msgid="8912796667087856402">"nyt"</string>
     <!-- no translation found for duration_minutes_shortest (598436407511890455) -->
     <!-- no translation found for duration_hours_shortest (8300234116089026299) -->
     <!-- no translation found for duration_days_shortest (1363973360381363510) -->
@@ -968,6 +965,8 @@
     <string name="android_upgrading_title" msgid="1584192285441405746">"Androidia päivitetään…"</string>
     <string name="android_start_title" msgid="8418054686415318207">"Android käynnistyy…"</string>
     <string name="android_upgrading_fstrim" msgid="8036718871534640010">"Optimoidaan tallennustilaa."</string>
+    <string name="android_upgrading_notification_title" msgid="1619393112444671028">"Androidia päivitetään"</string>
+    <string name="android_upgrading_notification_body" msgid="5761201379457064286">"Kaikki sovellukset eivät ehkä toimi oikein, ennen kuin päivitys on valmis."</string>
     <string name="android_upgrading_apk" msgid="7904042682111526169">"Optimoidaan sovellusta <xliff:g id="NUMBER_0">%1$d</xliff:g>/<xliff:g id="NUMBER_1">%2$d</xliff:g>."</string>
     <string name="android_preparing_apk" msgid="8162599310274079154">"Valmistellaan: <xliff:g id="APPNAME">%1$s</xliff:g>."</string>
     <string name="android_upgrading_starting_apps" msgid="451464516346926713">"Käynnistetään sovelluksia."</string>
@@ -1501,10 +1500,8 @@
     <string name="package_deleted_device_owner" msgid="7650577387493101353">"Järjestelmänvalvoja on poistanut paketin."</string>
     <string name="battery_saver_description" msgid="1960431123816253034">"Jos haluat parantaa akun kestoa, virransäästö vähentää laitteesi suorituskykyä ja rajoittaa värinää, sijaintipalveluita ja useimpia taustatietoja. Sähköposti, viestit ja muut synkronointiin perustuvat sovellukset eivät välttämättä päivity, ellet avaa niitä.\n\nVirransäästö poistuu käytöstä automaattisesti, kun laitteesi latautuu."</string>
     <string name="data_saver_description" msgid="6015391409098303235">"Data Saver estää joitakin sovelluksia lähettämästä tai vastaanottamasta tietoja taustalla, jotta datan käyttöä voidaan vähentää. Käytössäsi oleva sovellus voi yhä käyttää dataa, mutta se saattaa tehdä niin tavallista harvemmin. Tämä voi tarkoittaa esimerkiksi sitä, että kuva ladataan vasta, kun kosketat sitä."</string>
-    <!-- no translation found for data_saver_enable_title (4674073932722787417) -->
-    <skip />
-    <!-- no translation found for data_saver_enable_button (7147735965247211818) -->
-    <skip />
+    <string name="data_saver_enable_title" msgid="4674073932722787417">"Otetaanko Data Saver käyttöön?"</string>
+    <string name="data_saver_enable_button" msgid="7147735965247211818">"Ota käyttöön"</string>
     <plurals name="zen_mode_duration_minutes_summary" formatted="false" msgid="4367877408072000848">
       <item quantity="other">%1$d minuutiksi (kunnes kello on <xliff:g id="FORMATTEDTIME_1">%2$s</xliff:g>)</item>
       <item quantity="one">Yhdeksi minuutiksi (kunnes kello on <xliff:g id="FORMATTEDTIME_0">%2$s</xliff:g>)</item>
diff --git a/core/res/res/values-fr-rCA/strings.xml b/core/res/res/values-fr-rCA/strings.xml
index 56b4e81..0a8c739 100644
--- a/core/res/res/values-fr-rCA/strings.xml
+++ b/core/res/res/values-fr-rCA/strings.xml
@@ -218,11 +218,9 @@
     <string name="bugreport_title" msgid="2667494803742548533">"Créer un rapport de bogue"</string>
     <string name="bugreport_message" msgid="398447048750350456">"Cela permet de recueillir des informations concernant l\'état actuel de votre appareil. Ces informations sont ensuite envoyées sous forme de courriel. Merci de patienter pendant la préparation du rapport de bogue. Cette opération peut prendre quelques instants."</string>
     <string name="bugreport_option_interactive_title" msgid="8635056131768862479">"Rapport interactif"</string>
-    <!-- no translation found for bugreport_option_interactive_summary (229299488536107968) -->
-    <skip />
+    <string name="bugreport_option_interactive_summary" msgid="229299488536107968">"Utilisez cette option dans la plupart des circonstances. Elle vous permet de suivre la progression du rapport, d\'entrer plus d\'information sur le problème et d\'effectuer des saisies d\'écran. Certaines sections moins utilisées et dont le remplissage demande beaucoup de temps peuvent être omises."</string>
     <string name="bugreport_option_full_title" msgid="6354382025840076439">"Rapport complet"</string>
-    <!-- no translation found for bugreport_option_full_summary (7210859858969115745) -->
-    <skip />
+    <string name="bugreport_option_full_summary" msgid="7210859858969115745">"Utilisez cette option pour qu\'il y ait le moins d\'interférences système possible lorsque votre appareil ne répond pas ou qu\'il est trop lent, ou lorsque vous avez besoin de toutes les sections du rapport de bogue. Aucune saisie d\'écran supplémentaire ne peut être capturée, et vous ne pouvez entrer aucune autre information."</string>
     <plurals name="bugreport_countdown" formatted="false" msgid="6878900193900090368">
       <item quantity="one">Saisie d\'écran pour le rapport de bogue dans <xliff:g id="NUMBER_1">%d</xliff:g> seconde.</item>
       <item quantity="other">Saisie d\'écran pour le rapport de bogue dans <xliff:g id="NUMBER_1">%d</xliff:g> secondes.</item>
@@ -860,8 +858,7 @@
       <item quantity="one"><xliff:g id="COUNT">%d</xliff:g> heure</item>
       <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> heures</item>
     </plurals>
-    <!-- no translation found for now_string_shortest (8912796667087856402) -->
-    <skip />
+    <string name="now_string_shortest" msgid="8912796667087856402">"mainten."</string>
     <!-- no translation found for duration_minutes_shortest (598436407511890455) -->
     <!-- no translation found for duration_hours_shortest (8300234116089026299) -->
     <!-- no translation found for duration_days_shortest (1363973360381363510) -->
@@ -968,6 +965,8 @@
     <string name="android_upgrading_title" msgid="1584192285441405746">"Mise à jour d\'Android…"</string>
     <string name="android_start_title" msgid="8418054686415318207">"Android en cours de démarrage..."</string>
     <string name="android_upgrading_fstrim" msgid="8036718871534640010">"Optimisation du stockage."</string>
+    <string name="android_upgrading_notification_title" msgid="1619393112444671028">"Installation de la m. à niveau d\'Android"</string>
+    <string name="android_upgrading_notification_body" msgid="5761201379457064286">"Il se peut que certaines applications ne fonctionnent pas correctement jusqu\'à ce que la mise à niveau soit terminée"</string>
     <string name="android_upgrading_apk" msgid="7904042682111526169">"Optimisation de l\'application <xliff:g id="NUMBER_0">%1$d</xliff:g> sur <xliff:g id="NUMBER_1">%2$d</xliff:g>…"</string>
     <string name="android_preparing_apk" msgid="8162599310274079154">"Préparation de <xliff:g id="APPNAME">%1$s</xliff:g> en cours…"</string>
     <string name="android_upgrading_starting_apps" msgid="451464516346926713">"Lancement des applications…"</string>
@@ -1501,10 +1500,8 @@
     <string name="package_deleted_device_owner" msgid="7650577387493101353">"Supprimé par votre administrateur"</string>
     <string name="battery_saver_description" msgid="1960431123816253034">"Pour améliorer l\'autonomie de la pile, la fonction d\'économie d\'énergie réduit les performances de votre appareil et limite la vibration, les services de localisation ainsi que la plupart des données en arrière-plan. Les applications Courriel, Messages et d\'autres qui reposent sur la synchronisation ne peuvent pas se mettre à jour, sauf si vous les ouvrez. \n\n L\'économiseur d\'énergie se désactive automatiquement lorsque votre appareil est en charge."</string>
     <string name="data_saver_description" msgid="6015391409098303235">"Pour aider à diminuer l\'utilisation des données, la fonction Économiseur de données empêche certaines applications d\'envoyer ou de recevoir des données en arrière-plan. Une application que vous utilisez actuellement peut accéder à des données, mais peut le faire moins souvent. Cela peut signifier, par exemple, que les images ne s\'affichent pas jusqu\'à ce que vous les touchiez."</string>
-    <!-- no translation found for data_saver_enable_title (4674073932722787417) -->
-    <skip />
-    <!-- no translation found for data_saver_enable_button (7147735965247211818) -->
-    <skip />
+    <string name="data_saver_enable_title" msgid="4674073932722787417">"Activer l\'Économiseur de données?"</string>
+    <string name="data_saver_enable_button" msgid="7147735965247211818">"Activer"</string>
     <plurals name="zen_mode_duration_minutes_summary" formatted="false" msgid="4367877408072000848">
       <item quantity="one">Pendant %1$d minute (jusqu\'à <xliff:g id="FORMATTEDTIME_1">%2$s</xliff:g>)</item>
       <item quantity="other">Pendant %1$d minutes (jusqu\'à <xliff:g id="FORMATTEDTIME_1">%2$s</xliff:g>)</item>
diff --git a/core/res/res/values-fr/strings.xml b/core/res/res/values-fr/strings.xml
index c765c81..aef1556 100644
--- a/core/res/res/values-fr/strings.xml
+++ b/core/res/res/values-fr/strings.xml
@@ -218,11 +218,9 @@
     <string name="bugreport_title" msgid="2667494803742548533">"Créer un rapport de bug"</string>
     <string name="bugreport_message" msgid="398447048750350456">"Cela permet de recueillir des informations concernant l\'état actuel de votre appareil. Ces informations sont ensuite envoyées sous forme d\'e-mail. Merci de patienter pendant la préparation du rapport de bug. Cette opération peut prendre quelques instants."</string>
     <string name="bugreport_option_interactive_title" msgid="8635056131768862479">"Rapport interactif"</string>
-    <!-- no translation found for bugreport_option_interactive_summary (229299488536107968) -->
-    <skip />
+    <string name="bugreport_option_interactive_summary" msgid="229299488536107968">"Utilisez cette option dans la plupart des circonstances. Elle vous permet de suivre la progression du rapport, de saisir plus d\'informations sur le problème et d\'effectuer des captures d\'écran. Certaines sections moins utilisées et dont le remplissage demande beaucoup de temps peuvent être omises."</string>
     <string name="bugreport_option_full_title" msgid="6354382025840076439">"Rapport complet"</string>
-    <!-- no translation found for bugreport_option_full_summary (7210859858969115745) -->
-    <skip />
+    <string name="bugreport_option_full_summary" msgid="7210859858969115745">"Utilisez cette option pour qu\'il y ait le moins d\'interférences système possible lorsque votre appareil ne répond pas ou qu\'il est trop lent, ou lorsque vous avez besoin de toutes les sections du rapport de bug. Aucune capture d\'écran supplémentaire ne peut être prise, et vous ne pouvez saisir aucune autre information."</string>
     <plurals name="bugreport_countdown" formatted="false" msgid="6878900193900090368">
       <item quantity="one">Capture d\'écran pour le rapport de bug dans <xliff:g id="NUMBER_1">%d</xliff:g> seconde</item>
       <item quantity="other">Capture d\'écran pour le rapport de bug dans <xliff:g id="NUMBER_1">%d</xliff:g> secondes</item>
@@ -503,12 +501,12 @@
     <string name="permdesc_accessNetworkConditions" msgid="6899102075825272211">"Permet à une application de détecter des observations sur les conditions du réseau. Les applications standards ne devraient pas nécessiter cette autorisation."</string>
     <string name="permlab_setInputCalibration" msgid="4902620118878467615">"modifier le calibrage du périphérique d\'entrée"</string>
     <string name="permdesc_setInputCalibration" msgid="4527511047549456929">"Permettre à l\'application de modifier les paramètres de calibrage de l\'écran tactile. Ne devrait jamais être nécessaire pour les applications standards."</string>
-    <string name="permlab_accessDrmCertificates" msgid="7436886640723203615">"accéder aux certificats de GDN"</string>
-    <string name="permdesc_accessDrmCertificates" msgid="8073288354426159089">"Permettre à une application de fournir et d\'utiliser des certificats de GDN. Ne devrait jamais être nécessaire pour les applications standards."</string>
+    <string name="permlab_accessDrmCertificates" msgid="7436886640723203615">"accéder aux certificats DRM"</string>
+    <string name="permdesc_accessDrmCertificates" msgid="8073288354426159089">"Permet à une application de fournir et d\'utiliser des certificats DRM. Ne devrait jamais être nécessaire pour les applications standards."</string>
     <string name="permlab_handoverStatus" msgid="7820353257219300883">"recevoir des informations sur l\'état du transfert Android Beam"</string>
     <string name="permdesc_handoverStatus" msgid="4788144087245714948">"Autoriser cette application à recevoir des informations sur les transferts Android Beam en cours"</string>
-    <string name="permlab_removeDrmCertificates" msgid="7044888287209892751">"supprimer les certificats de GDN"</string>
-    <string name="permdesc_removeDrmCertificates" msgid="7272999075113400993">"Permet à une application de supprimer les certificats de GDN. Ne devrait jamais être nécessaire pour les applications standards."</string>
+    <string name="permlab_removeDrmCertificates" msgid="7044888287209892751">"supprimer les certificats DRM"</string>
+    <string name="permdesc_removeDrmCertificates" msgid="7272999075113400993">"Permet à une application de supprimer les certificats DRM. Ne devrait jamais être nécessaire pour les applications standards."</string>
     <string name="permlab_bindCarrierMessagingService" msgid="1490229371796969158">"s\'associer au service SMS/MMS d\'un opérateur"</string>
     <string name="permdesc_bindCarrierMessagingService" msgid="2762882888502113944">"Permettre à l\'application de s\'associer à l\'interface de niveau supérieur du service SMS/MMS d\'un opérateur. Ne devrait jamais être nécessaire pour les applications standards."</string>
     <string name="permlab_bindCarrierServices" msgid="3233108656245526783">"associer aux services de l\'opérateur"</string>
@@ -860,8 +858,7 @@
       <item quantity="one"><xliff:g id="COUNT">%d</xliff:g> heure</item>
       <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> heures</item>
     </plurals>
-    <!-- no translation found for now_string_shortest (8912796667087856402) -->
-    <skip />
+    <string name="now_string_shortest" msgid="8912796667087856402">"mainten."</string>
     <!-- no translation found for duration_minutes_shortest (598436407511890455) -->
     <!-- no translation found for duration_hours_shortest (8300234116089026299) -->
     <!-- no translation found for duration_days_shortest (1363973360381363510) -->
@@ -968,6 +965,8 @@
     <string name="android_upgrading_title" msgid="1584192285441405746">"Mise à jour d\'Android…"</string>
     <string name="android_start_title" msgid="8418054686415318207">"Démarrage d\'Android en cours"</string>
     <string name="android_upgrading_fstrim" msgid="8036718871534640010">"Optimisation du stockage en cours…"</string>
+    <string name="android_upgrading_notification_title" msgid="1619393112444671028">"Mise à jour d\'Android…"</string>
+    <string name="android_upgrading_notification_body" msgid="5761201379457064286">"Certaines applications peuvent ne pas fonctionner correctement jusqu\'à ce que la mise à jour soit terminée."</string>
     <string name="android_upgrading_apk" msgid="7904042682111526169">"Optimisation de l\'application <xliff:g id="NUMBER_0">%1$d</xliff:g> sur <xliff:g id="NUMBER_1">%2$d</xliff:g>…"</string>
     <string name="android_preparing_apk" msgid="8162599310274079154">"Préparation de <xliff:g id="APPNAME">%1$s</xliff:g> en cours…"</string>
     <string name="android_upgrading_starting_apps" msgid="451464516346926713">"Lancement des applications…"</string>
@@ -1501,10 +1500,8 @@
     <string name="package_deleted_device_owner" msgid="7650577387493101353">"Supprimé par votre administrateur"</string>
     <string name="battery_saver_description" msgid="1960431123816253034">"Pour améliorer l\'autonomie de la batterie, l\'économiseur de batterie réduit les performances et désactive le vibreur, les services de localisation et la plupart des données en arrière-plan. Les messageries électroniques ou autres applications utilisant la synchronisation pourraient ne pas se mettre à jour, sauf si vous les ouvrez.\n\nL\'économiseur de batterie s\'éteint automatiquement lorsque l\'appareil est en charge."</string>
     <string name="data_saver_description" msgid="6015391409098303235">"Pour réduire la consommation des données, l\'économiseur de données empêche certaines applications d\'envoyer ou de recevoir des données en arrière-plan. Ainsi, une application que vous utilisez actuellement peut accéder à des données, mais moins souvent. Par exemple, les images peuvent ne pas s\'afficher tant que vous n\'appuyez pas dessus."</string>
-    <!-- no translation found for data_saver_enable_title (4674073932722787417) -->
-    <skip />
-    <!-- no translation found for data_saver_enable_button (7147735965247211818) -->
-    <skip />
+    <string name="data_saver_enable_title" msgid="4674073932722787417">"Activer sauvegarde données ?"</string>
+    <string name="data_saver_enable_button" msgid="7147735965247211818">"Activer"</string>
     <plurals name="zen_mode_duration_minutes_summary" formatted="false" msgid="4367877408072000848">
       <item quantity="one">Pendant %1$d minute (jusqu\'à <xliff:g id="FORMATTEDTIME_1">%2$s</xliff:g>)</item>
       <item quantity="other">Pendant %1$d minutes (jusqu\'à <xliff:g id="FORMATTEDTIME_1">%2$s</xliff:g>)</item>
diff --git a/core/res/res/values-gl-rES/strings.xml b/core/res/res/values-gl-rES/strings.xml
index e2a2111..7a81596 100644
--- a/core/res/res/values-gl-rES/strings.xml
+++ b/core/res/res/values-gl-rES/strings.xml
@@ -218,11 +218,9 @@
     <string name="bugreport_title" msgid="2667494803742548533">"Crear informe de erros"</string>
     <string name="bugreport_message" msgid="398447048750350456">"Este informe recompilará información acerca do estado actual do teu dispositivo para enviala en forma de mensaxe de correo electrónico. O informe de erros tardará un pouco en completarse desde o seu inicio ata que estea preparado para enviarse, polo que che recomendamos que teñas paciencia."</string>
     <string name="bugreport_option_interactive_title" msgid="8635056131768862479">"Informe interactivo"</string>
-    <!-- no translation found for bugreport_option_interactive_summary (229299488536107968) -->
-    <skip />
+    <string name="bugreport_option_interactive_summary" msgid="229299488536107968">"Usa esta opción na maioría das circunstancias. Permíteche realizar un seguimento do progreso do informe, introducir máis detalles sobre o problema e facer capturas de pantalla. É posible que omita algunhas seccións menos usadas para as que se tarda máis en facer o informe."</string>
     <string name="bugreport_option_full_title" msgid="6354382025840076439">"Informe completo"</string>
-    <!-- no translation found for bugreport_option_full_summary (7210859858969115745) -->
-    <skip />
+    <string name="bugreport_option_full_summary" msgid="7210859858969115745">"Usa esta opción para que a interferencia sexa mínima cando o teu dispositivo non responda ou funcione demasiado lento, ou ben cando precises todas as seccións do informe. Non poderás introducir máis detalles nin facer máis capturas de pantalla."</string>
     <plurals name="bugreport_countdown" formatted="false" msgid="6878900193900090368">
       <item quantity="other">Vaise facer unha captura de pantalla para o informe de erros en <xliff:g id="NUMBER_1">%d</xliff:g> segundos.</item>
       <item quantity="one">Vaise facer unha captura de pantalla para o informe de erros en <xliff:g id="NUMBER_0">%d</xliff:g> segundo.</item>
@@ -860,8 +858,7 @@
       <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> horas</item>
       <item quantity="one">Unha hora</item>
     </plurals>
-    <!-- no translation found for now_string_shortest (8912796667087856402) -->
-    <skip />
+    <string name="now_string_shortest" msgid="8912796667087856402">"agora"</string>
     <!-- no translation found for duration_minutes_shortest (598436407511890455) -->
     <!-- no translation found for duration_hours_shortest (8300234116089026299) -->
     <!-- no translation found for duration_days_shortest (1363973360381363510) -->
@@ -968,6 +965,8 @@
     <string name="android_upgrading_title" msgid="1584192285441405746">"Estase actualizando Android…"</string>
     <string name="android_start_title" msgid="8418054686415318207">"Estase iniciando Android…"</string>
     <string name="android_upgrading_fstrim" msgid="8036718871534640010">"Optimizando almacenamento."</string>
+    <string name="android_upgrading_notification_title" msgid="1619393112444671028">"Estase actualizando Android"</string>
+    <string name="android_upgrading_notification_body" msgid="5761201379457064286">"É posible que algunhas aplicacións non funcionen correctamente ata que finalice o proceso de actualización"</string>
     <string name="android_upgrading_apk" msgid="7904042682111526169">"Optimizando aplicación <xliff:g id="NUMBER_0">%1$d</xliff:g> de <xliff:g id="NUMBER_1">%2$d</xliff:g>."</string>
     <string name="android_preparing_apk" msgid="8162599310274079154">"Preparando <xliff:g id="APPNAME">%1$s</xliff:g>."</string>
     <string name="android_upgrading_starting_apps" msgid="451464516346926713">"Iniciando aplicacións."</string>
@@ -1501,10 +1500,8 @@
     <string name="package_deleted_device_owner" msgid="7650577387493101353">"Eliminado polo administrador"</string>
     <string name="battery_saver_description" msgid="1960431123816253034">"Para axudar a mellorar a duración da batería, a función aforro de batería reduce o rendemento do teu dispositivo e limita a vibración, os servizos de localización e a maioría dos datos en segundo plano. É posible que o correo electrónico, as mensaxes e outras aplicacións que dependen da sincronización non se actualicen a menos que os abras. \n\nA función aforro de batería desactívase automaticamente cando pos a cargar o teu dispositivo."</string>
     <string name="data_saver_description" msgid="6015391409098303235">"Para contribuír a reducir o uso de datos, o Economizador de datos impide que algunhas aplicacións envíen ou reciban datos en segundo plano. Cando esteas utilizando unha aplicación, esta poderá acceder aos datos, pero é posible que o faga con menos frecuencia. Por exemplo, é posible que as imaxes non se mostren ata que as toques."</string>
-    <!-- no translation found for data_saver_enable_title (4674073932722787417) -->
-    <skip />
-    <!-- no translation found for data_saver_enable_button (7147735965247211818) -->
-    <skip />
+    <string name="data_saver_enable_title" msgid="4674073932722787417">"Queres activar o economizador de datos?"</string>
+    <string name="data_saver_enable_button" msgid="7147735965247211818">"Activar"</string>
     <plurals name="zen_mode_duration_minutes_summary" formatted="false" msgid="4367877408072000848">
       <item quantity="other">Durante %1$d minutos (ata as <xliff:g id="FORMATTEDTIME_1">%2$s</xliff:g>)</item>
       <item quantity="one">Durante un minuto (ata as <xliff:g id="FORMATTEDTIME_0">%2$s</xliff:g>)</item>
diff --git a/core/res/res/values-gu-rIN/strings.xml b/core/res/res/values-gu-rIN/strings.xml
index 01f8b1c..1b5b613 100644
--- a/core/res/res/values-gu-rIN/strings.xml
+++ b/core/res/res/values-gu-rIN/strings.xml
@@ -218,11 +218,9 @@
     <string name="bugreport_title" msgid="2667494803742548533">"બગ રિપોર્ટ લો"</string>
     <string name="bugreport_message" msgid="398447048750350456">"આ, એક ઇ-મેઇલ સંદેશ તરીકે મોકલવા માટે, તમારા વર્તમાન ઉપકરણ સ્થિતિ વિશેની માહિતી એકત્રિત કરશે. એક બગ રિપોર્ટ પ્રારંભ કરીને તે મોકલવા માટે તૈયાર ન થઈ જાય ત્યાં સુધી તેમાં થોડો સમય લાગશે; કૃપા કરીને ધીરજ રાખો."</string>
     <string name="bugreport_option_interactive_title" msgid="8635056131768862479">"ક્રિયાપ્રતિક્રિયાત્મક રિપોર્ટ"</string>
-    <!-- no translation found for bugreport_option_interactive_summary (229299488536107968) -->
-    <skip />
+    <string name="bugreport_option_interactive_summary" msgid="229299488536107968">"મોટાભાગના સંજોગોમાં આનો ઉપયોગ કરો. તે રિપોર્ટની પ્રગતિને ટ્રૅક કરવા, સમસ્યા વિશે વધુ વિગતો દાખલ કરવાની અને સ્ક્રીનશૉટ્સ લેવાની મંજૂરી આપે છે. તે કેટલાક ઓછા ઉપયોગમાં આવતાં વિભાગો કે જે જાણ કરવામાં વધુ સમય લેતાં હોય તેને છોડી દઈ શકે છે."</string>
     <string name="bugreport_option_full_title" msgid="6354382025840076439">"પૂર્ણ રિપોર્ટ"</string>
-    <!-- no translation found for bugreport_option_full_summary (7210859858969115745) -->
-    <skip />
+    <string name="bugreport_option_full_summary" msgid="7210859858969115745">"જ્યારે તમારું ઉપકરણ પ્રતિભાવવિહીન અથવા ખૂબ ધીમું હોય અથવા જ્યારે તમને બધા રિપોર્ટ વિભાગોની જરૂર પડે ત્યારે ન્યૂનતમ સિસ્ટમ હસ્તક્ષેપ માટે આ વિકલ્પનો ઉપયોગ કરો. વધુ વિગતો દાખલ કરવાની અથવા વધારાના સ્ક્રીનશૉટ્સ લેવાની તમને મંજૂરી આપતું નથી."</string>
     <plurals name="bugreport_countdown" formatted="false" msgid="6878900193900090368">
       <item quantity="one">બગ રિપોર્ટ માટે <xliff:g id="NUMBER_1">%d</xliff:g> સેકન્ડમાં સ્ક્રીનશોટ લઈ રહ્યાં છે.</item>
       <item quantity="other">બગ રિપોર્ટ માટે <xliff:g id="NUMBER_1">%d</xliff:g> સેકન્ડમાં સ્ક્રીનશોટ લઈ રહ્યાં છે.</item>
@@ -860,8 +858,7 @@
       <item quantity="one"><xliff:g id="COUNT">%d</xliff:g> કલાક</item>
       <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> કલાક</item>
     </plurals>
-    <!-- no translation found for now_string_shortest (8912796667087856402) -->
-    <skip />
+    <string name="now_string_shortest" msgid="8912796667087856402">"હમણાં"</string>
     <!-- no translation found for duration_minutes_shortest (598436407511890455) -->
     <!-- no translation found for duration_hours_shortest (8300234116089026299) -->
     <!-- no translation found for duration_days_shortest (1363973360381363510) -->
@@ -968,6 +965,8 @@
     <string name="android_upgrading_title" msgid="1584192285441405746">"Android અપગ્રેડ થઈ રહ્યું છે..."</string>
     <string name="android_start_title" msgid="8418054686415318207">"Android પ્રારંભ થઈ રહ્યું છે…"</string>
     <string name="android_upgrading_fstrim" msgid="8036718871534640010">"સંગ્રહ ઓપ્ટિમાઇઝ કરી રહ્યું છે."</string>
+    <string name="android_upgrading_notification_title" msgid="1619393112444671028">"Android અપગ્રેડ થઈ રહ્યું છે"</string>
+    <string name="android_upgrading_notification_body" msgid="5761201379457064286">"અપગ્રેડ સમાપ્ત ન થાય ત્યાં સુધી કેટલીક ઍપ્લિકેશનો કદાચ યોગ્ય રીતે કામ ન કરે"</string>
     <string name="android_upgrading_apk" msgid="7904042682111526169">"<xliff:g id="NUMBER_1">%2$d</xliff:g> માંથી <xliff:g id="NUMBER_0">%1$d</xliff:g> એપ્લિકેશન ઓપ્ટિમાઇઝ કરી રહ્યું છે."</string>
     <string name="android_preparing_apk" msgid="8162599310274079154">"<xliff:g id="APPNAME">%1$s</xliff:g> તૈયાર કરી રહ્યું છે."</string>
     <string name="android_upgrading_starting_apps" msgid="451464516346926713">"એપ્લિકેશનો શરૂ કરી રહ્યાં છે."</string>
@@ -1501,10 +1500,8 @@
     <string name="package_deleted_device_owner" msgid="7650577387493101353">"તમારા વ્યવસ્થાપક દ્વારા કાઢી નાખેલ"</string>
     <string name="battery_saver_description" msgid="1960431123816253034">"બૅટરી આવરદા વધુ સારી કરવામાં સહાય માટે, બૅટરી સેવર તમારા ઉપકરણના પ્રદર્શનને ઘટાડે છે અને વાઇબ્રેશન, સ્થાન સેવાઓ અને મોટાભાગના પૃષ્ઠભૂમિ ડેટાને સીમિત કરે છે. ઇમેઇલ, મેસેજિંગ અને અન્ય એપ્લિકેશનો જે સમન્વયન પર આધાર રાખે છે તે તમે તેમને ખોલશો નહીં ત્યાં સુધી અપડેટ થઈ શકતી નથી.\n\nજ્યારે તમારું ઉપકરણ ચાર્જ થઈ રહ્યું હોય ત્યારે બૅટરી સેવર આપમેળે બંધ થઈ જાય છે."</string>
     <string name="data_saver_description" msgid="6015391409098303235">"ડેટા વપરાશને ઘટાડવામાં સહાય માટે, ડેટા સેવર કેટલીક ઍપ્લિકેશનોને પૃષ્ઠભૂમિમાં ડેટા મોકલવા અથવા પ્રાપ્ત કરવાથી અટકાવે છે. તમે હાલમાં ઉપયોગ કરી રહ્યાં છો તે ઍપ્લિકેશન ડેટાને ઍક્સેસ કરી શકે છે, પરંતુ તે આ ક્યારેક જ કરી શકે છે. આનો અર્થ એ હોઈ શકે છે, ઉદાહરણ તરીકે, જે છબીઓ ત્યાં સુધી પ્રદર્શિત થશે નહીં જ્યાં સુધી તમે તેને ટૅપ નહીં કરો."</string>
-    <!-- no translation found for data_saver_enable_title (4674073932722787417) -->
-    <skip />
-    <!-- no translation found for data_saver_enable_button (7147735965247211818) -->
-    <skip />
+    <string name="data_saver_enable_title" msgid="4674073932722787417">"ડેટા સેવર ચાલુ કરીએ?"</string>
+    <string name="data_saver_enable_button" msgid="7147735965247211818">"ચાલુ કરો"</string>
     <plurals name="zen_mode_duration_minutes_summary" formatted="false" msgid="4367877408072000848">
       <item quantity="one">%1$d મિનિટ માટે (<xliff:g id="FORMATTEDTIME_1">%2$s</xliff:g> સુધી)</item>
       <item quantity="other">%1$d મિનિટ માટે (<xliff:g id="FORMATTEDTIME_1">%2$s</xliff:g> સુધી)</item>
diff --git a/core/res/res/values-hi/strings.xml b/core/res/res/values-hi/strings.xml
index e13f3cd..2cc7120 100644
--- a/core/res/res/values-hi/strings.xml
+++ b/core/res/res/values-hi/strings.xml
@@ -218,11 +218,9 @@
     <string name="bugreport_title" msgid="2667494803742548533">"बग रिपोर्ट प्राप्त करें"</string>
     <string name="bugreport_message" msgid="398447048750350456">"ईमेल संदेश के रूप में भेजने के लिए, इसके द्वारा आपके डिवाइस की वर्तमान स्थिति के बारे में जानकारी एकत्र की जाएगी. बग रिपोर्ट प्रारंभ करने से लेकर भेजने के लिए तैयार होने तक कुछ समय लगेगा; कृपया धैर्य रखें."</string>
     <string name="bugreport_option_interactive_title" msgid="8635056131768862479">"सहभागी रिपोर्ट"</string>
-    <!-- no translation found for bugreport_option_interactive_summary (229299488536107968) -->
-    <skip />
+    <string name="bugreport_option_interactive_summary" msgid="229299488536107968">"अधिकांश परिस्थितियों में इसका उपयोग करें. यह आपको रिपोर्ट की प्रगति ट्रैक करने देता है, समस्या के बारे में अधिक विवरण डालने देता है और स्क्रीनशॉट लेने देता है. यह आपको ऐसे कम उपयोग किए गए अनुभाग मिटाने दे सकता है जिनकी रिपोर्ट करने में अधिक समय लगता है."</string>
     <string name="bugreport_option_full_title" msgid="6354382025840076439">"पूर्ण रिपोर्ट"</string>
-    <!-- no translation found for bugreport_option_full_summary (7210859858969115745) -->
-    <skip />
+    <string name="bugreport_option_full_summary" msgid="7210859858969115745">"जब आपका डिवाइस प्रतिसाद नहीं दे रहा हो या बहुत ही धीमा हो, या जब आपको सभी रिपोर्ट अनुभागों की आवश्यकता हो, तो न्यूनतम सिस्टम हस्तक्षेप के लिए इस विकल्प का उपयोग करें. यह आपको अधिक विवरण नहीं डालने देता या अतिरिक्त स्क्रीनशॉट नहीं लेने देता."</string>
     <plurals name="bugreport_countdown" formatted="false" msgid="6878900193900090368">
       <item quantity="one">बग रिपोर्ट के लिए <xliff:g id="NUMBER_1">%d</xliff:g> सेकंड में स्‍क्रीनशॉट लिया जा रहा है.</item>
       <item quantity="other">बग रिपोर्ट के लिए <xliff:g id="NUMBER_1">%d</xliff:g> सेकंड में स्‍क्रीनशॉट लिया जा रहा है.</item>
@@ -860,8 +858,7 @@
       <item quantity="one"><xliff:g id="COUNT">%d</xliff:g> घंटे</item>
       <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> घंटे</item>
     </plurals>
-    <!-- no translation found for now_string_shortest (8912796667087856402) -->
-    <skip />
+    <string name="now_string_shortest" msgid="8912796667087856402">"अभी"</string>
     <!-- no translation found for duration_minutes_shortest (598436407511890455) -->
     <!-- no translation found for duration_hours_shortest (8300234116089026299) -->
     <!-- no translation found for duration_days_shortest (1363973360381363510) -->
@@ -968,6 +965,8 @@
     <string name="android_upgrading_title" msgid="1584192285441405746">"Android अपग्रेड हो रहा है..."</string>
     <string name="android_start_title" msgid="8418054686415318207">"Android प्रारंभ हो रहा है…"</string>
     <string name="android_upgrading_fstrim" msgid="8036718871534640010">"मेमोरी ऑप्‍टिमाइज़ हो रही है."</string>
+    <string name="android_upgrading_notification_title" msgid="1619393112444671028">"Android अपग्रेड हो रहा है"</string>
+    <string name="android_upgrading_notification_body" msgid="5761201379457064286">"जब तक अपग्रेड पूरा नहीं हो जाता, तब तक संभव है कि कुछ ऐप्लिकेशन ठीक से कार्य ना करें"</string>
     <string name="android_upgrading_apk" msgid="7904042682111526169">"<xliff:g id="NUMBER_1">%2$d</xliff:g> में से <xliff:g id="NUMBER_0">%1$d</xliff:g> ऐप्स  अनुकूलित हो रहा है."</string>
     <string name="android_preparing_apk" msgid="8162599310274079154">"<xliff:g id="APPNAME">%1$s</xliff:g> तैयार हो रहा है."</string>
     <string name="android_upgrading_starting_apps" msgid="451464516346926713">"ऐप्स  प्रारंभ होने वाले हैं"</string>
@@ -1501,10 +1500,8 @@
     <string name="package_deleted_device_owner" msgid="7650577387493101353">"आपके नियंत्रक द्वारा हटाया गया"</string>
     <string name="battery_saver_description" msgid="1960431123816253034">"बैटरी जीवन काल को बेहतर बनाने में सहायता के लिए, बैटरी सेवर आपके डिवाइस के प्रदर्शन को कम कर देता है और कंपन, स्‍थान सेवाओं और अधिकांश पृष्‍ठभूमि डेटा को सीमित कर देता है. हो सकता है कि ईमेल, संदेश सेवा तथा समन्‍वयन पर आधारित अन्‍य ऐप्‍स तब तक ना खुलें जब तक कि आप उन्‍हें नहीं खोलते.\n\nजब आपका डिवाइस चार्ज हो रहा होता है तो बैटरी सेवर अपने आप बंद हो जाता है."</string>
     <string name="data_saver_description" msgid="6015391409098303235">"डेटा उपयोग कम करने में सहायता के लिए, डेटा बचतकर्ता कुछ ऐप्लिकेशन को पृष्ठभूमि में डेटा भेजने या प्राप्त करने से रोकता है. आपके द्वारा वर्तमान में उपयोग किया जा रहा एक ऐप्लिकेशन डेटा एक्सेस कर सकता है, लेकिन वह ऐसा कभी-कभी ही करेगा. उदाहरण के लिए, इसका अर्थ यह हो सकता है कि चित्र तब तक दिखाई नहीं देंगे जब तक कि आप उन्हें टैप नहीं करते."</string>
-    <!-- no translation found for data_saver_enable_title (4674073932722787417) -->
-    <skip />
-    <!-- no translation found for data_saver_enable_button (7147735965247211818) -->
-    <skip />
+    <string name="data_saver_enable_title" msgid="4674073932722787417">"डेटा बचतकर्ता चालू करें?"</string>
+    <string name="data_saver_enable_button" msgid="7147735965247211818">"चालू करें"</string>
     <plurals name="zen_mode_duration_minutes_summary" formatted="false" msgid="4367877408072000848">
       <item quantity="one">%1$d मिनट के लिए (<xliff:g id="FORMATTEDTIME_1">%2$s</xliff:g> तक)</item>
       <item quantity="other">%1$d मिनट के लिए (<xliff:g id="FORMATTEDTIME_1">%2$s</xliff:g> तक)</item>
diff --git a/core/res/res/values-hr/strings.xml b/core/res/res/values-hr/strings.xml
index 3ab69e0..c7b7857 100644
--- a/core/res/res/values-hr/strings.xml
+++ b/core/res/res/values-hr/strings.xml
@@ -220,11 +220,9 @@
     <string name="bugreport_title" msgid="2667494803742548533">"Izvješće o programskoj pogrešci"</string>
     <string name="bugreport_message" msgid="398447048750350456">"Time će se prikupiti podaci o trenutačnom stanju vašeg uređaja koje ćete nam poslati u e-poruci. Za pripremu izvješća o programskoj pogrešci potrebno je nešto vremena pa vas molimo za strpljenje."</string>
     <string name="bugreport_option_interactive_title" msgid="8635056131768862479">"Interaktivno izvješće"</string>
-    <!-- no translation found for bugreport_option_interactive_summary (229299488536107968) -->
-    <skip />
+    <string name="bugreport_option_interactive_summary" msgid="229299488536107968">"To možete upotrebljavati u većini slučajeva. Moći ćete pratiti izradu izvješća, unijeti više pojedinosti o problemu i izraditi snimke zaslona. Mogu se izostaviti neki odjeljci koji se upotrebljavaju rjeđe i produljuju izradu izvješća."</string>
     <string name="bugreport_option_full_title" msgid="6354382025840076439">"Potpuno izvješće"</string>
-    <!-- no translation found for bugreport_option_full_summary (7210859858969115745) -->
-    <skip />
+    <string name="bugreport_option_full_summary" msgid="7210859858969115745">"Ta vam opcija omogućuje minimalno ometanje sustava kad uređaj ne reagira ili je prespor ili kada su vam potrebni svi odjeljci izvješća. Ne omogućuje vam da unesete više pojedinosti ili izradite dodatne snimke zaslona."</string>
     <plurals name="bugreport_countdown" formatted="false" msgid="6878900193900090368">
       <item quantity="one">Izrada snimke zaslona za izvješće o programskoj pogrešci za <xliff:g id="NUMBER_1">%d</xliff:g> sekundu.</item>
       <item quantity="few">Izrada snimke zaslona za izvješće o programskoj pogrešci za <xliff:g id="NUMBER_1">%d</xliff:g> sekunde.</item>
@@ -867,8 +865,7 @@
       <item quantity="few"><xliff:g id="COUNT">%d</xliff:g> sata</item>
       <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> sati</item>
     </plurals>
-    <!-- no translation found for now_string_shortest (8912796667087856402) -->
-    <skip />
+    <string name="now_string_shortest" msgid="8912796667087856402">"sad"</string>
     <!-- no translation found for duration_minutes_shortest (598436407511890455) -->
     <!-- no translation found for duration_hours_shortest (8300234116089026299) -->
     <!-- no translation found for duration_days_shortest (1363973360381363510) -->
@@ -975,6 +972,8 @@
     <string name="android_upgrading_title" msgid="1584192285441405746">"Android se nadograđuje…"</string>
     <string name="android_start_title" msgid="8418054686415318207">"Pokretanje Androida..."</string>
     <string name="android_upgrading_fstrim" msgid="8036718871534640010">"Optimiziranje pohrane."</string>
+    <string name="android_upgrading_notification_title" msgid="1619393112444671028">"Android se nadograđuje"</string>
+    <string name="android_upgrading_notification_body" msgid="5761201379457064286">"Neke aplikacije možda neće funkcionirati pravilno dok nadogradnja ne završi"</string>
     <string name="android_upgrading_apk" msgid="7904042682111526169">"Optimiziranje aplikacije <xliff:g id="NUMBER_0">%1$d</xliff:g> od <xliff:g id="NUMBER_1">%2$d</xliff:g>."</string>
     <string name="android_preparing_apk" msgid="8162599310274079154">"Pripremanje aplikacije <xliff:g id="APPNAME">%1$s</xliff:g>."</string>
     <string name="android_upgrading_starting_apps" msgid="451464516346926713">"Pokretanje aplikacija."</string>
@@ -1512,10 +1511,8 @@
     <string name="package_deleted_device_owner" msgid="7650577387493101353">"Izbrisao administrator"</string>
     <string name="battery_saver_description" msgid="1960431123816253034">"Da bi se produljilo trajanje baterije, ušteda baterije smanjuje rad uređaja i ograničava vibraciju, usluge lokacije i većinu pozadinskih podataka. Aplikacije za e-poštu, slanje poruka i druge aplikacije koje se oslanjaju na sinkronizaciju možda se neće ažurirati ako ih ne otvorite.\n\nUšteda baterije isključuje se automatski dok se uređaj puni."</string>
     <string name="data_saver_description" msgid="6015391409098303235">"Da bi se smanjila potrošnja podataka, Ušteda podataka onemogućuje nekim aplikacijama slanje ili primanje podataka u pozadini. Aplikacija koju trenutačno upotrebljavate može pristupiti podacima, no možda će to činiti rjeđe. To može značiti da se, na primjer, slike neće prikazivati dok ih ne dodirnete."</string>
-    <!-- no translation found for data_saver_enable_title (4674073932722787417) -->
-    <skip />
-    <!-- no translation found for data_saver_enable_button (7147735965247211818) -->
-    <skip />
+    <string name="data_saver_enable_title" msgid="4674073932722787417">"Uključiti Uštedu podataka?"</string>
+    <string name="data_saver_enable_button" msgid="7147735965247211818">"Uključi"</string>
     <plurals name="zen_mode_duration_minutes_summary" formatted="false" msgid="4367877408072000848">
       <item quantity="one">%1$d minutu (do <xliff:g id="FORMATTEDTIME_1">%2$s</xliff:g>)</item>
       <item quantity="few">%1$d minute (do <xliff:g id="FORMATTEDTIME_1">%2$s</xliff:g>)</item>
diff --git a/core/res/res/values-hu/strings.xml b/core/res/res/values-hu/strings.xml
index 833f1b0..4c2727a 100644
--- a/core/res/res/values-hu/strings.xml
+++ b/core/res/res/values-hu/strings.xml
@@ -218,11 +218,9 @@
     <string name="bugreport_title" msgid="2667494803742548533">"Hibajelentés készítése"</string>
     <string name="bugreport_message" msgid="398447048750350456">"Ezzel információt fog gyűjteni az eszköz jelenlegi állapotáról, amelyet a rendszer e-mailben fog elküldeni. Kérjük, legyen türelemmel, amíg a hibajelentés elkészül, és küldhető állapotba kerül."</string>
     <string name="bugreport_option_interactive_title" msgid="8635056131768862479">"Interaktív jelentés"</string>
-    <!-- no translation found for bugreport_option_interactive_summary (229299488536107968) -->
-    <skip />
+    <string name="bugreport_option_interactive_summary" msgid="229299488536107968">"Ezt használja a legtöbb esetben. Segítségével nyomon követheti a jelentés folyamatát, további részleteket adhat meg a problémáról, illetve képernyőképeket készíthet. A folyamat során kimaradhatnak az olyan kevésbé használt részek, amelyek jelentése túl sok időt igényel."</string>
     <string name="bugreport_option_full_title" msgid="6354382025840076439">"Teljes jelentés"</string>
-    <!-- no translation found for bugreport_option_full_summary (7210859858969115745) -->
-    <skip />
+    <string name="bugreport_option_full_summary" msgid="7210859858969115745">"Ezt a beállítást minimális rendszerzavar esetén használja, amikor eszköze nem válaszol, túl lassú, illetve ha minden jelentésrészre szüksége van. A rendszer nem teszi lehetővé további részletek megadását, illetve további képernyőképek készítését."</string>
     <plurals name="bugreport_countdown" formatted="false" msgid="6878900193900090368">
       <item quantity="other">Képernyőkép készítése a hibajelentéshez <xliff:g id="NUMBER_1">%d</xliff:g> másodpercen belül.</item>
       <item quantity="one">Képernyőkép készítése a hibajelentéshez <xliff:g id="NUMBER_0">%d</xliff:g> másodpercen belül.</item>
@@ -860,8 +858,7 @@
       <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> óra</item>
       <item quantity="one">1 óra</item>
     </plurals>
-    <!-- no translation found for now_string_shortest (8912796667087856402) -->
-    <skip />
+    <string name="now_string_shortest" msgid="8912796667087856402">"most"</string>
     <!-- no translation found for duration_minutes_shortest (598436407511890455) -->
     <!-- no translation found for duration_hours_shortest (8300234116089026299) -->
     <!-- no translation found for duration_days_shortest (1363973360381363510) -->
@@ -968,6 +965,8 @@
     <string name="android_upgrading_title" msgid="1584192285441405746">"Android frissítése folyamatban..."</string>
     <string name="android_start_title" msgid="8418054686415318207">"Az Android indítása…"</string>
     <string name="android_upgrading_fstrim" msgid="8036718871534640010">"Tárhely-optimalizálás."</string>
+    <string name="android_upgrading_notification_title" msgid="1619393112444671028">"Android frissítése folyamatban"</string>
+    <string name="android_upgrading_notification_body" msgid="5761201379457064286">"A frissítés befejezéséig előfordulhat, hogy egyes alkalmazások nem megfelelően működnek."</string>
     <string name="android_upgrading_apk" msgid="7904042682111526169">"Alkalmazás optimalizálása: <xliff:g id="NUMBER_0">%1$d</xliff:g>/<xliff:g id="NUMBER_1">%2$d</xliff:g>."</string>
     <string name="android_preparing_apk" msgid="8162599310274079154">"A(z) <xliff:g id="APPNAME">%1$s</xliff:g> előkészítése."</string>
     <string name="android_upgrading_starting_apps" msgid="451464516346926713">"Kezdő alkalmazások."</string>
@@ -1501,10 +1500,8 @@
     <string name="package_deleted_device_owner" msgid="7650577387493101353">"A rendszergazda törölte"</string>
     <string name="battery_saver_description" msgid="1960431123816253034">"Az akkumulátoridő növelése érdekében az energiatakarékos mód csökkenti az eszköz teljesítményét, és korlátozza a rezgést, a helyszolgáltatásokat, valamint a legtöbb háttéradatot is. Előfordulhat, hogy azok az e-mail-, üzenetküldő és egyéb alkalmazások, amelyek szinkronizálására számít, csak akkor frissítenek, ha megnyitja azokat.\n\nAz energiatakarékos mód automatikusan kikapcsol, ha eszköze töltőn van."</string>
     <string name="data_saver_description" msgid="6015391409098303235">"Az adatforgalom csökkentése érdekében az Adatforgalom-csökkentő megakadályozza, hogy egyes alkalmazások adatokat küldjenek vagy fogadjanak a háttérben. Az Ön által aktuálisan használt alkalmazások hozzáférhetnek az adatokhoz, de ezt sokkal ritkábban tesszük meg. Ez például azt jelentheti, hogy a képek csak azt követően jelennek meg, hogy rájuk koppintott."</string>
-    <!-- no translation found for data_saver_enable_title (4674073932722787417) -->
-    <skip />
-    <!-- no translation found for data_saver_enable_button (7147735965247211818) -->
-    <skip />
+    <string name="data_saver_enable_title" msgid="4674073932722787417">"Bekapcsolja az Adatforgalom-csökkentőt?"</string>
+    <string name="data_saver_enable_button" msgid="7147735965247211818">"Bekapcsolás"</string>
     <plurals name="zen_mode_duration_minutes_summary" formatted="false" msgid="4367877408072000848">
       <item quantity="other">%1$d percen át (eddig: <xliff:g id="FORMATTEDTIME_1">%2$s</xliff:g>)</item>
       <item quantity="one">Egy percen át (eddig: <xliff:g id="FORMATTEDTIME_0">%2$s</xliff:g>)</item>
diff --git a/core/res/res/values-hy-rAM/strings.xml b/core/res/res/values-hy-rAM/strings.xml
index 5b07298..5ff10c1 100644
--- a/core/res/res/values-hy-rAM/strings.xml
+++ b/core/res/res/values-hy-rAM/strings.xml
@@ -218,11 +218,9 @@
     <string name="bugreport_title" msgid="2667494803742548533">"Գրել սխալի զեկույց"</string>
     <string name="bugreport_message" msgid="398447048750350456">"Սա տեղեկություններ կհավաքագրի ձեր սարքի առկա կարգավիճակի մասին և կուղարկի այն էլեկտրոնային նամակով: Որոշակի ժամանակ կպահանջվի վրիպակի մասին զեկուցելու պահից սկսած մինչ ուղարկելը: Խնդրում ենք փոքր-ինչ համբերատար լինել:"</string>
     <string name="bugreport_option_interactive_title" msgid="8635056131768862479">"Ինտերակտիվ զեկույց"</string>
-    <!-- no translation found for bugreport_option_interactive_summary (229299488536107968) -->
-    <skip />
+    <string name="bugreport_option_interactive_summary" msgid="229299488536107968">"Հիմնականում օգտագործեք այս տարբերակը: Այն ձեզ թույլ է տալիս հետևել զեկույցի ստեղծման գործընթացին, խնդրի մասին լրացուցիչ տեղեկություններ մուտքագրել և էկրանի պատկերներ կորզել: Կարող է բաց թողնել քիչ օգտագործվող որոշ բաժինները, որոնց ստեղծումը երկար է տևում:"</string>
     <string name="bugreport_option_full_title" msgid="6354382025840076439">"Ամբողջական զեկույց"</string>
-    <!-- no translation found for bugreport_option_full_summary (7210859858969115745) -->
-    <skip />
+    <string name="bugreport_option_full_summary" msgid="7210859858969115745">"Օգտագործեք այս տարբերակը համակարգի միջամտությունը նվազեցնելու համար՝ երբ սարքը չի արձագանքում կամ շատ դանդաղ է աշխատում, կամ երբ ձեզ հարկավոր են զեկույցի բոլոր բաժինները: Թույլ չի տալիս լրացուցիչ տվյալներ մուտքագրել կամ էկրանի լրացուցիչ պատկերներ ստանալ:"</string>
     <plurals name="bugreport_countdown" formatted="false" msgid="6878900193900090368">
       <item quantity="one">Վրիպակի զեկույցի համար էկրանի պատկերի լուսանկարումը կատարվելու է <xliff:g id="NUMBER_1">%d</xliff:g> վայրկյանից:</item>
       <item quantity="other">Վրիպակի զեկույցի համար էկրանի պատկերի լուսանկարումը կատարվելու է <xliff:g id="NUMBER_1">%d</xliff:g> վայրկյանից:</item>
@@ -860,8 +858,7 @@
       <item quantity="one"><xliff:g id="COUNT">%d</xliff:g> ժամ</item>
       <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> ժամ</item>
     </plurals>
-    <!-- no translation found for now_string_shortest (8912796667087856402) -->
-    <skip />
+    <string name="now_string_shortest" msgid="8912796667087856402">"հիմա"</string>
     <!-- no translation found for duration_minutes_shortest (598436407511890455) -->
     <!-- no translation found for duration_hours_shortest (8300234116089026299) -->
     <!-- no translation found for duration_days_shortest (1363973360381363510) -->
@@ -968,6 +965,8 @@
     <string name="android_upgrading_title" msgid="1584192285441405746">"Android-ը նորացվում է..."</string>
     <string name="android_start_title" msgid="8418054686415318207">"Android-ը մեկնարկում է…"</string>
     <string name="android_upgrading_fstrim" msgid="8036718871534640010">"Պահեստի օպտիմալացում:"</string>
+    <string name="android_upgrading_notification_title" msgid="1619393112444671028">"Android-ը նորացվում է"</string>
+    <string name="android_upgrading_notification_body" msgid="5761201379457064286">"Հնարավոր է՝ որոշ հավելվածներ մինչև նորացման ավարտը ճիշտ չաշխատեն"</string>
     <string name="android_upgrading_apk" msgid="7904042682111526169">"Օպտիմալացվում է հավելված <xliff:g id="NUMBER_0">%1$d</xliff:g>-ը <xliff:g id="NUMBER_1">%2$d</xliff:g>-ից:"</string>
     <string name="android_preparing_apk" msgid="8162599310274079154">"<xliff:g id="APPNAME">%1$s</xliff:g> հավելվածը պատրաստվում է:"</string>
     <string name="android_upgrading_starting_apps" msgid="451464516346926713">"Հավելվածները մեկնարկում են:"</string>
@@ -1501,10 +1500,8 @@
     <string name="package_deleted_device_owner" msgid="7650577387493101353">"Ադմինիստրատորը ջնջել է այն"</string>
     <string name="battery_saver_description" msgid="1960431123816253034">"Մարտկոցի աշխատանքի ժամկետը երկարացնելու նպատակով, մարտկոցի էներգիայի խնայման գործառույթը սահմանափակում է սարքի աշխատանքը, թրթռոցը, տեղադրության ծառայությունները և հետնաշերտում աշխատող շատ գործընթացներ: Էլփոստը, հաղորդագրությունների փոխանակումը և տվյալների համաժամեցումից կախված այլ հավելվածները կարող են չթարմացվել, եթե դուք դրանք չգործարկեք:\n\nԵրբ ձեր սարքը լիցքավորվում է, մարտկոցի էներգիայի խնայման գործառույթն ինքնաշխատորեն անջատվում է:"</string>
     <string name="data_saver_description" msgid="6015391409098303235">"Տվյալների օգտագործումը նվազեցնելու նպատակով «Թրաֆիկի խնայումը» որոշ հավելվածներին թույլ չի տալիս ուղարկել կամ ստանալ տվյալներ ֆոնային ռեժիմում: Արդեն իսկ գործարկված հավելվածը կարող է օգտագործել տվյալները, սակայն ոչ այնքան հաճախ: Օրինակ՝ պատկերները կցուցադրվեն միայն դրանք հպելուց հետո:"</string>
-    <!-- no translation found for data_saver_enable_title (4674073932722787417) -->
-    <skip />
-    <!-- no translation found for data_saver_enable_button (7147735965247211818) -->
-    <skip />
+    <string name="data_saver_enable_title" msgid="4674073932722787417">"Միացնե՞լ թրաֆիկի խնայումը:"</string>
+    <string name="data_saver_enable_button" msgid="7147735965247211818">"Միացնել"</string>
     <plurals name="zen_mode_duration_minutes_summary" formatted="false" msgid="4367877408072000848">
       <item quantity="one">%1$d րոպե (մինչև <xliff:g id="FORMATTEDTIME_1">%2$s</xliff:g>)</item>
       <item quantity="other">%1$d րոպե (մինչև <xliff:g id="FORMATTEDTIME_1">%2$s</xliff:g>)</item>
diff --git a/core/res/res/values-in/strings.xml b/core/res/res/values-in/strings.xml
index c2845c7..eccc16f 100644
--- a/core/res/res/values-in/strings.xml
+++ b/core/res/res/values-in/strings.xml
@@ -965,6 +965,8 @@
     <string name="android_upgrading_title" msgid="1584192285441405746">"Android sedang meningkatkan versi..."</string>
     <string name="android_start_title" msgid="8418054686415318207">"Memulai Android…"</string>
     <string name="android_upgrading_fstrim" msgid="8036718871534640010">"Mengoptimalkan penyimpanan."</string>
+    <string name="android_upgrading_notification_title" msgid="1619393112444671028">"Android sedang meningkatkan versi"</string>
+    <string name="android_upgrading_notification_body" msgid="5761201379457064286">"Beberapa aplikasi mungkin tidak berfungsi dengan baik jika peningkatan versi belum selesai"</string>
     <string name="android_upgrading_apk" msgid="7904042682111526169">"Mengoptimalkan aplikasi <xliff:g id="NUMBER_0">%1$d</xliff:g> dari <xliff:g id="NUMBER_1">%2$d</xliff:g>."</string>
     <string name="android_preparing_apk" msgid="8162599310274079154">"Menyiapkan <xliff:g id="APPNAME">%1$s</xliff:g>."</string>
     <string name="android_upgrading_starting_apps" msgid="451464516346926713">"Memulai aplikasi."</string>
diff --git a/core/res/res/values-is-rIS/strings.xml b/core/res/res/values-is-rIS/strings.xml
index a35a9a8..5cc68da 100644
--- a/core/res/res/values-is-rIS/strings.xml
+++ b/core/res/res/values-is-rIS/strings.xml
@@ -218,11 +218,9 @@
     <string name="bugreport_title" msgid="2667494803742548533">"Útbúa villutilkynningu"</string>
     <string name="bugreport_message" msgid="398447048750350456">"Þetta safnar upplýsingum um núverandi stöðu tækisins til að senda með tölvupósti. Það tekur smástund frá því villutilkynningin er ræst og þar til hún er tilbúin til sendingar – sýndu biðlund."</string>
     <string name="bugreport_option_interactive_title" msgid="8635056131768862479">"Gagnvirk skýrsla"</string>
-    <!-- no translation found for bugreport_option_interactive_summary (229299488536107968) -->
-    <skip />
+    <string name="bugreport_option_interactive_summary" msgid="229299488536107968">"Þú getur notað þetta í flestum tilvikum. Með þessu móti geturðu fylgst með framgangi tilkynningarinnar og slegið inn viðbótarupplýsingar um vandamálið. Hugsanlegt er að lítið notuðum hlutum verði sleppt til að spara tíma."</string>
     <string name="bugreport_option_full_title" msgid="6354382025840076439">"Heildarskýrsla"</string>
-    <!-- no translation found for bugreport_option_full_summary (7210859858969115745) -->
-    <skip />
+    <string name="bugreport_option_full_summary" msgid="7210859858969115745">"Notaðu þennan valmöguleika til að lágmarka truflun frá kerfinu þegar tækið þitt svarar ekki eða er of hægt, eða þegar þú þarft alla hluta tilkynningarinnar. Leyfir þér ekki að slá inn viðbótarupplýsingar eða taka skjámyndir."</string>
     <plurals name="bugreport_countdown" formatted="false" msgid="6878900193900090368">
       <item quantity="one">Tekur skjámynd fyrir villutilkynningu eftir <xliff:g id="NUMBER_1">%d</xliff:g> sekúndu.</item>
       <item quantity="other">Tekur skjámynd fyrir villutilkynningu eftir <xliff:g id="NUMBER_1">%d</xliff:g> sekúndur.</item>
@@ -860,8 +858,7 @@
       <item quantity="one"><xliff:g id="COUNT">%d</xliff:g> klukkustund</item>
       <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> klukkustundir</item>
     </plurals>
-    <!-- no translation found for now_string_shortest (8912796667087856402) -->
-    <skip />
+    <string name="now_string_shortest" msgid="8912796667087856402">"núna"</string>
     <!-- no translation found for duration_minutes_shortest (598436407511890455) -->
     <!-- no translation found for duration_hours_shortest (8300234116089026299) -->
     <!-- no translation found for duration_days_shortest (1363973360381363510) -->
@@ -968,6 +965,8 @@
     <string name="android_upgrading_title" msgid="1584192285441405746">"Android er að uppfæra…"</string>
     <string name="android_start_title" msgid="8418054686415318207">"Android er að ræsast…"</string>
     <string name="android_upgrading_fstrim" msgid="8036718871534640010">"Fínstillir geymslu."</string>
+    <string name="android_upgrading_notification_title" msgid="1619393112444671028">"Android er að uppfæra"</string>
+    <string name="android_upgrading_notification_body" msgid="5761201379457064286">"Hugsanlega virka sum forrit ekki fyrr en uppfærslunni lýkur"</string>
     <string name="android_upgrading_apk" msgid="7904042682111526169">"Fínstillir forrit <xliff:g id="NUMBER_0">%1$d</xliff:g> af <xliff:g id="NUMBER_1">%2$d</xliff:g>."</string>
     <string name="android_preparing_apk" msgid="8162599310274079154">"Undirbýr <xliff:g id="APPNAME">%1$s</xliff:g>."</string>
     <string name="android_upgrading_starting_apps" msgid="451464516346926713">"Ræsir forrit."</string>
@@ -1501,10 +1500,8 @@
     <string name="package_deleted_device_owner" msgid="7650577387493101353">"Eytt af kerfisstjóra"</string>
     <string name="battery_saver_description" msgid="1960431123816253034">"Til að auka endingu rafhlöðunnar mun orkusparnaður draga úr afköstum tækisins og takmarka titring, staðsetningarþjónustu og megnið af bakgrunnsgögnum. Ekki er víst að tölvupóstur, skilaboð og önnur forrit sem reiða sig á samstillingu uppfærist nema þú opnir þau.\n\nSjálfkrafa er slökkt á orkusparnaði þegar tækið er í hleðslu."</string>
     <string name="data_saver_description" msgid="6015391409098303235">"Gagnasparnaður getur hjálpað til við að draga úr gagnanotkun með því að hindra forrit í að senda eða sækja gögn í bakgrunni. Forrit sem er í notkun getur náð í gögn, en gerir það kannski sjaldnar. Niðurstaðan gæti verið, svo dæmi sé tekið, að myndir séu ekki birtar fyrr en þú ýtir á þær."</string>
-    <!-- no translation found for data_saver_enable_title (4674073932722787417) -->
-    <skip />
-    <!-- no translation found for data_saver_enable_button (7147735965247211818) -->
-    <skip />
+    <string name="data_saver_enable_title" msgid="4674073932722787417">"Kveikja á gagnasparnaði?"</string>
+    <string name="data_saver_enable_button" msgid="7147735965247211818">"Kveikja"</string>
     <plurals name="zen_mode_duration_minutes_summary" formatted="false" msgid="4367877408072000848">
       <item quantity="one">Í %1$d mínútu (til <xliff:g id="FORMATTEDTIME_1">%2$s</xliff:g>)</item>
       <item quantity="other">Í %1$d mínútur (til <xliff:g id="FORMATTEDTIME_1">%2$s</xliff:g>)</item>
diff --git a/core/res/res/values-it/strings.xml b/core/res/res/values-it/strings.xml
index a3f46c6..b0b2cb9 100644
--- a/core/res/res/values-it/strings.xml
+++ b/core/res/res/values-it/strings.xml
@@ -218,11 +218,9 @@
     <string name="bugreport_title" msgid="2667494803742548533">"Apri segnalazione bug"</string>
     <string name="bugreport_message" msgid="398447048750350456">"Verranno raccolte informazioni sullo stato corrente del dispositivo che saranno inviate sotto forma di messaggio email. Passerà un po\' di tempo prima che la segnalazione di bug aperta sia pronta per essere inviata; ti preghiamo di avere pazienza."</string>
     <string name="bugreport_option_interactive_title" msgid="8635056131768862479">"Rapporto interattivo"</string>
-    <!-- no translation found for bugreport_option_interactive_summary (229299488536107968) -->
-    <skip />
+    <string name="bugreport_option_interactive_summary" msgid="229299488536107968">"Utilizza questa opzione nella maggior parte dei casi. Ti consente di monitorare l\'avanzamento della segnalazione, di inserire maggiori dettagli relativi al problema e di acquisire screenshot. Potrebbero essere omesse alcune sezioni meno utilizzate il cui inserimento nella segnalazione richiede molto tempo."</string>
     <string name="bugreport_option_full_title" msgid="6354382025840076439">"Rapporto completo"</string>
-    <!-- no translation found for bugreport_option_full_summary (7210859858969115745) -->
-    <skip />
+    <string name="bugreport_option_full_summary" msgid="7210859858969115745">"Utilizza questa opzione per ridurre al minimo l\'interferenza di sistema quando il dispositivo non risponde, è troppo lento oppure quando ti servono tutte le sezioni della segnalazione. Non puoi inserire altri dettagli o acquisire altri screenshot."</string>
     <plurals name="bugreport_countdown" formatted="false" msgid="6878900193900090368">
       <item quantity="other">Lo screenshot per la segnalazione di bug verrà acquisito tra <xliff:g id="NUMBER_1">%d</xliff:g> secondi.</item>
       <item quantity="one">Lo screenshot per la segnalazione di bug verrà acquisito tra <xliff:g id="NUMBER_0">%d</xliff:g> secondo.</item>
@@ -860,8 +858,7 @@
       <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> ore</item>
       <item quantity="one">1 ora</item>
     </plurals>
-    <!-- no translation found for now_string_shortest (8912796667087856402) -->
-    <skip />
+    <string name="now_string_shortest" msgid="8912796667087856402">"ora"</string>
     <!-- no translation found for duration_minutes_shortest (598436407511890455) -->
     <!-- no translation found for duration_hours_shortest (8300234116089026299) -->
     <!-- no translation found for duration_days_shortest (1363973360381363510) -->
@@ -968,6 +965,8 @@
     <string name="android_upgrading_title" msgid="1584192285441405746">"Aggiornamento di Android..."</string>
     <string name="android_start_title" msgid="8418054686415318207">"Avvio di Android…"</string>
     <string name="android_upgrading_fstrim" msgid="8036718871534640010">"Ottimizzazione archiviazione."</string>
+    <string name="android_upgrading_notification_title" msgid="1619393112444671028">"Aggiornamento di Android in corso"</string>
+    <string name="android_upgrading_notification_body" msgid="5761201379457064286">"Alcune app potrebbero non funzionare correttamente fino al completamento dell\'upgrade"</string>
     <string name="android_upgrading_apk" msgid="7904042682111526169">"Ottimizzazione applicazione <xliff:g id="NUMBER_0">%1$d</xliff:g> di <xliff:g id="NUMBER_1">%2$d</xliff:g>."</string>
     <string name="android_preparing_apk" msgid="8162599310274079154">"<xliff:g id="APPNAME">%1$s</xliff:g> in preparazione."</string>
     <string name="android_upgrading_starting_apps" msgid="451464516346926713">"Avvio applicazioni."</string>
@@ -1501,10 +1500,8 @@
     <string name="package_deleted_device_owner" msgid="7650577387493101353">"Eliminato dall\'amministratore"</string>
     <string name="battery_saver_description" msgid="1960431123816253034">"Per aumentare la durata della batteria, la funzione di risparmio energetico riduce le prestazioni del dispositivo e limita vibrazione, servizi di geolocalizzazione e la maggior parte dei dati in background. App di email, messaggi e altre app che si basano sulla sincronizzazione potrebbero essere aggiornate soltanto all\'apertura.\n\nLa funzione di risparmio energetico viene disattivata automaticamente quando il dispositivo è in carica."</string>
     <string name="data_saver_description" msgid="6015391409098303235">"Per contribuire a ridurre l\'utilizzo dei dati, la funzione Risparmio dati impedisce ad alcune app di inviare o ricevere dati in background. Un\'app in uso può accedere ai dati, ma potrebbe farlo con meno frequenza. Esempio: le immagini non vengono visualizzate finché non le tocchi."</string>
-    <!-- no translation found for data_saver_enable_title (4674073932722787417) -->
-    <skip />
-    <!-- no translation found for data_saver_enable_button (7147735965247211818) -->
-    <skip />
+    <string name="data_saver_enable_title" msgid="4674073932722787417">"Attivare Risparmio dati?"</string>
+    <string name="data_saver_enable_button" msgid="7147735965247211818">"Attiva"</string>
     <plurals name="zen_mode_duration_minutes_summary" formatted="false" msgid="4367877408072000848">
       <item quantity="other">Per %1$d minuti (fino alle ore <xliff:g id="FORMATTEDTIME_1">%2$s</xliff:g>)</item>
       <item quantity="one">Per un minuto (fino alle ore <xliff:g id="FORMATTEDTIME_0">%2$s</xliff:g>)</item>
diff --git a/core/res/res/values-iw/strings.xml b/core/res/res/values-iw/strings.xml
index da86b13..759d9b4 100644
--- a/core/res/res/values-iw/strings.xml
+++ b/core/res/res/values-iw/strings.xml
@@ -222,11 +222,9 @@
     <string name="bugreport_title" msgid="2667494803742548533">"שלח דיווח על באג"</string>
     <string name="bugreport_message" msgid="398447048750350456">"פעולה זו תאסוף מידע על מצב המכשיר הנוכחי שלך על מנת לשלוח אותו כהודעת אימייל. היא תימשך זמן קצר מרגע פתיחת דיווח הבאג ועד לשליחת ההודעה בפועל. אנא המתן בסבלנות."</string>
     <string name="bugreport_option_interactive_title" msgid="8635056131768862479">"דוח אינטראקטיבי"</string>
-    <!-- no translation found for bugreport_option_interactive_summary (229299488536107968) -->
-    <skip />
+    <string name="bugreport_option_interactive_summary" msgid="229299488536107968">"השתמש באפשרות זו ברוב המקרים. היא מאפשרת לך לעקוב אחר התקדמות הדוח, להזין פרטים נוספים על הבעיה וליצור צילומי מסך. היא עשויה להשמיט כמה קטעים שנמצאים פחות בשימוש ואשר יצירת הדיווח עליהם נמשכת זמן רב."</string>
     <string name="bugreport_option_full_title" msgid="6354382025840076439">"דוח מלא"</string>
-    <!-- no translation found for bugreport_option_full_summary (7210859858969115745) -->
-    <skip />
+    <string name="bugreport_option_full_summary" msgid="7210859858969115745">"השתמש באפשרות זו כדי שההפרעה למערכת תהיה מזערית, כשהמכשיר אינו מגיב או איטי מדי, או כשאתה זקוק לכל קטעי הדוח. לא ניתן להזין פרטים נוספים או ליצור צילומי מסך נוספים."</string>
     <plurals name="bugreport_countdown" formatted="false" msgid="6878900193900090368">
       <item quantity="two">יוצר צילום מסך לדוח על באג בעוד <xliff:g id="NUMBER_1">%d</xliff:g> שניות.</item>
       <item quantity="many">יוצר צילום מסך לדוח על באג בעוד <xliff:g id="NUMBER_1">%d</xliff:g> שניות.</item>
@@ -874,8 +872,7 @@
       <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> שעות</item>
       <item quantity="one">שעה אחת</item>
     </plurals>
-    <!-- no translation found for now_string_shortest (8912796667087856402) -->
-    <skip />
+    <string name="now_string_shortest" msgid="8912796667087856402">"עכשיו"</string>
     <!-- no translation found for duration_minutes_shortest (598436407511890455) -->
     <!-- no translation found for duration_hours_shortest (8300234116089026299) -->
     <!-- no translation found for duration_days_shortest (1363973360381363510) -->
@@ -982,6 +979,8 @@
     <string name="android_upgrading_title" msgid="1584192285441405746">"‏Android מבצע שדרוג…"</string>
     <string name="android_start_title" msgid="8418054686415318207">"‏הפעלת Android מתחילה…"</string>
     <string name="android_upgrading_fstrim" msgid="8036718871534640010">"מתבצעת אופטימיזציה של האחסון."</string>
+    <string name="android_upgrading_notification_title" msgid="1619393112444671028">"‏Android מבצע שדרוג"</string>
+    <string name="android_upgrading_notification_body" msgid="5761201379457064286">"ייתכן שאפליקציות מסוימות לא יפעלו כראוי עד סיום השדרוג"</string>
     <string name="android_upgrading_apk" msgid="7904042682111526169">"מבצע אופטימיזציה של אפליקציה <xliff:g id="NUMBER_0">%1$d</xliff:g> מתוך <xliff:g id="NUMBER_1">%2$d</xliff:g>."</string>
     <string name="android_preparing_apk" msgid="8162599310274079154">"מכין את <xliff:g id="APPNAME">%1$s</xliff:g>."</string>
     <string name="android_upgrading_starting_apps" msgid="451464516346926713">"מפעיל אפליקציות."</string>
@@ -1330,7 +1329,7 @@
     <string name="media_route_chooser_title_for_remote_display" msgid="3395541745872017583">"העברת מסך אל מכשיר"</string>
     <string name="media_route_chooser_searching" msgid="4776236202610828706">"מחפש מכשירים…"</string>
     <string name="media_route_chooser_extended_settings" msgid="87015534236701604">"הגדרות"</string>
-    <string name="media_route_controller_disconnect" msgid="8966120286374158649">"התנתק"</string>
+    <string name="media_route_controller_disconnect" msgid="8966120286374158649">"נתק"</string>
     <string name="media_route_status_scanning" msgid="7279908761758293783">"סורק..."</string>
     <string name="media_route_status_connecting" msgid="6422571716007825440">"מתחבר..."</string>
     <string name="media_route_status_available" msgid="6983258067194649391">"זמין"</string>
@@ -1523,10 +1522,8 @@
     <string name="package_deleted_device_owner" msgid="7650577387493101353">"נמחקה על ידי מנהל המערכת שלך"</string>
     <string name="battery_saver_description" msgid="1960431123816253034">"כדי לעזור בשיפור חיי הסוללה, תכונת החיסכון בסוללה מצמצמת את פעולות המכשיר ומגבילה רטט, שירותי מיקום ואת רוב נתוני הרקע. אימייל, העברת הודעות ואפליקציות אחרות המסתמכות על סנכרון עשויות שלא להתעדכן, אלא אם תפתח אותן.\n\nתכונת החיסכון בסוללה מושבתת אוטומטית כשהמכשיר בטעינה."</string>
     <string name="data_saver_description" msgid="6015391409098303235">"‏כדי לסייע בהפחתת השימוש בנתונים, חוסך הנתונים (Data Saver) מונע מאפליקציות מסוימות שליחה או קבלה של נתונים ברקע. אפליקציה שבה אתה משתמש כרגע יכולה לגשת לנתונים, אבל בתדירות נמוכה יותר. משמעות הדבר היא, למשל, שתמונות יוצגו רק לאחר שתקיש עליהן."</string>
-    <!-- no translation found for data_saver_enable_title (4674073932722787417) -->
-    <skip />
-    <!-- no translation found for data_saver_enable_button (7147735965247211818) -->
-    <skip />
+    <string name="data_saver_enable_title" msgid="4674073932722787417">"‏האם להפעיל את חוסך הנתונים (Data Saver)?"</string>
+    <string name="data_saver_enable_button" msgid="7147735965247211818">"הפעל"</string>
     <plurals name="zen_mode_duration_minutes_summary" formatted="false" msgid="4367877408072000848">
       <item quantity="two">‏למשך %d דקות (עד <xliff:g id="FORMATTEDTIME_1">%2$s</xliff:g>)</item>
       <item quantity="many">‏למשך %1$d דקות (עד <xliff:g id="FORMATTEDTIME_1">%2$s</xliff:g>)</item>
diff --git a/core/res/res/values-ja/strings.xml b/core/res/res/values-ja/strings.xml
index 890f306..94ae816 100644
--- a/core/res/res/values-ja/strings.xml
+++ b/core/res/res/values-ja/strings.xml
@@ -218,11 +218,9 @@
     <string name="bugreport_title" msgid="2667494803742548533">"バグレポートを取得"</string>
     <string name="bugreport_message" msgid="398447048750350456">"現在の端末の状態に関する情報が収集され、その内容がメールで送信されます。バグレポートが開始してから送信可能な状態となるまでには多少の時間がかかりますのでご了承ください。"</string>
     <string name="bugreport_option_interactive_title" msgid="8635056131768862479">"対話型レポート"</string>
-    <!-- no translation found for bugreport_option_interactive_summary (229299488536107968) -->
-    <skip />
+    <string name="bugreport_option_interactive_summary" msgid="229299488536107968">"ほとんどの場合はこのオプションを使用します。レポートの進行状況を追跡し、問題についての詳細情報の確認やスクリーンショットの作成が可能です。レポート作成に時間がかかる、あまり使用されない項目は省略されることがあります。"</string>
     <string name="bugreport_option_full_title" msgid="6354382025840076439">"完全レポート"</string>
-    <!-- no translation found for bugreport_option_full_summary (7210859858969115745) -->
-    <skip />
+    <string name="bugreport_option_full_summary" msgid="7210859858969115745">"端末の反応がないとき、または動作が遅すぎるときにシステムへの影響を最小限に抑えたい場合は、このオプションを使用します。また、すべてのレポート項目を表示したい場合もこのオプションを使用します。詳細情報は表示されず、追加のスクリーンショットは作成されません。"</string>
     <plurals name="bugreport_countdown" formatted="false" msgid="6878900193900090368">
       <item quantity="other"><xliff:g id="NUMBER_1">%d</xliff:g> 秒後にバグレポートのスクリーンショットが作成されます。</item>
       <item quantity="one"><xliff:g id="NUMBER_0">%d</xliff:g> 秒後にバグレポートのスクリーンショットが作成されます。</item>
@@ -860,8 +858,7 @@
       <item quantity="other"><xliff:g id="COUNT">%d</xliff:g>時間</item>
       <item quantity="one">1時間</item>
     </plurals>
-    <!-- no translation found for now_string_shortest (8912796667087856402) -->
-    <skip />
+    <string name="now_string_shortest" msgid="8912796667087856402">"現在"</string>
     <!-- no translation found for duration_minutes_shortest (598436407511890455) -->
     <!-- no translation found for duration_hours_shortest (8300234116089026299) -->
     <!-- no translation found for duration_days_shortest (1363973360381363510) -->
@@ -968,6 +965,8 @@
     <string name="android_upgrading_title" msgid="1584192285441405746">"Androidをアップグレードしています..."</string>
     <string name="android_start_title" msgid="8418054686415318207">"Androidの起動中…"</string>
     <string name="android_upgrading_fstrim" msgid="8036718871534640010">"ストレージを最適化しています。"</string>
+    <string name="android_upgrading_notification_title" msgid="1619393112444671028">"Android のアップグレード中"</string>
+    <string name="android_upgrading_notification_body" msgid="5761201379457064286">"アップグレードが完了するまで一部のアプリが正常に動作しない可能性があります"</string>
     <string name="android_upgrading_apk" msgid="7904042682111526169">"<xliff:g id="NUMBER_1">%2$d</xliff:g>個中<xliff:g id="NUMBER_0">%1$d</xliff:g>個のアプリを最適化しています。"</string>
     <string name="android_preparing_apk" msgid="8162599310274079154">"<xliff:g id="APPNAME">%1$s</xliff:g>をペア設定しています。"</string>
     <string name="android_upgrading_starting_apps" msgid="451464516346926713">"アプリを起動しています。"</string>
@@ -1501,10 +1500,8 @@
     <string name="package_deleted_device_owner" msgid="7650577387493101353">"管理者によって削除されました"</string>
     <string name="battery_saver_description" msgid="1960431123816253034">"バッテリーを長持ちさせるため、バッテリーセーバーは端末のパフォーマンスを抑え、バイブレーション、位置情報サービス、大半のバックグラウンドデータを制限します。メール、SMSや、同期を使用するその他のアプリは、起動しても更新されないことがあります。\n\nバッテリーセーバーは端末の充電中は自動的にOFFになります。"</string>
     <string name="data_saver_description" msgid="6015391409098303235">"データセーバーは、一部のアプリによるバックグラウンドでのデータ送受信を停止することでデータ使用量を抑制します。使用中のアプリからデータにアクセスすることはできますが、その頻度は低くなる場合があります。この影響として、たとえば画像はタップしないと表示されないようになります。"</string>
-    <!-- no translation found for data_saver_enable_title (4674073932722787417) -->
-    <skip />
-    <!-- no translation found for data_saver_enable_button (7147735965247211818) -->
-    <skip />
+    <string name="data_saver_enable_title" msgid="4674073932722787417">"データセーバーを ON にしますか?"</string>
+    <string name="data_saver_enable_button" msgid="7147735965247211818">"ON にする"</string>
     <plurals name="zen_mode_duration_minutes_summary" formatted="false" msgid="4367877408072000848">
       <item quantity="other">%1$d分間(<xliff:g id="FORMATTEDTIME_1">%2$s</xliff:g>まで)</item>
       <item quantity="one">1分間(<xliff:g id="FORMATTEDTIME_0">%2$s</xliff:g>まで)</item>
diff --git a/core/res/res/values-ka-rGE/strings.xml b/core/res/res/values-ka-rGE/strings.xml
index 51073e2..ce2c138 100644
--- a/core/res/res/values-ka-rGE/strings.xml
+++ b/core/res/res/values-ka-rGE/strings.xml
@@ -218,11 +218,9 @@
     <string name="bugreport_title" msgid="2667494803742548533">"შექმენით შეცდომის ანგარიში"</string>
     <string name="bugreport_message" msgid="398447048750350456">"იგი შეაგროვებს ინფორმაციას თქვენი მოწყობილობის ამჟამინდელი მდგომარეობის შესახებ, რათა ის ელფოსტის შეტყობინების სახით გააგზავნოს. ხარვეზის ანგარიშის მომზადებასა და შეტყობინების გაგზავნას გარკვეული დრო სჭირდება. გთხოვთ, მოითმინოთ."</string>
     <string name="bugreport_option_interactive_title" msgid="8635056131768862479">"ინტერაქტიული ანგარიში"</string>
-    <!-- no translation found for bugreport_option_interactive_summary (229299488536107968) -->
-    <skip />
+    <string name="bugreport_option_interactive_summary" msgid="229299488536107968">"გამოიყენეთ ეს ვარიანტი შემთხვევათა უმეტესობაში. ის საშუალებას მოგცემთ, თვალი მიადევნოთ ანგარიშის პროგრესს, პრობლემის შესახებ მეტი დეტალი შეიყვანოთ და გადაიღოთ ეკრანის ანაბეჭდები. ამ ვარიანტის არჩევის შემთხვევაში, შეიძლება მოხდეს ზოგიერთი ნაკლებად გამოყენებადი სექციის გამოტოვება, რომელთა შესახებ მოხსენებასაც დიდი დრო სჭირდება."</string>
     <string name="bugreport_option_full_title" msgid="6354382025840076439">"სრული ანგარიში"</string>
-    <!-- no translation found for bugreport_option_full_summary (7210859858969115745) -->
-    <skip />
+    <string name="bugreport_option_full_summary" msgid="7210859858969115745">"გამოიყენეთ ეს ვარიანტი სისტემის ხარვეზების მინიმუმამდე დასაყვანად, როცა თქვენი მოწყობილობა არ რეაგირებს, მეტისმეტად ნელია, ან ანგარიშის ყველა სექცია გჭირდებათ. ამ შემთხვევაში, მეტი დეტალის შეყვანას ან დამატებითი ეკრანის ანაბეჭდების გადაღებას ვერ შეძლებთ."</string>
     <plurals name="bugreport_countdown" formatted="false" msgid="6878900193900090368">
       <item quantity="other">ხარვეზის შესახებ ანგარიშის ეკრანის ანაბეჭდის გადაღება მოხდება <xliff:g id="NUMBER_1">%d</xliff:g> წამში.</item>
       <item quantity="one">ხარვეზის შესახებ ანგარიშის ეკრანის ანაბეჭდის გადაღება მოხდება <xliff:g id="NUMBER_0">%d</xliff:g> წამში.</item>
@@ -860,8 +858,7 @@
       <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> საათი</item>
       <item quantity="one">1 საათი</item>
     </plurals>
-    <!-- no translation found for now_string_shortest (8912796667087856402) -->
-    <skip />
+    <string name="now_string_shortest" msgid="8912796667087856402">"ახლა"</string>
     <!-- no translation found for duration_minutes_shortest (598436407511890455) -->
     <!-- no translation found for duration_hours_shortest (8300234116089026299) -->
     <!-- no translation found for duration_days_shortest (1363973360381363510) -->
@@ -968,6 +965,8 @@
     <string name="android_upgrading_title" msgid="1584192285441405746">"Android ახალ ვერსიაზე გადადის…"</string>
     <string name="android_start_title" msgid="8418054686415318207">"Android იწყება…"</string>
     <string name="android_upgrading_fstrim" msgid="8036718871534640010">"მეხსიერების ოპტიმიზირება."</string>
+    <string name="android_upgrading_notification_title" msgid="1619393112444671028">"Android ახალ ვერსიაზე გადადის"</string>
+    <string name="android_upgrading_notification_body" msgid="5761201379457064286">"ახალ ვერსიაზე გადასვლის დასრულებამდე, ზოგიერთმა აპმა შეიძლება არასწორად იმუშაოს"</string>
     <string name="android_upgrading_apk" msgid="7904042682111526169">"მიმდინარეობს აპლიკაციების ოპტიმიზაცია. დასრულებულია <xliff:g id="NUMBER_0">%1$d</xliff:g>, სულ <xliff:g id="NUMBER_1">%2$d</xliff:g>."</string>
     <string name="android_preparing_apk" msgid="8162599310274079154">"ემზადება <xliff:g id="APPNAME">%1$s</xliff:g>."</string>
     <string name="android_upgrading_starting_apps" msgid="451464516346926713">"აპების ჩართვა"</string>
@@ -1501,10 +1500,8 @@
     <string name="package_deleted_device_owner" msgid="7650577387493101353">"თქვენი ადმინისტრატორის მიერ წაშლილი"</string>
     <string name="battery_saver_description" msgid="1960431123816253034">"ელემენტის მოქმედების ვადის გაუმჯობესებისათვის, ელემენტის დამზოგი ამცირებს თქვენი მოწყობილობის შესრულებას და ზღუდავს ვიბრაციას, ადგილმდებარეობის მომსახურებებს და ძირითად ფონურ მონაცემებს. ელ-ფოსტა, შეტყობინებები და სხვა სინქრონიზაციაზე დაყრდნობილი აპლიკაციების განახლება არ მოხდება მათ გახსნეამდე. \n\n ელემენტის დამზოგველი ავტომატურად გამოირთვება, როდესაც თქვენს მოწყობილობას დამტენთან შეაერთებთ."</string>
     <string name="data_saver_description" msgid="6015391409098303235">"მობილური ინტერნეტის მოხმარების შემცირების მიზნით, მონაცემთა დამზოგველი ზოგიერთ აპს ფონურ რეჟიმში მონაცემთა გაგზავნასა და მიღებას შეუზღუდავს. თქვენ მიერ ამჟამად გამოყენებული აპი მაინც შეძლებს მობილურ ინტერნეტზე წვდომას, თუმცა ამას ნაკლები სიხშირით განახორციელებს. ეს ნიშნავს, რომ, მაგალითად, სურათები არ გამოჩნდება მანამ, სანამ მათ საგანგებოდ არ შეეხებით."</string>
-    <!-- no translation found for data_saver_enable_title (4674073932722787417) -->
-    <skip />
-    <!-- no translation found for data_saver_enable_button (7147735965247211818) -->
-    <skip />
+    <string name="data_saver_enable_title" msgid="4674073932722787417">"ჩაირთოს მონაცემთა დამზოგველი?"</string>
+    <string name="data_saver_enable_button" msgid="7147735965247211818">"ჩართვა"</string>
     <plurals name="zen_mode_duration_minutes_summary" formatted="false" msgid="4367877408072000848">
       <item quantity="other">%1$d წუთის განმავლობაში (<xliff:g id="FORMATTEDTIME_1">%2$s</xliff:g>-მდე)</item>
       <item quantity="one">ერთი წუთის განმავლობაში (<xliff:g id="FORMATTEDTIME_0">%2$s</xliff:g>-მდე)</item>
diff --git a/core/res/res/values-kk-rKZ/strings.xml b/core/res/res/values-kk-rKZ/strings.xml
index 552781e..3c79f2a 100644
--- a/core/res/res/values-kk-rKZ/strings.xml
+++ b/core/res/res/values-kk-rKZ/strings.xml
@@ -218,11 +218,9 @@
     <string name="bugreport_title" msgid="2667494803742548533">"Қате туралы есеп құру"</string>
     <string name="bugreport_message" msgid="398447048750350456">"Құрылғының қазіргі күйі туралы ақпаратты жинап, электрондық хабармен жібереді. Есеп әзір болғанша біраз уақыт кетеді, шыдай тұрыңыз."</string>
     <string name="bugreport_option_interactive_title" msgid="8635056131768862479">"Интерактивті есеп"</string>
-    <!-- no translation found for bugreport_option_interactive_summary (229299488536107968) -->
-    <skip />
+    <string name="bugreport_option_interactive_summary" msgid="229299488536107968">"Бұл көптеген жағдайларда пайдаланылады. Ол есептің орындалу барысын бақылауға, мәселе туралы қосымша мәліметтер енгізуге және скриншоттар алуға мүмкіндік береді. Ол есеп беруіне ұзақ уақыт кететін кейбір азырақ пайдаланылатын бөлімдерді өткізіп жіберуі мүмкін."</string>
     <string name="bugreport_option_full_title" msgid="6354382025840076439">"Толық есеп"</string>
-    <!-- no translation found for bugreport_option_full_summary (7210859858969115745) -->
-    <skip />
+    <string name="bugreport_option_full_summary" msgid="7210859858969115745">"Бұл параметрді құрылғы жауап бермей жатқанда немесе тым баяу істеген кезде, болмаса, барлық есеп бөлімдері керек болған кезде кедергілерді барынша азайту үшін пайдаланыңыз. Қосымша мәліметтер енгізуге немесе скриншот алуға рұқсат етілмейді."</string>
     <plurals name="bugreport_countdown" formatted="false" msgid="6878900193900090368">
       <item quantity="other"><xliff:g id="NUMBER_1">%d</xliff:g> секундтан кейін қате туралы есептің скриншоты түсіріледі.</item>
       <item quantity="one"><xliff:g id="NUMBER_0">%d</xliff:g> секундтан кейін қате туралы есептің скриншоты түсіріледі.</item>
@@ -860,8 +858,7 @@
       <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> сағат</item>
       <item quantity="one">1 сағат</item>
     </plurals>
-    <!-- no translation found for now_string_shortest (8912796667087856402) -->
-    <skip />
+    <string name="now_string_shortest" msgid="8912796667087856402">"қазір"</string>
     <!-- no translation found for duration_minutes_shortest (598436407511890455) -->
     <!-- no translation found for duration_hours_shortest (8300234116089026299) -->
     <!-- no translation found for duration_days_shortest (1363973360381363510) -->
@@ -968,6 +965,10 @@
     <string name="android_upgrading_title" msgid="1584192285441405746">"Android жаңартылуда…"</string>
     <string name="android_start_title" msgid="8418054686415318207">"Android іске қосылуда…"</string>
     <string name="android_upgrading_fstrim" msgid="8036718871534640010">"Қойманы оңтайландыру."</string>
+    <!-- no translation found for android_upgrading_notification_title (1619393112444671028) -->
+    <skip />
+    <!-- no translation found for android_upgrading_notification_body (5761201379457064286) -->
+    <skip />
     <string name="android_upgrading_apk" msgid="7904042682111526169">"<xliff:g id="NUMBER_1">%2$d</xliff:g> ішінен <xliff:g id="NUMBER_0">%1$d</xliff:g> қолданба оңтайландырылуда."</string>
     <string name="android_preparing_apk" msgid="8162599310274079154">"<xliff:g id="APPNAME">%1$s</xliff:g> дайындалуда."</string>
     <string name="android_upgrading_starting_apps" msgid="451464516346926713">"Қолданбалар іске қосылуда."</string>
@@ -1501,10 +1502,8 @@
     <string name="package_deleted_device_owner" msgid="7650577387493101353">"Әкімші жойған"</string>
     <string name="battery_saver_description" msgid="1960431123816253034">"Батареяның қызмет көрсету мерзімін жақсарту үшін батарея үнемдегіш құрылғының өнімділігін төмендетеді және дірілді, орынды анықтау қызметтерін және фондық деректердің көпшілігін шектейді. Электрондық пошта, хабар алмасу және синхрондауға негізделген басқа қолданбалар ашқанша жаңартылмауы мүмкін.\n\nБатарея үнемдегіш құрылғы зарядталып жатқанда автоматты түрде өшеді."</string>
     <string name="data_saver_description" msgid="6015391409098303235">"Деректердің пайдаланылуын азайту үшін Трафикті үнемдеу функциясы кейбір қолданбаларға деректерді фондық режимде жіберуге немесе қабылдауға жол бермейді. Қазір қолданылып жатқан қолданба деректерді пайдалануы мүмкін, бірақ жиі емес. Мысалы, кескіндер оларды түрткенге дейін көрсетілмейді."</string>
-    <!-- no translation found for data_saver_enable_title (4674073932722787417) -->
-    <skip />
-    <!-- no translation found for data_saver_enable_button (7147735965247211818) -->
-    <skip />
+    <string name="data_saver_enable_title" msgid="4674073932722787417">"Data Saver функциясын қосу керек пе?"</string>
+    <string name="data_saver_enable_button" msgid="7147735965247211818">"Қосу"</string>
     <plurals name="zen_mode_duration_minutes_summary" formatted="false" msgid="4367877408072000848">
       <item quantity="other">%1$d минут бойы (<xliff:g id="FORMATTEDTIME_1">%2$s</xliff:g> дейін)</item>
       <item quantity="one">Бір минут бойы (<xliff:g id="FORMATTEDTIME_0">%2$s</xliff:g> дейін)</item>
diff --git a/core/res/res/values-km-rKH/strings.xml b/core/res/res/values-km-rKH/strings.xml
index 3085472..862dabc 100644
--- a/core/res/res/values-km-rKH/strings.xml
+++ b/core/res/res/values-km-rKH/strings.xml
@@ -218,11 +218,9 @@
     <string name="bugreport_title" msgid="2667494803742548533">"យក​របាយការណ៍​កំហុស"</string>
     <string name="bugreport_message" msgid="398447048750350456">"វា​នឹង​​ប្រមូល​ព័ត៌មាន​អំពី​ស្ថានភាព​ឧបករណ៍​របស់​អ្នក ដើម្បី​ផ្ញើ​ជា​សារ​អ៊ីមែល។ វា​នឹង​ចំណាយ​ពេល​តិច​ពី​ពេល​ចាប់ផ្ដើម​របាយការណ៍​រហូត​ដល់​ពេល​វា​រួចរាល់​ដើម្បី​ផ្ញើ សូម​អត់ធ្មត់។"</string>
     <string name="bugreport_option_interactive_title" msgid="8635056131768862479">"របាយការណ៍អន្តរកម្ម"</string>
-    <!-- no translation found for bugreport_option_interactive_summary (229299488536107968) -->
-    <skip />
+    <string name="bugreport_option_interactive_summary" msgid="229299488536107968">"ប្រើក្នុងកាលៈទេសៈភាគច្រើន។ វាអនុញ្ញាតឲ្យអ្នកតាមដានដំណើរការនៃរបាយការណ៍ និងបញ្ចូលព័ត៌មានលម្អិតបន្ថែមអំពីបញ្ហា និងថតរូបអេក្រង់។ វាអាចនឹងរំលងផ្នែកមួយចំនួនដែលមិនសូវប្រើ ដែលធ្វើឲ្យចំណាយពេលយូរក្នុងការរាយការណ៍។"</string>
     <string name="bugreport_option_full_title" msgid="6354382025840076439">"របាយការណ៍ពេញលេញ"</string>
-    <!-- no translation found for bugreport_option_full_summary (7210859858969115745) -->
-    <skip />
+    <string name="bugreport_option_full_summary" msgid="7210859858969115745">"ប្រើជម្រើសនេះដើម្បីកាត់បន្ថយការរំខានមកលើប្រព័ន្ធឲ្យនៅត្រឹមកម្រិតទាបបំផុត នៅពេលដែលឧបករណ៍របស់អ្នកមិនមានការឆ្លើយតប ឬដំណើរការយឺតពេក ឬនៅពេលដែលអ្នកត្រូវការផ្នែកនៃរបាយការណ៍ទាំងអស់។ មិនអនុញ្ញាតឲ្យអ្នកបញ្ចូលព័ត៌មានលម្អិតបន្ថែម ឬថតរូបអេក្រង់បន្ថែមទៀតនោះទេ។"</string>
     <plurals name="bugreport_countdown" formatted="false" msgid="6878900193900090368">
       <item quantity="other">នឹងថតរូបអេក្រង់សម្រាប់របាយការណ៍កំហុសក្នុងរយៈពេល <xliff:g id="NUMBER_1">%d</xliff:g> វិនាទីទៀត។</item>
       <item quantity="one">នឹងថតរូបអេក្រង់សម្រាប់របាយការណ៍កំហុសក្នុងរយៈពេល <xliff:g id="NUMBER_0">%d</xliff:g> វិនាទីទៀត។</item>
@@ -860,8 +858,7 @@
       <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> ម៉ោង</item>
       <item quantity="one">1 ម៉ោង</item>
     </plurals>
-    <!-- no translation found for now_string_shortest (8912796667087856402) -->
-    <skip />
+    <string name="now_string_shortest" msgid="8912796667087856402">"ឥឡូវនេះ"</string>
     <!-- no translation found for duration_minutes_shortest (598436407511890455) -->
     <!-- no translation found for duration_hours_shortest (8300234116089026299) -->
     <!-- no translation found for duration_days_shortest (1363973360381363510) -->
@@ -970,6 +967,8 @@
     <string name="android_upgrading_title" msgid="1584192285441405746">"Android កំពុង​ធ្វើ​បច្ចុប្បន្នភាព..."</string>
     <string name="android_start_title" msgid="8418054686415318207">"Android កំពុង​ចាប់ផ្ដើម…"</string>
     <string name="android_upgrading_fstrim" msgid="8036718871534640010">"កំពុងធ្វើឲ្យឧបករណ៍ផ្ទុកមានប្រសិទ្ធភាព។"</string>
+    <string name="android_upgrading_notification_title" msgid="1619393112444671028">"Android កំពុងអាប់គ្រេត..."</string>
+    <string name="android_upgrading_notification_body" msgid="5761201379457064286">"កម្មវិធីមួយចំនួនអាចនឹងមិនដំណើរការប្រក្រតីនោះទេ រហូតដល់ការអាប់គ្រេតបញ្ចប់"</string>
     <string name="android_upgrading_apk" msgid="7904042682111526169">"ធ្វើ​ឲ្យ​កម្មវិធី​ប្រសើរ​ឡើង <xliff:g id="NUMBER_0">%1$d</xliff:g> នៃ <xliff:g id="NUMBER_1">%2$d</xliff:g> ។"</string>
     <string name="android_preparing_apk" msgid="8162599310274079154">"កំពុងរៀបចំ <xliff:g id="APPNAME">%1$s</xliff:g>។"</string>
     <string name="android_upgrading_starting_apps" msgid="451464516346926713">"ចាប់ផ្ដើម​កម្មវិធី។"</string>
@@ -1503,10 +1502,8 @@
     <string name="package_deleted_device_owner" msgid="7650577387493101353">"បានលុបដោយអ្នកគ្រប់គ្រងរបស់អ្នក"</string>
     <string name="battery_saver_description" msgid="1960431123816253034">"ដើម្បីជួយឲ្យថាមពលថ្មប្រសើរឡើង កម្មវិធីសន្សំសំចៃថាមពលថ្មកាត់បន្ថយប្រតិបត្តិការឧបករណ៍របស់អ្នក និងកម្រិតភាពញ័រ សេវាកម្មទីតាំង និងទិន្នន័យផ្ទៃខាងក្រោយស្ទើរតែទាំងអស់។ ការផ្ញើសារអ៊ីម៉ែល និងកម្មវិធីផ្សេងទៀតដែលពឹងផ្អែកលើការធ្វើសមកាលកម្មអាចនឹងមិនធ្វើបច្ចុប្បន្នភាពទេ លុះត្រាតែអ្នកបើកពួកវា។\n\nកម្មវិធីសន្សំសំចៃបិទដោយស្វ័យប្រវត្តិ នៅពេលដែលឧបករណ៍របស់អ្នកកំពុងសាកថ្ម។"</string>
     <string name="data_saver_description" msgid="6015391409098303235">"ដើម្បីជួយកាត់បន្ថយការប្រើប្រាស់ទិន្នន័យ កម្មវិធីសន្សំសំចៃទិន្នន័យរារាំងកម្មវិធីមួយចំនួនមិនឲ្យផ្ញើ ឬទទួលទិន្នន័យនៅផ្ទៃខាងក្រោយ។ កម្មវិធីដែលអ្នកកំពុងប្រើនាពេលបច្ចុប្បន្នអាចចូលដំណើរការទិន្នន័យបាន ប៉ុន្តែវាអាចនឹងមិនធ្វើដូចនេះញឹកញាប់ទេ។ នេះមានន័យថា ជាឧទាហរណ៍ រូបភាពមិនបង្ហាញនោះទេ រហូតទាល់តែអ្នកប៉ះពួកវា។"</string>
-    <!-- no translation found for data_saver_enable_title (4674073932722787417) -->
-    <skip />
-    <!-- no translation found for data_saver_enable_button (7147735965247211818) -->
-    <skip />
+    <string name="data_saver_enable_title" msgid="4674073932722787417">"បើកកម្មវិធីសន្សំសំចៃទិន្នន័យឬ?"</string>
+    <string name="data_saver_enable_button" msgid="7147735965247211818">"បើក"</string>
     <plurals name="zen_mode_duration_minutes_summary" formatted="false" msgid="4367877408072000848">
       <item quantity="other">រយៈពេល %1$d នាទី (រហូតដល់ <xliff:g id="FORMATTEDTIME_1">%2$s</xliff:g>)</item>
       <item quantity="one">រយៈពេលមួយនាទី (រហូតដល់ <xliff:g id="FORMATTEDTIME_0">%2$s</xliff:g>)</item>
diff --git a/core/res/res/values-kn-rIN/strings.xml b/core/res/res/values-kn-rIN/strings.xml
index 8bf676b..8e9341b 100644
--- a/core/res/res/values-kn-rIN/strings.xml
+++ b/core/res/res/values-kn-rIN/strings.xml
@@ -218,11 +218,9 @@
     <string name="bugreport_title" msgid="2667494803742548533">"ದೋಷ ವರದಿ ರಚಿಸಿ"</string>
     <string name="bugreport_message" msgid="398447048750350456">"ನಿಮ್ಮ ಸಾಧನದ ಪ್ರಸ್ತುತ ಸ್ಥಿತಿಯ ಕುರಿತು ಮಾಹಿತಿಯನ್ನು ಸಂಗ್ರಹಿಸಿಕೊಳ್ಳುವುದರ ಜೊತೆ ಇ-ಮೇಲ್ ರೂಪದಲ್ಲಿ ನಿಮಗೆ ರವಾನಿಸುತ್ತದೆ. ಇದು ದೋಷ ವರದಿಯನ್ನು ಪ್ರಾರಂಭಿಸಿದ ಸಮಯದಿಂದ ಅದನ್ನು ಕಳುಹಿಸುವವರೆಗೆ ಸ್ವಲ್ಪ ಸಮಯವನ್ನು ತೆಗೆದುಕೊಳ್ಳುತ್ತದೆ; ದಯವಿಟ್ಟು ತಾಳ್ಮೆಯಿಂದಿರಿ."</string>
     <string name="bugreport_option_interactive_title" msgid="8635056131768862479">"ಪರಸ್ಪರ ಸಂವಹನ ವರದಿ"</string>
-    <!-- no translation found for bugreport_option_interactive_summary (229299488536107968) -->
-    <skip />
+    <string name="bugreport_option_interactive_summary" msgid="229299488536107968">"ಹೆಚ್ಚಿನ ಸಂದರ್ಭಗಳಲ್ಲಿ ಇದನ್ನು ಬಳಸಿ. ಇದು ವರದಿಯ ಪ್ರಗತಿಯನ್ನು ಟ್ರ್ಯಾಕ್ ಮಾಡಲು, ಸಮಸ್ಯೆ ಕುರಿತು ಹೆಚ್ಚಿನ ವಿವರಗಳನ್ನು ನಮೂದಿಸಲು ಮತ್ತು ಸ್ಕ್ರೀನ್‌ಶಾಟ್‌ಗಳನ್ನು ತೆಗೆದುಕೊಳ್ಳಲು ಅನುಮತಿಸುತ್ತದೆ. ಇದು ವರದಿ ಮಾಡಲು ಹೆಚ್ಚು ಸಮಯ ತೆಗೆದುಕೊಳ್ಳುವಂತಹ ಕೆಲವು ಕಡಿಮೆ ಬಳಸಲಾದ ವಿಭಾಗಗಳನ್ನು ತ್ಯಜಿಸಬಹುದು."</string>
     <string name="bugreport_option_full_title" msgid="6354382025840076439">"ಪೂರ್ಣ ವರದಿ"</string>
-    <!-- no translation found for bugreport_option_full_summary (7210859858969115745) -->
-    <skip />
+    <string name="bugreport_option_full_summary" msgid="7210859858969115745">"ನಿಮ್ಮ ಸಾಧನವು ಸ್ಪಂದಿಸುತ್ತಿಲ್ಲದಿರುವಾಗ ಅಥವಾ ತುಂಬಾ ನಿಧಾನವಾಗಿರುವಾಗ ಕನಿಷ್ಟ ಹಸ್ತಕ್ಷೇಪಕ್ಕಾಗಿ ಅಥವಾ ನಿಮಗೆ ಎಲ್ಲಾ ವಿಭಾಗಗಳೂ ಅಗತ್ಯವಿರುವಾಗ ಈ ಆಯ್ಕೆಯನ್ನು ಬಳಸಿ. ಹೆಚ್ಚಿನ ವಿವರಗಳನ್ನು ನಮೂದಿಸಲು ಅಥವಾ ಹೆಚ್ಚುವರಿ ಸ್ಕ್ರೀನ್‌ಶಾಟ್‌ಗಳನ್ನು ತೆಗೆದುಕೊಳ್ಳಲು ನಿಮಗೆ ಅನುಮತಿಸುವುದಿಲ್ಲ."</string>
     <plurals name="bugreport_countdown" formatted="false" msgid="6878900193900090368">
       <item quantity="one">ಬಗ್ ವರದಿ ಮಾಡಲು <xliff:g id="NUMBER_1">%d</xliff:g> ಸೆಕೆಂಡುಗಳಲ್ಲಿ ಸ್ಕ್ರೀನ್‌ಶಾಟ್ ತೆಗೆದುಕೊಳ್ಳಲಾಗುತ್ತಿದೆ.</item>
       <item quantity="other">ಬಗ್ ವರದಿ ಮಾಡಲು <xliff:g id="NUMBER_1">%d</xliff:g> ಸೆಕೆಂಡುಗಳಲ್ಲಿ ಸ್ಕ್ರೀನ್‌ಶಾಟ್ ತೆಗೆದುಕೊಳ್ಳಲಾಗುತ್ತಿದೆ.</item>
@@ -860,8 +858,7 @@
       <item quantity="one"><xliff:g id="COUNT">%d</xliff:g> ಗಂಟೆಗಳು</item>
       <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> ಗಂಟೆಗಳು</item>
     </plurals>
-    <!-- no translation found for now_string_shortest (8912796667087856402) -->
-    <skip />
+    <string name="now_string_shortest" msgid="8912796667087856402">"ಇದೀಗ"</string>
     <!-- no translation found for duration_minutes_shortest (598436407511890455) -->
     <!-- no translation found for duration_hours_shortest (8300234116089026299) -->
     <!-- no translation found for duration_days_shortest (1363973360381363510) -->
@@ -968,6 +965,8 @@
     <string name="android_upgrading_title" msgid="1584192285441405746">"Android ಅಪ್‌ಗ್ರೇಡ್‌ ಮಾಡಲಾಗುತ್ತಿದೆ…"</string>
     <string name="android_start_title" msgid="8418054686415318207">"Android ಪ್ರಾರಂಭಿಸಲಾಗುತ್ತಿದೆ…"</string>
     <string name="android_upgrading_fstrim" msgid="8036718871534640010">"ಸಂಗ್ರಹಣೆಯನ್ನು ಆಪ್ಟಿಮೈಸ್ ಮಾಡಲಾಗುತ್ತಿದೆ."</string>
+    <string name="android_upgrading_notification_title" msgid="1619393112444671028">"Android ಅಪ್‌ಗ್ರೇಡ್‌ ಮಾಡಲಾಗುತ್ತಿದೆ"</string>
+    <string name="android_upgrading_notification_body" msgid="5761201379457064286">"ಅಪ್‌ಗ್ರೇಡ್ ಮುಗಿಯುವ ತನಕ ಕೆಲವು ಅಪ್ಲಿಕೇಶನ್‌ಗಳು ಸರಿಯಾಗಿ ಕೆಲಸ ಮಾಡದಿರಬಹುದು"</string>
     <string name="android_upgrading_apk" msgid="7904042682111526169">"<xliff:g id="NUMBER_1">%2$d</xliff:g> ರಲ್ಲಿ <xliff:g id="NUMBER_0">%1$d</xliff:g> ಅಪ್ಲಿಕೇಶನ್‌ ಆಪ್ಟಿಮೈಸ್ ಮಾಡಲಾಗುತ್ತಿದೆ."</string>
     <string name="android_preparing_apk" msgid="8162599310274079154">"<xliff:g id="APPNAME">%1$s</xliff:g> ಸಿದ್ಧಪಡಿಸಲಾಗುತ್ತಿದೆ."</string>
     <string name="android_upgrading_starting_apps" msgid="451464516346926713">"ಅಪ್ಲಿಕೇಶನ್‌ಗಳನ್ನು ಪ್ರಾರಂಭಿಸಲಾಗುತ್ತಿದೆ."</string>
@@ -1501,10 +1500,8 @@
     <string name="package_deleted_device_owner" msgid="7650577387493101353">"ನಿಮ್ಮ ನಿರ್ವಾಹಕರಿಂದ ಅಳಿಸಲಾಗಿದೆ"</string>
     <string name="battery_saver_description" msgid="1960431123816253034">"ನಿಮ್ಮ ಬ್ಯಾಟರಿಯ ಬಾಳಿಕೆಯನ್ನು ಸುಧಾರಿಸಲು ಸಹಾಯ ಮಾಡಲು, ಬ್ಯಾಟರಿ ಉಳಿಕೆಯು ನಿಮ್ಮ ಸಾಧನದ ಕಾರ್ಯಕ್ಷಮತೆಯನ್ನು ಕಡಿಮೆ ಮಾಡುತ್ತದೆ ಮತ್ತು ವೈಬ್ರೇಷನ್, ಸ್ಥಳ ಸೇವೆಗಳು ಹಾಗೂ ಹೆಚ್ಚಿನ ಹಿನ್ನೆಲೆ ಡೇಟಾವನ್ನು ಮಿತಿಗೊಳಿಸುತ್ತದೆ. ಸಿಂಕ್ ಮಾಡುವುದನ್ನು ಅವಲಂಬಿಸಿರುವ ಇಮೇಲ್, ಸಂದೇಶ ಕಳುಹಿಸುವಿಕೆ, ಮತ್ತು ಇತರ ಅಪ್ಲಿಕೇಶನ್‌ಗಳು ನೀವು ತೆರೆಯದ ಹೊರತು ನವೀಕರಣಗೊಳ್ಳುವುದಿಲ್ಲ.\n\nನಿಮ್ಮ ಸಾಧನವು ಚಾರ್ಜ್ ಆಗುತ್ತಿರುವ ಸಮಯದಲ್ಲಿ ಬ್ಯಾಟರಿ ಉಳಿಕೆಯು ಆಫ್ ಆಗುತ್ತದೆ."</string>
     <string name="data_saver_description" msgid="6015391409098303235">"ಡೇಟಾ ಬಳಕೆಯನ್ನು ಕಡಿಮೆ ಮಾಡಲು ಸಹಾಯಕಾರಿಯಾಗಿ, ಡೇಟಾ ಸೇವರ್ ಕೆಲವು ಅಪ್ಲಿಕೇಶನ್‌ಗಳಿಗೆ ಹಿನ್ನೆಲೆಯಲ್ಲಿ ಡೇಟಾ ಕಳುಹಿಸುವುದನ್ನು ಅಥವಾ ಸ್ವೀಕರಿಸುವುದನ್ನು ತಡೆಯುತ್ತದೆ. ನೀವು ಪ್ರಸ್ತುತ ಬಳಸುತ್ತಿರುವ ಅಪ್ಲಿಕೇಶನ್ ಡೇಟಾವನ್ನು ಪ್ರವೇಶಿಸಬಹುದು ಆದರೆ ಕಡಿಮೆ ಪುನರಾವರ್ತಿತವಾಗಿ ಮಾಡಬಹುದು. ಇದರರ್ಥ, ಉದಾಹರಣೆಗೆ, ನೀವು ಅವುಗಳನ್ನು ಟ್ಯಾಪ್ ಮಾಡುವವರೆಗೆ ಆ ಚಿತ್ರಗಳು ಪ್ರದರ್ಶಿಸುವುದಿಲ್ಲ."</string>
-    <!-- no translation found for data_saver_enable_title (4674073932722787417) -->
-    <skip />
-    <!-- no translation found for data_saver_enable_button (7147735965247211818) -->
-    <skip />
+    <string name="data_saver_enable_title" msgid="4674073932722787417">"ಡೇಟಾ ಉಳಿಸುವಿಕೆಯನ್ನು ಆನ್ ಮಾಡುವುದೇ?"</string>
+    <string name="data_saver_enable_button" msgid="7147735965247211818">"ಆನ್ ಮಾಡು"</string>
     <plurals name="zen_mode_duration_minutes_summary" formatted="false" msgid="4367877408072000848">
       <item quantity="one">%1$d ನಿಮಿಷಗಳವರೆಗೆ (<xliff:g id="FORMATTEDTIME_1">%2$s</xliff:g> ವರೆಗೆ)</item>
       <item quantity="other">%1$d ನಿಮಿಷಗಳವರೆಗೆ (<xliff:g id="FORMATTEDTIME_1">%2$s</xliff:g> ವರೆಗೆ)</item>
diff --git a/core/res/res/values-ko/strings.xml b/core/res/res/values-ko/strings.xml
index 07bc9c8..5ccd38c 100644
--- a/core/res/res/values-ko/strings.xml
+++ b/core/res/res/values-ko/strings.xml
@@ -218,11 +218,9 @@
     <string name="bugreport_title" msgid="2667494803742548533">"버그 신고"</string>
     <string name="bugreport_message" msgid="398447048750350456">"현재 기기 상태에 대한 정보를 수집하여 이메일 메시지로 전송합니다. 버그 신고를 시작하여 전송할 준비가 되려면 약간 시간이 걸립니다."</string>
     <string name="bugreport_option_interactive_title" msgid="8635056131768862479">"대화형 보고서"</string>
-    <!-- no translation found for bugreport_option_interactive_summary (229299488536107968) -->
-    <skip />
+    <string name="bugreport_option_interactive_summary" msgid="229299488536107968">"대부분의 경우 이 옵션을 사용합니다. 신고 진행 상황을 추적하고 문제에 대한 세부정보를 입력하고 스크린샷을 찍을 수 있습니다. 신고하기에 시간이 너무 오래 걸리고 사용 빈도가 낮은 일부 섹션을 생략할 수 있습니다."</string>
     <string name="bugreport_option_full_title" msgid="6354382025840076439">"전체 보고서"</string>
-    <!-- no translation found for bugreport_option_full_summary (7210859858969115745) -->
-    <skip />
+    <string name="bugreport_option_full_summary" msgid="7210859858969115745">"기기가 응답하지 않거나 너무 느리거나 모든 보고서 섹션이 필요한 경우 이 옵션을 사용하여 시스템 방해를 최소화합니다. 세부정보를 추가하거나 스크린샷을 추가로 찍을 수 없습니다."</string>
     <plurals name="bugreport_countdown" formatted="false" msgid="6878900193900090368">
       <item quantity="other">버그 신고 스크린샷을 <xliff:g id="NUMBER_1">%d</xliff:g>초 후에 찍습니다.</item>
       <item quantity="one">버그 신고 스크린샷을 <xliff:g id="NUMBER_0">%d</xliff:g>초 후에 찍습니다.</item>
@@ -860,8 +858,7 @@
       <item quantity="other"><xliff:g id="COUNT">%d</xliff:g>시간</item>
       <item quantity="one">1시간</item>
     </plurals>
-    <!-- no translation found for now_string_shortest (8912796667087856402) -->
-    <skip />
+    <string name="now_string_shortest" msgid="8912796667087856402">"지금"</string>
     <!-- no translation found for duration_minutes_shortest (598436407511890455) -->
     <!-- no translation found for duration_hours_shortest (8300234116089026299) -->
     <!-- no translation found for duration_days_shortest (1363973360381363510) -->
@@ -968,6 +965,8 @@
     <string name="android_upgrading_title" msgid="1584192285441405746">"Android 업그레이드 중.."</string>
     <string name="android_start_title" msgid="8418054686415318207">"Android가 시작되는 중…"</string>
     <string name="android_upgrading_fstrim" msgid="8036718871534640010">"저장소 최적화 중"</string>
+    <string name="android_upgrading_notification_title" msgid="1619393112444671028">"Android 업그레이드 중"</string>
+    <string name="android_upgrading_notification_body" msgid="5761201379457064286">"특정 앱은 업그레이드가 완료될 때까지 제대로 작동하지 않을 수 있습니다."</string>
     <string name="android_upgrading_apk" msgid="7904042682111526169">"앱 <xliff:g id="NUMBER_1">%2$d</xliff:g>개 중 <xliff:g id="NUMBER_0">%1$d</xliff:g>개 최적화 중"</string>
     <string name="android_preparing_apk" msgid="8162599310274079154">"<xliff:g id="APPNAME">%1$s</xliff:g> 준비 중..."</string>
     <string name="android_upgrading_starting_apps" msgid="451464516346926713">"앱을 시작하는 중입니다."</string>
@@ -1501,10 +1500,8 @@
     <string name="package_deleted_device_owner" msgid="7650577387493101353">"관리자가 삭제함"</string>
     <string name="battery_saver_description" msgid="1960431123816253034">"배터리 수명 개선을 위해, 배터리 세이버는 기기의 성능을 줄이고 진동, 위치 서비스 및 대부분의 백그라운드 데이터를 제한합니다. 이메일, 메시지 및 동기화에 의존하는 기타 앱은 앱을 열 때까지 업데이트되지 않을 수 있습니다.\n\n배터리 세이버는 기기를 충전 중일 때는 자동으로 사용 중지됩니다."</string>
     <string name="data_saver_description" msgid="6015391409098303235">"데이터 사용량을 줄이기 위해 데이터 세이버는 일부 앱이 백그라운드에서 데이터를 전송하거나 수신하지 못하도록 합니다. 현재 사용 중인 앱에서 데이터에 액세스할 수 있지만 빈도가 줄어듭니다. 즉, 예를 들어 이미지를 탭하기 전에는 이미지가 표시되지 않습니다."</string>
-    <!-- no translation found for data_saver_enable_title (4674073932722787417) -->
-    <skip />
-    <!-- no translation found for data_saver_enable_button (7147735965247211818) -->
-    <skip />
+    <string name="data_saver_enable_title" msgid="4674073932722787417">"데이터 세이버를 사용할까요?"</string>
+    <string name="data_saver_enable_button" msgid="7147735965247211818">"사용 설정"</string>
     <plurals name="zen_mode_duration_minutes_summary" formatted="false" msgid="4367877408072000848">
       <item quantity="other">%1$d분 동안(<xliff:g id="FORMATTEDTIME_1">%2$s</xliff:g>까지)</item>
       <item quantity="one">1분 동안(<xliff:g id="FORMATTEDTIME_0">%2$s</xliff:g>까지)</item>
diff --git a/core/res/res/values-ky-rKG/strings.xml b/core/res/res/values-ky-rKG/strings.xml
index a4a309e..52f5836 100644
--- a/core/res/res/values-ky-rKG/strings.xml
+++ b/core/res/res/values-ky-rKG/strings.xml
@@ -218,11 +218,9 @@
     <string name="bugreport_title" msgid="2667494803742548533">"Ката тууралуу билдирүү түзүү"</string>
     <string name="bugreport_message" msgid="398447048750350456">"Бул сиздин түзмөгүңүздүн учурдагы абалын эмейл билдирүүсү катары жөнөтүш максатында маалымат чогултат. Ката тууралуу билдирүү түзүлүп башталып, жөнөтүлгөнгө чейин бир аз убакыт керек болот; сураныч, бир аз күтө туруңуз."</string>
     <string name="bugreport_option_interactive_title" msgid="8635056131768862479">"Интерактивдүү кабар"</string>
-    <!-- no translation found for bugreport_option_interactive_summary (229299488536107968) -->
-    <skip />
+    <string name="bugreport_option_interactive_summary" msgid="229299488536107968">"Ката жөнүндө кабардын абалын жана көйгөй тууралуу кошумча маалыматты көрсөтүү үчүн ушул функцияны колдонууну сунуштайбыз. Ката жөнүндө кабар жөнөтүлүп жатканда көп убакыт талап кылынбашы үчүн негизги бөлүмдөр гана көрүнөт."</string>
     <string name="bugreport_option_full_title" msgid="6354382025840076439">"Толук кабар берүү"</string>
-    <!-- no translation found for bugreport_option_full_summary (7210859858969115745) -->
-    <skip />
+    <string name="bugreport_option_full_summary" msgid="7210859858969115745">"Түзмөгүңүз жооп бербей же өтө жай иштеп жатса, ошондой эле жөндөөлөрдүн бардык кабарлоо бөлүмдөрүн карап чыккыңыз келсе, ушул функцияны колдонуңуз. Баса, ката жөнүндө кошумча маалыматты көрсөтүп же дагы скриншотторду тарта албайсыз."</string>
     <plurals name="bugreport_countdown" formatted="false" msgid="6878900193900090368">
       <item quantity="other">Мүчүлүштүк тууралуу кабарлоо үчүн <xliff:g id="NUMBER_1">%d</xliff:g> секундда скриншот алынат.</item>
       <item quantity="one">Мүчүлүштүк тууралуу кабарлоо үчүн <xliff:g id="NUMBER_0">%d</xliff:g> секундда скриншот алынат.</item>
@@ -860,8 +858,7 @@
       <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> саат</item>
       <item quantity="one">1 саат</item>
     </plurals>
-    <!-- no translation found for now_string_shortest (8912796667087856402) -->
-    <skip />
+    <string name="now_string_shortest" msgid="8912796667087856402">"азыр"</string>
     <!-- no translation found for duration_minutes_shortest (598436407511890455) -->
     <!-- no translation found for duration_hours_shortest (8300234116089026299) -->
     <!-- no translation found for duration_days_shortest (1363973360381363510) -->
@@ -968,6 +965,8 @@
     <string name="android_upgrading_title" msgid="1584192285441405746">"Android жаңыртылууда…"</string>
     <string name="android_start_title" msgid="8418054686415318207">"Android жүргүзүлүүдө…"</string>
     <string name="android_upgrading_fstrim" msgid="8036718871534640010">"Сактагыч ыңгайлаштырылууда."</string>
+    <string name="android_upgrading_notification_title" msgid="1619393112444671028">"Android жаңыртылууда"</string>
+    <string name="android_upgrading_notification_body" msgid="5761201379457064286">"Жаңыртуу аягына чыкмайынча айрым колдонмолор талаптагыдай иштебей калышы мүмкүн"</string>
     <string name="android_upgrading_apk" msgid="7904042682111526169">"<xliff:g id="NUMBER_1">%2$d</xliff:g> ичинен <xliff:g id="NUMBER_0">%1$d</xliff:g> колдонмо ыңгайлаштырылууда."</string>
     <string name="android_preparing_apk" msgid="8162599310274079154">"<xliff:g id="APPNAME">%1$s</xliff:g> даярдалууда."</string>
     <string name="android_upgrading_starting_apps" msgid="451464516346926713">"Колдонмолорду иштетип баштоо"</string>
@@ -1501,10 +1500,8 @@
     <string name="package_deleted_device_owner" msgid="7650577387493101353">"Администраторуңуз тарабынан жок кылынган"</string>
     <string name="battery_saver_description" msgid="1960431123816253034">"Батареянын өмүрүн узартуу үчүн, батареяны үнөмдөгүч түзмөгүңүздүн ишинин майнаптуулугун азайтып, дирилдөө, жайгашкан жерди аныктоо кызматтары жана фондук дайындардын көпчүлүгүн чектеп коёт. Электрондук почта, билдирүү жазышуу жана башка шайкештештирүүгө байланыштуу колдонмолор ачылмайынча жаңыртылбай калышы мүмкүн.\n\nБатарея үнөмдөгүч түзмөгүңүз кубатталып жатканда автоматтык түрдө өчүп калат."</string>
     <string name="data_saver_description" msgid="6015391409098303235">"Трафиктин колдонулушун үнөмдөө режиминде айрым колдонмолор дайындарды фондо өткөрө алышпайт. Учурда сиз пайдаланып жаткан колдонмо дайындарды өткөрөт, бирок адаттагыдан азыраак өткөргөндүктөн, анын айрым функциялары башкача иштеши мүмкүн. Мисалы, сүрөттөр басылмайынча жүктөлбөйт."</string>
-    <!-- no translation found for data_saver_enable_title (4674073932722787417) -->
-    <skip />
-    <!-- no translation found for data_saver_enable_button (7147735965247211818) -->
-    <skip />
+    <string name="data_saver_enable_title" msgid="4674073932722787417">"Дайындарды үнөмдөгүч күйсүнбү?"</string>
+    <string name="data_saver_enable_button" msgid="7147735965247211818">"Күйгүзүү"</string>
     <plurals name="zen_mode_duration_minutes_summary" formatted="false" msgid="4367877408072000848">
       <item quantity="other">%1$d мүнөткө (<xliff:g id="FORMATTEDTIME_1">%2$s</xliff:g> чейин)</item>
       <item quantity="one">Бир мүнөткө (<xliff:g id="FORMATTEDTIME_0">%2$s</xliff:g> чейин)</item>
diff --git a/core/res/res/values-lo-rLA/strings.xml b/core/res/res/values-lo-rLA/strings.xml
index cf9dc67..20f7a8e 100644
--- a/core/res/res/values-lo-rLA/strings.xml
+++ b/core/res/res/values-lo-rLA/strings.xml
@@ -965,6 +965,8 @@
     <string name="android_upgrading_title" msgid="1584192285441405746">"ກຳລັງອັບເກຣດ Android..."</string>
     <string name="android_start_title" msgid="8418054686415318207">"ກຳ​ລັງ​ເລີ່ມລະ​ບົບ​ Android …"</string>
     <string name="android_upgrading_fstrim" msgid="8036718871534640010">"ການ​ປັບ​ບ່ອນ​ເກັບ​ຂໍ້​ມູນ​ໃຫ້​ເໝາະ​ສົມ."</string>
+    <string name="android_upgrading_notification_title" msgid="1619393112444671028">"ກຳລັງອັບເກຣດ Android"</string>
+    <string name="android_upgrading_notification_body" msgid="5761201379457064286">"ບາງແອັບອາດບໍ່ສາມາດເຮັດວຽກໄດ້ປົກກະຕິຈົນກວ່າຈະອັບເກຣດສຳເລັດ"</string>
     <string name="android_upgrading_apk" msgid="7904042682111526169">"ກຳລັງ​ປັບປຸງ​ປະສິດທິພາບ​ແອັບຯ​ທີ <xliff:g id="NUMBER_0">%1$d</xliff:g> ຈາກ​ທັງ​ໝົດ <xliff:g id="NUMBER_1">%2$d</xliff:g> ແອັບຯ."</string>
     <string name="android_preparing_apk" msgid="8162599310274079154">"ກຳ​ລັງ​ກຽມ <xliff:g id="APPNAME">%1$s</xliff:g>."</string>
     <string name="android_upgrading_starting_apps" msgid="451464516346926713">"ກຳລັງເປີດແອັບຯ."</string>
diff --git a/core/res/res/values-lt/strings.xml b/core/res/res/values-lt/strings.xml
index 6d61763..1f25733 100644
--- a/core/res/res/values-lt/strings.xml
+++ b/core/res/res/values-lt/strings.xml
@@ -222,11 +222,9 @@
     <string name="bugreport_title" msgid="2667494803742548533">"Pranešti apie riktą"</string>
     <string name="bugreport_message" msgid="398447048750350456">"Bus surinkta informacija apie dabartinę įrenginio būseną ir išsiųsta el. pašto pranešimu. Šiek tiek užtruks, kol pranešimas apie riktą bus paruoštas siųsti; būkite kantrūs."</string>
     <string name="bugreport_option_interactive_title" msgid="8635056131768862479">"Interakt. ataskaita"</string>
-    <!-- no translation found for bugreport_option_interactive_summary (229299488536107968) -->
-    <skip />
+    <string name="bugreport_option_interactive_summary" msgid="229299488536107968">"Naudokite tai esant daugumai aplinkybių. Galite stebėti ataskaitos eigą, įvesti daugiau išsamios informacijos apie problemą ir padaryti ekrano kopijų. Gali būti praleidžiamos kelios rečiau naudojamos skiltys, kurių ataskaitų teikimas ilgai trunka."</string>
     <string name="bugreport_option_full_title" msgid="6354382025840076439">"Išsami ataskaita"</string>
-    <!-- no translation found for bugreport_option_full_summary (7210859858969115745) -->
-    <skip />
+    <string name="bugreport_option_full_summary" msgid="7210859858969115745">"Naudokite šią parinktį, kad sistemos veikimas būtų kuo mažiau trikdomas, kai įrenginys nereaguoja ar yra per lėtas arba kai jums reikia visų ataskaitos skilčių. Negalėsite įvesti daugiau išsamios informacijos ar padaryti papildomų ekrano kopijų."</string>
     <plurals name="bugreport_countdown" formatted="false" msgid="6878900193900090368">
       <item quantity="one">Pranešimo apie riktą ekrano kopija bus užfiksuota po <xliff:g id="NUMBER_1">%d</xliff:g> sekundės.</item>
       <item quantity="few">Pranešimo apie riktą ekrano kopija bus užfiksuota po <xliff:g id="NUMBER_1">%d</xliff:g> sekundžių.</item>
@@ -874,8 +872,7 @@
       <item quantity="many"><xliff:g id="COUNT">%d</xliff:g> valandos</item>
       <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> valandų</item>
     </plurals>
-    <!-- no translation found for now_string_shortest (8912796667087856402) -->
-    <skip />
+    <string name="now_string_shortest" msgid="8912796667087856402">"dabar"</string>
     <!-- no translation found for duration_minutes_shortest (598436407511890455) -->
     <!-- no translation found for duration_hours_shortest (8300234116089026299) -->
     <!-- no translation found for duration_days_shortest (1363973360381363510) -->
@@ -982,6 +979,8 @@
     <string name="android_upgrading_title" msgid="1584192285441405746">"„Android“ naujovinama..."</string>
     <string name="android_start_title" msgid="8418054686415318207">"Paleidžiama „Android“…"</string>
     <string name="android_upgrading_fstrim" msgid="8036718871534640010">"Optimizuojama saugykla."</string>
+    <string name="android_upgrading_notification_title" msgid="1619393112444671028">"„Android“ naujovinama"</string>
+    <string name="android_upgrading_notification_body" msgid="5761201379457064286">"Kai kurios programos gali tinkamai neveikti, kol naujovinimo procesas nebus baigtas"</string>
     <string name="android_upgrading_apk" msgid="7904042682111526169">"Optimizuojama <xliff:g id="NUMBER_0">%1$d</xliff:g> progr. iš <xliff:g id="NUMBER_1">%2$d</xliff:g>."</string>
     <string name="android_preparing_apk" msgid="8162599310274079154">"Ruošiama „<xliff:g id="APPNAME">%1$s</xliff:g>“."</string>
     <string name="android_upgrading_starting_apps" msgid="451464516346926713">"Paleidžiamos programos."</string>
@@ -1523,10 +1522,8 @@
     <string name="package_deleted_device_owner" msgid="7650577387493101353">"Ištrynė administratorius"</string>
     <string name="battery_saver_description" msgid="1960431123816253034">"Kad tausotų akumuliatoriaus energiją akumuliatoriaus tausojimo priemonė sumažina įrenginio veikimą ir apriboja vibravimą, vietovės paslaugas bei daugumą foninių duomenų. El. pašto, susirašinėjimo ir kitos programos, kurios veikia sinchronizavimo pagrindu, gali būti neatnaujintos, nebent jas atidarysite.\n\nAkumuliatoriaus tausojimo priemonė automatiškai išjungiama, kai įrenginys įkraunamas."</string>
     <string name="data_saver_description" msgid="6015391409098303235">"Kad padėtų sumažinti duomenų naudojimą, Duomenų taupymo priemonė neleidžia kai kurioms programoms siųsti ar gauti duomenų fone. Šiuo metu naudojama programa gali pasiekti duomenis, bet tai bus daroma rečiau. Tai gali reikšti, kad, pvz., vaizdai nebus pateikiami, jei jų nepaliesite."</string>
-    <!-- no translation found for data_saver_enable_title (4674073932722787417) -->
-    <skip />
-    <!-- no translation found for data_saver_enable_button (7147735965247211818) -->
-    <skip />
+    <string name="data_saver_enable_title" msgid="4674073932722787417">"Įj. Duomenų taupymo priemonę?"</string>
+    <string name="data_saver_enable_button" msgid="7147735965247211818">"Įjungti"</string>
     <plurals name="zen_mode_duration_minutes_summary" formatted="false" msgid="4367877408072000848">
       <item quantity="one">%1$d minutę (iki <xliff:g id="FORMATTEDTIME_1">%2$s</xliff:g>)</item>
       <item quantity="few">%1$d minutes (iki <xliff:g id="FORMATTEDTIME_1">%2$s</xliff:g>)</item>
diff --git a/core/res/res/values-lv/strings.xml b/core/res/res/values-lv/strings.xml
index 98bbd82..244f355 100644
--- a/core/res/res/values-lv/strings.xml
+++ b/core/res/res/values-lv/strings.xml
@@ -220,11 +220,9 @@
     <string name="bugreport_title" msgid="2667494803742548533">"Kļūdu ziņojuma sagatavošana"</string>
     <string name="bugreport_message" msgid="398447048750350456">"Veicot šo darbību, tiks apkopota informācija par jūsu ierīces pašreizējo stāvokli un nosūtīta e-pasta ziņojuma veidā. Kļūdu ziņojuma pabeigšanai un nosūtīšanai var būt nepieciešams laiks. Lūdzu, esiet pacietīgs."</string>
     <string name="bugreport_option_interactive_title" msgid="8635056131768862479">"Interaktīvs pārskats"</string>
-    <!-- no translation found for bugreport_option_interactive_summary (229299488536107968) -->
-    <skip />
+    <string name="bugreport_option_interactive_summary" msgid="229299488536107968">"Izmantojiet lielākajā daļā gadījumu. Varat izsekot pārskata izveides norisi, ievadīt papildu informāciju par problēmu un izveidot ekrānuzņēmumus. Var tikt izlaistas dažas mazāk izmantotas sadaļas, kuru izveidei nepieciešams daudz laika."</string>
     <string name="bugreport_option_full_title" msgid="6354382025840076439">"Viss pārskats"</string>
-    <!-- no translation found for bugreport_option_full_summary (7210859858969115745) -->
-    <skip />
+    <string name="bugreport_option_full_summary" msgid="7210859858969115745">"Izmantojiet, lai minimāli iejauktos sistēmā, ja ierīce nereaģē, darbojas pārāk lēni vai ja ir nepieciešamas visas pārskata sadaļas. Nevar ievadīt papildu informāciju vai izveidot papildu ekrānuzņēmumus."</string>
     <plurals name="bugreport_countdown" formatted="false" msgid="6878900193900090368">
       <item quantity="zero">Pēc <xliff:g id="NUMBER_1">%d</xliff:g> sekundēm tiks veikts ekrānuzņēmums kļūdas pārskatam.</item>
       <item quantity="one">Pēc <xliff:g id="NUMBER_1">%d</xliff:g> sekundes tiks veikts ekrānuzņēmums kļūdas pārskatam.</item>
@@ -867,8 +865,7 @@
       <item quantity="one"><xliff:g id="COUNT">%d</xliff:g> stunda</item>
       <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> stundas</item>
     </plurals>
-    <!-- no translation found for now_string_shortest (8912796667087856402) -->
-    <skip />
+    <string name="now_string_shortest" msgid="8912796667087856402">"tagad"</string>
     <!-- no translation found for duration_minutes_shortest (598436407511890455) -->
     <!-- no translation found for duration_hours_shortest (8300234116089026299) -->
     <!-- no translation found for duration_days_shortest (1363973360381363510) -->
@@ -975,6 +972,8 @@
     <string name="android_upgrading_title" msgid="1584192285441405746">"Notiek Android jaunināšana..."</string>
     <string name="android_start_title" msgid="8418054686415318207">"Notiek Android palaišana…"</string>
     <string name="android_upgrading_fstrim" msgid="8036718871534640010">"Notiek krātuves optimizēšana."</string>
+    <string name="android_upgrading_notification_title" msgid="1619393112444671028">"Notiek Android jaunināšana..."</string>
+    <string name="android_upgrading_notification_body" msgid="5761201379457064286">"Kamēr jaunināšana nebūs pabeigta, dažas lietotnes, iespējams, nedarbosies pareizi."</string>
     <string name="android_upgrading_apk" msgid="7904042682111526169">"Tiek optimizēta <xliff:g id="NUMBER_0">%1$d</xliff:g>. lietotne no <xliff:g id="NUMBER_1">%2$d</xliff:g>."</string>
     <string name="android_preparing_apk" msgid="8162599310274079154">"Notiek lietotnes <xliff:g id="APPNAME">%1$s</xliff:g> sagatavošana."</string>
     <string name="android_upgrading_starting_apps" msgid="451464516346926713">"Notiek lietotņu palaišana."</string>
@@ -1512,10 +1511,8 @@
     <string name="package_deleted_device_owner" msgid="7650577387493101353">"Izdzēsa jūsu administrators"</string>
     <string name="battery_saver_description" msgid="1960431123816253034">"Lai paildzinātu akumulatora darbību, akumulatora jaudas taupīšanas režīmā tiek samazināta ierīces veiktspēja un tiek ierobežota vibrācija, atrašanās vietu pakalpojumi un lielākā daļa fona datu. E-pasta, ziņojumapmaiņas un cita veida lietotnes, kuru darbības pamatā ir datu sinhronizācija, var netikt atjauninātas, ja tās neatverat.\n\nTiklīdz tiek sākta ierīces uzlāde, akumulatora jaudas taupīšanas režīms automātiski tiek izslēgts."</string>
     <string name="data_saver_description" msgid="6015391409098303235">"Lai samazinātu datu lietojumu, datu lietojuma samazinātājs neļauj dažām lietotnēm fonā nosūtīt vai saņemt datus. Lietotne, kuru pašlaik izmantojat, var piekļūt datiem, bet, iespējams, piekļūs tiem retāk (piemēram, attēli tiks parādīti tikai tad, kad tiem pieskarsieties)."</string>
-    <!-- no translation found for data_saver_enable_title (4674073932722787417) -->
-    <skip />
-    <!-- no translation found for data_saver_enable_button (7147735965247211818) -->
-    <skip />
+    <string name="data_saver_enable_title" msgid="4674073932722787417">"Vai ieslēgt datu lietojuma samazinātāju?"</string>
+    <string name="data_saver_enable_button" msgid="7147735965247211818">"Ieslēgt"</string>
     <plurals name="zen_mode_duration_minutes_summary" formatted="false" msgid="4367877408072000848">
       <item quantity="zero">%1$d minūtes (līdz <xliff:g id="FORMATTEDTIME_1">%2$s</xliff:g>)</item>
       <item quantity="one">%1$d minūti (līdz <xliff:g id="FORMATTEDTIME_1">%2$s</xliff:g>)</item>
diff --git a/core/res/res/values-mk-rMK/strings.xml b/core/res/res/values-mk-rMK/strings.xml
index 9010c54..e8cbf2a 100644
--- a/core/res/res/values-mk-rMK/strings.xml
+++ b/core/res/res/values-mk-rMK/strings.xml
@@ -218,11 +218,9 @@
     <string name="bugreport_title" msgid="2667494803742548533">"Земи извештај за грешки"</string>
     <string name="bugreport_message" msgid="398447048750350456">"Ова ќе собира информации за моменталната состојба на вашиот уред, за да ги испрати како порака по е-пошта. Тоа ќе одземе малку време почнувајќи од извештајот за грешки додека не се подготви за праќање; бидете трпеливи."</string>
     <string name="bugreport_option_interactive_title" msgid="8635056131768862479">"Интерактивен извештај"</string>
-    <!-- no translation found for bugreport_option_interactive_summary (229299488536107968) -->
-    <skip />
+    <string name="bugreport_option_interactive_summary" msgid="229299488536107968">"Користете го ова во повеќето ситуации. Ви дозволува да го следите напредокот на извештајот, да внесете повеќе детали во врска со проблемот и да сликате слики од екранот. Може да испушти некои помалку користени делови за коишто е потребно долго време за да се пријават."</string>
     <string name="bugreport_option_full_title" msgid="6354382025840076439">"Целосен извештај"</string>
-    <!-- no translation found for bugreport_option_full_summary (7210859858969115745) -->
-    <skip />
+    <string name="bugreport_option_full_summary" msgid="7210859858969115745">"Користете ја опцијава за да имате минимално системско попречување кога уредот не  реагира или е премногу бавен или пак кога ви се потребни сите делови од извештајот. Не ви дозволува да внесете повеќе детали или да сликате дополнителни слики од екранот."</string>
     <plurals name="bugreport_countdown" formatted="false" msgid="6878900193900090368">
       <item quantity="one">Ќе се направи слика од екранот за извештајот за грешки за <xliff:g id="NUMBER_1">%d</xliff:g> секунда.</item>
       <item quantity="other">Ќе се направи слика од екранот за извештајот за грешки за <xliff:g id="NUMBER_1">%d</xliff:g> секунди.</item>
@@ -860,8 +858,7 @@
       <item quantity="one"><xliff:g id="COUNT">%d</xliff:g> час</item>
       <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> часа</item>
     </plurals>
-    <!-- no translation found for now_string_shortest (8912796667087856402) -->
-    <skip />
+    <string name="now_string_shortest" msgid="8912796667087856402">"сега"</string>
     <!-- no translation found for duration_minutes_shortest (598436407511890455) -->
     <!-- no translation found for duration_hours_shortest (8300234116089026299) -->
     <!-- no translation found for duration_days_shortest (1363973360381363510) -->
@@ -968,6 +965,8 @@
     <string name="android_upgrading_title" msgid="1584192285441405746">"Android се ажурира…"</string>
     <string name="android_start_title" msgid="8418054686415318207">"Android стартува…"</string>
     <string name="android_upgrading_fstrim" msgid="8036718871534640010">"Оптимизирање на складирањето."</string>
+    <string name="android_upgrading_notification_title" msgid="1619393112444671028">"Android се ажурира"</string>
+    <string name="android_upgrading_notification_body" msgid="5761201379457064286">"Некои апликации може да не работат правилно додека не се заврши надградбата"</string>
     <string name="android_upgrading_apk" msgid="7904042682111526169">"Се оптимизира апликација <xliff:g id="NUMBER_0">%1$d</xliff:g> од <xliff:g id="NUMBER_1">%2$d</xliff:g>."</string>
     <string name="android_preparing_apk" msgid="8162599310274079154">"Се подготвува <xliff:g id="APPNAME">%1$s</xliff:g>."</string>
     <string name="android_upgrading_starting_apps" msgid="451464516346926713">"Се стартуваат апликациите."</string>
@@ -1503,10 +1502,8 @@
     <string name="package_deleted_device_owner" msgid="7650577387493101353">"Избришано од администраторот"</string>
     <string name="battery_saver_description" msgid="1960431123816253034">"За да ви помогне да ја подобрите трајноста на батеријата, штедачот на батеријата ја намалува изведбата на уредот и го ограничува вибрирањето, услугите за локација и повеќето податоци од заднина. Е-поштата, испраќањето пораки и другите апликации кои се потпираат на синхронизација можеби нема да се ажурираат доколку не ги отворите.\n\nШтедачот на батеријата автоматски се исклучува кога уредот се полни."</string>
     <string name="data_saver_description" msgid="6015391409098303235">"За да се намали користењето интернет, Штедачот на интернет спречува дел од апликациите да испраќаат или да примаат податоци во заднина. Апликацијата што ја користите во моментов можеби ќе пристапува до податоци, но тоа ќе го прави поретко. Ова значи, на пример, дека сликите нема да се прикажат додека не ги допрете."</string>
-    <!-- no translation found for data_saver_enable_title (4674073932722787417) -->
-    <skip />
-    <!-- no translation found for data_saver_enable_button (7147735965247211818) -->
-    <skip />
+    <string name="data_saver_enable_title" msgid="4674073932722787417">"Вклучете Штедач на интернет?"</string>
+    <string name="data_saver_enable_button" msgid="7147735965247211818">"Вклучи"</string>
     <plurals name="zen_mode_duration_minutes_summary" formatted="false" msgid="4367877408072000848">
       <item quantity="one">За %1$d минута (до <xliff:g id="FORMATTEDTIME_1">%2$s</xliff:g>)</item>
       <item quantity="other">За %1$d минути (до <xliff:g id="FORMATTEDTIME_1">%2$s</xliff:g>)</item>
diff --git a/core/res/res/values-ml-rIN/strings.xml b/core/res/res/values-ml-rIN/strings.xml
index d72c32c..7284e70 100644
--- a/core/res/res/values-ml-rIN/strings.xml
+++ b/core/res/res/values-ml-rIN/strings.xml
@@ -218,11 +218,9 @@
     <string name="bugreport_title" msgid="2667494803742548533">"ബഗ് റിപ്പോർട്ട് എടുക്കുക"</string>
     <string name="bugreport_message" msgid="398447048750350456">"ഒരു ഇമെയിൽ സന്ദേശമായി അയയ്‌ക്കുന്നതിന്, ഇത് നിങ്ങളുടെ നിലവിലെ ഉപകരണ നിലയെക്കുറിച്ചുള്ള വിവരങ്ങൾ ശേഖരിക്കും. ബഗ് റിപ്പോർട്ട് ആരംഭിക്കുന്നതിൽ നിന്ന് ഇത് അയയ്‌ക്കാനായി തയ്യാറാകുന്നതുവരെ അൽപ്പസമയമെടുക്കും; ക്ഷമയോടെ കാത്തിരിക്കുക."</string>
     <string name="bugreport_option_interactive_title" msgid="8635056131768862479">"ഇന്റരാക്റ്റീവ് റിപ്പോർട്ട്"</string>
-    <!-- no translation found for bugreport_option_interactive_summary (229299488536107968) -->
-    <skip />
+    <string name="bugreport_option_interactive_summary" msgid="229299488536107968">"മിക്ക സാഹചര്യങ്ങളിലും ഇത് ഉപയോഗിക്കുക. റിപ്പോർട്ടിന്റെ പുരോഗതി കാണാനും പ്രശ്നത്തെ കുറിച്ചുള്ള കൂടുതൽ വിശദാംശങ്ങൾ നൽകാനും സ്ക്രീൻഷോട്ടുകൾ എടുക്കാനും ഇത് അനുവദിക്കുന്നു. റിപ്പോർട്ടുചെയ്യാൻ നീണ്ട സമയം എടുക്കുന്നതും നിങ്ങൾ കുറച്ച് ഉപയോഗിക്കുന്നതുമായ ചില വിഭാഗങ്ങളെ ഇത് വിട്ടുകളഞ്ഞേക്കാം."</string>
     <string name="bugreport_option_full_title" msgid="6354382025840076439">"പൂർണ്ണ റിപ്പോർട്ട്"</string>
-    <!-- no translation found for bugreport_option_full_summary (7210859858969115745) -->
-    <skip />
+    <string name="bugreport_option_full_summary" msgid="7210859858969115745">"നിങ്ങളുടെ ഉപകരണം പ്രതികരിക്കുന്നില്ലെങ്കിലോ അതിന് വേഗത വളരെ കുറവാണെങ്കിലോ നിങ്ങൾക്ക് എല്ലാ റിപ്പോർട്ട് വിഭാഗങ്ങളും ആവശ്യമുള്ളപ്പോഴോ, സിസ്റ്റത്തിന്റെ തടസ്സം പരിമിതപ്പെടുത്തുന്നതിന്, ഈ ഓപ്ഷൻ ഉപയോഗിക്കുക. കൂടുതൽ വിശദാംശങ്ങൾ നൽകാനോ അനുബന്ധ സ്ക്രീൻഷോട്ടുകൾ എടുക്കാനോ നിങ്ങളെ അനുവദിക്കില്ല."</string>
     <plurals name="bugreport_countdown" formatted="false" msgid="6878900193900090368">
       <item quantity="other">ബഗ് റിപ്പോർട്ടിനായി <xliff:g id="NUMBER_1">%d</xliff:g> സെക്കൻഡിൽ സ്ക്രീൻഷോട്ട് എടുക്കുന്നു.</item>
       <item quantity="one">ബഗ് റിപ്പോർട്ടിനായി <xliff:g id="NUMBER_0">%d</xliff:g> സെക്കൻഡിൽ സ്ക്രീൻഷോട്ട് എടുക്കുന്നു.</item>
@@ -860,8 +858,7 @@
       <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> മണിക്കൂർ</item>
       <item quantity="one">ഒരു മണിക്കൂർ</item>
     </plurals>
-    <!-- no translation found for now_string_shortest (8912796667087856402) -->
-    <skip />
+    <string name="now_string_shortest" msgid="8912796667087856402">"ഇപ്പോൾ"</string>
     <!-- no translation found for duration_minutes_shortest (598436407511890455) -->
     <!-- no translation found for duration_hours_shortest (8300234116089026299) -->
     <!-- no translation found for duration_days_shortest (1363973360381363510) -->
@@ -968,6 +965,8 @@
     <string name="android_upgrading_title" msgid="1584192285441405746">"Android അപ്ഗ്രേഡുചെയ്യുന്നു…"</string>
     <string name="android_start_title" msgid="8418054686415318207">"Android ആരംഭിക്കുന്നു…"</string>
     <string name="android_upgrading_fstrim" msgid="8036718871534640010">"സ്റ്റോറേജ്  ഒപ്‌റ്റിമൈസ് ചെയ്യുന്നു."</string>
+    <string name="android_upgrading_notification_title" msgid="1619393112444671028">"Android അപ്ഗ്രേഡുചെയ്യുന്നു"</string>
+    <string name="android_upgrading_notification_body" msgid="5761201379457064286">"അപ്‌ഗ്രേഡ് പൂർത്തിയാകുന്നത് വരെ ചില ആപ്‌സ് ശരിയായി പ്രവർത്തിച്ചേക്കില്ല"</string>
     <string name="android_upgrading_apk" msgid="7904042682111526169">"<xliff:g id="NUMBER_0">%1$d</xliff:g> / <xliff:g id="NUMBER_1">%2$d</xliff:g> അപ്ലിക്കേഷൻ ഓപ്റ്റിമൈസ് ചെയ്യുന്നു."</string>
     <string name="android_preparing_apk" msgid="8162599310274079154">"<xliff:g id="APPNAME">%1$s</xliff:g> തയ്യാറാക്കുന്നു."</string>
     <string name="android_upgrading_starting_apps" msgid="451464516346926713">"അപ്ലിക്കേഷനുകൾ ആരംഭിക്കുന്നു."</string>
@@ -1501,10 +1500,8 @@
     <string name="package_deleted_device_owner" msgid="7650577387493101353">"നിങ്ങളുടെ അഡ്‌മിനിസ്‌ട്രേറ്റർ ഇല്ലാതാക്കി"</string>
     <string name="battery_saver_description" msgid="1960431123816253034">"ബാറ്ററി ആയുസ്സ് മെച്ചപ്പെടുത്താൻ സഹായിക്കുന്നതിന്, ബാറ്ററി സേവർ നിങ്ങളുടെ ഉപകരണത്തിന്റെ പ്രകടനത്തെ കുറയ്‌ക്കുകയും വൈബ്രേഷനെയും മിക്ക പശ്ചാത്തല വിവരത്തെയും പരിമിതപ്പെടുത്തുകയും ചെയ്യുന്നു. ഇമെയിൽ, സന്ദേശമയയ്‌ക്കൽ, സമന്വയിപ്പിക്കലിനെ ആശ്രയിച്ചുള്ള മറ്റ് അപ്ലിക്കേഷനുകൾ എന്നിവ നിങ്ങൾ തുറക്കുന്നതുവരെ അപ്‌ഡേറ്റുചെയ്യാനിടയില്ല.\n\nനിങ്ങളുടെ ഉപകരണം ചാർജ്ജുചെയ്യുമ്പോൾ ബാറ്ററി സേവർ സ്വയം ഓഫാകും."</string>
     <string name="data_saver_description" msgid="6015391409098303235">"ഡാറ്റാ ഉപയോഗം കുറയ്ക്കാൻ സഹായിക്കുന്നതിന്, പശ്ചാത്തലത്തിൽ ഡാറ്റ അയയ്ക്കുകയോ സ്വീകരിക്കുകയോ ചെയ്യുന്നതിൽ നിന്ന് ചില ആപ്‌സിനെ ഡാറ്റ സേവർ തടയുന്നു. നിങ്ങൾ നിലവിൽ ഉപയോഗിക്കുന്ന ഒരു ആപ്പിന് ഡാറ്റ ആക്സസ്സ് ചെയ്യാൻ കഴിയും, എന്നാൽ കുറഞ്ഞ ആവൃത്തിയിലാണിത് നടക്കുക. ഇതിനർത്ഥം, നിങ്ങൾ ടാപ്പുചെയ്യുന്നത് വരെ ചിത്രങ്ങൾ കാണിക്കുകയില്ല എന്നാണ്."</string>
-    <!-- no translation found for data_saver_enable_title (4674073932722787417) -->
-    <skip />
-    <!-- no translation found for data_saver_enable_button (7147735965247211818) -->
-    <skip />
+    <string name="data_saver_enable_title" msgid="4674073932722787417">"ഡാറ്റ സേവർ ഓണാക്കണോ?"</string>
+    <string name="data_saver_enable_button" msgid="7147735965247211818">"ഓണാക്കുക"</string>
     <plurals name="zen_mode_duration_minutes_summary" formatted="false" msgid="4367877408072000848">
       <item quantity="other">%1$d മിനിറ്റ് സമയത്തേക്ക് (<xliff:g id="FORMATTEDTIME_1">%2$s</xliff:g> വരെ)</item>
       <item quantity="one">ഒരു മിനിറ്റ് സമയത്തേക്ക് (<xliff:g id="FORMATTEDTIME_0">%2$s</xliff:g> വരെ)</item>
diff --git a/core/res/res/values-mn-rMN/strings.xml b/core/res/res/values-mn-rMN/strings.xml
index 260fa76..74d4215 100644
--- a/core/res/res/values-mn-rMN/strings.xml
+++ b/core/res/res/values-mn-rMN/strings.xml
@@ -965,6 +965,8 @@
     <string name="android_upgrading_title" msgid="1584192285441405746">"Андройдыг дэвшүүлж байна…"</string>
     <string name="android_start_title" msgid="8418054686415318207">"Андройд эхэлж байна..."</string>
     <string name="android_upgrading_fstrim" msgid="8036718871534640010">"Хадгалалтыг сайжруулж байна."</string>
+    <string name="android_upgrading_notification_title" msgid="1619393112444671028">"Андройдыг дэвшүүлж байна"</string>
+    <string name="android_upgrading_notification_body" msgid="5761201379457064286">"Шинэчилж дуустал зарим апп хэвийн бус ажиллаж болзошгүй"</string>
     <string name="android_upgrading_apk" msgid="7904042682111526169">"<xliff:g id="NUMBER_1">%2$d</xliff:g>-н <xliff:g id="NUMBER_0">%1$d</xliff:g> апп-г тохируулж байна."</string>
     <string name="android_preparing_apk" msgid="8162599310274079154">"Бэлдэж байна <xliff:g id="APPNAME">%1$s</xliff:g>."</string>
     <string name="android_upgrading_starting_apps" msgid="451464516346926713">"Апп-г эхлүүлж байна."</string>
diff --git a/core/res/res/values-mr-rIN/strings.xml b/core/res/res/values-mr-rIN/strings.xml
index b41defb..33635a5 100644
--- a/core/res/res/values-mr-rIN/strings.xml
+++ b/core/res/res/values-mr-rIN/strings.xml
@@ -218,11 +218,9 @@
     <string name="bugreport_title" msgid="2667494803742548533">"दोष अहवाल घ्या"</string>
     <string name="bugreport_message" msgid="398447048750350456">"ई-मेल संदेश म्हणून पाठविण्यासाठी, हे आपल्या वर्तमान डिव्हाइस स्थितीविषयी माहिती संकलित करेल. दोष अहवाल प्रारंभ करण्यापासून तो पाठविण्यापर्यंत थोडा वेळ लागेल; कृपया धीर धरा."</string>
     <string name="bugreport_option_interactive_title" msgid="8635056131768862479">"परस्परसंवादी अहवाल"</string>
-    <!-- no translation found for bugreport_option_interactive_summary (229299488536107968) -->
-    <skip />
+    <string name="bugreport_option_interactive_summary" msgid="229299488536107968">"बहुतांश प्रसंगांमध्ये याचा वापर करा. ते आपल्याला अहवालाच्या प्रगतीचा मागोवा घेण्याची, समस्येविषयी आणखी तपाशील प्रविष्ट करण्याची आणि स्क्रीनशॉट घेण्याची अनुमती देते. ते कदाचित अहवाल देण्यासाठी बराच वेळ घेणारे कमी-वापरलेले विभाग वगळू शकते."</string>
     <string name="bugreport_option_full_title" msgid="6354382025840076439">"संपूर्ण अहवाल"</string>
-    <!-- no translation found for bugreport_option_full_summary (7210859858969115745) -->
-    <skip />
+    <string name="bugreport_option_full_summary" msgid="7210859858969115745">"आपले डिव्हाइस प्रतिसाद देत नाही किंवा खूप धीमे होते किंवा आपल्याला सर्व अहवाल विभागांची आवश्यकता असते तेव्हा कमीतकमी सिस्टीम हस्तक्षेपासाठी या पर्यायाचा वापर करा. आपल्याला आणखी तपशील प्रविष्ट करण्याची किंवा अतिरिक्त स्क्रीनशॉट घेण्याची अनुमती देत नाही."</string>
     <plurals name="bugreport_countdown" formatted="false" msgid="6878900193900090368">
       <item quantity="one">दोष अहवालासाठी <xliff:g id="NUMBER_1">%d</xliff:g> सेकंदामध्‍ये स्क्रीनशॉट घेत आहे.</item>
       <item quantity="other">दोष अहवालासाठी <xliff:g id="NUMBER_1">%d</xliff:g> सेकंदांमध्‍ये स्क्रीनशॉट घेत आहे.</item>
@@ -860,8 +858,7 @@
       <item quantity="one"><xliff:g id="COUNT">%d</xliff:g> तास</item>
       <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> तास</item>
     </plurals>
-    <!-- no translation found for now_string_shortest (8912796667087856402) -->
-    <skip />
+    <string name="now_string_shortest" msgid="8912796667087856402">"आत्ता"</string>
     <!-- no translation found for duration_minutes_shortest (598436407511890455) -->
     <!-- no translation found for duration_hours_shortest (8300234116089026299) -->
     <!-- no translation found for duration_days_shortest (1363973360381363510) -->
@@ -968,6 +965,8 @@
     <string name="android_upgrading_title" msgid="1584192285441405746">"Android श्रेणीसुधारित होत आहे..."</string>
     <string name="android_start_title" msgid="8418054686415318207">"Android प्रारंभ करत आहे…"</string>
     <string name="android_upgrading_fstrim" msgid="8036718871534640010">"संचयन ऑप्टिमाइझ करत आहे."</string>
+    <string name="android_upgrading_notification_title" msgid="1619393112444671028">"Android श्रेणीसुधारित होत आहे"</string>
+    <string name="android_upgrading_notification_body" msgid="5761201379457064286">"श्रेणीसुधारणा पूर्ण होईपर्यंत काही अॅप्स योग्यरित्या कार्य करणार नाहीत"</string>
     <string name="android_upgrading_apk" msgid="7904042682111526169">"<xliff:g id="NUMBER_1">%2$d</xliff:g> पैकी <xliff:g id="NUMBER_0">%1$d</xliff:g> अॅप ऑप्टिमाइझ करत आहे."</string>
     <string name="android_preparing_apk" msgid="8162599310274079154">"<xliff:g id="APPNAME">%1$s</xliff:g> तयार करीत आहे."</string>
     <string name="android_upgrading_starting_apps" msgid="451464516346926713">"अॅप्स प्रारंभ करत आहे."</string>
@@ -1501,10 +1500,8 @@
     <string name="package_deleted_device_owner" msgid="7650577387493101353">"आपल्या प्रशासकाद्वारे हटविले आहे"</string>
     <string name="battery_saver_description" msgid="1960431123816253034">"बॅटरीचे आयुष्य सुधारित करण्‍यात मदत करण्यासाठी, बॅटरी बचतकर्ता आपल्या डिव्हाइसचे कार्यप्रदर्शन कमी करतो आणि कंपन, स्थान सेवा आणि बराच पार्श्वभूमी डेटा मर्यादित करतो. संकालनावर अवलंबून असणारे ईमेल, संदेशन आणि इतर अ‍ॅप्स आपण उघडल्याशिवाय अद्यतनित होऊ शकत नाहीत.\n\nआपले डिव्हाइस चार्ज होत असते तेव्हा बॅटरी बचतकर्ता स्वयंचलितपणे बंद होतो."</string>
     <string name="data_saver_description" msgid="6015391409098303235">"डेटा वापर कमी करण्यात मदत करण्यासाठी, डेटा सर्व्हर काही अॅप्सना पार्श्वभूमीमध्ये डेटा पाठविण्यास किंवा प्राप्त करण्यास प्रतिबंधित करतो. आपण सध्या वापरत असलेला अॅप डेटामध्ये प्रवेश करू शकतो परंतु तसे तो खूप कमी वेळा करू शकतो. याचा अर्थ, उदाहरणार्थ, आपण प्रतिमा टॅप करेपर्यंत त्या प्रदर्शित करणार नाहीत असा असू शकतो."</string>
-    <!-- no translation found for data_saver_enable_title (4674073932722787417) -->
-    <skip />
-    <!-- no translation found for data_saver_enable_button (7147735965247211818) -->
-    <skip />
+    <string name="data_saver_enable_title" msgid="4674073932722787417">"डेटा बचतकर्ता चालू करायचा?"</string>
+    <string name="data_saver_enable_button" msgid="7147735965247211818">"चालू करा"</string>
     <plurals name="zen_mode_duration_minutes_summary" formatted="false" msgid="4367877408072000848">
       <item quantity="one">%1$d मिनिटासाठी (<xliff:g id="FORMATTEDTIME_1">%2$s</xliff:g> पर्यंत)</item>
       <item quantity="other">%1$d मिनिटांसाठी (<xliff:g id="FORMATTEDTIME_1">%2$s</xliff:g> पर्यंत)</item>
diff --git a/core/res/res/values-ms-rMY/strings.xml b/core/res/res/values-ms-rMY/strings.xml
index 745e26d..2840836 100644
--- a/core/res/res/values-ms-rMY/strings.xml
+++ b/core/res/res/values-ms-rMY/strings.xml
@@ -218,11 +218,9 @@
     <string name="bugreport_title" msgid="2667494803742548533">"Ambil laporan pepijat"</string>
     <string name="bugreport_message" msgid="398447048750350456">"Ini akan mengumpul maklumat tentang keadaan peranti semasa anda untuk dihantarkan sebagai mesej e-mel. Harap bersabar, mungkin perlu sedikit masa untuk memulakan laporan sehingga siap untuk dihantar."</string>
     <string name="bugreport_option_interactive_title" msgid="8635056131768862479">"Laporan interaktif"</string>
-    <!-- no translation found for bugreport_option_interactive_summary (229299488536107968) -->
-    <skip />
+    <string name="bugreport_option_interactive_summary" msgid="229299488536107968">"Gunakan laporan ini dalam kebanyakan keadaan. Anda boleh menjejak kemajuan laporan, memasukkan butiran lanjut tentang masalah tersebut dan mengambil tangkapan skrin. Laporan ini mungkin meninggalkan beberapa bahagian yang kurang digunakan, yang mengambil masa lama untuk dilaporkan."</string>
     <string name="bugreport_option_full_title" msgid="6354382025840076439">"Laporan penuh"</string>
-    <!-- no translation found for bugreport_option_full_summary (7210859858969115745) -->
-    <skip />
+    <string name="bugreport_option_full_summary" msgid="7210859858969115745">"Gunakan pilihan ini untuk gangguan sistem yang minimum jika peranti tidak responsif, terlalu perlahan atau anda memerlukan semua bahagian laporan. Tidak membenarkan anda memasukkan butiran lanjut atau mengambil tangkapan skrin tambahan."</string>
     <plurals name="bugreport_countdown" formatted="false" msgid="6878900193900090368">
       <item quantity="other">Mengambil tangkapan skrin untuk laporan pepijat dalam masa <xliff:g id="NUMBER_1">%d</xliff:g> saat.</item>
       <item quantity="one">Mengambil tangkapan skrin untuk laporan pepijat dalam masa <xliff:g id="NUMBER_0">%d</xliff:g> saat.</item>
@@ -860,8 +858,7 @@
       <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> jam</item>
       <item quantity="one">1 jam</item>
     </plurals>
-    <!-- no translation found for now_string_shortest (8912796667087856402) -->
-    <skip />
+    <string name="now_string_shortest" msgid="8912796667087856402">"sekarang"</string>
     <!-- no translation found for duration_minutes_shortest (598436407511890455) -->
     <!-- no translation found for duration_hours_shortest (8300234116089026299) -->
     <!-- no translation found for duration_days_shortest (1363973360381363510) -->
@@ -968,6 +965,8 @@
     <string name="android_upgrading_title" msgid="1584192285441405746">"Android sedang menaik taraf..."</string>
     <string name="android_start_title" msgid="8418054686415318207">"Android sedang dimulakan…"</string>
     <string name="android_upgrading_fstrim" msgid="8036718871534640010">"Mengoptimumkan storan."</string>
+    <string name="android_upgrading_notification_title" msgid="1619393112444671028">"Android sedang ditingkatkan"</string>
+    <string name="android_upgrading_notification_body" msgid="5761201379457064286">"Sesetengah apl mungkin tidak berfungsi dengan betul sehingga peningkatan selesai"</string>
     <string name="android_upgrading_apk" msgid="7904042682111526169">"Mengoptimumkan apl <xliff:g id="NUMBER_0">%1$d</xliff:g> daripada <xliff:g id="NUMBER_1">%2$d</xliff:g>."</string>
     <string name="android_preparing_apk" msgid="8162599310274079154">"Menyediakan <xliff:g id="APPNAME">%1$s</xliff:g>."</string>
     <string name="android_upgrading_starting_apps" msgid="451464516346926713">"Memulakan apl."</string>
@@ -1501,10 +1500,8 @@
     <string name="package_deleted_device_owner" msgid="7650577387493101353">"Dipadamkan oleh pentadbir anda"</string>
     <string name="battery_saver_description" msgid="1960431123816253034">"Untuk membantu memperbaik hayat bateri, penjimat bateri mengurangkan prestasi peranti anda dan mengehadkan getaran, perkhidmatan lokasi dan kebanyakan data latar belakang. E-mel, pemesejan dan apl lain yang bergantung kepada penyegerakan mungkin tidak mengemas kini, melainkan anda membuka apl itu.\n\nPenjimat bateri dimatikan secara automatik semasa peranti anda sedang dicas."</string>
     <string name="data_saver_description" msgid="6015391409098303235">"Untuk membantu mengurangkan penggunaan data, Penjimat Data menghalang sesetengah apl daripada menghantar atau menerima data di latar. Apl yang sedang digunakan boleh mengakses data tetapi mungkin tidak secara kerap. Perkara ini mungkin bermaksud bahawa imej tidak dipaparkan sehingga anda mengetik pada imej itu, contohnya."</string>
-    <!-- no translation found for data_saver_enable_title (4674073932722787417) -->
-    <skip />
-    <!-- no translation found for data_saver_enable_button (7147735965247211818) -->
-    <skip />
+    <string name="data_saver_enable_title" msgid="4674073932722787417">"Hidupkan Penjimat Data?"</string>
+    <string name="data_saver_enable_button" msgid="7147735965247211818">"Hidupkan"</string>
     <plurals name="zen_mode_duration_minutes_summary" formatted="false" msgid="4367877408072000848">
       <item quantity="other">Selama %1$d minit (sehingga <xliff:g id="FORMATTEDTIME_1">%2$s</xliff:g>)</item>
       <item quantity="one">Selama satu minit (sehingga <xliff:g id="FORMATTEDTIME_0">%2$s</xliff:g>)</item>
diff --git a/core/res/res/values-my-rMM/strings.xml b/core/res/res/values-my-rMM/strings.xml
index fb6a95d..19d0a3b 100644
--- a/core/res/res/values-my-rMM/strings.xml
+++ b/core/res/res/values-my-rMM/strings.xml
@@ -218,9 +218,9 @@
     <string name="bugreport_title" msgid="2667494803742548533">"အမှားရှာဖွေပြင်ဆင်မှုမှတ်တမ်းအား ယူရန်"</string>
     <string name="bugreport_message" msgid="398447048750350456">"သင့်ရဲ့ လက်ရှိ စက်အခြေအနေ အချက်အလက်များကို အီးမေးလ် အနေဖြင့် ပေးပို့ရန် စုဆောင်းပါမည်။ အမှားရှာဖွေပြင်ဆင်မှုမှတ်တမ်းမှ ပေးပို့ရန် အသင့်ဖြစ်သည်အထိ အချိန် အနည်းငယ်ကြာမြင့်မှာ ဖြစ်သဖြင့် သည်းခံပြီး စောင့်ပါရန်"</string>
     <string name="bugreport_option_interactive_title" msgid="8635056131768862479">"လက်ငင်းတုံ့ပြန်နိုင်သည့် အစီရင်ခံချက်"</string>
-    <string name="bugreport_option_interactive_summary" msgid="229299488536107968">"အခြေအနေတော်တော်များများတွင် ၎င်းကိုအသုံးပြုပါ။ ၎င်းသည် အစီရင်ခံစာကို မှတ်သားခြင်း၊ ပြဿနာအကြောင်း နောက်ထပ်အသေးစိတ်များကို ထည့်သွင်းခြင်းနှင့် မျက်နှာပြင်ပုံဖမ်းယူခြင်းတို့ကို ပြုလုပ်ခွင့်ပေးပါသည်။ အစီရင်ခံရန် အလွန်ကြာပြီး သိပ်အသုံးမပြုသည့်အပိုင်းကို ချန်ခဲ့နိုင်ပါသည်။"</string>
+    <string name="bugreport_option_interactive_summary" msgid="229299488536107968">"အခြေအနေတော်တော်များများတွင် ၎င်းကိုအသုံးပြုပါ။ ၎င်းသည် အစီရင်ခံစာကို မှတ်သားခြင်း၊ ပြဿနာအကြောင်း နောက်ထပ်အသေးစိတ်များကို ထည့်သွင်းခြင်းနှင့် မျက်နှာပြင်ပုံဖမ်းယူခြင်းတို့ကို ပြုလုပ်ခွင့်ပေးပါသည်။ ပေးပို့ရန် အလွန်ကြာပြီး အသုံးပြုခြင်းနည်းပါးသည့်အပိုင်းကို ၎င်းက ချန်ခဲ့နိုင်ပါသည်။"</string>
     <string name="bugreport_option_full_title" msgid="6354382025840076439">"အစီရင်ခံချက်အပြည့်"</string>
-    <string name="bugreport_option_full_summary" msgid="7210859858969115745">"သင့်စက်ပစ္စည်းတုံ့ပြန်မှု မရှိချိန် သို့မဟုတ် အလွန်နှေးကွေးချိန် သို့မဟုတ် အစီရင်ခံမှုကဏ္ဍများအားလုံး လိုအပ်သည့်အချိန်တွင် စနစ်ကြားဝင်စွက်ဖက်မှုအနည်းဆုံးဖြစ်သည့် ဤရွေးချယ်မှုကို အသုံးပြုပါ။ မျက်နှာပြင်ပုံဖမ်းမှု နောက်ထက်ရယူခြင်းနှင့် နောက်ထပ်အသေးစိတ်များ ထည့်သွင်းခြင်းတို့ကို ခွင့်မပြုပါ။"</string>
+    <string name="bugreport_option_full_summary" msgid="7210859858969115745">"သင့်စက်ပစ္စည်းတုံ့ပြန်မှု မရှိချိန် သို့မဟုတ် အလွန်နှေးကွေးချိန် သို့မဟုတ် အစီရင်ခံမှုကဏ္ဍများအားလုံး လိုအပ်သည့်အချိန်တွင် စနစ်ကြားဝင်စွက်ဖက်မှုအနည်းဆုံးဖြစ်သည့် ဤရွေးချယ်မှုကို အသုံးပြုပါ။ မျက်နှာပြင်ပုံဖမ်းမှု နောက်ထပ်ရယူခြင်းနှင့် နောက်ထပ်အသေးစိတ်များ ထည့်သွင်းခြင်းတို့ကို ခွင့်မပြုပါ။"</string>
     <plurals name="bugreport_countdown" formatted="false" msgid="6878900193900090368">
       <item quantity="other"><xliff:g id="NUMBER_1">%d</xliff:g> စက္ကန့်အတွင်း ချွတ်ယွင်းချက် အစီရင်ခံရန်အတွက် မျက်နှာပြင်ဓာတ်ပုံ ရိုက်ပါမည်။</item>
       <item quantity="one"><xliff:g id="NUMBER_0">%d</xliff:g> စက္ကန့်အတွင်း ချွတ်ယွင်းချက် အစီရင်ခံရန်အတွက် မျက်နှာပြင်ဓာတ်ပုံ ရိုက်ပါမည်။</item>
@@ -965,6 +965,8 @@
     <string name="android_upgrading_title" msgid="1584192285441405746">"အန်ဒရွိုက်ကို မွမ်းမံနေ…"</string>
     <string name="android_start_title" msgid="8418054686415318207">"Android စတင်နေ…"</string>
     <string name="android_upgrading_fstrim" msgid="8036718871534640010">"သိုလှောင်မှုအား ပြုပြင်ခြင်း။"</string>
+    <string name="android_upgrading_notification_title" msgid="1619393112444671028">"Android ကိုအဆင့်မြှင့်တင်နေပါသည်"</string>
+    <string name="android_upgrading_notification_body" msgid="5761201379457064286">"အဆင့်မြှင့်တင်ခြင်း မပြီးဆုံးသေးသ၍ အချို့အက်ပ်များကို ကောင်းမွန်စွာအသုံးပြုနိုင်ဦးမည် မဟုတ်ပါ"</string>
     <string name="android_upgrading_apk" msgid="7904042682111526169">"<xliff:g id="NUMBER_0">%1$d</xliff:g> ထဲက app<xliff:g id="NUMBER_1">%2$d</xliff:g>ကို ဆီလျော်အောင် လုပ်နေ"</string>
     <string name="android_preparing_apk" msgid="8162599310274079154">"<xliff:g id="APPNAME">%1$s</xliff:g> အားပြင်ဆင်နေသည်။"</string>
     <string name="android_upgrading_starting_apps" msgid="451464516346926713">"appများကို စတင်နေ"</string>
diff --git a/core/res/res/values-nb/strings.xml b/core/res/res/values-nb/strings.xml
index e0d8645..a6377d4 100644
--- a/core/res/res/values-nb/strings.xml
+++ b/core/res/res/values-nb/strings.xml
@@ -218,11 +218,9 @@
     <string name="bugreport_title" msgid="2667494803742548533">"Utfør feilrapport"</string>
     <string name="bugreport_message" msgid="398447048750350456">"Informasjon om tilstanden til enheten din samles inn og sendes som en e-post. Det tar litt tid fra du starter feilrapporten til e-posten er klar, så vær tålmodig."</string>
     <string name="bugreport_option_interactive_title" msgid="8635056131768862479">"Interaktiv rapport"</string>
-    <!-- no translation found for bugreport_option_interactive_summary (229299488536107968) -->
-    <skip />
+    <string name="bugreport_option_interactive_summary" msgid="229299488536107968">"Bruk dette alternativet i de fleste tilfeller. Da kan du spore fremgangen for rapporten, skrive inn flere detaljer om problemet samt ta skjermdumper. Noen deler som tar lang tid å behandle, blir kanskje utelatt."</string>
     <string name="bugreport_option_full_title" msgid="6354382025840076439">"Fullstendig rapport"</string>
-    <!-- no translation found for bugreport_option_full_summary (7210859858969115745) -->
-    <skip />
+    <string name="bugreport_option_full_summary" msgid="7210859858969115745">"Bruk dette alternativet for minst mulig forstyrrelser på systemet når enheten din er treg eller ikke svarer, eller når du trenger alle rapportdelene. Det tas ikke noen skjermdump, og du kan ikke legge til flere detaljer."</string>
     <plurals name="bugreport_countdown" formatted="false" msgid="6878900193900090368">
       <item quantity="other">Tar skjermdump for feilrapporten om <xliff:g id="NUMBER_1">%d</xliff:g> sekunder.</item>
       <item quantity="one">Tar skjermdump for feilrapporten om <xliff:g id="NUMBER_0">%d</xliff:g> sekund.</item>
@@ -860,8 +858,7 @@
       <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> timer</item>
       <item quantity="one">1 time</item>
     </plurals>
-    <!-- no translation found for now_string_shortest (8912796667087856402) -->
-    <skip />
+    <string name="now_string_shortest" msgid="8912796667087856402">"nå"</string>
     <!-- no translation found for duration_minutes_shortest (598436407511890455) -->
     <!-- no translation found for duration_hours_shortest (8300234116089026299) -->
     <!-- no translation found for duration_days_shortest (1363973360381363510) -->
@@ -968,6 +965,8 @@
     <string name="android_upgrading_title" msgid="1584192285441405746">"Android oppgraderes …"</string>
     <string name="android_start_title" msgid="8418054686415318207">"Android starter …"</string>
     <string name="android_upgrading_fstrim" msgid="8036718871534640010">"Optimaliser lagring."</string>
+    <string name="android_upgrading_notification_title" msgid="1619393112444671028">"Android oppgraderes"</string>
+    <string name="android_upgrading_notification_body" msgid="5761201379457064286">"Noen apper fungerer kanskje ikke skikkelig før oppgraderingen er fullført"</string>
     <string name="android_upgrading_apk" msgid="7904042682111526169">"Optimaliserer app <xliff:g id="NUMBER_0">%1$d</xliff:g> av <xliff:g id="NUMBER_1">%2$d</xliff:g>."</string>
     <string name="android_preparing_apk" msgid="8162599310274079154">"Forbereder <xliff:g id="APPNAME">%1$s</xliff:g>."</string>
     <string name="android_upgrading_starting_apps" msgid="451464516346926713">"Starter apper."</string>
@@ -1501,10 +1500,8 @@
     <string name="package_deleted_device_owner" msgid="7650577387493101353">"Slettet av administratoren"</string>
     <string name="battery_saver_description" msgid="1960431123816253034">"For å forlenge batterilevetiden reduserer batterispareren ytelsen til enheten din og begrenser vibrering, posisjonstjenester og mesteparten av bakgrunnsdataene. E-post, sending av meldinger og andre apper som er avhengig av synkronisering, oppdateres kanskje ikke med mindre du åpner dem.\n\nBatterisparing slås av automatisk når enheten lader."</string>
     <string name="data_saver_description" msgid="6015391409098303235">"For å bidra til å redusere databruk blir enkelte apper hindret av Datasparing i å sende eller motta data i bakgrunnen. Apper du bruker for øyeblikket har tilgang til data, men utnytter ikke dette like ofte. Dette betyr for eksempel at bilder ikke vises før du trykker på dem."</string>
-    <!-- no translation found for data_saver_enable_title (4674073932722787417) -->
-    <skip />
-    <!-- no translation found for data_saver_enable_button (7147735965247211818) -->
-    <skip />
+    <string name="data_saver_enable_title" msgid="4674073932722787417">"Vil du slå på Datasparing?"</string>
+    <string name="data_saver_enable_button" msgid="7147735965247211818">"Slå på"</string>
     <plurals name="zen_mode_duration_minutes_summary" formatted="false" msgid="4367877408072000848">
       <item quantity="other">I %1$d minutter (til <xliff:g id="FORMATTEDTIME_1">%2$s</xliff:g>)</item>
       <item quantity="one">I 1 minutt (til <xliff:g id="FORMATTEDTIME_0">%2$s</xliff:g>)</item>
diff --git a/core/res/res/values-ne-rNP/strings.xml b/core/res/res/values-ne-rNP/strings.xml
index cb5971d..0246085 100644
--- a/core/res/res/values-ne-rNP/strings.xml
+++ b/core/res/res/values-ne-rNP/strings.xml
@@ -971,6 +971,8 @@
     <string name="android_upgrading_title" msgid="1584192285441405746">"एन्ड्रोइड अपग्रेड हुँदैछ…"</string>
     <string name="android_start_title" msgid="8418054686415318207">"Android शुरू हुँदैछ..."</string>
     <string name="android_upgrading_fstrim" msgid="8036718871534640010">"भण्डारण अनुकूलन गर्दै।"</string>
+    <string name="android_upgrading_notification_title" msgid="1619393112444671028">"Android स्तरवृद्धि हुँदैछ"</string>
+    <string name="android_upgrading_notification_body" msgid="5761201379457064286">"स्तरवृद्धि सम्पन्न नभएसम्म केही अनुप्रयोगहरू राम्ररी काम नगर्न सक्छन्"</string>
     <string name="android_upgrading_apk" msgid="7904042682111526169">"अनुप्रयोग अनुकुल हुँदै <xliff:g id="NUMBER_0">%1$d</xliff:g> को <xliff:g id="NUMBER_1">%2$d</xliff:g>।"</string>
     <string name="android_preparing_apk" msgid="8162599310274079154">"<xliff:g id="APPNAME">%1$s</xliff:g> तयारी गर्दै।"</string>
     <string name="android_upgrading_starting_apps" msgid="451464516346926713">"सुरुवात अनुप्रयोगहरू।"</string>
diff --git a/core/res/res/values-nl/strings.xml b/core/res/res/values-nl/strings.xml
index d027f40..3f28e2d 100644
--- a/core/res/res/values-nl/strings.xml
+++ b/core/res/res/values-nl/strings.xml
@@ -218,11 +218,9 @@
     <string name="bugreport_title" msgid="2667494803742548533">"Foutenrapport genereren"</string>
     <string name="bugreport_message" msgid="398447048750350456">"Hiermee worden gegevens over de huidige status van je apparaat verzameld en als e-mail verzonden. Wanneer u een foutenrapport start, duurt het even voordat het kan worden verzonden. Even geduld alstublieft."</string>
     <string name="bugreport_option_interactive_title" msgid="8635056131768862479">"Interactief rapport"</string>
-    <!-- no translation found for bugreport_option_interactive_summary (229299488536107968) -->
-    <skip />
+    <string name="bugreport_option_interactive_summary" msgid="229299488536107968">"Gebruik deze optie in de meeste situaties. Hiermee kun je de voortgang van het rapport bijhouden, meer gegevens over het probleem opgeven en screenshots maken. Mogelijk worden bepaalde minder vaak gebruikte gedeelten weggelaten (waarvoor het lang zou duren om een rapport te genereren)."</string>
     <string name="bugreport_option_full_title" msgid="6354382025840076439">"Volledig rapport"</string>
-    <!-- no translation found for bugreport_option_full_summary (7210859858969115745) -->
-    <skip />
+    <string name="bugreport_option_full_summary" msgid="7210859858969115745">"Gebruik deze optie voor minimale systeemverstoring wanneer je apparaat niet reageert of te langzaam is, of wanneer je alle rapportgedeelten nodig hebt. Je kunt niet meer gegevens opgeven of extra screenshots maken."</string>
     <plurals name="bugreport_countdown" formatted="false" msgid="6878900193900090368">
       <item quantity="other">Er wordt over <xliff:g id="NUMBER_1">%d</xliff:g> seconden een screenshot gemaakt voor het bugrapport.</item>
       <item quantity="one">Er wordt over <xliff:g id="NUMBER_0">%d</xliff:g> seconde een screenshot gemaakt voor het bugrapport.</item>
@@ -860,8 +858,7 @@
       <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> uur</item>
       <item quantity="one">1 uur</item>
     </plurals>
-    <!-- no translation found for now_string_shortest (8912796667087856402) -->
-    <skip />
+    <string name="now_string_shortest" msgid="8912796667087856402">"nu"</string>
     <!-- no translation found for duration_minutes_shortest (598436407511890455) -->
     <!-- no translation found for duration_hours_shortest (8300234116089026299) -->
     <!-- no translation found for duration_days_shortest (1363973360381363510) -->
@@ -968,6 +965,8 @@
     <string name="android_upgrading_title" msgid="1584192285441405746">"Android wordt bijgewerkt..."</string>
     <string name="android_start_title" msgid="8418054686415318207">"Android wordt gestart…"</string>
     <string name="android_upgrading_fstrim" msgid="8036718871534640010">"Opslagruimte wordt geoptimaliseerd."</string>
+    <string name="android_upgrading_notification_title" msgid="1619393112444671028">"Android wordt geüpgraded"</string>
+    <string name="android_upgrading_notification_body" msgid="5761201379457064286">"Sommige apps werken mogelijk pas correct nadat de upgrade is voltooid"</string>
     <string name="android_upgrading_apk" msgid="7904042682111526169">"App <xliff:g id="NUMBER_0">%1$d</xliff:g> van <xliff:g id="NUMBER_1">%2$d</xliff:g> optimaliseren."</string>
     <string name="android_preparing_apk" msgid="8162599310274079154">"<xliff:g id="APPNAME">%1$s</xliff:g> voorbereiden."</string>
     <string name="android_upgrading_starting_apps" msgid="451464516346926713">"Apps starten."</string>
@@ -1501,10 +1500,8 @@
     <string name="package_deleted_device_owner" msgid="7650577387493101353">"Verwijderd door je beheerder"</string>
     <string name="battery_saver_description" msgid="1960431123816253034">"Accubesparing beperkt de prestaties van je apparaat, de trilstand, locatieservices en de meeste achtergrondgegevens om de gebruiksduur van de accu te verlengen.\n\nAccubesparing wordt automatisch uitgeschakeld terwijl je apparaat wordt opgeladen."</string>
     <string name="data_saver_description" msgid="6015391409098303235">"Databesparing beperkt het datagebruik door te voorkomen dat sommige apps gegevens verzenden of ontvangen op de achtergrond. Een app die je momenteel gebruikt, kan data gebruiken, maar minder vaak. Dit kan bijvoorbeeld betekenen dat afbeeldingen niet worden weergegeven totdat je hierop tikt."</string>
-    <!-- no translation found for data_saver_enable_title (4674073932722787417) -->
-    <skip />
-    <!-- no translation found for data_saver_enable_button (7147735965247211818) -->
-    <skip />
+    <string name="data_saver_enable_title" msgid="4674073932722787417">"Databesparing inschakelen?"</string>
+    <string name="data_saver_enable_button" msgid="7147735965247211818">"Inschakelen"</string>
     <plurals name="zen_mode_duration_minutes_summary" formatted="false" msgid="4367877408072000848">
       <item quantity="other">%1$d minuten (tot <xliff:g id="FORMATTEDTIME_1">%2$s</xliff:g>)</item>
       <item quantity="one">Eén minuut (tot <xliff:g id="FORMATTEDTIME_0">%2$s</xliff:g>)</item>
diff --git a/core/res/res/values-pa-rIN/strings.xml b/core/res/res/values-pa-rIN/strings.xml
index 5966227..282fb98 100644
--- a/core/res/res/values-pa-rIN/strings.xml
+++ b/core/res/res/values-pa-rIN/strings.xml
@@ -218,11 +218,9 @@
     <string name="bugreport_title" msgid="2667494803742548533">"ਬਗ ਰਿਪੋਰਟ ਲਓ"</string>
     <string name="bugreport_message" msgid="398447048750350456">"ਇਹ ਇੱਕ ਈ-ਮੇਲ ਸੁਨੇਹਾ ਭੇਜਣ ਲਈ, ਤੁਹਾਡੀ ਵਰਤਮਾਨ ਡਿਵਾਈਸ ਬਾਰੇ ਜਾਣਕਾਰੀ ਇਕੱਤਰ ਕਰੇਗਾ। ਬਗ ਰਿਪੋਰਟ ਸ਼ੁਰੂ ਕਰਨ ਵਿੱਚ ਥੋੜ੍ਹਾ ਸਮਾਂ ਲੱਗੇਗਾ ਜਦੋਂ ਤੱਕ ਇਹ ਭੇਜੇ ਜਾਣ ਲਈ ਤਿਆਰ ਨਾ ਹੋਵੇ, ਕਿਰਪਾ ਕਰਕੇ ਧੀਰਜ ਰੱਖੋ।"</string>
     <string name="bugreport_option_interactive_title" msgid="8635056131768862479">"ਅੰਤਰਕਿਰਿਆਤਮਕ ਰਿਪੋਰਟ"</string>
-    <!-- no translation found for bugreport_option_interactive_summary (229299488536107968) -->
-    <skip />
+    <string name="bugreport_option_interactive_summary" msgid="229299488536107968">"ਜ਼ਿਆਦਾਤਰ ਹਾਲਾਤਾਂ ਵਿੱਚ ਇਸ ਦੀ ਵਰਤੋਂ ਕਰੋ। ਇਹ ਤੁਹਾਨੂੰ ਰਿਪੋਰਟ ਦੀ ਪ੍ਰਗਤੀ ਨੂੰ ਟਰੈਕ ਕਰਨ, ਸਮੱਸਿਆ ਬਾਰੇ ਹੋਰ ਵੇਰਵੇ ਦਾਖਲ ਕਰਨ, ਅਤੇ ਸਕ੍ਰੀਨਸ਼ਾਟ ਲੈਣ ਦਿੰਦਾ ਹੈ। ਇਹ ਉਹਨਾਂ ਘੱਟ-ਵਰਤੇ ਗਏ ਕੁਝ ਭਾਗਾਂ ਨੂੰ ਨਜ਼ਰ-ਅੰਦਾਜ਼ ਕਰ ਸਕਦਾ ਹੈ ਜਿਨ੍ਹਾਂ ਦੀ ਰਿਪੋਰਟ ਕਰਨ ਵਿੱਚ ਵੱਧ ਸਮਾਂ ਲੱਗ ਸਕਦਾ ਹੈ।"</string>
     <string name="bugreport_option_full_title" msgid="6354382025840076439">"ਪੂਰੀ ਰਿਪੋਰਟ"</string>
-    <!-- no translation found for bugreport_option_full_summary (7210859858969115745) -->
-    <skip />
+    <string name="bugreport_option_full_summary" msgid="7210859858969115745">"ਜਦੋਂ ਤੁਹਾਡੀ ਡੀਵਾਈਸ ਪ੍ਰਤਿਕਿਰਿਆ ਨਾ ਕਰ ਰਹੀ ਹੋਵੇ ਜਾਂ ਬਹੁਤ ਹੀ ਹੌਲੀ ਹੋਵੇ, ਜਾਂ ਜਦੋਂ ਤੁਹਾਨੂੰ ਸਾਰੇ ਰਿਪੋਰਟ ਭਾਗਾਂ ਦੀ ਲੋੜ ਹੋਵੇ ਤਾਂ ਇਸ ਚੋਣ ਦੀ ਵਰਤੋਂ ਘੱਟ-ਤੋਂ-ਘੱਟ ਸਿਸਟਮ ਦਖ਼ਲ ਲਈ ਕਰੋ। ਤੁਹਾਨੂੰ ਹੋਰ ਵੇਰਵੇ ਦਾਖਲ ਕਰਨ ਜਾਂ ਵਾਧੂ ਸਕ੍ਰੀਨਸ਼ਾਟ ਨਹੀਂ ਲੈਣ ਦਿੰਦਾ ਹੈ।"</string>
     <plurals name="bugreport_countdown" formatted="false" msgid="6878900193900090368">
       <item quantity="one">ਬੱਗ ਰਿਪੋਰਟ ਲਈ <xliff:g id="NUMBER_1">%d</xliff:g> ਸਕਿੰਟ ਵਿੱਚ ਸਕ੍ਰੀਨਸ਼ਾਟ ਲਿਆ ਜਾ ਰਿਹਾ ਹੈ।</item>
       <item quantity="other">ਬੱਗ ਰਿਪੋਰਟ ਲਈ <xliff:g id="NUMBER_1">%d</xliff:g> ਸਕਿੰਟ ਵਿੱਚ ਸਕ੍ਰੀਨਸ਼ਾਟ ਲਿਆ ਜਾ ਰਿਹਾ ਹੈ।</item>
@@ -860,8 +858,7 @@
       <item quantity="one"><xliff:g id="COUNT">%d</xliff:g> ਘੰਟੇ</item>
       <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> ਘੰਟੇ</item>
     </plurals>
-    <!-- no translation found for now_string_shortest (8912796667087856402) -->
-    <skip />
+    <string name="now_string_shortest" msgid="8912796667087856402">"ਹੁਣ"</string>
     <!-- no translation found for duration_minutes_shortest (598436407511890455) -->
     <!-- no translation found for duration_hours_shortest (8300234116089026299) -->
     <!-- no translation found for duration_days_shortest (1363973360381363510) -->
@@ -968,6 +965,8 @@
     <string name="android_upgrading_title" msgid="1584192285441405746">"Android ਅਪਗ੍ਰੇਡ ਕਰ ਰਿਹਾ ਹੈ…"</string>
     <string name="android_start_title" msgid="8418054686415318207">"Android ਚਾਲੂ ਕਰ ਰਿਹਾ ਹੈ…"</string>
     <string name="android_upgrading_fstrim" msgid="8036718871534640010">"ਸਟੋਰੇਜ ਅਨੁਕੂਲ ਕਰ ਰਿਹਾ ਹੈ।"</string>
+    <string name="android_upgrading_notification_title" msgid="1619393112444671028">"Android ਅੱਪਗ੍ਰੇਡ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ"</string>
+    <string name="android_upgrading_notification_body" msgid="5761201379457064286">"ਹੋ ਸਕਦਾ ਹੈ ਕਿ ਕੁਝ ਐਪਾਂ ਅੱਪਗ੍ਰੇਡ ਦੇ ਪੂਰੀ ਹੋਣ ਤੱਕ ਸਹੀ ਢੰਗ ਨਾਲ ਕੰਮ ਨਾ ਕਰਨ"</string>
     <string name="android_upgrading_apk" msgid="7904042682111526169">"<xliff:g id="NUMBER_0">%1$d</xliff:g> <xliff:g id="NUMBER_1">%2$d</xliff:g> ਦਾ ਐਪ ਅਨੁਕੂਲ ਕਰ ਰਿਹਾ ਹੈ।"</string>
     <string name="android_preparing_apk" msgid="8162599310274079154">"<xliff:g id="APPNAME">%1$s</xliff:g> ਤਿਆਰ ਕਰ ਰਿਹਾ ਹੈ।"</string>
     <string name="android_upgrading_starting_apps" msgid="451464516346926713">"ਐਪਸ ਚਾਲੂ ਕਰ ਰਿਹਾ ਹੈ।"</string>
@@ -1501,10 +1500,8 @@
     <string name="package_deleted_device_owner" msgid="7650577387493101353">"ਤੁਹਾਡੇ ਪ੍ਰਬੰਧਕ ਵੱਲੋਂ ਮਿਟਾਇਆ ਗਿਆ"</string>
     <string name="battery_saver_description" msgid="1960431123816253034">"ਬੈਟਰੀ ਸਮਰੱਥਾ ਨੂੰ ਬਿਹਤਰ ਸਹਾਇਤਾ ਕਰਨ ਲਈ, ਬੈਟਰੀ ਸੇਵਰ ਤੁਹਾਡੀ ਡਿਵਾਈਸ ਦਾ ਪ੍ਰਦਰਸ਼ਨ ਘਟਾਉਂਦਾ ਹੈ ਅਤੇ ਵਾਈਬ੍ਰੇਸ਼ਨ, ਨਿਰਧਾਰਿਤ ਸਥਾਨ ਸੇਵਾਵਾਂ ਅਤੇ ਜ਼ਿਆਦਾਤਰ ਪਿਛੋਕੜ ਡਾਟਾ ਨੂੰ ਸੀਮਿਤ ਕਰਦਾ ਹੈ। ਈਮੇਲ, ਮੈਸੇਜਿੰਗ ਅਤੇ ਹੋਰ ਐਪਸ, ਜੋ ਸਿੰਕਿੰਗ ਤੇ ਨਿਰਭਰ ਹਨ, ਉਹ ਉਦੋਂ ਤੱਕ ਅਪਡੇਟ ਨਹੀਂ ਕੀਤੇ ਜਾ ਸਕਦੇ ਜਦੋਂ ਤੱਕ ਤੁਸੀਂ ਉਹਨਾਂ ਨੂੰ ਖੋਲ੍ਹਦੇ ਨਹੀਂ।\n\nਬੈਟਰੀ ਸੇਵਰ ਆਟੋਮੈਟਿਕਲੀ ਬੰਦ ਹੁੰਦਾ ਹੈ ਜਦੋਂ ਤੁਹਾਡੀ ਡਿਵਾਈਸ ਚਾਰਜ ਹੋ ਰਹੀ ਹੁੰਦੀ ਹੈ।"</string>
     <string name="data_saver_description" msgid="6015391409098303235">"ਡੈਟਾ ਵਰਤੋਂ ਘਟਾਉਣ ਵਿੱਚ ਮਦਦ ਲਈ, ਡੈਟਾ ਸੇਵਰ ਕੁਝ ਐਪਾਂ ਨੂੰ ਬੈਕਗ੍ਰਾਊਂਡ ਵਿੱਚ ਡੈਟਾ ਭੇਜਣ ਜਾਂ ਪ੍ਰਾਪਤ ਕਰਨ ਤੋਂ ਰੋਕਦਾ ਹੈ। ਤੁਹਾਡੇ ਵੱਲੋਂ ਵਰਤਮਾਨ ਤੌਰ \'ਤੇ ਵਰਤੀ ਜਾ ਰਹੀ ਐਪ ਡੈਟੇ \'ਤੇ ਪਹੁੰਚ ਕਰ ਸਕਦੀ ਹੈ, ਪਰ ਉਹ ਇੰਝ ਕਦੇ-ਕਦਾਈਂ ਕਰ ਸਕਦੀ ਹੈ। ਉਦਾਹਰਨ ਲਈ, ਇਸ ਦਾ ਮਤਲਬ ਇਹ ਹੋ ਸਕਦਾ ਹੈ ਕਿ ਚਿਤਰ ਤਦ ਤੱਕ ਨਹੀਂ ਵਿਖਾਏ ਜਾਂਦੇ, ਜਦੋਂ ਤੱਕ ਤੁਸੀਂ ਉਹਨਾਂ \'ਤੇ ਟੈਪ ਨਹੀਂ ਕਰਦੇ।"</string>
-    <!-- no translation found for data_saver_enable_title (4674073932722787417) -->
-    <skip />
-    <!-- no translation found for data_saver_enable_button (7147735965247211818) -->
-    <skip />
+    <string name="data_saver_enable_title" msgid="4674073932722787417">"ਕੀ ਡੈਟਾ ਸੇਵਰ ਚਾਲੂ ਕਰਨਾ ਹੈ?"</string>
+    <string name="data_saver_enable_button" msgid="7147735965247211818">"ਚਾਲੂ ਕਰੋ"</string>
     <plurals name="zen_mode_duration_minutes_summary" formatted="false" msgid="4367877408072000848">
       <item quantity="one">%1$d ਮਿੰਟਾਂ ਤੱਕ (<xliff:g id="FORMATTEDTIME_1">%2$s</xliff:g> ਤੱਕ) </item>
       <item quantity="other">%1$d ਮਿੰਟਾਂ ਤੱਕ (<xliff:g id="FORMATTEDTIME_1">%2$s</xliff:g> ਤੱਕ)</item>
diff --git a/core/res/res/values-pl/strings.xml b/core/res/res/values-pl/strings.xml
index cfaf9fa..ee58766 100644
--- a/core/res/res/values-pl/strings.xml
+++ b/core/res/res/values-pl/strings.xml
@@ -222,11 +222,9 @@
     <string name="bugreport_title" msgid="2667494803742548533">"Zgłoś błąd"</string>
     <string name="bugreport_message" msgid="398447048750350456">"Informacje o bieżącym stanie urządzenia zostaną zebrane i wysłane e-mailem. Przygotowanie zgłoszenia błędu do wysłania chwilę potrwa, więc zachowaj cierpliwość."</string>
     <string name="bugreport_option_interactive_title" msgid="8635056131768862479">"Raport interaktywny"</string>
-    <!-- no translation found for bugreport_option_interactive_summary (229299488536107968) -->
-    <skip />
+    <string name="bugreport_option_interactive_summary" msgid="229299488536107968">"Używaj tej opcji w większości przypadków. Umożliwia śledzenie postępów raportu, podanie dodatkowych szczegółów problemu i wykonanie zrzutów ekranu. Raport może pomijać niektóre rzadko używane sekcje, których utworzenie zajmuje dużo czasu."</string>
     <string name="bugreport_option_full_title" msgid="6354382025840076439">"Pełny raport"</string>
-    <!-- no translation found for bugreport_option_full_summary (7210859858969115745) -->
-    <skip />
+    <string name="bugreport_option_full_summary" msgid="7210859858969115745">"Użyj tej opcji, jeśli chcesz zminimalizować zakłócenia pracy systemu, gdy urządzenie nie reaguje, działa wolno lub gdy potrzebujesz wszystkich sekcji raportu. Nie można podać więcej szczegółów ani wykonać dodatkowych zrzutów ekranu."</string>
     <plurals name="bugreport_countdown" formatted="false" msgid="6878900193900090368">
       <item quantity="few">Zrzut ekranu do raportu o błędzie zostanie zrobiony za <xliff:g id="NUMBER_1">%d</xliff:g> sekundy.</item>
       <item quantity="many">Zrzut ekranu do raportu o błędzie zostanie zrobiony za <xliff:g id="NUMBER_1">%d</xliff:g> sekund.</item>
@@ -874,8 +872,7 @@
       <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> godziny</item>
       <item quantity="one">1 godzina</item>
     </plurals>
-    <!-- no translation found for now_string_shortest (8912796667087856402) -->
-    <skip />
+    <string name="now_string_shortest" msgid="8912796667087856402">"teraz"</string>
     <!-- no translation found for duration_minutes_shortest (598436407511890455) -->
     <!-- no translation found for duration_hours_shortest (8300234116089026299) -->
     <!-- no translation found for duration_days_shortest (1363973360381363510) -->
@@ -982,6 +979,8 @@
     <string name="android_upgrading_title" msgid="1584192285441405746">"Android jest uaktualniany..."</string>
     <string name="android_start_title" msgid="8418054686415318207">"Android się uruchamia…"</string>
     <string name="android_upgrading_fstrim" msgid="8036718871534640010">"Optymalizacja pamięci."</string>
+    <string name="android_upgrading_notification_title" msgid="1619393112444671028">"Android jest uaktualniany"</string>
+    <string name="android_upgrading_notification_body" msgid="5761201379457064286">"Niektóre aplikacje mogą nie działać prawidłowo, dopóki nie zakończy się aktualizacja."</string>
     <string name="android_upgrading_apk" msgid="7904042682111526169">"Optymalizowanie aplikacji <xliff:g id="NUMBER_0">%1$d</xliff:g> z <xliff:g id="NUMBER_1">%2$d</xliff:g>."</string>
     <string name="android_preparing_apk" msgid="8162599310274079154">"Przygotowuję aplikację <xliff:g id="APPNAME">%1$s</xliff:g>."</string>
     <string name="android_upgrading_starting_apps" msgid="451464516346926713">"Uruchamianie aplikacji."</string>
@@ -1523,10 +1522,8 @@
     <string name="package_deleted_device_owner" msgid="7650577387493101353">"Usunięty przez administratora"</string>
     <string name="battery_saver_description" msgid="1960431123816253034">"Aby wydłużyć czas pracy baterii, Oszczędzanie baterii ogranicza aktywność urządzenia, w tym wibracje, usługi lokalizacyjne i przetwarzanie większości danych w tle. Poczta, czat i inne synchronizowane aplikacje mogą nie aktualizować swojej zawartości, dopóki ich nie otworzysz.\n\nOszczędzanie baterii wyłącza się automatycznie podczas ładowania urządzenia."</string>
     <string name="data_saver_description" msgid="6015391409098303235">"Oszczędzanie danych uniemożliwia niektórym aplikacjom wysyłanie i odbieranie danych w tle, zmniejszając w ten sposób ich użycie. Aplikacja, z której w tej chwili korzystasz, może uzyskiwać dostęp do danych, ale rzadziej. Może to powodować, że obrazy będą się wyświetlać dopiero po kliknięciu."</string>
-    <!-- no translation found for data_saver_enable_title (4674073932722787417) -->
-    <skip />
-    <!-- no translation found for data_saver_enable_button (7147735965247211818) -->
-    <skip />
+    <string name="data_saver_enable_title" msgid="4674073932722787417">"Włączyć Oszczędzanie danych?"</string>
+    <string name="data_saver_enable_button" msgid="7147735965247211818">"Włącz"</string>
     <plurals name="zen_mode_duration_minutes_summary" formatted="false" msgid="4367877408072000848">
       <item quantity="few">Przez %1$d minuty (do <xliff:g id="FORMATTEDTIME_1">%2$s</xliff:g>)</item>
       <item quantity="many">Przez %1$d minut (do <xliff:g id="FORMATTEDTIME_1">%2$s</xliff:g>)</item>
diff --git a/core/res/res/values-pt-rBR/strings.xml b/core/res/res/values-pt-rBR/strings.xml
index ace15f6..da22e5e 100644
--- a/core/res/res/values-pt-rBR/strings.xml
+++ b/core/res/res/values-pt-rBR/strings.xml
@@ -218,11 +218,9 @@
     <string name="bugreport_title" msgid="2667494803742548533">"Obter relatório de bugs"</string>
     <string name="bugreport_message" msgid="398447048750350456">"Isto coletará informações sobre o estado atual do dispositivo para enviá-las em uma mensagem de e-mail. Após iniciar o relatório de bugs, será necessário aguardar algum tempo até que esteja pronto para ser enviado."</string>
     <string name="bugreport_option_interactive_title" msgid="8635056131768862479">"Relatório interativo"</string>
-    <!-- no translation found for bugreport_option_interactive_summary (229299488536107968) -->
-    <skip />
+    <string name="bugreport_option_interactive_summary" msgid="229299488536107968">"Use este recurso na maioria das circunstâncias. Ele permite que você acompanhe o progresso do relatório, informe mais detalhes sobre o problema e faça capturas de tela. É possível que ele omita algumas seções menos utilizadas que levam muito tempo na emissão dos relatórios."</string>
     <string name="bugreport_option_full_title" msgid="6354382025840076439">"Relatório completo"</string>
-    <!-- no translation found for bugreport_option_full_summary (7210859858969115745) -->
-    <skip />
+    <string name="bugreport_option_full_summary" msgid="7210859858969115745">"Use esta opção para ter o mínimo de interferência do sistema quando seu dispositivo não estiver respondendo ou estiver muito lento, ou quando você precisar de todas as seções de relatórios. Ela não permite que você informe mais detalhes ou faça capturas de tela adicionais."</string>
     <plurals name="bugreport_countdown" formatted="false" msgid="6878900193900090368">
       <item quantity="one">Capturas de tela para o relatório do bug serão feitas em <xliff:g id="NUMBER_1">%d</xliff:g> segundos.</item>
       <item quantity="other">Capturas de tela para o relatório do bug serão feitas em <xliff:g id="NUMBER_1">%d</xliff:g> segundos.</item>
@@ -860,8 +858,7 @@
       <item quantity="one"><xliff:g id="COUNT">%d</xliff:g> horas</item>
       <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> horas</item>
     </plurals>
-    <!-- no translation found for now_string_shortest (8912796667087856402) -->
-    <skip />
+    <string name="now_string_shortest" msgid="8912796667087856402">"agora"</string>
     <!-- no translation found for duration_minutes_shortest (598436407511890455) -->
     <!-- no translation found for duration_hours_shortest (8300234116089026299) -->
     <!-- no translation found for duration_days_shortest (1363973360381363510) -->
@@ -968,6 +965,8 @@
     <string name="android_upgrading_title" msgid="1584192285441405746">"O Android está sendo atualizado..."</string>
     <string name="android_start_title" msgid="8418054686415318207">"O Android está iniciando..."</string>
     <string name="android_upgrading_fstrim" msgid="8036718871534640010">"Otimizando o armazenamento."</string>
+    <string name="android_upgrading_notification_title" msgid="1619393112444671028">"O Android está sendo atualizado"</string>
+    <string name="android_upgrading_notification_body" msgid="5761201379457064286">"Alguns apps podem não funcionar corretamente até que a atualização seja concluída"</string>
     <string name="android_upgrading_apk" msgid="7904042682111526169">"Otimizando app <xliff:g id="NUMBER_0">%1$d</xliff:g> de <xliff:g id="NUMBER_1">%2$d</xliff:g>."</string>
     <string name="android_preparing_apk" msgid="8162599310274079154">"Preparando <xliff:g id="APPNAME">%1$s</xliff:g>."</string>
     <string name="android_upgrading_starting_apps" msgid="451464516346926713">"Iniciando apps."</string>
@@ -1501,10 +1500,8 @@
     <string name="package_deleted_device_owner" msgid="7650577387493101353">"Excluído pelo seu administrador"</string>
     <string name="battery_saver_description" msgid="1960431123816253034">"Para ajudar a melhorar a duração da bateria, o economizador de bateria reduz o desempenho e os limites de vibração do dispositivo, os serviços de localização e a maioria dos dados de segundo plano. E-mail, mensagens e outros aplicativos que dependem de sincronização não podem ser atualizados, a não ser que você os abra.\n\nO economizador de bateria é desligado automaticamente quando o dispositivo está sendo carregado."</string>
     <string name="data_saver_description" msgid="6015391409098303235">"Para ajudar a reduzir o uso de dados, a Economia de dados impede que alguns apps enviem ou recebam dados em segundo plano. Um app que você esteja usando no momento pode acessar dados, mas com menos frequência. Isso pode significar que as imagens não serão exibidas até que você toque nelas."</string>
-    <!-- no translation found for data_saver_enable_title (4674073932722787417) -->
-    <skip />
-    <!-- no translation found for data_saver_enable_button (7147735965247211818) -->
-    <skip />
+    <string name="data_saver_enable_title" msgid="4674073932722787417">"Ativar Economia de dados?"</string>
+    <string name="data_saver_enable_button" msgid="7147735965247211818">"Ativar"</string>
     <plurals name="zen_mode_duration_minutes_summary" formatted="false" msgid="4367877408072000848">
       <item quantity="one">Por %1$d minutos (até às <xliff:g id="FORMATTEDTIME_1">%2$s</xliff:g>)</item>
       <item quantity="other">Por %1$d minutos (até às <xliff:g id="FORMATTEDTIME_1">%2$s</xliff:g>)</item>
diff --git a/core/res/res/values-pt-rPT/strings.xml b/core/res/res/values-pt-rPT/strings.xml
index 5e69659..51b09b8 100644
--- a/core/res/res/values-pt-rPT/strings.xml
+++ b/core/res/res/values-pt-rPT/strings.xml
@@ -218,11 +218,9 @@
     <string name="bugreport_title" msgid="2667494803742548533">"Criar relatório de erros"</string>
     <string name="bugreport_message" msgid="398447048750350456">"Será recolhida informação sobre o estado atual do seu dispositivo a enviar através de uma mensagem de email. Demorará algum tempo até que o relatório de erro esteja pronto para ser enviado. Aguarde um pouco."</string>
     <string name="bugreport_option_interactive_title" msgid="8635056131768862479">"Relatório interativo"</string>
-    <!-- no translation found for bugreport_option_interactive_summary (229299488536107968) -->
-    <skip />
+    <string name="bugreport_option_interactive_summary" msgid="229299488536107968">"Utilize esta opção na maioria das circunstâncias. Permite monitorizar o progresso do relatório, introduzir mais detalhes acerca do problema e tirar capturas de ecrã. Pode omitir algumas secções menos utilizadas que demoram muito tempo a comunicar."</string>
     <string name="bugreport_option_full_title" msgid="6354382025840076439">"Relatório completo"</string>
-    <!-- no translation found for bugreport_option_full_summary (7210859858969115745) -->
-    <skip />
+    <string name="bugreport_option_full_summary" msgid="7210859858969115745">"Utilize esta opção para uma interferência mínima do sistema quando o dispositivo não responder ou estiver demasiado lento, ou quando precisar de todas as secções de relatório. Não permite introduzir mais detalhes ou tirar capturas de ecrã adicionais."</string>
     <plurals name="bugreport_countdown" formatted="false" msgid="6878900193900090368">
       <item quantity="other">A tirar uma captura de ecrã do relatório de erro dentro de <xliff:g id="NUMBER_1">%d</xliff:g> segundos.</item>
       <item quantity="one">A tirar uma captura de ecrã do relatório de erro dentro de <xliff:g id="NUMBER_0">%d</xliff:g> segundo.</item>
@@ -860,8 +858,7 @@
       <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> horas</item>
       <item quantity="one">1 hora</item>
     </plurals>
-    <!-- no translation found for now_string_shortest (8912796667087856402) -->
-    <skip />
+    <string name="now_string_shortest" msgid="8912796667087856402">"agora"</string>
     <!-- no translation found for duration_minutes_shortest (598436407511890455) -->
     <!-- no translation found for duration_hours_shortest (8300234116089026299) -->
     <!-- no translation found for duration_days_shortest (1363973360381363510) -->
@@ -968,6 +965,8 @@
     <string name="android_upgrading_title" msgid="1584192285441405746">"O Android está a ser atualizado..."</string>
     <string name="android_start_title" msgid="8418054686415318207">"O Android está a iniciar…"</string>
     <string name="android_upgrading_fstrim" msgid="8036718871534640010">"A otimizar o armazenamento."</string>
+    <string name="android_upgrading_notification_title" msgid="1619393112444671028">"O Android está a ser atualizado"</string>
+    <string name="android_upgrading_notification_body" msgid="5761201379457064286">"Algumas aplicações podem não funcionar corretamente enquanto a atualização não for concluída"</string>
     <string name="android_upgrading_apk" msgid="7904042682111526169">"A otimizar a aplicação <xliff:g id="NUMBER_0">%1$d</xliff:g> de <xliff:g id="NUMBER_1">%2$d</xliff:g>."</string>
     <string name="android_preparing_apk" msgid="8162599310274079154">"A preparar o <xliff:g id="APPNAME">%1$s</xliff:g>."</string>
     <string name="android_upgrading_starting_apps" msgid="451464516346926713">"A iniciar aplicações"</string>
@@ -1501,10 +1500,8 @@
     <string name="package_deleted_device_owner" msgid="7650577387493101353">"Eliminado pelo administrador"</string>
     <string name="battery_saver_description" msgid="1960431123816253034">"Para ajudar a melhorar a autonomia da bateria, a poupança de bateria reduz o desempenho do seu dispositivo e limita a vibração, os serviços de localização e a maioria dos dados em segundo plano. O email, as mensagens e outras aplicações que dependem da sincronização não podem ser atualizados exceto se os abrir.\n\nA poupança de bateria desliga-se automaticamente quando o dispositivo está a carregar."</string>
     <string name="data_saver_description" msgid="6015391409098303235">"Para ajudar a reduzir a utilização de dados, a Poupança de dados impede que algumas aplicações enviem ou recebam dados em segundo plano. Uma determinada aplicação que esteja a utilizar atualmente pode aceder aos dados, mas é possível que o faça com menos frequência. Isto pode significar, por exemplo, que as imagens não são apresentadas até que toque nas mesmas."</string>
-    <!-- no translation found for data_saver_enable_title (4674073932722787417) -->
-    <skip />
-    <!-- no translation found for data_saver_enable_button (7147735965247211818) -->
-    <skip />
+    <string name="data_saver_enable_title" msgid="4674073932722787417">"Ativar a Poupança de dados?"</string>
+    <string name="data_saver_enable_button" msgid="7147735965247211818">"Ativar"</string>
     <plurals name="zen_mode_duration_minutes_summary" formatted="false" msgid="4367877408072000848">
       <item quantity="other">Durante %1$d minutos (até às <xliff:g id="FORMATTEDTIME_1">%2$s</xliff:g>)</item>
       <item quantity="one">Durante um minuto (até às <xliff:g id="FORMATTEDTIME_0">%2$s</xliff:g>)</item>
diff --git a/core/res/res/values-pt/strings.xml b/core/res/res/values-pt/strings.xml
index ace15f6..da22e5e 100644
--- a/core/res/res/values-pt/strings.xml
+++ b/core/res/res/values-pt/strings.xml
@@ -218,11 +218,9 @@
     <string name="bugreport_title" msgid="2667494803742548533">"Obter relatório de bugs"</string>
     <string name="bugreport_message" msgid="398447048750350456">"Isto coletará informações sobre o estado atual do dispositivo para enviá-las em uma mensagem de e-mail. Após iniciar o relatório de bugs, será necessário aguardar algum tempo até que esteja pronto para ser enviado."</string>
     <string name="bugreport_option_interactive_title" msgid="8635056131768862479">"Relatório interativo"</string>
-    <!-- no translation found for bugreport_option_interactive_summary (229299488536107968) -->
-    <skip />
+    <string name="bugreport_option_interactive_summary" msgid="229299488536107968">"Use este recurso na maioria das circunstâncias. Ele permite que você acompanhe o progresso do relatório, informe mais detalhes sobre o problema e faça capturas de tela. É possível que ele omita algumas seções menos utilizadas que levam muito tempo na emissão dos relatórios."</string>
     <string name="bugreport_option_full_title" msgid="6354382025840076439">"Relatório completo"</string>
-    <!-- no translation found for bugreport_option_full_summary (7210859858969115745) -->
-    <skip />
+    <string name="bugreport_option_full_summary" msgid="7210859858969115745">"Use esta opção para ter o mínimo de interferência do sistema quando seu dispositivo não estiver respondendo ou estiver muito lento, ou quando você precisar de todas as seções de relatórios. Ela não permite que você informe mais detalhes ou faça capturas de tela adicionais."</string>
     <plurals name="bugreport_countdown" formatted="false" msgid="6878900193900090368">
       <item quantity="one">Capturas de tela para o relatório do bug serão feitas em <xliff:g id="NUMBER_1">%d</xliff:g> segundos.</item>
       <item quantity="other">Capturas de tela para o relatório do bug serão feitas em <xliff:g id="NUMBER_1">%d</xliff:g> segundos.</item>
@@ -860,8 +858,7 @@
       <item quantity="one"><xliff:g id="COUNT">%d</xliff:g> horas</item>
       <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> horas</item>
     </plurals>
-    <!-- no translation found for now_string_shortest (8912796667087856402) -->
-    <skip />
+    <string name="now_string_shortest" msgid="8912796667087856402">"agora"</string>
     <!-- no translation found for duration_minutes_shortest (598436407511890455) -->
     <!-- no translation found for duration_hours_shortest (8300234116089026299) -->
     <!-- no translation found for duration_days_shortest (1363973360381363510) -->
@@ -968,6 +965,8 @@
     <string name="android_upgrading_title" msgid="1584192285441405746">"O Android está sendo atualizado..."</string>
     <string name="android_start_title" msgid="8418054686415318207">"O Android está iniciando..."</string>
     <string name="android_upgrading_fstrim" msgid="8036718871534640010">"Otimizando o armazenamento."</string>
+    <string name="android_upgrading_notification_title" msgid="1619393112444671028">"O Android está sendo atualizado"</string>
+    <string name="android_upgrading_notification_body" msgid="5761201379457064286">"Alguns apps podem não funcionar corretamente até que a atualização seja concluída"</string>
     <string name="android_upgrading_apk" msgid="7904042682111526169">"Otimizando app <xliff:g id="NUMBER_0">%1$d</xliff:g> de <xliff:g id="NUMBER_1">%2$d</xliff:g>."</string>
     <string name="android_preparing_apk" msgid="8162599310274079154">"Preparando <xliff:g id="APPNAME">%1$s</xliff:g>."</string>
     <string name="android_upgrading_starting_apps" msgid="451464516346926713">"Iniciando apps."</string>
@@ -1501,10 +1500,8 @@
     <string name="package_deleted_device_owner" msgid="7650577387493101353">"Excluído pelo seu administrador"</string>
     <string name="battery_saver_description" msgid="1960431123816253034">"Para ajudar a melhorar a duração da bateria, o economizador de bateria reduz o desempenho e os limites de vibração do dispositivo, os serviços de localização e a maioria dos dados de segundo plano. E-mail, mensagens e outros aplicativos que dependem de sincronização não podem ser atualizados, a não ser que você os abra.\n\nO economizador de bateria é desligado automaticamente quando o dispositivo está sendo carregado."</string>
     <string name="data_saver_description" msgid="6015391409098303235">"Para ajudar a reduzir o uso de dados, a Economia de dados impede que alguns apps enviem ou recebam dados em segundo plano. Um app que você esteja usando no momento pode acessar dados, mas com menos frequência. Isso pode significar que as imagens não serão exibidas até que você toque nelas."</string>
-    <!-- no translation found for data_saver_enable_title (4674073932722787417) -->
-    <skip />
-    <!-- no translation found for data_saver_enable_button (7147735965247211818) -->
-    <skip />
+    <string name="data_saver_enable_title" msgid="4674073932722787417">"Ativar Economia de dados?"</string>
+    <string name="data_saver_enable_button" msgid="7147735965247211818">"Ativar"</string>
     <plurals name="zen_mode_duration_minutes_summary" formatted="false" msgid="4367877408072000848">
       <item quantity="one">Por %1$d minutos (até às <xliff:g id="FORMATTEDTIME_1">%2$s</xliff:g>)</item>
       <item quantity="other">Por %1$d minutos (até às <xliff:g id="FORMATTEDTIME_1">%2$s</xliff:g>)</item>
diff --git a/core/res/res/values-ro/strings.xml b/core/res/res/values-ro/strings.xml
index ca613b8..b344deb 100644
--- a/core/res/res/values-ro/strings.xml
+++ b/core/res/res/values-ro/strings.xml
@@ -220,11 +220,9 @@
     <string name="bugreport_title" msgid="2667494803742548533">"Executați un raport despre erori"</string>
     <string name="bugreport_message" msgid="398447048750350456">"Acest raport va colecta informații despre starea actuală a dispozitivului, pentru a le trimite într-un e-mail. Aveți răbdare după pornirea raportului despre erori până când va fi gata de trimis."</string>
     <string name="bugreport_option_interactive_title" msgid="8635056131768862479">"Raport interactiv"</string>
-    <!-- no translation found for bugreport_option_interactive_summary (229299488536107968) -->
-    <skip />
+    <string name="bugreport_option_interactive_summary" msgid="229299488536107968">"Folosiți această opțiune în majoritatea situațiilor. Astfel, puteți să urmăriți progresul raportului, să introduceți mai multe detalii în privința problemei și să creați capturi de ecran. Pot fi omise unele secțiuni mai puțin folosite pentru care raportarea durează prea mult."</string>
     <string name="bugreport_option_full_title" msgid="6354382025840076439">"Raport complet"</string>
-    <!-- no translation found for bugreport_option_full_summary (7210859858969115745) -->
-    <skip />
+    <string name="bugreport_option_full_summary" msgid="7210859858969115745">"Folosiți această opțiune pentru a reduce la minimum interferențele cu sistemul când dispozitivul nu răspunde, funcționează prea lent sau când aveți nevoie de toate secțiunile raportului. Nu puteți să introduceți mai multe detalii sau să creați capturi de ecran suplimentare."</string>
     <plurals name="bugreport_countdown" formatted="false" msgid="6878900193900090368">
       <item quantity="few">Peste <xliff:g id="NUMBER_1">%d</xliff:g> secunde se va realiza o captură de ecran pentru raportul de eroare.</item>
       <item quantity="other">Peste <xliff:g id="NUMBER_1">%d</xliff:g> de secunde se va realiza o captură de ecran pentru raportul de eroare.</item>
@@ -867,8 +865,7 @@
       <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> de ore</item>
       <item quantity="one">O oră</item>
     </plurals>
-    <!-- no translation found for now_string_shortest (8912796667087856402) -->
-    <skip />
+    <string name="now_string_shortest" msgid="8912796667087856402">"acum"</string>
     <!-- no translation found for duration_minutes_shortest (598436407511890455) -->
     <!-- no translation found for duration_hours_shortest (8300234116089026299) -->
     <!-- no translation found for duration_days_shortest (1363973360381363510) -->
@@ -975,6 +972,8 @@
     <string name="android_upgrading_title" msgid="1584192285441405746">"Android trece la o versiune superioară..."</string>
     <string name="android_start_title" msgid="8418054686415318207">"Android pornește..."</string>
     <string name="android_upgrading_fstrim" msgid="8036718871534640010">"Se optimizează stocarea."</string>
+    <string name="android_upgrading_notification_title" msgid="1619393112444671028">"Android face upgrade"</string>
+    <string name="android_upgrading_notification_body" msgid="5761201379457064286">"Este posibil ca unele aplicații să nu funcționeze corespunzător până când nu se finalizează upgrade-ul"</string>
     <string name="android_upgrading_apk" msgid="7904042682111526169">"Se optimizează aplicația <xliff:g id="NUMBER_0">%1$d</xliff:g> din <xliff:g id="NUMBER_1">%2$d</xliff:g>."</string>
     <string name="android_preparing_apk" msgid="8162599310274079154">"Se pregătește <xliff:g id="APPNAME">%1$s</xliff:g>."</string>
     <string name="android_upgrading_starting_apps" msgid="451464516346926713">"Se pornesc aplicațiile."</string>
@@ -1512,10 +1511,8 @@
     <string name="package_deleted_device_owner" msgid="7650577387493101353">"Șters de administrator"</string>
     <string name="battery_saver_description" msgid="1960431123816253034">"Pentru a îmbunătăți autonomia bateriei, funcția de economisire a energiei reduce performanțele dispozitivului și limitează vibrațiile, serviciile de localizare și majoritatea datelor de fundal. Este posibil ca e-mailurile, mesageria și alte aplicații care depind de sincronizare să nu se actualizeze dacă nu le deschideți.\n\nFuncția de economisire a energiei se dezactivează automat când dispozitivul se încarcă."</string>
     <string name="data_saver_description" msgid="6015391409098303235">"Pentru a contribui la reducerea utilizării de date, Economizorul de date împiedică unele aplicații să trimită sau să primească date în fundal. O aplicație pe care o folosiți în prezent poate să acceseze datele, dar o poate face mai rar. Aceasta poate însemna, de exemplu, că imaginile se afișează numai după ce le atingeți."</string>
-    <!-- no translation found for data_saver_enable_title (4674073932722787417) -->
-    <skip />
-    <!-- no translation found for data_saver_enable_button (7147735965247211818) -->
-    <skip />
+    <string name="data_saver_enable_title" msgid="4674073932722787417">"Activați Economizorul de date?"</string>
+    <string name="data_saver_enable_button" msgid="7147735965247211818">"Activați"</string>
     <plurals name="zen_mode_duration_minutes_summary" formatted="false" msgid="4367877408072000848">
       <item quantity="few">Timp de %1$d minute (până la <xliff:g id="FORMATTEDTIME_1">%2$s</xliff:g>)</item>
       <item quantity="other">Timp de %1$d de minute (până la <xliff:g id="FORMATTEDTIME_1">%2$s</xliff:g>)</item>
diff --git a/core/res/res/values-ru/strings.xml b/core/res/res/values-ru/strings.xml
index 1d147fa..7a4bcdf 100644
--- a/core/res/res/values-ru/strings.xml
+++ b/core/res/res/values-ru/strings.xml
@@ -222,11 +222,9 @@
     <string name="bugreport_title" msgid="2667494803742548533">"Отчет об ошибке"</string>
     <string name="bugreport_message" msgid="398447048750350456">"Информация о текущем состоянии вашего устройства будет собрана и отправлена по электронной почте. Подготовка отчета займет некоторое время."</string>
     <string name="bugreport_option_interactive_title" msgid="8635056131768862479">"Интерактивный отчет"</string>
-    <!-- no translation found for bugreport_option_interactive_summary (229299488536107968) -->
-    <skip />
+    <string name="bugreport_option_interactive_summary" msgid="229299488536107968">"Рекомендуем этот вариант в большинстве случаев, чтобы отслеживать статус отчета, указывать дополнительные данные о проблеме и делать скриншоты. Некоторые разделы могут быть исключены, чтобы сократить время подготовки отчета."</string>
     <string name="bugreport_option_full_title" msgid="6354382025840076439">"Подробный отчет"</string>
-    <!-- no translation found for bugreport_option_full_summary (7210859858969115745) -->
-    <skip />
+    <string name="bugreport_option_full_summary" msgid="7210859858969115745">"Выберите этот вариант, если устройство не реагирует на ваши действия или работает слишком медленно, а также если вы хотите включить все разделы отчета. Вы не сможете сделать скриншот или указать дополнительные сведения."</string>
     <plurals name="bugreport_countdown" formatted="false" msgid="6878900193900090368">
       <item quantity="one">Скриншот будет сделан через <xliff:g id="NUMBER_1">%d</xliff:g> секунду</item>
       <item quantity="few">Скриншот будет сделан через <xliff:g id="NUMBER_1">%d</xliff:g> секунды</item>
@@ -874,8 +872,7 @@
       <item quantity="many"><xliff:g id="COUNT">%d</xliff:g> часов</item>
       <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> часов</item>
     </plurals>
-    <!-- no translation found for now_string_shortest (8912796667087856402) -->
-    <skip />
+    <string name="now_string_shortest" msgid="8912796667087856402">"сейчас"</string>
     <!-- no translation found for duration_minutes_shortest (598436407511890455) -->
     <!-- no translation found for duration_hours_shortest (8300234116089026299) -->
     <!-- no translation found for duration_days_shortest (1363973360381363510) -->
@@ -982,6 +979,8 @@
     <string name="android_upgrading_title" msgid="1584192285441405746">"Обновление Android..."</string>
     <string name="android_start_title" msgid="8418054686415318207">"Запуск Android…"</string>
     <string name="android_upgrading_fstrim" msgid="8036718871534640010">"Оптимизация хранилища…"</string>
+    <string name="android_upgrading_notification_title" msgid="1619393112444671028">"Обновление Android"</string>
+    <string name="android_upgrading_notification_body" msgid="5761201379457064286">"Во время обновления некоторые приложения могут работать со сбоями."</string>
     <string name="android_upgrading_apk" msgid="7904042682111526169">"Оптимизация приложения <xliff:g id="NUMBER_0">%1$d</xliff:g> из <xliff:g id="NUMBER_1">%2$d</xliff:g>."</string>
     <string name="android_preparing_apk" msgid="8162599310274079154">"Подготовка приложения \"<xliff:g id="APPNAME">%1$s</xliff:g>\"..."</string>
     <string name="android_upgrading_starting_apps" msgid="451464516346926713">"Запуск приложений."</string>
@@ -1523,10 +1522,8 @@
     <string name="package_deleted_device_owner" msgid="7650577387493101353">"Удалено администратором"</string>
     <string name="battery_saver_description" msgid="1960431123816253034">"Чтобы продлить время работы устройства от батареи, в режиме энергосбережения снижается производительность, а также ограничивается использование вибрации, геолокации и фоновой передачи данных. Данные, требующие синхронизации, могут обновляться только когда вы откроете приложение.\n\nРежим энергосбережения автоматически отключается во время зарядки устройства."</string>
     <string name="data_saver_description" msgid="6015391409098303235">"В режиме экономии трафика фоновая передача для некоторых приложений отключена. Приложение, которым вы пользуетесь, может получать и отправлять данные, но реже, чем обычно. Например, изображения могут не загружаться, пока вы не нажмете на них."</string>
-    <!-- no translation found for data_saver_enable_title (4674073932722787417) -->
-    <skip />
-    <!-- no translation found for data_saver_enable_button (7147735965247211818) -->
-    <skip />
+    <string name="data_saver_enable_title" msgid="4674073932722787417">"Включить экономию трафика?"</string>
+    <string name="data_saver_enable_button" msgid="7147735965247211818">"Включить"</string>
     <plurals name="zen_mode_duration_minutes_summary" formatted="false" msgid="4367877408072000848">
       <item quantity="one">%1$d минута (до <xliff:g id="FORMATTEDTIME_1">%2$s</xliff:g>)</item>
       <item quantity="few">%1$d минуты (до <xliff:g id="FORMATTEDTIME_1">%2$s</xliff:g>)</item>
diff --git a/core/res/res/values-si-rLK/strings.xml b/core/res/res/values-si-rLK/strings.xml
index fd16451..ca33806 100644
--- a/core/res/res/values-si-rLK/strings.xml
+++ b/core/res/res/values-si-rLK/strings.xml
@@ -967,6 +967,8 @@
     <string name="android_upgrading_title" msgid="1584192285441405746">"Android උත්ශ්‍රේණි වෙමින් පවතී..."</string>
     <string name="android_start_title" msgid="8418054686415318207">"Android ආරම්භ කරමින්…"</string>
     <string name="android_upgrading_fstrim" msgid="8036718871534640010">"ආචයනය ප්‍රශස්තිකරණය කිරීම."</string>
+    <string name="android_upgrading_notification_title" msgid="1619393112444671028">"Android උත්ශ්‍රේණි කරමින්"</string>
+    <string name="android_upgrading_notification_body" msgid="5761201379457064286">"උත්ශ්‍රේණි කිරීම අවසන් වන තෙක් සමහර යෙදුම් නිසි ලෙස ක්‍රියා නොකළ හැකිය"</string>
     <string name="android_upgrading_apk" msgid="7904042682111526169">"<xliff:g id="NUMBER_1">%2$d</xliff:g> කින් <xliff:g id="NUMBER_0">%1$d</xliff:g> වැනි යෙදුම ප්‍රශස්ත කරමින්."</string>
     <string name="android_preparing_apk" msgid="8162599310274079154">"<xliff:g id="APPNAME">%1$s</xliff:g> සූදානම් කරමින්."</string>
     <string name="android_upgrading_starting_apps" msgid="451464516346926713">"යෙදුම් ආරම්භ කරමින්."</string>
diff --git a/core/res/res/values-sk/strings.xml b/core/res/res/values-sk/strings.xml
index a606414..bb5ac2d 100644
--- a/core/res/res/values-sk/strings.xml
+++ b/core/res/res/values-sk/strings.xml
@@ -222,11 +222,9 @@
     <string name="bugreport_title" msgid="2667494803742548533">"Vytvoriť hlásenie chyby"</string>
     <string name="bugreport_message" msgid="398447048750350456">"Týmto zhromaždíte informácie o aktuálnom stave zariadenia. Informácie je potom možné odoslať e-mailom, chvíľu však potrvá, kým bude hlásenie chyby pripravené na odoslanie. Prosíme vás preto o trpezlivosť."</string>
     <string name="bugreport_option_interactive_title" msgid="8635056131768862479">"Interaktívne nahlásenie"</string>
-    <!-- no translation found for bugreport_option_interactive_summary (229299488536107968) -->
-    <skip />
+    <string name="bugreport_option_interactive_summary" msgid="229299488536107968">"Táto možnosť je vhodná pre väčšinu prípadov. Umožňuje sledovať priebeh nahlásenia, zadávať ďalšie podrobnosti o probléme a vytvárať snímky obrazovky. Môžu byť vynechané niektoré menej používané sekcie, ktorých nahlásenie trvá dlho."</string>
     <string name="bugreport_option_full_title" msgid="6354382025840076439">"Úplné nahlásenie"</string>
-    <!-- no translation found for bugreport_option_full_summary (7210859858969115745) -->
-    <skip />
+    <string name="bugreport_option_full_summary" msgid="7210859858969115745">"Táto možnosť slúži na minimalizáciu zásahov do systému, keď zariadenie neodpovedá, je príliš pomalé alebo potrebujete zahrnúť všetky sekcie hlásenia. Neumožňuje zadať ďalšie podrobnosti ani vytvoriť dodatočné snímky obrazovky."</string>
     <plurals name="bugreport_countdown" formatted="false" msgid="6878900193900090368">
       <item quantity="few">Snímka obrazovky pre hlásenie chyby sa vytvorí o <xliff:g id="NUMBER_1">%d</xliff:g> sekundy.</item>
       <item quantity="many">Snímka obrazovky pre hlásenie chyby sa vytvorí o <xliff:g id="NUMBER_1">%d</xliff:g> sekundy.</item>
@@ -874,8 +872,7 @@
       <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> hodín</item>
       <item quantity="one">1 hodina</item>
     </plurals>
-    <!-- no translation found for now_string_shortest (8912796667087856402) -->
-    <skip />
+    <string name="now_string_shortest" msgid="8912796667087856402">"teraz"</string>
     <!-- no translation found for duration_minutes_shortest (598436407511890455) -->
     <!-- no translation found for duration_hours_shortest (8300234116089026299) -->
     <!-- no translation found for duration_days_shortest (1363973360381363510) -->
@@ -982,6 +979,8 @@
     <string name="android_upgrading_title" msgid="1584192285441405746">"Prebieha inovácia systému Android..."</string>
     <string name="android_start_title" msgid="8418054686415318207">"Systém Android sa spúšťa…"</string>
     <string name="android_upgrading_fstrim" msgid="8036718871534640010">"Optimalizuje sa úložisko"</string>
+    <string name="android_upgrading_notification_title" msgid="1619393112444671028">"Prebieha inovácia systému Android"</string>
+    <string name="android_upgrading_notification_body" msgid="5761201379457064286">"Niektoré aplikácie môžu správne fungovať až po dokončení inovácie"</string>
     <string name="android_upgrading_apk" msgid="7904042682111526169">"Prebieha optimalizácia aplikácie <xliff:g id="NUMBER_0">%1$d</xliff:g> z <xliff:g id="NUMBER_1">%2$d</xliff:g>."</string>
     <string name="android_preparing_apk" msgid="8162599310274079154">"Pripravuje sa aplikácia <xliff:g id="APPNAME">%1$s</xliff:g>."</string>
     <string name="android_upgrading_starting_apps" msgid="451464516346926713">"Prebieha spúšťanie aplikácií."</string>
@@ -1523,10 +1522,8 @@
     <string name="package_deleted_device_owner" msgid="7650577387493101353">"Odstránený správcom"</string>
     <string name="battery_saver_description" msgid="1960431123816253034">"S cieľom predĺžiť výdrž batérie zníži šetrič batérie výkonnosť zariadenia a obmedzí vibrácie, služby určovania polohy a dátové prenosy na pozadí. Pošta, čet a ďalšie aplikácie, ktoré sa spoliehajú na synchronizáciu, sa možno nebudú aktualizovať, dokiaľ ich neotvoríte.\n\nPri nabíjaní zariadenia sa šetrič batérie automaticky vypne."</string>
     <string name="data_saver_description" msgid="6015391409098303235">"Ak chcete znížiť spotrebu dát, dátový server zabráni niektorým aplikáciam odosielať alebo prijímať dáta na pozadí. Aplikácia, ktorú momentálne používate, môže pristupovať k dátam, ale môže to robiť menej často. Znamená to, že napríklad obrázky sa nezobrazia, kým na ne neklepnete."</string>
-    <!-- no translation found for data_saver_enable_title (4674073932722787417) -->
-    <skip />
-    <!-- no translation found for data_saver_enable_button (7147735965247211818) -->
-    <skip />
+    <string name="data_saver_enable_title" msgid="4674073932722787417">"Zapnúť Šetrič dát?"</string>
+    <string name="data_saver_enable_button" msgid="7147735965247211818">"Zapnúť"</string>
     <plurals name="zen_mode_duration_minutes_summary" formatted="false" msgid="4367877408072000848">
       <item quantity="few">%1$d minúty (do <xliff:g id="FORMATTEDTIME_1">%2$s</xliff:g>)</item>
       <item quantity="many">%1$d minúty (do <xliff:g id="FORMATTEDTIME_1">%2$s</xliff:g>)</item>
diff --git a/core/res/res/values-sl/strings.xml b/core/res/res/values-sl/strings.xml
index 6d2619d..ce97f05 100644
--- a/core/res/res/values-sl/strings.xml
+++ b/core/res/res/values-sl/strings.xml
@@ -222,11 +222,9 @@
     <string name="bugreport_title" msgid="2667494803742548533">"Ustvari poročilo o napakah"</string>
     <string name="bugreport_message" msgid="398447048750350456">"S tem bodo zbrani podatki o trenutnem stanju naprave, ki bodo poslani v e-poštnem sporočilu. Izvedba poročila o napakah in priprava trajata nekaj časa, zato bodite potrpežljivi."</string>
     <string name="bugreport_option_interactive_title" msgid="8635056131768862479">"Interaktivno poročilo"</string>
-    <!-- no translation found for bugreport_option_interactive_summary (229299488536107968) -->
-    <skip />
+    <string name="bugreport_option_interactive_summary" msgid="229299488536107968">"To možnost uporabite v večini primerov. Omogoča spremljanje poteka poročila, vnos več podrobnosti o težavi in snemanje posnetkov zaslona. Morda bodo izpuščeni nekateri redkeje uporabljani razdelki, za katere je poročanje dolgotrajno."</string>
     <string name="bugreport_option_full_title" msgid="6354382025840076439">"Celotno poročilo"</string>
-    <!-- no translation found for bugreport_option_full_summary (7210859858969115745) -->
-    <skip />
+    <string name="bugreport_option_full_summary" msgid="7210859858969115745">"To možnost uporabite za najmanj motenj sistema, če je naprava neodzivna ali prepočasna oziroma ko potrebujete vse razdelke poročila. Ne omogoča vnosa več podrobnosti ali snemanja dodatnih posnetkov zaslona."</string>
     <plurals name="bugreport_countdown" formatted="false" msgid="6878900193900090368">
       <item quantity="one">Posnetek zaslona za poročilo o napakah bo narejen čez <xliff:g id="NUMBER_1">%d</xliff:g> s.</item>
       <item quantity="two">Posnetek zaslona za poročilo o napakah bo narejen čez <xliff:g id="NUMBER_1">%d</xliff:g> s.</item>
@@ -874,8 +872,7 @@
       <item quantity="few"><xliff:g id="COUNT">%d</xliff:g> ure</item>
       <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> ur</item>
     </plurals>
-    <!-- no translation found for now_string_shortest (8912796667087856402) -->
-    <skip />
+    <string name="now_string_shortest" msgid="8912796667087856402">"zdaj"</string>
     <!-- no translation found for duration_minutes_shortest (598436407511890455) -->
     <!-- no translation found for duration_hours_shortest (8300234116089026299) -->
     <!-- no translation found for duration_days_shortest (1363973360381363510) -->
@@ -982,6 +979,8 @@
     <string name="android_upgrading_title" msgid="1584192285441405746">"Poteka nadgradnja Androida ..."</string>
     <string name="android_start_title" msgid="8418054686415318207">"Android se zaganja …"</string>
     <string name="android_upgrading_fstrim" msgid="8036718871534640010">"Optimiziranje shrambe."</string>
+    <string name="android_upgrading_notification_title" msgid="1619393112444671028">"Poteka nadgradnja Androida."</string>
+    <string name="android_upgrading_notification_body" msgid="5761201379457064286">"Nekatere aplikacije morda ne bodo delovale pravilno, dokler ne bo dokončana nadgradnja."</string>
     <string name="android_upgrading_apk" msgid="7904042682111526169">"Optimiranje aplikacije <xliff:g id="NUMBER_0">%1$d</xliff:g> od <xliff:g id="NUMBER_1">%2$d</xliff:g>."</string>
     <string name="android_preparing_apk" msgid="8162599310274079154">"Pripravljanje aplikacije <xliff:g id="APPNAME">%1$s</xliff:g>."</string>
     <string name="android_upgrading_starting_apps" msgid="451464516346926713">"Zagon aplikacij."</string>
@@ -1523,10 +1522,8 @@
     <string name="package_deleted_device_owner" msgid="7650577387493101353">"Izbrisal skrbnik"</string>
     <string name="battery_saver_description" msgid="1960431123816253034">"Varčevanje z energijo akumulatorja podaljša čas njegovega delovanja tako, da zmanjša zmogljivost delovanja naprave in omeji vibriranje, lokacijske storitve ter prenos večine podatkov v ozadju. Aplikacije za e-pošto, sporočanje in drugo, ki uporabljajo sinhroniziranje, se morda ne posodabljajo, razen če jih odprete.\n\nVarčevanje z energijo akumulatorja se samodejno izklopi med polnjenjem akumulatorja naprave."</string>
     <string name="data_saver_description" msgid="6015391409098303235">"Zaradi zmanjševanja prenesene količine podatkov varčevanje s podatki nekaterim aplikacijam preprečuje, da bi v ozadju pošiljale ali prejemale podatke. Aplikacija, ki jo trenutno uporabljate, lahko dostopa do podatkov, vendar to morda lahko počne manj pogosto. To na primer morda pomeni, da se slike ne prikažejo, dokler se jih ne dotaknete."</string>
-    <!-- no translation found for data_saver_enable_title (4674073932722787417) -->
-    <skip />
-    <!-- no translation found for data_saver_enable_button (7147735965247211818) -->
-    <skip />
+    <string name="data_saver_enable_title" msgid="4674073932722787417">"Vklop varčevanja s podatki?"</string>
+    <string name="data_saver_enable_button" msgid="7147735965247211818">"Vklop"</string>
     <plurals name="zen_mode_duration_minutes_summary" formatted="false" msgid="4367877408072000848">
       <item quantity="one">%d minuto (do <xliff:g id="FORMATTEDTIME_1">%2$s</xliff:g>)</item>
       <item quantity="two">%d minuti (do <xliff:g id="FORMATTEDTIME_1">%2$s</xliff:g>)</item>
diff --git a/core/res/res/values-sq-rAL/strings.xml b/core/res/res/values-sq-rAL/strings.xml
index d6811b4..60a0234 100644
--- a/core/res/res/values-sq-rAL/strings.xml
+++ b/core/res/res/values-sq-rAL/strings.xml
@@ -218,11 +218,9 @@
     <string name="bugreport_title" msgid="2667494803742548533">"Merr raportin e defekteve në kod"</string>
     <string name="bugreport_message" msgid="398447048750350456">"Ky funksion mundëson mbledhjen e informacioneve mbi gjendjen aktuale të pajisjes për ta dërguar si mesazh mail-i. Do të duhet pak kohë nga nisja e raportit të defekteve në kod. Faleminderit për durimin."</string>
     <string name="bugreport_option_interactive_title" msgid="8635056131768862479">"Raport interaktiv"</string>
-    <!-- no translation found for bugreport_option_interactive_summary (229299488536107968) -->
-    <skip />
+    <string name="bugreport_option_interactive_summary" msgid="229299488536107968">"Përdore këtë në shumicën e rrethanave. Të lejon të gjurmosh progresin e raportit dhe të fusësh më shumë detaje rreth problemit dhe të regjistrosh pamje të ekranit. Mund të fshijë disa seksione që përdoren më pak të cilat kërkojnë shumë kohë për t\'u raportuar."</string>
     <string name="bugreport_option_full_title" msgid="6354382025840076439">"Raporti i plotë"</string>
-    <!-- no translation found for bugreport_option_full_summary (7210859858969115745) -->
-    <skip />
+    <string name="bugreport_option_full_summary" msgid="7210859858969115745">"Përdore këtë opsion për interferencë minimale kur pajisja nuk përgjigjet ose është tepër e ngadaltë, ose kur të nevojiten të gjitha seksionet. Nuk të lejon që të fusësh më shumë të dhëna ose të regjistrosh pamje të të tjera ekrani."</string>
     <plurals name="bugreport_countdown" formatted="false" msgid="6878900193900090368">
       <item quantity="other">Marrja e pamjes së ekranit për raportin e defektit në kod në <xliff:g id="NUMBER_1">%d</xliff:g> sekonda.</item>
       <item quantity="one">Marrja e pamjes së ekranit për raportin e defektit në kod në <xliff:g id="NUMBER_0">%d</xliff:g> sekondë.</item>
@@ -860,8 +858,7 @@
       <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> orë</item>
       <item quantity="one">1 orë</item>
     </plurals>
-    <!-- no translation found for now_string_shortest (8912796667087856402) -->
-    <skip />
+    <string name="now_string_shortest" msgid="8912796667087856402">"tani"</string>
     <!-- no translation found for duration_minutes_shortest (598436407511890455) -->
     <!-- no translation found for duration_hours_shortest (8300234116089026299) -->
     <!-- no translation found for duration_days_shortest (1363973360381363510) -->
@@ -968,6 +965,8 @@
     <string name="android_upgrading_title" msgid="1584192285441405746">"\"Androidi\" po përditësohet…"</string>
     <string name="android_start_title" msgid="8418054686415318207">"\"Androidi\" po fillon…"</string>
     <string name="android_upgrading_fstrim" msgid="8036718871534640010">"Po përshtat ruajtjen."</string>
+    <string name="android_upgrading_notification_title" msgid="1619393112444671028">"Android po përmirësohet"</string>
+    <string name="android_upgrading_notification_body" msgid="5761201379457064286">"Disa aplikacione mund të mos funksionojnë si duhet deri sa të përfundojë përmirësimi"</string>
     <string name="android_upgrading_apk" msgid="7904042682111526169">"Po përshtat aplikacionin <xliff:g id="NUMBER_0">%1$d</xliff:g> nga gjithsej <xliff:g id="NUMBER_1">%2$d</xliff:g>."</string>
     <string name="android_preparing_apk" msgid="8162599310274079154">"Po përgatit <xliff:g id="APPNAME">%1$s</xliff:g>."</string>
     <string name="android_upgrading_starting_apps" msgid="451464516346926713">"Aplikacionet e fillimit."</string>
@@ -1501,10 +1500,8 @@
     <string name="package_deleted_device_owner" msgid="7650577387493101353">"U fshi nga administratori yt"</string>
     <string name="battery_saver_description" msgid="1960431123816253034">"Për të përmirësuar jetëgjatësinë e baterisë, opsioni i kursimit të baterisë ul rendimentin e pajisjes tënde si dhe kufizon dridhjet dhe shumicën e të dhënave në sfond. Mail-i, mesazhet dhe aplikacionet e tjera që sinkronizohen automatikisht mund të mos përditësohen pa i hapur.\n\nKursimi i baterisë çaktivizohet automatikisht kur pajisja vihet në ngarkim."</string>
     <string name="data_saver_description" msgid="6015391409098303235">"Për të ndihmuar në reduktimin e përdorimit të të dhënave, \"Kursyesi i të dhënave\" pengon që disa aplikacione të dërgojnë apo të marrin të dhëna në sfond. Një aplikacion që po përdor aktualisht mund të ketë qasje te të dhënat, por këtë mund ta bëjë më rrallë. Kjo mund të nënkuptojë, për shembull, se imazhet nuk shfaqen kur troket mbi to."</string>
-    <!-- no translation found for data_saver_enable_title (4674073932722787417) -->
-    <skip />
-    <!-- no translation found for data_saver_enable_button (7147735965247211818) -->
-    <skip />
+    <string name="data_saver_enable_title" msgid="4674073932722787417">"Të aktivizohet \"Kursyesi i të dhënave\"?"</string>
+    <string name="data_saver_enable_button" msgid="7147735965247211818">"Aktivizo"</string>
     <plurals name="zen_mode_duration_minutes_summary" formatted="false" msgid="4367877408072000848">
       <item quantity="other">Për %1$d minuta (deri në <xliff:g id="FORMATTEDTIME_1">%2$s</xliff:g>)</item>
       <item quantity="one">Për një minutë (deri në <xliff:g id="FORMATTEDTIME_0">%2$s</xliff:g>)</item>
diff --git a/core/res/res/values-sr/strings.xml b/core/res/res/values-sr/strings.xml
index 3263a66..ae21a6e 100644
--- a/core/res/res/values-sr/strings.xml
+++ b/core/res/res/values-sr/strings.xml
@@ -220,11 +220,9 @@
     <string name="bugreport_title" msgid="2667494803742548533">"Направи извештај о грешци"</string>
     <string name="bugreport_message" msgid="398447048750350456">"Овим ће се прикупити информације о тренутном стању уређаја како би биле послате у поруци е-поште. Од започињања извештаја о грешци до тренутка за његово слање проћи ће неко време; будите стрпљиви."</string>
     <string name="bugreport_option_interactive_title" msgid="8635056131768862479">"Интерактив. извештај"</string>
-    <!-- no translation found for bugreport_option_interactive_summary (229299488536107968) -->
-    <skip />
+    <string name="bugreport_option_interactive_summary" msgid="229299488536107968">"Користите ово у већини случајева. То вам омогућава да пратите напредак извештаја, да уносите додатне детаље о проблему и да снимате снимке екрана. Вероватно ће изоставити неке мање коришћене одељке за које прављење извештаја дуго траје."</string>
     <string name="bugreport_option_full_title" msgid="6354382025840076439">"Комплетан извештај"</string>
-    <!-- no translation found for bugreport_option_full_summary (7210859858969115745) -->
-    <skip />
+    <string name="bugreport_option_full_summary" msgid="7210859858969115745">"Користите ову опцију ради минималних системских сметњи када уређај не реагује, преспор је или су вам потребни сви одељци извештаја. Не дозвољава вам унос додатних детаља нити снимање додатних снимака екрана."</string>
     <plurals name="bugreport_countdown" formatted="false" msgid="6878900193900090368">
       <item quantity="one">Направићемо снимак екрана ради извештаја о грешци за <xliff:g id="NUMBER_1">%d</xliff:g> секунду.</item>
       <item quantity="few">Направићемо снимак екрана ради извештаја о грешци за <xliff:g id="NUMBER_1">%d</xliff:g> секунде.</item>
@@ -867,8 +865,7 @@
       <item quantity="few"><xliff:g id="COUNT">%d</xliff:g> сата</item>
       <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> сати</item>
     </plurals>
-    <!-- no translation found for now_string_shortest (8912796667087856402) -->
-    <skip />
+    <string name="now_string_shortest" msgid="8912796667087856402">"сада"</string>
     <!-- no translation found for duration_minutes_shortest (598436407511890455) -->
     <!-- no translation found for duration_hours_shortest (8300234116089026299) -->
     <!-- no translation found for duration_days_shortest (1363973360381363510) -->
@@ -975,6 +972,8 @@
     <string name="android_upgrading_title" msgid="1584192285441405746">"Android се надограђује…"</string>
     <string name="android_start_title" msgid="8418054686415318207">"Android се покреће…"</string>
     <string name="android_upgrading_fstrim" msgid="8036718871534640010">"Меморија се оптимизује."</string>
+    <string name="android_upgrading_notification_title" msgid="1619393112444671028">"Android се надограђује…"</string>
+    <string name="android_upgrading_notification_body" msgid="5761201379457064286">"Неке апликације можда неће исправно функционисати док се надоградња не доврши"</string>
     <string name="android_upgrading_apk" msgid="7904042682111526169">"Оптимизовање апликације <xliff:g id="NUMBER_0">%1$d</xliff:g> од <xliff:g id="NUMBER_1">%2$d</xliff:g>."</string>
     <string name="android_preparing_apk" msgid="8162599310274079154">"Припрема се <xliff:g id="APPNAME">%1$s</xliff:g>."</string>
     <string name="android_upgrading_starting_apps" msgid="451464516346926713">"Покретање апликација."</string>
@@ -1512,10 +1511,8 @@
     <string name="package_deleted_device_owner" msgid="7650577387493101353">"Избрисао је ваш адмиистратор"</string>
     <string name="battery_saver_description" msgid="1960431123816253034">"Да би продужила време трајања батерије, уштеда батерије смањује перформансе уређаја и ограничава вибрацију, услуге локације и већину позадинских података. Имејл, размена порука и друге апликације које се ослањају на синхронизацију можда неће да се ажурирају ако их не отворите.\n\nУштеда батерије се аутоматски искључује када се уређај пуни."</string>
     <string name="data_saver_description" msgid="6015391409098303235">"Да би се смањила потрошња података, Уштеда података спречава неке апликације да шаљу или примају податке у позадини. Апликација коју тренутно користите може да приступа подацима, али ће то чинити ређе. На пример, слике се неће приказивати док их не додирнете."</string>
-    <!-- no translation found for data_saver_enable_title (4674073932722787417) -->
-    <skip />
-    <!-- no translation found for data_saver_enable_button (7147735965247211818) -->
-    <skip />
+    <string name="data_saver_enable_title" msgid="4674073932722787417">"Укључити Уштеду података?"</string>
+    <string name="data_saver_enable_button" msgid="7147735965247211818">"Укључи"</string>
     <plurals name="zen_mode_duration_minutes_summary" formatted="false" msgid="4367877408072000848">
       <item quantity="one">%1$d минут (до <xliff:g id="FORMATTEDTIME_1">%2$s</xliff:g>)</item>
       <item quantity="few">%1$d минута (до <xliff:g id="FORMATTEDTIME_1">%2$s</xliff:g>)</item>
diff --git a/core/res/res/values-sv/strings.xml b/core/res/res/values-sv/strings.xml
index ab1868a..9237270 100644
--- a/core/res/res/values-sv/strings.xml
+++ b/core/res/res/values-sv/strings.xml
@@ -218,11 +218,9 @@
     <string name="bugreport_title" msgid="2667494803742548533">"Skapa felrapport"</string>
     <string name="bugreport_message" msgid="398447048750350456">"Nu hämtas information om aktuell status för enheten, som sedan skickas i ett e-postmeddelade. Det tar en liten stund innan felrapporten är färdig och kan skickas, så vi ber dig ha tålamod."</string>
     <string name="bugreport_option_interactive_title" msgid="8635056131768862479">"Interaktiv rapport"</string>
-    <!-- no translation found for bugreport_option_interactive_summary (229299488536107968) -->
-    <skip />
+    <string name="bugreport_option_interactive_summary" msgid="229299488536107968">"Bör användas i de flesta fall. Då kan du spåra rapportförloppet, ange mer information om problemet och ta skärmdumpar. En del mindre använda avsnitt, som det tar lång tid att rapportera om, kan uteslutas."</string>
     <string name="bugreport_option_full_title" msgid="6354382025840076439">"Fullständig rapport"</string>
-    <!-- no translation found for bugreport_option_full_summary (7210859858969115745) -->
-    <skip />
+    <string name="bugreport_option_full_summary" msgid="7210859858969115745">"Alternativet innebär minsta möjliga störning när enheten inte svarar eller är långsam, eller när alla avsnitt ska ingå i rapporten. Du kan inte ange mer information eller ta ytterligare skärmdumpar."</string>
     <plurals name="bugreport_countdown" formatted="false" msgid="6878900193900090368">
       <item quantity="other">Tar en skärmdump till felrapporten om <xliff:g id="NUMBER_1">%d</xliff:g> sekunder.</item>
       <item quantity="one">Tar en skärmdump till felrapporten om <xliff:g id="NUMBER_0">%d</xliff:g> sekund.</item>
@@ -860,8 +858,7 @@
       <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> timmar</item>
       <item quantity="one">1 timme</item>
     </plurals>
-    <!-- no translation found for now_string_shortest (8912796667087856402) -->
-    <skip />
+    <string name="now_string_shortest" msgid="8912796667087856402">"nu"</string>
     <!-- no translation found for duration_minutes_shortest (598436407511890455) -->
     <!-- no translation found for duration_hours_shortest (8300234116089026299) -->
     <!-- no translation found for duration_days_shortest (1363973360381363510) -->
@@ -968,6 +965,8 @@
     <string name="android_upgrading_title" msgid="1584192285441405746">"Android uppgraderas ..."</string>
     <string name="android_start_title" msgid="8418054686415318207">"Android startar …"</string>
     <string name="android_upgrading_fstrim" msgid="8036718871534640010">"Lagringsutrymmet optimeras."</string>
+    <string name="android_upgrading_notification_title" msgid="1619393112444671028">"Android uppgraderas"</string>
+    <string name="android_upgrading_notification_body" msgid="5761201379457064286">"En del appar kanske inte fungerar som de ska innan uppgraderingen har slutförts"</string>
     <string name="android_upgrading_apk" msgid="7904042682111526169">"Optimerar app <xliff:g id="NUMBER_0">%1$d</xliff:g> av <xliff:g id="NUMBER_1">%2$d</xliff:g>."</string>
     <string name="android_preparing_apk" msgid="8162599310274079154">"<xliff:g id="APPNAME">%1$s</xliff:g> förbereds."</string>
     <string name="android_upgrading_starting_apps" msgid="451464516346926713">"Appar startas."</string>
@@ -1501,10 +1500,8 @@
     <string name="package_deleted_device_owner" msgid="7650577387493101353">"Paketet har raderats av administratören"</string>
     <string name="battery_saver_description" msgid="1960431123816253034">"I batterisparläget reduceras enhetens prestanda så att batteriet ska räcka längre och vibration, platstjänster samt den mesta användningen av bakgrundsdata begränsas. Det kan hända att appar för e-post, sms och annat som kräver synkronisering inte uppdateras förrän du öppnar dem.\n\nBatterisparläget inaktiveras automatiskt när enheten laddas."</string>
     <string name="data_saver_description" msgid="6015391409098303235">"Med databesparing kan du minska dataanvändningen genom att hindra en del appar från att skicka eller ta emot data i bakgrunden. Appar som du använder kan komma åt data, men det sker kanske inte lika ofta. Detta innebär t.ex. att bilder inte visas förrän du trycker på dem."</string>
-    <!-- no translation found for data_saver_enable_title (4674073932722787417) -->
-    <skip />
-    <!-- no translation found for data_saver_enable_button (7147735965247211818) -->
-    <skip />
+    <string name="data_saver_enable_title" msgid="4674073932722787417">"Aktivera Databesparing?"</string>
+    <string name="data_saver_enable_button" msgid="7147735965247211818">"Aktivera"</string>
     <plurals name="zen_mode_duration_minutes_summary" formatted="false" msgid="4367877408072000848">
       <item quantity="other">I %1$d minuter (till kl. <xliff:g id="FORMATTEDTIME_1">%2$s</xliff:g>)</item>
       <item quantity="one">I en minut (till kl. <xliff:g id="FORMATTEDTIME_0">%2$s</xliff:g>)</item>
diff --git a/core/res/res/values-sw/strings.xml b/core/res/res/values-sw/strings.xml
index 055d337..f670455 100644
--- a/core/res/res/values-sw/strings.xml
+++ b/core/res/res/values-sw/strings.xml
@@ -216,11 +216,9 @@
     <string name="bugreport_title" msgid="2667494803742548533">"Chukua ripoti ya hitilafu"</string>
     <string name="bugreport_message" msgid="398447048750350456">"Hii itakusanya maelezo kuhusu hali ya kifaa chako kwa sasa, na itume kama barua pepe. Itachukua muda mfupi tangu ripoti ya hitilafu ianze kuzalishwa hadi iwe tayari kutumwa; vumilia."</string>
     <string name="bugreport_option_interactive_title" msgid="8635056131768862479">"Ripoti ya kushirikiana"</string>
-    <!-- no translation found for bugreport_option_interactive_summary (229299488536107968) -->
-    <skip />
+    <string name="bugreport_option_interactive_summary" msgid="229299488536107968">"Tumia chaguo hili katika hali nyingi. Hukuruhusu kufuatilia jinsi ripoti yako inavyoendelea, kuandika maelezo zaidi kuhusu tatizo na kupiga picha za skrini. Huenda ikaacha baadhi ya sehemu ambazo hazitumiki sana na zinachukua muda mrefu kuripoti."</string>
     <string name="bugreport_option_full_title" msgid="6354382025840076439">"Ripoti kamili"</string>
-    <!-- no translation found for bugreport_option_full_summary (7210859858969115745) -->
-    <skip />
+    <string name="bugreport_option_full_summary" msgid="7210859858969115745">"Tumia chaguo hili ili upunguze kukatizwa kwa mfumo wakati kifaa chako kinapokwama au kinapofanya kazi polepole au unapohitaji sehemu zote za ripoti. Haikuruhusu kuandika maelezo zaidi au kupiga picha zaidi za skrini."</string>
     <plurals name="bugreport_countdown" formatted="false" msgid="6878900193900090368">
       <item quantity="other">Inapiga picha ya skrini ili iripoti hitilafu baada ya sekunde <xliff:g id="NUMBER_1">%d</xliff:g>.</item>
       <item quantity="one">Inapiga picha ya skrini ili iripoti hitilafu baada ya sekunde <xliff:g id="NUMBER_0">%d</xliff:g>.</item>
@@ -858,8 +856,7 @@
       <item quantity="other">Saa <xliff:g id="COUNT">%d</xliff:g></item>
       <item quantity="one">Saa 1</item>
     </plurals>
-    <!-- no translation found for now_string_shortest (8912796667087856402) -->
-    <skip />
+    <string name="now_string_shortest" msgid="8912796667087856402">"sasa"</string>
     <!-- no translation found for duration_minutes_shortest (598436407511890455) -->
     <!-- no translation found for duration_hours_shortest (8300234116089026299) -->
     <!-- no translation found for duration_days_shortest (1363973360381363510) -->
@@ -966,6 +963,8 @@
     <string name="android_upgrading_title" msgid="1584192285441405746">"Toleo jipya la Android linawekwa..."</string>
     <string name="android_start_title" msgid="8418054686415318207">"Inaanzisha Android..."</string>
     <string name="android_upgrading_fstrim" msgid="8036718871534640010">"Inaboresha hifadhi."</string>
+    <string name="android_upgrading_notification_title" msgid="1619393112444671028">"Tunasasisha Android"</string>
+    <string name="android_upgrading_notification_body" msgid="5761201379457064286">"Huenda baadhi ya programu zisifanye kazi vizuri hadi itakapomaliza kusasisha"</string>
     <string name="android_upgrading_apk" msgid="7904042682111526169">"Inaboresha programu <xliff:g id="NUMBER_0">%1$d</xliff:g> kutoka <xliff:g id="NUMBER_1">%2$d</xliff:g>."</string>
     <string name="android_preparing_apk" msgid="8162599310274079154">"Inaandaa <xliff:g id="APPNAME">%1$s</xliff:g>."</string>
     <string name="android_upgrading_starting_apps" msgid="451464516346926713">"Programu zinaanza"</string>
@@ -1499,10 +1498,8 @@
     <string name="package_deleted_device_owner" msgid="7650577387493101353">"Kilifutwa na msimamizi wako"</string>
     <string name="battery_saver_description" msgid="1960431123816253034">"Kusaidia kuboresha muda wa matumizi ya betri, inayookoa betri hupunguza utendaji wa kifaa chako na kupunguza mtetemo, huduma za utambuzi wa mahali, na data nyingi ya chini chini. Barua pepe, ujumbe na programu nyingine zinazotege,ea usawazishaji huenda zisisasishwe usipozifungua.\n\nInayookoa betri hujizima kiotomatiki kifaa chako kinapokuwa kinachaji."</string>
     <string name="data_saver_description" msgid="6015391409098303235">"Ili kusaidia kupunguza matumizi ya data, Kiokoa Data huzuia baadhi ya programu kupokea na kutuma data chini chini. Programu ambayo unatumia sasa inaweza kufikia data, lakini si kila wakati. Kwa mfano, haitaonyesha picha hadi utakapozigonga."</string>
-    <!-- no translation found for data_saver_enable_title (4674073932722787417) -->
-    <skip />
-    <!-- no translation found for data_saver_enable_button (7147735965247211818) -->
-    <skip />
+    <string name="data_saver_enable_title" msgid="4674073932722787417">"Ungependa Kuwasha Kiokoa Data?"</string>
+    <string name="data_saver_enable_button" msgid="7147735965247211818">"Washa"</string>
     <plurals name="zen_mode_duration_minutes_summary" formatted="false" msgid="4367877408072000848">
       <item quantity="other">Kwa dakika %1$d (hadi <xliff:g id="FORMATTEDTIME_1">%2$s</xliff:g>)</item>
       <item quantity="one">Kwa dakika moja (hadi <xliff:g id="FORMATTEDTIME_0">%2$s</xliff:g>)</item>
diff --git a/core/res/res/values-sw720dp/config.xml b/core/res/res/values-sw720dp/config.xml
index 1f5791a..9792835 100644
--- a/core/res/res/values-sw720dp/config.xml
+++ b/core/res/res/values-sw720dp/config.xml
@@ -19,7 +19,4 @@
          used for picking activities to handle an intent. -->
     <integer name="config_maxResolverActivityColumns">4</integer>
 
-    <!-- Enable cascading submenus. -->
-    <bool name="config_enableCascadingSubmenus">true</bool>
-
 </resources>
diff --git a/core/res/res/values-ta-rIN/strings.xml b/core/res/res/values-ta-rIN/strings.xml
index f3730c5..e1867ce 100644
--- a/core/res/res/values-ta-rIN/strings.xml
+++ b/core/res/res/values-ta-rIN/strings.xml
@@ -218,11 +218,9 @@
     <string name="bugreport_title" msgid="2667494803742548533">"பிழை அறிக்கையை எடு"</string>
     <string name="bugreport_message" msgid="398447048750350456">"உங்கள் நடப்புச் சாதன நிலையை மின்னஞ்சல் செய்தியாக அனுப்ப, அது குறித்த தகவலை இது சேகரிக்கும். பிழை அறிக்கையைத் தொடங்குவதில் இருந்து, அது அனுப்புவதற்குத் தயாராகும் வரை, இதற்குச் சிறிது நேரம் ஆகும்; பொறுமையாகக் காத்திருக்கவும்."</string>
     <string name="bugreport_option_interactive_title" msgid="8635056131768862479">"ஊடாடத்தக்க அறிக்கை"</string>
-    <!-- no translation found for bugreport_option_interactive_summary (229299488536107968) -->
-    <skip />
+    <string name="bugreport_option_interactive_summary" msgid="229299488536107968">"பெரும்பாலான சூழ்நிலைகளில் இதைப் பயன்படுத்தவும். இது அறிக்கையின் நிலையைக் கண்காணிக்க, சிக்கலைப் பற்றி மேலும் விவரங்களை உள்ளிட மற்றும் ஸ்கிரீன் ஷாட்டுகளை எடுக்க அனுமதிக்கும். அறிக்கையிட நீண்ட நேரம் எடுக்கக்கூடிய குறைவாகப் பயன்படுத்தப்படும் பிரிவுகள் சிலவற்றை இது தவிர்க்கக்கூடும்."</string>
     <string name="bugreport_option_full_title" msgid="6354382025840076439">"முழு அறிக்கை"</string>
-    <!-- no translation found for bugreport_option_full_summary (7210859858969115745) -->
-    <skip />
+    <string name="bugreport_option_full_summary" msgid="7210859858969115745">"சாதனம் செயல்படாமல் இருக்கும் போது அல்லது மெதுவாகச் செயல்படும் போது அல்லது உங்களுக்கு எல்லா அறிக்கைப் பிரிவுகளும் தேவைப்படும் போது குறைவான முறைமைக் குறுக்கீடுகளுக்கு, இந்த விருப்பத்தைப் பயன்படுத்தவும். இந்த விருப்பமானது மேலும் விவரங்களை உள்ளிடவோ கூடுதல் ஸ்கிரீன் ஷாட்டுகளை எடுக்கவோ அனுமதிக்காது."</string>
     <plurals name="bugreport_countdown" formatted="false" msgid="6878900193900090368">
       <item quantity="other"><xliff:g id="NUMBER_1">%d</xliff:g> வினாடிகளில் பிழை அறிக்கைக்கான ஸ்கிரீன் ஷாட் எடுக்கப்படும்.</item>
       <item quantity="one"><xliff:g id="NUMBER_0">%d</xliff:g> வினாடியில் பிழை அறிக்கைக்கான ஸ்கிரீன் ஷாட் எடுக்கப்படும்.</item>
@@ -860,8 +858,7 @@
       <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> மணிநேரம்</item>
       <item quantity="one">1 மணிநேரம்</item>
     </plurals>
-    <!-- no translation found for now_string_shortest (8912796667087856402) -->
-    <skip />
+    <string name="now_string_shortest" msgid="8912796667087856402">"இப்போது"</string>
     <!-- no translation found for duration_minutes_shortest (598436407511890455) -->
     <!-- no translation found for duration_hours_shortest (8300234116089026299) -->
     <!-- no translation found for duration_days_shortest (1363973360381363510) -->
@@ -968,6 +965,8 @@
     <string name="android_upgrading_title" msgid="1584192285441405746">"Android மேம்படுத்தப்படுகிறது…"</string>
     <string name="android_start_title" msgid="8418054686415318207">"Android துவங்குகிறது..."</string>
     <string name="android_upgrading_fstrim" msgid="8036718871534640010">"சேமிப்பகத்தை உகந்ததாக்குகிறது."</string>
+    <string name="android_upgrading_notification_title" msgid="1619393112444671028">"Android மேம்படுத்தப்படுகிறது"</string>
+    <string name="android_upgrading_notification_body" msgid="5761201379457064286">"மேம்படுத்துவது முடியும் வரை, சில பயன்பாடுகள் சரியாக வேலைசெய்யாமல் போகக்கூடும்"</string>
     <string name="android_upgrading_apk" msgid="7904042682111526169">"<xliff:g id="NUMBER_0">%1$d</xliff:g> / <xliff:g id="NUMBER_1">%2$d</xliff:g> பயன்பாட்டை ஒருங்கிணைக்கிறது."</string>
     <string name="android_preparing_apk" msgid="8162599310274079154">"<xliff:g id="APPNAME">%1$s</xliff:g>ஐத் தயார்செய்கிறது."</string>
     <string name="android_upgrading_starting_apps" msgid="451464516346926713">"பயன்பாடுகள் தொடங்கப்படுகின்றன."</string>
@@ -1501,10 +1500,8 @@
     <string name="package_deleted_device_owner" msgid="7650577387493101353">"நிர்வாகி நீக்கிவிட்டார்"</string>
     <string name="battery_saver_description" msgid="1960431123816253034">"பேட்டரி ஆயுளை மேம்படுத்த, பேட்டரி சேமிப்பான் உங்கள் சாதனத்தின் செயல்திறனைக் குறைத்து, அதிர்வு, இடச் சேவைகள் மற்றும் பெரும்பாலான பின்புலத் தரவு போன்றவற்றைக் கட்டுப்படுத்துகிறது. ஒத்திசைவைச் சார்ந்துள்ள மின்னஞ்சல், செய்தியிடல் மற்றும் பிற பயன்பாடுகள் திறக்கும்வரை, அவை புதுப்பிக்கப்படாமல் இருக்கலாம்.\n\nஉங்கள் ஃபோன் சார்ஜ் செய்யப்படும்போது, பேட்டரி சேமிப்பான் தானாகவே முடங்கும்."</string>
     <string name="data_saver_description" msgid="6015391409098303235">"தரவுப் பயன்பாட்டைக் குறைப்பதற்கு உதவ, பின்புலத்தில் தரவை அனுப்புவது அல்லது பெறுவதிலிருந்து சில பயன்பாடுகளைத் தரவுச் சேமிப்பான் தடுக்கும். தற்போது பயன்படுத்தும் பயன்பாடானது தரவை அணுகலாம், ஆனால் அடிக்கடி அல்ல. எடுத்துக்காட்டாக, படங்களை நீங்கள் தட்டும் வரை, அவை காட்டப்படாது."</string>
-    <!-- no translation found for data_saver_enable_title (4674073932722787417) -->
-    <skip />
-    <!-- no translation found for data_saver_enable_button (7147735965247211818) -->
-    <skip />
+    <string name="data_saver_enable_title" msgid="4674073932722787417">"தரவு சேமிப்பானை இயக்கவா?"</string>
+    <string name="data_saver_enable_button" msgid="7147735965247211818">"இயக்கு"</string>
     <plurals name="zen_mode_duration_minutes_summary" formatted="false" msgid="4367877408072000848">
       <item quantity="other">%1$d நிமிடங்களுக்கு (<xliff:g id="FORMATTEDTIME_1">%2$s</xliff:g> வரை)</item>
       <item quantity="one">ஒரு நிமிடத்திற்கு (<xliff:g id="FORMATTEDTIME_0">%2$s</xliff:g> வரை)</item>
diff --git a/core/res/res/values-te-rIN/strings.xml b/core/res/res/values-te-rIN/strings.xml
index a55331c..8375209 100644
--- a/core/res/res/values-te-rIN/strings.xml
+++ b/core/res/res/values-te-rIN/strings.xml
@@ -218,11 +218,9 @@
     <string name="bugreport_title" msgid="2667494803742548533">"బగ్ నివేదికను సిద్ధం చేయి"</string>
     <string name="bugreport_message" msgid="398447048750350456">"ఇది ఇ-మెయిల్ సందేశం రూపంలో పంపడానికి మీ ప్రస్తుత పరికర స్థితి గురించి సమాచారాన్ని సేకరిస్తుంది. బగ్ నివేదికను ప్రారంభించడం మొదలుకొని పంపడానికి సిద్ధం చేసే వరకు ఇందుకు కొంత సమయం పడుతుంది; దయచేసి ఓపిక పట్టండి."</string>
     <string name="bugreport_option_interactive_title" msgid="8635056131768862479">"ప్రభావశీల నివేదిక"</string>
-    <!-- no translation found for bugreport_option_interactive_summary (229299488536107968) -->
-    <skip />
+    <string name="bugreport_option_interactive_summary" msgid="229299488536107968">"చాలా సందర్భాల్లో దీన్ని ఉపయోగించండి. ఇది నివేదిక ప్రోగ్రెస్‌ను ట్రాక్ చేయడానికి, సమస్య గురించి మరిన్ని వివరాలను నమోదు చేయడానికి మరియు స్క్రీన్‌షాట్‌లు తీయడానికి మిమ్మల్ని అనుమతిస్తుంది. ఇది నివేదించడానికి ఎక్కువ సమయం పట్టే తక్కువ వినియోగ విభాగాలను విడిచిపెట్టవచ్చు."</string>
     <string name="bugreport_option_full_title" msgid="6354382025840076439">"పూర్తి నివేదిక"</string>
-    <!-- no translation found for bugreport_option_full_summary (7210859858969115745) -->
-    <skip />
+    <string name="bugreport_option_full_summary" msgid="7210859858969115745">"మీ పరికరం ప్రతిస్పందనరహితంగా ఉన్నప్పుడు లేదా చాలా నెమ్మదిగా ఉన్నప్పుడు లేదా మీకు అన్ని నివేదిక విభాగాలు అవసరమైనప్పుడు సిస్టమ్‌కి అంతరాయ స్థాయి కనిష్టంగా ఉండేలా చేయడానికి ఈ ఎంపిక ఉపయోగించండి. ఇది మరిన్ని వివరాలను నమోదు చేయడానికి లేదా అదనపు స్క్రీన్‌షాట్‌లు తీయడానికి మిమ్మల్ని అనుమతించదు."</string>
     <plurals name="bugreport_countdown" formatted="false" msgid="6878900193900090368">
       <item quantity="other">బగ్ నివేదిక కోసం <xliff:g id="NUMBER_1">%d</xliff:g> సెకన్లలో స్క్రీన్‌షాట్ తీయబోతోంది.</item>
       <item quantity="one">బగ్ నివేదిక కోసం <xliff:g id="NUMBER_0">%d</xliff:g> సెకనులో స్క్రీన్‌షాట్ తీయబోతోంది.</item>
@@ -860,8 +858,7 @@
       <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> గంటలు</item>
       <item quantity="one">1 గంట</item>
     </plurals>
-    <!-- no translation found for now_string_shortest (8912796667087856402) -->
-    <skip />
+    <string name="now_string_shortest" msgid="8912796667087856402">"ఇప్పుడు"</string>
     <!-- no translation found for duration_minutes_shortest (598436407511890455) -->
     <!-- no translation found for duration_hours_shortest (8300234116089026299) -->
     <!-- no translation found for duration_days_shortest (1363973360381363510) -->
@@ -968,6 +965,8 @@
     <string name="android_upgrading_title" msgid="1584192285441405746">"Android అప్‌గ్రేడ్ అవుతోంది…"</string>
     <string name="android_start_title" msgid="8418054686415318207">"Android ప్రారంభమవుతోంది…"</string>
     <string name="android_upgrading_fstrim" msgid="8036718871534640010">"నిల్వను అనుకూలపరుస్తోంది."</string>
+    <string name="android_upgrading_notification_title" msgid="1619393112444671028">"Android అప్‌గ్రేడ్ అవుతోంది"</string>
+    <string name="android_upgrading_notification_body" msgid="5761201379457064286">"అప్‌గ్రేడ్ పూర్తయ్యే వరకు కొన్ని అనువర్తనాలు సరిగ్గా పని చేయకపోవచ్చు"</string>
     <string name="android_upgrading_apk" msgid="7904042682111526169">"<xliff:g id="NUMBER_1">%2$d</xliff:g>లో <xliff:g id="NUMBER_0">%1$d</xliff:g> అనువర్తనాన్ని అనుకూలీకరిస్తోంది."</string>
     <string name="android_preparing_apk" msgid="8162599310274079154">"<xliff:g id="APPNAME">%1$s</xliff:g>ని సిద్ధం చేస్తోంది."</string>
     <string name="android_upgrading_starting_apps" msgid="451464516346926713">"అనువర్తనాలను ప్రారంభిస్తోంది."</string>
@@ -1501,10 +1500,8 @@
     <string name="package_deleted_device_owner" msgid="7650577387493101353">"మీ నిర్వాహకులు తొలగించారు"</string>
     <string name="battery_saver_description" msgid="1960431123816253034">"బ్యాటరీ జీవితకాలాన్ని మెరుగుపరచడంలో సహాయపడటానికి, బ్యాటరీ సేవర్ మీ పరికరం పనితీరును తగ్గిస్తుంది మరియు వైబ్రేషన్‌ను, స్థాన సేవలను మరియు ఎక్కువ నేపథ్య డేటాను పరిమితం చేస్తుంది. ఇమెయిల్, మెసేజింగ్ మరియు సమకాలీకరణపై ఆధారపడే ఇతర అనువర్తనాలు మీరు వాటిని తెరిస్తే మినహా నవీకరించబడవు.\n\nమీ పరికరం ఛార్జ్ అవుతున్నప్పుడు బ్యాటరీ సేవర్ స్వయంచాలకంగా ఆఫ్ అవుతుంది."</string>
     <string name="data_saver_description" msgid="6015391409098303235">"డేటా వినియోగాన్ని తగ్గించడంలో సహాయకరంగా ఉండటానికి, డేటా సేవర్ కొన్ని అనువర్తనాలను నేపథ్యంలో డేటాను పంపకుండా లేదా స్వీకరించకుండా నిరోధిస్తుంది. మీరు ప్రస్తుతం ఉపయోగిస్తున్న అనువర్తనం డేటాను ప్రాప్యత చేయగలదు కానీ అలా అరుదుగా చేయవచ్చు. అంటే, ఉదాహరణకు, మీరు ఆ చిత్రాలను నొక్కే వరకు అవి ప్రదర్శించబడవు."</string>
-    <!-- no translation found for data_saver_enable_title (4674073932722787417) -->
-    <skip />
-    <!-- no translation found for data_saver_enable_button (7147735965247211818) -->
-    <skip />
+    <string name="data_saver_enable_title" msgid="4674073932722787417">"డేటా సేవర్‌ను ఆన్ చేయాలా?"</string>
+    <string name="data_saver_enable_button" msgid="7147735965247211818">"ఆన్ చేయి"</string>
     <plurals name="zen_mode_duration_minutes_summary" formatted="false" msgid="4367877408072000848">
       <item quantity="other">%1$d నిమిషాల పాటు (<xliff:g id="FORMATTEDTIME_1">%2$s</xliff:g> వరకు)</item>
       <item quantity="one">ఒక నిమిషం పాటు (<xliff:g id="FORMATTEDTIME_0">%2$s</xliff:g> వరకు)</item>
diff --git a/core/res/res/values-th/strings.xml b/core/res/res/values-th/strings.xml
index 87bd7df..b277845 100644
--- a/core/res/res/values-th/strings.xml
+++ b/core/res/res/values-th/strings.xml
@@ -965,6 +965,8 @@
     <string name="android_upgrading_title" msgid="1584192285441405746">"กำลังอัปเกรด Android ..."</string>
     <string name="android_start_title" msgid="8418054686415318207">"Android กำลังเริ่มต้น…"</string>
     <string name="android_upgrading_fstrim" msgid="8036718871534640010">"กำลังเพิ่มประสิทธิภาพพื้นที่จัดเก็บข้อมูล"</string>
+    <string name="android_upgrading_notification_title" msgid="1619393112444671028">"Android กำลังอัปเกรด"</string>
+    <string name="android_upgrading_notification_body" msgid="5761201379457064286">"แอปบางแอปอาจทำงานไม่ถูกต้องจนกว่าจะอัปเกรดเสร็จ"</string>
     <string name="android_upgrading_apk" msgid="7904042682111526169">"กำลังเพิ่มประสิทธิภาพแอปพลิเคชัน <xliff:g id="NUMBER_0">%1$d</xliff:g> จาก <xliff:g id="NUMBER_1">%2$d</xliff:g> รายการ"</string>
     <string name="android_preparing_apk" msgid="8162599310274079154">"กำลังเตรียม <xliff:g id="APPNAME">%1$s</xliff:g>"</string>
     <string name="android_upgrading_starting_apps" msgid="451464516346926713">"กำลังเริ่มต้นแอปพลิเคชัน"</string>
diff --git a/core/res/res/values-tl/strings.xml b/core/res/res/values-tl/strings.xml
index 1c90be1..933cab6 100644
--- a/core/res/res/values-tl/strings.xml
+++ b/core/res/res/values-tl/strings.xml
@@ -218,11 +218,9 @@
     <string name="bugreport_title" msgid="2667494803742548533">"Kunin ang ulat sa bug"</string>
     <string name="bugreport_message" msgid="398447048750350456">"Mangongolekta ito ng impormasyon tungkol sa kasalukuyang katayuan ng iyong device, na ipapadala bilang mensaheng e-mail. Gugugol ito ng kaunting oras mula sa pagsisimula ng ulat sa bug hanggang sa handa na itong maipadala; mangyaring magpasensya."</string>
     <string name="bugreport_option_interactive_title" msgid="8635056131768862479">"Interactive na ulat"</string>
-    <!-- no translation found for bugreport_option_interactive_summary (229299488536107968) -->
-    <skip />
+    <string name="bugreport_option_interactive_summary" msgid="229299488536107968">"Gamitin ito sa karamihan ng sitwasyon. Nagbibigay-daan ito sa iyo na masubaybayan ang pag-usad ng ulat, makapaglagay ng higit pang mga detalye tungkol sa problema, at makakuha ng mga screenshot. Maaari itong mag-alis ng ilan sa mga hindi masyadong ginagamit na seksyon na nangangailangan ng mahabang panahon upang iulat."</string>
     <string name="bugreport_option_full_title" msgid="6354382025840076439">"Buong ulat"</string>
-    <!-- no translation found for bugreport_option_full_summary (7210859858969115745) -->
-    <skip />
+    <string name="bugreport_option_full_summary" msgid="7210859858969115745">"Gamitin ang opsyong ito para sa kaunting pagkaantala sa system kapag hindi tumutugon o masyadong mabagal ang iyong device, o kapag kailangan mo ang lahat ng seksyon ng ulat. Hindi ka pinapayagan na maglagay ng iba pang mga detalye o kumuha ng mga karagdagang screenshot."</string>
     <plurals name="bugreport_countdown" formatted="false" msgid="6878900193900090368">
       <item quantity="one">Kukuha ng screenshot para sa ulat ng bug sa loob ng <xliff:g id="NUMBER_1">%d</xliff:g> segundo.</item>
       <item quantity="other">Kukuha ng screenshot para sa ulat ng bug sa loob ng <xliff:g id="NUMBER_1">%d</xliff:g> na segundo.</item>
@@ -860,8 +858,7 @@
       <item quantity="one"><xliff:g id="COUNT">%d</xliff:g> oras</item>
       <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> na oras</item>
     </plurals>
-    <!-- no translation found for now_string_shortest (8912796667087856402) -->
-    <skip />
+    <string name="now_string_shortest" msgid="8912796667087856402">"ngayon"</string>
     <!-- no translation found for duration_minutes_shortest (598436407511890455) -->
     <!-- no translation found for duration_hours_shortest (8300234116089026299) -->
     <!-- no translation found for duration_days_shortest (1363973360381363510) -->
@@ -968,6 +965,8 @@
     <string name="android_upgrading_title" msgid="1584192285441405746">"Nag-a-upgrade ang Android…"</string>
     <string name="android_start_title" msgid="8418054686415318207">"Nagsisimula ang Android…"</string>
     <string name="android_upgrading_fstrim" msgid="8036718871534640010">"Ino-optimize ang storage."</string>
+    <string name="android_upgrading_notification_title" msgid="1619393112444671028">"Nag-a-upgrade ang Android"</string>
+    <string name="android_upgrading_notification_body" msgid="5761201379457064286">"Maaaring hindi gumana nang maayos ang ilang app hangga\'t hindi pa natatapos ang pag-upgrade"</string>
     <string name="android_upgrading_apk" msgid="7904042682111526169">"Ino-optimize ang app <xliff:g id="NUMBER_0">%1$d</xliff:g> ng <xliff:g id="NUMBER_1">%2$d</xliff:g>."</string>
     <string name="android_preparing_apk" msgid="8162599310274079154">"Ihinahanda ang <xliff:g id="APPNAME">%1$s</xliff:g>."</string>
     <string name="android_upgrading_starting_apps" msgid="451464516346926713">"Sinisimulan ang apps."</string>
@@ -1501,10 +1500,8 @@
     <string name="package_deleted_device_owner" msgid="7650577387493101353">"Na-delete ng iyong administrator"</string>
     <string name="battery_saver_description" msgid="1960431123816253034">"Upang matulungang pagbutihin ang tagal ng baterya, binabawasan ng pangtipid ng baterya ang pagganap ng iyong device at nililimitahan ang pag-vibrate, mga serbisyo ng lokasyon at karamihan sa data ng background. Maaaring hindi mag-update ang email, pagmemensahe at iba pang mga app na umaasa sa pagsi-sync maliban kung buksan mo ang mga iyon.\n\nAwtomatikong nag-o-off ang pangtipid ng baterya kapag nagcha-charge ang iyong device."</string>
     <string name="data_saver_description" msgid="6015391409098303235">"Upang makatulong na mabawasan ang paggamit ng data, pinipigilan ng Data Saver ang ilang app na magpadala o makatanggap ng data sa background. Maaaring mag-access ng data ang isang app na ginagamit mo sa kasalukuyan, ngunit mas bihira na nito magagawa iyon. Halimbawa, maaaring hindi lumabas ang mga larawan hangga\'t hindi mo nata-tap ang mga ito."</string>
-    <!-- no translation found for data_saver_enable_title (4674073932722787417) -->
-    <skip />
-    <!-- no translation found for data_saver_enable_button (7147735965247211818) -->
-    <skip />
+    <string name="data_saver_enable_title" msgid="4674073932722787417">"I-on ang Data Saver?"</string>
+    <string name="data_saver_enable_button" msgid="7147735965247211818">"I-on"</string>
     <plurals name="zen_mode_duration_minutes_summary" formatted="false" msgid="4367877408072000848">
       <item quantity="one">Sa loob ng %1$d minuto (hanggang <xliff:g id="FORMATTEDTIME_1">%2$s</xliff:g>)</item>
       <item quantity="other">Sa loob ng %1$d na minuto (hanggang <xliff:g id="FORMATTEDTIME_1">%2$s</xliff:g>)</item>
diff --git a/core/res/res/values-tr/strings.xml b/core/res/res/values-tr/strings.xml
index 50acbcb..ddece4f 100644
--- a/core/res/res/values-tr/strings.xml
+++ b/core/res/res/values-tr/strings.xml
@@ -218,11 +218,9 @@
     <string name="bugreport_title" msgid="2667494803742548533">"Hata raporu al"</string>
     <string name="bugreport_message" msgid="398447048750350456">"Bu rapor, e-posta iletisi olarak göndermek üzere cihazınızın şu anki durumuyla ilgili bilgi toplar. Hata raporu başlatıldıktan sonra hazır olması biraz zaman alabilir, lütfen sabırlı olun."</string>
     <string name="bugreport_option_interactive_title" msgid="8635056131768862479">"Etkileşimli rapor"</string>
-    <!-- no translation found for bugreport_option_interactive_summary (229299488536107968) -->
-    <skip />
+    <string name="bugreport_option_interactive_summary" msgid="229299488536107968">"Çoğu durumda bunu kullanın. Bu seçenek, raporun ilerleme durumunu takip etmenize, sorunla ilgili daha fazla ayrıntı girmenize ve ekran görüntüleri almanıza olanak tanır. Rapor edilmesi uzun süren ve az kullanılan bazı bölümleri yok sayabilir."</string>
     <string name="bugreport_option_full_title" msgid="6354382025840076439">"Tam rapor"</string>
-    <!-- no translation found for bugreport_option_full_summary (7210859858969115745) -->
-    <skip />
+    <string name="bugreport_option_full_summary" msgid="7210859858969115745">"Cihazınız yanıt vermediğinde veya çok yavaş çalıştığında ya da tüm rapor bölümlerine ihtiyacınız olduğunda, sisteme müdahaleyi en aza indirmek için bu seçeneği kullanın. Daha fazla ayrıntı girmenize veya başka ekran görüntüleri almanıza izin vermez."</string>
     <plurals name="bugreport_countdown" formatted="false" msgid="6878900193900090368">
       <item quantity="other"><xliff:g id="NUMBER_1">%d</xliff:g> saniye içinde hata raporu ekran görüntüsü alınıyor.</item>
       <item quantity="one">Hata raporu ekran görüntüsü <xliff:g id="NUMBER_0">%d</xliff:g> saniye içinde alınacak.</item>
@@ -860,8 +858,7 @@
       <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> saat</item>
       <item quantity="one">1 saat</item>
     </plurals>
-    <!-- no translation found for now_string_shortest (8912796667087856402) -->
-    <skip />
+    <string name="now_string_shortest" msgid="8912796667087856402">"şimdi"</string>
     <!-- no translation found for duration_minutes_shortest (598436407511890455) -->
     <!-- no translation found for duration_hours_shortest (8300234116089026299) -->
     <!-- no translation found for duration_days_shortest (1363973360381363510) -->
@@ -968,6 +965,8 @@
     <string name="android_upgrading_title" msgid="1584192285441405746">"Android yeni sürüme geçiriliyor..."</string>
     <string name="android_start_title" msgid="8418054686415318207">"Android başlatılıyor…"</string>
     <string name="android_upgrading_fstrim" msgid="8036718871534640010">"Depolama optimize ediliyor."</string>
+    <string name="android_upgrading_notification_title" msgid="1619393112444671028">"Android yeni sürüme geçiriliyor"</string>
+    <string name="android_upgrading_notification_body" msgid="5761201379457064286">"Yeni sürüme geçiş işlemi tamamlanana kadar bazı uygulamalar düzgün çalışmayabilir"</string>
     <string name="android_upgrading_apk" msgid="7904042682111526169">"<xliff:g id="NUMBER_0">%1$d</xliff:g>/<xliff:g id="NUMBER_1">%2$d</xliff:g> uygulama optimize ediliyor."</string>
     <string name="android_preparing_apk" msgid="8162599310274079154">"<xliff:g id="APPNAME">%1$s</xliff:g> hazırlanıyor."</string>
     <string name="android_upgrading_starting_apps" msgid="451464516346926713">"Uygulamalar başlatılıyor"</string>
@@ -1501,10 +1500,8 @@
     <string name="package_deleted_device_owner" msgid="7650577387493101353">"Yöneticiniz tarafından silindi"</string>
     <string name="battery_saver_description" msgid="1960431123816253034">"Pil tasarrufu özelliği, pil ömrünü iyileştirmeye yardımcı olmak için cihazın performansını düşürür, titreşimi, konum hizmetlerini ve arka plan verilerinin çoğunu sınırlar. Senkronizasyona dayalı olarak çalışan e-posta, mesajlaşma uygulamaları ve diğer uygulamalar, bunları açmadığınız sürece güncellenmeyebilir.\n\nCihazınız şarj olurken pil tasarrufu otomatik olarak kapatılır."</string>
     <string name="data_saver_description" msgid="6015391409098303235">"Veri kullanımını azaltmaya yardımcı olması için Veri Tasarrufu, bazı uygulamaların arka planda veri göndermesini veya almasını engeller. Şu anda kullandığınız bir uygulama veri bağlantısına erişebilir, ancak bunu daha seyrek yapabilir. Bu durumda örneğin, siz resimlere dokunmadan resimler görüntülenmez."</string>
-    <!-- no translation found for data_saver_enable_title (4674073932722787417) -->
-    <skip />
-    <!-- no translation found for data_saver_enable_button (7147735965247211818) -->
-    <skip />
+    <string name="data_saver_enable_title" msgid="4674073932722787417">"Veri Tasarrufu açılsın mı?"</string>
+    <string name="data_saver_enable_button" msgid="7147735965247211818">"Aç"</string>
     <plurals name="zen_mode_duration_minutes_summary" formatted="false" msgid="4367877408072000848">
       <item quantity="other">%1$d dakika için (şu saate kadar: <xliff:g id="FORMATTEDTIME_1">%2$s</xliff:g>)</item>
       <item quantity="one">Bir dakika için (şu saate kadar: <xliff:g id="FORMATTEDTIME_0">%2$s</xliff:g>)</item>
diff --git a/core/res/res/values-uk/strings.xml b/core/res/res/values-uk/strings.xml
index 79eb565..758cc1c 100644
--- a/core/res/res/values-uk/strings.xml
+++ b/core/res/res/values-uk/strings.xml
@@ -222,11 +222,9 @@
     <string name="bugreport_title" msgid="2667494803742548533">"Звіт про помилку"</string>
     <string name="bugreport_message" msgid="398447048750350456">"Інформація про поточний стан вашого пристрою буде зібрана й надіслана електронною поштою. Підготовка звіту триватиме певний час."</string>
     <string name="bugreport_option_interactive_title" msgid="8635056131768862479">"Інтерактивний звіт"</string>
-    <!-- no translation found for bugreport_option_interactive_summary (229299488536107968) -->
-    <skip />
+    <string name="bugreport_option_interactive_summary" msgid="229299488536107968">"Підходить для більшості випадків. Можна відстежувати, як створюється звіт, вводити більше деталей про проблему та робити знімки екрана. Можуть опускатися деякі розділи, які рідко використовуються, але довго створюються."</string>
     <string name="bugreport_option_full_title" msgid="6354382025840076439">"Повний звіт"</string>
-    <!-- no translation found for bugreport_option_full_summary (7210859858969115745) -->
-    <skip />
+    <string name="bugreport_option_full_summary" msgid="7210859858969115745">"Підходить для мінімального втручання в систему, коли пристрій не відповідає, працює повільно або вам потрібні всі розділи звіту. Не можна вводити більше деталей або робити додаткові знімки екрана."</string>
     <plurals name="bugreport_countdown" formatted="false" msgid="6878900193900090368">
       <item quantity="one">Знімок екрана для звіту про помилки буде зроблено через <xliff:g id="NUMBER_1">%d</xliff:g> секунду.</item>
       <item quantity="few">Знімок екрана для звіту про помилки буде зроблено через <xliff:g id="NUMBER_1">%d</xliff:g> секунди.</item>
@@ -874,8 +872,7 @@
       <item quantity="many"><xliff:g id="COUNT">%d</xliff:g> годин</item>
       <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> години</item>
     </plurals>
-    <!-- no translation found for now_string_shortest (8912796667087856402) -->
-    <skip />
+    <string name="now_string_shortest" msgid="8912796667087856402">"зараз"</string>
     <!-- no translation found for duration_minutes_shortest (598436407511890455) -->
     <!-- no translation found for duration_hours_shortest (8300234116089026299) -->
     <!-- no translation found for duration_days_shortest (1363973360381363510) -->
@@ -982,6 +979,8 @@
     <string name="android_upgrading_title" msgid="1584192285441405746">"Android оновлюється..."</string>
     <string name="android_start_title" msgid="8418054686415318207">"Запуск ОС Android…"</string>
     <string name="android_upgrading_fstrim" msgid="8036718871534640010">"Оптимізація пам’яті."</string>
+    <string name="android_upgrading_notification_title" msgid="1619393112444671028">"Android оновлюється"</string>
+    <string name="android_upgrading_notification_body" msgid="5761201379457064286">"Деякі додатки можуть не працювати належним чином, доки не завершиться оновлення"</string>
     <string name="android_upgrading_apk" msgid="7904042682111526169">"Оптимізація програми <xliff:g id="NUMBER_0">%1$d</xliff:g> з <xliff:g id="NUMBER_1">%2$d</xliff:g>."</string>
     <string name="android_preparing_apk" msgid="8162599310274079154">"Підготовка додатка <xliff:g id="APPNAME">%1$s</xliff:g>."</string>
     <string name="android_upgrading_starting_apps" msgid="451464516346926713">"Запуск програм."</string>
@@ -1523,10 +1522,8 @@
     <string name="package_deleted_device_owner" msgid="7650577387493101353">"Видалив адміністратор"</string>
     <string name="battery_saver_description" msgid="1960431123816253034">"Щоб подовжити час роботи акумулятора, функція заощадження заряду акумулятора знижує продуктивність пристрою, а також обмежує вібрацію, функції служб локації та передавання більшості фонових даних. Електронна пошта, чати й інші додатки, які синхронізуються, можуть не оновлюватися, доки ви їх не відкриєте.\n\nФункція заощадження заряду акумулятора автоматично вимикається під час заряджання пристрою."</string>
     <string name="data_saver_description" msgid="6015391409098303235">"Щоб зменшити використання трафіку, функція \"Заощадження трафіку\" не дозволяє деяким додаткам надсилати чи отримувати дані у фоновому режимі. Поточний додаток зможе отримувати доступ до таких даних, але рідше. Наприклад, зображення не відображатиметься, доки ви не торкнетеся його."</string>
-    <!-- no translation found for data_saver_enable_title (4674073932722787417) -->
-    <skip />
-    <!-- no translation found for data_saver_enable_button (7147735965247211818) -->
-    <skip />
+    <string name="data_saver_enable_title" msgid="4674073932722787417">"Увімкнути Заощадження трафіку?"</string>
+    <string name="data_saver_enable_button" msgid="7147735965247211818">"Увімкнути"</string>
     <plurals name="zen_mode_duration_minutes_summary" formatted="false" msgid="4367877408072000848">
       <item quantity="one">%1$d хвилину (до <xliff:g id="FORMATTEDTIME_1">%2$s</xliff:g>)</item>
       <item quantity="few">%1$d хвилини (до <xliff:g id="FORMATTEDTIME_1">%2$s</xliff:g>)</item>
diff --git a/core/res/res/values-ur-rPK/strings.xml b/core/res/res/values-ur-rPK/strings.xml
index 976032a..7a562cc 100644
--- a/core/res/res/values-ur-rPK/strings.xml
+++ b/core/res/res/values-ur-rPK/strings.xml
@@ -218,11 +218,9 @@
     <string name="bugreport_title" msgid="2667494803742548533">"بگ کی اطلاع لیں"</string>
     <string name="bugreport_message" msgid="398447048750350456">"ایک ای میل پیغام کے بطور بھیجنے کیلئے، یہ آپ کے موجودہ آلہ کی حالت کے بارے میں معلومات جمع کرے گا۔ بگ کی اطلاع شروع کرنے سے لے کر بھیجنے کیلئے تیار ہونے تک اس میں تھوڑا وقت لگے گا؛ براہ کرم تحمل سے کام لیں۔"</string>
     <string name="bugreport_option_interactive_title" msgid="8635056131768862479">"متعامل رپورٹ"</string>
-    <!-- no translation found for bugreport_option_interactive_summary (229299488536107968) -->
-    <skip />
+    <string name="bugreport_option_interactive_summary" msgid="229299488536107968">"زیادہ تر حالات میں اسے استعمال کریں۔ یہ آپ کو رپورٹ کی پیش رفت کا پتہ رکھنے، مسئلہ سے متعلق زیادہ تفصیلات درج کرنے اور اسکرین شاٹس لینے کی اجازت دیتا ہے۔ شاید یہ کچھ ایسے کم استعمال ہونے والے سیکشنز کو خارج کر دے جو اطلاع کرنے میں زیادہ وقت لگاتے ہیں۔"</string>
     <string name="bugreport_option_full_title" msgid="6354382025840076439">"مکمل رپورٹ"</string>
-    <!-- no translation found for bugreport_option_full_summary (7210859858969115745) -->
-    <skip />
+    <string name="bugreport_option_full_summary" msgid="7210859858969115745">"جب آپ کا آلہ غیر فعال یا بہت سست ہو یا جب آپ کو تمام رپورٹ سیکشنز درکار ہوں، تو کم سے کم سسٹم مداخلت کیلئے یہ اختیار استعمال کریں۔ یہ آپ کو مزید تفصیلات درج کرنے یا اضافی اسکرین شاٹس لینے کی اجازت نہیں دیتا۔"</string>
     <plurals name="bugreport_countdown" formatted="false" msgid="6878900193900090368">
       <item quantity="other">بگ رپورٹ کیلئے <xliff:g id="NUMBER_1">%d</xliff:g> سیکنڈز میں اسکرین شاٹ لیا جائے گا۔</item>
       <item quantity="one">بگ رپورٹ کیلئے <xliff:g id="NUMBER_0">%d</xliff:g> سیکنڈ میں اسکرین شاٹ لیا جائے گا۔</item>
@@ -860,8 +858,7 @@
       <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> گھنٹے</item>
       <item quantity="one">1 گھنٹہ</item>
     </plurals>
-    <!-- no translation found for now_string_shortest (8912796667087856402) -->
-    <skip />
+    <string name="now_string_shortest" msgid="8912796667087856402">"ابھی"</string>
     <!-- no translation found for duration_minutes_shortest (598436407511890455) -->
     <!-- no translation found for duration_hours_shortest (8300234116089026299) -->
     <!-- no translation found for duration_days_shortest (1363973360381363510) -->
@@ -968,6 +965,8 @@
     <string name="android_upgrading_title" msgid="1584192285441405746">"‏Android اپ گریڈ ہو رہا ہے…"</string>
     <string name="android_start_title" msgid="8418054686415318207">"‏Android شروع ہو رہا ہے…"</string>
     <string name="android_upgrading_fstrim" msgid="8036718871534640010">"اسٹوریج کو بہترین بنایا جا رہا ہے۔"</string>
+    <string name="android_upgrading_notification_title" msgid="1619393112444671028">"‏Android اپ گریڈ ہو رہا ہے"</string>
+    <string name="android_upgrading_notification_body" msgid="5761201379457064286">"اپ گریڈ ختم ہونے تک شاید کچھ ایپس ٹھیک طرح سے کام نہ کریں"</string>
     <string name="android_upgrading_apk" msgid="7904042682111526169">"ایپ <xliff:g id="NUMBER_0">%1$d</xliff:g> از <xliff:g id="NUMBER_1">%2$d</xliff:g> کو بہتر بنایا جا رہا ہے۔"</string>
     <string name="android_preparing_apk" msgid="8162599310274079154">"<xliff:g id="APPNAME">%1$s</xliff:g> تیار ہو رہی ہے۔"</string>
     <string name="android_upgrading_starting_apps" msgid="451464516346926713">"ایپس شروع ہو رہی ہیں۔"</string>
@@ -1501,10 +1500,8 @@
     <string name="package_deleted_device_owner" msgid="7650577387493101353">"آپ کے منتظم کی جانب سے حذف کر دیا گیا"</string>
     <string name="battery_saver_description" msgid="1960431123816253034">"بیٹری کی میعاد بہتر کرنے میں مدد کرنے کیلئے، بیٹری سیور آپ کے آلہ کی کارکردگی کم کر دیتی ہے اور وائبریشن، مقام کی سروسز اور پس منظر کا بیشتر ڈیٹا محدود کر دیتی ہے۔ ای میل، پیغام رسانی اور مطابقت پذیری پر منحصر دیگر ایپس ممکن ہے اس وقت تک اپ ڈیٹ نہ ہوں جب تک آپ انہیں نہ کھولیں۔\n\nآپ کا آلہ چارج ہوتے وقت بیٹری سیور خود بخود آف ہو جاتی ہے۔"</string>
     <string name="data_saver_description" msgid="6015391409098303235">"ڈیٹا کے استعمال کو کم کرنے میں مدد کیلئے، ڈیٹا سیور پس منظر میں کچھ ایپس کو ڈیٹا بھیجنے یا موصول کرنے سے روکتا ہے۔ آپ جو ایپ فی الحال استعمال کر رہے ہیں وہ ڈیٹا پر رسائی کر سکتی ہے مگر ہو سکتا ہے ایسا زیادہ نہ ہو۔ اس کا مطلب مثال کے طور پر یہ ہو سکتا ہے کہ تصاویر تھپتھپانے تک ظاہر نہ ہوں۔"</string>
-    <!-- no translation found for data_saver_enable_title (4674073932722787417) -->
-    <skip />
-    <!-- no translation found for data_saver_enable_button (7147735965247211818) -->
-    <skip />
+    <string name="data_saver_enable_title" msgid="4674073932722787417">"ڈیٹا سیور آن کریں؟"</string>
+    <string name="data_saver_enable_button" msgid="7147735965247211818">"آن کریں"</string>
     <plurals name="zen_mode_duration_minutes_summary" formatted="false" msgid="4367877408072000848">
       <item quantity="other">‏%1$d منٹ کیلئے (<xliff:g id="FORMATTEDTIME_1">%2$s</xliff:g> تک)</item>
       <item quantity="one">ایک منٹ کیلئے (تک <xliff:g id="FORMATTEDTIME_0">%2$s</xliff:g>)</item>
diff --git a/core/res/res/values-uz-rUZ/strings.xml b/core/res/res/values-uz-rUZ/strings.xml
index d81be8e..71e8394 100644
--- a/core/res/res/values-uz-rUZ/strings.xml
+++ b/core/res/res/values-uz-rUZ/strings.xml
@@ -218,11 +218,9 @@
     <string name="bugreport_title" msgid="2667494803742548533">"Xatoliklar hisoboti"</string>
     <string name="bugreport_message" msgid="398447048750350456">"Qurilmangiz holati haqidagi ma’lumotlar to‘planib, e-pochta orqali yuboriladi. Hisobotni tayyorlash biroz vaqt olishi mumkin."</string>
     <string name="bugreport_option_interactive_title" msgid="8635056131768862479">"Interaktiv hisobot"</string>
-    <!-- no translation found for bugreport_option_interactive_summary (229299488536107968) -->
-    <skip />
+    <string name="bugreport_option_interactive_summary" msgid="229299488536107968">"Bundan maxsus vaziyatlarda foydalaning. Bu hisobot jarayonini kuzatish imkonini beradi, muammo haqida batafsil ma’lumotlarni ko‘rishingiz va skrinshotlar olishingiz mumkin bo‘ladi. Hisobot uchun ko‘p vaqt oladigan kam ishlatiladigan bo‘limlar qoldirib ketilishi mumkin."</string>
     <string name="bugreport_option_full_title" msgid="6354382025840076439">"To‘liq hisobot"</string>
-    <!-- no translation found for bugreport_option_full_summary (7210859858969115745) -->
-    <skip />
+    <string name="bugreport_option_full_summary" msgid="7210859858969115745">"Qurilma javob bermaganda, juda sekinlashganda yoki barcha hisobot bo‘limlari zarur bo‘lganda kamroq tizim aralashuvlarisiz mazkur variantdan foydalaning. Qo‘shimcha skrinshotlar olinmaydi yoki batafsil ma’lumotlar ko‘rishingizga ruxsat berilmaydi."</string>
     <plurals name="bugreport_countdown" formatted="false" msgid="6878900193900090368">
       <item quantity="other">Xatoliklar hisoboti uchun skrinshot <xliff:g id="NUMBER_1">%d</xliff:g> soniyadan so‘ng olinadi.</item>
       <item quantity="one">Xatoliklar hisoboti uchun skrinshot <xliff:g id="NUMBER_0">%d</xliff:g> soniyadan so‘ng olinadi.</item>
@@ -860,8 +858,7 @@
       <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> soat</item>
       <item quantity="one">1 soat</item>
     </plurals>
-    <!-- no translation found for now_string_shortest (8912796667087856402) -->
-    <skip />
+    <string name="now_string_shortest" msgid="8912796667087856402">"hozir"</string>
     <!-- no translation found for duration_minutes_shortest (598436407511890455) -->
     <!-- no translation found for duration_hours_shortest (8300234116089026299) -->
     <!-- no translation found for duration_days_shortest (1363973360381363510) -->
@@ -968,6 +965,8 @@
     <string name="android_upgrading_title" msgid="1584192285441405746">"Android yangilanmoqda…"</string>
     <string name="android_start_title" msgid="8418054686415318207">"Android ishga tushmoqda…"</string>
     <string name="android_upgrading_fstrim" msgid="8036718871534640010">"Xotira optimallashtirilmoqda."</string>
+    <string name="android_upgrading_notification_title" msgid="1619393112444671028">"Android yangilanmoqda"</string>
+    <string name="android_upgrading_notification_body" msgid="5761201379457064286">"Yangilanish vaqtida ba’zi ilovalar to‘g‘ri ishlamasligi mumkin"</string>
     <string name="android_upgrading_apk" msgid="7904042682111526169">"Ilovalar optimallashtirilmoqda (<xliff:g id="NUMBER_0">%1$d</xliff:g> / <xliff:g id="NUMBER_1">%2$d</xliff:g>)."</string>
     <string name="android_preparing_apk" msgid="8162599310274079154">"<xliff:g id="APPNAME">%1$s</xliff:g> tayyorlanmoqda."</string>
     <string name="android_upgrading_starting_apps" msgid="451464516346926713">"Ilovalar ishga tushirilmoqda."</string>
@@ -1501,10 +1500,8 @@
     <string name="package_deleted_device_owner" msgid="7650577387493101353">"Administratoringiz tomonidan o‘chirilgan"</string>
     <string name="battery_saver_description" msgid="1960431123816253034">"Batareya quvvatini uzoqroq vaqtga yetkazish uchun quvvat tejash funksiyasi qurilmangiz unumdorligini kamaytiradi hamda uning tebranishi va orqa fonda internetdan foydalanishini cheklaydi. Sinxronlanishni talab qiladigan e-pochta, xabar almashinuv va boshqa ilovalar esa qachonki ularni ishga tushirganingizda yangilanadi.\n\nQurilma quvvat olayotganda quvvat tejash funksiyasi avtomatik tarzda o‘chadi."</string>
     <string name="data_saver_description" msgid="6015391409098303235">"Trafik sarfini kamaytirish maqsadida Trafik tejash funksiyasi ba’zi ilovalarning orqa fonda internetdan foydalanishining oldini oladi. Siz hozirda foydalanayotgan ilova internetdan faqat talab etilgandagina foydalanishi mumkin. Bu degani, masalan, rasmlar ustiga bosilmaguncha, ular yuklanmaydi."</string>
-    <!-- no translation found for data_saver_enable_title (4674073932722787417) -->
-    <skip />
-    <!-- no translation found for data_saver_enable_button (7147735965247211818) -->
-    <skip />
+    <string name="data_saver_enable_title" msgid="4674073932722787417">"Trafik tejash yoqilsinmi?"</string>
+    <string name="data_saver_enable_button" msgid="7147735965247211818">"Yoqish"</string>
     <plurals name="zen_mode_duration_minutes_summary" formatted="false" msgid="4367877408072000848">
       <item quantity="other">%1$d daqiqa (<xliff:g id="FORMATTEDTIME_1">%2$s</xliff:g> gacha)</item>
       <item quantity="one">Bir daqiqa (<xliff:g id="FORMATTEDTIME_0">%2$s</xliff:g> gacha)</item>
diff --git a/core/res/res/values-vi/strings.xml b/core/res/res/values-vi/strings.xml
index 810c8a8..7e8abb0 100644
--- a/core/res/res/values-vi/strings.xml
+++ b/core/res/res/values-vi/strings.xml
@@ -218,11 +218,9 @@
     <string name="bugreport_title" msgid="2667494803742548533">"Nhận báo cáo lỗi"</string>
     <string name="bugreport_message" msgid="398447048750350456">"Báo cáo này sẽ thu thập thông tin về tình trạng thiết bị hiện tại của bạn, để gửi dưới dạng thông báo qua email. Sẽ mất một chút thời gian kể từ khi bắt đầu báo cáo lỗi cho tới khi báo cáo sẵn sàng để gửi; xin vui lòng kiên nhẫn."</string>
     <string name="bugreport_option_interactive_title" msgid="8635056131768862479">"Báo cáo tương tác"</string>
-    <!-- no translation found for bugreport_option_interactive_summary (229299488536107968) -->
-    <skip />
+    <string name="bugreport_option_interactive_summary" msgid="229299488536107968">"Sử dụng tùy chọn này trong hầu hết các trường hợp. Tùy chọn này cho phép bạn theo dõi tiến trình của báo cáo, nhập thêm thông tin chi tiết về sự cố cũng như chụp ảnh màn hình. Tùy chọn này có thể bỏ qua một số phần ít được sử dụng mà mất nhiều thời gian để báo cáo."</string>
     <string name="bugreport_option_full_title" msgid="6354382025840076439">"Báo cáo đầy đủ"</string>
-    <!-- no translation found for bugreport_option_full_summary (7210859858969115745) -->
-    <skip />
+    <string name="bugreport_option_full_summary" msgid="7210859858969115745">"Sử dụng tùy chọn này để giảm thiểu ảnh hưởng của hệ thống khi thiết bị của bạn không phản hồi hoặc quá chậm, hay khi bạn cần tất cả các phần báo cáo. Không cho phép bạn nhập thêm thông tin chi tiết hoặc chụp thêm ảnh chụp màn hình."</string>
     <plurals name="bugreport_countdown" formatted="false" msgid="6878900193900090368">
       <item quantity="other">Sẽ chụp ảnh màn hình để báo cáo lỗi sau <xliff:g id="NUMBER_1">%d</xliff:g> giây.</item>
       <item quantity="one">Sẽ chụp ảnh màn hình để báo cáo lỗi sau <xliff:g id="NUMBER_0">%d</xliff:g> giây.</item>
@@ -860,8 +858,7 @@
       <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> giờ</item>
       <item quantity="one">1 giờ</item>
     </plurals>
-    <!-- no translation found for now_string_shortest (8912796667087856402) -->
-    <skip />
+    <string name="now_string_shortest" msgid="8912796667087856402">"bây giờ"</string>
     <!-- no translation found for duration_minutes_shortest (598436407511890455) -->
     <!-- no translation found for duration_hours_shortest (8300234116089026299) -->
     <!-- no translation found for duration_days_shortest (1363973360381363510) -->
@@ -968,6 +965,8 @@
     <string name="android_upgrading_title" msgid="1584192285441405746">"Android đang nâng cấp..."</string>
     <string name="android_start_title" msgid="8418054686415318207">"Android đang khởi động..."</string>
     <string name="android_upgrading_fstrim" msgid="8036718871534640010">"Tối ưu hóa lưu trữ."</string>
+    <string name="android_upgrading_notification_title" msgid="1619393112444671028">"Android đang nâng cấp"</string>
+    <string name="android_upgrading_notification_body" msgid="5761201379457064286">"Một số ứng dụng có thể không hoạt động bình thường cho đến khi nâng cấp xong"</string>
     <string name="android_upgrading_apk" msgid="7904042682111526169">"Đang tối ưu hóa ứng dụng <xliff:g id="NUMBER_0">%1$d</xliff:g> trong tổng số <xliff:g id="NUMBER_1">%2$d</xliff:g>."</string>
     <string name="android_preparing_apk" msgid="8162599310274079154">"Đang chuẩn bị <xliff:g id="APPNAME">%1$s</xliff:g>."</string>
     <string name="android_upgrading_starting_apps" msgid="451464516346926713">"Khởi động ứng dụng."</string>
@@ -1501,10 +1500,8 @@
     <string name="package_deleted_device_owner" msgid="7650577387493101353">"Đã bị xóa bởi quản trị viên của bạn"</string>
     <string name="battery_saver_description" msgid="1960431123816253034">"Để giúp tăng tuổi thọ pin, trình tiết kiệm pin sẽ giảm hiệu suất thiết bị của bạn và hạn chế rung, dịch vụ vị trí và hầu hết dữ liệu nền. Email, nhắn tin và các ứng dụng khác dựa trên đồng bộ hóa có thể không cập nhật nếu bạn không mở chúng.\n\nTrình tiết kiệm pin tự động tắt khi thiết bị của bạn đang sạc."</string>
     <string name="data_saver_description" msgid="6015391409098303235">"Để giúp giảm mức sử dụng dữ liệu. Trình tiết kiệm dữ liệu chặn một số ứng dụng gửi hoặc nhận dữ liệu trong nền. Ứng dụng mà bạn hiện sử dụng có thể truy cập dữ liệu, nhưng có thể thực hiện việc đó ít thường xuyên hơn. Chẳng hạn, điều này có thể có nghĩa là hình ảnh sẽ không hiển thị cho đến khi bạn nhấn vào hình ảnh đó."</string>
-    <!-- no translation found for data_saver_enable_title (4674073932722787417) -->
-    <skip />
-    <!-- no translation found for data_saver_enable_button (7147735965247211818) -->
-    <skip />
+    <string name="data_saver_enable_title" msgid="4674073932722787417">"Bật Trình tiết kiệm dữ liệu?"</string>
+    <string name="data_saver_enable_button" msgid="7147735965247211818">"Bật"</string>
     <plurals name="zen_mode_duration_minutes_summary" formatted="false" msgid="4367877408072000848">
       <item quantity="other">Trong %1$d phút (cho đến <xliff:g id="FORMATTEDTIME_1">%2$s</xliff:g>)</item>
       <item quantity="one">Trong một phút (cho đến <xliff:g id="FORMATTEDTIME_0">%2$s</xliff:g>)</item>
diff --git a/core/res/res/values-zh-rCN/strings.xml b/core/res/res/values-zh-rCN/strings.xml
index 26621ba..8ae1043 100644
--- a/core/res/res/values-zh-rCN/strings.xml
+++ b/core/res/res/values-zh-rCN/strings.xml
@@ -218,11 +218,9 @@
     <string name="bugreport_title" msgid="2667494803742548533">"提交错误报告"</string>
     <string name="bugreport_message" msgid="398447048750350456">"这会收集有关当前设备状态的信息,并以电子邮件的形式进行发送。从开始生成错误报告到准备好发送需要一点时间,请耐心等待。"</string>
     <string name="bugreport_option_interactive_title" msgid="8635056131768862479">"互动式报告"</string>
-    <!-- no translation found for bugreport_option_interactive_summary (229299488536107968) -->
-    <skip />
+    <string name="bugreport_option_interactive_summary" msgid="229299488536107968">"在大多数情况下,建议您使用此选项,以便追踪报告的生成进度,输入与相应问题相关的更多详细信息,以及截取屏幕截图。系统可能会省略掉一些不常用的区段,从而缩短生成报告的时间。"</string>
     <string name="bugreport_option_full_title" msgid="6354382025840076439">"完整报告"</string>
-    <!-- no translation found for bugreport_option_full_summary (7210859858969115745) -->
-    <skip />
+    <string name="bugreport_option_full_summary" msgid="7210859858969115745">"如果您的设备无响应或运行速度缓慢,或者您需要查看所有区段的报告信息,则建议您使用此选项将系统干扰程度降到最低。系统不支持您输入更多详细信息,也不会截取其他屏幕截图。"</string>
     <plurals name="bugreport_countdown" formatted="false" msgid="6878900193900090368">
       <item quantity="other">系统将在 <xliff:g id="NUMBER_1">%d</xliff:g> 秒后对错误报告进行截屏。</item>
       <item quantity="one">系统将在 <xliff:g id="NUMBER_0">%d</xliff:g> 秒后对错误报告进行截屏。</item>
@@ -860,8 +858,7 @@
       <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> 小时</item>
       <item quantity="one">1 小时</item>
     </plurals>
-    <!-- no translation found for now_string_shortest (8912796667087856402) -->
-    <skip />
+    <string name="now_string_shortest" msgid="8912796667087856402">"现在"</string>
     <!-- no translation found for duration_minutes_shortest (598436407511890455) -->
     <!-- no translation found for duration_hours_shortest (8300234116089026299) -->
     <!-- no translation found for duration_days_shortest (1363973360381363510) -->
@@ -968,6 +965,8 @@
     <string name="android_upgrading_title" msgid="1584192285441405746">"Android正在升级..."</string>
     <string name="android_start_title" msgid="8418054686415318207">"Android 正在启动…"</string>
     <string name="android_upgrading_fstrim" msgid="8036718871534640010">"正在优化存储空间。"</string>
+    <string name="android_upgrading_notification_title" msgid="1619393112444671028">"Android 正在升级"</string>
+    <string name="android_upgrading_notification_body" msgid="5761201379457064286">"在升级完成之前,部分应用可能无法正常运行"</string>
     <string name="android_upgrading_apk" msgid="7904042682111526169">"正在优化第<xliff:g id="NUMBER_0">%1$d</xliff:g>个应用(共<xliff:g id="NUMBER_1">%2$d</xliff:g>个)。"</string>
     <string name="android_preparing_apk" msgid="8162599310274079154">"正在准备升级<xliff:g id="APPNAME">%1$s</xliff:g>。"</string>
     <string name="android_upgrading_starting_apps" msgid="451464516346926713">"正在启动应用。"</string>
@@ -1172,9 +1171,9 @@
     <string name="vpn_title_long" msgid="6400714798049252294">"<xliff:g id="APP">%s</xliff:g>已激活VPN"</string>
     <string name="vpn_text" msgid="3011306607126450322">"触摸可管理网络。"</string>
     <string name="vpn_text_long" msgid="6407351006249174473">"已连接到“<xliff:g id="SESSION">%s</xliff:g>”。触摸可管理网络。"</string>
-    <string name="vpn_lockdown_connecting" msgid="6443438964440960745">"正在连接到始终开启的VPN…"</string>
-    <string name="vpn_lockdown_connected" msgid="8202679674819213931">"已连接到始终开启的VPN"</string>
-    <string name="vpn_lockdown_error" msgid="6009249814034708175">"始终开启的VPN出现错误"</string>
+    <string name="vpn_lockdown_connecting" msgid="6443438964440960745">"正在连接到始终开启的 VPN…"</string>
+    <string name="vpn_lockdown_connected" msgid="8202679674819213931">"已连接到始终开启的 VPN"</string>
+    <string name="vpn_lockdown_error" msgid="6009249814034708175">"始终开启的 VPN 出现错误"</string>
     <string name="vpn_lockdown_config" msgid="6415899150671537970">"触摸即可进行配置"</string>
     <string name="upload_file" msgid="2897957172366730416">"选择文件"</string>
     <string name="no_file_chosen" msgid="6363648562170759465">"未选定任何文件"</string>
@@ -1501,10 +1500,8 @@
     <string name="package_deleted_device_owner" msgid="7650577387493101353">"已被管理员删除"</string>
     <string name="battery_saver_description" msgid="1960431123816253034">"为了延长电池的续航时间,省电模式会降低设备的性能,并限制振动、位置信息服务和大部分后台流量。对于电子邮件、聊天工具等依赖于同步功能的应用,可能要打开这类应用时才能收到新信息。\n\n省电模式会在设备充电时自动关闭。"</string>
     <string name="data_saver_description" msgid="6015391409098303235">"为了减少流量消耗,流量节省程序会阻止某些应用在后台收发数据。您当前使用的应用可以收发数据,但频率可能会降低。举例而言,这可能意味着图片只有在您点按之后才会显示。"</string>
-    <!-- no translation found for data_saver_enable_title (4674073932722787417) -->
-    <skip />
-    <!-- no translation found for data_saver_enable_button (7147735965247211818) -->
-    <skip />
+    <string name="data_saver_enable_title" msgid="4674073932722787417">"要开启流量节省程序吗?"</string>
+    <string name="data_saver_enable_button" msgid="7147735965247211818">"开启"</string>
     <plurals name="zen_mode_duration_minutes_summary" formatted="false" msgid="4367877408072000848">
       <item quantity="other">%1$d 分钟(到<xliff:g id="FORMATTEDTIME_1">%2$s</xliff:g>)</item>
       <item quantity="one">1 分钟(到<xliff:g id="FORMATTEDTIME_0">%2$s</xliff:g>)</item>
diff --git a/core/res/res/values-zh-rHK/strings.xml b/core/res/res/values-zh-rHK/strings.xml
index 9f9c444..667a844 100644
--- a/core/res/res/values-zh-rHK/strings.xml
+++ b/core/res/res/values-zh-rHK/strings.xml
@@ -218,9 +218,9 @@
     <string name="bugreport_title" msgid="2667494803742548533">"取得錯誤報告"</string>
     <string name="bugreport_message" msgid="398447048750350456">"這會收集您目前裝置狀態的相關資訊,並以電郵傳送給您。從開始建立錯誤報告到準備傳送需要一段時間,請耐心等候。"</string>
     <string name="bugreport_option_interactive_title" msgid="8635056131768862479">"互動報告"</string>
-    <string name="bugreport_option_interactive_summary" msgid="229299488536107968">"在一般情況下,建議您使用這個選項,以便追蹤報告產生進度、輸入更多與問題相關的資訊,以及擷取螢幕畫面。系統可能會省略部分較少使用的區段,藉此縮短報告產生時間。"</string>
+    <string name="bugreport_option_interactive_summary" msgid="229299488536107968">"在大部分情況下,建議您使用此選項,以便追蹤報告進度、輸入更多與問題相關的詳細資料,以及擷取螢幕畫面。系統可能會省略一些不常用的部分,以縮短產生報告的時間。"</string>
     <string name="bugreport_option_full_title" msgid="6354382025840076439">"完整報告"</string>
-    <string name="bugreport_option_full_summary" msgid="7210859858969115745">"如果您的裝置沒有回應或運行速度過慢,或是當您需要所有區段的報告時,建議您使用這個選項來減少系統干擾。這個選項不支援您輸入更多資訊,也不會擷取其他螢幕畫面。"</string>
+    <string name="bugreport_option_full_summary" msgid="7210859858969115745">"如果裝置沒有反應或運作速度較慢,或您需要完整的報告時,建議使用此選項將系統的干擾程度降至最低。此選項不允許您輸入更多詳細資料,或擷取更多螢幕畫面。"</string>
     <plurals name="bugreport_countdown" formatted="false" msgid="6878900193900090368">
       <item quantity="other">系統將在 <xliff:g id="NUMBER_1">%d</xliff:g> 秒後擷取錯誤報告的螢幕畫面。</item>
       <item quantity="one">系統將在 <xliff:g id="NUMBER_0">%d</xliff:g> 秒後擷取錯誤報告的螢幕畫面。</item>
@@ -965,6 +965,8 @@
     <string name="android_upgrading_title" msgid="1584192285441405746">"正在升級 Android..."</string>
     <string name="android_start_title" msgid="8418054686415318207">"Android 正在啟動…"</string>
     <string name="android_upgrading_fstrim" msgid="8036718871534640010">"正在優化儲存空間。"</string>
+    <string name="android_upgrading_notification_title" msgid="1619393112444671028">"正在升級 Android"</string>
+    <string name="android_upgrading_notification_body" msgid="5761201379457064286">"部分應用程式需要完成升級方可正常運作"</string>
     <string name="android_upgrading_apk" msgid="7904042682111526169">"正在優化第 <xliff:g id="NUMBER_0">%1$d</xliff:g> 個應用程式 (共 <xliff:g id="NUMBER_1">%2$d</xliff:g> 個)。"</string>
     <string name="android_preparing_apk" msgid="8162599310274079154">"正在準備 <xliff:g id="APPNAME">%1$s</xliff:g>。"</string>
     <string name="android_upgrading_starting_apps" msgid="451464516346926713">"正在啟動應用程式。"</string>
@@ -1498,7 +1500,7 @@
     <string name="package_deleted_device_owner" msgid="7650577387493101353">"已由管理員刪除"</string>
     <string name="battery_saver_description" msgid="1960431123816253034">"節約電池用量模式有助於延長電池壽命,但這會降低裝置效能,並限制震動、定位服務及大部分背景數據傳輸。除非您啟用,否則電郵、短訊及其他需要使用同步功能的應用程式均不會更新。\n\n當裝置充電時,節約電池用量模式會自動關閉。"</string>
     <string name="data_saver_description" msgid="6015391409098303235">"「數據節省程式」可防止部分應用程式在背景收發資料,以節省數據用量。您正在使用的應用程式仍可以存取資料,但存取頻率可能會降低。例如,除非您輕按圖片,否則系統可能不會顯示相關圖片。"</string>
-    <string name="data_saver_enable_title" msgid="4674073932722787417">"要開啟數據節省模式嗎?"</string>
+    <string name="data_saver_enable_title" msgid="4674073932722787417">"要啟用數據節省程式嗎?"</string>
     <string name="data_saver_enable_button" msgid="7147735965247211818">"開啟"</string>
     <plurals name="zen_mode_duration_minutes_summary" formatted="false" msgid="4367877408072000848">
       <item quantity="other">需時 %1$d 分鐘 (完成時間:<xliff:g id="FORMATTEDTIME_1">%2$s</xliff:g>)</item>
diff --git a/core/res/res/values-zh-rTW/strings.xml b/core/res/res/values-zh-rTW/strings.xml
index 9acfdcff..9a4ea76 100644
--- a/core/res/res/values-zh-rTW/strings.xml
+++ b/core/res/res/values-zh-rTW/strings.xml
@@ -965,6 +965,8 @@
     <string name="android_upgrading_title" msgid="1584192285441405746">"正在升級 Android…"</string>
     <string name="android_start_title" msgid="8418054686415318207">"Android 正在啟動…"</string>
     <string name="android_upgrading_fstrim" msgid="8036718871534640010">"正在對儲存空間進行最佳化處理。"</string>
+    <string name="android_upgrading_notification_title" msgid="1619393112444671028">"正在升級 Android"</string>
+    <string name="android_upgrading_notification_body" msgid="5761201379457064286">"升級完成前,部分應用程式可能無法正常運作"</string>
     <string name="android_upgrading_apk" msgid="7904042682111526169">"正在最佳化第 <xliff:g id="NUMBER_0">%1$d</xliff:g> 個應用程式 (共 <xliff:g id="NUMBER_1">%2$d</xliff:g> 個)。"</string>
     <string name="android_preparing_apk" msgid="8162599310274079154">"正在準備升級「<xliff:g id="APPNAME">%1$s</xliff:g>」。"</string>
     <string name="android_upgrading_starting_apps" msgid="451464516346926713">"正在啟動應用程式。"</string>
diff --git a/core/res/res/values-zu/strings.xml b/core/res/res/values-zu/strings.xml
index 18af14c..84fa36e 100644
--- a/core/res/res/values-zu/strings.xml
+++ b/core/res/res/values-zu/strings.xml
@@ -218,11 +218,9 @@
     <string name="bugreport_title" msgid="2667494803742548533">"Thatha umbiko wesiphazamiso"</string>
     <string name="bugreport_message" msgid="398447048750350456">"Lokhu kuzoqoqa ulwazi mayelana nesimo samanje sedivayisi yakho, ukuthumela imilayezo ye-imeyili. Kuzothatha isikhathi esincane kusuka ekuqaleni umbiko wesiphazamiso uze ulungele ukuthunyelwa; sicela ubekezele."</string>
     <string name="bugreport_option_interactive_title" msgid="8635056131768862479">"Umbiko obandakanyayo"</string>
-    <!-- no translation found for bugreport_option_interactive_summary (229299488536107968) -->
-    <skip />
+    <string name="bugreport_option_interactive_summary" msgid="229299488536107968">"Sebenzisa lokhu ngaphansi kwezimo eziningi. Kukuvumela ukuthi ulandele ukuqhubeka kombiko, ufake imininingwane engeziwe mayelana nenkinga, futhi uthathe izithombe zikrini. Ingasika okunye ukukhetha okuncane okuthatha isikhathi eside ukubika."</string>
     <string name="bugreport_option_full_title" msgid="6354382025840076439">"Umbiko ogcwele"</string>
-    <!-- no translation found for bugreport_option_full_summary (7210859858969115745) -->
-    <skip />
+    <string name="bugreport_option_full_summary" msgid="7210859858969115745">"Sebenzisa le nketho ukuze uthole ukuphazamiseka okuncane kwesistimu uma idivayisi yakho ingaphenduli noma ihamba kancane kakhulu, noma udinga zonke izigaba zombiko. Ayikuvumeli ukuthi ufake imininingwane engeziwe noma uthathe isithombe-skrini esingeziwe."</string>
     <plurals name="bugreport_countdown" formatted="false" msgid="6878900193900090368">
       <item quantity="one">Ithathela umbiko wesiphazamisi isithombe-skrini kumasekhondi angu-<xliff:g id="NUMBER_1">%d</xliff:g>.</item>
       <item quantity="other">Ithathela umbiko wesiphazamisi isithombe-skrini kumasekhondi angu-<xliff:g id="NUMBER_1">%d</xliff:g>.</item>
@@ -860,8 +858,7 @@
       <item quantity="one"><xliff:g id="COUNT">%d</xliff:g> amahora</item>
       <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> amahora</item>
     </plurals>
-    <!-- no translation found for now_string_shortest (8912796667087856402) -->
-    <skip />
+    <string name="now_string_shortest" msgid="8912796667087856402">"manje"</string>
     <!-- no translation found for duration_minutes_shortest (598436407511890455) -->
     <!-- no translation found for duration_hours_shortest (8300234116089026299) -->
     <!-- no translation found for duration_days_shortest (1363973360381363510) -->
@@ -968,6 +965,8 @@
     <string name="android_upgrading_title" msgid="1584192285441405746">"I-Android ifaka ezakamuva..."</string>
     <string name="android_start_title" msgid="8418054686415318207">"I-Android iyaqala…"</string>
     <string name="android_upgrading_fstrim" msgid="8036718871534640010">"Ikhulisa isitoreji."</string>
+    <string name="android_upgrading_notification_title" msgid="1619393112444671028">"I-Android iyathuthukiswa"</string>
+    <string name="android_upgrading_notification_body" msgid="5761201379457064286">"Ezinye izinhlelo zokusebenza kungenzeka zingasebenzi kahle kuze kuqedwe ukuthuthukiswa"</string>
     <string name="android_upgrading_apk" msgid="7904042682111526169">"Ukubeka ezingeni eliphezulu <xliff:g id="NUMBER_0">%1$d</xliff:g> uhlelo lokusebenza <xliff:g id="NUMBER_1">%2$d</xliff:g>"</string>
     <string name="android_preparing_apk" msgid="8162599310274079154">"Ukulungisela i-<xliff:g id="APPNAME">%1$s</xliff:g>."</string>
     <string name="android_upgrading_starting_apps" msgid="451464516346926713">"Qalisa izinhlelo zokusebenza."</string>
@@ -1501,10 +1500,8 @@
     <string name="package_deleted_device_owner" msgid="7650577387493101353">"Isuswe ngumlawuli wakho"</string>
     <string name="battery_saver_description" msgid="1960431123816253034">"Ukusiza ukuthuthukisa impilo yebhethri, isilondoloze sebhethri sehlisa ukusebenza kwedivayisi yakho futhi sikhawulele ukudlidliza, amasevisi wendawo, nedatha eningi yangasemuva. I-imeyili, imilayezo, nezinye izinhlelo zokusebenza ezincike ekuvumelaniseni zingahle zingabuyekezwa ngaphandle kokuthi uzivule.\n\nIsilondolozi sebhethri siyavaleka ngokuzenzakalelayo uma idivayisi yakho ishaja."</string>
     <string name="data_saver_description" msgid="6015391409098303235">"Ukusiza ukwehlisa ukusetshenziswa kwedatha, iseva yedatha igwema ezinye izinhlelo zokusebenza ukuthi zithumele noma zamukele idatha ngasemuva. Uhlelo lokusebenza olisebenzisa okwamanje lingafinyelela idatha, kodwa lingenza kanjalo kancane. Lokhu kungachaza, isibonelo, ukuthi izithombe azibonisi uze uzithephe."</string>
-    <!-- no translation found for data_saver_enable_title (4674073932722787417) -->
-    <skip />
-    <!-- no translation found for data_saver_enable_button (7147735965247211818) -->
-    <skip />
+    <string name="data_saver_enable_title" msgid="4674073932722787417">"Vula iseva yedatha?"</string>
+    <string name="data_saver_enable_button" msgid="7147735965247211818">"Vula"</string>
     <plurals name="zen_mode_duration_minutes_summary" formatted="false" msgid="4367877408072000848">
       <item quantity="one">Okwamaminithi angu-%1$d (kuze kube ngo-<xliff:g id="FORMATTEDTIME_1">%2$s</xliff:g>)</item>
       <item quantity="other">Okwamaminithi angu-%1$d (kuze kube ngo-<xliff:g id="FORMATTEDTIME_1">%2$s</xliff:g>)</item>
diff --git a/core/res/res/values/attrs_manifest.xml b/core/res/res/values/attrs_manifest.xml
index e040bea..191afe5 100644
--- a/core/res/res/values/attrs_manifest.xml
+++ b/core/res/res/values/attrs_manifest.xml
@@ -552,6 +552,15 @@
          should not be interrupted with other activities or notifications. -->
     <attr name="immersive" format="boolean" />
 
+    <!-- Flag declaring that this activity will be run in VR mode, and specifying
+         the component of the VrListenerService that should be bound while this
+         Activity is visible if installed and enabled on this device. This is
+         equivalent to calling {@link android.app.Activity#setVrModeEnabled} with the
+         the given component name within this Activity. Declaring this will prevent
+         the system from leaving VR mode during an Activity transtion one VR activity
+         to another. -->
+    <attr name="enableVrMode" format="string" />
+
     <!-- Specify the order in which content providers hosted by a process
          are instantiated when that process is created.  Not needed unless
          you have providers with dependencies between each other, to make
@@ -1212,14 +1221,14 @@
          {@link #AndroidManifestActivity activity},
          {@link #AndroidManifestActivityAlias activity-alias}, and
          {@link #AndroidManifestUsesLibrary uses-library}.  The application tag
-         appears as a child of the root {@link #AndroidManifest manifest} tag. -->
+         appears as a child of the root {@link #AndroidManifest manifest} tag in
+         an application's manifest file. -->
     <declare-styleable name="AndroidManifestApplication" parent="AndroidManifest">
-        <!-- An optional name of a class implementing the overall
-             {@link android.app.Application} for this package.  When the
-             process for your package is started, this class is instantiated
-             before any of the other application components.  Note that this
-             is not required, and in fact most applications will probably
-             not need it. -->
+        <!-- The (optional) fully-qualified name for a subclass of
+             {@link android.app.Application} that the system instantiates before
+             any other class when an app's process starts. Most applications
+             don't need this attribute. If it's not specified, the system
+             instantiates the base Application class instead.-->
         <attr name="name" />
         <attr name="theme" />
         <attr name="label" />
@@ -1884,6 +1893,7 @@
              For example, {@link android.R.attr#supportsPictureInPicture} activities are placed
              in a task/stack that isn't focusable. This flag allows them to be focusable.-->
         <attr name="alwaysFocusable" format="boolean" />
+        <attr name="enableVrMode" />
     </declare-styleable>
 
     <!-- The <code>activity-alias</code> tag declares a new
@@ -2281,4 +2291,14 @@
         <attr name="minimalHeight" format="dimension" />
     </declare-styleable>
 
+    <!-- <code>restrict-update</code> tag restricts system apps from being updated unless the
+        SHA-512 hash equals the specified value.
+        @hide -->
+    <declare-styleable name="AndroidManifestRestrictUpdate" parent="AndroidManifest">
+        <!-- The SHA-512 hash of the only APK that can be used to update a package.
+             <p>NOTE: This is only applicable to system packages.
+             @hide -->
+        <attr name="hash" format="string" />
+    </declare-styleable>
+
 </resources>
diff --git a/core/res/res/values/config.xml b/core/res/res/values/config.xml
index 789a417..e73fa9a 100644
--- a/core/res/res/values/config.xml
+++ b/core/res/res/values/config.xml
@@ -2380,10 +2380,6 @@
          must match the value of config_cameraLaunchGestureSensorType in OEM's HAL -->
     <string translatable="false" name="config_cameraLaunchGestureSensorStringType"></string>
 
-    <!-- Whether to open UI submenus side by side with the top menu (as opposed to
-         replacing the top menu). -->
-    <bool name="config_enableCascadingSubmenus">false</bool>
-
     <!-- Allow the gesture to double tap the power button twice to start the camera while the device
          is non-interactive. -->
     <bool name="config_cameraDoubleTapPowerGestureEnabled">true</bool>
diff --git a/core/res/res/values/dimens.xml b/core/res/res/values/dimens.xml
index 5446d4c..8ce922e 100644
--- a/core/res/res/values/dimens.xml
+++ b/core/res/res/values/dimens.xml
@@ -468,4 +468,7 @@
 
     <!-- The default minimal size of a resizable task, in both dimensions. -->
     <dimen name="default_minimal_size_resizable_task">220dp</dimen>
+
+    <!-- Minimum "smallest width" of the display for cascading menus to be enabled. -->
+    <dimen name="cascading_menus_min_smallest_width">720dp</dimen>
 </resources>
diff --git a/core/res/res/values/public.xml b/core/res/res/values/public.xml
index 80b3a64..c91e09f 100644
--- a/core/res/res/values/public.xml
+++ b/core/res/res/values/public.xml
@@ -2714,6 +2714,8 @@
     <public type="attr" name="contentInsetStartWithNavigation" />
     <public type="attr" name="contentInsetEndWithActions" />
     <public type="attr" name="numberPickerStyle" />
+    <public type="attr" name="enableVrMode" />
+    <public type="attr" name="hash" />
 
     <public type="style" name="Theme.Material.Light.DialogWhenLarge.DarkActionBar" />
     <public type="style" name="Widget.Material.SeekBar.Discrete" />
diff --git a/core/res/res/values/strings.xml b/core/res/res/values/strings.xml
index d36da9f..dffab2c 100644
--- a/core/res/res/values/strings.xml
+++ b/core/res/res/values/strings.xml
@@ -626,7 +626,7 @@
     <!-- Title for the capability of an accessibility service to request touch exploration. -->
     <string name="capability_title_canRequestTouchExploration">Turn on Explore by Touch</string>
     <!-- Description for the capability of an accessibility service to request touch exploration. -->
-    <string name="capability_desc_canRequestTouchExploration">Touched items will be spoken aloud
+    <string name="capability_desc_canRequestTouchExploration">Tapped items will be spoken aloud
         and the screen can be explored using gestures.</string>
 
     <!-- Title for the capability of an accessibility service to request enhanced web accessibility. -->
@@ -1708,7 +1708,7 @@
     <string name="keyguard_password_enter_pin_prompt">New PIN code</string>
 
     <!-- Displayed as hint in passwordEntry EditText on PasswordUnlockScreen [CHAR LIMIT=30]-->
-    <string name="keyguard_password_entry_touch_hint"><font size="17">Touch to type password</font></string>
+    <string name="keyguard_password_entry_touch_hint"><font size="17">Tap to type password</font></string>
 
     <!-- Instructions telling the user to enter their text password to unlock the keyguard.
          Displayed in one line in a large font.  -->
@@ -2428,41 +2428,49 @@
 
     <!-- Phrase describing a time duration using minutes that is as short as possible, preferrably one character. If the language needs a space in between the integer and the unit, please also integrate it in the string, but preferably it should not have a space in between.[CHAR LIMIT=6] -->
     <plurals name="duration_minutes_shortest">
+        <item quantity="one"><xliff:g example="1" id="count">%d</xliff:g>m</item>
         <item quantity="other"><xliff:g example="2" id="count">%d</xliff:g>m</item>
     </plurals>
 
     <!-- Phrase describing a time duration using hours that is as short as possible, preferrably one character. If the language needs a space in between the integer and the unit, please also integrate it in the string, but preferably it should not have a space in between.[CHAR LIMIT=6] -->
     <plurals name="duration_hours_shortest">
+        <item quantity="one"><xliff:g example="1" id="count">%d</xliff:g>h</item>
         <item quantity="other"><xliff:g example="2" id="count">%d</xliff:g>h</item>
     </plurals>
 
     <!-- Phrase describing a time duration using days that is as short as possible, preferrably one character. If the language needs a space in between the integer and the unit, please also integrate it in the string, but preferably it should not have a space in between.[CHAR LIMIT=6] -->
     <plurals name="duration_days_shortest">
+        <item quantity="one"><xliff:g example="1" id="count">%d</xliff:g>d</item>
         <item quantity="other"><xliff:g example="2" id="count">%d</xliff:g>d</item>
     </plurals>
 
     <!-- Phrase describing a time duration using years that is as short as possible, preferrably one character. If the language needs a space in between the integer and the unit, please also integrate it in the string, but preferably it should not have a space in between.[CHAR LIMIT=6] -->
     <plurals name="duration_years_shortest">
+        <item quantity="one"><xliff:g example="1" id="count">%d</xliff:g>y</item>
         <item quantity="other"><xliff:g example="2" id="count">%d</xliff:g>y</item>
     </plurals>
 
     <!-- Phrase describing a time duration using minutes that is as short as possible, preferrably one character. This version should be a future point in time. If the language needs a space in between the integer and the unit, please also integrate it in the string, but preferably it should not have a space in between.[CHAR LIMIT=14] -->
     <plurals name="duration_minutes_shortest_future">
+        <item quantity="one">in <xliff:g example="1" id="count">%d</xliff:g>m</item>
         <item quantity="other">in <xliff:g example="2" id="count">%d</xliff:g>m</item>
     </plurals>
 
     <!-- Phrase describing a time duration using hours that is as short as possible, preferrably one character. This version should be a future point in time. If the language needs a space in between the integer and the unit, please also integrate it in the string, but preferably it should not have a space in between.[CHAR LIMIT=14] -->
     <plurals name="duration_hours_shortest_future">
+        <item quantity="one">in <xliff:g example="1" id="count">%d</xliff:g>h</item>
         <item quantity="other">in <xliff:g example="2" id="count">%d</xliff:g>h</item>
     </plurals>
 
     <!-- Phrase describing a time duration using days that is as short as possible, preferrably one character. This version should be a future point in time. If the language needs a space in between the integer and the unit, please also integrate it in the string, but preferably it should not have a space in between.[CHAR LIMIT=14] -->
     <plurals name="duration_days_shortest_future">
+        <item quantity="one">in <xliff:g example="1" id="count">%d</xliff:g>d</item>
         <item quantity="other">in <xliff:g example="2" id="count">%d</xliff:g>d</item>
     </plurals>
 
     <!-- Phrase describing a time duration using years that is as short as possible, preferrably one character. This version should be a future point in time. If the language needs a space in between the integer and the unit, please also integrate it in the string, but preferably it should not have a space in between.[CHAR LIMIT=14] -->
     <plurals name="duration_years_shortest_future">
+        <item quantity="one">in <xliff:g example="1" id="count">%d</xliff:g>y</item>
         <item quantity="other">in <xliff:g example="2" id="count">%d</xliff:g>y</item>
     </plurals>
 
@@ -2569,7 +2577,7 @@
         is running</string>
     <!-- [CHAR LIMIT=NONE] Stub notification text for an app running a service that has provided
          a bad bad notification for itself. -->
-    <string name="app_running_notification_text">Touch for more information
+    <string name="app_running_notification_text">Tap for more information
         or to stop the app.</string>
 
     <!-- Preference framework strings. -->
@@ -2753,7 +2761,7 @@
     <string name="heavy_weight_notification"><xliff:g id="app">%1$s</xliff:g> running</string>
 
     <!-- Notification details to tell the user that a heavy-weight application is running. -->
-    <string name="heavy_weight_notification_detail">Touch to switch to app</string>
+    <string name="heavy_weight_notification_detail">Tap to switch to app</string>
 
     <!-- Title of dialog prompting whether user wants to switch between heavy-weight apps. -->
     <string name="heavy_weight_switcher_title">Switch apps?</string>
@@ -2774,7 +2782,7 @@
 
     <!-- Notification details to tell the user that a process has exceeded its memory limit. -->
     <string name="dump_heap_notification_detail">Heap dump has been collected;
-        touch to share</string>
+        tap to share</string>
 
     <!-- Title of dialog prompting the user to share a heap dump. -->
     <string name="dump_heap_title">Share heap dump?</string>
@@ -2857,7 +2865,7 @@
     <string name="wifi_no_internet">Wi-Fi has no Internet access</string>
 
     <!-- A notification is shown when the user connects to a Wi-Fi network and the system detects that that network has no Internet access. This is the notification's message. -->
-    <string name="wifi_no_internet_detailed">Touch for options</string>
+    <string name="wifi_no_internet_detailed">Tap for options</string>
 
      <!-- A notification is shown when a user's selected SSID is later disabled due to connectivity problems.  This is the notification's title / ticker. -->
      <string name="wifi_watchdog_network_disabled">Couldn\'t connect to Wi-Fi</string>
@@ -2879,7 +2887,7 @@
     <string name="wifi_p2p_turnon_message">Start Wi-Fi Direct. This will turn off Wi-Fi client/hotspot.</string>
     <string name="wifi_p2p_failed_message">Couldn\'t start Wi-Fi Direct.</string>
     <string name="wifi_p2p_enabled_notification_title">Wi-Fi Direct is on</string>
-    <string name="wifi_p2p_enabled_notification_message">Touch for settings</string>
+    <string name="wifi_p2p_enabled_notification_message">Tap for settings</string>
 
     <string name="accept">Accept</string>
     <string name="decline">Decline</string>
@@ -2987,12 +2995,12 @@
     <!-- USB_PREFERENCES: Notification for when a USB accessory is attached.  This is the title -->
     <string name="usb_accessory_notification_title">Connected to a USB accessory</string>
     <!-- See USB_PREFERENCES. This is the message. -->
-    <string name="usb_notification_message">Touch for more options.</string>
+    <string name="usb_notification_message">Tap for more options.</string>
 
     <!-- Title of notification shown when ADB is actively connected to the phone. -->
     <string name="adb_active_notification_title">USB debugging connected</string>
     <!-- Message of notification shown when ADB is actively connected to the phone. -->
-    <string name="adb_active_notification_message">Touch to disable USB debugging.</string>
+    <string name="adb_active_notification_message">Tap to disable USB debugging.</string>
 
     <!-- Title of notification shown to indicate that bug report is being collected. -->
     <string name="taking_remote_bugreport_notification_title">Taking bug report\u2026</string>
@@ -3049,12 +3057,12 @@
     <!-- Notification title when external media is unmountable (corrupt) [CHAR LIMIT=30] -->
     <string name="ext_media_unmountable_notification_title">Corrupted <xliff:g id="name" example="SD card">%s</xliff:g></string>
     <!-- Notification body when external media is unmountable (corrupt) [CHAR LIMIT=NONE] -->
-    <string name="ext_media_unmountable_notification_message"><xliff:g id="name" example="SD card">%s</xliff:g> is corrupt. Touch to fix.</string>
+    <string name="ext_media_unmountable_notification_message"><xliff:g id="name" example="SD card">%s</xliff:g> is corrupt. Tap to fix.</string>
 
     <!-- Notification title when external media is unsupported [CHAR LIMIT=30] -->
     <string name="ext_media_unsupported_notification_title">Unsupported <xliff:g id="name" example="SD card">%s</xliff:g></string>
     <!-- Notification body when external media is unsupported [CHAR LIMIT=NONE] -->
-    <string name="ext_media_unsupported_notification_message">This device doesn\u2019t support this <xliff:g id="name" example="SD card">%s</xliff:g>. Touch to set up in a supported format.</string>
+    <string name="ext_media_unsupported_notification_message">This device doesn\u2019t support this <xliff:g id="name" example="SD card">%s</xliff:g>. Tap to set up in a supported format.</string>
 
     <!-- Notification title when external media is unsafely removed [CHAR LIMIT=30] -->
     <string name="ext_media_badremoval_notification_title"><xliff:g id="name" example="SD card">%s</xliff:g> unexpectedly removed</string>
@@ -3140,7 +3148,7 @@
     <string name="permdesc_requestInstallPackages">Allows an application to request installation of packages.</string>
 
     <!-- Shown in the tutorial for tap twice for zoom control. -->
-    <string name="tutorial_double_tap_to_zoom_message_short">Touch twice for zoom control</string>
+    <string name="tutorial_double_tap_to_zoom_message_short">Tap twice for zoom control</string>
 
 
     <!-- Shown in gadget hosts (e.g. the home screen) when there was an error inflating
@@ -3227,9 +3235,9 @@
     <!-- The title of the notification when VPN is active with an application name. -->
     <string name="vpn_title_long">VPN is activated by <xliff:g id="app" example="FooVPN client">%s</xliff:g></string>
     <!-- The text of the notification when VPN is active. -->
-    <string name="vpn_text">Touch to manage the network.</string>
+    <string name="vpn_text">Tap to manage the network.</string>
     <!-- The text of the notification when VPN is active with a session name. -->
-    <string name="vpn_text_long">Connected to <xliff:g id="session" example="office">%s</xliff:g>. Touch to manage the network.</string>
+    <string name="vpn_text_long">Connected to <xliff:g id="session" example="office">%s</xliff:g>. Tap to manage the network.</string>
 
     <!-- Notification title when connecting to lockdown VPN. -->
     <string name="vpn_lockdown_connecting">Always-on VPN connecting\u2026</string>
@@ -3238,7 +3246,7 @@
     <!-- Notification title when error connecting to lockdown VPN. -->
     <string name="vpn_lockdown_error">Always-on VPN error</string>
     <!-- Notification body that indicates user can touch to configure lockdown VPN connection. -->
-    <string name="vpn_lockdown_config">Touch to configure</string>
+    <string name="vpn_lockdown_config">Tap to configure</string>
 
     <!-- Localized strings for WebView -->
     <!-- Label for button in a WebView that will open a chooser to choose a file to upload -->
@@ -3253,12 +3261,12 @@
     <!-- Strings for car mode notification -->
     <!-- Shown when car mode is enabled -->
     <string name="car_mode_disable_notification_title">Car mode enabled</string>
-    <string name="car_mode_disable_notification_message">Touch to exit car mode.</string>
+    <string name="car_mode_disable_notification_message">Tap to exit car mode.</string>
 
     <!-- Strings for tethered notification -->
     <!-- Shown when the device is tethered -->
     <string name="tethered_notification_title">Tethering or hotspot active</string>
-    <string name="tethered_notification_message">Touch to set up.</string>
+    <string name="tethered_notification_message">Tap to set up.</string>
 
     <!--  Strings for possible PreferenceActivity Back/Next buttons -->
     <string name="back_button_label">Back</string>
@@ -3344,7 +3352,7 @@
     <!-- Description of the button to decrease the NumberPicker value. [CHAR LIMIT=NONE] -->
     <string name="number_picker_decrement_button">Decrease</string>
     <!-- Description of the tap and hold action to get into scroll mode in NumberPicker. [CHAR LIMIT=NONE] -->
-    <string name="number_picker_increment_scroll_mode"><xliff:g id="value" example="3">%s</xliff:g> touch and hold.</string>
+    <string name="number_picker_increment_scroll_mode"><xliff:g id="value" example="3">%s</xliff:g> touch &amp; hold.</string>
     <!-- Description of the scrolling action in NumberPicker. [CHAR LIMIT=NONE] -->
     <string name="number_picker_increment_scroll_action">Slide up to increase and down to decrease.</string>
 
@@ -3462,7 +3470,7 @@
     <!-- Notification title when data usage has exceeded warning threshold. [CHAR LIMIT=32] -->
     <string name="data_usage_warning_title">Data usage warning</string>
     <!-- Notification body when data usage has exceeded warning threshold. [CHAR LIMIT=32] -->
-    <string name="data_usage_warning_body">Touch to view usage and settings.</string>
+    <string name="data_usage_warning_body">Tap to view usage and settings.</string>
 
     <!-- Notification title when 2G-3G data usage has exceeded limit threshold, and has been disabled. [CHAR LIMIT=32] -->
     <string name="data_usage_3g_limit_title">2G-3G data limit reached</string>
@@ -3489,7 +3497,7 @@
     <!-- Notification title when background data usage is limited. [CHAR LIMIT=32] -->
     <string name="data_usage_restricted_title">Background data restricted</string>
     <!-- Notification body when background data usage is limited. [CHAR LIMIT=32] -->
-    <string name="data_usage_restricted_body">Touch to remove restriction.</string>
+    <string name="data_usage_restricted_body">Tap to remove restriction.</string>
 
     <!-- SSL Certificate dialogs -->
     <!-- Title for an SSL Certificate dialog -->
@@ -4072,9 +4080,9 @@
     <string name="date_picker_day_typeface">sans-serif-medium</string>
 
     <!-- Notify use that they are in Lock-to-app -->
-    <string name="lock_to_app_toast">To unpin this screen, touch and hold Back.</string>
+    <string name="lock_to_app_toast">To unpin this screen, touch &amp; hold Back.</string>
     <!-- Notify use that they are in Lock-to-app in accessibility mode -->
-    <string name="lock_to_app_toast_accessible">To unpin this screen, touch and hold Overview.</string>
+    <string name="lock_to_app_toast_accessible">To unpin this screen, touch &amp; hold Overview.</string>
     <!-- Notify user that they are locked in lock-to-app mode -->
     <string name="lock_to_app_toast_locked">App is pinned: Unpinning isn\'t allowed on this device.</string>
     <!-- Starting lock-to-app indication. -->
diff --git a/core/res/res/values/styles_material.xml b/core/res/res/values/styles_material.xml
index 8a33406..6752e3c 100644
--- a/core/res/res/values/styles_material.xml
+++ b/core/res/res/values/styles_material.xml
@@ -660,7 +660,7 @@
     </style>
 
     <style name="Widget.Material.TimePicker">
-        <item name="timePickerMode">@integer/time_picker_mode</item>
+        <item name="timePickerMode">clock</item>
         <item name="legacyLayout">@layout/time_picker_legacy_material</item>
         <!-- Attributes for new-style TimePicker. -->
         <item name="internalLayout">@layout/time_picker_material</item>
@@ -674,7 +674,7 @@
     </style>
 
     <style name="Widget.Material.DatePicker">
-        <item name="datePickerMode">@integer/date_picker_mode</item>
+        <item name="datePickerMode">calendar</item>
         <item name="legacyLayout">@layout/date_picker_legacy_holo</item>
         <item name="calendarViewShown">true</item>
         <!-- Attributes for new-style DatePicker. -->
diff --git a/core/res/res/values/symbols.xml b/core/res/res/values/symbols.xml
index 22b6b75..14c17f3 100644
--- a/core/res/res/values/symbols.xml
+++ b/core/res/res/values/symbols.xml
@@ -2256,7 +2256,8 @@
   <java-symbol type="string" name="prohibit_manual_network_selection_in_gobal_mode" />
   <java-symbol type="id" name="profile_button" />
 
-  <java-symbol type="bool" name="config_enableCascadingSubmenus" />
+  <!-- Cascading submenus -->
+  <java-symbol type="dimen" name="cascading_menus_min_smallest_width" />
 
   <!-- From SignalStrength -->
   <java-symbol type="integer" name="config_LTE_RSRP_threshold_type" />
@@ -2529,6 +2530,9 @@
   <java-symbol type="string" name="profile_encrypted_message" />
   <java-symbol type="drawable" name="ic_user_secure" />
 
+  <java-symbol type="string" name="android_upgrading_notification_title" />
+  <java-symbol type="string" name="android_upgrading_notification_body" />
+
   <java-symbol type="string" name="usb_mtp_launch_notification_title" />
   <java-symbol type="string" name="usb_mtp_launch_notification_description" />
 
diff --git a/core/res/res/values/themes_holo.xml b/core/res/res/values/themes_holo.xml
index 34c89fc..677051a 100644
--- a/core/res/res/values/themes_holo.xml
+++ b/core/res/res/values/themes_holo.xml
@@ -466,6 +466,9 @@
 
         <item name="editTextColor">?attr/textColorPrimary</item>
         <item name="editTextBackground">@drawable/edit_text_holo_light</item>
+        <item name="textEditSuggestionItemLayout">@layout/text_edit_suggestion_item</item>
+        <item name="textEditSuggestionContainerLayout">@layout/text_edit_suggestion_container</item>
+        <item name="textEditSuggestionHighlightStyle">@style/TextAppearance.Holo.SuggestionHighlight</item>
 
         <item name="candidatesTextStyleSpans">@string/candidates_style</item>
 
diff --git a/core/tests/utiltests/src/android/util/MemoryIntArrayTest.java b/core/tests/utiltests/src/android/util/MemoryIntArrayTest.java
new file mode 100644
index 0000000..6b31916
--- /dev/null
+++ b/core/tests/utiltests/src/android/util/MemoryIntArrayTest.java
@@ -0,0 +1,192 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.util;
+
+import android.os.Parcel;
+import junit.framework.TestCase;
+import libcore.io.IoUtils;
+
+public class MemoryIntArrayTest extends TestCase {
+
+    public void testSize() throws Exception {
+        MemoryIntArray array = null;
+        try {
+            array = new MemoryIntArray(3, false);
+            assertEquals("size must be three", 3, array.size());
+        } finally {
+            IoUtils.closeQuietly(array);
+        }
+    }
+
+    public void testGetSet() throws Exception {
+        MemoryIntArray array = null;
+        try {
+            array = new MemoryIntArray(3, false);
+
+            array.set(0, 1);
+            array.set(1, 2);
+            array.set(2, 3);
+
+            assertEquals("First element should be 1", 1, array.get(0));
+            assertEquals("First element should be 2", 2, array.get(1));
+            assertEquals("First element should be 3", 3, array.get(2));
+        } finally {
+            IoUtils.closeQuietly(array);
+        }
+    }
+
+    public void testWritable() throws Exception {
+        MemoryIntArray array = null;
+        try {
+            array = new MemoryIntArray(3, true);
+            assertTrue("Must be mutable", array.isWritable());
+        } finally {
+            IoUtils.closeQuietly(array);
+        }
+    }
+
+    public void testClose() throws Exception {
+        MemoryIntArray array = null;
+        try {
+            array = new MemoryIntArray(3, false);
+            array.close();
+            assertTrue("Must be closed", array.isClosed());
+        } finally {
+            if (array != null && !array.isClosed()) {
+                IoUtils.closeQuietly(array);
+            }
+        }
+    }
+
+    public void testMarshalledGetSet() throws Exception {
+        MemoryIntArray firstArray = null;
+        MemoryIntArray secondArray = null;
+        try {
+            firstArray = new MemoryIntArray(3, false);
+
+            firstArray.set(0, 1);
+            firstArray.set(1, 2);
+            firstArray.set(2, 3);
+
+            Parcel parcel = Parcel.obtain();
+            parcel.writeParcelable(firstArray, 0);
+            parcel.setDataPosition(0);
+            secondArray = parcel.readParcelable(null);
+            parcel.recycle();
+
+            assertNotNull("Should marshall file descriptor", secondArray);
+
+            assertEquals("First element should be 1", 1, secondArray.get(0));
+            assertEquals("First element should be 2", 2, secondArray.get(1));
+            assertEquals("First element should be 3", 3, secondArray.get(2));
+        } finally {
+            IoUtils.closeQuietly(firstArray);
+            IoUtils.closeQuietly(secondArray);
+        }
+    }
+
+    public void testInteractOnceClosed() throws Exception {
+        MemoryIntArray array = null;
+        try {
+            array = new MemoryIntArray(3, false);
+            array.close();
+
+            array.close();
+
+            try {
+                array.size();
+                fail("Cannot interact with a closed instance");
+            } catch (IllegalStateException e) {
+                /* expected */
+            }
+
+            try {
+                array.get(0);
+                fail("Cannot interact with a closed instance");
+            } catch (IllegalStateException e) {
+                /* expected */
+            }
+
+            try {
+                array.set(0, 1);
+                fail("Cannot interact with a closed instance");
+            } catch (IllegalStateException e) {
+                /* expected */
+            }
+
+            try {
+                array.isWritable();
+                fail("Cannot interact with a closed instance");
+            } catch (IllegalStateException e) {
+                /* expected */
+            }
+        } finally {
+            if (array != null && !array.isClosed()) {
+                IoUtils.closeQuietly(array);
+            }
+        }
+    }
+
+    public void testInteractPutOfBounds() throws Exception {
+        MemoryIntArray array = null;
+        try {
+            array = new MemoryIntArray(3, false);
+
+            try {
+                array.get(-1);
+                fail("Cannot interact out of array bounds");
+            } catch (IndexOutOfBoundsException e) {
+                /* expected */
+            }
+
+            try {
+                array.get(3);
+                fail("Cannot interact out of array bounds");
+            } catch (IndexOutOfBoundsException e) {
+                /* expected */
+            }
+
+            try {
+                array.set(-1, 0);
+                fail("Cannot interact out of array bounds");
+            } catch (IndexOutOfBoundsException e) {
+                /* expected */
+            }
+
+            try {
+                array.set(3, 0);
+                fail("Cannot interact out of array bounds");
+            } catch (IndexOutOfBoundsException e) {
+                /* expected */
+            }
+        } finally {
+            IoUtils.closeQuietly(array);
+        }
+    }
+
+    public void testOverMaxSize() throws Exception {
+        MemoryIntArray array = null;
+        try {
+            array = new MemoryIntArray(MemoryIntArray.getMaxSize() + 1, false);
+            fail("Cannot use over max size");
+        } catch (IllegalArgumentException e) {
+            /* expected */
+        } finally {
+            IoUtils.closeQuietly(array);
+        }
+    }
+}
diff --git a/data/etc/platform.xml b/data/etc/platform.xml
index 8a7d39b..a26850f 100644
--- a/data/etc/platform.xml
+++ b/data/etc/platform.xml
@@ -172,6 +172,10 @@
          access while in power save mode, even if they aren't in the foreground. -->
     <allow-in-power-save-except-idle package="com.android.providers.downloads" />
 
+    <!-- These are the standard packages that are white-listed to always have internet
+         access while in data mode, even if they aren't in the foreground. -->
+    <allow-in-data-usage-save package="com.android.providers.downloads" />
+
     <!-- These are the packages that are white-listed to be able to run as system user -->
     <system-user-whitelisted-app package="com.android.settings" />
 
diff --git a/data/sounds/alarms/material/ogg/Awaken_OG7_1ch_48k.ogg b/data/sounds/alarms/material/ogg/Awaken_OG7_1ch_48k.ogg
new file mode 100755
index 0000000..47b1d34
--- /dev/null
+++ b/data/sounds/alarms/material/ogg/Awaken_OG7_1ch_48k.ogg
Binary files differ
diff --git a/data/sounds/alarms/material/ogg/Bounce_OG7_1ch_48k.ogg b/data/sounds/alarms/material/ogg/Bounce_OG7_1ch_48k.ogg
new file mode 100755
index 0000000..6af4d70
--- /dev/null
+++ b/data/sounds/alarms/material/ogg/Bounce_OG7_1ch_48k.ogg
Binary files differ
diff --git a/data/sounds/alarms/material/ogg/Drip_OG7_1ch_48k.ogg b/data/sounds/alarms/material/ogg/Drip_OG7_1ch_48k.ogg
new file mode 100755
index 0000000..de3eec2
--- /dev/null
+++ b/data/sounds/alarms/material/ogg/Drip_OG7_1ch_48k.ogg
Binary files differ
diff --git a/data/sounds/alarms/material/ogg/Gallop_OG7_1ch_48k.ogg b/data/sounds/alarms/material/ogg/Gallop_OG7_1ch_48k.ogg
new file mode 100755
index 0000000..98549b3
--- /dev/null
+++ b/data/sounds/alarms/material/ogg/Gallop_OG7_1ch_48k.ogg
Binary files differ
diff --git a/data/sounds/alarms/material/ogg/Nudge_OG7_1ch_48k.ogg b/data/sounds/alarms/material/ogg/Nudge_OG7_1ch_48k.ogg
new file mode 100755
index 0000000..7a3d7ed
--- /dev/null
+++ b/data/sounds/alarms/material/ogg/Nudge_OG7_1ch_48k.ogg
Binary files differ
diff --git a/data/sounds/alarms/material/ogg/Orbit_OG7_1ch_48k.ogg b/data/sounds/alarms/material/ogg/Orbit_OG7_1ch_48k.ogg
new file mode 100755
index 0000000..52e3918
--- /dev/null
+++ b/data/sounds/alarms/material/ogg/Orbit_OG7_1ch_48k.ogg
Binary files differ
diff --git a/data/sounds/alarms/material/ogg/Rise_OG7_1ch_48k.ogg b/data/sounds/alarms/material/ogg/Rise_OG7_1ch_48k.ogg
new file mode 100755
index 0000000..a2d00cc
--- /dev/null
+++ b/data/sounds/alarms/material/ogg/Rise_OG7_1ch_48k.ogg
Binary files differ
diff --git a/data/sounds/alarms/material/ogg/Sway_OG7_1ch_48k.ogg b/data/sounds/alarms/material/ogg/Sway_OG7_1ch_48k.ogg
new file mode 100755
index 0000000..273728a
--- /dev/null
+++ b/data/sounds/alarms/material/ogg/Sway_OG7_1ch_48k.ogg
Binary files differ
diff --git a/data/sounds/alarms/material/ogg/Wag_OG7_1ch_48k.ogg b/data/sounds/alarms/material/ogg/Wag_OG7_1ch_48k.ogg
new file mode 100755
index 0000000..f61d5b9
--- /dev/null
+++ b/data/sounds/alarms/material/ogg/Wag_OG7_1ch_48k.ogg
Binary files differ
diff --git a/docs/html-intl/intl/es/preview/api-overview.jd b/docs/html-intl/intl/es/preview/api-overview.jd
new file mode 100644
index 0000000..02a13e7
--- /dev/null
+++ b/docs/html-intl/intl/es/preview/api-overview.jd
@@ -0,0 +1,676 @@
+page.title=Android N para desarrolladores
+meta.tags=“preview”, “Android N”
+page.tags="preview", "developer preview"
+page.image=images/cards/card-n-apis_2x.png
+@jd:body
+
+
+
+
+<div id="qv-wrapper">
+<div id="qv">
+  <h2>Funciones claves para desarrolladores</h2>
+  <ol>
+      <ul style="list-style-type:none;">
+        <li><a href="#multi-window_support">Compatibilidad con ventanas múltiples</a></li>
+        <li><a href="#notification_enhancements">Notificaciones</a></li>
+        <li><a href="#jit_aot">Compilación de JIT y AOT</a></li>
+        <li><a href="#quick_path_to_app_install">Acceso rápido a la instalación de aplicaciones</a></li>
+        <li><a href="#doze_on_the_go">Doze en movimiento</a></li>
+        <li><a href="#background_optimizations">Optimizaciones en segundo plano</a></li>
+        <li><a href="#data_saver">Ahorro de datos</a></li>
+        <li><a href="#tile_api">API para Mosaico de Configuración rápida</a></li>
+        <li><a href="#number-blocking">Bloqueo de números</a></li>
+        <li><a href="#call_screening">Filtración de llamadas</a></li>
+        <li><a href="#multi-locale_languages">Configuraciones regionales e idiomas</a></li>
+        <li><a href="#icu4">API de ICU4J en Android</a></li>
+        <li><a href="#gles_32">API de OpenGL ES 3.2</a></li>
+        <li><a href="#android_tv_recording">Grabación de Android TV</a></li>
+        <li><a href="#android_for_work">Android for Work</a></li>
+        <li><a href="#accessibility_enhancements">Accesibilidad</a></li>
+        <li><a href="#direct_boot">Inicio directo</a></li>
+        <li><a href="#key_attestation">Atestación de claves</a></li>
+        <li><a href="#network_security_config">Configuración de seguridad de la red</a></li>
+        <li><a href="#default_trusted_ca">CA de confianza predeterminada</a></li>
+        <li><a href="apk_signature_v2">Esquema de firma de APK v2</a></li>
+        <li><a href="#scoped_directory_access">Acceso a directorios determinados</a></li>
+      </ol>
+</div>
+</div>
+
+
+
+<p>Android N aún se encuentra en proceso activo de desarrollo, pero puedes probarlo
+ahora como parte de la N Developer Preview. En las secciones siguientes se destacan algunas de
+las nuevas funciones para desarrolladores. </p>
+
+<p>
+  Asegúrate de ver los <a href="{@docRoot}preview/behavior-changes.html">Cambios de comportamiento</a> para obtener información sobre
+  áreas en las cuales los cambios en las plataformas puedan tener efecto en tus aplicaciones, consultar las
+  guías del desarrollador para conocer mejor las funciones claves y descargar la <a href="{@docRoot}preview/setup-sdk.html#docs-dl">Referencia de la API</a> para obtener información sobre
+  API nuevas.
+</p>
+
+<h2 id="multi-window_support">Compatibilidad con ventanas múltiples</h2>
+
+
+<p>En Android N, presentamos una nueva y muy solicitada función multitarea 
+en la plataforma: la compatibilidad con ventanas múltiples. </p>
+
+  <p>Los usuarios ahora pueden abrir dos aplicaciones al mismo tiempo en la pantalla. </p>
+  <ul>
+  <li>En teléfonos y tabletas
+con Android N, los usuarios pueden ejecutar dos aplicaciones en paralelo 
+una encima otra en el modo de pantalla dividida. También tienen la posibilidad de modificar el tamaño de las aplicaciones arrastrando
+la línea divisoria que se encuentra entre ellas. </li>
+
+<li>En los dispositivos con Android TV, las aplicaciones pueden habilitar en forma automática el <a href="{@docRoot}preview/features/picture-in-picture.html">modo "picture-in
+-picture"</a>. Esto les permite continuar mostrando contenido mientras el usuario explora otras
+aplicaciones o interactúa con ellas. Consulta las secciones siguientes para obtener más información. </li>
+  </ul>
+
+<div class="col-4of10">
+<img src="{@docRoot}preview/images/mw-portrait.png" alt="" style="height:460px;padding-left:1em;" id="img-split-screen" />
+<p class="img-caption">
+  <strong>Figura 1:</strong> Aplicaciones en ejecución en el modo de pantalla dividida.
+</p>
+  </div>
+
+<p>En las tabletas, en particular, y en otros dispositivos de pantallas más grandes, la compatibilidad con ventanas múltiples
+ofrece nuevas maneras de captar a los usuarios. Puedes, incluso, habilitar acciones de arrastrar y soltar en
+tu aplicación para que los usuarios arrastren contenido hacia tu aplicación o desde ella; es una excelente
+manera de mejorar su experiencia. </p>
+
+<p>Es sencillo agregar compatibilidad con ventanas múltiples a tu aplicación y configurar la manera en que
+administra la visualización de estas ventanas. Por ejemplo, puedes especificar las dimensiones mínimas
+permitidas de tu actividad, y evitar así que los usuarios den a la actividad un tamaño inferior
+al que establecen estas. También puedes deshabilitar la visualización de ventanas múltiples para tu aplicación, lo cual
+  garantiza que en el sistema solo se muestre tu aplicación en el modo de pantalla completa.</p>
+
+<p>
+  Para obtener más información, consulta la documentación sobre <a href="{@docRoot}preview/features/multi-window.html">Compatibilidad con ventanas múltiples</a>
+para desarrolladores.
+</p>
+
+<h2 id="notification_enhancements">Mejoras en las notificaciones</h2>
+
+<p>En Android N, hemos rediseñado las notificaciones para facilitar y agilizar su
+uso. Entre los cambios se incluyen los siguientes:</p>
+
+<ul>
+  <li>
+    <strong>Actualizaciones en las plantillas</strong>: actualizaremos las plantillas de notificaciones para
+   poner nuevo énfasis en la imagen de héroe y el avatar. Los desarrolladores podrán
+    aprovechar las nuevas plantillas con una cantidad mínima de ajustes en su código.
+  </li>
+
+  <li>
+    <strong>Notificaciones agrupadas</strong>: el sistema puede agrupar mensajes
+    (por ejemplo, por tema) y mostrar el grupo. Un usuario puede
+    aplicar acciones, como “Dismiss” o “Archive”, en ellos. Si
+    has implementado notificaciones para Android Wear, ya estarás familiarizado con
+    este modelo.
+  </li>
+
+  <li>
+    <strong>Respuesta directa</strong>: en el caso de las aplicaciones de comunicación en tiempo real, el
+    sistema de Android admite respuestas en línea para que los usuarios puedan responder en forma rápida a
+    un mensaje SMS o de texto directamente dentro en la interfaz de notificaciones.
+  </li>
+
+  <li>
+    <strong>Vistas personalizadas</strong>: dos API nuevas te permiten aprovechar las decoraciones
+    del sistema, como los encabezados y las acciones de notificaciones, al usar vistas
+    personalizadas en las notificaciones.
+  </li>
+</ul>
+
+<div class="col-4of12">
+  <img src="{@docRoot}preview/images/notifications-1.png" alt="" style="padding:.5em;max-width:226px">
+</div>
+
+<div class="col-4of12">
+  <img src="{@docRoot}preview/images/notifications-3.png" alt="" style="padding:.5em;max-width:226px">
+</div>
+
+<div class="col-4of12">
+  <img src="{@docRoot}preview/images/notifications-2.png" alt="" style="padding:.5em;max-width:226px">
+</div>
+
+
+<p class="img-caption">
+  <strong>Figura 2:</strong> Notificaciones agrupadas y respuesta directa.
+</p>
+
+<p>Para obtener información acerca de cómo implementar las nuevas funciones, consulta la guía
+ 
+  <a href="{@docRoot}preview/features/notification-updates.html">Notificaciones</a>.</p>
+
+
+
+<h2 id="jit_aot">Compilación de JIT y AOT guiada por perfiles</h2>
+
+<p>En Android N, agregamos un compilador “Just in Time” (JIT) con generación de perfiles de código para
+ART, lo cual le permite mejorar constantemente el rendimiento de las aplicaciones de Android mientras se
+ejecutan. El compilador JIT complementa al compilador “Ahead of Time” (AOT) actual de ART
+y permite mejorar el rendimiento del tiempo de ejecución, ahorrar espacio de almacenamiento y acelerar las actualizaciones
+de aplicaciones y del sistema.</p>
+
+<p>La compilación guiada por perfiles permite que ART maneje la compilación de AOT y JIT de cada aplicación
+conforme a su uso real, además de las condiciones en el dispositivo. Por
+ejemplo, conserva un perfil de los métodos directos de cada aplicación, y puede compilar previamente
+y almacenar en el caché dichos métodos para obtener el mejor rendimiento. A su vez, deja otras partes de la aplicación
+sin compilar hasta que se aplican verdaderamente.</p>
+
+<p>Además de mejorar el rendimiento de partes claves de la aplicación, la compilación guiada por
+perfiles permite reducir la superficie de memora RAM total de una aplicación, incluidos los archivos binarios
+asociados. Esta función tiene particular importancia en los dispositivos de memoria reducida.</p>
+
+<p>ART administra la compilación guiada por perfiles de una manera que minimiza el impacto sobre la batería
+del dispositivo. Realiza compilaciones previas únicamente cuando el dispositivo se encuentra inactivo y
+en proceso de carga, con lo cual permite ahorrar tiempo y batería al hacer el trabajo en forma anticipada.</p>
+
+<h2 id="quick_path_to_app_install">Acceso rápido a la instalación de aplicaciones</h2>
+
+<p>Uno de los beneficios más palpables del compilador JIT de ART es la velocidad de instalación de las
+aplicaciones y de actualización del sistema. Incluso las aplicaciones de mayor tamaño, en cuyos casos se necesitaban varios minutos para la
+optimización y la instalación en Android 6.0, ahora pueden instalarse en cuestión de
+segundos. Las actualizaciones del sistema también son más rápidas debido a que ya no hay paso de optimización. </p>
+
+<h2 id="doze_on_the_go">Doze en movimiento...</h2>
+
+<p>En Android 6.0 se presentó Doze, un modo de sistema que ahorra batería al aplazar
+actividades de CPU y red de las aplicaciones cuando el dispositivo se encuentra inactivo; por ejemplo, al hallarse
+sobre una mesa o en un cajón. </p>
+
+<p>Ahora, en Android N, el modo Doze ofrece el beneficio adicional de ahorrar batería en movimiento.
+Siempre que la pantalla permanezca apagada durante un tiempo y el dispositivo esté desenchufado,
+Doze aplicará un subconjunto de las restricciones de CPU y red conocidas a las aplicaciones.
+Esto significa que los usuarios pueden ahorrar batería aun cuando lleven sus dispositivos
+en los bolsillos.</p>
+
+
+<img src="/preview/images/doze-diagram-1.png" alt="" id="figure1" />
+<p class="img-caption">
+  <strong>Figura 3:</strong> Doze ahora aplica
+  restricciones para prolongar la duración de la batería aun cuando el dispositivo no está quieto.
+</p>
+
+
+<p>Poco tiempo después de que la pantalla se apaga, cuando el dispositivo no está enchufado, Doze
+restringe el acceso a la red y aplaza tareas y sincronizaciones. Durante períodos de mantenimiento
+breves, las aplicaciones tienen acceso a la red y se ejecutan todas sus
+tareas y sincronizaciones aplazadas. Al encenderse la pantalla o enchufarse el dispositivo se desactiva el modo
+Doze del dispositivo.</p>
+
+<p>Cuando el dispositivo vuelve a estar quieto, desenchufado y con la pantalla apagada durante un
+tiempo, Doze aplica todas las restricciones de CPU y redes en {@link
+android.os.PowerManager.WakeLock}, alarmas de {@link android.app.AlarmManager} y análisis de
+GPS o Wi-Fi.</p>
+
+<p>Las prácticas recomendadas para adaptar tu aplicación a Doze no varían si el
+dispositivo estará en movimiento o no. Por lo tanto, si ya actualizaste tu aplicación para que administre
+Doze en forma equilibrada, estarás listo. Si no lo hiciste, comienza a <a href="{@docRoot}training/monitoring-device-state/doze-standby.html#assessing_your_app">adaptarla
+a Doze</a> ahora.</p>
+
+<h2 id="background_optimizations">Project Svelte: Optimizaciones en segundo plano</h2>
+
+<p>Project Svelte representa un esfuerzo constante por minimizar el uso de memoria RAM a través del sistema y de las aplicaciones
+en los diferentes dispositivos Android del ecosistema. En Android N, el objetivo principal de Project
+Svelte es optimizar la manera en que las aplicaciones se ejecutan en segundo plano. </p>
+
+<p>El procesamiento en segundo plano es una parte esencial de la mayoría de las aplicaciones. Cuando se maneja en forma adecuada, puede
+hacer que la experiencia de tu usuario sea increíble (inmediata, rápida y pertinente al contexto).
+Cuando no se maneja de tal manera, el procesamiento en segundo plano puede suponer un consumo innecesario de memoria RAM (y
+batería), y afectar el rendimiento del sistema para otras aplicaciones. </p>
+
+<p>A partir de Android 5.0, {@link android.app.job.JobScheduler} ha sido el
+método preferido para ejecutar tareas en segundo plano con resultados positivos
+para los usuarios. Las aplicaciones pueden programar tareas y, al mismo tiempo, permitir que el sistema se optimice según las condiciones de
+memoria, energía y conectividad. JobScheduler ofrece control y
+simpleza, y nuestro deseo es que todas las aplicaciones lo usen. </p>
+
+<p>
+  Otra buena opción es <a href="https://developers.google.com/android/reference/com/google/android/gms/gcm/GcmNetworkManager">
+  <code>GCMNetworkManager</code></a>, que forma parte de Google Play Services y
+  ofrece una capacidad similar de programación de tareas con compatibilidad en versiones heredadas de
+  Android.
+</p>
+
+<p>Continuaremos ampliando <code>JobScheduler</code> y
+<code>GCMNetworkManager</code> para que se apliquen a más
+casos de uso de tus aplicaciones; por ejemplo, en Android N ahora puedes programar procesos
+en segundo plano según los cambios de los proveedores de contenido. Al mismo tiempo, comenzaremos a
+dejar de usar algunos de los patrones anteriores que pueden reducir el rendimiento del sistema,
+en especial en dispositivos de memoria reducida.</p>
+
+<p>En Android N, eliminaremos tres difusiones implícitas que se usan normalmente (
+ {@link android.net.ConnectivityManager#CONNECTIVITY_ACTION}, {@link
+  android.hardware.Camera#ACTION_NEW_PICTURE} y {@link
+  android.hardware.Camera#ACTION_NEW_VIDEO}), ya que pueden activar los
+procesos en segundo plano de varias aplicaciones al mismo tiempo, y así exigir la memoria y la batería. Si
+tu aplicación recibe estas difusiones, aprovecha la N Developer Preview y
+  realiza la migración a <code>JobScheduler</code> y hacia las API relacionadas, como alternativa. </p>
+
+<p>
+  Para obtener información detallada, consulta la documentación de <a href="{@docRoot}preview/features/background-optimization.html">Optimizaciones
+  en segundo plano</a>.
+</p>
+
+
+<h2 id="data_saver">Ahorro de datos</h2>
+
+<div class="col-5of12" style="margin-right:1.5em;">
+<img src="{@docRoot}preview/images/datasaver.png" style="border:2px solid #ddd">
+
+<p class="img-caption" style="padding-right:2em;">
+  <strong>Figura 4:</strong> Ahorro de datos en la configuración.
+</p>
+  </div>
+
+<p>Durante la vida útil de un dispositivo móvil, el costo de un plan de datos móviles normalmente
+superará el costo del propio dispositivo. Para muchos usuarios, los datos móviles son un
+recurso costoso que desean conservar. </p>
+
+<p>En Android N se presenta el modo de ahorro de datos, un nuevo servicio del sistema que permite reducir
+el uso de datos móviles de las aplicaciones, ya sea con servicio de itinerancia, cerca del final del ciclo de facturación
+o con un paquete de datos prepagos. El ahorro de datos permite que los usuarios controlen la manera en que las aplicaciones
+usan los datos móviles y que los desarrolladores brinden un servicio más eficaz cuando el ahorro
+de datos se encuentra activo. </p>
+
+<p>Cuando un usuario habilita el ahorro de datos en <strong>Settings</strong> y el dispositivo está
+conectado a una red de uso medido, el sistema bloquea el uso de datos en segundo plano y ordena a las aplicaciones
+usar menos datos en primer plano siempre que sea posible (por ejemplo, limitando
+la tasa de bits para la transmisión, reduciendo la calidad de la imagen y aplazando el valor optimista de almacenamiento previo en caché,
+entre otras posibilidades). Los usuarios pueden permitir que aplicaciones específicas habiliten el uso de datos medidos en segundo plano
+aun cuando esté activo el ahorro de datos.</p>
+
+<p>Android N extiende {@link android.net.ConnectivityManager} para que las aplicaciones
+tengan una manera de <a href="{@docRoot}preview/features/data-saver.html#status">recuperar las
+preferencias de ahorro de datos del usuario</a> y los <a href="{@docRoot}preview/features/data-saver.html#monitor-changes">monitor
+cambios en estas</a>. Todas las aplicaciones deben verificar si el usuario habilitó el ahorro de
+datos e intentar limitar el uso de datos en primer y segundo plano.</p>
+
+
+<h2 id="tile_api">API para Mosaico de Configuración rápida</h2>
+
+
+<div style="float:right;max-width:320px">
+<img src="{@docRoot}preview/images/quicksettings.png" style="padding-left:1.5em;">
+
+<p class="img-caption" style="padding-left:2em;">
+  <strong>Figura 5:</strong> Mosaicos de Quick Settings del panel de notificaciones.
+</p>
+
+
+  </div><p>Quick Settings es una manera popular y simple de exhibir configuraciones y acciones claves
+directamente desde el panel de notificaciones. En Android N, expandimos el alcance de
+Quick Settings para que sea más útil y práctico. </p>
+
+<p>Agregamos más espacio para mosaicos adicionales de Quick Settings, a los cuales los usuarios pueden
+acceder desde un área de visualización paginada deslizando el dedo hacia la izquierda o la derecha. También permitimos
+que los usuarios determinen los mosaicos de Quick Settings que aparecerán y los puntos en los cuales
+se mostrarán; pueden agregar o mover mosaicos con solo arrastrarlos y soltarlos. </p>
+
+<p>Para los desarrolladores, en Android N también se agrega una nueva API que les permite definir mosaicos de
+  Quick Settings propios para facilitar, dentro de sus aplicaciones, el acceso a controles y acciones claves por parte de los usuarios.</p>
+
+<p>
+  Los mosaicos de Quick Settings se reservan para controles o acciones que se necesiten
+  con urgencia o se usen con frecuencia; no deben emplearse como accesos directos para
+  iniciar una aplicación.
+</p>
+
+<p>
+  Una vez que hayas definido tus mosaicos, puedes dejarlos a disposición de los usuarios, quienes tendrán la posibilidad de agregarlos
+  a Quick Settings con solo arrastrarlos y soltarlos.
+</p>
+
+<p>
+  Para obtener información sobre la creación de un mosaico de aplicación, consulta
+  <code>android.service.quicksettings.Tile</code> en la <a href="{@docRoot}preview/setup-sdk.html#docs-dl">Referencia de la API</a> descargable.
+</p>
+
+
+
+<h2 id="number-blocking">Bloqueo de números</h2>
+
+<p>Android N ahora admite el bloqueo de números en la plataforma y proporciona una API
+de framework para que los proveedores de servicios dispongan de una lista con números bloqueados. La
+aplicación de SMS predeterminada, la aplicación telefónica predeterminada y las aplicaciones de proveedores tienen capacidad de lectura y
+escritura en la lista de números bloqueados. Otras aplicaciones no pueden acceder a la lista.</p>
+
+<p>Al hacer que el bloqueo de números sea una función estándar de la plataforma, Android permite que las
+aplicaciones admitan de manera uniforme el bloqueo de números en una amplia variedad de
+dispositivos. Entre los demás beneficios que pueden aprovecharse en las aplicaciones, se encuentran los siguientes:</p>
+
+<ul>
+  <li> Los números bloqueados en las llamadas también se bloquean en los mensajes de texto.
+  <li> Los números bloqueados pueden perdurar tras procesos de restablecimiento y cambios de dispositivos con la función Backup &amp;
+Restore.
+  <li> Varias aplicaciones pueden usar la misma lista de números bloqueados.
+</ul>
+
+<p>De manera adicional, la integración de aplicaciones de proveedores a través de Android permite que estos
+lean la lista de números bloqueados del dispositivo y realicen un bloqueo de servicio
+para el usuario, a fin de evitar que el usuario reciba llamadas o mensajes de texto no deseados
+por cualquier medio, como terminales VOIP o teléfonos con transferencia de llamadas.</p>
+
+<p>
+  Para obtener más información, consulta <code>android.provider.BlockedNumberContract</code>
+  en la <a href="{@docRoot}preview/setup-sdk.html#docs-dl">Referencia de la API
+  </a>descargable.
+</p>
+
+<h2 id="call_screening">Filtración de llamadas</h2>
+
+<p>
+  Android N permite que la aplicación predeterminada de un teléfono filtre las llamadas entrantes. La aplicación
+  hace esto a través del nuevo <code>CallScreeningService</code>,
+  que le permite realizar varias acciones según la clase
+  {@link android.telecom.Call.Details Call.Details} de la llamada entrante. Algunos ejemplos:
+</p>
+
+<ul>
+  <li> rechazar la llamada entrante;
+  <li> no permitir el ingreso de la llamada en el registro de llamadas;
+  <li> no mostrar al usuario una notificación de la llamada.
+</ul>
+
+<p>
+  Para obtener más información, consulta <code>android.telecom.CallScreeningService</code>
+  en la <a href="{@docRoot}preview/setup-sdk.html#docs-dl">Referencia de la API
+  </a>descargable.
+</p>
+
+
+<h2 id="multi-locale_languages">Compatibilidad con varias configuraciones regionales y más idiomas</h2>
+
+
+<p>Android N permite a los usuarios seleccionar <strong>varias configuraciones regionales</strong> en Settings,
+para brindar una mejor compatibilidad con casos de uso de dos idiomas. Las aplicaciones pueden usar
+una nueva API para obtener las configuraciones regionales seleccionadas del usuario y luego ofrecer experiencias
+más sofisticadas para usuarios que usen varias configuraciones regionales; por ejemplo, pueden mostrar resultados de búsqueda en
+varios idiomas y no ofrecer traducciones de páginas web con idiomas que el
+usuario conozca.</p>
+
+<p>Además de la compatibilidad con varias configuraciones regionales, en Android N también se amplía la variedad de idiomas
+disponibles para los usuarios. Se ofrecen 25 variantes, cada una de ellas para idiomas de uso
+común, como el inglés, el español, el francés y el árabe. También se agrega compatibilidad
+parcial con más de 100 idiomas nuevos.</p>
+
+<p>Las aplicaciones pueden obtener la lista de configuraciones regionales establecida por el usuario llamando a <code>LocaleList.GetDefault()</code>.  A fin de admitir la cantidad ampliada de configuraciones regionales, en Android N se modificará la forma de
+resolver recursos. Asegúrate de controlar que tus aplicaciones
+funcionen de la manera esperada con la nueva lógica de resolución de recursos.</p>
+
+<p>Para obtener información sobre el nuevo comportamiento de resolución de recursos y las prácticas recomendadas que
+debes aplicar, consulta <a href="{@docRoot}preview/features/multilingual-support.html">Compatibilidad con varios idiomas</a>.</p>
+
+<h2 id="icu4">API de ICU4J en Android</h2>
+
+<p>
+  Android N ahora ofrece un subconjunto de API de <a href="http://site.icu-project.org/">ICU4J</a> dentro del framework de Android, en el paquete
+  <code>android.icu</code>. La migración es sencilla y en mayor medida implica
+  simplemente un cambio del espacio de nombres <code>com.java.icu</code> a
+  <code>android.icu</code>. Si ya usas el paquete ICU4J en tus
+  aplicaciones, el cambio a las API de <code>android.icu</code> en el framework de Android
+  puede reducir notablemente el tamaño del APK.
+</p>
+
+<p>
+  Para obtener más información sobre las API de ICU4J de Android, consulta <a href="{@docRoot}preview/features/icu4j-framework.html">Compatibilidad con ICU4J</a>.
+</p>
+
+
+
+<h2 id="gles_32">API&trade; de OpenGL ES 3.2</h2>
+
+<p>En Android N se agregan interfaces de framework y compatibilidad con plataformas para OpenGL ES 3.2, entre las que se incluye lo siguiente:</p>
+
+<ul>
+  <li> todas las extensiones del <a class="external-link" href="https://www.khronos.org/registry/gles/extensions/ANDROID/ANDROID_extension_pack_es31a.txt">paquete de extensiones de Android</a></a> (AEP), a excepción de <code>EXT_texture_sRGB_decode</code>;
+  <li> búferes de fotogramas de punto flotante para HDR y sombreado aplazado;
+  <li> llamadas a draw a través de BaseVertex para mejorar el procesamiento por lotes y la transmisión;
+  <li> sólido control de acceso a búfer para reducir la sobrecarga de WebGL.
+</ul>
+
+<p>En Android N, la API de framework para OpenGL ES 3.2 se proporciona con la clase
+<code>GLES32</code>. Al usar OpenGL ES 3.2, asegúrate de declarar el
+requisito en tu archivo de manifiesto, con la etiqueta <code>&lt;uses-feature&gt;</code> y el
+atributo <code>android:glEsVersion</code>. </p>
+
+<p>Para obtener información sobre el uso de OpenGL ES, incluida la manera de comprobar la
+versión de OpenGL ES que admite el dispositivo durante el tiempo de ejecución, consulta la<a href="{@docRoot}guide/topics/graphics/opengl.html">guía de la API OpenGL ES</a>.</p>
+
+
+<h2 id="android_tv_recording">Grabación de Android TV</h2>
+
+<p>En Android N se agrega la capacidad de grabar y reproducir contenido de servicios
+de entrada de Android TV a través de las nuevas API de grabación.  Aprovechando las mejoras existentes de las API time shifting
+, los servicios de entrada de TV pueden controlar los datos de canales que pueden grabarse y la manera
+en que se guardan las sesiones grabadas, y administrar la interacción del usuario con el contenido grabado. </p>
+
+<p>Para obtener más información, consulta <a href="{@docRoot}preview/features/tv-recording-api.html">API de grabación de Android TV</a>.</p>
+
+
+<h2 id="android_for_work">Android for Work</h2>
+
+<p>Android for Work suma muchas funciones y API nuevas para dispositivos con Android N.
+A continuación, se muestran algunos aspectos destacados. Para hallar una lista completa de actualizaciones de Android for Work
+relacionadas con Android N, consulta la sección de cambios en Android for Work.</p>
+
+<h3 id="work_profile_security_challenge">Comprobación de seguridad para perfiles de trabajo </h3>
+
+<p>
+  Quienes posean perfiles pueden especificar una comprobación de seguridad separada para aplicaciones que se ejecuten en el
+  perfil de trabajo. La comprobación para perfiles de trabajo se muestra cuando un usuario intenta abrir
+  aplicaciones de trabajo. Cuando la comprobación de seguridad es exitosa, se desbloquea el
+  perfil de trabajo y se descifra si es necesario. Para quienes posean perfiles,
+  <code>ACTION_SET_NEW_PASSWORD</code> solicita al usuario establecer una comprobación de
+  trabajo y <code>ACTION_SET_NEW_PARENT_PROFILE_PASSWORD</code> le solicita
+  establecer un bloqueo de dispositivo.
+</p>
+
+<p>
+  Quienes posean perfiles pueden establecer políticas de contraseñas diferentes
+  (por ejemplo, la extensión que debe tener el PIN o la posibilidad de usar una huella digital
+  para desbloquear el perfil) usando <code>setPasswordQuality()</code>,
+  <code>setPasswordMinimumLength()</code> y métodos relacionados. También
+  pueden establecer el bloqueo del dispositivo usando la instancia de <code>DevicePolicyManager</code>
+  devuelta por el nuevo método <code>getParentProfileInstance()</code>.
+  Además, tiene la posibilidad de personalizar la pantalla de credenciales de la
+  comprobación de trabajo usando los nuevos métodos <code>setOrganizationColor()</code> y
+  <code>setOrganizationName()</code>.
+</p>
+<h3 id="turn_off_work">Desactivación del modo de trabajo </h3>
+
+<p>En dispositivos con perfil de trabajo, los usuarios pueden alternar el modo de trabajo. Cuando este último está
+inactivo, el usuario administrado queda deshabilitado temporalmente, con lo cual se desactivan las aplicaciones de perfiles
+de trabajo, la sincronización en segundo plano y las notificaciones. Esto incluye la aplicación del propietario del
+perfil. Cuando el modo de trabajo está inactivo, en el sistema se muestra un icono de estado persistente
+para recordar al usuario que no puede iniciar aplicaciones de trabajo. El lanzador
+indica que no es posible acceder a aplicaciones ni widgets de trabajo. </p>
+
+<h3 id="always_on_vpn">Always on VPN </h3>
+
+<p>Los propietarios de dispositivos y perfiles pueden asegurarse de que las aplicaciones de trabajo siempre se conecten
+a través de una VPN especificada. El sistema inicia dicha VPN en forma automática después del
+inicio del dispositivo.</p>
+
+<p>
+  Los nuevos métodos de <code>DevicePolicyManager</code> son
+  <code>setAlwaysOnVpnPackage()</code> y
+  <code>getAlwaysOnVpnPackage()</code>.
+</p>
+
+<p>Debido a que los servicios de VPN pueden enlazarse directamente a través del sistema sin interacción con
+aplicaciones, los clientes de VPN deben administrar nuevos puntos de entrada para Always on VPN. Al igual que
+antes, los servicios se indican al sistema con una clase <code>android.net.VpnService</code> de acción de coincidencia de filtro
+de intenciones. </p>
+
+<p>
+  Los usuarios también pueden establecer clientes Always on VPN que implementen métodos
+  <code>VPNService</code> en el usuario principal con
+  <strong>Settings&gt;More&gt;Vpn</strong>.
+</p>
+
+<h2 id="accessibility_enhancements">Mejoras de accesibilidad</h2>
+
+<p>Android N ahora ofrece Vision Settings directamente en la pantalla de Bienvenida para la configuración de
+dispositivos nuevos. Esto permite a los usuarios descubrir y configurar de manera mucho más sencilla
+funciones de accesibilidad en sus dispositivos, como el gesto de ampliación, el tamaño
+de fuente, el tamaño de pantalla y TalkBack. </p>
+
+<p>Al tener estas funciones de accesibilidad una disposición más prominente, es más probable
+que tus usuarios prueben tu aplicación con ellas habilitadas. Asegúrate de probar tus aplicaciones
+en forma anticipada con esta configuración habilitada. Puedes activarla en Settings &gt;
+Accessibility.</p>
+
+<p>Otra posibilidad en Android N: los servicios de accesibilidad ahora pueden asistir a los usuarios con discapacidades
+motoras para el uso de la pantalla. La nueva API permite crear servicios con
+funciones como el seguimiento de rostros u ojos y la exploración por puntos, entre otros, para satisfacer
+las necesidades de estos usuarios.</p>
+
+<p>Para obtener más información, consulta <code>android.accessibilityservice.GestureDescription</code>
+	en la <a href="{@docRoot}preview/setup-sdk.html#docs-dl">Referencia de la API  </a>descargable.</p>
+
+
+<h2 id="direct_boot">Inicio directo</h2>
+
+<p>El inicio directo optimiza los tiempos de inicio del dispositivo y permite una funcionalidad
+limitada de las aplicaciones aun después de un reinicio inesperado.
+Por ejemplo, si un dispositivo cifrado se reinicia mientras el usuario duerme,
+este último puede continuar recibiendo en forma normal notificaciones de alarmas, llamadas entrantes y mensajes
+registrados. Esto también significa que los servicios de accesibilidad también pueden estar
+  disponibles de inmediato después de un reinicio.</p>
+
+<p>El inicio directo aprovecha el cifrado basado en archivos de Android N,
+a fin de habilitar políticas de cifrado específicas para datos del sistema y de aplicaciones.
+El sistema usa un depósito cifrado por el dispositivo para datos de sistema seleccionados y datos de aplicaciones
+explícitamente registrados. En forma predeterminada, se usa un depósito cifrado con credenciales para los
+  datos de sistema, los datos de usuario, las aplicaciones y los datos de aplicaciones restantes. </p>
+
+<p>Durante el inicio, el sistema se carga en un modo restringido con acceso únicamente
+a datos cifrados por el dispositivo y sin acceso general a aplicaciones o datos.
+Si hay componentes que deseas ejecutar en este modo, puedes registrarlos
+configurando un marcador en el manifiesto. Después del reinicio, el sistema activa
+componentes registrados transmitiendo la intención
+ <code>LOCKED_BOOT_COMPLETED</code>. El sistema garantiza que estén disponibles los datos de aplicaciones cifrados por el dispositivo
+antes de la desactivación del bloqueo. No es posible acceder a los demás datos hasta que el usuario confirme sus credenciales de pantalla de
+  bloqueo para descifrarlos. </p>
+
+Para obtener más información, consulta <a href="{@docRoot}preview/features/direct-boot.html">Inicio directo</a>.</p>
+</p>
+
+
+<h2 id="key_attestation">Atestación de claves</h2>
+
+<p>Los depósitos de claves guardados en hardware proporcionan un método mucho más seguro para crear, almacenar
+y usar claves criptográficas en dispositivos Android. Protegen las claves contra funciones del kernel de
+Linux, vulnerabilidades potenciales de Android y extracciones
+de dispositivos con derechos de administrador.</p>
+
+<p>Para hacer más sencillo y seguro el uso de depósitos de claves guardados en hardware,
+en Android N se presenta la atestación de claves. En las aplicaciones y en los servicios que no dependen de los dispositivos se puede usar la atestación
+de claves para determinar fehacientemente el almacenamiento de un par de claves RSA o EC se
+en hardware, las propiedades de dicho par y las
+  limitaciones aplicadas a su uso y validez. </p>
+
+<p>Los servicios que no dependen de los dispositivos y las aplicaciones pueden solicitar información acerca de un par de claves
+a través de un certificado de atestación X.509 que debe firmarse con una clave de atestación
+válida. La claves de atestación es una clave de firma ECDSA que se
+inyecta en el depósito de claves guardado en hardware en la fábrica.
+Por lo tanto, un certificado de atestación firmado con una clave de atestación
+válida confirma la existencia de un depósito de claves guardado en hardware y de información detallada
+  sobre los pares de claves en dicho depósito de claves.</p>
+
+<p>Para asegurarse de que el dispositivo use una imagen segura y oficial de fábrica de
+Android, la atestación de claves solicita que el <a class="external-link" href="https://source.android.com/security/verifiedboot/verified-boot.html#bootloader_requirements">bootloader</a>
+del dispositivo proporcione la siguiente información al <a class="external-link" href="https://source.android.com/security/trusty/index.html">entorno de ejecución
+seguro (TEE)</a>:</p>
+
+<ul>
+<li>la versión del SO y el nivel de revisión instalados en el dispositivo;</li>
+<li>la clave pública de <a href="https://source.android.com/security/verifiedboot/index.html" class="external-link">Verified Boot</a> y el estado de bloqueo.</li>
+  </ul>
+
+<p>Para obtener más información sobre la función de depósitos de claves guardados en hardware,
+consulta la guía de<a href="https://source.android.com/security/keystore/" class="external-link">Depósito de clave guardado en hardware</a>.</p>
+
+<p>Además de la atestación de claves, en Android N también se presentan
+  claves enlazadas a huellas digitales no revocadas en la inscripción con estas huellas.</p>
+
+<h2 id="network_security_config">Configuración de seguridad de la red</h2>
+
+<p>En Android N, las aplicaciones pueden personalizar el comportamiento de sus conexiones protegidas (HTTPS y TLS)
+en forma segura, sin modificaciones en el código, a través de la
+<em>Configuración de seguridad de la red</em> en lugar de las API
+convencionales, propensas a generar errores (p. ej., X509TrustManager).</p>
+
+  <p>Funciones admitidas:</p>
+<ul>
+<li><b>Anclajes de veracidad personalizados:</b> permite personalizar a través a una aplicación las
+entidades de certificación (CA) de confianza para las conexiones protegidas; por
+ejemplo, certificados con firmas automáticas en particular o un conjunto de CA públicas.
+</li>
+<li><b>Anulaciones exclusivas de depuración:</b> permite que un desarrollador depure en forma segura
+conexiones protegidas de sus aplicaciones sin riesgos adicionales para la base
+instalada.
+</li>
+<li><b>Desactivación de tráfico de Cleartext:</b> permite que una aplicación se proteja a sí misma contra
+el uso accidental de tráfico de Cleartext.</li>
+<li><b>Fijación de certificados:</b> función avanzada que permite a una aplicación
+  limitar las claves de servidores en las que se pueda confiar para conexiones protegidas.</li>
+</ul>
+
+<p>Para obtener más información, consulta <a href="{@docRoot}preview/features/security-config.html">Configuración de seguridad de
+la red</a>.</p>
+
+<h2 id="default_trusted_ca">Entidad de certificación de confianza predeterminada</h2>
+
+<p>De manera predeterminada, en las aplicaciones orientadas a Android N solo se consideran como confiables los certificados proporcionados por el sistema
+y ya no se da esta misma consideración a las entidades de certificación (CA) añadidas por usuarios. En aquellas aplicaciones orientadas a Android
+N para las cuales se desee considerar tales CA como válidas, se debe usar la
+<a href="{@docRoot}preview/features/security-config.html">Configuración de seguridad de la red</a> a fin de
+especificar los términos de confianza de dichas CA.</p>
+
+<h2 id="apk_signature_v2">Esquema de firma de APK v2</h2>
+
+<p>La clase PackageManager ahora admite la verificación de aplicaciones con el esquema
+de firma de APK v2. Se trata de un esquema de firma de archivos completos
+que agiliza considerablemente la verificación y refuerza las garantías de
+  integridad al detectar todos los cambios no autorizados en archivos APK.</p>
+
+<p>Para conservar la compatibilidad con versiones anteriores, se debe firmar un APK con el esquema de firma
+v1 (esquema de firma JAR) antes de la firma con el esquema de firma v2.
+Si se usa este último, la verificación experimenta errores cuando se firma el APK con un
+  certificado adicional después de la firma con el esquema v2. </p>
+
+<p>Se ofrecerá disponibilidad con el esquema de firma de APK v2 más adelante en la N Developer
+Preview.</p>
+
+<h2 id="scoped_directory_access">Acceso a directorios determinados</h2>
+
+<p>En Android N, las aplicaciones pueden usar nuevas API para solicitar acceso a directorios de<a href="{@docRoot}guide/topics/data/data-storage.html#filesExternal">almacenamiento
+externo</a> específicos, incluidos los directorios de medios extraíbles, como las tarjetas
+SD. Las nuevas API simplifican enormemente la manera en que tu aplicación accede a directorios
+de almacenamiento externo estándares, como <code>Pictures</code>. Las aplicaciones
+de fotografía pueden usar estas API en lugar de
+<code>READ_EXTERNAL_STORAGE</code>, que otorga acceso a todos los directorios
+de almacenamiento, o del framework de acceso a almacenamiento, con el cual el usuario debe navegar hasta
+el directorio.</p>
+
+<p>A su vez, las nuevas API simplifican los pasos que un usuario debe seguir para otorgar a tu aplicación acceso a almacenamiento
+externo. Cuando se usan las nuevas API, el sistema emplea una IU de
+permisos simple en la que se detallan claramente los directorios a los cuales
+la aplicación solicita acceso.</p>
+
+<p>Para obtener más información, consulta la documentación sobre 
+<a href="{@docRoot}preview/features/scoped-folder-access.html">Acceso
+a directorios determinados</a> para desarrolladores.</p>
+
+
+
+
+
+
diff --git a/docs/html-intl/intl/es/preview/behavior-changes.jd b/docs/html-intl/intl/es/preview/behavior-changes.jd
new file mode 100644
index 0000000..fdc8546
--- /dev/null
+++ b/docs/html-intl/intl/es/preview/behavior-changes.jd
@@ -0,0 +1,480 @@
+page.title=Cambios en los comportamientos
+page.keywords=preview,sdk,compatibility
+meta.tags=“preview”, “compatibilidad”
+page.tags="preview", "developer preview"
+page.image=images/cards/card-n-changes_2x.png
+@jd:body
+
+
+<div id="qv-wrapper">
+<div id="qv">
+
+<h2>Contenido del documento</h2>
+
+<ol>
+  <li><a href="#perf">Mejoras de rendimiento</a>
+    <ol>
+      <li><a href="#doze">Doze</a></li>
+      <li><a href="#bg-opt">Optimizaciones en segundo plano</a></li>
+    </ol>
+  </li>
+  <li><a href="#perm">Cambios en los permisos</a></li>
+  <li><a href="#accessibility">Mejoras de accesibilidad</a>
+    <ol>
+      <li><a href="#screen-zoom">Zoom de la pantalla</a></li>
+      <li><a href="#vision-settings">Vision Settings en el asistente de configuración</a></li>
+    </ol>
+  </li>
+  <li><a href="#ndk">Aplicaciones de NDK con vínculos a bibliotecas de plataformas</a></li>
+  <li><a href="#afw">Android for Work</a></li>
+</ol>
+
+<h2>Consulta también</h2>
+<ol>
+  <li><a href="{@docRoot}preview/api-overview.html">
+    Información general sobre la API de Android N</a></li>
+</ol>
+
+</div>
+</div>
+
+
+<p>
+  Además de nuevas funciones y capacidades, en Android N
+  se incluyen varios cambios en el comportamiento del sistema y de las API. En este documento
+  se destacan algunos de los cambios principales que debes comprender y tener en cuenta
+  en tus aplicaciones.
+</p>
+
+<p>
+  Si publicaste anteriormente una aplicación para Android, ten en cuenta que tu aplicación
+  podría verse afectada por estos cambios en la plataforma.
+</p>
+
+
+<h2 id="perf">Mejoras de rendimiento</h2>
+
+<p>
+  Android N contiene cambios en el comportamiento del sistema destinados a lograr mejoras en la duración
+  de las baterías de los dispositivos, el uso de la memoria RAM y el rendimiento de las aplicaciones. Estos cambios pueden tener efecto en la
+  disponibilidad de recursos y notificaciones de sistema para tu aplicación. Debes
+  revisar estos cambios y evaluar las posibles formas en que tu aplicación deba adecuarse a
+  ellas.
+</p>
+
+<h3 id="doze">Doze</h3>
+
+<p>
+  Doze, presentado en Android 6.0 (nivel de API 23), prolonga la duración de la batería
+  aplazando actividades de CPU y red cuando un usuario deja un dispositivo desenchufado,
+  quieto y con la pantalla apagada. En Android N se ofrecen más
+  mejoras para Doze a través de la aplicación de un subconjunto de restricciones de CPU y red
+  mientras el dispositivo se encuentra desenchufado y con la pantalla apagada, aunque no necesariamente
+  quieto; por ejemplo, al ir dentro del bolsillo de un usuario en movimiento.
+</p>
+
+
+<img src="{@docRoot}preview/images/doze-diagram-1.png" alt="" height="251px" id="figure1" />
+<p class="img-caption">
+  <strong>Figura 1:</strong> Ilustración del modo en que Doze aplica un primer nivel de
+  restricciones de actividad del sistema para prolongar la duración de la batería.
+</p>
+
+<p>
+  Cuando un dispositivo funciona con la batería y la pantalla permanece apagada durante un tiempo
+  determinado, se activa en este el modo Doze y se aplica el primer subconjunto de restricciones: se desactiva
+  el acceso de las aplicaciones a la red y se aplazan tareas y sincronizaciones. Si el dispositivo
+  permanece quieto durante un tiempo determinado tras activarse el modo Doze, el sistema aplica el
+  resto de las restricciones del modo a alarmas de {@link android.os.PowerManager.WakeLock},
+  {@link android.app.AlarmManager} y análisis de GPS o Wi-Fi. Independientemente de que
+  se apliquen algunas o todas las restricciones del modo Doze, el sistema activa el
+  dispositivo durante plazos de mantenimiento breves en los cuales las aplicaciones tienen
+  acceso a la red y pueden ejecutar sincronizaciones o procesos aplazados.
+</p>
+
+
+<img src="{@docRoot}preview/images/doze-diagram-2.png" alt="" id="figure2" />
+<p class="img-caption">
+  <strong>Figura 2:</strong> Ilustración del modo en que Doze aplica un segundo nivel de
+  restricciones de actividad del sistema después de que el dispositivo permanece quieto durante un tiempo determinado.
+</p>
+
+<p>
+  Ten en cuenta que cuando se activar la pantalla o se enchufa el dispositivo se desactiva el modo Doze y
+  se retiran estas restricciones de procesamiento. El comportamiento adicional no
+  tiene efecto sobre las recomendaciones ni las prácticas recomendadas para adaptar tu aplicación a la versión
+  anterior de Doze, presentada en Android 6.0 (nivel de API 23), según lo descrito en
+  <a href="{@docRoot}training/monitoring-device-state/doze-standby.html">
+  Optimización para Doze y App Standby</a>. De todos modos, debes
+  seguir las recomendaciones; por ejemplo, la de usar Google Cloud Messaging (GCM) para
+  enviar y recibir mensajes, y la de planificar actualizaciones para considerar
+  el comportamiento adicional de Doze.
+</p>
+
+
+<h3 id="bg-opt">Project Svelte: Optimizaciones en segundo plano</h3>
+
+<p>
+  En Android N se eliminan tres difusiones implícitas para optimizar el uso de la
+  memoria y el consumo de energía. Este cambio es necesario porque las difusiones
+  implícitas a menudo inician aplicaciones que se registran para realizar un seguimiento de ellas en
+  segundo plano. La eliminación de estas difusiones puede mejorar sustancialmente el rendimiento
+  del dispositivo y la experiencia del usuario.
+</p>
+
+<p>
+  Los dispositivos móviles están sujetos a cambios de conectividad frecuentes
+  entre los modos de datos Wi-Fi y móviles. Actualmente, las aplicaciones pueden realizar controles en busca de cambios en la
+  conectividad registrando un receptor para la difusión implícita {@link
+  android.net.ConnectivityManager#CONNECTIVITY_ACTION} en su
+  manifiesto. Debido a que muchas aplicaciones se registran para recibir esta difusión, un cambio de
+  red puede hacer que todas se activen y procesen la difusión a la
+  vez.
+</p>
+
+<p>
+  Asimismo, las aplicaciones pueden registrarse para recibir las difusiones implícitas {@link
+  android.hardware.Camera#ACTION_NEW_PICTURE} y {@link
+  android.hardware.Camera#ACTION_NEW_VIDEO} de otras aplicaciones, como la
+  cámara. Cuando un usuario toma una foto con la aplicación de la cámara, estas aplicaciones se activan
+  para procesar la difusión.
+</p>
+
+<p>
+  Para corregir estos problemas, en Android N se aplican las siguientes
+  optimizaciones:
+</p>
+
+<ul>
+  <li>Las aplicaciones orientadas a Android N no reciben difusiones {@link
+  android.net.ConnectivityManager#CONNECTIVITY_ACTION}, aún cuando contengan
+  entradas de manifiesto que les permitan solicitar notificaciones de estos eventos. No obstante, las aplicaciones que se ejecuten
+  en primer plano pueden realizar el seguimiento de {@code CONNECTIVITY_CHANGE} en sus subprocesos
+  principales si solicitan notificación a través de {@link
+  android.content.BroadcastReceiver}.
+  </li>
+
+  <li>Las aplicaciones no pueden enviar ni recibir difusiones {@link
+  android.hardware.Camera#ACTION_NEW_PICTURE} ni {@link
+  android.hardware.Camera#ACTION_NEW_VIDEO}. Esta optimización
+  afecta a todas las aplicaciones, no solo a las que estén orientadas a Android N.
+  </li>
+</ul>
+
+<p>
+  En versiones futuras de Android, es posible que dejen de usarse más difusiones implícitas y
+  servicios en segundo plano no asociados. Por esta razón, debes evitar dependencias en receptores declarados en manifiestos para difusiones implícitas o
+  eliminarlas de ellos,
+  y aplicar lo mismo a los servicios en segundo plano.
+</p>
+
+<p>
+  El framework de Android proporciona varias soluciones para reducir la necesidad de
+  difusiones implícitas o servicios en segundo plano. Por ejemplo, la API de {@link
+  android.app.job.JobScheduler} proporciona un mecanismo sólido para programar
+  operaciones de red cuando se cumplen condiciones especificadas, como la conexión a una red
+  de uso no medido. Puedes incluso usar {@link
+  android.app.job.JobScheduler} para responder a cambios de los proveedores de contenido.
+</p>
+
+<p>
+  Para obtener más información sobre este cambio en el comportamiento y la manera de adaptar tu aplicación,
+  consulta <a href="{@docRoot}preview/features/background-optimization.html">Optimizaciones
+  en segundo plano</a>.
+</p>
+
+
+<h2 id="perm">Cambios en los permisos</h2>
+
+<p>
+  En Android N se incorporan cambios en permisos que pueden tener efecto en tu aplicación.
+  Se incluyen cambios en permisos de cuentas de usuarios y un nuevo permiso para operaciones de escritura en
+  dispositivos de almacenamiento externo. A continuación, se ofrece un resumen de los permisos que se modificaron en
+  la muestra:
+</p>
+
+<ul>
+  <li>{@code GET_ACCOUNTS} (Obsoleto).
+    <p>
+      El permiso GET_ACCOUNTS ha quedado en desuso. El sistema ignora este
+      permiso para las aplicaciones orientadas a Android N.
+    </p>
+  </li>
+
+</ul>
+
+
+
+<h2 id="accessibility">Mejoras de accesibilidad</h2>
+
+<p>
+  En Android N se incluyen cambios destinados a mejorar la utilidad  de la
+  plataforma para usuarios con defectos o discapacidades visuales. Estos cambios
+  generalmente no exigirán modificaciones en el código de tu aplicación. Sin embargo, debes revisar
+  estas funciones y probarlas con tu aplicación para avaluar el posible impacto en la experiencia
+  del usuario.
+</p>
+
+
+<h3 id="screen-zoom">Zoom de la pantalla</h3>
+
+<p>
+  Android N permite a los usuarios configurar <strong>Display size</strong>, el ajuste que expande
+  o contrae todos los elementos de la pantalla lo cual mejora la accesibilidad al dispositivo
+  para usuarios con poca visión. Estos no podrán superar el valor de zoom mínimo de zoom de
+  <a href="http://developer.android.com/guide/topics/resources/providing-resources.html">
+  sw320dp</a> para el ancho de pantalla, que es el ancho de un Nexus 4, un teléfono común de tamaño intermedio.
+</p>
+
+<div class="cols">
+
+<div class="col-6">
+  <img src="{@docRoot}preview/images/screen-zoom-1.png" alt="" height="XXX" id="figure1" />
+</div>
+<div class="col-6">
+  <img src="{@docRoot}preview/images/screen-zoom-2.png" alt="" height="XXX" id="figure1" />
+</div>
+
+</div> <!-- end cols -->
+<p class="img-caption">
+  <strong>Figura 3:</strong> En la pantalla de la derecha se muestra el efecto que tiene
+  aumentar Display size para un dispositivo con una imagen de sistema de Android N.
+</p>
+
+
+<p>
+  Al cambiar la densidad del dispositivo, el sistema notifica a las aplicaciones de las
+  siguientes maneras:
+</p>
+
+<ul>
+  <li>Si una aplicación se orienta hacia el nivel de API 23 o uno inferior, el sistema automáticamente finaliza
+  todos sus procesos en segundo plano. Esto significa que si un usuario hace a un lado
+  dicha aplicación para abrir la pantalla <em>Settings</em> y cambiar la configuración de
+  <strong>Display size</strong>, el sistema finalizará la aplicación tal
+  como lo haría en una situación de bajos recursos de memoria. Si en la aplicación hay procesos en
+  primer plano activos, el sistema notifica a estos el cambio en la configuración como se
+  indica en <a href="{@docRoot}guide/topics/resources/runtime-changes.html">Manejo de cambios
+  en tiempo de ejecución</a>, así como lo haría si cambiara la orientación del dispositivo.
+  </li>
+
+  <li>Si una aplicación se orienta hacia Android N, se notifica a todos sus procesos
+  (en primer y segundo plano) el cambio en la configuración, como se
+  indica en <a href="{@docRoot}guide/topics/resources/runtime-changes.html">Manejo de cambios
+  en tiempo de ejecución</a>.
+  </li>
+</ul>
+
+<p>
+  En la mayoría de las aplicaciones no se necesitan cambios para admitir esta función, ya que
+  en ellas rigen prácticas recomendadas de Android. Verificaciones específicas que deben realizarse:
+</p>
+
+<ul>
+  <li>Prueba tu aplicación en un dispositivo con ancho de pantalla <code><a href=
+  "{@docRoot}guide/topics/resources/providing-resources.html">sw320dp</a></code>
+  y asegúrate de que funcione bien.
+  </li>
+
+  <li>Cuando se modifique la configuración del dispositivo, actualiza la información almacenada en caché que
+  dependa de la densidad, como los mapas de bits o recursos almacenados en caché que se carguen desde la
+  red. Realiza una inspección en busca de cambios en la configuración cuando se reanude la actividad de la aplicación, después de la
+  pausa.
+    <p class="note">
+      <strong>Nota:</strong> Si almacenaste en caché datos que dependen de la configuración, te
+      convendrá incluir metadatos relacionados, como el tamaño de pantalla
+      correspondiente o la densidad de píxeles para dichos datos. Guardar estos metadatos de permite
+      decidir si necesitas actualizar los datos almacenados en caché después de un cambio en la
+      configuración.
+    </p>
+  </li>
+
+  <li>Evita especificar dimensiones con unidades px, ya que no responden a la
+  densidad de pantalla. En lugar de ello, recurre a unidades de <a href="{@docRoot}guide/practices/screens_support.html">píxeles
+  (<code>dp</code>) independientes de la densidad</a>.
+  </li>
+</ul>
+
+<h3 id="vision-settings">Vision Settings en el asistente de configuración</h3>
+
+<p>
+  Vision Settings se incluye en la pantalla de Bienvenida de Android N, en la cual los usuarios pueden
+  pueden configurar los siguientes ajustes de accesibilidad para un nuevo dispositivo:
+  <strong>Magnification gesture</strong>, <strong>Font size</strong>,
+  <strong>Display size</strong> y <strong>TalkBack</strong>. Este cambio
+  aumenta la visibilidad de errores relacionados con diferentes ajustes de pantalla. Para
+  evaluar el impacto de esta función, debes probar tus aplicaciones con estos
+  ajustes habilitados. Puedes encontrarlos en <strong>Settings &gt;
+  Accessibility</strong>.
+</p>
+
+<h2 id="ndk">Aplicaciones de NDK con vínculos a bibliotecas de plataformas</h2>
+
+<p>
+  En Android N, se incluyen cambios en el espacio de nombres a fin de evitar la carga de API no públicas.
+  Si usas el NDK, solo debes emplear API públicas de la plataforma de
+  Android. El uso de API no públicas en la próxima versión oficial de Android
+  puede hacer que tu aplicación se bloquee.
+</p>
+
+<p>
+  Con el propósito de alertarte sobre el uso de API no públicas, las aplicaciones que funcionen en un dispositivo con
+  Android N producirán un error de salida de logcat cuando una de ellas llame a una API no pública.
+  Este error también aparecerá en la pantalla del dispositivo con forma de mensaje para
+  generar conciencia respecto de la situación. Debes revisar el código de tu aplicación para
+  eliminar el uso de API de plataforma no públicas y probar por completo tus aplicaciones con
+  un dispositivo de prueba o emulador.
+</p>
+
+<p>
+  Si tu aplicación depende de bibliotecas de plataformas, consulta la documentación sobre NDK para hallar
+  soluciones típicas para el reemplazo de API privadas comunes por API equivalentes.
+  También es posible que establezcas vínculos con bibliotecas de plataformas sin notarlo,
+  en especial si tu aplicación usa una biblioteca que forma parte de la plataforma (como
+  <code>libpng</code>), pero no del NDK. En ese caso, asegúrate de que
+  tu APK contenga todos los archivos .so con los cuales intentaste establecer vínculos.
+</p>
+
+<p class="caution">
+  <strong>Precaución:</strong> Algunas bibliotecas de terceros pueden establecer vínculos con API
+  no públicas. Si tu aplicación usa estas bibliotecas, es probable que se bloquee al ejecutarse
+  en la próxima versión oficial de Android.
+</p>
+
+<p>
+  Las aplicaciones no deben depender de bibliotecas nativas no incluidas en el NDK
+  ni usarlas, ya que pueden modificarse o eliminarse en la transición de una versión de Android a
+  otra. El cambio de OpenSSL a BoringSSL es un ejemplo de modificaciones como esta.
+  A su vez, los diferentes dispositivos pueden ofrecer distintos niveles de compatibilidad debido a que
+  no existen requisitos de compatibilidad para bibliotecas de plataformas no incluidas
+  en el NDK. Si debes acceder a bibliotecas no relacionadas en dispositivos anteriores, haz que la
+  carga dependa del nivel de la Android API.
+</p>
+
+<p>
+  Para ayudarte a diagnosticar estos tipos de problemas, a continuación se ofrecen ejemplos de errores de Java y
+  NDK que podrías hallar al intentar crear tu aplicación con Android N:
+</p>
+
+<p>Ejemplo de error de Java:</p>
+<pre class="no-pretty-print">
+java.lang.UnsatisfiedLinkError: dlopen failed: library "/system/lib/libcutils.so"
+    is not accessible for the namespace "classloader-namespace"
+</pre>
+
+<p>Ejemplo de error de NDK:</p>
+<pre class="no-pretty-print">
+dlopen failed: cannot locate symbol "__system_property_get" referenced by ...
+</pre>
+
+
+<p>
+  Aquí se ofrecen soluciones típicas para aplicaciones en las que se produzcan estos tipos de errores:
+</p>
+
+<ul>
+  <li>getJavaVM y getJNIEnv de libandroid_runtime.so pueden reemplazarse
+  por funciones de JNI:
+<pre class="no-pretty-print">
+AndroidRuntime::getJavaVM -&gt; GetJavaVM from &lt;jni.h&gt;
+AndroidRuntime::getJNIEnv -&gt; JavaVM::GetEnv or
+JavaVM::AttachCurrentThread from &lt;jni.h&gt;.
+</pre>
+  </li>
+
+  <li>La utilización del símbolo {@code property_get} de {@code libcutils.so} puede
+    reemplazarse por la alternativa pública {@code __system_property_get}.
+   Para hacerlo, usa {@code __system_property_get} con el siguiente include:
+<pre>
+#include &lt;sys/system_properties.h&gt;
+</pre>
+  </li>
+
+  <li>El símbolo {@code SSL_ctrl} de {@code libcrypto.so} debe
+  reemplazarse por una versión local de la aplicación. Por ejemplo, debes establecer un vínculo estático de
+  {@code libcyrpto.a} en tu archivo {@code .so} o incluir un vínculo dinámico propio de
+  {@code libcrypto.so} de BoringSSL u OpenSSL en tu aplicación.
+  </li>
+</ul>
+
+<h2 id="afw">Android for Work</h2>
+<p>
+  Android N contiene cambios para aplicaciones orientadas a Android for Work, entre los que se incluyen
+  modificaciones en la instalación de certificados, el restablecimiento de contraseñas, la gestión de usuarios
+  secundarios y el acceso a identificadores de dispositivos. Si planeas crear aplicaciones para entornos de
+  Android for Work, debes repasar estos cambios y modificar
+  tu aplicación de manera correspondiente.
+</p>
+
+<ul>
+  <li>Debes usar un instalador de certificados delegados para que el controlador de políticas de dispositivos (DPC) pueda
+  configurarlo. Para aplicaciones de propietarios de perfiles y de dispositivos orientadas al SDK de Android N, debes
+  usar el instalador de certificados delegados para que el
+  DPC llame a
+  <code>DevicePolicyManager.setCertInstallerPackage()</code>. Si el instalador
+  no está instalado de antemano, el sistema emite una
+  <code>IllegalArgumentException</code>.
+  </li>
+
+  <li>Las restricciones de contraseñas para administradores de dispositivos ahora se aplican a los propietarios de
+  perfiles. Los administradores de dispositivos ya no pueden usar
+  <code>DevicePolicyManager.resetPassword()</code> para borrar contraseñas ni modificar
+  las que ya están establecidas. No obstante, pueden establecer una contraseña, aunque solo
+  cuando el dispositivo no tiene contraseña, PIN ni patrón.
+  </li>
+
+  <li>Los propietarios de dispositivos y perfiles pueden administrar cuentas aun cuando haya
+  restricciones. Tienen la posibilidad de llamar a las API de administración de cuentas
+  incluso al haber restricciones de <code>DISALLOW_MODIFY_ACCOUNTS</code> para el usuario.
+  </li>
+
+  <li>Los propietarios de dispositivos pueden administrar usuarios secundarios de manera más sencilla. Cuando un dispositivo
+  funciona en el modo de propietario de dispositivo, se establece la restricción de <code>DISALLOW_ADD_USER</code>
+  en forma automática. Esto evita que los usuarios creen usuarios secundarios no
+  administrados. A su vez, los métodos <code>CreateUser()</code> y
+  <code>createAndInitial()</code> han quedado en desuso; los reemplaza el nuevo método
+  <code>DevicePolicyManager.createAndManageUser()</code>.
+  </li>
+
+  <li>Los propietarios de dispositivos pueden acceder a identificadores de dispositivos. Tienen la posibilidad de acceder a la
+  dirección MAC de Wi-Fi de un dispositivo a través de
+  <code>DevicePolicyManagewr.getWifiMacAddress()</code>. Si nunca se habilitó la función Wi-Fi
+  en el dispositivo, este método devuelve un valor {@code null}.
+  </li>
+</ul>
+
+<p>
+  Para obtener más información sobre los cambios de Android for Work en Android N, consulta
+  <a href="{@docRoot}preview/features/afw.html">Actualizaciones de Android for Work</a>.
+</p>
+
+<h2 id="other">Otros aspectos importantes</h2>
+
+<ul>
+<li>Cuando una aplicación funcione en Android N, esté orientada a un nivel de API inferior
+y el usuario modifique el tamaño de pantalla, el proceso de la aplicación finalizará. La aplicación
+debe tener capacidad para manejar correctamente esta situación. De lo contrario, se bloqueará
+cuando el usuario la restaure desde Recents.
+
+<p>
+Debes probar tu aplicación para controlar que no tenga lugar
+este comportamiento.
+Puedes hacerlo produciendo un error idéntico
+al finalizarla manualmente a través del panel DDMS.
+</p>
+
+<p>
+Las aplicaciones orientadas a Android N y versiones posteriores no finalizarán automáticamente por cambios en la densidad;
+sin embargo, es posible que respondan en forma deficiente a los cambios en la configuración.
+</p>
+</li>
+
+<li>
+En Android N, las aplicaciones deben tener capacidad para manejar correctamente los cambios de configuración
+y no deben bloquearse durante inicios posteriores. Puedes verificar el comportamiento de las aplicaciones
+modificando el tamaño de la fuente (<strong>Setting</strong> &gt;
+<strong>Display</strong> &gt; <strong>Font size</strong>) y restaurándolas
+desde Recents.
+</li>
+</ul>
+
diff --git a/docs/html-intl/intl/es/preview/download.jd b/docs/html-intl/intl/es/preview/download.jd
new file mode 100644
index 0000000..b3135d1
--- /dev/null
+++ b/docs/html-intl/intl/es/preview/download.jd
@@ -0,0 +1,541 @@
+page.title=Pruebe en un dispositivo
+meta.tags=“Versión preliminar”, “Nexus”,“imagen de sistema”
+page.tags="preview", "androidn"
+page.image=images/cards/card-n-downloads_2x.png
+
+@jd:body
+
+<div style="position:relative; min-height:600px">
+
+  <div class="wrap" id="tos" style="position:absolute;display:none;width:inherit;">
+
+    <p class="sdk-terms-intro">Antes de descargar e instalar los componentes del
+      Android Preview SDK, debe aceptar los términos y las
+      condiciones que se describen a continuación.</p>
+
+    <h2 class="norule">Términos y condiciones</h2>
+
+    <div class="sdk-terms" onfocus="this.blur()" style="width:678px">
+Este es el Contrato de licencia de la versión preliminar del SDK de Android (el “Contrato de licencia”).
+
+1. Introducción
+
+1.1 Se le otorga la licencia de la versión preliminar del SDK de Android (denominada “Versión preliminar” en el Contrato de licencia e incluye específicamente los archivos de sistema de Android, las API agrupadas y los archivos de biblioteca de la Versión preliminar, si se encuentran disponibles), sujeto a los términos del Contrato de licencia. El contrato de licencia establece una relación legal vinculante entre usted y Google, con respecto a la utilización que usted haga de la Preview.
+
+1.2 "Android" hace referencia al conjunto de software Android para dispositivos, tal como se encuentra disponible en el proyecto de código abierto de Android, ubicado en la siguiente dirección URL: http://source.android.com/, y sus actualizaciones frecuentes.
+
+1.3 “Compatible con Android” se refiere a cualquier implementación de Android que (i) cumpla con el documento Definición de compatibilidad de Android, que está disponible en el sitio web de compatibilidad de Android (http://source.android.com/compatibility) y que puede actualizarse esporádicamente; y (ii) apruebe satisfactoriamente la prueba de Compatibilidad con Android, “CTS” (en inglés, Android Compatibility Test Suite).
+
+1.4 "Google" significa Google Inc., una empresa de Delaware con su sede principal en 1600 Amphitheatre Parkway, Mountain View, CA 94043, Estados Unidos.
+
+2. Aceptación del Contrato de licencia
+
+2.1 Para poder utilizar la Versión preliminar, primero debe aceptar el Contrato de licencia. Si no acepta el Contrato de licencia, no podrá utilizar la Versión preliminar.
+
+2.2 Al hacer clic para aceptar o utilizar la Versión preliminar, por medio del presente, usted acepta los términos del Contrato de licencia.
+
+2.3 Usted no puede utilizar la Versión preliminar ni aceptar el Contrato de licencia si tiene prohibido recibir la Versión preliminar en virtud de las leyes de los Estados Unidos o de otros países, lo que incluye el país donde es residente o desde el que utilizará la Versión preliminar.
+
+2.4 Si usted utilizará la Versión preliminar de forma interna, dentro de su compañía u organización, usted acepta quedar sujeto al Contrato de licencia en representación de su empleador u otra entidad, y expresa y garantiza que tiene plena autoridad legal para vincular a su empleador o a dicha entidad al Contrato de licencia. Si no posee la autoridad exigida, no podrá aceptar el Contrato de licencia ni usar la Versión preliminar en representación de su empleador u otra entidad.
+
+3. Licencia de la Preview de Google
+
+3.1 Conforme a los términos de este contrato de licencia, Google le otorga una licencia limitada, con validez mundial, libre de regalías, no asignable, no exclusiva y que no puede otorgar una sublicencia para utilizar la Preview con el único propósito de desarrollar aplicaciones para ejecutar en implementaciones compatibles de Android.
+
+3.2 No puede utilizar esta Preview para desarrollar aplicaciones para otras plataformas (incluyendo implementaciones incompatibles de Android) o para desarrollar otro SDK. Por supuesto, usted tiene la libertad para desarrollar aplicaciones para otras plataformas, incluyendo implementaciones incompatibles de Android, siempre y cuando esta Preview no sea utilizada con ese propósito.
+
+3.3 Usted acepta que Google o terceros poseen todos los derechos legales, títulos e intereses en relación con la Preview, incluidos derechos de propiedad intelectual que existan en ésta. "Derechos de propiedad intelectual" hace referencia a todos los derechos de la ley de patentes, la ley de derechos de autor, la ley de secreto comercial, la ley de marca comercial y cualquier otro derecho de propiedad. Google se reserva todos los derechos que no se le otorguen expresamente.
+
+3.4 No podrá utilizar la Versión preliminar para ningún otro propósito que no esté expresamente permitido en el Contrato de licencia. Excepto en la medida que lo exijan las licencias correspondientes de terceros, no podrá: (a) copiar (excepto con fines de copia de seguridad), modificar, adaptar, redistribuir, descompilar, utilizar técnicas de ingeniería inversa, desarmar ni crear trabajos derivados de la Preview ni de ninguna de sus partes; ni (b) cargar ninguna parte de la Preview en un teléfono móvil ni en ningún otro dispositivo de hardware (a excepción de una computadora personal), ni podrá combinar ninguna parte de la Preview con otro software, ni distribuir algún software o dispositivo que incorpore alguna parte de la Preview.
+
+3.5 El uso, la reproducción y la distribución de los componentes de la Preview con licencia de software de código abierto están regidos exclusivamente por los términos de la licencia de ese software de código abierto y no de este Contrato de licencia. Usted acepta mantener la licencia en buenas condiciones con respecto a dichas licencias de software de código abierto en virtud de todos los derechos otorgados y acepta abstenerse de realizar alguna acción que pueda poner fin, suspender o violar dichos derechos.
+
+3.6 Usted acepta que la forma y la naturaleza de la Versión preliminar que proporciona Google pueden cambiar sin brindarle aviso previo y que las versiones futuras de la Versión preliminar pueden ser incompatibles con las aplicaciones desarrolladas en versiones anteriores de la Versión preliminar. Usted acepta que Google puede (de forma permanente o temporal) dejar de proporcionarles la Versión preliminar (o cualquiera de las características incluidas en ella) a usted o a los usuarios, generalmente, a criterio exclusivo de Google, sin brindarle aviso previo.
+
+3.7 Ninguna declaración de este Contrato de licencia le otorga el derecho de utilizar alguno de los nombres comerciales, las marcas comerciales, las marcas de servicio, los logotipos, los nombres de dominio ni otras características distintivas de marca de Google.
+
+3.8 Usted acepta que no eliminará, ocultará ni alterará ninguno de los avisos de derechos de propiedad (lo que incluye los avisos de marca comercial y derechos de autor) que pudieran estar anexados o incluidos en la Versión preliminar.
+
+4. Uso que usted realiza de la Versión preliminar 4.1 Google acepta que ninguna declaración del Contrato de licencia le concede a Google derecho, título o interés alguno de su parte (o de parte de sus licenciantes), en virtud del Contrato de licencia, con respecto a las aplicaciones de software que usted desarrolle mediante el uso de la Versión preliminar, lo que incluye los derechos de propiedad intelectual que conlleven esas aplicaciones. 4.2 Usted acepta utilizar la Versión preliminar y escribir aplicaciones únicamente conforme a lo que permite (a) este Contrato de licencia y (b) las leyes, regulaciones, o prácticas y pautas generalmente aceptadas pertinentes en las jurisdicciones relevantes (lo que incluye las leyes sobre la exportación de datos o software hacia los Estados Unidos u otros países relevantes y desde ellos). 4.3 Usted acepta que si utiliza la Versión preliminar para desarrollar aplicaciones, protegerá la privacidad y los derechos legales de los usuarios.
+
+
+
+
+
+ Si los usuarios le proporcionan sus nombres de usuario, contraseñas u otra información de inicio de sesión o información personal, debe comunicarles a los usuarios que la información se encontrará disponible para su aplicación, y debe proporcionarles a dichos usuarios un aviso de privacidad con protección y validez legal. Si su aplicación almacena información personal o confidencial proporcionada por los usuarios, lo debe hacer de forma segura. Si los usuarios le proporcionan información sobre la cuenta de Google, su aplicación solo puede usar esa información para acceder a la cuenta de Google del usuario siempre que este le haya otorgado permiso para hacerlo y con los fines para los que se lo haya otorgado.
+
+4.4 Usted acepta que no participará en ninguna actividad con la Versión preliminar (lo que incluye el desarrollo o la distribución de una aplicación) que interfiera, interrumpa, dañe o acceda sin autorización a servidores, redes u otras propiedades o servicios de Google o de algún tercero.
+
+4.5 Usted acepta que es el único responsable (y que Google no asume responsabilidades hacia usted ni terceros) de los datos, el contenido o los recursos que usted cree, transmita o muestre a través de Android o las aplicaciones para Android, y de las consecuencias de sus acciones (lo que incluye la pérdida o el daño que Google pudiera sufrir) al hacerlo.
+
+4.6 Usted acepta que es el único responsable (y que Google no asume responsabilidades hacia usted ni terceros) de cualquier incumplimiento de sus obligaciones en virtud de este Contrato de licencia, los contratos aplicables de terceros o los términos del servicio, o cualquier ley o regulación pertinentes, y de las consecuencias (lo que incluye las pérdidas o los daños que pudieran sufrir Google o algún tercero) de dichos incumplimientos.
+
+4.7 La Versión preliminar se encuentra en desarrollo, y sus pruebas y comentarios son una parte importante del proceso de desarrollo. Al utilizar la Versión preliminar, usted reconoce que la implementación de algunas características aún se encuentra en desarrollo y que no debe confiar en que la Versión preliminar contará con todas las funcionalidades de una versión estable. Usted acepta no distribuir públicamente ni enviar ninguna aplicación que utilice esta Versión preliminar, ya que esta Versión preliminar ya no se admitirá tras el lanzamiento del SDK oficial de Android.
+
+5. Sus credenciales de desarrollador
+
+5.1 Usted acepta que es responsable de mantener la confidencialidad de toda credencial de desarrollador que Google pudiera otorgarle o que usted pudiera escoger, y que será el único responsable de todas las aplicaciones que se desarrollen con sus credenciales de desarrollador.
+
+6. Privacidad e información
+
+6.1 A fin de poder innovar y mejorar de forma continua la Versión preliminar, Google podría recopilar ciertas estadísticas de uso del software, lo que incluye, entre otras características, un identificador único, la dirección IP asociada, el número de versión del software e información sobre las herramientas o los servicios de la Versión preliminar que se estén utilizando y la manera en que se estén utilizando. Antes de que se recopile esta información, la Versión preliminar se lo notificará y le solicitará su permiso. Si no otorga su permiso, no se recopilará la información.
+
+6.2 Los datos recopilados se analizan en el agregado para mejorar la Versión preliminar y se conservan de acuerdo con la política de privacidad de Google que se encuentra en el sitio http://www.google.com/policies/privacy/.
+
+7. Aplicaciones de terceros
+
+7.1 Si utiliza la Versión preliminar para ejecutar aplicaciones desarrolladas por un tercero o que accedan a datos, contenido o recursos proporcionados por un tercero, usted acepta que Google no es responsable de esas aplicaciones, datos, contenido ni recursos. Usted comprende que todos los datos, contenidos o recursos a los que podría acceder a través de esas aplicaciones de terceros son exclusiva responsabilidad de la persona que los origina y que Google no es responsable de las pérdidas ni los daños que usted pudiera experimentar como consecuencia del uso o acceso de cualquiera de esas aplicaciones, datos, contenido o recursos de terceros.
+
+7.2 Usted debe saber que los datos, el contenido y los recursos que se le presentan a través de esa aplicación de un tercero pueden estar protegidos por derechos de propiedad intelectual que les pertenecen a sus proveedores (o a otras personas o compañías en representación de estos). No puede modificar, alquilar, arrendar, prestar, vender, distribuir ni crear obras derivadas basadas en esos datos, contenidos o recursos (en su totalidad o en parte), a menos que los propietarios pertinentes le hayan otorgado permiso específicamente para hacerlo.
+
+7.3 Usted acepta que el uso que haga de las aplicaciones, los datos, el contenido o los recursos de ese tercero puede estar sujeto a términos independientes entre usted y el tercero correspondiente.
+
+8. Uso de las API de Google
+
+8.1 API de Google
+
+8.1.1 Si utiliza alguna API para recuperar datos de Google, usted acepta que los datos pueden estar protegidos por derechos de propiedad intelectual que le pertenecen a Google o a las partes que proporcionan esos datos (o a otras personas o empresas en representación de estos). El uso que realice de cualquiera de esas API puede estar sujeto a términos de servicio adicionales. No puede modificar, alquilar, arrendar, prestar, vender, distribuir ni crear obras derivadas basadas en esos datos (en su totalidad o en parte), a menos que los términos de servicio correspondientes lo permitan.
+
+8.1.2 Si utiliza alguna API para recuperar datos de un usuario de Google, usted acepta y acuerda que solo podrá recuperar datos con el consentimiento explícito del usuario y solo con los fines limitados para los que el usuario le haya otorgado permiso para hacerlo.
+
+9. Finalización del Contrato de licencia
+
+9.1 Este Contrato de licencia tendrá vigencia hasta que lo revoquen usted o Google, como se indica a continuación.
+
+9.2 Si desea rescindir el Contrato de licencia, puede hacerlo al interrumpir el uso que realiza de la Versión preliminar y de las credenciales de desarrollador pertinentes.
+
+9.3 Google puede, en cualquier momento, rescindir el Contrato de licencia, con causa o sin ella, después de notificárselo a usted.
+
+9.4 El Contrato de licencia finalizará automáticamente, sin previo aviso ni acción alguna, tras la primera de las siguientes situaciones:
+(A) cuando Google deje de proporcionar la Versión preliminar o ciertas partes de esta a los usuarios en el país donde usted reside o desde el que utiliza el servicio; y
+(B) cuando Google emita una versión final del SDK de Android.
+
+9.5 Si el Contrato de licencia se rescinde, se revocará la licencia que usted recibió en virtud de dicho contrato; usted deberá suspender inmediatamente todo uso de la Versión preliminar y las disposiciones de los párrafos 10, 11, 12 y 14 seguirán vigentes indefinidamente.
+
+10. EXENCIONES DE RESPONSABILIDAD
+
+10.1 USTED COMPRENDE Y ACEPTA EXPRESAMENTE QUE EL USO QUE REALICE DE LA VERSIÓN PRELIMINAR ES BAJO SU PROPIO RIESGO Y QUE LA VERSIÓN PRELIMINAR SE PROPORCIONA “EN LAS CONDICIONES EN LAS QUE SE ENCUENTRA” Y “SUJETA A DISPONIBILIDAD” SIN GARANTÍAS DE NINGÚN TIPO POR PARTE DE GOOGLE.
+
+10.2 EL USO QUE USTED REALICE DE LA VERSIÓN PRELIMINAR Y DE TODO MATERIAL DESCARGADO U OBTENIDO DE ALGUNA OTRA MANERA MEDIANTE EL USO DE LA VERSIÓN PRELIMINAR ES A SU ENTERO RIESGO Y DISCRECIÓN, Y USTED ES EL ÚNICO RESPONSABLE DE CUALQUIER DAÑO QUE PUDIERA SUFRIR SU SISTEMA INFORMÁTICO U OTRO DISPOSITIVO, O DE LA PÉRDIDA DE DATOS COMO CONSECUENCIA DE DICHO USO. SIN PERJUICIO DE LO MENCIONADO ANTERIORMENTE, USTED COMPRENDE QUE LA VERSIÓN PRELIMINAR NO ES UNA VERSIÓN ESTABLE, Y PUEDE CONTENER ERRORES, DEFECTOS Y VULNERABILIDADES DE SEGURIDAD QUE PUEDEN PROVOCAR DAÑOS SIGNIFICATIVOS, LO QUE INCLUYE LA PÉRDIDA COMPLETA E IRRECUPERABLE DEL USO DE SU SISTEMA INFORMÁTICO U OTRO DISPOSITIVO.
+
+10.3 GOOGLE TAMBIÉN RECHAZA TODAS LAS GARANTÍAS Y CONDICIONES DE CUALQUIER TIPO, EXPRESAS O IMPLÍCITAS, INCLUIDAS, ENTRE OTRAS, LAS GARANTÍAS Y CONDICIONES DE COMERCIABILIDAD, IDONEIDAD PARA UN FIN DETERMINADO Y NO VIOLACIÓN.
+
+11. LIMITACIÓN DE RESPONSABILIDADES
+
+11.1 USTED COMPRENDE Y ACEPTA EXPRESAMENTE QUE GOOGLE, SUS SUBSIDIARIAS Y FILIALES, Y SUS LICENCIANTES NO SERÁN RESPONSABLES ANTE USTED, EN VIRTUD DE NINGUNA TEORÍA DE RESPONSABILIDAD, POR NINGÚN DAÑO DIRECTO, INDIRECTO, INCIDENTAL, ESPECIAL, RESULTANTE NI PUNITIVO EN EL QUE PODRÍA HABER INCURRIDO, LO QUE INCLUYE LA PÉRDIDA DE DATOS, YA SEA QUE SE LE HAYA NOTIFICADO O NO A GOOGLE O A SUS REPRESENTANTES, O SOBRE CUYA POSIBILIDAD ESTOS DEBERÍAN HABER SABIDO.
+
+12. Indemnización
+
+12.1 Hasta el grado máximo que permita la ley, usted acepta defender, indemnizar y eximir de responsabilidades a Google, sus filiales y sus respectivos directores, funcionarios, empleados y agentes, de todo tipo de reclamo, acción legal y proceso judicial, así como de las pérdidas, responsabilidades, daños, costos y gastos (incluidos los honorarios razonables de abogados) que surjan o se acumulen (a) del uso que usted realiza de la Versión preliminar, (b) de cualquier aplicación que desarrolle en la Versión preliminar que infrinja algún derecho de propiedad intelectual de cualquier persona, o que difame a cualquier persona o viole sus derechos de publicidad o privacidad, y (c) del incumplimiento por su parte del Contrato de licencia.
+
+13. Cambios en el Contrato de licencia
+
+13.1 Google puede realizar cambios en el Contrato de licencia a medida que distribuye nuevas versiones de la Versión preliminar. Cuando se realicen esos cambios, Google emitirá una nueva versión del Contrato de licencia, que estará disponible en el sitio web donde se ponga a la venta la Versión preliminar.
+
+14. Términos legales generales
+
+14.1 El Contrato de licencia constituye el contrato legal integral entre usted y Google, y rige el uso que usted realice de la Versión preliminar (a excepción de los servicios que Google pueda proporcionarle en virtud de un contrato por escrito independiente), y reemplaza totalmente cualquier contrato anterior entre usted y Google en relación con la Versión preliminar.
+
+14.2 Usted acepta que, si Google no ejerce ni impone un derecho o recurso legal especificados en el Contrato de licencia (o sobre el que Google tenga beneficios conforme a cualquier ley aplicable), esto no se considerará una renuncia formal a los derechos por parte de Google y Google aún seguirá recibiendo los beneficios de esos derechos o recursos legales.
+
+14.3 Si algún tribunal judicial con jurisdicción para decidir sobre este asunto determina que alguna de las disposiciones de este Contrato de licencia no es válida, se eliminará esa disposición del Contrato de licencia sin que eso afecte la validez del resto del contrato. Las disposiciones restantes del Contrato de licencia continuarán siendo válidas y aplicables.
+
+14.4 Usted reconoce y acepta que cada miembro del grupo de compañías de las que Google es la compañía central serán terceros beneficiarios del Contrato de licencia, y que esas otras empresas tendrán el derecho de imponer directamente cualquier disposición y ampararse en las disposiciones de este Contrato de licencia que les confieran un beneficio (o que confieran derechos a su favor). Además de esto, ninguna otra persona o compañía serán terceros beneficiarios del Contrato de licencia.
+
+14.5 RESTRICCIONES DE EXPORTACIÓN. LA VERSIÓN PRELIMINAR ESTÁ SUJETA A LAS LEYES Y REGULACIONES DE EXPORTACIÓN DE LOS ESTADOS UNIDOS. DEBE CUMPLIR CON TODAS LAS LEYES Y REGULACIONES DE EXPORTACIÓN NACIONALES E INTERNACIONALES QUE SE APLIQUEN A LA VERSIÓN PRELIMINAR. ESAS LEYES INCLUYEN RESTRICCIONES EN RELACIÓN CON LOS DESTINOS, USUARIOS FINALES Y USO FINAL.
+
+14.6 Usted no puede asignar ni transferir el Contrato de licencia sin la aprobación previa por escrito de Google y todo intento de asignación sin dicha aprobación no tendrá validez. No podrá delegar sus responsabilidades u obligaciones otorgadas en virtud del Contrato de licencia sin la aprobación previa por escrito de Google.
+
+14.7 El Contrato de licencia y su relación con Google conforme al Contrato de licencia se regirán por las leyes del estado de California, independientemente de los principios de conflictos entre leyes. Usted y Google aceptan presentarse ante la jurisdicción exclusiva de los tribunales del condado de Santa Clara, California, para resolver cualquier asunto legal que pudiera surgir del Contrato de licencia. Sin perjuicio de esto, usted acepta que Google aún podrá aplicar reparaciones conforme a mandato judicial (o a un tipo equivalente de desagravio legal) en cualquier jurisdicción.
+  </div><!-- sdk terms -->
+
+
+
+    <div id="sdk-terms-form">
+      <p>
+        <input id="agree" type="checkbox" name="agree" value="1" onclick="onAgreeChecked()" />
+        <label id="agreeLabel" for="agree">He leído y acepto los términos y las condiciones anteriores.</label>
+      </p>
+      <p><a href="" class="button disabled" id="downloadForRealz" onclick="return onDownloadForRealz(this);"></a></p>
+    </div>
+
+
+  </div><!-- end TOS -->
+
+
+  <div id="landing">
+
+<div id="qv-wrapper">
+  <div id="qv">
+    <h2>Contenido del documento</h2>
+      <ol>
+        <li><a href="#device-preview">Configurar un dispositivo de hardware</a>
+          <ol>
+            <li><a href="#ota">Obtener actualizaciones inalámbricas</a></li>
+            <li><a href="#flash">Actualizar manualmente un dispositivo</a></li>
+            <li><a href="#revertDevice">Desinstalar</a></li>
+          </ol>
+        </li>
+        <li><a href="#setupAVD">Configurar un emulador</a></li>
+      </ol>
+  </div>
+</div>
+
+<p>
+  Para ejecutar y probar tu aplicación en la plataforma nueva necesitas configurar el tiempo de ejecución de Android N
+  . Puedes realizar eso de las siguientes maneras:
+</p>
+
+<ul>
+  <li>Instalar Android N en un dispositivo de hardware compatible o</li>
+  <li>Configurar un emulador de Android a través de la ejecución de Android N</li>
+</ul>
+
+<p>
+  Si deseas un entorno para realizarle pruebas básicas de compatibilidad a tu aplicación en la plataforma nueva
+ , todo lo que necesitas es tu actual APK y un dispositivo de hardware o
+  emulador. No necesitas actualizar todo tu entorno de desarrollo 
+  para realizar pruebas básicas.
+</p>
+
+<p>
+  Si deseas modificar tu aplicación para seleccionar como destino Android N o usar las API nuevas de Android N,
+   debes configurar un entorno de desarrollo que esté actualizado para que admita 
+  Android N. En <a href="{@docRoot}preview/setup-sdk.html">Configuración para el desarrollo de
+  Android N</a> se ofrece información detallada.
+</p>
+
+
+<h2 id="device-preview">Configurar un dispositivo de hardware</h2>
+
+<p>
+  En la N Developer Preview se ofrecen actualizaciones del sistema para una variedad de dispositivos de hardware 
+que puedes usar para realizarle pruebas a tu aplicación, desde teléfonos hasta tablets y TV.
+</p>
+
+<p>
+  Si tienes acceso a un dispositivo compatible, puedes actualizarlo a una versión "milestone" de la Developer Preview
+  de las siguientes maneras:
+</p>
+
+<ul>
+  <li><strong>Registrar el dispositivo en actualizaciones automáticas del sistema vía OTA</strong> a través del
+  <a href="https://g.co/androidbeta">Programa de Android beta</a>. Una vez registrado, tu dispositivo recibirá actualizaciones inalámbricas regulares (OTA)
+  de todas las compilaciones de hitos en la N Developer Preview. Se recomienda este
+  enfoque porque te permite realizar una transición sin inconvenientes desde tu entorno actual
+  a través de varios lanzamientos de la N Developer Preview.</li>
+  <li><strong>Descargar una imagen de sistema de la Developer Preview y actualizar el dispositivo</strong>.
+  Las actualizaciones OTA no se proporcionan de manera automática para los dispositivos que actualizas de manera manual, pero
+  puedes registrar esos dispositivos en el Programa de Android beta para obtener actualizaciones OTA. </li>
+</ul>
+
+<h3 id="ota">Registrar el dispositivo en actualizaciones automáticas OTA</h3>
+
+<p>
+  Si tienes acceso a un dispositivo compatible (consulta la lista en la tabla de descargas
+  ), puedes recibir actualizaciones inalámbricas para mostrar versiones de Android
+  registrando el dispositivo en el <a href="https://g.co/androidbeta">Programa de Android beta</a>. Estas actualizaciones
+  se descargan de manera automática y actualizarán tu dispositivo como otras
+  actualizaciones oficiales del sistema.
+</p>
+
+<p>
+  Puedes dar de baja el registro de un dispositivo en cualquier momento. El dispositivo recibirá una actualización OTA
+  para la versión de producción más reciente de Android que se encuentre disponible para ese dispositivo
+  (por ejemplo, Android 6.0 Marshmallow). La actualización requiere un restablecimiento completo del dispositivo
+  , entonces se quitarán los datos del usuario en el dispositivo. Asegúrate de <strong>realizar una
+  copia de seguridad de los datos importantes</strong> antes de dar de baja un dispositivo.
+</p>
+
+<p>
+  Para obtener más información y para registrar tu dispositivo, consulta
+  el sitio web del <a href="https://g.co/androidbeta">Programa de Android beta</a> .
+</p>
+
+<p class="note"><strong>Nota:</strong>
+  Dar de baja el registro requiere un restablecimiento completo del dispositivo. Realice una copia de seguridad de los
+  datos importantes primero.
+</p>
+
+<h3 id="flash">Actualizar un dispositivo manualmente</h3>
+
+<p>
+  En cualquier momento, puedes descargar las últimas imágenes de sistema de la Developer Preview y
+  puedes actualizarlas manualmente en tu dispositivo. Consulta la siguiente tabla para descargar la imagen de
+  sistema para tu dispositivo de prueba. La actualización manual de un dispositivo es útil si necesitas
+  un control preciso del entorno de prueba o necesitas reinstalar con frecuencia,
+  como en pruebas automatizadas. 
+</p>
+
+<!-- You can flash by ota or system image --><p>
+  El proceso de instalación de una imagen de sistema en un dispositivo <strong>elimina todos los datos del
+ dispositivo</strong>, por lo tanto, deberás hacer una copia de seguridad de los datos en primer lugar.
+</p>
+
+<p>
+  Después de que realices una copia de seguridad y que descargues la siguiente imagen de sistema que
+  se adecua a tu dispositivo, sigue las instrucciones que se describen en <a href="https://developers.google.com/android/nexus/images#instructions">developers.google.com/android</a>
+  para actualizar la imagen en tu dispositivo.
+</p>
+
+<p>
+  Las imágenes de sistema actualizadas de manera manual <strong>no
+  reciben actualizaciones OTA de manera automática</strong> para posteriores "milestone"
+  de la Developer Preview. Asegúrate de mantener tu entorno actualizado y actualiza una
+  nueva imagen de sistema en cada "milestone" de la Developer Preview.
+</p>
+
+<p>
+  Si decides que quieres obtener actualizaciones OTA después de actualizar de manera manual un dispositivo, 
+  lo único que debes hacer es registrar el dispositivo en el <a href="https://g.co/androidbeta">Programa
+  de Android beta</a>. Puedes registrar el dispositivo en cualquier momento para recibir la siguiente actualización de la Preview
+  vía inalámbrica. 
+</p>
+
+<table>
+  <tr>
+    <th scope="col">Dispositivo</th>
+    <th scope="col">Descarga/sumas de comprobación</th>
+  </tr>
+
+  <tr id="bullhead">
+    <td>Nexus 5X <br>“bullhead”</td>
+    <td><a href="#top" onclick="onDownload(this)">bullhead-npc56p-preview-6c877a3d.tgz</a><br>
+      MD5: b5cf874021023b398f5b983b24913f5d<br>
+      SHA-1: 6c877a3d9fae7ec8a1678448e325b77b7a7b143a
+    </td>
+  </tr>
+
+  <tr id="shamu">
+    <td>Nexus 6 <br>“shamu”</td>
+    <td><a href="#top" onclick="onDownload(this)">shamu-npc56p-preview-54b13c67.tgz</a><br>
+      MD5: af183638cf34e0eb944a1957d7696f60<br>
+      SHA-1: 54b13c6703d369cc79a8fd8728fe4103c6343973
+    </td>
+  </tr>
+
+  <tr id="angler">
+    <td>Nexus 6P <br>“angler”</td>
+    <td><a href="#top" onclick="onDownload(this)">angler-npc56p-preview-85ffc1b1.tgz</a><br>
+      MD5: bc4934ea7bd325753eee1606d3725a24<br>
+      SHA-1: 85ffc1b1be402b1b96f9ba10929e86bba6c6c588
+    </td>
+  </tr>
+
+  <tr id="volantis">
+    <td>Nexus 9 <br>“volantis”</td>
+    <td><a href="#top" onclick="onDownload(this)">volantis-npc56p-preview-0e8ec8ef.tgz</a><br>
+      MD5: c901334c6158351e945f188167ae56f4<br>
+      SHA-1: 0e8ec8ef98c7a8d4f58d15f90afc5176303efca4
+    </td>
+  </tr>
+
+  <tr id="volantisg">
+    <td>Nexus 9G <br>“volantisg”</td>
+    <td><a href="#top" onclick="onDownload(this)">volantisg-npc56p-preview-1bafdbfb.tgz</a><br>
+      MD5: 7bb95bebc478d7257cccb4652899d1b4<br>
+      SHA-1: 1bafdbfb502e979a9fe4c257a379c4c7af8a3ae6
+    </td>
+  </tr>
+
+  <tr id="fugu">
+    <td>Nexus Player <br>“fugu”</td>
+    <td><a href="#top" onclick="onDownload(this)">fugu-npc56r-preview-7027d5b6.tgz</a><br>
+      MD5: f5d3d8f75836ccfe4c70e8162e498be4<br>
+      SHA-1: 7027d5b662bceda4c80a91a0a14ef0e5a7ba795b
+    </td>
+  </tr>
+
+  <tr id="ryu">
+    <td>Pixel C <br>“ryu”</td>
+    <td><a href="#top" onclick="onDownload(this)">ryu-npc56p-preview-335a86a4.tgz</a><br>
+      MD5: 4e21fb183bbbf467bee91598d587fd2e<br>
+      SHA-1: 335a86a435ee51f18464de343ad2e071c38f0e92
+    </td>
+  </tr>
+  <tr id="seed">
+    <td>4G móviles en general (Android One) <br>“seed”</td>
+    <td><a href="#top" onclick="onDownload(this)">seed_l8150-npc56p-preview-82472ebc.tgz</a><br>
+      MD5: 983e083bc7cd0c4a2d39d6ebaa20202a<br>
+      SHA-1: 82472ebc9a6054a103f53cb400a1351913c95127
+    </td>
+  </tr>
+
+</table>
+
+<h3 id="revertDevice">Desinstalar la Preview de un dispositivo</h3>
+
+<p>
+  Si quieres desinstalar la Preview de un dispositivo, puedes hacerlo de las
+  siguientes maneras: </p>
+  <ul>
+    <li><strong>Obtener una imagen de sistema con las especificaciones de fábrica</strong> y luego actualízala de manera manual 
+    para el dispositivo.
+      <ul>
+          <li>Para <strong>los dispositivos Nexus y Pixel C</strong>, consulta la página
+        <a href="http://developers.google.com/android/nexus/images">Imágenes de fábrica para dispositivos Nexus
+        </a>para descargas. </li>
+        <li>Para <strong>otros dispositivos</strong>, comunícate directamente con el fabricante del dispositivo
+        . De manera alternativa, si el dispositivo es compatible con
+        el Programa de Android beta, puedes registrar el dispositivo en el
+        programa y luego darlo de baja (consulta a continuación).</li>
+      </ul>
+    </li>
+    <li><strong>Dar de baja el dispositivo del Programa de Android beta</strong>. Si el
+    dispositivo se registra en el <a href="https://g.co/androidbeta">Programa de Android beta
+    </a>, independientemente del dispositivo, puedes simplemente darlo de baja desde el programa.
+  <p>
+    El dispositivo recibirá una actualización OTA para la versión de producción más reciente
+     de Android que se encuentre disponible para ese dispositivo  (por ejemplo, Android 6.0 Marshmallow).
+     La actualización requiere un restablecimiento completo del dispositivo, entonces se quitarán
+     los datos del usuario en el dispositivo. Asegúrate de <strong>realizar una  copia de seguridad de los datos importantes</strong> antes
+    de dar de baja un dispositivo.
+  </p>
+  </li>
+</ul>
+
+<p class="note"><strong>Nota:</strong>
+  Desinstalar una imagen de sistema de la Developer Preview antes
+  del final del programa requiere un restablecimiento completo del dispositivo y elimina todos los datos del usuario
+  en el dispositivo.
+</p>
+
+
+<h2 id="setupAVD">Configurar un emulador</h2>
+
+<p>Para usar el emulador de Android para la ejecución de la Android N Preview, necesitas
+descargar Android N Preview SDK y crear un dispositivo virtual para el
+emulador.</p>
+
+<p>Primero, descarga Android N Preview SDK de la siguiente manera (si
+ya lo obtuviste durante <a href="{@docRoot}preview/setup-sdk.html">la configuración
+para desarrollar Android N</a>, puedes omitir esta parte):
+
+<ol>
+  <li>En Android Studio, abre el diálogo de configuración
+    (<strong>File &gt; Settings</strong> en Windows y Linux, o
+    <strong>Android Studio &gt; Preferences</strong> en Mac). En el panel
+    izquierdo, selecciona <strong>Appearance &amp; Behavior &gt;
+  System Settings &gt; Android SDK</strong>.
+
+  <li>Haz clic en la pestaña <strong>SDK platforms</strong> y luego selecciona la casilla de verificación
+  <strong>Android N Preview</strong>.</li>
+
+  <li>Haz clic en la pestaña <strong>SDK Tools</strong> y luego selecciona las casillas de verificación
+    <strong>Android SDK Build Tools</strong>, <strong>Android SDK
+    Platform-Tools</strong> y
+    <strong>Android SDK Tools</strong>.
+  </li>
+
+  <li>Haz clic en <strong>OK</strong> y acepta los contratos
+    de licencia para instalar cualquier paquete.
+  </li>
+</ol>
+
+<p>Ahora debes tener <strong>Android SDK Built-Tools 24.0 0 rc1</strong>,
+<strong>Platform-Tools 24.0.0 rc1</strong>, y <strong>SDK Tools
+25.0.9</strong>. Si no actualizas las SDK Tools a 25.0.9, luego no podrás
+ejecutar las imágenes de sistema x86_64 para Android N.</p>
+
+
+<p>Ahora crea un dispositivo virtual con la imagen de sistema de Android N:</p>
+
+<ol>
+  <li>Abre el Administrador de AVD seleccionando <strong>Tools &gt; Android &gt;
+    AVD Manager</strong>.</li>
+  <li>Haz clic en <strong>Create Virtual Device</strong>.</li>
+  <li>Selecciona un dispositivo como Nexus 5X, Nexus 6P, Nexus 9, o Android TV,
+    luego haz clic en <strong>Next</strong>.</li>
+  <li>Selecciona la imagen de sistema <strong>N</strong> (con la ABI
+    <strong>x86</strong> ), luego haz clic en <strong>Next</strong>.
+    (Solo las imágenes de sistema x86 son actualmente compatibles con el emulador de Android
+para la Android N Preview).
+  <li>Completa el resto de la configuración AVD y haz clic en
+    <strong>Finish</strong>.</li>
+</ol>
+
+<p>Ahora puedes lanzar el emulador de Android con el AVD de la Android N Preview.</p>
+
+<p>
+A fin de garantizar la mejor experiencia en el emulador de Android, instala la
+Android Studio 2.1 Preview, que admite el <a href="http://tools.android.com/tech-docs/emulator">emulador Android 2.0 Beta</a>
+con mayor rendimiento en comparación con el emulador en
+Android Studio 1.5.</p>
+
+<p class="note"><strong>Nota:</strong>
+  Si actualmente estás usando Android Studio 2.0 Beta, existe un problema conocido
+  que no te permite crear AVD con las imágenes de sistema de la N Preview;
+  por el momento necesitas usar la muestra de Android Studio 2.1 para crear AVD.
+</p>
+
+<p>Para obtener más información sobre la creación de dispositivos virtuales, consulte la <a href="{@docRoot}tools/devices/index.html">Administración de dispositivos virtuales.</a>
+</p>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+  </div><!-- landing -->
+
+</div><!-- relative wrapper -->
+
+
+
+<script>
+  var urlRoot = "http://storage.googleapis.com/androiddevelopers/shareables/preview/";
+  function onDownload(link) {
+
+    $("#downloadForRealz").html("Download " + $(link).text());
+    $("#downloadForRealz").attr('href', urlRoot + $(link).text());
+
+    $("#tos").fadeIn('fast');
+    $("#landing").fadeOut('fast');
+
+    return true;
+  }
+
+
+  function onAgreeChecked() {
+    /* verify that the TOS is agreed */
+    if ($("input#agree").is(":checked")) {
+      /* reveal the download button */
+      $("a#downloadForRealz").removeClass('disabled');
+    } else {
+      $("a#downloadForRealz").addClass('disabled');
+    }
+  }
+
+  function onDownloadForRealz(link) {
+    if ($("input#agree").is(':checked')) {
+    /*
+      $("#tos").fadeOut('fast');
+      $("#landing").fadeIn('fast');
+    */
+
+      ga('send', 'event', 'M Preview', 'System Image', $("#downloadForRealz").html());
+
+    /*
+      location.hash = "";
+    */
+      return true;
+    } else {
+      return false;
+    }
+  }
+
+  $(window).hashchange( function(){
+    if (location.hash == "") {
+      location.reload();
+    }
+  });
+
+</script>
diff --git a/docs/html-intl/intl/es/preview/features/background-optimization.jd b/docs/html-intl/intl/es/preview/features/background-optimization.jd
new file mode 100644
index 0000000..3f5cf22
--- /dev/null
+++ b/docs/html-intl/intl/es/preview/features/background-optimization.jd
@@ -0,0 +1,388 @@
+page.title=Optimizaciones en segundo plano
+page.metaDescription=Nuevas restricciones para difusiones implícitas.
+page.keywords="android N", "implicit broadcasts", "job scheduler"
+@jd:body
+
+<div id="qv-wrapper">
+  <div id="qv">
+    <h2>
+      Contenido del documento
+    </h2>
+
+    <ol>
+      <li>
+        <a href="#connectivity-action">Restricciones en CONNECTIVITY_ACTION</a>
+      </li>
+
+      <li>
+        <a href="#sched-jobs">Programación de trabajos en red en conexiones
+        sin medición</a>
+      </li>
+
+      <li>
+        <a href="#monitor-conn">Control de la conectividad de la red mientras la aplicación
+        se está ejecutando</a>
+      </li>
+
+      <li>
+        <a href="#media-broadcasts">Restricciones en NEW_PICTURE y
+        NEW_VIDEO</a>
+      </li>
+
+      <li>
+        <a href="#new-jobinfo">Nuevos métodos de JobInfo</a>
+      </li>
+
+      <li>
+        <a href="#new-jobparam">Nuevos métodos de JobParameter</a>
+      </li>
+
+      <li>
+        <a href="#further-optimization">Cómo optimizar aún más tu aplicación</a>
+      </li>
+    </ol>
+  </div>
+</div>
+
+<p>
+  Los procesos en segundo plano pueden consumir mucha memoria y batería. Por ejemplo, una
+  difusión implícita puede iniciar muchos procesos en segundo plano registrados para
+  escucharla, aunque esos procesos quizá no desempeñen un trabajo considerable. Esto puede
+  afectar de forma significativa tanto el rendimiento del dispositivo como la experiencia de usuario.
+</p>
+
+<p>
+  Para atenuar este problema, la N Developer Preview aplica las siguientes 
+  restricciones:
+</p>
+
+<ul>
+  <li>Las aplicaciones orientadas a la Preview no reciben difusiones {@link
+  android.net.ConnectivityManager#CONNECTIVITY_ACTION} si 
+  en su manifiesto registran que las reciben. Las aplicaciones que se ejecutan en segundo plano
+  aún pueden escuchar {@code CONNECTIVITY_CHANGE} en su subproceso principal al
+  registrar un {@link android.content.BroadcastReceiver} con {@link
+  android.content.Context#registerReceiver Context.registerReceiver()}.
+  </li>
+
+  <li>Las aplicaciones no pueden enviar ni recibir difusiones {@link
+  android.hardware.Camera#ACTION_NEW_PICTURE} ni {@link
+  android.hardware.Camera#ACTION_NEW_VIDEO}. Esta optimización
+  afecta a todas las aplicaciones, no solo a las orientadas a la Preview.
+  </li>
+</ul>
+
+<p>
+  El framework de Android ofrece varias soluciones para mitigar la necesidad de
+  estas difusiones implícitas. Por ejemplo, {@link android.app.job.JobScheduler}
+  y <a href="https://developers.google.com/android/reference/com/google/android/gms/gcm/GcmNetworkManager">
+  {@code GcmNetworkManager}</a> proporcionan mecanismos sólidos para programar operaciones
+  de red cuando se cumplen las condiciones especificadas, como una conexión a una
+  red de uso no medido. Ahora también puedes usar {@link android.app.job.JobScheduler}
+  para reaccionar a cambios en relación con los proveedores de contenido. Los objetos {@link android.app.job.JobInfo}
+  encapsulan los parámetros que usa {@link android.app.job.JobScheduler}
+  para programar el trabajo. Cuando se cumplen las condiciones del trabajo, el sistema
+  ejecuta ese trabajo en el {@link android.app.job.JobService} de tu aplicación.
+</p>
+
+<p>
+  En este documento, aprenderemos cómo usar métodos alternativos, como
+  {@link android.app.job.JobScheduler}, para adaptar tu aplicación a esas nuevas
+  restricciones.
+</p>
+
+<h2 id="connectivity-action">
+  Restricciones en CONNECTIVITY_ACTION
+</h2>
+
+<p>
+  Las aplicaciones orientadas a la N Developer Preview no reciben difusiones {@link
+  android.net.ConnectivityManager#CONNECTIVITY_ACTION} si en su
+  manifiesto registran que las reciben, y los procesos dependen de que
+  no se inicie esa difusión. Esto podría ser un problema para aplicaciones que buscan
+  escuchar los cambios en la red o realizar múltiples actividades en red cuando el
+  dispositivo se conecta a una red sin medición de uso. Ya existen varias soluciones
+  en relación con esta restricción en el framework de Android, pero elegir
+  la correcta depende de lo que quieras lograr con tu aplicación.
+</p>
+
+<p class="note">
+  <strong>Nota:</strong> Un {@link android.content.BroadcastReceiver} registrado con
+  {@link android.content.Context#registerReceiver Context.registerReceiver()}
+  continúa recibiendo esas difusiones mientras la aplicación está en segundo plano.
+</p>
+
+<h3 id="sched-jobs">
+  Programación de trabajos en red en conexiones sin medición de uso
+</h3>
+
+<p>
+  Cuando uses la clase {@link android.app.job.JobInfo.Builder JobInfo.Builder}
+  para crear tu objeto {@link android.app.job.JobInfo}, aplica el método {@link
+  android.app.job.JobInfo.Builder#setRequiredNetworkType
+  setRequiredNetworkType()} y pasa {@link android.app.job.JobInfo
+  JobInfo.NETWORK_TYPE_UNMETERED} como parámetro de trabajo. El siguiente ejemplo de código
+  programa la ejecución de un servicio cuando el dispositivo se conecta a una red sin
+  medición de uso y se está cargando:
+</p>
+
+<pre>
+public static final int MY_BACKGROUND_JOB = 0;
+...
+public static void scheduleJob(Context context) {
+  JobScheduler js =
+      (JobScheduler) context.getSystemService(Context.JOB_SCHEDULER_SERVICE);
+  JobInfo job = new JobInfo.Builder(
+    MY_BACKGROUND_JOB,
+    new ComponentName(context, MyJobService.class))
+      .setRequiredNetworkType(JobInfo.NETWORK_TYPE_UNMETERED)
+      .setRequiresCharging(true)
+      .build();
+  js.schedule(job);
+}
+</pre>
+
+<p>
+  Cuando se cumplan las condiciones para tu trabajo, tu aplicación recibirá un callback para ejecutar
+  el método {@link android.app.job.JobService#onStartJob onStartJob()} en la
+   {@code JobService.class} especificada. Para ver más ejemplos de la implementación de {@link
+  android.app.job.JobScheduler}, consulta la <a href="{@docRoot}samples/JobScheduler/index.html">aplicación de ejemplo JobScheduler</a>.
+</p>
+
+<p>
+  Las aplicaciones que usan servicios de GMSCore y están orientadas a Android 5.0 (API nivel 21)
+  o anterior, pueden usar <a href="https://developers.google.com/android/reference/com/google/android/gms/gcm/GcmNetworkManager">
+  {@code GcmNetworkManager}</a> y especificar {@code Task.NETWORK_STATE_UNMETERED}.
+</p>
+
+<h3 id="monitor-conn">
+  Control de la conectividad de la red mientras la aplicación se está ejecutando
+</h3>
+
+<p>
+  Las aplicaciones que se ejecutan en segundo plano aún pueden escuchar {@code
+  CONNECTIVITY_CHANGE} con un {@link
+  android.content.BroadcastReceiver} registrado. No obstante, la API {@link
+  android.net.ConnectivityManager} ofrece un método más robusto para solicitar
+  un callback solo cuando se cumplen las condiciones de red especificadas.
+</p>
+
+<p>
+  Los objetos {@link android.net.NetworkRequest} definen los parámetros del
+  callback de la red en términos de {@link android.net.NetworkCapabilities}. Creas
+  objetos {@link android.net.NetworkRequest} con la clase {@link
+  android.net.NetworkRequest.Builder NetworkRequest.Builder}. {@link
+  android.net.ConnectivityManager#registerNetworkCallback(android.net.NetworkRequest,
+  android.net.ConnectivityManager.NetworkCallback) registerNetworkCallback()}
+  y luego pasa el objeto {@link android.net.NetworkRequest} al sistema. Cuando
+  se cumplen las condiciones de la red, la aplicación recibe un callback para ejecutar el método
+  {@link android.net.ConnectivityManager.NetworkCallback#onAvailable
+  onAvailable()} definido en su clase {@link
+  android.net.ConnectivityManager.NetworkCallback}.
+</p>
+
+<p>
+  La aplicación continuará recibiendo callbacks hasta que la aplicación salga o llame a
+  {@link android.net.ConnectivityManager#unregisterNetworkCallback
+  unregisterNetworkCallback()}.
+</p>
+
+<h2 id="media-broadcasts">
+  Restricciones en NEW_PICTURE y NEW_VIDEO
+</h2>
+
+<p>
+  En la N Developer Preview, las aplicaciones no pueden enviar ni recibir difusiones {@link
+  android.hardware.Camera#ACTION_NEW_PICTURE} ni {@link
+  android.hardware.Camera#ACTION_NEW_VIDEO}. Esta restricción ayuda a
+  aliviar el impacto en el rendimiento y la experiencia de usuario cuando varias aplicaciones deben
+  activarse para procesar una nueva imagen o video. La N Developer Preview
+  extiende {@link android.app.job.JobInfo} y {@link
+  android.app.job.JobParameters} para proporcionar una solución alternativa.
+</p>
+
+<h3 id="new-jobinfo">
+  Nuevos métodos de JobInfo
+</h3>
+
+<p>
+  Para activar trabajos en los cambios del URI de contenido, la N Developer Preview amplía
+  la API {@link android.app.job.JobInfo} con los siguientes métodos:
+</p>
+
+<dl>
+  <dt>
+    {@code JobInfo.TriggerContentUri()}
+  </dt>
+
+  <dd>
+    Encapsula parámetros necesarios para activar un trabajo en cambios del URI de contenido.
+  </dd>
+
+  <dt>
+    {@code JobInfo.Builder.addTriggerContentUri()}
+  </dt>
+
+  <dd>
+    Pasa un objeto {@code TriggerContentUri} a {@link
+    android.app.job.JobInfo}. Un {@link android.database.ContentObserver}
+    controla el URI de contenido encapsulado. Si hay múltiples objetos {@code
+    TriggerContentUri} asociados a un trabajo, el sistema proporciona un
+    callback aunque se informe un cambio en un solo URI de contenido.
+  </dd>
+
+  <dd>
+    Si cambia algún desencadenante del URI determinado, agrega el marcador {@code TriggerContentUri.FLAG_NOTIFY_FOR_DESCENDANTS} para
+    activar el trabajo. Este marcador
+    corresponde al parámetro {@code notifyForDescendants} pasado a {@link
+    android.content.ContentResolver#registerContentObserver
+    registerContentObserver()}.
+  </dd>
+</dl>
+
+<p class="note">
+  <strong>Nota:</strong> no se puede usar {@code TriggerContentUri()} junto
+  con {@link android.app.job.JobInfo.Builder#setPeriodic
+  setPeriodic()} ni {@link android.app.job.JobInfo.Builder#setPersisted
+  setPersisted()}. Para controlar de forma constante la presencia de cambios, programa un nuevo
+  {@link android.app.job.JobInfo} antes de que el {@link
+  android.app.job.JobService} de la aplicación termine de administrar la callback más reciente.
+</p>
+
+<p>
+  El siguiente código de ejemplo programa la activación de un trabajo cuando el sistema informe
+  un cambio en el URI de contenido, {@code MEDIA_URI}:
+</p>
+
+<pre>
+public static final int MY_BACKGROUND_JOB = 0;
+...
+public static void scheduleJob(Context context) {
+  JobScheduler js =
+          (JobScheduler) context.getSystemService(Context.JOB_SCHEDULER_SERVICE);
+  JobInfo.Builder builder = new JobInfo.Builder(
+          MY_BACKGROUND_JOB,
+          new ComponentName(context, MediaContentJob.class));
+  builder.addTriggerContentUri(
+          new JobInfo.TriggerContentUri(MEDIA_URI,
+          JobInfo.TriggerContentUri.FLAG_NOTIFY_FOR_DESCENDANTS));
+  js.schedule(builder.build());
+}
+</pre>
+<p>
+  Cuando el sistema informa un cambio en el(los) URI de contenido especificado(s), tu aplicación
+  recibe un callback y se pasa un objeto {@link android.app.job.JobParameters} 
+  al método {@link android.app.job.JobService#onStartJob onStartJob()}
+  en {@code MediaContentJob.class}.
+</p>
+
+<h3 id="new-jobparam">
+  Nuevos métodos de JobParameter
+</h3>
+
+<p>
+  La N Developer Preview también amplía {@link android.app.job.JobParameters} para
+  permitir que tu aplicación reciba información útil sobre qué autoridades de contenido
+  y URI activaron el trabajo:
+</p>
+
+<dl>
+  <dt>
+    {@code Uri[] getTriggeredContentUris()}
+  </dt>
+
+  <dd>
+    Devuelve el arreglo de los URI que activaron el trabajo. Ese arreglo será {@code
+    null} si ningún URI activó el trabajo (por ejemplo, el trabajo
+    se activó debido al cumplimiento de un plazo o por otro motivo), o la cantidad de URI
+    modificados es superior a 50.
+  </dd>
+
+  <dt>
+    {@code String[] getTriggeredContentAuthorities()}
+  </dt>
+
+  <dd>
+    Devuelve el arreglo de cadenas de autoridades de contenido que activaron el trabajo.
+    Si el arreglo devuelto no es {@code null}, usa {@code getTriggeredContentUris()}
+    para recuperar los detalles de los URI que se modificaron.
+  </dd>
+</dl>
+
+<p>
+  El siguiente código de ejemplo anula el método {@link
+  android.app.job.JobService#onStartJob JobService.onStartJob()} y
+  registra las autoridades de contenido y los URI que activaron el trabajo:
+</p>
+
+<pre>
+&#64;Override
+public boolean onStartJob(JobParameters params) {
+  StringBuilder sb = new StringBuilder();
+  sb.append("Media content has changed:\n");
+  if (params.getTriggeredContentAuthorities() != null) {
+      sb.append("Authorities: ");
+      boolean first = true;
+      for (String auth :
+          params.getTriggeredContentAuthorities()) {
+          if (first) {
+              first = false;
+          } else {
+             sb.append(", ");
+          }
+           sb.append(auth);
+      }
+      if (params.getTriggeredContentUris() != null) {
+          for (Uri uri : params.getTriggeredContentUris()) {
+              sb.append("\n");
+              sb.append(uri);
+          }
+      }
+  } else {
+      sb.append("(No content)");
+  }
+  Log.i(TAG, sb.toString());
+  return true;
+}
+</pre>
+
+<h2 id="further-optimization">
+  Cómo optimizar aún más tu aplicación
+</h2>
+
+<p>
+  Optimizar tus aplicaciones para que se ejecuten en dispositivos con poca memoria o en condiciones de niveles bajos
+  de memoria puede mejorar el rendimiento y la experiencia del usuario. Eliminar
+  dependencias en servicios en segundo plano y receptores de difusiones implícitas
+  registrados estadísticamente puede ayudar a que tu aplicación se ejecute mejor en esos dispositivos. Si bien
+  la N Developer Preview toma medidas para reducir algunos de esos problemas, te
+  recomendamos que optimices tu aplicación para que pueda ejecutarse sin utilizar esos
+  procesos en segundo plano.
+</p>
+
+<p>
+  La N Developer Preview presenta algunos comandos adicionales de <a href="{@docRoot}tools/help/adb.html">Puente de Depuración Android (en inglés, Android Debug Bridge, ADB)</a> que
+  puedes usar para probar el comportamiento de la aplicación con esos procesos en segundo plano deshabilitados:
+</p>
+
+<ul>
+  <li>Para simular condiciones en las que no hay difusiones implícitas ni servicios en segundo plano
+  disponibles, ingresa el siguiente comando:
+  </li>
+
+  <li style="list-style: none; display: inline">
+<pre class="no-pretty-print">
+{@code $ adb shell cmd appops set RUN_IN_BACKGROUND ignore}
+</pre>
+  </li>
+
+  <li>Para volver a habilitar las difusiones implícitas y los servicios en segundo plano, ingresa el
+  siguiente comando:
+  </li>
+
+  <li style="list-style: none; display: inline">
+<pre class="no-pretty-print">
+{@code $ adb shell cmd appops set RUN_IN_BACKGROUND allow}
+</pre>
+  </li>
+</ul>
\ No newline at end of file
diff --git a/docs/html-intl/intl/es/preview/features/direct-boot.jd b/docs/html-intl/intl/es/preview/features/direct-boot.jd
new file mode 100644
index 0000000..1992e48
--- /dev/null
+++ b/docs/html-intl/intl/es/preview/features/direct-boot.jd
@@ -0,0 +1,180 @@
+page.title=Arranque directo
+page.keywords=preview,sdk,direct boot
+page.tags=androidn
+
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+  <h2>Contenido del documento</h2>
+  <ol>
+    <li><a href="#run">Solicitar acceso para ejecutar durante el arranque directo</a></li>
+    <li><a href="#access">Acceder al almacenamiento cifrado por dispositivo</a></li>
+    <li><a href="#notification">Recibir notificaciones sobre el desbloqueo del usuario</a></li>
+    <li><a href="#migrating">Migrar datos existentes</a></li>
+    <li><a href="#testing">Probar la aplicación con reconocimiento de cifrado</a></li>
+  </ol>
+</div>
+</div>
+
+<p>Android N se ejecuta en un modo <i>de arranque directo</i> seguro
+cuando el dispositivo se enciende pero el usuario no lo ha
+desbloqueado. Para permitir esto, el sistema brinda dos ubicaciones de almacenamiento para los datos:</p>
+
+<ul>
+<li><i>Almacenamiento cifrado por credencial:</i>es la ubicación de almacenamiento predeterminada
+y solo está disponible después de que el usuario desbloquea el dispositivo.</li>
+<li><i>Almacenamiento cifrado por dispositivo:</i>es una ubicación de almacenamiento que está disponible tanto
+durante el modo de arranque directo como después de que el usuario desbloquea el dispositivo.</li>
+</ul>
+
+<p>De forma predeterminada, las aplicaciones no se ejecutan durante el modo de arranque directo.
+Si necesita que su aplicación se ejecute durante el modo de arranque directo, puede registrar
+los componentes de la aplicación que deberían ejecutarse durante este modo. Algunos casos comunes de
+aplicaciones que necesitan ejecutarse durante el modo de arranque directo incluyen los siguientes:</p>
+
+<ul>
+<li>aplicaciones que tienen notificaciones programadas, como aplicaciones
+de alarma;</li>
+<li>aplicaciones que generan notificaciones de usuario importantes, como aplicaciones de mensajes SMS;</li>
+<li>aplicaciones que brindan servicios de accesibilidad, como Talkback.</li>
+</ul>
+
+<p>Si necesita que su aplicación acceda a datos mientras se ejecuta el modo de arranque directo, use
+el almacenamiento cifrado por dispositivo. Este tipo de almacenamiento contiene datos
+cifrados con una clave que solo está disponible luego de que el dispositivo haya realizado un inicio
+verificado correctamente.</p>
+
+<p>Para los datos que se deben cifrar con una clave asociada con credenciales del
+usuario, como un PIN o una contraseña, use el almacenamiento cifrado por credencial.
+Este tipo de almacenamiento solo está disponible luego de que el usuario haya desbloqueado
+correctamente el dispositivo y hasta que el usuario reinicie nuevamente el dispositivo. Si el
+usuario habilita el bloqueo de pantalla luego de desbloquear el dispositivo, esto no bloquea
+el almacenamiento cifrado por credencial.</p>
+
+<h2 id="run">Solicitar acceso para ejecutar durante el arranque directo</h2>
+
+<p>Debes registrar los componentes de las aplicaciones con el sistema antes de que estas puedan
+ejecutarse durante el modo de arranque directo o acceder al almacenamiento cifrado por
+dispositivo. Para registrar una aplicación en el sistema, debes marcar los componentes como
+<i>reconocimiento de cifrado</i>. Para marcar su dispositivo como "con reconocimiento de cifrado" , configure el atributo 
+<code>android:encryptionAware</code> como verdadero en el manifiesto.<p>
+
+<p>Los componentes con reconocimiento de cifrado pueden registrarse para recibir un mensaje de difusión 
+<code>LOCKED_BOOT_COMPLETED</code> del
+sistema cuando el dispositivo se haya reiniciado. En este momento, el almacenamiento
+cifrado por dispositivo está disponible, y el componente puede ejecutar tareas que se deben
+ejecutar durante el modo de arranque directo, como disparar una alarma programada.</p>
+
+<p>El siguiente fragmento de código es un ejemplo de cómo registrar un
+{@link android.content.BroadcastReceiver} como reconocimiento de cifrado y de cómo agregar un
+filtro de intenciones para <code>LOCKED_BOOT_COMPLETED</code> en el manifiesto de la aplicación:</p>
+
+<pre>
+&lt;receiever
+  android:encryptionAware="true" &gt;
+  ...
+  &lt;intent-filter&gt;
+    &lt;action android:name="android.intent.action.LOCKED_BOOT_COMPLETED" /&gt;
+  &lt;/intent-filter&gt;
+&lt;/receiver&gt;
+</pre>
+
+<p>Una vez que el usuario haya desbloqueado el dispositivo, todos los componentes podrán acceder tanto al
+almacenamiento cifrado por dispositivo como al almacenamiento cifrado por credencial.</p>
+
+<h2 id="access">Acceder al almacenamiento cifrado por dispositivo</h2>
+
+<p>Para acceder al almacenamiento cifrado por dispositivo, crea una segunda
+instancia de {@link android.content.Context} llamando a
+<code>Context.createDeviceEncryptedStorageContext()</code>. Todas las llamadas
+de API de almacenamiento que se hacen usando este contexto acceden al almacenamiento cifrado por dispositivo. El siguiente
+ejemplo accede al almacenamiento cifrado por dispositivo y abre un archivo de datos de la aplicación
+existente:</p>
+
+<pre>
+Context directBootContext = Context.createDeviceEncryptedStorageContext();
+// Access appDataFilename that lives in device encrypted storage
+FileInputStream inStream = directBootContext.openFileInput(appDataFilename);
+// Use inStream to read content...
+</pre>
+
+<p>Solo debes usar el almacenamiento cifrado por dispositivo para
+información que debe ser accesible durante el modo de arranque directo.
+No uses este tipo de almacenamiento como un almacenamiento cifrado de propósito general.
+Para información privada del usuario o datos cifrados que no son necesarios durante
+el modo de arranque directo, usa el almacenamiento cifrado por credencial.</p>
+
+<h2 id="notification">Recibir notificaciones sobre el desbloqueo del usuario</h2>
+
+<p>Una vez que el usuario desbloquea el dispositivo después de reiniciarlo, la aplicación puede cambiar y acceder
+al almacenamiento cifrado por credencial y usar servicios del sistema comunes que
+dependen de credenciales de usuario.</p>
+
+<p>Para recibir una notificación cuando el usuario desbloquea el dispositivo luego de reiniciarlo,
+registra un {@link android.content.BroadcastReceiver} de un componente en ejecución
+para que escuche el mensaje <code>ACTION_USER_UNLOCKED</code>. O puedes
+recibir el mensaje existente {@link android.content.Intent#ACTION_BOOT_COMPLETED
+ACTION_BOOT_COMPLETED}, que ahora indica que el dispositivo se ha iniciado y
+que el usuario ha desbloqueado el dispositivo.</p>
+
+<p>Puedes consultar directamente si el usuario ha desbloqueado el dispositivo llamando a
+<code>UserManager.isUserUnlocked()</code>.</p>
+
+<h2 id="migrating">Migrar datos existentes</h2>
+
+<p>Si un usuario actualiza el dispositivo para usar el modo de arranque directo, es posible que haya
+datos existentes que se deben migrar al almacenamiento cifrado por dispositivo. Usa
+<code>Context.migrateSharedPreferencesFrom()</code> y
+<code>Context.migrateDatabaseFrom()</code> para migrar los datos de preferencia y de base de datos
+del almacenamiento cifrado por credencial al almacenamiento cifrado por dispositivo.</p>
+
+<p>Debes tener cuidado cuando decidas qué datos migrar entre
+estos dos tipos de almacenamiento. No deberías migrar
+información de usuario privada, como contraseñas o tokens de autorización, al
+ almacenamiento cifrado por dispositivo. En algunos casos, es posible que debas gestionar
+conjuntos separados de datos en ambos tipos de almacenamiento cifrado.</p>
+
+<h2 id="testing">Probar la aplicación con reconocimiento de cifrado</h2>
+
+<p>Prueba la aplicación con reconocimiento de cifrado usando el nuevo modo de arranque directo. Hay dos
+maneras de habilitar el arranque directo.</p>
+
+<p class="caution"><strong>Advertencia:</strong> habilitar el arranque directo
+borrará todos los datos de usuario del dispositivo.</p>
+
+<p>Para los dispositivos compatibles que tienen Android N instalado, habilita
+el arranque directo mediante una de las siguientes opciones:</p>
+
+<ul>
+<li>En el dispositivo, habilita las <b>Developer options</b> si no lo haz hecho aún
+yendo a <b>Settings &gt; About phone</b> y presionando <b>Build number</b>
+siete veces. Una vez que aparezca la pantalla Developer options, dirígete a
+<b>Settings &gt; Developer options</b> y selecciona
+<b>Convert to file encryption</b>.</li>
+<li>Usa los siguientes comandos shell ADB para permitir el modo de arranque directo:
+<pre class="no-pretty-print">
+$ adb reboot-bootloader
+$ fastboot --wipe-and-use-fbe
+</pre>
+</li>
+</ul>
+
+<p>También está disponible un modo de arranque directo emulado en caso de que debas cambiar
+de modo en los dispositivos de prueba. El modo emulado solo debería usarse durante
+el desarrollo, y puede provocar la pérdida de datos. Para habilitar el modo de arranque directo emulado,
+debes establecer un patrón de bloqueo en el dispositivo, elegir "No thanks" si te pregunta si deseas un
+inicio seguro cuando estás estableciendo el patrón de bloqueo y, luego, usar el
+siguiente comando shell ADB:</p>
+
+<pre class="no-pretty-print">
+$ adb shell sm set-emulate-fbe true
+</pre>
+
+<p>Para deshabilitar el modo de arranque directo emulado, usa el siguiente comando:</p>
+
+<pre class="no-pretty-print">
+$ adb shell sm set-emulate-fbe false
+</pre>
+
+<p>Usar estos comandos provoca el reinicio del dispositivo.</p>
diff --git a/docs/html-intl/intl/es/preview/features/icu4j-framework.jd b/docs/html-intl/intl/es/preview/features/icu4j-framework.jd
new file mode 100644
index 0000000..4c5fc7b
--- /dev/null
+++ b/docs/html-intl/intl/es/preview/features/icu4j-framework.jd
@@ -0,0 +1,158 @@
+page.title=API de ICU4J del framework de Android
+
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+<h2>Contenido del documento:</h2>
+<ol>
+    <li><a href="#relation">Relación con ICU4J</a></li>
+    <li><a href="#migration">Migración hacia API de android.icu desde ICU4J</a></li>
+    <li><a href="#licence">Licencias</a></li>
+</ol>
+
+<h2>Consulta también</h2>
+<ol>
+  <li>
+    <a class="external-link" href="http://userguide.icu-project.org">Documentación para ICU4J</a>
+  </li>
+
+  <li>
+    <a class="external-link" href="http://site.icu-project.org/#TOC-What-is-ICU-">Últimos estándares compatibles
+ con ICU4J</a>
+  </li>
+</ol>
+</div>
+</div>
+
+<p>
+  ICU4J es un conjunto de bibliotecas de Java de código abierto y amplio uso que brinda soporte de Unicode
+ y de globalización para aplicaciones de software. Android N
+ expone un subconjunto de las API de ICU4J en el framework de Android para que los desarrolladores de aplicaciones
+ lo usen debajo del paquete {@code android.icu}. Estas API usan
+ datos de ubicación que están presentes en el dispositivo. Como resultado, puedes reducir la superficie de APK
+ evitando la compilación de las bibliotecas de ICU4J en APK. En lugar de esto, puedes
+ llamarlas en el framework. (En este caso, posiblemente debas brindar
+ <a href="{@docRoot}google/play/publishing/multiple-apks.html">versiones múltiples
+ del APK</a>, de modo que los usuarios que usan versiones de Android inferiores a Android N
+ puedan descargar una versión de la aplicación que incluya las bibliotecas de ICU4J).
+</p>
+
+<p>
+  Al principio de este documento, encontrarás información básica sobre el mínimo de niveles de Android API
+ necesarios para soportar estas bibliotecas. Más adelante, encontrarás explicaciones sobre qué
+ necesitas saber acerca de la implementación de ICU4J específica para Android. Por último,
+ encontrarás explicaciones sobre cómo usar las API de ICU4J en el framework de Android.
+</p>
+
+<h2 id="relation">Relación con ICU4J</h2>
+
+<p>
+  Android N expone un subconjunto de las API de ICU4J mediante el
+ paquete <code>android.icu</code>, en lugar de <code>com.ibm.icu</code>. El
+framework de Android puede elegir no
+ exponer las API de ICU4J por varias razones; por ejemplo, Android N no expone
+ algunas API obsoletas o algunas que el equipo de ICU aún no ha declarado como
+ estables. A medida que el equipo de ICU deje de usar API en el futuro, Android también las marcará
+ como obsoletas, pero las seguirá incluyendo.
+</p>
+
+<p class="table-caption"><strong>Tabla 1.</strong> Versiones de ICU y CLDR usadas
+ en Android N.</p>
+<table>
+<tr>
+<th>Nivel de Android API</th>
+<th>Versión de ICU</th>
+<th>Versión de CLDR</th>
+</tr>
+<tr>
+<td>Android N</td>
+<td>56</td>
+<td>28</td>
+</tr>
+</table>
+
+<p>Debes tener en cuenta lo siguiente:</p>
+
+<ul>
+<li>Las API de ICU4J del framework de Android no incluyen todas las API de ICU4J.</li>
+<li>Los desarrolladores de NDK deben saber que ICU4C de Android no es compatible.</li>
+<li>Las API del framework de Android no reemplazan la compatibilidad de Android para
+<a href="{@docRoot}guide/topics/resources/localization.html">localizar con
+recursos</a>.</li>
+</ul>
+
+<h2 id="migration">Migración hacia el paquete android.icu desde com.ibm.icu</h2>
+
+<p>
+  Si ya estás usando las API de ICU4J en tu aplicación y las
+ API de <code>android.icu</code> cumplen con tus requisitos, migrar hacia las
+ API del framework implicará que cambies tus importaciones de Java
+ de <code>com.ibm.icu</code> a <code>android.icu</code>. Luego, puedes
+ quitar tu propia copia de los archivos de ICU4J del APK.
+</p>
+
+<p class="note">
+  <b>Nota</b>: Las API del framework de ICU4J usan el espacio de nombres {@code android.icu}
+ en lugar de {@code com.ibm.icu}. El motivo de esto es evitar conflictos de espacio de nombres
+ en APK que contienen sus propias bibliotecas de {@code com.ibm.icu}.
+</p>
+
+<h3 id="migrate-from-android">
+  Migración hacia API de android.icu desde otras Android SDK API
+</h3>
+
+<p>
+  Algunas clases de los paquetes de <code>java</code> y de <code>android</code> son
+ equivalentes a las clases de ICU4J. Sin embargo, ICU4J a menudo brinda una compatibilidad
+ más amplia para estándares e idiomas.
+</p>
+<p>Aquí tienes algunos ejemplos para comenzar:</p>
+<table>
+<tr>
+<th>Clase</th>
+<th>Alternativa</th>
+</tr>
+<tr>
+<td><code>java.lang.Character</code> </td>
+<td><code>android.icu.lang.UCharacter</code> </td>
+</tr>
+<tr>
+<td><code>java.text.BreakIterator</code> </td>
+<td><code>android.icu.text.BreakIterator</code> </td>
+</tr>
+<tr>
+<td><code>java.text.DecimalFormat</code> </td>
+<td><code>android.icu.text.DecimalFormat</code> </td>
+</tr>
+<tr>
+<td><code>java.util.Calendar</code></td>
+<td>
+<code>android.icu.util.Calendar</code></td>
+</tr>
+<tr>
+<td><code>android.text.BidiFormatter</code>
+ </td>
+<td><code>android.icu.text.Bidi</code>
+ </td>
+</tr>
+<tr>
+<td><code>android.text.format.DateFormat</code>
+ </td>
+<td><code>android.icu.text.DateFormat</code>
+ </td>
+</tr>
+<tr>
+<td><code>android.text.format.DateUtils</code> </td>
+<td><code>android.icu.text.DateFormat</code>
+<code>android.icu.text.RelativeDateTimeFormatter</code>
+</td>
+</tr>
+</table>
+
+<h2 id="licence">Licencias</h2>
+
+<p>
+  ICU4J se presenta bajo la licencia de ICU. Para obtener información más detallada, consulta la <a class="external-link" href="http://userguide.icu-project.org/icufaq#TOC-How-is-the-ICU-licensed-">Guía de usuario
+ de ICU.</a>
+</p>
diff --git a/docs/html-intl/intl/es/preview/features/multi-window.jd b/docs/html-intl/intl/es/preview/features/multi-window.jd
new file mode 100644
index 0000000..4415ba9
--- /dev/null
+++ b/docs/html-intl/intl/es/preview/features/multi-window.jd
@@ -0,0 +1,582 @@
+page.title=Compatibilidad con ventanas múltiples
+page.metaDescription=Nueva compatibilidad en Android N para mostrar más de una aplicación a la vez.
+page.keywords="multi-window", "android N", "split screen", "free-form"
+
+@jd:body
+
+<div id="qv-wrapper">
+  <div id="qv">
+    <h2>Contenido del documento</h2>
+      <ol>
+        <li><a href="#overview">Información general</a></li>
+        <li><a href="#lifecycle">Ciclo de vida en modo de ventanas múltiples</a></li>
+        <li><a href="#configuring">Configuración de tu aplicación para el modo de
+              ventanas múltiples</a></li>
+        <li><a href="#running">Ejecución de tu aplicación en modo de ventanas múltiples</a></li>
+        <li><a href="#testing">Prueba de la compatibilidad de tu aplicación con el uso de ventanas múltiples</a></li>
+      </ol>
+    <h2>Consulta también</h2>
+      <ol>
+        <li><a class="external-link" href="https://github.com/googlesamples/android-MultiWindowPlayground">Aplicación de ejemplo para la
+          prueba de ventanas múltiples</a></li>
+      </ol>
+  </div>
+</div>
+
+<p>
+  Android N agrega compatibilidad con la visualización de más de una aplicación
+   a la vez. En dispositivos portátiles, se pueden ejecutar dos aplicaciones una al lado de la otra o
+  una por encima de la otra en modo de <em>pantalla dividida</em>. En dispositivos de TV, las aplicaciones pueden
+  usar el modo <em>imagen en imagen</em> para continuar la reproducción de video mientras los usuarios
+  interactúan con otra aplicación.
+</p>
+
+<p>
+  Si compilas tu aplicación con el N Preview SDK, puedes configurar la manera en que tu aplicación
+  administra la visualización de ventanas múltiples. Por ejemplo, puedes especificar las dimensiones
+  mínimas permitidas de tu actividad. También puedes inhabilitar la visualización de ventanas múltiples para
+  tu aplicación asegurándote de que el sistema solo muestre tu aplicación en modo de
+  pantalla completa.
+</p>
+
+<h2 id="overview">Información general</h2>
+
+<p>
+  Android N permite que varias aplicaciones compartan la pantalla al mismo tiempo. Por
+  ejemplo, un usuario podría dividir la pantalla y ver una página web a la izquierda
+  mientras escribe un correo electrónico a la derecha. La experiencia de usuario depende
+  del dispositivo:
+</p>
+
+<ul>
+  <li>Los dispositivos portátiles con Android N ofrecen modo de
+  pantalla dividida. En este modo, el sistema ocupa la pantalla con dos aplicaciones y las muestra
+  una al lado de la otra o una encima de la otra. El usuario puede arrastrar la línea que divide
+  las dos aplicaciones para visualizar una más grande que la otra.
+  </li>
+
+  <li>En dispositivos Nexus Player con Android N, las aplicaciones pueden ubicarse automáticamente
+  en <a href="picture-in-picture.html">modo de imagen en imagen</a>, lo que les permite
+  continuar mostrando contenido mientras el usuario explora o interactúa con
+  otras aplicaciones.
+  </li>
+
+  <li>Los fabricantes de dispositivos más grandes pueden optar por habilitar el modo
+  de forma libre, en el que el usuario puede modificar libremente el tamaño de cada actividad. Si el
+  fabricante habilita está función, el dispositivo ofrecerá modo de forma libre además
+  del modo de pantalla dividida.
+  </li>
+</ul>
+
+<img src="{@docRoot}preview/images/mw-splitscreen.png" alt="" width="650" srcset="{@docRoot}preview/images/mw-splitscreen.png 1x,
+    {@docRoot}preview/images/mw-splitscreen_2x.png 2x," id="img-split-screen" />
+<p class="img-caption">
+  <strong>Figura 1:</strong> Dos aplicaciones ejecutándose una al lado de la otra en modo de pantalla dividida.
+</p>
+
+<p>
+  El usuario puede cambiar a modo de ventanas múltiples de la siguiente manera:
+</p>
+
+<ul>
+  <li>Si el usuario abre la <a href="{@docRoot}guide/components/recents.html">pantalla
+  Overview</a> y presiona durante un momento el
+  título de una actividad, puede arrastrar esa actividad a una parte resaltada de la
+  pantalla para llevarla a modo de ventanas múltiples.
+  </li>
+
+  <li>Si el usuario presiona durante un momento el botón Overview, el dispositivo coloca
+  la actividad actual en modo de ventanas múltiples y abre la pantalla Overview para
+  permitirle al usuario seleccionar otra actividad para compartir la pantalla.
+  </li>
+</ul>
+
+<p>
+  Los usuarios pueden <a href="{@docRoot}guide/topics/ui/drag-drop.html">arrastrar y
+  soltar</a> datos de una actividad a otra mientras las actividades comparten
+  la pantalla. (Antes, los usuarios solo podían arrastrar y soltar datos dentro de una sola
+  actividad).
+</p>
+
+<h2 id="lifecycle">Ciclo de vida en modo de ventanas múltiples</h2>
+
+<p>
+  El modo de ventanas múltiples no cambia el <a href="{@docRoot}training/basics/activity-lifecycle/index.html">ciclo de vida
+  de la actividad</a>.
+</p>
+
+<p>
+  En modo de ventanas múltiples, solo la actividad con la que el usuario interactuó más recientemente
+  está activa en un momento determinado. Esa actividad se considera la <em>principal</em>.
+  Todas las demás actividades están pausadas, aunque estén visibles.
+  No obstante, el sistema les da a esas actividades pausadas pero visibles una prioridad más alta
+  que las actividades que no están visibles. Si el usuario interactúa con una de las
+  actividades pausadas, se reanuda esa actividad y se pausa la actividad que antes
+  era la principal.
+</p>
+
+<p class="note">
+  <strong>Nota:</strong> En modo de ventanas múltiples, una aplicación puede estar pausada
+  y aún visible para el usuario. Es posible que una aplicación necesite continuar sus
+  actividades mientras está pausada. Por ejemplo, una aplicación de reproducción de video que está
+  pausada pero visible debería continuar mostrando el video. Por ese
+  motivo, recomendamos que las actividades que reproducen video <em>no</em> pausen el
+  video en sus controladores{@link android.app.Activity#onPause onPause()}.
+  En su lugar, deben pausar el video en {@link android.app.Activity#onStop
+  onStop()} y reanudar la reproducción en {@link android.app.Activity#onStart
+  onStart()}.
+</p>
+
+<p>
+  Cuando el usuario coloca una aplicación en modo de ventanas múltiples, el sistema le notifica a la
+  actividad acerca de un cambio de configuración, tal como se especifica en <a href="{@docRoot}guide/topics/resources/runtime-changes.html">Control de cambios en
+  tiempo de ejecución</a>. Básicamente, este cambio tiene las mismas consecuencias en el ciclo de vida
+  de la actividad que cuando el sistema notifica a la aplicación que el dispositivo cambió de
+  modo vertical a modo horizontal, excepto porque se modifican las dimensiones del dispositivo
+  en lugar de intercambiarse solamente. Como se aborda en <a href="{@docRoot}guide/topics/resources/runtime-changes.html">Control de cambios en
+  tiempo de ejecución</a>, tu actividad puede administrar el cambio de configuración por sí misma, o
+  puede permitir que el sistema destruya la actividad y la vuelva a crear con las nuevas
+  dimensiones.
+</p>
+
+<p>
+  Si el usuario cambia el tamaño de una ventana y la agranda en cualquier dirección, el
+  sistema modifica el tamaño de la actividad para que coincida con la acción del usuario y emite <a href="{@docRoot}guide/topics/resources/runtime-changes.html">cambios en tiempo de ejecución</a>
+  según sean necesarios. Si la aplicación se retrasa en el trazado de áreas recientemente expuestas, el
+  sistema rellena esas áreas con el color especificado por el atributo {@link
+  android.R.attr#windowBackground windowBackground} o por el atributo de estilo predeterminado
+  <code>windowBackgroundFallback</code>.
+</p>
+
+<h2 id="configuring">Configuración de tu aplicación para el modo de ventanas múltiples</h2>
+
+<p>
+  Si tu aplicación está orientada a Android N, puedes configurar cómo y
+  si quieres que las actividades de tu aplicación admitan la visualización de ventanas múltiples. Puedes establecer
+  atributos en tu manifiesto para controlar el tamaño y el diseño.
+  La configuración de atributos de una actividad raíz aplica a todas las actividades
+  de su pila de tareas.
+</p>
+
+<p class="note">
+  <strong>Nota:</strong> Si compilas una aplicación con múltiples orientaciones con una versión del
+  SDK anterior a Android N, y el usuario usa la aplicación en
+  modo de ventanas múltiples, el sistema cambia el tamaño de la aplicación de forma forzada. El sistema presenta un
+  cuadro de diálogo en el que se advierte al usuario que la aplicación puede comportarse de forma inesperada. El sistema
+  <em>no</em> modifica el tamaño de aplicaciones con orientación fija; si
+  el usuario intenta abrir una aplicación con orientación fija en modo de ventanas múltiples,
+  la aplicación ocupará toda la pantalla.
+</p>
+
+<h4 id="resizeableActivity">android:resizeableActivity</h4>
+<p>
+  Establece este atributo en el nodo <code>&lt;activity&gt;</code> o
+  <code>&lt;application&gt;</code> de tu manifiesto para habilitar o deshabilitar la visualización
+  en modo de ventanas múltiples:
+</p>
+
+<pre>
+android:resizeableActivity=["true" | "false"]
+</pre>
+
+<p>
+  Si este atributo se establece en true, la actividad puede iniciarse en
+  los modos de pantalla dividida y forma libre. Si el atributo se establece en false, la
+  actividad no admite el modo de ventanas múltiples. Si el valor es false, y el
+  usuario intenta iniciar la actividad en modo de ventanas múltiples, la actividad ocupará
+  toda la pantalla.
+</p>
+
+<p>
+  Si tu aplicación está orientada a Android N, pero no especificas un valor
+  para este atributo, el valor predeterminado del atributo será true.
+</p>
+
+<h4 id="supportsPictureInPicture">android:supportsPictureInPicture</h4>
+
+<p>
+  Establece este atributo en el nodo <code>&lt;activity&gt;</code> de tu manifiesto
+ para indicar si la actividad admite la visualización de imagen en imagen. Este
+  atributo se ignora si <code>android:resizeableActivity</code> es false.
+</p>
+
+<pre>
+android:supportsPictureInPicture=["true" | "false"]
+</pre>
+
+<h3 id="layout">Atributos de diseño</h3>
+
+<p>
+  Con Android N, el elemento de manifiesto <code>&lt;layout&gt;</code>
+  admite varios atributos que afectan cómo se comporta una actividad en
+  modo de ventanas múltiples:
+</p>
+
+<dl>
+  <dt>
+    <code>android:defaultWidth</code>
+  </dt>
+
+  <dd>
+    Ancho predeterminado de la actividad cuando se inicia en modo de forma libre.
+  </dd>
+
+  <dt>
+    <code>android:defaultHeight</code>
+  </dt>
+
+  <dd>
+    Altura predeterminada de la actividad cuando se inicia en modo de forma libre.
+  </dd>
+
+  <dt>
+    <code>android:gravity</code>
+  </dt>
+
+  <dd>
+    Ubicación inicial de la actividad cuando se inicia en modo de forma libre. Consulta la referencia
+    {@link android.view.Gravity} para obtener valores adecuados.
+  </dd>
+
+  <dt>
+    <code>android:minimalSize</code>
+  </dt>
+
+  <dd>
+    Altura y ancho mínimos para la actividad tanto en el modo de pantalla dividida como en el
+    modo de forma libre. Si el usuario mueve la línea divisoria en el modo de pantalla dividida
+    para reducir el tamaño respecto del tamaño mínimo especificado, el sistema recorta
+    la actividad para ajustarla a los requisitos del usuario.
+  </dd>
+</dl>
+
+<p>
+  Por ejemplo, el siguiente código muestra cómo especificar el tamaño
+  y la ubicación predeterminados de una actividad, y su tamaño mínimo, cuando la actividad se visualiza en
+  modo de forma libre:
+</p>
+
+<pre>
+&lt;activity android:name=".MyActivity"&gt;
+    &lt;layout android:defaultHeight="500dp"
+          android:defaultWidth="600dp"
+          android:gravity="top|end"
+          android:minimalSize="450dp" /&gt;
+&lt;/activity&gt;
+</pre>
+
+<h2 id="running">Ejecución de tu aplicación en modo de ventanas múltiples</h2>
+
+<p>
+  Android N ofrece nuevas funcionalidades para admitir aplicaciones que puedan ejecutarse
+  en modo de ventanas múltiples.
+</p>
+
+<h3 id="disabled-features">Funciones deshabilitadas en modo de ventanas múltiples</h3>
+
+<p>
+  Ciertas funciones están deshabilitadas o se ignoran cuando un dispositivo se encuentra en modo de
+  ventanas múltiples, ya que no resultan útiles para una actividad que podría estar compartiendo la
+  pantalla del dispositivo con otras actividades o aplicaciones. Esas funciones incluyen las siguientes:
+
+<ul>
+  <li>Algunas opciones de personalización de la <a href="{@docRoot}training/system-ui/index.html">IU del sistema</a>
+  están deshabilitadas; por ejemplo, las aplicaciones no pueden ocultar la barra de
+  estado si no se están ejecutando en modo de pantalla completa.
+  </li>
+
+  <li>El sistema ignora los cambios en el atributo <code><a href=
+  "{@docRoot}guide/topics/manifest/activity-element.html#screen"
+  >android:screenOrientation</a></code>.
+  </li>
+</ul>
+
+<h3 id="change-notification">Notificación y consulta de cambios en modo de ventanas múltiples</h3>
+
+<p>
+  Se agregaron los siguientes métodos nuevos a la clase {@link android.app.Activity}
+  para admitir la visualización de ventanas múltiples. Para obtener información detallada sobre cada método, consulta la
+  <a href="{@docRoot}preview/setup-sdk.html#docs-dl">Referencia del N Preview SDK</a>.
+</p>
+
+<dl>
+  <dt>
+    <code>Activity.inMultiWindow()</code>
+  </dt>
+
+  <dd>
+    Realiza una llamada para averiguar si la actividad está en modo de ventanas múltiples.
+  </dd>
+
+  <dt>
+    <code>Activity.inPictureInPicture()</code>
+  </dt>
+
+  <dd>
+    Realiza una llamada para averiguar si la actividad está en modo de imagen en imagen.
+
+    <p class="note">
+      <strong>Nota:</strong> El modo de Picture-in-Picture es un caso especial del
+      modo de ventanas múltiples. Si <code>myActivity.inPictureInPicture()</code>
+      devuelve true, <code>myActivity.inMultiWindow()</code> también devuelve
+      true.
+    </p>
+  </dd>
+
+  <dt>
+    <code>Activity.onMultiWindowChanged()</code>
+  </dt>
+
+  <dd>
+    El sistema llama a este método siempre que la actividad entra en modo de ventanas
+    múltiples o sale de él. El sistema le pasa al método un valor de true si la
+    actividad entra en modo de ventanas múltiples, y false si la actividad
+    sale del modo de ventanas múltiples.
+  </dd>
+
+  <dt>
+    <code>Activity.onPictureInPictureChanged()</code>
+  </dt>
+
+  <dd>
+    El sistema llama a este método siempre que la actividad entre en modo de imagen en imagen
+    o sale de él. El sistema le pasa al método un valor de true si
+    la actividad entra en modo de imagen en imagen, y false si la actividad
+    sale del modo de imagen en imagen.
+  </dd>
+</dl>
+
+<p>
+  También hay versiones {@link android.app.Fragment} de cada uno de esos
+  métodos; por ejemplo, <code>Fragment.inMultiWindow()</code>.
+</p>
+
+<h3 id="entering-pip">Cómo entrar en modo de imagen en imagen</h3>
+
+<p>
+  Para que una actividad entre en modo de imagen en imagen, debes llamar al nuevo método
+  <code>Activity.enterPictureInPicture()</code>. Este método no tiene efecto si
+  el dispositivo no admite el modo de imagen en imagen. Para obtener más información,
+  consulta la documentación de <a href="picture-in-picture.html">Picture-in-Picture</a>.
+</p>
+
+<h3 id="launch">Inicia nuevas actividades en modo de ventanas múltiples</h3>
+
+<p>
+  Cuando inicias una nueva actividad, puedes indicarle al sistema que la nueva
+  actividad se debe mostrar adyacente a la actual, si fuera posible. Para hacer
+  esto, usa el marcador
+  <code>Intent.FLAG_ACTIVITY_LAUNCH_TO_ADJACENT</code>. Pasar
+  este marcador requiere el siguiente comportamiento:
+</p>
+
+<ul>
+  <li>Si el dispositivo está en modo de pantalla dividida, el sistema intenta crear la
+  nueva actividad junto a la actividad que lo inició, de modo que las dos actividades
+  compartan la pantalla. No se garantiza que el sistema pueda hacerlo, pero
+  ubicará las actividades de forma adyacente si fuera posible.
+  </li>
+
+  <li>Si el dispositivo no está en modo de pantalla dividida, este marcador no tendrá efecto.
+  </li>
+</ul>
+
+<p>
+  Si un dispositivo está en modo de forma libre e inicias una nueva actividad, puedes
+  especificar las dimensiones y la ubicación de la pantalla de la nueva actividad al llamar a
+  <code>ActivityOptions.setLaunchBounds()</code>. Este método no tiene efecto si
+  el dispositivo no está en modo de ventanas múltiples.
+</p>
+
+<p class="note">
+  <strong>Nota:</strong> Si inicias una actividad en una pila de tareas, esa
+  actividad reemplaza la actividad en pantalla y hereda todas sus
+  propiedades de ventanas múltiples. Si quieres iniciar la nueva actividad en una ventana
+  independiente en modo de ventanas múltiples, debes iniciarla en una nueva pila de tareas.
+</p>
+
+<h3 id="dnd">Admisión de la funcionalidad de arrastrar y soltar</h3>
+
+<p>
+  Los usuarios pueden <a href="{@docRoot}guide/topics/ui/drag-drop.html">arrastrar y
+  soltar</a> datos de una actividad a otra mientras las dos actividades
+  comparten la pantalla. (Antes, los usuarios solo podían arrastrar y soltar datos dentro de una
+  sola actividad). Por este motivo, te recomendamos que agregues la funcionalidad de arrastrar y
+  soltar a tu aplicación si es que aún no la admite.
+</p>
+
+<p>
+  El N Preview SDK amplía el paquete <a href="{@docRoot}reference/android/view/package-summary.html"><code>android.view</code></a>
+  para admitir la funcionalidad de arrastrar y soltar entre aplicaciones diferentes. Para obtener información detallada sobre las siguientes
+  clase y métodos, consulta la <a href="{@docRoot}preview/setup-sdk.html#docs-dl">Referencia
+  del N Preview SDK</a>.
+</p>
+
+<dl>
+  <dt>
+    <code>android.view.DropPermissions</code>
+  </dt>
+
+  <dd>
+    Objeto token responsable de especificar los permisos otorgados a la aplicación
+    que recibe datos mediante la funcionalidad de arrastrar y soltar.
+  </dd>
+
+  <dt>
+    <code>View.startDragAndDrop()</code>
+  </dt>
+
+  <dd>
+    Nuevo alias para {@link android.view.View#startDrag View.startDrag()}. Para
+    habilitar la funcionalidad arrastrar y soltar entre diferentes actividades, pasa el nuevo marcador
+    <code>View.DRAG_FLAG_GLOBAL</code>. Si necesitas otorgar permisos de URI a
+    la actividad receptora, pasa los nuevos marcadores
+    <code>View.DRAG_FLAG_GLOBAL_URI_READ</code> o
+    <code>View.DRAG_FLAG_GLOBAL_URI_WRITE</code>, según corresponda.
+  </dd>
+
+  <dt>
+    <code>View.cancelDragAndDrop()</code>
+  </dt>
+
+  <dd>
+    Cancela una operación de arrastrar actualmente en curso. Solo puede ser llamado por la
+    aplicación que originó la operación de arrastrar.
+  </dd>
+
+  <dt>
+    <code>View.updateDragShadow()</code>
+  </dt>
+
+  <dd>
+    Reemplaza la sombra del arrastre por una operación de arrastrar actualmente en curso. Solo
+    puede ser llamado por la aplicación que originó la operación de arrastrar.
+  </dd>
+
+  <dt>
+    <code>Activity.requestDropPermissions()</code>
+  </dt>
+
+  <dd>
+    Solicita los permisos para los URI de contenido que se pasan con el {@link
+    android.content.ClipData} incluido en un {@link android.view.DragEvent}.
+  </dd>
+</dl>
+
+<h2 id="testing">Prueba de la compatibilidad de tu aplicación con el uso de ventanas múltiples</h2>
+
+<p>
+  Ya sea que actualices o no tu aplicación para Android N, debes
+  verificar la forma en que se comporta en modo de ventanas múltiples en caso de que un usuario intente iniciarla 
+  en modo de ventanas múltiples en un dispositivo con Android N.
+</p>
+
+<h3 id="configuring">Configuración de un dispositivo de prueba</h3>
+
+<p>
+  Si instalas Android N en un dispositivo, se admite automáticamente el modo
+  de pantalla dividida.
+</p>
+
+<h3 id="test-non-n">Si tu aplicación no se compiló con el N Preview SDK</h3>
+
+<p>
+  Si no creaste tu aplicación con el N Preview SDK y el usuario intenta usar
+  la aplicación en modo de ventanas múltiples, el sistema cambia el tamaño de la aplicación de forma forzada, a menos que la aplicación
+  declare una orientación fija.
+</p>
+
+<p>
+  Si tu aplicación no declara una orientación fija, debes iniciar tu aplicación
+  en un dispositivo con Android N e intentar colocar la aplicación en
+  modo de pantalla dividida. Cuando se modifique el tamaño de la aplicación de forma forzada,
+ comprueba que la experiencia de usuario sea aceptable.
+</p>
+
+<p>
+  Si la aplicación declara una orientación fija, debes intentar colocar la aplicación en
+  modo de ventanas múltiples. Cuando lo hagas, verifica que la aplicación
+  continúe en modo de pantalla completa.
+</p>
+
+<h3 id="test-mw">Si admites el modo de ventanas múltiples</h3>
+
+<p>
+  Si compilaste tu aplicación con el N Preview SDK y no deshabilitaste
+  la compatibilidad con ventanas múltiples, verifica el siguiente comportamiento tanto en modo de pantalla dividida
+  como en modo de forma libre.
+</p>
+
+<ul>
+  <li>Inicia la aplicación en modo de pantalla completa y luego cambia al modo de ventanas múltiples al presionar
+  durante un momento el botón Overview. Verifica que la aplicación pase de un modo a otro correctamente.
+  </li>
+
+  <li>Inicia la aplicación directamente en modo de ventanas múltiples y comprueba que se
+  inicie correctamente. Puedes iniciar una aplicación en modo de ventanas múltiples al presionar el
+  botón Overview, luego presionar durante un momento la barra de título de la aplicación y arrastrarla
+  a una de las áreas resaltadas de la pantalla.
+  </li>
+
+  <li>Cambia el tamaño de tu aplicación en modo de pantalla dividida al arrastrar la línea divisoria.
+  Comprueba que la aplicación cambie de tamaño sin fallar y que estén visibles los elementos 
+ necesarios de la IU.
+  </li>
+
+  <li>Si especificaste dimensiones mínimas para tu aplicación, intenta cambiar el tamaño
+  de la aplicación a dimensiones más bajas que las especificadas. Comprueba que no puedas modificar el tamaño de la aplicación
+  para que sea más pequeña que la dimensión mínima especificada.
+  </li>
+
+  <li>En todas las pruebas, verifica que el rendimiento de la aplicación sea aceptable. Por
+  ejemplo, verifica que la actualización de la IU después de cambiar el tamaño de la aplicación
+  no demore mucho.
+  </li>
+</ul>
+
+<h4 id="test-checklist">Lista de comprobación de pruebas</h4>
+
+<p>
+  Para verificar el rendimiento de tu aplicación en modo de ventanas múltiples, intenta las siguientes
+  operaciones. Debes probar estas operaciones tanto en modo de pantalla dividida como en
+  modo de ventanas múltiples, excepto cuando se indique algo diferente.
+</p>
+
+<ul>
+  <li>Ingresa en modo de ventanas múltiples y luego sal.
+  </li>
+
+  <li>Pasa de tu aplicación a otra y verifica que la aplicación se comporte
+  correctamente mientras esté visible pero no activa. Por ejemplo, si tu aplicación está
+  reproduciendo video, comprueba que el video se siga reproduciendo mientras el usuario interactúe
+  con otra aplicación.
+  </li>
+
+  <li>En modo de pantalla dividida, prueba mover la barra divisora para agrandar y
+  achicar la aplicación. Realiza estas operaciones en las configuraciones una al lado de la otra y
+  una encima de la otra. Comprueba que la aplicación no falle,
+  que las funcionalidades necesarias estén visibles y que la operación de cambio de tamaño no demore
+  mucho.
+  </li>
+
+  <li>Realiza varias operaciones de cambio de tamaño en una sucesión rápida. Comprueba que tu
+  aplicación no falle ni pierda memoria. Para obtener información acerca de cómo comprobar el uso de memoria
+  de tu aplicación, consulta <a href="{@docRoot}tools/debugging/debugging-memory.html">
+  Averiguación del uso de RAM</a>.
+  </li>
+
+  <li>Usa tu aplicación normalmente en diferentes configuraciones de ventanas y
+  verifica que la aplicación se comporte correctamente. Comprueba que el texto sea legible y que
+  los elementos de la IU sean lo suficientemente grandes para interactuar con ellos.
+  </li>
+</ul>
+
+<h3 id="test-disabled-mw">Si deshabilitaste la compatibilidad con el modo de ventanas múltiples</h3>
+
+<p>
+  Si deshabilitaste la compatibilidad con el modo de ventanas múltiples al configurar
+  <code>android:resizableActivity="false"</code>, debes iniciar tu aplicación en
+  un dispositivo con Android N e intentar colocar la aplicación en los
+  modos de forma libre y pantalla dividida. Cuando lo hagas, verifica que la aplicación
+  continúe en modo de pantalla completa.
+</p>
diff --git a/docs/html-intl/intl/es/preview/features/multilingual-support.jd b/docs/html-intl/intl/es/preview/features/multilingual-support.jd
new file mode 100644
index 0000000..3963f98
--- /dev/null
+++ b/docs/html-intl/intl/es/preview/features/multilingual-support.jd
@@ -0,0 +1,214 @@
+page.title=Idioma y configuración regional
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+<h2>Contenido del documento:</h2>
+<ol>
+	  <li><a href="#preN">Desafíos para la resolución de recursos de idioma</a></li>
+    <li><a href="#postN">Mejoras de la estrategia de resolución de recursos</a></li>
+    <li><a href="#design">Diseño de la aplicación para permitir configuraciones regionales
+ adicionales</a></li>
+
+</ol>
+
+</div>
+</div>
+
+<p>Android N brinda un soporte mejorado para los usuarios de diferentes idiomas
+y les permite seleccionar múltiples configuraciones regionales en la configuración. Android N
+brinda esta capacidad expandiendo ampliamente la cantidad de configuraciones regionales compatibles
+y cambiando la forma en que el sistema resuelve los recursos. El nuevo método de resolución
+de recursos es más robusto y está diseñado para ser compatible con APK existentes, pero
+debes tener especial cuidado para detectar cualquier comportamiento inesperado. Por ejemplo, debes
+realizar pruebas para asegurarte de que tu aplicación muestre el idioma esperado de forma predeterminada. Además,
+si tu aplicación permite múltiples idiomas, debes asegurarte de que esta compatibilidad funcione
+como debería. Por último, debes tratar de asegurarte de que tu aplicación administre con facilidad
+los idiomas para los cuales no diseñaste explícitamente la aplicación.</p>
+
+<p>Al inicio de este documento, encontrarás una explicación sobre la estrategia de resolución de recursos anterior a
+Android N. Luego, encontrarás una descripción de la estrategia de resolución de recursos
+mejorada de Android N. Por último, encontrarás una explicación sobre cómo aprovechar
+la cantidad expandida de configuraciones regionales para permitir acceso a más usuarios de diferentes idiomas.</p>
+
+<h2 id="preN">Desafíos para la resolución de recursos de idioma</h2>
+
+<p>Antes de Android N, Android no siempre podía
+hacer coincidir correctamente las configuraciones regionales de la aplicación y del sistema. Por ejemplo, supongamos que el idioma predeterminado
+ de tu aplicación es inglés de EE. UU., pero que también tiene cadenas en español localizadas en archivos de recursos {@code es_ES}.
+</p>
+<p>Cuando el código Java se refería a las cadenas, resolvía el idioma de las cadenas como
+se muestra a continuación:</p>
+<ul>
+<li>Si un dispositivo estaba configurado en {@code es_MX} (español de México), Android cargaba
+las cadenas de los archivos de recursos {@code es_ES}.</li>
+<li>Si el dispositivo estaba configurado en {@code en_AU}, Android recurría a {@code
+en_US}. El sistema también usaba {@code en_US} de forma predeterminada si el usuario elegía un
+idioma que no era compatible con la aplicación, como el francés.</li>
+</ul>
+
+
+<p>Estos problemas de resolución surgieron debido a que el sistema quitaba el código de país
+de la configuración regional si no podía encontrar una coincidencia exacta.  Por ejemplo:</p>
+<p class="table-caption" id="t-resource-res">
+<strong>Tabla 1.</strong> Resolución de recursos sin una coincidencia de configuración regional exacta.
+</p>
+<table>
+<tbody>
+<tr>
+<th>Configuración del usuario</th>
+<th>Recursos de la aplicación</th>
+<th>Resolución de recursos</th>
+</tr>
+<tr>
+<td>fr_CH</td>
+<td>
+Predeterminado (en)<br>
+de_DE<br>
+es_ES<br>
+fr_FR<br>
+it_IT<br>
+</td>
+ <td>
+Intentar fr_CH =&gt; Error<br>
+Intentar fr =&gt; Error<br>
+Usar predeterminado (en)
+</td>
+ </tr>
+ </tbody>
+</table>
+
+
+<p>En este ejemplo, el sistema muestra las cadenas en inglés sin
+saber si el usuario comprende este idioma. Este comportamiento es muy común
+hoy en día. Android N debería reducir sustancialmente la frecuencia
+de resultados como este.</p>
+
+<h2 id="postN">Mejoras de la estrategia de resolución de recursos</h2>
+<p>Android N brinda una resolución de recursos más robusta y
+encuentra mejores recursos de forma automática. Sin embargo, para acelerar la resolución y mejorar la
+facilidad de mantenimiento, debes almacenar los recursos en el dialecto primario.
+ Por ejemplo, si antes almacenabas los recursos en español en el directorio {@code es-US}
+, pásalos al directorio {@code es-419}, que contiene la variante de Latinoamérica.
+ De forma similar, si tienes cadenas de recursos en una carpeta llamada {@code en-GB}, cámbiale
+ el nombre a {@code en-001} (inglés internacional), ya que el dialecto primario más común
+ para las cadenas en <code>en-GB</code> es {@code en-001}.
+ Los siguientes ejemplos explican por qué estas prácticas mejoran el desempeño
+ y la confiabilidad de la resolución de recursos.</p>
+
+<h3>Ejemplos de resolución de recursos</h3>
+
+<p>Con Android N, el caso descrito en la <strong>Tabla 1</strong> se resuelve
+de otra forma:</p>
+
+<p class="table-caption" id="t-improved-res">
+<strong>Tabla 2.</strong> Una estrategia de resolución mejorada para los casos en que no
+hay una coincidencia de configuración regional exacta.</p>
+<table>
+<tr>
+<th>Configuración del usuario</th>
+<th>Recursos de la aplicación</th>
+<th>Resolución de recursos</th>
+</tr>
+<tr>
+<td><ol>
+<li> fr_CH</li>
+</ol>
+</td>
+<td>
+Predeterminado (en)<br>
+de_DE<br>
+es_ES<br>
+fr_FR<br>
+it_IT<br>
+</td>
+<td>
+Intentar fr_CH =&gt; Error<br>
+Intentar fr =&gt; Error<br>
+Intentar secundario de fr =&gt; fr_FR<br>
+Usar fr_FR
+</td>
+</tr>
+
+</table>
+
+
+<p>Así, los recursos se muestran en francés en lugar de en inglés. Este ejemplo también muestra
+ por qué deberías almacenar las cadenas en francés en {@code fr} en lugar de en {@code fr_FR}
+ para Android N. Aquí, el procedimiento se basa en hacer coincidir el dialecto primario más cercano,
+ lo cual hace que la resolución sea más rápida y más predecible.</p>
+
+<p>Además de esta lógica de resolución mejorada, Android ofrece ahora más
+ idiomas de usuario de entre los cuales elegir. Volvamos a ver el ejemplo anterior con el idioma italiano
+ especificado como un idioma de usuario adicional, pero sin compatibilidad de la aplicación con el idioma francés.  </p>
+
+<p class="table-caption" id="t-2d-choice">
+<strong>Tabla 3.</strong> Resolución de recursos cuando la aplicación solo hace coincidir la
+configuración regional de segunda preferencia del usuario.</p>
+<table>
+<tr>
+<th>Configuración del usuario</th>
+<th>Recursos de la aplicación</th>
+<th>Resolución de recursos</th>
+
+</tr>
+<tr>
+<td><ol>
+<li> fr_CH</li>
+<li> it_CH</li>
+</ol>
+</td>
+<td>
+Predeterminado (en)<br>
+de_DE<br>
+es_ES<br>
+it_IT<br>
+</td>
+<td>
+Intentar fr_CH =&gt; Error<br>
+Intentar fr =&gt; Error<br>
+Intentar secundario de fr =&gt; Error<br>
+Intentar it_CH =&gt; Error<br>
+Intentar it =&gt; Error<br>
+Intentar secundario de it =&gt; it_IT<br>
+Usar it_IT
+</td>
+
+</tr>
+
+</table>
+<p>El usuario recibe la información en un idioma que comprende, si bien la aplicación no
+es compatible con el idioma francés.</p>
+
+
+<h2 id="design">Diseño de la aplicación para permitir configuraciones regionales adicionales</h2>
+<h3>API LocaleList</h3>
+
+<p>Android N incorpora una nueva API, {@code LocaleList.GetDefault()},
+que les permite a las aplicaciones consultar directamente la lista de idiomas que ha especificado el usuario. Esta API
+ te permite crear un comportamiento de la aplicación
+ más sofisticado y una presentación de contenido más optimizada. Por ejemplo, las búsquedas
+ pueden mostrar resultados en múltiples idiomas según la configuración del usuario.  Las aplicaciones de navegadores
+ pueden evitar ofrecer la traducción de páginas que están en un idioma que el usuario comprende,
+ y las aplicaciones de teclado pueden habilitar automáticamente todos los diseños correctos. </p>
+
+<h3>Formateadores</h3>
+
+<p>Hasta Android 6.0 (API nivel 23), Android solo permitía una o dos
+ configuraciones regionales para muchos idiomas comunes
+ (en, es, ar, fr, ru). Debido a que había solo unas pocas variantes para cada idioma,
+las aplicaciones podían almacenar algunos números y fechas como cadenas preprogramadas
+en los archivos de recursos.  Sin embargo, con el conjunto ampliado de configuraciones regionales
+compatibles de Android, puede haber diferencias importantes
+en los formatos de fecha, hora, moneda e
+información similar, incluso dentro de una sola configuración regional. Preprogramar los formatos puede generar
+una experiencia confusa para los usuarios.  Por lo tanto, cuando desarrolles aplicaciones para Android,
+asegúrate de usar formateadores en lugar de preprogramar las cadenas de números y fechas.</p>
+
+<p>Un muy buen ejemplo es el árabe. Android N expandió su compatibilidad de
+una configuración regional, {@code ar_EG}, a 27 configuraciones regionales. Estas configuraciones regionales pueden compartir la mayoría de los recursos,
+pero algunas prefieren dígitos ASCII, mientras que otras prefieren dígitos nativos. Por ejemplo,
+cuando desees crear una oración con una variable de dígito, como
+"Elige un PIN de 4 dígitos", usa formateadores como se muestra a continuación:</p>
+
+<pre> format(locale, "Choose a %d-digit PIN", 4)</pre>
diff --git a/docs/html-intl/intl/es/preview/features/notification-updates.jd b/docs/html-intl/intl/es/preview/features/notification-updates.jd
new file mode 100644
index 0000000..2679c3e
--- /dev/null
+++ b/docs/html-intl/intl/es/preview/features/notification-updates.jd
@@ -0,0 +1,328 @@
+page.title=Notificaciones
+page.tags=notifications
+helpoutsWidget=true
+page.image=/preview/images/notifications-card.png
+
+trainingnavtop=true
+
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+
+<!-- table of contents -->
+<h2>Este documento incluye lo siguiente:</h2>
+<ol>
+  <li><a href="#direct">Respuesta directa</a></li>
+  <li><a href="#bundle">Notificaciones integradas</a></li>
+  <li><a href="#custom">Vistas personalizadas</a></li>
+</ol>
+
+</div>
+</div>
+
+<p>Android N incluye varias API nuevas que permiten a las aplicaciones publicar
+notificaciones altamente visibles e interactivas.</p>
+
+<p>Android N amplía la API de notificación existente {@link android.support.v4.app.RemoteInput}
+para admitir respuestas en línea en teléfonos celulares. Esta función permite a los usuarios
+ responder rápidamente desde el panel de notificaciones sin tener que visitar tu aplicación.</p>
+
+<p>
+  Android N también te permite agrupar notificaciones similares para que
+  aparezcan como una sola notificación. Para que esto sea posible, Android N usa el método existente {@link
+  android.support.v4.app.NotificationCompat.Builder#setGroup
+  NotificationCompat.Builder.setGroup()}. Los usuarios pueden expandir cada una de las
+  notificaciones y realizar acciones como responder e ignorar en cada una
+  de ellas, de forma individual desde el panel de notificaciones.
+</p>
+
+<p>Por último, Android N también suma nuevas API que te permiten aprovechar las decoraciones
+del sistema en las vistas de notificación personalizadas de tu aplicación. Estas API ayudan a
+garantizar que las vistas de notificaciones compartan una presentación acorde a las
+plantillas estándar.</p>
+
+<p>En este documento se destacan algunos de los cambios clave que puedes tener en cuenta
+ al usar las nuevas funciones de notificación en tus aplicaciones.</p>
+
+<h2 id="direct">Respuesta directa</h2>
+
+<p>Con la función de respuesta directa en Android N, los usuarios pueden responder
+rápidamente mensajes de texto o actualizar listas de tareas directamente dentro de la interfaz de
+notificación. En un dispositivo portátil, la acción de respuesta en línea aparece como un botón adicional
+ anexado a la notificación. Cuando un usuario responde mediante un teclado, el sistema adjunta
+  la respuesta de texto a la intención
+    que especificaste para la acción de notificación y envía la intención a tu
+     aplicación para dispositivos portátiles.
+
+
+<img id="fig-reply-button" src="{@docRoot}preview/images/inline-reply.png" srcset="{@docRoot}preview/images/inline-reply.png 1x,
+  {@docRoot}preview/images/inline-reply_2x.png 2x" width="400">
+<p class="img-caption">
+  <strong>Figura 1.</strong> Android N agrega el botón de acción <strong>Reply</strong>
+.
+</p>
+
+<h3>Adición de acciones de respuesta en línea</h3>
+
+<p>Para crear una acción de notificación que admita respuesta directa:
+</p>
+
+<ol>
+<li>Crea una instancia de {@link android.support.v4.app.RemoteInput.Builder}
+  que puedas agregar a tu acción de
+notificación. El constructor de esta clase acepta una cadena que el sistema usa como clave
+ para la inserción de texto. Luego, tu aplicación para dispositivos portátiles usará esa clave para recuperar el texto
+  de la entrada.
+
+<pre>
+// Key for the string that's delivered in the action's intent
+private static final String KEY_TEXT_REPLY = "key_text_reply";
+String replyLabel = getResources().getString(R.string.reply_label);
+RemoteInput remoteInput = new RemoteInput.Builder(KEY_TEXT_REPLY)
+        .setLabel(replyLabel)
+        .build();
+</pre>
+</li>
+<li>Adjunta el objeto {@link android.support.v4.app.RemoteInput}
+ a una acción usando <code>addRemoteInput()</code>.
+
+<pre>
+// Create the reply action and add the remote input
+Notification.Action action =
+        new Notification.Action.Builder(R.drawable.ic_reply_icon,
+                getString(R.string.label), replyPendingIntent)
+                .addRemoteInput(remoteInput)
+                .build();
+</pre>
+</li>
+
+<li>Aplica la acción a una notificación y emite la notificación.
+
+<pre>
+// Build the notification and add the action
+Notification notification =
+        new Notification.Builder(mContext)
+                .setSmallIcon(R.drawable.ic_message)
+                .setContentTitle(getString(R.string.title))
+                .setContentText(getString(R.string.content))
+                .addAction(action))
+                .build();
+
+// Issue the notification
+NotificationManager notificationManager =
+        NotificationManager.from(mContext);
+notificationManager.notify(notificationId, notification);
+
+</pre>
+</li>
+
+</ol>
+
+
+<p> Cuando se active la acción de notificación,
+el sistema le solicitará al usuario que ingrese una respuesta. </p>
+
+<img id="fig-user-input" src="{@docRoot}preview/images/inline-type-reply.png" srcset="{@docRoot}preview/images/inline-type-reply.png 1x,
+    {@docRoot}preview/images/inline-type-reply_2x.png 2x" width="300">
+<p class="img-caption">
+  <strong>Figura 2.</strong> El usuario ingresa texto desde el panel de notificaciones.
+</p>
+
+<h3>Recuperación de entradas del usuario de la respuesta directa</h3>
+
+<p>Para recibir entradas del usuario de la interfaz de notificación a la actividad que
+declaraste en la intención de la acción de respuesta:</p>
+<ol>
+<li> Llama a {@link android.support.v4.app.RemoteInput#getResultsFromIntent
+  getResultsFromIntent()} pasando la intención de la acción de notificación como
+ el parámetro de entrada. Este método devuelve un {@link android.os.Bundle} que
+ contiene la respuesta de texto.
+</li>
+
+<pre>
+Bundle remoteInput = RemoteInput.getResultsFromIntent(intent);
+</pre>
+
+<li>Consulta el paquete con la clave de resultado (proporcionada al constructor {@link
+  android.support.v4.app.RemoteInput.Builder}).
+</li>
+</ol>
+
+<p>El siguiente fragmento de código ilustra cómo un método recupera el texto de entrada
+de un paquete:</p>
+
+<pre>
+// Obtain the intent that started this activity by calling
+// Activity.getIntent() and pass it into this method to
+// get the associated string.
+
+private CharSequence getMessageText(Intent intent) {
+    Bundle remoteInput = RemoteInput.getResultsFromIntent(intent);
+    if (remoteInput != null) {
+            return remoteInput.getCharSequence(KEY_TEXT_REPLY);
+            }
+    return null;
+ }
+</pre>
+
+<p>Las aplicaciones pueden aplicar lógica para decir qué medidas tomar con respecto al texto
+recuperado.
+Para las aplicaciones interactivas (como los chats), proporciona más contexto sobre la notificación
+ (por ejemplo, varias líneas de historial de chat, incluidos los mensajes del usuario)
+  de modo que el usuario pueda responder correctamente.
+Cuando el usuario responda a través de {@link android.support.v4.app.RemoteInput},
+ incluye el texto del historial de respuestas con el método {@code setRemoteInputHistory()}
+.</p>
+
+<h2 id="bundle">Notificaciones integradas</h2>
+
+<p>Android N ofrece a los desarrolladores una nueva manera de representar
+ una cola de notificaciones: <i>notificaciones integradas</i>. Esto es similar a la función
+  <a href="{@docRoot}training/wearables/notifications/stacks.html">Pilas de
+  notificaciones</a> en Android Wear. Por ejemplo, si tu aplicación crea notificaciones
+  para los mensajes recibidos, cuando se recibe más de un mensaje, agrupa las
+ notificaciones en un solo paquete. Puedes
+ usar el método existente {@link android.support.v4.app.NotificationCompat.Builder#setGroup
+Builder.setGroup()} para agrupar notificaciones similares.</p>
+
+<p>
+  El grupo de notificaciones impone una jerarquía en las notificaciones que lo integran.
+  En la parte superior de esa jerarquía se encuentra una notificación principal que muestra información
+  resumida para el grupo. El usuario puede expandir
+  progresivamente el grupo de notificaciones, y el sistema muestra más información a medida que el
+  usuario continúa indagando. Cuando el usuario expande el paquete, el sistema revela más
+  información para todas sus notificaciones secundarias; cuando el usuario
+  expande una de esas notificaciones, el sistema revela todo su contenido.
+</p>
+
+<img id="fig-bundles" src="{@docRoot}preview/images/bundles.png" srcset="{@docRoot}preview/images/bundles.png 1x,
+          {@docRoot}preview/images/bundles_2x.png 2x" width="300">
+<p class="img-caption">
+  <strong>Figura 3.</strong> El usuario puede expandir progresivamente el grupo de
+  notificaciones.
+</p>
+
+<p>Para obtener información acerca de cómo agregar notificaciones a un grupo, consulta
+<a href="{@docRoot}training/wearables/notifications/stacks.html#AddGroup">Agregar
+cada notificación a un grupo</a>.</p>
+
+
+<h3 id="best-practices">Prácticas recomendadas para las notificaciones integradas</h3>
+<p>Esta sección proporciona pautas acerca de cuándo usar grupos de notificaciones en lugar
+de las notificaciones {@link android.app.Notification.InboxStyle InboxStyle}
+que estaban disponibles en versiones anteriores de la
+plataforma Android.</p>
+
+<h3>Cuándo usar notificaciones integradas</h3>
+
+<p>Solo debes usar grupos de notificaciones si se cumplen todas las siguientes condiciones
+para tu caso de uso:</p>
+
+<ul>
+  <li>Las notificaciones secundarias son notificaciones completas y se pueden mostrar
+   individualmente sin la necesidad de un resumen del grupo.</li>
+  <li>El aislamiento de notificaciones secundarias de forma individual tiene un beneficio. Por
+  ejemplo:
+  </li>
+  <ul>
+    <li>Son interactivas, con acciones específicas para cada notificación secundaria.</li>
+    <li>Hay más información sobre la notificación secundaria que el usuario quiere leer.</li>
+  </ul>
+</ul>
+
+<p>Algunos ejemplos de buenos casos de uso para grupos de notificaciones incluyen: una aplicación de mensajería
+que exhiba una lista de mensajes entrantes, o una aplicación de correo electrónico que exhiba una lista de
+correos electrónicos recibidos.</p>
+
+<p>
+Algunos ejemplos de casos en los que se prefiere una sola notificación
+ incluyen mensajes individuales de una sola persona, o una lista de
+ elementos de texto de una sola línea. Para lograr esto, puedes usar
+({@link android.app.Notification.InboxStyle InboxStyle} o
+{@link android.app.Notification.BigTextStyle BigTextStyle})
+.
+</p>
+
+<h3 id ="post">Visualización de notificaciones integradas</h3>
+
+<p>
+  La aplicación siempre debe publicar un resumen del grupo, aún si el grupo contiene una sola
+ notificación secundaria. Si contiene una sola notificación, el sistema suprimirá el resumen y mostrará directamente la
+  notificación secundaria. Esto garantiza
+  que el sistema pueda proporcionar una experiencia uniforme cuando el usuario quita con un gesto de "deslizar" notificaciones
+  secundarias de un grupo.
+</p>
+
+<p class="note">
+  <strong>Nota:</strong> Esta versión de Android N aún no
+  suprime el resumen para los grupos de notificaciones que contienen una sola notificación secundaria. Esta
+  funcionalidad se agregará en una versión posterior de Android N.
+</p>
+
+<h3>Inspección de notificaciones</h3>
+
+<p>Si bien el sistema generalmente muestra las notificaciones secundarias como un grupo, puedes configurarlas
+ para que aparezcan temporalmente como
+ <a href="{@docRoot}guide/topics/ui/notifiers/notifications.html#Heads-up">
+ notificaciones emergentes</a>. Esta función es especialmente útil porque permite
+  el acceso inmediato a la notificación secundaria más reciente y a las acciones asociadas a ella.
+</p>
+
+
+<h3>Compatibilidad con versiones anteriores</h3>
+
+<p>
+  Tanto los grupos de notificaciones como las entradas remotas han formado parte de la API {@link
+  android.app.Notification} desde Android 5.0 (API nivel 21) para soportar dispositivos
+  con Android Wear. Si ya compilaste notificaciones con esas API,
+  lo único que debes hacer es verificar que el comportamiento de la aplicación concuerde
+  las pautas antes descritas y considerar la implementación de {@code
+  setRemoteInputHistory()}.
+</p>
+
+<p>
+  Para poder ser compatible con versiones anteriores, están disponibles las mismas API con
+  la clase {@link android.support.v4.app.NotificationCompat}
+  de la biblioteca de soporte, que te permite crear notificaciones que funcionan en versiones de Android
+  anteriores. En dispositivos portátiles y tablets, los usuarios solo ven la notificación de resumen
+  de modo que una aplicación aún debe tener un estilo de bandeja de entrada o una notificación equivalente
+  que represente todo el contenido del grupo. Dado que los dispositivos con Android
+  Wear permiten a los usuarios ver todas las notificaciones secundarias incluso en
+  niveles anteriores de la plataforma, debes crear notificaciones secundarias independientemente del nivel de
+  API.
+</p>
+
+<h2 id="custom"> Vistas personalizadas</h2>
+<p>A partir de la versión Android N, puedes personalizar vistas de notificaciones y
+aún obtener decoraciones del sistema, como encabezados de notificaciones, acciones y diseños
+expandibles.</p>
+
+<p>Para habilitar esta característica, Android N suma las siguientes API para que puedas diseñar tu
+  vista personalizada:</p>
+
+<dl>
+<dt>
+{@code DecoratedCustomViewStyle()}</dt>
+<dd> Permite diseñar notificaciones que no sean notificaciones
+de medios.</dd>
+<dt>
+{@code DecoratedMediaCustomViewStyle()}</dt>
+<dd> Permite diseñar notificaciones de medios.</dd>
+</dl>
+
+<p>Para usar esta nueva API, llama al método {@code setStyle()} y pásale
+el estilo de la vista personalizada que hayas elegido.</p>
+
+<p>Este fragmento muestra cómo crear un objeto de notificación personalizada con el método
+{@code DecoratedCustomViewStyle()}.</p>
+
+<pre>
+Notification noti = new Notification.Builder()
+           .setSmallIcon(R.drawable.ic_stat_player)
+           .setLargeIcon(albumArtBitmap))
+           .setCustomContentView(contentView);
+           .setStyle(new Notification.DecoratedCustomViewStyle())
+           .build();
+
+</pre>
diff --git a/docs/html-intl/intl/es/preview/features/picture-in-picture.jd b/docs/html-intl/intl/es/preview/features/picture-in-picture.jd
new file mode 100644
index 0000000..01e39a2
--- /dev/null
+++ b/docs/html-intl/intl/es/preview/features/picture-in-picture.jd
@@ -0,0 +1,186 @@
+page.title=Picture-in-picture
+page.keywords=preview,sdk,PIP,Picture-in-picture
+page.tags=androidn
+
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+
+<h2>Contenido del documento</h2>
+<ol>
+  <li><a href="#declaring">Declarar que la actividad permite
+el modo Picture-in-Picture</a></li>
+  <li><a href="#pip_button">Cambiar la actividad al modo picture-in-picture</a>
+</li>
+  <li><a href="#handling_ui">Gestionar las IU durante el modo picture-in-picture</a>
+</li>
+  <li><a href="#continuing_playback">Continuar la reproducción de video durante
+el modo picture-in-picture</a></li>
+  <li><a href="#best">Prácticas recomendadas</a></li>
+</ol>
+
+<h2>Consulta también</h2>
+<ol>
+  <li><a href="{@docRoot}preview/features/multi-window.html">Compatibilidad con
+ventanas múltiples</a></li>
+</ol>
+
+</div>
+</div>
+
+<p>Con Android N, los usuarios de Android TV ahora pueden ver un video
+en una ventana fija que se ubica en una esquina de la pantalla mientras navegan dentro de
+aplicaciones. El modo picture-in-picture (PIP) permite que las aplicaciones reproduzcan un video
+en una ventana fija mientras se lleva a cabo otra actividad
+en el fondo. La ventana de PIP les permite a los usuarios realizar múltiples tareas mientras usan tu aplicación, lo cual les permite
+ser más productivos.</p>
+
+<p>Tu aplicación puede decidir cuándo activar el modo PIP. Aquí te mostramos algunos ejemplos de
+situaciones en las que se podría usar el modo PIP:</p>
+
+<ul>
+<li>Tu aplicación puede pasar un video al modo PIP cuando el usuario retrocede
+en la navegación desde el video para explorar otro contenido.</li>
+<li>También puede hacerlo mientras el usuario está viendo el final
+de un episodio de contenido. La pantalla principal muestra información promocional
+o de resumen sobre el próximo capítulo de la serie.</li>
+<li>Tu aplicación puede brindarles a los usuarios una forma de poner en cola otro contenido mientras
+miran un video. El video continúa reproduciéndose en modo PIP mientras la pantalla
+principal muestra una actividad de selección de contenido.</li>
+</ul>
+
+<p>La ventana de PIP es de 240x135 dp y se muestra en la capa delantera en una de las
+cuatro esquinas de la pantalla que el sistema elige. El usuario puede acceder a un menú de
+PIP que le permite cambiar la ventana de PIP a pantalla completa o cerrarla
+presionando el botón <b>Home</b> en el control remoto. Si se comienza a reproducir
+otro video en la pantalla principal, la ventana de PIP se cierra
+automáticamente. Los usuarios también pueden cerrar la ventana de PIP desde Recents.</p>
+
+<img src="{@docRoot}preview/images/pip-active.png" />
+<p class="img-caption"><strong>Imagen 1.</strong> Un video picture-in-picture
+visible en una esquina de la pantalla mientras el usuario explora contenido
+en la pantalla principal.</p>
+
+<p>El modo PIP aprovecha las API de ventanas múltiples disponibles en Android N para
+brindar la ventana superpuesta fija de video. Para agregarle el modo PIP a tu aplicación, debes
+registrar las actividades que permitan este modo, cambiar la actividad al modo PIP según
+sea necesario y asegurarte de que los elementos de IU se oculten y que la reproducción de video continúe mientras
+la actividad se encuentra en modo PIP.</p>
+
+<h2 id="declaring">Declarar que la actividad permite el modo picture-in-picture</h2>
+
+<p>De forma predeterminada, el sistema no permite el modo PIP para aplicaciones automáticamente.
+Si deseas permitir este modo en tu aplicaciones, registra la actividad
+de video en tu manifiesto configurando
+<code>android:supportsPictureInPicture</code> y
+<code>android:resizeableActivity</code> en <code>true</code>. Además, debes especificar
+que tu actividad gestiona los cambios de configuración de la presentación para que la actividad
+no se reinicie cuando ocurran cambios de presentación durante las transiciones en el modo PIP.</p>
+
+<pre>
+&lt;activity android:name="VideoActivity"
+    android:resizeableActivity="true"
+    android:supportsPictureInPicture="true"
+    android:configChanges=
+        "screenSize|smallestScreenSize|screenLayout|orientation"
+    ...
+</pre>
+
+<p>Cuando registres la actividad, ten en cuenta que, en el modo PIP, la
+actividad se muestra en una ventana superpuesta pequeña en una pantalla de TV. Las actividades de reproducción
+de videos con IU mínimas brindan la mejor experiencia de usuario. Las actividades que
+incluyen elementos de IU pequeños podrían no brindar una buena experiencia de usuario
+cuando se cambian al modo PIP, porque los usuarios no podrán ver los detalles de los elementos de IU
+en la ventana PIP.</p>
+
+<h2 id="pip_button">Cambiar la actividad al modo picture-in-picture</h2>
+
+Cuando necesites cambiar la actividad al modo PIP, llama a
+<code>Activity.enterPictureInPicture()</code>. El siguiente ejemplo cambia
+al modo PIP cuando el usuario selecciona un botón PIP especial en una barra
+de control de medios:</p>
+
+<pre>
+&#64;Override
+public void onActionClicked(Action action) {
+    if (action.getId() == R.id.lb_control_picture_in_picture) {
+        getActivity().enterPictureInPicture();
+        return;
+    }
+    ...
+</pre>
+
+<p>Agregar un botón PIP a la barra de control de medios le permite al usuario cambiar
+fácilmente al modo PIP y seguir controlando la reproducción de video.</p>
+
+<img src="{@docRoot}preview/images/pip-button.png" />
+<p class="img-caption"><strong>Imagen 1.</strong> Un botón
+PIP en una barra de control de medios.</p>
+
+<p>Android N incluye una nueva clase
+<code>PlaybackControlsRow.PictureInPictureAction</code> que define
+las acciones de PIP de la barra de control y usa el ícono PIP.</p>
+
+<h2 id="handling_ui">Gestionar las IU durante el modo picture-in-picture</h2>
+
+<p>Cuando la actividad ingresa al modo PIP, esta solo debería mostrar la reproducción
+de video. Debes quitar los elementos de IU antes de que la actividad ingrese al modo PIP
+y volver a mostrarlos cuando la actividad vuelva al modo de pantalla completa.
+Sobrescribe <code>Activity.onPictureInPictureChanged()</code> o
+<code>Fragment.onPictureInPictureChanged()</code> y habilita
+o deshabilita los elementos de IU según sea necesario, por ejemplo:</p>
+
+<pre>
+&#64;Override
+public void onPictureInPictureChanged(boolean inPictureInPicture) {
+    if (inPictureInPicture) {
+        // Hide the controls in picture-in-picture mode.
+        ...
+    } else {
+        // Restore the playback UI based on the playback status.
+        ...
+    }
+}
+</pre>
+
+<h2 id="continuing_playback">Continuar la reproducción de video durante
+el modo picture-in-picture</h2>
+
+<p>Cuando la actividad cambia al modo PIP, el sistema considera que se encuentra en
+pausa y llama al método <code>onPause()</code> de la actividad. La reproducción
+de video no debería pausarse y debería continuar si la actividad se
+pausa debido al modo PIP. Busca el modo PIP en el método
+<code>onPause()</code> de la actividad y controla la reproducción según corresponda, por
+ejemplo:</p>
+
+<pre>
+&#64;Override
+public void onPause() {
+    // If called due to PIP, do not pause playback
+    if (inPictureInPicture()) {
+        // Continue playback
+        ...
+    }
+    // If paused but not in PIP, pause playback if necessary
+    ...
+}
+</pre>
+
+<p>Cuando la actividad sale del modo PIP y vuelve al modo de pantalla completa, el
+sistema reinicia la actividad y llama al método <code>onResume()</code>.</p>
+
+<h2 id="best">Prácticas recomendadas</h2>
+
+<p>El modo PIP está diseñado para actividades que reproducen un video en pantalla completa. Cuando cambies la
+actividad al modo PIP, evita que se muestre cualquier elemento que no sea el contenido del video.
+Rastrea el cambio a modo PIP de la actividad y oculta los elementos de IU, como se explica
+en la sección <a href="#handling_ui">Gestionar las IU durante el modo picture-in-picture</a>.</p>
+
+<p>Debido a que la ventana de PIP se muestra como una ventana flotante en una
+esquina de la pantalla, debes evitar mostrar información importante en la pantalla principal
+en cualquier área que pueda quedar oculta detrás de la ventana de PIP.</p>
+
+<p>Cuando una actividad se encuentra en modo PIP, de forma predeterminada, no tiene focalización en las entradas. Para
+recibir eventos de entradas durante este modo, usa 
+<code>MediaSession.setMediaButtonReceiver()</code>.</p>
diff --git a/docs/html-intl/intl/es/preview/features/scoped-folder-access.jd b/docs/html-intl/intl/es/preview/features/scoped-folder-access.jd
new file mode 100644
index 0000000..7a8c4c8
--- /dev/null
+++ b/docs/html-intl/intl/es/preview/features/scoped-folder-access.jd
@@ -0,0 +1,124 @@
+page.title=Acceso a directorios determinados
+page.keywords=preview,sdk,scoped directory access
+page.tags=androidn
+
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+  <h2>Contenido del documento</h2>
+  <ol>
+    <li><a href="#accessing">Acceder a un directorio de almacenamiento externo</a></li>
+    <li><a href="#removable">Acceder a un directorio de un medio extraíble</a></li>
+    <li><a href="#best">Prácticas recomendadas</a></li>
+  </ol>
+</div>
+</div>
+
+<p>Las aplicaciones como las aplicaciones de fotografía generalmente solo necesitan acceso a directorios de
+almacenamiento externo, como el directorio <code>Pictures</code>. Los métodos
+existentes para acceder a almacenamiento externo no están diseñados para brindar un
+acceso fácil a determinados directorios para estos tipos de aplicaciones. Por ejemplo:</p>
+
+<ul>
+<li>Solicitar {@link android.Manifest.permission#READ_EXTERNAL_STORAGE}
+o {@link android.Manifest.permission#WRITE_EXTERNAL_STORAGE} en tu manifiesto
+permite el acceso a todos los directorios públicos de un almacenamiento externo, lo cual podría ser
+un acceso mayor que el que necesita tu aplicación.</li>
+<li>Usar el
+<a href="{@docRoot}guide/topics/providers/document-provider.html">framework
+de acceso al almacenamiento</a> generalmente implica que el usuario seleccione directorios
+mediante un sistema de IU, lo cual no es necesario si tu aplicación siempre accede al mismo
+directorio externo.</li>
+</ul>
+
+<p>Android N brinda una API nueva y simplificada para acceder a
+ directorios de almacenamiento externo comunes. </p>
+
+<h2 id="accessing">Acceder a un directorio de almacenamiento externo</h2>
+
+<p>Usa la clase <code>StorageManager</code> para obtener la instancia de
+<code>StorageVolume</code> correcta. Luego, crea una intención llamando al
+ método <code>StorageVolume.createAccessIntent()</code> de esa instancia.
+Usa esta intención para acceder a directorios de almacenamiento externo. Para obtener una lista de
+todos los volúmenes disponibles, incluidos los volúmenes de medios extraíbles, usa 
+<code>StorageManager.getVolumesList()</code>.</p>
+
+<p>El siguiente fragmento de código es un ejemplo de cómo abrir el
+directorio <code>Pictures</code> en el almacenamiento compartido principal:</p>
+
+<pre>
+StorageManager sm = (StorageManager)getSystemService(Context.STORAGE_SERVICE);
+StorageVolume volume = sm.getPrimaryVolume();
+Intent intent = volume.createAccessIntent(Environment.DIRECTORY_PICTURES);
+startActivityForResult(intent, request_code);
+</pre>
+
+<p>El sistema intenta otorgar acceso al directorio externo y, si
+es necesario, confirma el acceso con el usuario usando una IU simplificada:</p>
+
+<img src="{@docRoot}preview/images/scoped-folder-access-framed.png" srcset="{@docRoot}preview/images/scoped-folder-access-framed.png 1x,
+{@docRoot}preview/images/scoped-folder-access-framed_2x.png 2x" />
+<p class="img-caption"><strong>Imagen 1.</strong> Una aplicación solicitando
+acceso al directorio Pictures.</p>
+
+<p>Si el usuario otorga el acceso, el sistema llama a tu
+ invalidación de <code>onActivityResult()</code> con un código resultante de
+<code>Activity.RESULT_OK</code> y datos de intención que contienen el URI. Usa
+el URI brindado para acceder a la información del directorio. Es similar a usar URI
+generados por el
+<a href="{@docRoot}guide/topics/providers/document-provider.html">framework
+de acceso al almacenamiento</a>.</p>
+
+<p>Si el usuario no otorga el acceso, el sistema llama a tu
+invalidación de <code>onActivityResult()</code> con un código resultante de
+<code>Activity.RESULT_CANCELED</code> y datos de intención nulos.</p>
+
+<p class="note"><b>Nota</b>: obtener acceso a un directorio externo específico
+también otorga el acceso a los subdirectorios de ese directorio.</p>
+
+<h2 id="removable">Acceder a un directorio de un medio extraíble</h2>
+
+<p>Para usar el acceso a directorios determinados para acceder a directorios de medios extraíbles,
+primero debes agregar un {@link android.content.BroadcastReceiver} que escuche la
+notificación{@link android.os.Environment#MEDIA_MOUNTED}, por ejemplo:</p>
+
+<pre>
+&lt;receiver
+    android:name=".MediaMountedReceiver"
+    android:enabled="true"
+    android:exported="true" &gt;
+    &lt;intent-filter&gt;
+        &lt;action android:name="android.intent.action.MEDIA_MOUNTED" /&gt;
+        &lt;data android:scheme="file" /&gt;
+    &lt;/intent-filter&gt;
+&lt;/receiver&gt;
+</pre>
+
+<p>Cuando el usuario conecta un medio extraíble, como una tarjeta SD, el sistema envía una
+notificación{@link android.os.Environment#MEDIA_MOUNTED}. Esta notificación
+brinda un objeto <code>StorageVolume</code> en los datos de intención que puedes
+usar para acceder a directorios del medio extraíble. El siguiente ejemplo
+accede al directorio <code>Pictures</code> de medios extraíbles:</p>
+
+<pre>
+// BroadcastReceiver has already cached the MEDIA_MOUNTED
+// notification Intent in mediaMountedIntent
+StorageVolume volume = (StorageVolume)
+    mediaMountedIntent.getParcelableExtra(StorageVolume.EXTRA_STORAGE_VOLUME);
+volume.createAccessIntent(Environment.DIRECTORY_PICTURES);
+startActivityForResult(intent, request_code);
+</pre>
+
+<h2 id="best">Prácticas recomendadas</h2>
+
+<p>Cuando sea posible, sigue usando el URI de acceso a directorios externos de modo que no tengas
+que solicitarle acceso al usuario continuamente. Una vez que el usuario haya otorgado el acceso, llama a
+<code>getContentResolver().takePersistableUriPermssion()</code> con el
+URI de acceso a directorios. El sistema continuará el URI, y las siguientes solicitudes
+de acceso generarán <code>RESULT_OK</code> y no le mostrarán una IU de confirmación al
+usuario.</p>
+
+<p>Si el usuario deniega el acceso a un directorio externo, no vuelvas a solicitar el
+acceso inmediatamente. Hacer esto provocaría una mala experiencia
+de usuario.</p>
diff --git a/docs/html-intl/intl/es/preview/features/security-config.jd b/docs/html-intl/intl/es/preview/features/security-config.jd
new file mode 100644
index 0000000..862fcd9
--- /dev/null
+++ b/docs/html-intl/intl/es/preview/features/security-config.jd
@@ -0,0 +1,744 @@
+page.title=Configuración de seguridad de la red
+page.keywords=preview,security,network
+
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+
+<h2>Contenido del documento</h2>
+<ol>
+  <li><a href="#manifest">Agregar un archivo de configuración de seguridad</a></li>
+  <li><a href="#CustomTrust">Personalizar las CA de confianza</a>
+      <ol>
+      <li><a href="#ConfigCustom">Configurar una CA de confianza personalizada</a></li>
+      <li><a href="#LimitingCas">Limitar el conjunto de CA de confianza</a></li>
+      <li><a href="#TrustingAdditionalCas">Otorgar confianza a CA adicionales</a></li>
+      </ol>
+  </li>
+  <li><a href="#TrustingDebugCa">CA de solo depuración</a></li>
+  <li><a href="#UsesCleartextTraffic">Desactivar el tráfico de Cleartext</a></li>
+  <li><a href="#CertificatePinning">Fijar certificados</a></li>
+  <li><a href="#ConfigInheritance">Comportamiento de herencia de configuración</a></li>
+  <li><a href="#FileFormat">Formato del archivo de configuración</a></li>
+</ol>
+</div>
+</div>
+
+
+<p>
+  Android N incluye una función de configuración de seguridad de la red
+ que les permite a las aplicaciones personalizar los ajustes de seguridad de la red mediante un archivo
+ de configuración declarativo seguro sin que haya que modificar el código de la aplicación. Estos ajustes se pueden
+ configurar para dominios específicos y para una aplicación específica. Las capacidades
+ clave de esta función son las siguientes:
+</p>
+
+<ul>
+  <li>
+    <b>Anclajes de confianza personalizados:</b> personalizar qué autoridades de certificado (CA)
+ son de confianza para las conexiones de seguridad de una aplicación. Por ejemplo,
+ confiar en certificados autofirmados particulares
+ o restringir el conjunto de CA públicas en las que confía la aplicación.
+  </li>
+
+  <li>
+    <b>Anulaciones de solo depuración:</b> depurar de forma segura conexiones
+ de una aplicación sin riesgos adicionales para la base instalada.
+  </li>
+
+  <li>
+    <b>Desactivación del tráfico de Cleartext:</b> proteger a las aplicaciones del
+ uso accidental de tráfico de Cleartext.
+  </li>
+
+  <li>
+    <b>Fijación de certificados:</b> restringir la conexión segura de una aplicación
+ a certificados en particular.
+  </li>
+</ul>
+
+
+<h2 id="manifest">Agregar un archivo de configuración de seguridad</h2>
+
+<p>
+  La función de configuración de seguridad de la red usa un archivo XML donde
+ se especifican los ajustes para la aplicación. Debes incluir una entrada en el manifiesto de tu
+ aplicación que apunte a este archivo. El siguiente fragmento de código de un manifiesto
+ demuestra cómo crear esta entrada:
+</p>
+
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?&gt;
+...
+&lt;app ...&gt;
+    &lt;meta-data android:name="android.security.net.config"
+               android:resource="@xml/network_security_config" /&gt;
+    ...
+&lt;/app&gt;
+</pre>
+
+<h2 id="CustomTrust">Personalizar las CA de confianza</h2>
+
+<p>
+  Una aplicación podría querer otorgar confianza a un conjunto personalizado de CA en lugar de hacerlo según los ajustes
+ predeterminados de la plataforma. Las razones más comunes son las siguientes:
+</p>
+
+<ul>
+  <li>Conectarse a un host con una autoridad de certificado personalizada (autofirmado,
+ emitido por una CA corporativa interna, etc.).
+  </li>
+
+  <li>Limitar el conjunto de CA a CA de confianza establecidas por el usuario y no a cada
+ CA preinstalada.
+  </li>
+
+  <li>Otorgar confianza a CA adicionales que no están incluidas en el sistema
+  </li>
+</ul>
+
+<p>
+  De forma predeterminada, las conexiones seguras (p. ej.: TLS, HTTP) de todas las aplicaciones dependen de
+  las CA preinstaladas del sistema; las aplicaciones que tienen como objetivo a la API nivel 23
+ (Android M) e inferiores también dependen de la tienda de CA agregada por el usuario de forma predeterminada. Una
+ aplicación puede personalizar sus propias conexiones usando {@code base-config} (para
+ la personalización de toda la aplicación) o {@code domain-config} (para la personalización
+ por dominio).
+</p>
+
+
+<h3 id="ConfigCustom">Configurar una CA personalizada</h3>
+
+<p>
+  Supongamos que deseas conectarte a tu host, el cual usa un certificado SSL
+ autofirmado, o a un host cuyo certificado SSL está emitido por una CA no pública
+ en la cual confías, como la CA interna de tu empresa.
+</p>
+
+<p>
+  <code>res/xml/network_security_config.xml</code>:
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?&gt;
+&lt;network-security-config&gt;
+    &lt;domain-config&gt;
+        &lt;domain includeSubdomains="true"&gt;example.com&lt;/domain&gt;
+        &lt;trust-anchors&gt;
+            &lt;certificates src="@raw/my_ca"/&gt;
+        &lt;/trust-anchors&gt;
+    &lt;/domain-config&gt;
+&lt;/network-security-config&gt;
+</pre>
+</p>
+
+<p>
+  Agrega el certificado de CA autofirmado o no público, en formato PEM o DER, a
+ {@code res/raw/my_ca}.
+</p>
+
+
+<h3 id="LimitingCas">Limitar el conjunto de CA de confianza</h3>
+
+<p>
+  Una aplicación que no desee confiar en todas las CA en que confía el sistema puede,
+ en su lugar, especificar su propio conjunto reducido de CA en las que confía. Esto protege a la aplicación
+ de certificados fraudulentos emitidos por cualquiera de las demás CA.
+</p>
+
+<p>
+  La configuración para limitar el conjunto de CA de confianza es similar a <a href="#TrustingACustomCa">confiar en una CA personalizada</a> para un dominio específico, con la diferencia
+ de que se brindan múltiples CA en el recurso.
+</p>
+
+<p>
+<code>res/xml/network_security_config.xml</code>:
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?&gt;
+&lt;network-security-config&gt;
+    &lt;domain-config&gt;
+        &lt;domain includeSubdomains="true"&gt;secure.example.com&lt;/domain&gt;
+        &lt;domain includeSubdomains="true"&gt;cdn.example.com&lt;/domain&gt;
+        &lt;trust-anchors&gt;
+            &lt;certificates src="@raw/trusted_roots"/&gt;
+        &lt;/trust-anchors&gt;
+    &lt;/domain-config&gt;
+&lt;/network-security-config&gt;
+</pre>
+</p>
+
+<p>
+  Agrega las CA de confianza, en formato PEM o DER, a {@code res/raw/trusted_roots}.
+  Ten en cuenta que, si usas el formato PEM, el archivo debe incluir <em>solo</em> datos PEM
+ y ningún texto adicional. También puedes brindar elementos 
+<a href="#certificates"><code>&lt;certificates&gt;</code></a>
+ múltiples en lugar de solo uno.
+</p>
+
+
+<h3 id="TrustingAdditionalCas">
+  Otorgar confianza a CA adicionales
+</h3>
+
+<p>
+  Una aplicación podría querer otorgar confianza a CA adicionales en las cuales el sistema no confía,
+ ya sea porque el sistema aún no incluye la CA o porque la CA no
+ cumple con los requisitos de inclusión del sistema Android. La
+ aplicación puede hacerlo especificando múltiples fuentes de certificado para una
+ configuración.
+</p>
+<p>
+<code>res/xml/network_security_config.xml</code>:
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?&gt;
+&lt;network-security-config&gt;
+    &lt;base-config&gt;
+        &lt;trust-anchors&gt;
+            &lt;certificates src="@raw/extracas"/&gt;
+            &lt;certificates src="system"/&gt;
+        &lt;/trust-anchors&gt;
+    &lt;/base-config&gt;
+&lt;/network-security-config&gt;
+</pre>
+</p>
+
+
+<h2 id="TrustingDebugCa">Configurar las CA para depuración</h2>
+
+<p>
+  Cuando depuras una aplicación que se conecta mediante HTTPS, podrías querer
+ conectarte a un servidor de desarrollo local que no tiene el certificado
+ SSL de tu servidor de producción. Para poder hacerlo sin
+ tener que modificar el código de tu aplicación, puedes especificar CA de solo depuración que
+ solo <i>son</i> de confianza cuando <a href="{@docRoot}guide/topics/manifest/application-element.html#debug">
+android:debuggable</a>
+ es {@code true} usando {@code debug-overrides}. Generalmente, las herramientas de IDE
+ y de compilación configuran esta marca automáticamente para las versiones que no son de lanzamiento.
+</p>
+
+<p>
+  Esto es más seguro que el código condicional habitual ya que, como precaución
+ de seguridad, las tiendas de aplicaciones no aceptan aplicaciones que están marcadas
+ como depurables.
+</p>
+
+<p>
+<code>res/xml/network_security_config.xml</code>:
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?&gt;
+&lt;network-security-config&gt;
+    &lt;debug-overrides&gt;
+        &lt;trust-anchors&gt;
+            &lt;certificates src="@raw/debug_cas"/&gt;
+        &lt;/trust-anchors&gt;
+    &lt;/debug-overrides&gt;
+&lt;/network-security-config&gt;
+</pre>
+</p>
+
+
+<h2 id="UsesCleartextTraffic">Desactivar el tráfico de Cleartext</h2>
+
+<p>
+  Las aplicaciones que deseen conectarse a destinos usando solo conexiones
+ seguras pueden desactivar Cleartext (usando el protocolo
+ HTTP no cifrado en lugar del protocolo HTTPS) para esos destinos. Esta opción ayuda a prevenir
+ las regresiones accidentales en aplicaciones debido a cambios en direcciones URL generados por fuentes
+ externas como servidores backend.
+  Consulta {@link android.security.NetworkSecurityPolicy#isCleartextTrafficPermitted
+ NetworkSecurityPolicy.isCleartextTrafficPermitted()} para obtener más información.
+</p>
+
+<p>
+  Por ejemplo, una aplicación puede querer garantizar que todas las conexiones a {@code
+secure.example.com} se hagan siempre mediante HTTPS para proteger el tráfico sensible
+ de redes hostiles.
+</p>
+
+<p>
+<code>res/xml/network_security_config.xml</code>:
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?&gt;
+&lt;network-security-config&gt;
+    &lt;domain-config usesCleartextTraffic="false"&gt;
+        &lt;domain includeSubdomains="true"&gt;secure.example.com&lt;/domain&gt;
+    &lt;/domain-config&gt;
+&lt;/network-security-config&gt;
+</pre>
+</p>
+
+
+<h2 id="CertificatePinning">Fijar certificados</h2>
+
+<p>
+  Generalmente, una aplicación otorga confianza a todas las CA preinstaladas. Si alguna de estas CA emitiera
+ un certificado fraudulento, la aplicación estaría en riesgo de sufrir un ataque
+ MiTM. Algunas aplicaciones eligen limitar el conjunto de certificados que aceptan
+ ya sea limitando el conjunto de CA al que otorgan confianza o fijando certificados.
+</p>
+
+<p>
+  La fijación de certificados se hace brindando un conjunto de certificados por hash de la
+ clave pública (SubjectPublicKeyInfo del certificado X.509). De este modo,
+ una cadena de certificados solo es válida si contiene al menos una de
+ las claves públicas fijadas.
+</p>
+
+<p>
+  Ten en cuenta que, cuando uses la fijación de certificados, siempre debes incluir una clave
+ de respaldo para que, si te ves obligado a cambiar a claves nuevas o a cambiar de CA (cuando
+ fijas un certificado de CA o un intermediario de esa CA), la conectividad
+ de la aplicación no se vea afectada. Si no, deberás actualizar
+ la aplicación para recuperar la conectividad.
+</p>
+
+<p>
+  Además, se puede configurar un tiempo de expiración para las fijaciones,
+ luego del cual las fijaciones dejan de realizarse. Esto ayuda a evitar los problemas de conectividad
+ en aplicaciones que no se han actualizado. Sin embargo, configurar un tiempo de expiración
+ para las fijaciones puede habilitar la omisión de fijaciones.
+</p>
+
+<p>
+<code>res/xml/network_security_config.xml</code>:
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?&gt;
+&lt;network-security-config&gt;
+    &lt;domain-config&gt;
+        &lt;domain includeSubdomains="true"&gt;example.com&lt;/domain&gt;
+        &lt;pin-set expiration="2018-01-01"&gt;
+            &lt;pin digest="SHA-256"&gt;7HIpactkIAq2Y49orFOOQKurWxmmSFZhBCoQYcRhJ3Y=&lt;/pin&gt;
+            &lt;!-- backup pin --&gt
+            &lt;pin digest="SHA-256"&gt;fwza0LRMXouZHRC8Ei+4PyuldPDcf3UKgO/04cDM1oE=&lt;/pin&gt;
+    &lt;/domain-config&gt;
+&lt;/network-security-config&gt;
+</pre>
+</p>
+
+
+<h2 id="ConfigInheritance">Comportamiento de herencia de configuración</h2>
+
+<p>
+  Los valores que no se establecen en una configuración específica se heredan. Este comportamiento permite configuraciones
+ más complejas y un archivo de configuración de fácil lectura.
+</p>
+
+<p>
+  Si no se establece un valor en una entrada específica, se usa el valor de
+ la siguiente entrada más general. Los valores no establecidos en una {@code domain-config} se
+ toman de la {@code domain-config} primaria, si están anidados, o de la {@code
+base-config}, si no están anidados. Los valores no establecidos en la {@code base-config} usan
+ los valores predeterminados de la plataforma.
+</p>
+
+<p>
+  Por ejemplo, cuando todas las conexiones a subdominios de {@code
+example.com} deben usar un conjunto personalizado de CA. Además, el tráfico de Cleartext a
+ estos dominios se permite <em>excepto</em> con las conexiones a {@code
+ secure.example.com}. Anidando la configuración para {@code
+secure.example.com} dentro de la configuración para {@code example.com}, 
+ {@code trust-anchors} no necesita duplicación.
+</p>
+
+<p>
+<code>res/xml/network_security_config.xml</code>:
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?&gt;
+&lt;network-security-config&gt;
+    &lt;domain-config&gt;
+        &lt;domain includeSubdomains="true"&gt;example.com&lt;/domain&gt;
+        &lt;trust-anchors&gt;
+            &lt;certificates src="@raw/my_ca"/&gt;
+        &lt;/trust-anchors&gt;
+        &lt;domain-config cleartextTrafficPermitted="false"&gt;
+            &lt;domain includeSubdomains="true"&gt;secure.example.com&lt;/domain&gt;
+        &lt;/domain-config&gt;
+    &lt;/domain-config&gt;
+&lt;/network-security-config&gt;
+</pre>
+</p>
+
+
+<h2 id="FileFormat">Formato del archivo de configuración</h2>
+
+<p>
+  La función de configuración de seguridad de la red usa un formato de archivo XML.
+  La estructura general del archivo se muestra en el siguiente ejemplo de código:
+</p>
+
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?&gt;
+&lt;network-security-config&gt;
+    &lt;base-config&gt;
+        &lt;trust-anchors&gt;
+            &lt;certificates src="..."/&gt;
+            ...
+        &lt;/trust-anchors&gt;
+    &lt;/base-config&gt;
+
+    &lt;domain-config&gt;
+        &lt;domain&gt;android.com&lt;/domain&gt;
+        ...
+        &lt;trust-anchors&gt;
+            &lt;certificates src="..."/&gt;
+            ...
+        &lt;/trust-anchors&gt;
+        &lt;pin-set&gt;
+            &lt;pin digest="..."&gt;...&lt;/pin&gt;
+            ...
+        &lt;/pin-set&gt;
+    &lt;/domain-config&gt;
+    ...
+    &lt;debug-overrides&gt;
+        &lt;trust-anchors&gt;
+            &lt;certificates src="..."/&gt;
+            ...
+        &lt;/trust-anchors&gt;
+    &lt;/debug-overrides&gt;
+&lt;/network-security-config&gt;
+</pre>
+
+<p>
+  Las siguientes secciones describen la sintaxis y otros detalles del formato
+ de archivo.
+</p>
+
+<h3 id="network-security-config">
+  &lt;network-security-config&gt;
+</h3>
+
+<dl class="xml">
+  <dt>
+    PUEDE CONTENER:
+  </dt>
+
+  <dd>
+    0 o 1 de <code><a href="#base-config">&lt;base-config&gt;</a></code><br>
+    Cualquier cantidad de <code><a href=
+    "#domain-config">&lt;domain-config&gt;</a></code><br>
+    0 o 1 de <code><a href="#debug-overrides">&lt;debug-overrides&gt;</a></code>
+  </dd>
+</dl>
+
+<h3 id="base-config">
+  &lt;base-config&gt;
+</h3>
+
+<dl class="xml">
+  <dt>
+    SINTAXIS:
+  </dt>
+</dl>
+
+<pre class="stx">
+&lt;base-config <a href=
+"#usesCleartextTraffic">usesCleartextTraffic</a>=["true" | "false"]&gt;
+    ...
+&lt;/base-config&gt;
+</pre>
+<dl class="xml">
+  <dt>
+    PUEDE CONTENER:
+  </dt>
+
+  <dd>
+    <code><a href="#trust-anchors">&lt;trust-anchors&gt;</a></code>
+  </dd>
+
+  <dt>
+    DESCRIPCIÓN:
+  </dt>
+
+  <dd>
+    La configuración predeterminada usada por todas las conexiones cuyo destino no
+ está cubierto por una <a href="#domain-config"><code>domain-config</code></a>.
+
+<p>
+  Los valores que no están configurados usan los valores predeterminados de la plataforma. La configuración predeterminada
+ para aplicaciones con API nivel 24 o superior es:
+</p>
+
+<pre>
+&lt;base-config usesCleartextTraffic="true"&gt;
+    &lt;trust-anchors&gt;
+        &lt;certificates src="system" /&gt;
+    &lt;/trust-anchors&gt;
+&lt;/base-config&gt;
+</pre>
+La configuración predeterminada para aplicaciones con API nivel 23 o inferior es:
+<pre>
+&lt;base-config usesCleartextTraffic="true"&gt;
+    &lt;trust-anchors&gt;
+        &lt;certificates src="system" /&gt;
+        &lt;certificates src="user" /&gt;
+    &lt;/trust-anchors&gt;
+&lt;/base-config&gt;
+</pre>
+
+  </dd>
+</dl>
+
+<h3 id="domain-config">&lt;domain-config&gt;</h3>
+<dl class="xml">
+<dt>SINTAXIS:</dt>
+<dd>
+<pre class="stx">&lt;domain-config <a href="#usesCleartextTraffic">usesCleartextTraffic</a>=["true" | "false"]&gt;
+    ...
+&lt;/domain-config&gt;</pre>
+</dd>
+
+<dt>PUEDE CONTENER:</dt>
+
+<dd>
+1 o más <code><a href="#domain">&lt;domain&gt;</a></code>
+<br/>0 o 1 <code><a href="#trust-anchors">&lt;trust-anchors&gt;</a></code>
+<br/>0 o 1 <code><a href="#pin-set">&lt;pin-set&gt;</code></a>
+<br/>Cualquier cantidad de <code>&lt;domain-config&gt;</code> anidadas</dd>
+
+<dt>DESCRIPCIÓN</dt>
+<dd>Configuración usada para conexiones con destinos específicos, como los definidos por elementos de {@code domain}.
+
+<p>Ten en cuenta que, si múltiples elementos de {@code domain-config} cubren un destino, la configuración con la regla de coincidencia de dominio más específica (más larga)
+ es la que se usa.</p></dd>
+</dl>
+
+
+<h3 id="domain">&lt;domain&gt;</h3>
+
+<dl class="xml">
+  <dt>
+    SINTAXIS:
+  </dt>
+
+  <dd>
+    <pre class="stx">
+&lt;domain includeSubdomains=["true" | "false"]&gt;example.com&lt;/domain&gt;
+</pre>
+  </dd>
+
+  <dt>
+    ATRIBUTOS:
+  </dt>
+
+  <dd>
+    <dl class="attr">
+      <dt>
+        {@code includeSubdomains}
+      </dt>
+
+      <dd>
+        Si es {@code "true"}, esta regla de dominio coincide con el dominio
+ y con todos los subdominios, incluidos los subdominios de subdominios. Si no, la regla
+ solo se aplica a coincidencias exactas.
+      </dd>
+    </dl>
+  </dd>
+
+  <dt>
+    DESCRIPCIÓN:
+  </dt>
+</dl>
+
+<h3 id="debug-overrides">&lt;debug-overrides&gt;</h3>
+
+<dl class="xml">
+  <dt>
+    SINTAXIS:
+  </dt>
+
+  <dd>
+    <pre class="stx">
+&lt;debug-overrides&gt;
+    ...
+&lt;/debug-overrides&gt;
+</pre>
+  </dd>
+
+  <dt>
+    PUEDE CONTENER:
+  </dt>
+
+  <dd>
+    0 o 1 <code><a href="#trust-anchors">&lt;trust-anchors&gt;</a></code>
+  </dd>
+
+  <dt>
+    DESCRIPCIÓN:
+  </dt>
+
+  <dd>
+    Sobrescrituras que se deben aplicar cuando <a href="{@docRoot}guide/topics/manifest/application-element.html#debug">android:debuggable</a>
+ es {@code "true"}, que es, generalmente, el caso de las versiones que no sean de lanzamiento
+ generadas por herramientas de IDE y de compilación. Los anclajes de confianza especificados en {@code
+ debug-overrides} se agregan a todas las demás configuraciones, y la fijación
+ de certificados no se lleva a cabo cuando la cadena de certificados del servidor usa uno de estos
+ anclajes de confianza de solo depuración. Si <a href="{@docRoot}guide/topics/manifest/application-element.html#debug">android:debuggable</a>
+ es {@code "false"}, entonces, esta sección se omite por completo.
+  </dd>
+</dl>
+
+<h3 id="trust-anchors">&lt;trust-anchors&gt;</h3>
+<dl class="xml">
+  <dt>
+    SINTAXIS:
+  </dt>
+
+  <dd>
+    <pre class="stx">
+&lt;trust-anchors&gt;
+...
+&lt;/trust-anchors&gt;
+</pre>
+  </dd>
+
+  <dt>
+    PUEDE CONTENER:
+  </dt>
+
+  <dd>
+    Cualquier cantidad de <code><a href="#certificates">&lt;certificates&gt;</a></code>
+  </dd>
+
+  <dt>
+    DESCRIPCIÓN:
+  </dt>
+
+  <dd>
+    Conjunto de anclajes de confianza para conexiones seguras.
+  </dd>
+</dl>
+
+
+<h3 id="certificates">&lt;certificates&gt;</h3>
+<dl class="xml">
+<dt>SINTAXIS:</dt>
+<dd><pre class="stx">&lt;certificates src=["system" | "user" | "<i>raw resource</i>"]
+              overridePins=["true" | "false"] /&gt;
+</pre></dd>
+<dt>DESCRIPCIÓN:</dt>
+<dd>Conjunto de certificados X.509 para elementos de {@code trust-anchors}.</dd>
+
+<dt>ATRIBUTOS:</dt>
+<dd><dl class="attr">
+<dt>{@code src}</dt>
+<dd>
+La fuente de los certificados de CA puede ser una de las siguientes opciones:
+<ul>
+  <li>Una ID de recurso sin procesar que apunta a un archivo que contiene certificados X.509.
+  Los certificados deben estar codificados en formato DER o PEM. En el caso de los certificados
+ PEM, el archivo <em>no debe</em> contener datos adicionales que no sean de PEM, como
+ comentarios.
+  </li>
+
+  <li>{@code "system"} para los certificados de CA preinstalados del sistema.
+  </li>
+
+  <li>{@code "user"} para los certificados de CA agregados por el usuario.
+  </li>
+</ul>
+</dd>
+
+<dt>{@code overridePins}</dt>
+<dd>
+  <p>
+    Especifica si las CA de esta fuente omiten la fijación de certificados. Si es {@code
+"true"}, las cadenas de certificados se encadenan mediante una de estas CA
+ desde esta fuente, y la fijación no se lleva a cabo. Esto puede ser útil para CA de depuración
+ o para poder permitirle al usuario hacer un ataque MiTM al tráfico seguro de la aplicación.
+  </p>
+
+  <p>
+    Es {@code "false"} de forma predeterminada, a menos que se especifique en un elemento de {@code debug-overrides}
+, en cuyo caso, es {@code "true"} de forma predeterminada.
+  </p>
+</dd>
+</dl>
+</dd>
+
+
+<h3 id="pin-set">&lt;pin-set&gt;</h3>
+
+<dl class="xml">
+  <dt>
+    SINTAXIS:
+  </dt>
+
+  <dd>
+<pre class="stx">
+&lt;pin-set expiration="date"&gt;
+...
+&lt;/pin-set&gt;
+</pre>
+  </dd>
+
+  <dt>
+    PUEDE CONTENER:
+  </dt>
+
+  <dd>
+    Cualquier cantidad de <code><a href="#pin">&lt;pin&gt;</a></code>
+  </dd>
+
+  <dt>
+    DESCRIPCIÓN:
+  </dt>
+
+  <dd>
+    Un conjunto de fijaciones de claves públicas. Para que una conexión segura sea de confianza, una de las
+ claves públicas de la cadena de confianza debe estar en el conjunto de fijaciones. Consulta
+ <code><a href="#pin">&lt;pin&gt;</a></code> para el formato de las fijaciones.
+  </dd>
+
+  <dt>
+    ATRIBUTOS:
+  </dt>
+
+  <dd>
+    <dl class="attr">
+      <dt>
+        {@code expiration}
+      </dt>
+
+      <dd>
+        La fecha, en formato {@code yyyy-MM-dd}, a partir de la cual
+ expiran las fijaciones, lo cual deshabilita la fijación. Si el atributo no está establecido, las fijaciones
+ no expiran.
+        <p>
+          La expiración ayuda a evitar problemas de conectividad en aplicaciones
+ que no reciben actualizaciones para el conjunto de fijaciones, por ejemplo,
+porque el usuario deshabilitó las actualizaciones de la aplicación.
+        </p>
+      </dd>
+    </dl>
+  </dd>
+</dl>
+
+<h3 id="pin">&lt;pin&gt;</h3>
+<dl class="xml">
+  <dt>
+    SINTAXIS:
+  </dt>
+
+  <dd>
+<pre class="stx">
+&lt;pin digest=["SHA-256"]&gt;base64 encoded digest of X.509
+    SubjectPublicKeyInfo (SPKI)&lt;/pin&gt;
+</pre>
+  </dd>
+
+  <dt>
+    ATRIBUTOS:
+  </dt>
+
+  <dd>
+    <dl class="attr">
+      <dt>
+        {@code digest}
+      </dt>
+
+      <dd>
+        Resumen del algoritmo usado para generar la fijación. Actualmente, solo se admite
+ {@code "SHA-256"}.
+      </dd>
+    </dl>
+  </dd>
+</dl>
diff --git a/docs/html-intl/intl/es/preview/features/tv-recording-api.jd b/docs/html-intl/intl/es/preview/features/tv-recording-api.jd
new file mode 100644
index 0000000..459d48f
--- /dev/null
+++ b/docs/html-intl/intl/es/preview/features/tv-recording-api.jd
@@ -0,0 +1,120 @@
+page.title=Grabación de TV
+page.keywords=preview,sdk,tv,recording
+page.tags=androidn
+
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+  <h2>Contenido del documento</h2>
+  <ol>
+    <li><a href="#supporting">Indicar la compatibilidad para la grabación</a></li>
+    <li><a href="#recording">Grabar una sesión</a></li>
+    <li><a href="#errors">Gestionar los errores de grabación</a></li>
+    <li><a href="#sessions">Gestionar las sesiones grabadas</a></li>
+    <li><a href="#best">Prácticas recomendadas</a></li>
+  </ol>
+</div>
+</div>
+
+<p>Los servicios de entrada de TV le permiten al usuario pausar y reiniciar la reproducción de canales
+mediante API de time-shifting. Android N expande la función de time-shifting
+ permitiéndoles a los usuarios guardar múltiples sesiones grabadas.</p>
+
+<p>Los usuarios pueden programar las grabaciones por adelantado o comenzar a grabar a la vez
+que miran un programa. Una vez que el sistema haya guardado una grabación, el usuario puede explorar, gestionar
+y reproducir las grabaciones usando la aplicación del sistema de TV.</p>
+
+<p>Si deseas brindar funcionalidades de grabación a tu servicio de entrada de TV,
+debes indicarle al sistema que tu aplicación permite la grabación, implementar
+la habilidad para grabar programas, gestionar y comunicar los errores que ocurren
+durante la grabación y gestionar las sesiones grabadas.</p>
+
+<h2 id="supporting">Indicar la compatibilidad para la grabación</h2>
+
+<p>Para comunicarle al sistema que tu servicio de entrada de TV permite la grabación, debes seguir
+estos pasos:</p>
+
+<ol>
+<li>En el método <code>TvInputService.onCreate()</code>, crea un nuevo
+objeto <code>TvInputInfo</code> usando la clase <code>TvInputInfo.Builder</code>.
+</li>
+<li>Cuando creer el nuevo objeto <code>TvInputInfo</code>, llama a
+<code>setCanRecord(true)</code> antes de llamar a <code>build()</code> para
+indicar que tu servicio permite la grabación.</li>
+<li>Registra tu objeto <code>TvInputInfo</code> con el sistema llamando a
+<code>TvInputService.updateTvInputInfo()</code>.</li>
+</ol>
+
+<h2 id="recording">Grabar una sesión</h2>
+
+<p>Luego de que el servicio de entrada de TV registra la compatibilidad
+con la funcionalidad de grabación, el sistema llama a tu
+<code>TvInputService.onCreateRecordingSession()</code> cuando necesita acceder
+a la implementación de grabación de tu aplicación. Implementa tu propia subclase
+<code>TvInputService.RecordingSession</code> y devuélvela
+cuando el callback de <code>onCreateRecordingSession()</code>
+se dispare. Esta subclase es responsable de cambiar a los datos del canal correcto,
+de grabar los datos solicitados y de comunicar el estado y los errores de grabación al
+sistema.</p>
+
+<p>Cuando el sistema llama a <code>RecordingSession.onTune()</code>, pasando en un
+URI de canal, sintoniza el canal que el URI especifica. Notifícale al sistema que tu
+aplicación se ha sintonizado al canal deseado llamando a <code>notifyTuned()</code>
+o, si tu aplicación no pudo sintonizarse al canal correcto, llama a
+<code>notifyError()</code>.</p>
+
+<p>El sistema invoca, a continuación, el callback <code>RecordingSession.onStartRecording()</code>.
+ Tu aplicación debe comenzar a grabar inmediatamente. Cuando el sistema invoca
+este callback, puede brindar un URI que contiene información sobre el programa
+que se está por grabar. Cuando finaliza la grabación, debes copiar estos
+datos a la tabla de datos <code>RecordedPrograms</code>.</p>
+
+<p>Finalmente, el sistema llama a <code>RecordingSession.onStopRecording()</code>.
+En este momento, tu aplicación debe dejar de grabar inmediatamente. También debes crear
+una entrada en la tabla <code>RecordedPrograms</code>. Esta entrada debe
+incluir el URI de datos de la sesión grabada en la columna
+<code>RecordedPrograms.COLUMN_RECORDING_DATA_URI</code> y cualquier información
+del programa que el sistema haya brindado en la llamada inicial a
+<code>onStartRecording()</code>.</p>
+
+<p>Para obtener más información sobre cómo acceder a la tabla <code>RecordedPrograms</code>
+, consulta <a href="#sessions">Gestionar las sesiones grabadas</a>.</p>
+
+<h2 id="errors">Gestionar los errores de grabación</h2>
+
+<p>Si ocurre un error durante la grabación que hace que los datos grabados no se puedan usar,
+notifica al sistema llamando a<code>RecordingSession.notifyError()</code>.
+De forma similar, puedes llamar a <code>notifyError()</code> después de que se cree una sesión de grabación
+para que el sistema sepa que la aplicación ya no puede grabar sesiones.</p>
+
+<p>Si ocurre un error durante la grabación, pero deseas brindarle al usuario una grabación
+parcial usable para su reproducción, llama a
+<code>RecordingSession.notifyRecordingStopped()</code> para permitir que el sistema
+use la sesión parcial.</p>
+
+<h2 id="sessions">Gestionar las sesiones grabadas</h2>
+
+<p>El sistema mantiene información de todas las sesiones grabadas de todas
+las aplicaciones de canal con funcionalidad de grabación en la tabla de proveedor de contenido <code>TvContract.RecordedPrograms</code>
+. Esta información se accede mediante el URI de contenido
+<code>RecordedPrograms.Uri</code>. Usa API de proveedor de contenido para
+leer, agregar y eliminar entradas de esta tabla.</p>
+
+<p>Para obtener más información sobre cómo trabajar con datos del proveedor de contenido, consulta 
+<a href="{@docRoot}guide/topics/providers/content-provider-basics.html">
+Conceptos básicos sobre el proveedor de contenido</a>.</p>
+
+<h2 id="best">Prácticas recomendadas</h2>
+
+<p>Los dispositivos de TV tienen un almacenamiento limitado, de modo que debes ser cuidadoso a la hora
+de asignar el almacenamiento para guardar las sesiones grabadas. Usa
+<code>RecordingCallback.onError(RECORDING_ERROR_INSUFFICIENT_SPACE)</code> cuando
+no haya espacio suficiente para guardar una sesión grabada.</p>
+
+<p>Cuando el usuario inicie la grabación, el registro de datos debe comenzar
+lo antes posible. Para facilitar este proceso, completa cualquier tarea anterior demandante,
+como acceder al espacio de almacenamiento y asignarlo, cuando el sistema invoque el
+callback <code>onCreateRecordingSession()</code>. Hacerlo te permite comenzar
+a grabar inmediatamente cuando el callback <code>onStartRecording()</code>
+se dispare.</p>
diff --git a/docs/html-intl/intl/es/preview/index.jd b/docs/html-intl/intl/es/preview/index.jd
new file mode 100644
index 0000000..f4c9189
--- /dev/null
+++ b/docs/html-intl/intl/es/preview/index.jd
@@ -0,0 +1,120 @@
+page.title=Android N Developer Preview
+page.tags="preview","developer"
+meta.tags=“preview”, “android”
+fullpage=true
+forcelocalnav=true
+header.hide=1
+footer.hide=1
+@jd:body
+
+<script>
+  $(document).ready(function() {
+    if (useUpdatedTemplates) {
+      $("#useUpdatedTemplates").css("display","block");
+    } else {
+      $("#useOldTemplates").css("display","block");
+    }
+  })
+</script>
+
+<section class="dac-expand dac-hero dac-light" style="background-color:#B2DFDB">
+  <div class="wrap" style="max-width:1100px;margin-top:0">
+    <div class="cols dac-hero-content" style="padding-bottom:1em;">
+
+      <div class="col-7of16 col-push-9of16" style="padding-left:2em">
+        <h1 class="dac-hero-title">Android N Developer Preview</h1>
+        <p class="dac-hero-description">
+          ¡Prepárate para Android N!
+          <strong>Prueba tus aplicaciones</strong> en Nexus y en otros dispositivos. Admite comportamientos del sistema nuevo
+          para <strong>ahorrar energía y memoria</strong>.
+          Amplía la funcionalidad de tus aplicaciones gracias a una <strong>IU con ventanas múltiples</strong>,
+          <strong>notificaciones de respuestas directas</strong> y más.
+        </p>
+
+        <a class="dac-hero-cta" href="{@docRoot}preview/overview.html">
+          <span class="dac-sprite dac-auto-chevron"></span>
+          Comencemos
+        </a><!--<br>
+        <a class="dac-hero-cta" href="{@docRoot}preview/support.html">
+          <span class="dac-sprite dac-auto-chevron"></span>
+          Update to Android N (final SDK)
+        </a><br>-->
+      </div>
+      <div class="col-9of16 col-pull-7of16 dac-hero-figure" style="margin-top:1.5em;padding-right:1.5em;">
+        <img class="dac-hero-image" src="{@docRoot}images/home/n-preview-hero.png" srcset="{@docRoot}images/home/n-preview-hero.png 1x,
+             {@docRoot}images/home/n-preview-hero_2x.png 2x">
+      </div>
+    </div>
+    <div class="dac-section dac-small">
+      <div class="resource-widget resource-flow-layout col-16"
+           data-query="collection:preview/landing/resources"
+           data-cardSizes="6x2"
+           data-maxResults="6"></div>
+    </div>
+  </div>
+</section>
+
+<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="#build-apps">
+      <i class="dac-sprite dac-arrow-down-gray"></i>
+    </a>
+    <ul class="dac-actions">
+      <li class="dac-action">
+        <a class="dac-action-link" href="https://developer.android.com/preview/bug">
+          <i class="dac-action-sprite dac-sprite dac-auto-chevron-large"></i>
+          Informa un problema
+        </a>
+      </li>
+      <li class="dac-action">
+        <a class="dac-action-link" href="{@docRoot}preview/support.html">
+          <i class="dac-action-sprite dac-sprite dac-auto-chevron-large"></i>
+          Consulta las notas de la versión
+        </a>
+      </li>
+      <li class="dac-action">
+        <a class="dac-action-link" href="{@docRoot}preview/dev-community">
+          <i class="dac-action-sprite dac-sprite dac-auto-chevron-large"></i>
+          Únete a la comunidad de desarrolladores
+        </a>
+      </li>
+    </ul>
+  </div><!-- end .wrap -->
+</div><!-- end .dac-actions -->
+
+<div id="useOldTemplates" style="display:none;color:black" class="actions-bar dac-expand dac-invert">
+  <div class="wrap dac-offset-parent">
+
+    <div class="actions">
+      <div><a href="https://developer.android.com/preview/bug">
+        <span class="dac-sprite dac-auto-chevron-large"></span>
+        Informar un problema
+      </a></div>
+      <div><a href="{@docRoot}preview/support.html">
+        <span class="dac-sprite dac-auto-chevron-large"></span>
+        Consulta las notas de la versión
+      </a></div>
+      <div><a href="{@docRoot}preview/dev-community">
+        <span class="dac-sprite dac-auto-chevron-large"></span>
+        Únete a la comunidad de desarrolladores
+        </a></div>
+    </div><!-- end .actions -->
+  </div><!-- end .wrap -->
+</div>
+
+<section class="dac-section dac-light"><div class="wrap">
+  <h1 class="dac-section-title">Recursos</h1>
+  <div class="dac-section-subtitle">
+    Información esencial para ayudarte a preparar tus aplicaciones para Android N.
+  </div>
+
+  <div class="resource-widget resource-flow-layout col-16"
+       data-query="collection:preview/landing/more"
+       data-cardSizes="6x6"
+       data-items-per-page="6"
+       data-maxResults="15"
+       data-initial-results="6"></div>
+
+  </div>
+</section>
+
diff --git a/docs/html-intl/intl/es/preview/j8-jack.jd b/docs/html-intl/intl/es/preview/j8-jack.jd
new file mode 100644
index 0000000..6693ea5
--- /dev/null
+++ b/docs/html-intl/intl/es/preview/j8-jack.jd
@@ -0,0 +1,183 @@
+page.title=Funciones del lenguaje Java 8
+page.keywords="android N", "Java 8", "Jack"
+@jd:body
+
+<div id="qv-wrapper">
+  <div id="qv">
+    <ol>
+      <li>
+        <a href="#supported-features">Funciones y API admitidas del lenguaje Java 8</a>
+      </li>
+      <li>
+        <a href="#configuration">Habilitar funciones de Java 8 y del conjunto de herramientas Jack</a>
+      </li>
+    </ol>
+  </div>
+</div>
+
+<p>En Android N se ofrece compatibilidad con funciones del idioma Java 8
+  que puedes usar al desarrollar aplicaciones orientadas a Android N.
+  En esta página se describen las funciones de idioma compatibles con la Android N
+  Preview, también la manera adecuada de configurar tu proyecto para usarlas y muchos problemas
+  conocidos que puedes experimentar.
+</p>
+
+<p>Para comenzar a usar estas funciones, debes descargar y configurar Android
+Studio 2.1 (muestra) y el Android N Preview SDK, en el que se incluyen el conjunto de herramientas
+Jack y el complemento de Android para Gradle. Si aún no instalaste
+el Android N Preview SDK, consulta <a href="{@docRoot}preview/setup-sdk.html">Configuración para desarrollar con Android N</a>.</p>
+
+
+
+<p class="note">
+  <strong>Nota:</strong> No es obligatorio usar las nuevas funciones del lenguaje Java 8
+  para desarrollar aplicaciones orientadas a la plataforma de Android N. Si no
+  deseas escribir código con funciones del lenguaje Java 8, puedes mantener los valores de compatibilidad
+  de origen y destino de tu proyecto en Java 7, pero
+  debes usar JDK 8 para crear la compilación en función de la plataforma de Android N.
+</p>
+
+<h2 id="supported-features">
+  Funciones y API admitidas del lenguaje Java 8
+</h2>
+
+<p>
+  Actualmente, Android no admite todas las funciones del lenguaje Java 8. Sin embargo, las
+  siguientes características ahora se encuentran disponibles para el desarrollo de aplicaciones orientadas a la
+  Android N Preview:
+</p>
+
+<ul>
+  <li>
+    <a class="external-link" href="https://docs.oracle.com/javase/tutorial/java/IandI/defaultmethods.html">métodos de interfaz
+    predeterminados y estáticos;</a>
+  </li>
+
+  <li>
+    <a class="external-link" href="https://docs.oracle.com/javase/tutorial/java/javaOO/lambdaexpressions.html">
+    expresiones Lambda;</a>
+  </li>
+
+  <li>
+    <a class="external-link" href="https://docs.oracle.com/javase/tutorial/java/annotations/repeating.html">anotaciones
+    reiterables.</a>
+  </li>
+</ul>
+
+
+<p>
+  A su vez, las siguientes API de funciones del lenguaje Java 8 ahora se encuentran disponibles:
+</p>
+
+<ul>
+  <li>Las API de Reflection y las relacionadas con el lenguaje:
+  </li>
+
+  <li style="list-style: none; display: inline">
+    <ul>
+      <li>{@code java.lang.FunctionalInterface}
+      </li>
+
+      <li>{@code java.lang.annotation.Repeatable}
+      </li>
+
+      <li>{@code java.lang.reflect.Method.isDefault()}
+      </li>
+
+      <li>También API Reflection asociadas con anotaciones reiterables, como
+      {@code AnnotatedElement.getAnnotationsByType(Class)}:
+      </li>
+    </ul>
+  </li>
+  <li>API de utilidades:
+  </li>
+
+  <li style="list-style: none; display: inline">
+    <ul>
+      <li>{@code java.util.function}
+      </li>
+    </ul>
+  </li>
+</ul>
+
+<p class="note">
+  <strong>Nota:</strong> la implementación de expresiones Lambda
+  de Android N se basa en clases anónimas. Este enfoque permite que
+  tengan compatibilidad con versiones anteriores y puedan ejecutarse en versiones anteriores de Android. Para probar
+  expresiones Lambda en versiones anteriores, recuerda acceder a tu archivo {@code
+  build.gradle} y fijar {@code compileSdkVersion} y {@code
+  targetSdkVersion} en 23 o un valor inferior.
+</p>
+
+<h2 id="configuration">
+  Habilitar funciones de Java 8 y del conjunto de herramientas Jack
+</h2>
+
+<p>
+  Para usar las nuevas funciones del lenguaje Java 8, también debes usar el
+  nueva <a class="external-link" href="https://source.android.com/source/jack.html">conjunto de herramientas Jack</a>. Este nueva
+  conjunto de herramientas de Android permite compilar fuentes del lenguaje Java en código de bytes dex legible a través de
+  Android, también tiene su propio formato de biblioteca {@code .jack} y proporciona la mayoría de las funciones de conjunto de
+  herramientas como parte de una única herramienta: reempaquetado, reducción, alteración y 
+  MultiDex.
+</p>
+
+<p>A continuación, se muestra una comparación de los conjuntos de herramientas empleadas para generar archivos DEX de Android:</p>
+<ul>
+  <li>Conjunto de herramientas javac heredada:<br>
+  <b>javac</b> ({@code .java} --&gt; {@code .class}) --&gt; <b>dx</b> ({@code
+  .class} --&gt; {@code .dex})
+  </li>
+
+  <li>Nueva conjunto de herramientas Jack:<br>
+  <b>Jack</b> ({@code .java} --&gt; {@code .jack} --&gt; {@code .dex})
+  </li>
+</ul>
+
+<h3>
+  Configuración de Gradle
+</h3>
+
+<p>
+  Si deseas habilitar las funciones del lenguaje Java 8 y de Jack para tu proyecto, escribe lo
+  siguiente en tu archivo específico de módulo {@code build.gradle}:
+</p>
+
+<pre>
+android {
+  ...
+  defaultConfig {
+    ...
+    jackOptions {
+      enabled true
+    }
+  }
+  compileOptions {
+    sourceCompatibility JavaVersion.VERSION_1_8
+    targetCompatibility JavaVersion.VERSION_1_8
+  }
+}
+</pre>
+
+<h3>
+  Problemas conocidos
+</h3>
+
+<p>
+  Instant Run, presentado en Android Studio 2.0 (beta), actualmente no funciona
+  con Jack y permanecerá deshabilitado cuando se use el nuevo conjunto de herramientas.
+</p>
+
+<p>Debido a que Jack no genera archivos de clase intermedia al compilar una
+aplicación, las herramientas que dependen de estos archivos actualmente no funcionan con Jack. Algunos
+ejemplos de estas herramientas:</p>
+
+<ul>
+  <li>detectores Lint que funcionan en archivos de clases;
+  </li>
+
+  <li>Herramientas y bibliotecas que requieren los archivos de clase de la aplicación (como JaCoCo
+  y Mockito).</li>
+</ul>
+
+<p>Si experimentas otros problemas al usar Jack, <a href="http://tools.android.com/filing-bugs">informa los errores</a>.</p>
\ No newline at end of file
diff --git a/docs/html-intl/intl/es/preview/overview.jd b/docs/html-intl/intl/es/preview/overview.jd
new file mode 100644
index 0000000..6cd026a
--- /dev/null
+++ b/docs/html-intl/intl/es/preview/overview.jd
@@ -0,0 +1,440 @@
+page.title=Información general del programa
+page.metaDescription=Prepara tus aplicaciones para la próxima versión de Android.
+page.image=images/cards/card-n-overview_2x.png
+meta.tags=“preview”, “desarrollador”, “Android”
+page.tags="preview", "developer", "android"
+
+@jd:body
+<!--
+<div class="cols" style=
+"background-color:#f2daf5; padding: 5px 0;margin-bottom:1em; text-align:center;">
+<h3>
+    Developer Preview 3 is now available
+  </h3>
+  <p>Includes final SDK and near-final system images</p>
+   <div style="margin:auto 1em">
+ <ul class="dac-section-links">
+    <li class="dac-section-link">
+      <a href="{@docRoot}preview/support.html#preview3-notes">
+      <span class="dac-sprite dac-auto-chevron"></span>
+      Read the Notes</a>
+    </li>
+
+    <li class="dac-section-link">
+      <a href="{@docRoot}preview/support.html#preview3-get">
+      <span class="dac-sprite dac-auto-chevron"></span>
+      Get the Update</a>
+    </li>
+
+    <li class="dac-section-link">
+      <a href="https://code.google.com/p/android-developer-preview/">
+      <span class="dac-sprite dac-auto-chevron"></span>
+      Report Issues</a>
+    </li>
+  </ul>
+  </div>
+</div>
+-->
+
+<p>
+  Bienvenido al plan de la <strong>Android N Developer Preview</strong>, un programa en el que
+  se ofrece todo lo que necesitas a fin de probar y optimizar tus aplicaciones para la próxima
+  versión de Android. Es gratis y puedes dar tus primeros pasos
+  descargando las herramientas de la N Developer Preview.
+</p>
+
+
+
+
+
+
+
+<div style="background-color:#eceff1;padding:1em;">
+<div class="wrap">
+  <div class="cols">
+    <div class="col-4of12">
+      <h5>
+        Imágenes de hardware y emuladores
+      </h5>
+
+      <p>
+        Ejecuta y prueba tus aplicaciones en varios dispositivos o en un emulador.
+
+      </p>
+    </div>
+
+    <div class="col-4of12">
+      <h5>
+        El código de plataforma más reciente
+      </h5>
+
+      <p>
+        Durante la Preview, ofreceremos varias actualizaciones mensuales. De esta manera, realizarás tus pruebas con los últimos cambios de la plataforma.
+      </p>
+    </div>
+
+    <div class="col-4of12">
+      <h5>
+        Prioridad para problemas de desarrolladores
+      </h5>
+
+      <p>
+        Durante las primeras semanas, daremos prioridad a los problemas informados por los desarrolladores;
+        por lo tanto, debes realizar las pruebas y enviar tus comentarios lo antes posible.
+      </p>
+    </div>
+
+  </div>
+
+  <div class="cols">
+
+
+    <div class="col-4of12">
+      <h5>
+        Capacidades y comportamientos nuevos
+      </h5>
+
+      <p>
+        Comienza a trabajar temprano para admitir los comportamientos de la nueva plataforma y realizar desarrollos con nuevas funciones.
+      </p>
+    </div>
+
+    <div class="col-4of12">
+        <h5>
+        Actualizaciones inalámbricas
+      </h5>
+
+      <p>
+        Actualizaciones inalámbricas sin inconvenientes para dispositivos admitidos a través del
+        Programa de Android beta. No se requieren actualizaciones.
+      </p>
+    </div>
+
+    <div class="col-4of12">
+      <h5>
+        Comentarios y soporte
+      </h5>
+
+      <p>
+        Informa los problemas y envíanos comentarios a través de nuestro
+        <a href="{@docRoot}preview/bug">sistema de seguimiento de problemas</a>. Conéctate con otros desarrolladores
+        en la
+        <a href="{@docRoot}preview/dev-community">comunidad de desarrolladores de Android&nbsp;N</a>.
+      </p>
+    </div>
+  </div>
+</div>
+</div>
+
+<!--
+<p>New in the Android N Developer Preview: </p>
+
+<ul>
+  <li> Accompanying Android Beta Program for consumers, starting later in the preview</li>
+  <li> More supported devices, including devices from OEM partners</li>
+  <li> Seamless OTAs for your devices, from initial release to final N release without flashing</li>
+</ul>
+-->
+
+<h2 id="timeline">Escala de tiempo y actualizaciones</h2>
+<img src="{@docRoot}images/n-preview-updates_2x.png">
+
+<p>
+  La N Developer Preview rige desde el 9 de marzo de 2016 hasta el lanzamiento público de Android N
+  para AOSP y OEM, previsto para el tercer trimestre de 2016.
+</p>
+
+<p>
+  En momentos claves del desarrollo, ofreceremos actualizaciones para tu entorno de desarrollo y
+  prueba. En general, podrás contar con una actualización por mes (intervalo de 4 a 6
+  semanas). A continuación, se mencionan las versiones milestone:
+</p>
+
+<ul>
+  <li><strong><a href="{@docRoot}preview/support.html">Preview 1</a></strong> (versión inicial, alpha);</li>
+  <li><strong>Preview 2</strong> (actualización gradual, beta);</li>
+  <li><strong>Preview 3</strong> (actualización gradual, beta);</li>
+  <li><strong>Preview 4</strong> (API finales y SDK oficial, publicación en Google Play);</li>
+  <li><strong>Preview 5</strong> (imágenes de sistema casi definitivas para pruebas finales);</li>
+  <li><strong>lanzamiento de la versión final</strong> para AOSP y el ecosistema.</li>
+</ul>
+
+<p>
+  En cada actualización se incluyen herramientas de SDK, imágenes de sistema de la muestra, emuladores, documentación de
+  referencia y diferencias de API.
+</p>
+
+<p>
+  En las primeras <strong>tres milestone de la muestra</strong> se proporciona un <strong>entorno
+  de prueba y desarrollo tempranos</strong> que te permitirá identificar
+  problemas de compatibilidad en tus aplicaciones actuales y planificar tareas relacionadas con la migración o las funciones
+  que se necesitan para orientar la nueva plataforma. Este será el período de prioridad en el cual nos
+  enviarás tus comentarios sobre funciones y problemas de compatibilidad de API y archivos;
+  para hacerlo, usa el <a href="{@docRoot}preview/bug">sistema se seguimiento de
+  problemas</a>. Podrás contar con cambios en las API en estas actualizaciones.
+</p>
+
+<p>
+  Entre las <strong>Preview 4 y 5</strong>, tendrás acceso a las <strong>API
+  y al SDK finales de Android N</strong> para tareas de desarrollo, y también a imágenes de sistema casi definitivas
+  para poner a prueba comportamientos y funciones del sistema. Durante este período, Android N ofrecerá un nivel de API
+  estándar. Puedes iniciar la prueba de compatibilidad de tus aplicaciones
+  heredadas y optimizar el código nuevo en el que se usen las API o funciones de Android N.
+</p>
+
+<p>
+  A su vez, a partir de la Preview 4, podrás <strong>publicar aplicaciones en
+  dispositivos</strong> con Android N cuyo nivel de API sea el oficial (por ejemplo,
+  dispositivos de consumidores inscritos en el Programa de Android beta). Puedes
+  realizar primero publicaciones en los canales alpha y beta de Google Play, a fin de probar
+  tus aplicaciones con consumidores de Android beta antes de proceder con la distribución a gran escala en la
+  tienda.
+</p>
+
+<p>
+  A medida que pruebes Android N y lo uses para tus desarrollos, te recomendamos enfáticamente <strong>mantener
+  actualizado tu entorno de desarrollo</strong> conforme se lancen actualizaciones de la
+  muestra. Para facilitar el proceso, puedes registrar tus dispositivos de prueba en el
+  Programa de Android Beta y obtener <strong>actualizaciones inalámbricas (OTA)</strong> en
+  cada versión milestone. Como alternativa, habrá disponibles imágenes de preview actualizadas que puedes
+  descargar y actualizar de manera manual.
+</p>
+
+<p>
+  Cuando haya disponibles las actualizaciones de la muestra, te informaremos a través del <a href="http://android-developers.blogspot.com/">blog para desarrolladores de Android</a>, de 
+  este sitio y de la <a href="{@docRoot}preview/dev-community">Comunidad de desarrolladores
+  de Android N</a>.
+</p>
+
+
+<h2 id="preview_tools">¿Qué es la N Developer Preview?</h2>
+
+<p>
+  En la N Developer Preview se incluye todo lo que necesitas para probar tus aplicaciones
+  existentes con diferentes tamaños de pantalla, tecnologías de red, chipsets de CPU y GPU,
+  y arquitecturas de hardware.
+</p>
+
+<h3 id="sdk_tools">Herramientas del SDK</h3>
+
+<p>Puedes descargar todos estos componentes a través de SDK Manager en <a href="{@docRoot}sdk/installing/adding-packages.html">Android Studio</a>:</p>
+
+<ul>
+  <li> <strong>SDK y herramientas</strong> de la N Developer Preview
+  <li> <strong>imagen del sistema para el emulador</strong>de la N Developer Preview (32 y 64 bits);
+  <li> <strong>imagen del sistema para el emulador para Android TV</strong> (32 bits) de la N Developer Preview;
+  <li> bibliotecas de compatibilidad de la N Developer Preview (para nuevas plantillas de aplicaciones).
+</ul>
+
+<p>
+  Ofreceremos actualizaciones para estas herramientas de desarrollo en cada versión milestone según sea necesario.
+</p>
+
+<h3 id="hardware_system_images">Imágenes de sistema de hardware</h3>
+
+<p>
+  En la N Developer Preview se incluyen, entre otras, imágenes de sistema del hardware de Nexus que puedes usar al
+  realizar pruebas y desarrollos en dispositivos físicos. Consulta la sección de <a href="{@docRoot}preview/download.html">imágenes de sistema</a> para encontrar la lista completa
+  de imágenes de hardware.
+</p>
+
+<p>
+  Ofreceremos imágenes de sistema actualizadas para estos dispositivos en cada versión milestone. Puedes
+  descargar y actualizar manualmente las imágenes de sistema renovadas en tus dispositivos de prueba
+   con la frecuencia que desees. Esto resulta particularmente útil para entornos
+  de prueba automatizados en los cuales probablemente debas volver a actualizar tu dispositivo varias
+  veces.
+</p>
+
+<p class="note"><strong>Nota</strong>:
+  <strong>Los dispositivos actualizados de manera manual no recibirán actualizaciones OTA</strong>, como en la
+  muestra del año pasado. Este año, podrás recibir OTA registrando dispositivos en el
+  Programa de Android Beta. Consulta la sección siguiente para obtener información detallada.
+</p>
+
+<h3 id="android_beta">Actualizaciones OTA a través del Programa de Android beta</h3>
+
+<p>
+  Como novedad en Android N, se ofrece un programa de actualización inalámbrica (OTA) que
+  proporciona las últimas actualizaciones de las muestras de Android N directamente para dispositivos registrados
+  en él. Es gratuito y está pensado para quienes tengan dispositivos
+  compatibles registrados en sus cuentas de Google.
+</p>
+
+<p>
+  Para el registro, visita el sitio del <a href="https://g.co/androidbeta">Programa de Android
+  beta</a>. En él, verás
+  todos los dispositivos registrados en tu cuenta que cumplen con los requisitos para registrarse en
+  el programa.
+</p>
+
+<ol>
+  <li> Selecciona los dispositivo para los cuales deseas recibir actualizaciones de Android N.
+  <li> Haz clic en Registrar, lee y acepta las condiciones de servicio y luego haz clic en Aceptar.
+</ol>
+
+<p>
+  Una vez que realices el registro, tu dispositivo recibirá pronto una actualización. En la mayoría de los casos,
+  no necesitarás restablecer por completo tus datos para la migración a Android N, pero
+  te recomendamos hacer una copia de respaldo de los datos que no desees perder antes de
+  registrar el dispositivo.
+</p>
+
+<p>
+  A medida que tu dispositivo reciba actualizaciones, te recomendamos descargarlas e
+  instalarlas lo más pronto posible. Te convendrá mantenerte actualizado respecto de
+  las últimas modificaciones en la IU, el comportamiento, las API y las funciones del sistema.
+</p>
+
+<p>
+  Al finalizar la Developer Preview, tus dispositivos registrados
+  recibirán una actualización a la versión oficial de Android N.
+</p>
+
+<p>
+  Puedes dar de baja tus dispositivos del Programa de Android beta en cualquier momento desde el
+  sitio de Android beta. Antes de hacerlo, asegúrate de realizar una copia de respaldo de los datos de tu
+  dispositivo.
+</p>
+
+  <p class="note"><strong>Nota</strong>:
+  Cuando des de baja tu dispositivo, <strong>este se someterá a un restablecimiento de fábrica</strong>
+  a través del cual se cargará la última versión
+  de Android 6.0 Marshmallow (no necesariamente la versión
+  instalada antes del registro). Para garantizar que la instalación sea nueva,
+  se borrarán tus datos del dispositivo; entre otros, los contactos, los mensajes y
+  las fotos.
+</p>
+
+<h3 id="documentation_and_sample_code">Documentación y ejemplo de código</h3>
+
+<p>
+  Los siguientes recursos de documentación se encuentran disponibles en el sitio Developer Preview y con ellos
+  podrás obtener información sobre Android&nbsp;N:
+</p>
+
+<ul>
+  <li> <a href="{@docRoot}preview/setup-sdk.html">Preparación para el desarrollo con
+ Android N</a>: contiene
+  instrucciones paso a paso para comenzar.</li>
+  <li> En <a href="{@docRoot}preview/behavior-changes.html">Cambios
+  en los comportamientos</a> se indican áreas claves que debes probar.</li>
+  <li> Documentación de nuevas API, incluyendo <a href="{@docRoot}preview/api-overview.html">Información general de API</a>, una <a href="{@docRoot}preview/setup-sdk.html#docs-dl">Referencia
+de API</a>
+descargable y guías exhaustivas para desarrolladores que muestran por ejemplo: soporte de
+múltiples ventanas, notificaciones integradas, soporte de múltiples regiones, y mucho más.
+  <li> <a href="{@docRoot}preview/samples.html">Ejemplo de código</a>, en el que
+  se demuestra la manera de admitir permisos y otras funciones nuevas.
+  <li> <a href="{@docRoot}preview/support.html#release-notes">Notas de la versión</a>
+ sobre la versión actual de la N Developer Preview. Se incluyen notas sobre los cambios e informes
+  de diferencias.
+</ul>
+
+<h4 id="reference">Referencia de la API descargable</h4>
+
+<p>
+  Durante las actualizaciones de la muestra, puedes descargar la
+  <a href="{@docRoot}preview/setup-sdk.html#docs-dl">Referencia de la API
+  más reciente para la plataforma de Android N</a> como un archivo .zip separado. En esta descarga
+  también se incluye un informe de diferencias que te permite identificar cambios en la API
+  en comparación con la API 23 y la actualización anterior.
+</p>
+
+<p>
+  Cuando las API de Android N sean definitivas y se asigne el nivel de API oficial,
+  te proporcionaremos la referencia de la API en línea en <a href="https://developer.android.com">https://developer.android.com</a>.
+</p>
+
+<h3 id="support_resources">
+  Recursos de soporte
+</h3>
+
+<p>
+  A medida que realices pruebas y desarrollos con la N Developer Preview, recurre a los siguientes canales
+  para informar problemas y enviar comentarios.
+</p>
+
+<ul>
+  <li> <a href="https://code.google.com/p/android-developer-preview/">El sistema de seguimiento de problemas de la N Developer Preview
+    </a> es el <strong>canal principal para comentarios.</strong> A través de él, puedes informar errores y problemas de
+    rendimiento, y enviar comentarios generales. También puedes buscar
+<a href="{@docRoot}preview/bug">problemas conocidos</a> y
+    encontrar pasos para solucionarlos. Te mantendremos informado sobre tu problema durante el proceso de evaluación y 
+    derivación al equipo de ingeniería de Android para su resolución. </li>
+  <li> La <a href="{@docRoot}preview/dev-community">comunidad de desarrolladores de Android N</a> es
+    una comunidad de Google+ en la que puedes <strong>conectarte con otros desarrolladores</strong>que trabajen con
+    Android N. Puedes compartir observaciones o ideas, o encontrar respuestas a
+    preguntas acerca de Android N. Moderaremos la comunidad y proporcionaremos respuestas y
+    orientación según sea necesario.</li>
+</ul>
+
+<h3 id="targeting">Orientación, API de la muestra y publicación</h3>
+
+<p>
+  En la N Developer Preview se proporciona un sistema exclusivo para desarrollo y una biblioteca
+   de Android <strong>cuyo nivel de API no es estándar</strong>. Si deseas
+  no incluir comportamientos de compatibilidad para probar tu aplicación (muy
+  recomendado), puedes orientar la versión preview de Android N fijando el valor de
+  <code><a href=
+  "{@docRoot}preview/setup-sdk.html#create-update">targetSdkVersion</a></code>
+  de tu aplicación en <code>“N”</code>.
+</p>
+
+<p>
+  La Android N Developer Preview ofrece las <strong>API de preview</strong>;
+  estas no serán oficiales hasta el lanzamiento de la versión definitiva del SDK,
+  actualmente previsto para el tercer trimestre de 2016. Esto significa que podrás
+  <strong>contar con cambios menores en las API</strong> conforme pase el tiempo, en especial durante
+  las primeras semanas del programa. Te proporcionaremos un resumen de cambios con
+  cada actualización de la Android N Developer Preview.
+</p>
+
+<p class="note">
+  <strong>Nota</strong>: Aunque las API de la muestra pueden modificarse, los comportamientos del sistema
+  subyacente permanecen estables y disponibles para cualquier prueba
+  inmediata.
+</p>
+
+<p>
+  Google Play <strong>evita la publicación de aplicaciones orientadas a la N Developer
+  Preview</strong>. Cuando esté disponible el SDK definitivo de Android N, podrás
+  apuntar hacia el nivel de API oficial de Android N y publicar tu aplicación en Google
+  Play a través de los canales para versiones alpha y beta. Mientras tanto, si deseas
+  distribuir una aplicación orientada a Android N para testers, puedes hacerlo por correo electrónico o
+  mediante descarga directa desde tu sitio.
+</p>
+
+<p>
+  Cuando se lance la versión completa de Android N para AOSP y OEM, evento previsto para el tercer trimestre de 2016,
+  podrás publicar tus aplicaciones orientadas a Android N en el canal de lanzamientos
+  públicos de Google Play.
+</p>
+
+
+<h2 id="how_to_get_started">Primeros pasos</h2>
+
+<p>
+  Para comenzar a probar tu aplicación con Android N:
+</p>
+
+<ol>
+  <li> Revisa las secciones <a href="{@docRoot}preview/api-overview.html">Información general de la API</a>
+  y <a href="{@docRoot}preview/behavior-changes.html">Cambios en los comportamientos</a> a fin de
+  conocer las novedades y el efecto que tienen en tus aplicaciones. En particular,
+  procura obtener información sobre las nuevas funciones de <a href="{@docRoot}preview/features/notification-updates.html">notificaciones</a> y la
+  <a href="{@docRoot}preview/features/multi-window.html">compatibilidad con ventanas múltiples</a>.</li>
+  <li> Configura tu entorno siguiendo las instrucciones para <a href="{@docRoot}preview/setup-sdk.html">configurar el SDK Preview</a>
+  y los dispositivos de prueba.</li>
+  <li> Sigue las <a href="https://developers.google.com/android/nexus/images">instrucciones de
+  actualización</a> a fin de usar la última imagen de sistema de Android N para tu dispositivo. </li>
+  <li> Revisa la <a href="{@docRoot}preview/setup-sdk.html#docs-dl">Referencia de la API</a>
+  y los <a href="{@docRoot}preview/samples.html">Ejemplos de Android N</a> para obtener más
+  información sobre las nuevas funciones de la API y la manera de usarlas en tu aplicación.
+  <li> Únete a la <a href="{@docRoot}preview/dev-community">comunidad de
+  desarrolladores de Android N</a> para recibir las últimas noticias y para contactarte con otros
+  desarrolladores que estén trabajando con la nueva plataforma.</li>
+</ol>
+
+<p>
+  ¡Te agradecemos por participar de la Android N Developer Preview!
+</p>
diff --git a/docs/html-intl/intl/es/preview/samples.jd b/docs/html-intl/intl/es/preview/samples.jd
new file mode 100644
index 0000000..0c271f6
--- /dev/null
+++ b/docs/html-intl/intl/es/preview/samples.jd
@@ -0,0 +1,85 @@
+page.title=Ejemplos
+page.tags="preview", "samples", "android"
+page.image=images/cards/card-n-samples_2x.png
+@jd:body
+
+<p>
+  Los siguientes ejemplos de código se proporcionan para Android N. Para
+  descargarlos en Android Studio, selecciona la opción de menú <b>File &gt; Import
+  Samples</b>.
+</p>
+
+<p class="note">
+  <strong>Nota:</strong> Estos proyectos descargables están diseñados
+   para usarse con Gradle y Android Studio.
+</p>
+
+
+<h3 id="mw">“Área de juegos” de ventanas múltiples</h3>
+<img src="{@docRoot}preview/images/sample-multiwindow.png" style="float: left; padding-right: 0.5em" height="250" width="156" />
+<p>
+  En este ejemplo se muestra la manera de aprovechar interfaces de usuario
+  de ventanas múltiples con tu aplicación.
+</p>
+<p>
+  <a href="https://github.com/googlesamples/android-MultiWindowPlayground">
+Obtener en GitHub</a>
+</p>
+
+<div style="clear: both;"></div>
+<h3 id="an">Notificaciones activas</h3>
+<img src="{@docRoot}preview/images/sample-activenotifications.png" style="float: left; padding-right: 0.5em" height="250" width="141" />
+<p>
+  Este es un ejemplo preexistente en el cual se muestra un servicio simple que envía
+  notificaciones con NotificationCompat. Cada conversación no leída
+  se envía como una notificación diferente.
+</p>
+<p>
+  Este ejemplo se actualizó para aprovechar nuevas funciones de notificación
+  disponibles en Android N.
+</p>
+<p>
+  <a href="https://github.com/googlesamples/android-ActiveNotifications">
+Obtener en GitHub</a>
+</p>
+
+<div style="clear: both;"></div>
+<h3 id="ms">Servicio de mensajería</h3>
+<img src="{@docRoot}preview/images/sample-messagingservice.png" style="float: left; padding-right: 0.5em" height="250" width="150" />
+<p>
+  Este es un ejemplo preexistente en el que se demuestra la manera de usar
+  NotificationManager para indicar la cantidad de notificaciones que se aparecen actualmente en una
+  aplicación.
+</p>
+<p>
+  Este ejemplo se actualizó para aprovechar nuevas funciones de notificación
+  disponibles en Android N.
+</p>
+<p>
+  <a href="https://github.com/googlesamples/android-MessagingService">
+Obtener en GitHub</a>
+</p>
+
+<div style="clear: both;"></div>
+<h3 id="fbe">Inicio directo</h3>
+<img src="{@docRoot}preview/images/sample-directboot.png" style="float: left; padding-right: 0.5em" height="250" width="141" />
+<p>
+  En este ejemplo se demuestra la manera de almacenar datos, y de acceder a ellos, en un medio de almacenamiento cifrado por
+  dispositivo que esté siempre disponible mientras el dispositivo se haya iniciado.
+</p>
+<p>
+  <a href="https://github.com/googlesamples/android-DirectBoot">
+Obtener en GitHub</a>
+</p>
+
+<div style="clear: both;"></div>
+<h3 id="sda">Acceso a directorios determinados</h3>
+<img src="{@docRoot}preview/images/sample-scopeddirectoryaccess.png" style="float: left; padding-right: 0.5em" height="250" width="141" />
+<p>
+  En este ejemplo se demuestra la manera de leer y escribir datos de
+  directorios específicos y, al mismo tiempo, evitar más permisos.
+</p>
+<p>
+  <a href="https://github.com/googlesamples/android-ScopedDirectoryAccess">
+Obtener en GitHub</a>
+</p>
\ No newline at end of file
diff --git a/docs/html-intl/intl/es/preview/setup-sdk.jd b/docs/html-intl/intl/es/preview/setup-sdk.jd
new file mode 100644
index 0000000..4ccc4f8
--- /dev/null
+++ b/docs/html-intl/intl/es/preview/setup-sdk.jd
@@ -0,0 +1,226 @@
+page.title=Configuración de la Preview
+meta.keywords=“preview”, “Android”
+page.tags="preview", "developer preview"
+page.image=images/cards/card-n-sdk_2x.png
+
+@jd:body
+
+
+<div id="qv-wrapper">
+  <div id="qv">
+<ol>
+  <li><a href="#get-as13">Obtener Android Studio 2.1</a></li>
+  <li><a href="#get-sdk">Obtener el SDK de Android N</a>
+    <ol>
+      <li><a href="#docs-dl">Documentación de referencia</a>
+    </ol>
+  </li>
+  <li><a href="#java8">Obtener el JDK y JRE de Java 8</a></li>
+  <li><a href="#create-update">Actualizar o crear un proyecto</a></li>
+  <li><a href="#next">Próximos pasos</a></li>
+</ol>
+  </div>
+</div>
+
+<p>A fin de desarrollar aplicaciones para la Android N Preview, debes aplicar algunas actualizaciones
+a tu entorno de desarrollo, como se describe en esta página.</p>
+
+<p>Para solo probar la compatibilidad de tu aplicación en la
+imagen de sistema de Android N, sigue la guía de <a href="{@docRoot}preview/download.html">Prueba en un dispositivo Android N</a>.</p>
+
+<img src="{@docRoot}preview/images/n-preview-setup.png" width="700" alt="" />
+
+
+<h2 id="get-as13">Obtener Android Studio 2.1 (muestra)</h2>
+
+<p>La plataforma de Android N agrega compatibilidad para <a href="{@docRoot}preview/j8-jack.html">funciones de lenguaje de Java 8</a>,
+que requieren un nuevo compilador llamado Jack. La última versión de Jack
+actualmente solo es compatible con Android Studio 2.1. Por lo tanto, si deseas
+usar funciones de lenguaje de Java 8, debes usar Android Studio 2.1 para
+crear tu aplicación. De lo contrario, no necesitarás el compilador Jack, pero
+deberás aplicar una actualización a JDK 8 para compilar tu proyecto en función a la plataforma de Android N,
+según lo descrito a continuación.
+</p>
+
+<iframe width="400" height="225" src="//www.youtube.com/embed/SBbWGxXCMqQ?autohide=1&amp;showinfo=0" frameborder="0" allowfullscreen="" style="float: right; margin: 0 0 20px 20px;"></iframe>
+
+<p>Android Studio 2.1 actualmente se encuentra disponible como muestra en el canal de
+versiones Canary. Si ya
+cuentas con Android Studio y no deseas realizar la actualización al canal Canary, puedes
+descargar Android Studio 2.1 como una instalación independiente, usarlo
+para desarrollar aplicaciones con Android N y así dejar el entorno Android Studio
+inalterado.</p>
+
+<p>Para descargar Android Studio 2.1 como una instalación independiente, sigue estos
+pasos (si deseas recibir Android Studio 2.1 como una actualización a tu
+instalación existente, omite el paso 4):</p>
+
+<ol>
+  <li>Modifica el nombre de tu
+  instalación existente de Android Studio y anéxale el número de versión. De esta manera,
+  la versión nueva no reemplazará a la existente al instalarse.</li>
+  <li>Descarga el archivo .zip correspondiente para tu sistema operativo desde la
+    <a href="http://tools.android.com/download/studio/canary/latest">página de descarga del canal Canary</a>.
+  </li>
+  <li>Descomprime el paquete y mueve el contenido de Android Studio 2.1 a la ubicación
+    que corresponda para las aplicaciones de tu sistema. Luego inícialo.</li>
+  <li>Abre el cuadro de diálogo Settings
+    (<strong>File &gt; Settings</strong> en Windows y Linux, o
+    <strong>Android Studio &gt; Preferences</strong> en Mac). En el panel
+    izquierdo, selecciona <strong>Appearance &amp; Behavior &gt; System Settings &gt;
+    Updates</strong>.
+  </li>
+  <li>En el panel Updates, selecciona la casilla de verificación <strong>Automatically
+    check updates for</strong> y luego
+    <strong>Canary Channel</strong> en la lista desplegable.
+  </li>
+</ol>
+
+<p>Mantén esta ventana de configuración abierta para el paso siguiente.</p>
+
+
+<h2 id="get-sdk">Obtener el N Preview SDK</h2>
+
+<p>Para comenzar a desarrollar proyectos con las API de Android N, debes instalar el
+Android N Preview SDK en Android Studio de la siguiente manera:</p>
+
+<ol>
+  <li>Con el panel Updates aún a la vista (paso 4 anterior),
+  selecciona la casilla de verificación <strong>Automatically
+    check updates for Android SDK</strong> y luego
+    <strong>Preview Channel</strong> en la lista desplegable.
+  </li>
+  <li>Haz clic en <strong>Check Now</strong>.</li>
+
+  <li>En el panel izquierdo, selecciona <strong>Appearance &amp; Behavior &gt;
+  System Settings &gt; Android SDK</strong>.
+
+  <li>Haz clic en la pestaña <strong>SDK Platforms</strong> y luego selecciona la casilla de verificación
+  <strong>Android N Preview</strong>.</li>
+
+  <li>Haz clic en la pestaña <strong>SDK Tools</strong> y luego selecciona las casillas de verificación
+    <strong>Android SDK Build Tools</strong>, <strong>Android SDK
+    Platform-Tools</strong> y
+    <strong>Android SDK Tools</strong>.
+  </li>
+
+  <li>Haz clic en <strong>OK</strong> y acepta los acuerdos
+    de licencia para instalar cualquier paquete que se necesite.
+  </li>
+</ol>
+
+<h3 id="docs-dl">Obtener documentación de referencia de la Android N Preview</h3>
+
+<p>
+  En la documentación de referencia de la Android N Preview, se encuentra disponible información
+  detallada acerca de las API de Android N. Puedes descargar la documentación de la tabla siguiente.
+  Este paquete contiene una versión abreviada y de uso sin conexión del sitio web para desarrolladores
+  de Android, y en ella se incluyen una referencia de API actualizada para las API de Android N y un
+  informe de diferencia de API.
+</p>
+
+<table>
+  <tr>
+    <th scope="col">Documentación</th>
+    <th scope="col">Sumas de comprobación</th>
+  </tr>
+  <tr>
+    <td style="white-space: nowrap">
+    <a href="{@docRoot}shareables/preview/n-preview-1-docs.zip">n-preview-1-docs.zip</a></td>
+    <td width="100%">
+      MD5: 4ab33ccbe698f46f125cc5b807cf9c2f<br>
+      SHA-1: 6a3880b3ccd19614daae5a4d0698ea6ae11c20a5
+    </td>
+  </tr>
+<table>
+
+
+
+<h2 id="java8">Obtener el JDK y JRE de Java 8</h2>
+
+<p>Para compilar tu aplicación en función de la plataforma de Android N debes usar
+el Java 8 Developer Kit (JDK 8), y para usar algunas herramientas con Android
+Studio 2.1 debes instalar Java 8 Runtime Environment (JRE 8). Si
+aún no cuentas con la última versión de las dos herramientas, descarga JDK 8 y JRE 8
+ahora.</p>
+
+<p>Luego configura la versión de JDK en Android Studio de la siguiente manera:</p>
+
+<ol>
+  <li>Abre un proyecto de Android en Android Studio y luego el
+    cuadro de diálogo de estructura del proyecto seleccionando <strong>File &gt;
+        Project Structure</strong>. (Como alternativa, puedes fijar el valor predeterminado
+        para todos los proyectos seleccionando <strong>File &gt; Other Settings &gt;
+        Default Project Structure</strong>).
+   </li>
+   <li>En el panel izquierdo del cuadro de diálogo, haz clic en <strong>SDK Location</strong>.
+   </li>
+   <li>En el campo <strong>JDK Location</strong>, escribe la ubicación del
+    JDK de Java 8 (haz clic en el botón de la derecha
+    para explorar tus archivos) y luego haz clic en <strong>OK</strong>.
+   </li>
+</ol>
+
+<img src="{@docRoot}preview/images/studio-jdk-location.jpg" width="700" alt="" />
+
+
+<h2 id="create-update">Actualizar o crear un proyecto</h2>
+
+<p>
+  Para usar las API de Android N, debes configurar tu proyecto en forma correspondiente.
+</p>
+
+<p>Si planeas usar funciones del lenguaje Java 8, también debes leer
+<a href="{@docRoot}preview/j8-jack.html">Funciones del lenguaje Java 8</a>
+para obtener información sobre las funciones de Java 8 admitidas y
+la manera de configurar tu proyecto con el compilador Jack.</p>
+
+
+<h3 id="update">Actualizar un proyecto existente</h3>
+
+<p>Abre el archivo
+  <code>build.gradle</code> de tu módulo y actualiza los valores de la siguiente
+  manera:
+</p>
+
+<pre>
+android {
+  compileSdkVersion <strong>'android-N'</strong>
+  buildToolsVersion <strong>'24.0.0-rc1'</strong>
+  ...
+
+  defaultConfig {
+     minSdkVersion <strong>'N'</strong>
+     targetSdkVersion <strong>'N'</strong>
+     ...
+  }
+  ...
+}</pre>
+
+
+<h3 id="create">Crear un proyecto nuevo</h3>
+
+
+<p>Si deseas crear un proyecto nuevo para realizar desarrollos con el Android N Preview SDK:</p>
+
+<ol>
+  <li>Haz clic en <strong>File &gt; New Project</strong> y sigue los pasos correspondientes hasta
+  llegar a la página Target Android Devices.
+  </li>
+  <li>En la página, selecciona la opción <strong>Phone and Tablet</strong>.</li>
+  <li>En la opción <strong>Phone and Tablet</strong>, dentro de la lista de opciones <strong>Minimum
+    SDK</strong>, selecciona
+    <strong>N: Android API 23, N Preview (Preview)</strong>.</li>
+</ol>
+
+
+<h2 id="next">Próximos pasos</h2>
+
+<ul>
+  <li>Sigue la guía de <a href="{@docRoot}preview/download.html">Prueba en un dispositivo Android N</a>.</li>
+  <li>Para obtener más información sobre la plataforma de Android N, visita las secciones
+<a href="{@docRoot}preview/behavior-changes.html">Cambios en los comportamientos</a>
+y <a href="{@docRoot}preview/api-overview.html">API y funciones de Android N
+</a>.</li>
+</ul>
+
diff --git a/docs/html-intl/intl/in/preview/api-overview.jd b/docs/html-intl/intl/in/preview/api-overview.jd
new file mode 100644
index 0000000..26c539c
--- /dev/null
+++ b/docs/html-intl/intl/in/preview/api-overview.jd
@@ -0,0 +1,676 @@
+page.title=Android N untuk Pengembang
+meta.tags="preview", "androidn"
+page.tags="preview", "developer preview"
+page.image=images/cards/card-n-apis_2x.png
+@jd:body
+
+
+
+
+<div id="qv-wrapper">
+<div id="qv">
+  <h2>Fitur-fitur utama untuk pengembang</h2>
+  <ol>
+      <ul style="list-style-type:none;">
+        <li><a href="#multi-window_support">Dukungan multi-jendela</a></li>
+        <li><a href="#notification_enhancements">Pemberitahuan</a></li>
+        <li><a href="#jit_aot">Kompilasi JIT/AOT</a></li>
+        <li><a href="#quick_path_to_app_install">Jalur cepat untuk menginstal aplikasi</a></li>
+        <li><a href="#doze_on_the_go">Doze di perjalanan</a></li>
+        <li><a href="#background_optimizations">Optimisasi latar belakang</a></li>
+        <li><a href="#data_saver">Data Saver</a></li>
+        <li><a href="#tile_api">Quick Settings Tile API</a></li>
+        <li><a href="#number-blocking">Pemblokiran nomor</a></li>
+        <li><a href="#call_screening">Penyaringan panggilan</a></li>
+        <li><a href="#multi-locale_languages">Lokal dan bahasa</a></li>
+        <li><a href="#icu4">ICU4J API di Android</a></li>
+        <li><a href="#gles_32">OpenGL ES 3.2 API</a></li>
+        <li><a href="#android_tv_recording">Perekaman Android TV</a></li>
+        <li><a href="#android_for_work">Android for Work</a></li>
+        <li><a href="#accessibility_enhancements">Aksesibilitas</a></li>
+        <li><a href="#direct_boot">Direct Boot</a></li>
+        <li><a href="#key_attestation">Pengesahan Kunci</a></li>
+        <li><a href="#network_security_config">Network Security Config</a></li>
+        <li><a href="#default_trusted_ca">CA Tepercaya Default</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>
+      </ol>
+</div>
+</div>
+
+
+
+<p>Android N masih dalam pengembangan aktif, namun Anda bisa mencobanya
+sekarang sebagai bagian dari N Developer Preview. Bagian-bagian di bawah ini akan menyoroti sebagian dari
+fitur baru untuk pengembang. </p>
+
+<p>
+  Pastikan memeriksa <a href="{@docRoot}preview/behavior-changes.html">Perubahan Perilaku</a> untuk mengetahui selengkapnya tentang
+  bagian-bagian perubahan platform yang bisa memengaruhi aplikasi Anda, lihatlah
+  panduan pengembang untuk mengetahui selengkapnya tentang fitur-fitur utama, dan unduh <a href="{@docRoot}preview/setup-sdk.html#docs-dl">Referensi API</a> untuk mengetahui detail tentang
+  API baru.
+</p>
+
+<h2 id="multi-window_support">Dukungan multi-jendela</h2>
+
+
+<p>Di Android N, kami memperkenalkan fitur multitasking baru yang banyak diminta
+ke dalam platform &mdash; dukungan multi-jendela. </p>
+
+  <p>Pengguna sekarang bisa membuka dua aplikasi sekaligus di layar. </p>
+  <ul>
+  <li>Pada ponsel dan tablet
+yang menjalankan Android N, pengguna bisa menjalankan dua aplikasi secara berdampingan atau
+satu aplikasi di atas yang lain dalam mode layar terbagi. Pengguna bisa mengubah ukuran aplikasi dengan menyeret
+pembagi di antara keduanya. </li>
+
+<li>Pada perangkat Android TV, aplikasi bisa menempatkan dirinya sendiri dalam <a href="{@docRoot}preview/features/picture-in-picture.html">mode
+gambar-dalam-gambar</a>, sehingga aplikasi bisa terus menampilkan konten sementara pengguna menjelajahi atau
+berinteraksi dengan aplikasi lain. Lihat di bawah ini untuk informasi selengkapnya. </li>
+  </ul>
+
+<div class="col-4of10">
+<img src="{@docRoot}preview/images/mw-portrait.png" alt="" style="height:460px;padding-left:1em;" id="img-split-screen" />
+<p class="img-caption">
+  <strong>Gambar 1.</strong> Aplikasi yang dijalankan dalam mode layar terbagi.
+</p>
+  </div>
+
+<p>Terutama pada tablet dan perangkat yang berlayar lebih besar lainnya, dukungan multi-jendela
+memberi cara baru untuk memikat pengguna. Anda bahkan bisa mengaktifkan fitur seret-dan-letakkan dalam
+aplikasi Anda untuk memudahkan pengguna menyeret konten ke dan dari aplikasi Anda &mdash; cara yang bagus
+untuk menyempurnakan pengalaman pengguna. </p>
+
+<p>Tidak sulit menambahkan dukungan multi-jendela ke aplikasi Anda dan mengonfigurasi cara
+menangani tampilan multi-jendela. Misalnya, Anda bisa menetapkan dimensi
+minimum aktivitas, sehingga mencegah pengguna mengubah ukuran aktivitas di bawah
+ukuran itu. Anda juga bisa menonaktifkan tampilan multi-jendela untuk aplikasi Anda, yang
+  akan memastikan sistem hanya menampilkan aplikasi dalam mode layar penuh.</p>
+
+<p>
+  Untuk informasi selengkapnya, lihat dokumentasi pengembang <a href="{@docRoot}preview/features/multi-window.html">Dukungan Multi-Jendela</a>.
+
+</p>
+
+<h2 id="notification_enhancements">Penyempurnaan pemberitahuan</h2>
+
+<p>Di Android N kami telah mengubah desain pemberitahuan agar lebih mudah dan lebih cepat
+digunakan. Beberapa perubahan tersebut antara lain:</p>
+
+<ul>
+  <li>
+    <strong>Pembaruan template</strong>: Kami telah memperbarui template pemberitahuan untuk
+    lebih menekankan citra pahlawan dan avatar. Pengembang akan dapat
+   memanfaatkan template baru dengan penyesuaian kode yang minimal.
+  </li>
+
+  <li>
+    <strong>Bundel pemberitahuan</strong>: Sistem bisa mengelompokkan pesan,
+    misalnya menurut topik pesan, dan menampilkan kelompok tersebut. Pengguna bisa
+   mengambil tindakan, misalnya Dismiss atau Archive, atas kelompok pesan tersebut. Jika Anda telah
+    mengimplementasikan pemberitahuan untuk Android Wear, Anda tentu sudah terbiasa dengan
+    model ini.
+  </li>
+
+  <li>
+    <strong>Balasan langsung</strong>: Untuk aplikasi komunikasi real-time, sistem
+    Android mendukung balasan inline sehingga pengguna bisa membalas
+    SMS atau pesan teks secara langsung dari dalam antarmuka pemberitahuan.
+  </li>
+
+  <li>
+    <strong>Tampilan custom</strong>: Dua API baru memungkinkan Anda memanfaatkan dekorasi sistem,
+    misalnya header pemberitahuan dan tindakan, saat menggunakan tampilan
+    custom dalam pemberitahuan.
+  </li>
+</ul>
+
+<div class="col-4of12">
+  <img src="{@docRoot}preview/images/notifications-1.png" alt="" style="padding:.5em;max-width:226px">
+</div>
+
+<div class="col-4of12">
+  <img src="{@docRoot}preview/images/notifications-3.png" alt="" style="padding:.5em;max-width:226px">
+</div>
+
+<div class="col-4of12">
+  <img src="{@docRoot}preview/images/notifications-2.png" alt="" style="padding:.5em;max-width:226px">
+</div>
+
+
+<p class="img-caption">
+  <strong>Gambar 2.</strong> Bundel pemberitahuan dan balasan langsung.
+</p>
+
+<p>Untuk mengetahui cara mengimplementasikan fitur-fitur baru ini, lihat panduan 
+<a href="{@docRoot}preview/features/notification-updates.html">Pemberitahuan</a>.
+</p>
+
+
+
+<h2 id="jit_aot">Kompilasi JIT/AOT yang dipandu profil</h2>
+
+<p>Di Android N, kami telah menambahkan compiler Just in Time (JIT) dengan pembuatan profil kode ke
+ART, yang memungkinkannya terus meningkatkan kinerja aplikasi Android saat
+dijalankan. Compiler JIT melengkapi compiler Ahead of Time (AOT) pada ART
+dan membantu memperbaiki kinerja runtime, menghemat ruang penyimpanan, dan mempercepat
+pembaruan aplikasi serta pembaruan sistem.</p>
+
+<p>Kompilasi yang dipandu profil memungkinkan ART mengelola kompilasi AOT/JIT untuk setiap aplikasi
+sesuai dengan penggunaan sebenarnya, serta kondisi pada perangkat. Misalnya,
+ART menyimpan profil setiap metode terbaik aplikasi dan bisa melakukan kompilasi lebih awal
+serta menyimpan sementara metode-metode tersebut di cache untuk mendapatkan kinerja terbaik. Hal ini membuat bagian lain dari aplikasi
+dibiarkan tidak dikompilasi hingga benar-benar digunakan.</p>
+
+<p>Di samping meningkatkan kinerja bagian-bagian penting aplikasi, kompilasi yang dipandu profil
+membantu mengurangi footprint RAM keseluruhan aplikasi, termasuk biner
+terkait. Fitur ini terutama penting pada perangkat dengan memori minim.</p>
+
+<p>ART mengelola kompilasi yang dipandu profil dengan cara yang meminimalkan dampak terhadap baterai perangkat.
+ART melakukan prakompilasi hanya bila perangkat sedang diam dan
+mengisi daya, sehingga menghemat waktu dan baterai dengan melakukan pekerjaan tersebut di awal.</p>
+
+<h2 id="quick_path_to_app_install">Jalur cepat untuk menginstal aplikasi</h2>
+
+<p>Salah satu manfaat paling nyata dari compiler JIT pada ART adalah kecepatan instalasi aplikasi
+dan pembaruan sistem. Bahkan aplikasi besar yang tadinya perlu beberapa menit untuk
+dioptimalkan dan diinstal di Android 6.0 sekarang bisa diinstal hanya dalam hitungan
+detik. Pembaruan sistem juga lebih cepat, karena tidak ada lagi langkah pengoptimalan. </p>
+
+<h2 id="doze_on_the_go">Doze di perjalanan...</h2>
+
+<p>Android 6.0 memperkenalkan Doze, yaitu mode sistem yang menghemat baterai dengan menangguhkan
+aktivitas CPU dan jaringan di aplikasi bila perangkat sedang diam, misalnya saat
+diletakkan di atas meja atau dalam laci. </p>
+
+<p>Sekarang di Android N, Doze jauh lebih maju dan menghemat baterai saat di perjalanan.
+Setiap kali layar mati selama jangka waktu tertentu dan perangkat tidak terhubung ke sumber daya,
+Doze akan menerapkan subset pembatasan CPU dan jaringan yang sudah familier pada aplikasi.
+Ini berarti pengguna bisa menghemat daya baterai meskipun saat membawa perangkat mereka di
+saku.</p>
+
+
+<img src="/preview/images/doze-diagram-1.png" alt="" id="figure1" />
+<p class="img-caption">
+  <strong>Gambar 3.</strong> Doze sekarang menerapkan
+  pembatasan untuk meningkatkan daya tahan baterai bahkan saat perangkat sedang tidak diam.
+</p>
+
+
+<p>Tidak lama setelah layar mati saat perangkat menggunakan daya baterai, Doze
+akan membatasi akses jaringan serta menangguhkan pekerjaan dan sinkronisasi. Selama jeda
+pemeliharaan singkat, aplikasi diizinkan mengakses jaringan dan menjalankan semua
+pekerjaan/sinkronisasi yang ditangguhkan. Menyalakan layar atau menghubungkan perangkat ke listrik akan
+menutup Doze di perangkat.</p>
+
+<p>Bila perangkat dalam kondisi diam lagi, dengan layar mati dan menggunakan daya baterai selama
+jangka waktu tertentu, Doze akan menerapkkan pembatasan CPU dan jaringan pada {@link
+android.os.PowerManager.WakeLock}, alarm {@link android.app.AlarmManager}, dan
+pemindaian GPS/Wi-Fi.</p>
+
+<p>Praktik terbaik untuk menyesuaikan aplikasi Anda dengan Doze adalah sama, baik
+perangkat sedang bergerak maupun diam, jadi jika Anda sudah memperbarui aplikasi untuk
+menjalankan Doze dengan lancar, berarti Anda sudah siap. Jika belum, mulailah <a href="{@docRoot}training/monitoring-device-state/doze-standby.html#assessing_your_app">menyesuaikan
+aplikasi Anda dengan Doze</a> sekarang juga.</p>
+
+<h2 id="background_optimizations">Project Svelte: Optimisasi Latar Belakang</h2>
+
+<p>Project Svelte merupakan upaya berkelanjutan untuk meminimalkan penggunaan RAM oleh sistem dan aplikasi
+di semua jenis perangkat Android dalam ekosistem. Di Android N, Project
+Svelte berfokus pada optimisasi cara aplikasi berjalan di latar belakang. </p>
+
+<p>Pemrosesan latar belakang adalah bagian sangat penting pada sebagian besar aplikasi. Bila ditangani dengan benar, pemrosesan
+ini bisa membuat pengalaman pengguna jadi mengagumkan &mdash; segera, cepat, dan sesuai konteks.
+Bila tidak ditangani dengan benar, pemrosesan latar belakang bisa menguras RAM (dan
+baterai) dengan percuma serta memengaruhi kinerja sistem untuk aplikasi lainnya. </p>
+
+<p>Sejak Android 5.0, {@link android.app.job.JobScheduler} telah menjadi
+cara yang disukai untuk melakukan pekerjaan latar belakang dengan cara yang baik
+bagi pengguna. Aplikasi bisa menjadwalkan pekerjaan sekaligus memungkinkan sistem mengoptimalkan berdasarkan
+kondisi memori, daya, dan konektivitas. JobScheduler menawarkan kontrol serta
+kemudahan, dan kami ingin semua aplikasi menggunakannya. </p>
+
+<p>
+  Opsi baik lainnya adalah <a href="https://developers.google.com/android/reference/com/google/android/gms/gcm/GcmNetworkManager">
+  <code>GCMNetworkManager</code></a>, bagian dari Google Play Services, yang
+  menawarkan penjadwalan pekerjaan serupa dengan kompatibilitas pada semua versi lama
+  Android.
+</p>
+
+<p>Kami terus memperluas <code>JobScheduler</code> dan
+<code>GCMNetworkManager</code> untuk memenuhi lebih banyak
+ kasus penggunaan Anda &mdash; misalnya, di Android N Anda sekarang bisa menjadwalkan pekerjaan
+latar belakang berdasarkan perubahan di Penyedia Konten. Pada saat yang sama kami mulai
+menghilangkan beberapa pola lama yang bisa mengurangi kinerja sistem,
+terutama pada perangkat yang minim memori.</p>
+
+<p>Di Android N kami menghilangkan tiga siaran implisit yang umum digunakan &mdash;
+ {@link android.net.ConnectivityManager#CONNECTIVITY_ACTION}, {@link
+  android.hardware.Camera#ACTION_NEW_PICTURE}, dan {@link
+  android.hardware.Camera#ACTION_NEW_VIDEO} &mdash; karena ketiganya bisa mengaktifkan
+proses latar belakang pada beberapa aplikasi sekaligus serta menguras memori dan baterai. Jika
+aplikasi Anda menerimanya, manfaatkan N Developer Preview untuk
+  beralih ke <code>JobScheduler</code> dan API terkait sebagai gantinya. </p>
+
+<p>
+  Lihat dokumentasi <a href="{@docRoot}preview/features/background-optimization.html">Optimisasi
+  Latar Belakang</a> untuk mengetahui detailnya.
+</p>
+
+
+<h2 id="data_saver">Data Saver</h2>
+
+<div class="col-5of12" style="margin-right:1.5em;">
+<img src="{@docRoot}preview/images/datasaver.png" style="border:2px solid #ddd">
+
+<p class="img-caption" style="padding-right:2em;">
+  <strong>Gambar 4.</strong> Data Saver di Settings.
+</p>
+  </div>
+
+<p>Selama penggunaan perangkat seluler, biaya paket data seluler biasanya
+melebihi harga perangkat itu sendiri. Bagi banyak pengguna, adalah sumber daya
+mahal yang ingin mereka hemat. </p>
+
+<p>Android N memperkenalkan mode Data Saver, layanan sistem baru yang membantu mengurangi
+penggunaan data seluler oleh aplikasi, baik sedang roaming, mendekati siklus akhir penagihan,
+atau sedang menggunakan paket data prabayar yang kecil. Data Saver memberi pengguna kemampuan mengontrol cara aplikasi
+menggunakan data seluler dan memungkinkan pengembang untuk memberikan layanan yang efisien bila Data
+Saver sedang aktif. </p>
+
+<p>Bila pengguna mengaktifkan Data Saver di <strong>Settings</strong> dan perangkat
+dalam jaringan berkuota data, sistem akan memblokir penggunaan data latar belakang dan memberi tahu aplikasi
+untuk menghemat penggunaan data latar depan &mdash; misalnya dengan membatasi
+laju bit untuk streaming, mengurangi kualitas gambar, menangguhkan precaching optimistik,
+dan seterusnya. Pengguna bisa memasukkan aplikasi tertentu ke daftar putih untuk memungkinkan penggunaan data berkuota di latar belakang
+meskipun saat Data Saver diaktifkan.</p>
+
+<p>Android N menambah {@link android.net.ConnectivityManager} untuk menyediakan
+cara bagi aplikasi untuk <a href="{@docRoot}preview/features/data-saver.html#status">mengambil
+preferensi Data Saver</a> pengguna dan <a href="{@docRoot}preview/features/data-saver.html#monitor-changes">memantau
+perubahan preferensi</a>. Semua aplikasi harus memeriksa apakah pengguna telah mengaktifkan Data
+Saver dan melakukan upaya untuk membatasi penggunaan data di latar depan dan latar belakang.</p>
+
+
+<h2 id="tile_api">Quick Settings Tile API</h2>
+
+
+<div style="float:right;max-width:320px">
+<img src="{@docRoot}preview/images/quicksettings.png" style="padding-left:1.5em;">
+
+<p class="img-caption" style="padding-left:2em;">
+  <strong>Gambar 5.</strong> Petak Quick Settings dalam bayangan pemberitahuan.
+</p>
+
+
+  </div><p>Quick Settings adalah cara populer dan mudah untuk mengekspos pengaturan dan tindakan utama,
+langsung dari bayangan pemberitahuan. Di Android N, kami telah memperluas lingkup
+Quick Settings untuk membuatnya lebih berguna dan praktis lagi. </p>
+
+<p>Kami telah menambahkan ruang lebih banyak untuk petak Quick Settings tambahan, yang bisa
+diakses pengguna di semua bagian area halaman tampilan bernomor dengan mengusap ke kiri atau kanan. Kami juga menyediakan pengguna
+kontrol untuk mengatur letak dan petak Quick Settings apa yang akan
+ditampilkan &mdash; pengguna bisa menambahkan atau memindahkan petak dengan menyeret dan meletakkannya. </p>
+
+<p>Bagi pengembang, Android N juga menambahkan API baru yang memungkinkan Anda mendefinisikan
+  petak Quick Settings agar pengguna bisa dengan mudah mengakses kontrol kunci dan tindakan dalam aplikasi Anda.</p>
+
+<p>
+  Petak Quick Settings dicadangkan untuk kontrol atau tindakan yang
+  mendesak atau sering digunakan, dan tidak boleh digunakan sebagai pintasan untuk
+ membuka aplikasi.
+</p>
+
+<p>
+  Setelah mendefinisikan petak, Anda bisa menyediakannya kepada pengguna, yang bisa mereka tambahkan
+  ke Quick Settings cukup dengan menyeret dan meletakkannya.
+</p>
+
+<p>
+  Untuk informasi tentang pembuatan petak aplikasi, lihat
+  <code>android.service.quicksettings.Tile</code> dalam <a href="{@docRoot}preview/setup-sdk.html#docs-dl">Referensi API</a> yang bisa diunduh.
+</p>
+
+
+
+<h2 id="number-blocking">Pemblokiran nomor</h2>
+
+<p>Android N sekarang mendukung pemblokiran nomor di platform dan menyediakan
+API kerangka kerja agar penyedia layanan bisa mengelola daftar nomor blokir. Aplikasi
+SMS default, aplikasi telepon default, dan aplikasi penyedia layanan bisa membaca dari dan
+menulis ke daftar nomor blokir. Daftar ini tidak dapat diakses oleh aplikasi lain.</p>
+
+<p>Dengan membuat pemblokiran nomor sebagai fitur standar pada platformnya, Android menyediakan
+cara konsisten bagi aplikasi untuk mendukung pemblokiran nomor di berbagai
+perangkat. Manfaat lain yang bisa diperoleh aplikasi antara lain:</p>
+
+<ul>
+  <li> Nomor yang diblokir untuk panggilan juga akan diblokir untuk SMS
+  <li> Nomor yang diblokir tetap disimpan saat pengaturan ulang dan pada berbagai perangkat melalui fitur Backup &amp;
+Restore.
+  <li> Beberapa aplikasi sekaligus bisa menggunakan daftar nomor blokir yang sama.
+</ul>
+
+<p>Selain itu, dengan integrasi aplikasi operator melalui Android berarti operator bisa
+membaca daftar nomor blokir pada perangkat dan melakukan pemblokiran di sisi layanan
+bagi pengguna tersebut untuk menghentikan panggilan dan SMS yang tidak diinginkan
+agar tidak sampai ke pengguna lewat media apa pun, misalnya VOIP-endpoint atau meneruskan panggilan telepon.</p>
+
+<p>
+  Untuk informasi selengkapnya, lihat <code>android.provider.BlockedNumberContract</code>
+  dalam <a href="{@docRoot}preview/setup-sdk.html#docs-dl">Referensi
+  API</a> yang bisa diunduh.
+</p>
+
+<h2 id="call_screening">Penyaringan panggilan</h2>
+
+<p>
+  Android N memungkinkan aplikasi telepon default untuk menyaring panggilan masuk. Aplikasi
+  telepon melakukannya dengan mengimplementasikan <code>CallScreeningService</code> baru,
+  yang memungkinkan aplikasi telepon untuk melakukan sejumlah tindakan berdasarkan
+  {@link android.telecom.Call.Details Call.Details} panggilan masuk, misalnya:
+</p>
+
+<ul>
+  <li> Menolak panggilan masuk
+  <li> Tidak mengizinkan panggilan tersebut disimpan ke catatan panggilan
+  <li> Tidak menampilkan pemberitahuan untuk panggilan tersebut kepada pengguna
+</ul>
+
+<p>
+  Untuk informasi selengkapnya, lihat <code>android.telecom.CallScreeningService</code>
+  dalam <a href="{@docRoot}preview/setup-sdk.html#docs-dl">Referensi
+  API</a> yang bisa diunduh.
+</p>
+
+
+<h2 id="multi-locale_languages">Dukungan multilokal, lebih banyak bahasa yang didukung</h2>
+
+
+<p>Android N sekarang memungkinkan pengguna memilih <strong>multiple locales</strong> dalam Settings,
+untuk mendukung kasus penggunaan dua-bahasa secara lebih baik. Aplikasi bisa menggunakan
+API baru untuk mendapatkan lokal pilihan pengguna kemudian menawarkan pengalaman pengguna
+yang lebih canggih untuk pengguna multilokal &mdash; seperti menampilkan hasil pencarian dalam
+beberapa bahasa dan tidak menawarkan untuk menerjemahkan halaman web dalam bahasa
+yang sudah diketahui pengguna.</p>
+
+<p>Bersama dukungan multi-lokal, Android N juga memperluas ragam bahasa
+yang tersedia untuk pengguna. Masing-masing ditawarkan lebih dari 25 varian untuk bahasa yang umum
+digunakan seperti Inggris, Spanyol, Prancis, dan Arab. Juga ditambahkan dukungan
+parsial untuk lebih dari 100 bahasa baru.</p>
+
+<p>Aplikasi bisa mendapatkan daftar lokal yang diatur oleh pengguna dengan memanggil <code>LocaleList.GetDefault()</code>.  Untuk mendukung jumlah lokal yang diperluas, Android N sedang mengubah cara
+mengatasi masalah sumber daya. Pastikan Anda menguji dan memverifikasi bahwa aplikasi Anda
+berfungsi seperti yang diharapkan dengan logika resolusi sumber daya baru.</p>
+
+<p>Untuk mempelajari tentang perilaku resolusi sumber daya baru dan praktik terbaik yang
+harus Anda ikuti, lihat <a href="{@docRoot}preview/features/multilingual-support.html">Dukungan Multibahasa</a>.</p>
+
+<h2 id="icu4">ICU4J API di Android</h2>
+
+<p>
+  Android N saat ini menawarkan subset <a href="http://site.icu-project.org/">ICU4J</a> API dalam kerangka kerja Android pada
+  paket <code>android.icu</code>. Migrasinya mudah, dan kebanyakan hanya
+  perlu mengubah namespace <code>com.java.icu</code> menjadi
+  <code>android.icu</code>. Jika Anda sudah menggunakan bundel ICU4J dalam aplikasi
+  Anda, beralih ke <code>android.icu</code> API yang disediakan dalam kerangka kerja
+  Android bisa menghasilkan penghematan besar dalam ukuran APK.
+</p>
+
+<p>
+  Untuk mengetahui selengkapnya tentang Android ICU4J API, lihat <a href="{@docRoot}preview/features/icu4j-framework.html">Dukungan ICU4J</a>.
+</p>
+
+
+
+<h2 id="gles_32">OpenGL&trade; ES 3.2 API</h2>
+
+<p>Android N menambahkan antarmuka kerangka kerja dan dukungan platform untuk OpenGL ES 3.2, termasuk:</p>
+
+<ul>
+  <li> Semua ekstensi dari <a class="external-link" href="https://www.khronos.org/registry/gles/extensions/ANDROID/ANDROID_extension_pack_es31a.txt">Android Extension Pack</a></a> (AEP) kecuali untuk <code>EXT_texture_sRGB_decode</code>.
+  <li> Floating-point framebuffer untuk HDR dan shading yang ditangguhkan.
+  <li> Panggilan draw BaseVertex agar batching dan streaming jadi lebih baik.
+  <li> Kontrol akses buffer yang tangguh untuk mengurangi overhead WebGL.
+</ul>
+
+<p>Kerangka kerja API untuk OpenGL ES 3.2 pada Android N dilengkapi dengan kelas
+<code>GLES32</code>. Saat menggunakan OpenGL ES 3.2, pastikan Anda
+  mendeklarasikan persyaratan dalam file manifes, dengan tag <code>&lt;uses-feature&gt;</code> dan
+atribut <code>android:glEsVersion</code>. </p>
+
+<p>Untuk informasi tentang menggunakan OpenGL ES, termasuk cara memeriksa versi
+OpenGL ES yang didukung perangkat saat runtime, lihat <a href="{@docRoot}guide/topics/graphics/opengl.html">Panduan API OpenGL ES</a>.</p>
+
+
+<h2 id="android_tv_recording">Perekaman Android TV</h2>
+
+<p>Android N menambahkan kemampuan untuk merekam dan memutar kembali konten dari layanan input
+Android TV melalui API perekaman baru. Karena dibangun dengan API perekaman yang sudah
+ada, layanan input TV bisa mengontrol data saluran apa yang bisa direkam, cara menyimpan
+sesi rekaman, dan mengelola interaksi pengguna dengan konten rekaman. </p>
+
+<p>Untuk informasi selengkapnya, lihat <a href="{@docRoot}preview/features/tv-recording-api.html">API Perekaman Android TV</a>.</p>
+
+
+<h2 id="android_for_work">Android for Work</h2>
+
+<p>Android for Work menambahkan berbagai fitur dan API baru untuk perangkat yang menjalankan Android N.
+Beberapa fitur unggulannya ada di bawah ini &mdash; untuk mengetahui daftar lengkap pembaruan Android for Work
+yang terkait dengan Android N, lihat Perubahan Android for Work.</p>
+
+<h3 id="work_profile_security_challenge">Pertanyaan keamanan profil pekerjaan </h3>
+
+<p>
+  Pemilik profil bisa menetapkan pertanyaan keamanan terpisah untuk aplikasi yang berjalan dalam
+  profil pekerjaan. Pertanyaan pekerjaan ditampilkan bila pengguna berusaha membuka
+  aplikasi pekerjaan. Jawaban pertanyaan keamanan yang benar akan membuka
+  profil pekerjaan dan mendekripsinya jika diperlukan. Untuk pemilik profil,
+  <code>ACTION_SET_NEW_PASSWORD</code> akan meminta pengguna untuk menetapkan pertanyaan
+  pekerjaan, dan <code>ACTION_SET_NEW_PARENT_PROFILE_PASSWORD</code> meminta
+  pengguna untuk menetapkan kunci perangkat.
+</p>
+
+<p>
+  Pemilik profil bisa mengatur kebijakan kata sandi yang berbeda untuk pertanyaan pekerjaan
+  (seperti berapa lama PIN diperlukan, atau apakah sidik jari bisa digunakan
+  untuk membuka kunci profil) menggunakan <code>setPasswordQuality()</code>,
+  <code>setPasswordMinimumLength()</code> dan metode terkait. Pemilik
+  profil juga bisa menetapkan kunci perangkat menggunakan instance <code>DevicePolicyManager</code>
+  yang dikembalikan oleh metode <code>getParentProfileInstance()</code> baru.
+  Selain itu, pemilik profil bisa menyesuaikan layar kredensial untuk
+  pertanyaan pekerjaan dengan metode <code>setOrganizationColor()</code> dan
+  <code>setOrganizationName()</code> baru.
+</p>
+<h3 id="turn_off_work">Menonaktifkan pekerjaan </h3>
+
+<p>Pada perangkat dengan profil pekerjaan, pengguna bisa berganti-ganti mode pekerjaan. Bila mode pekerjaan
+dinonaktifkan maka pengguna yang dikelola untuk sementara akan dinonaktifkan, sehingga menonaktifkan aplikasi profil
+pekerjaan, sinkronisasi latar belakang, dan pemberitahuan. Ini termasuk aplikasi pemilik
+profil. Bila mode pekerjaan dinonaktifkan, sistem akan menampilkan ikon status menetap
+untuk mengingatkan pengguna bahwa mereka tidak bisa membuka aplikasi pekerjaan. Launcher
+akan menunjukkan bahwa aplikasi dan widget pekerjaan tidak bisa diakses. </p>
+
+<h3 id="always_on_vpn">Always on VPN </h3>
+
+<p>Pemilik perangkat dan pemilik profil bisa memastikan bahwa aplikasi pekerjaan selalu terhubung
+melalui VPN yang ditetapkan. Sistem secara otomatis akan memulai VPN itu setelah booting
+perangkat.</p>
+
+<p>
+  Metode <code>DevicePolicyManager</code> baru adalah
+  <code>setAlwaysOnVpnPackage()</code> dan
+  <code>getAlwaysOnVpnPackage()</code>.
+</p>
+
+<p>Karena layanan VPN bisa diikat langsung oleh sistem tanpa interaksi
+aplikasi, klien VPN perlu menangani titik masuk baru untuk Always on VPN. Seperti
+sebelumnya, layanan ditunjukkan ke sistem melalui
+tindakan pencocokan filter intent <code>android.net.VpnService</code>. </p>
+
+<p>
+  Pengguna bisa secara manual mengatur klien Always on VPN yang mengimplementasikan
+  metode <code>VPNService</code> dalam pengguna utama dengan menggunakan
+  <strong>Settings&gt;More&gt;Vpn</strong>.
+</p>
+
+<h2 id="accessibility_enhancements">Penyempurnaan aksesibilitas</h2>
+
+<p>Android N saat ini menawarkan Vision Settings langsung di layar Welcome untuk
+penyiapan perangkat baru. Ini sangat memudahkan pengguna untuk menemukan dan mengonfigurasi
+fitur aksesibilitas pada perangkat mereka, termasuk gerakan untuk memperbesar, ukuran
+font, ukuran layar, dan TalkBack. </p>
+
+<p>Dengan fitur aksesibilitas yang penempatannya semakin jelas, pengguna Anda
+kemungkinan besar akan mencoba aplikasi dengan fitur-fitur yang diaktifkan itu. Pastikan Anda menguji aplikasi
+lebih dini dengan mengaktifkan dahulu pengaturan fitur ini. Anda bisa mengaktifkannya dari Settings &gt;
+Accessibility.</p>
+
+<p>Di Android N, layanan aksesibilitas sekarang bisa membantu pengguna yang mengalami gangguan
+motorik untuk menyentuh layar. API baru memungkinkan membangun layanan dengan
+fitur-fitur seperti pelacakan wajah, pelacakan mata, pemindaian titik, dan seterusnya, untuk
+memenuhi kebutuhan para pengguna tersebut.</p>
+
+<p>Untuk informasi selengkapnya, lihat <code>android.accessibilityservice.GestureDescription</code>
+	dalam <a href="{@docRoot}preview/setup-sdk.html#docs-dl">Referensi API</a> yang bisa diunduh.</p>
+
+
+<h2 id="direct_boot">Direct Boot</h2>
+
+<p>Direct Boot memperbaiki waktu startup perangkat dan memungkinkan aplikasi
+yang telah didaftarkan memiliki fungsionalitas terbatas bahkan setelah reboot tak terduga.
+Misalnya, jika perangkat yang direnkripsi melakukan reboot selagi pengguna tidur,
+alarm terdaftar, pesan dan panggilan masuk sekarang bisa terus memberi tahu
+pengguna seperti biasa. Ini juga berarti layanan aksesibilitas bisa segera
+  tersedia setelah restart.</p>
+
+<p>Boot langsung memanfaatkan enkripsi berbasis file di Android N
+untuk mengaktifkan kebijakan enkripsi yang halus bagi sistem dan data aplikasi.
+Sistem akan menggunakan penyimpanan yang dienkripsi dengan perangkat untuk data sistem terpilih dan data
+aplikasi yang terdaftar secara eksplisit. Secara default, penyimpanan yang dienkripsi dengan kredensial digunakan untuk semua
+  data sistem lainnya, data pengguna, aplikasi, dan data aplikasi. </p>
+
+<p>Saat boot, sistem dimulai dalam mode terbatas dengan akses
+ke data yang dienkripsi dengan perangkat saja, dan tanpa akses umum ke aplikasi atau data.
+Jika Anda memiliki komponen yang ingin Anda jalankan dalam mode ini, Anda bisa mendaftarkannya
+dengan mengatur flag dalam manifes. Setelah restart, sistem akan mengaktifkan
+komponen terdaftar dengan menyiarkan intent <code>LOCKED_BOOT_COMPLETED</code>.
+Sistem akan memastikan data aplikasi yang dienkripsi dengan perangkat tersedia
+sebelum membuka kunci. Semua data lainnya tidak tersedia sebelum Pengguna mengonfirmasi kredensial
+  layar kunci mereka untuk mendekripsinya. </p>
+
+Untuk informasi selengkapnya, lihat <a href="{@docRoot}preview/features/direct-boot.html">Direct Boot</a>.</p>
+</p>
+
+
+<h2 id="key_attestation">Pengesahan Kunci</h2>
+
+<p>Keystore yang didukung perangkat keras menyediakan metode yang jauh lebih aman untuk membuat, menyimpan,
+dan menggunakan kunci kriptografi pada perangkat Android. Keystore itu melindungi kunci dari
+kernel Linux, potensi kerentanan Android, dan ekstraksi
+dari perangkat yang di-root.</p>
+
+<p>Agar lebih mudah dan lebih aman dalam menggunakan keystore yang didukung perangkat keras,
+Android N memperkenalkan Pengesahan Kunci. Aplikasi dan perangkat-nonaktif bisa menggunakan Pengesahan
+Kunci untuk menentukan apakah pasangan kunci RSA atau EC
+didukung perangkat keras, apa properti dari pasangan kunci, dan batasan
+  apa yang diterapkan terhadap penggunaan dan validitasnya. </p>
+
+<p>Aplikasi dan layanan perangkat-nonaktif bisa meminta informasi tentang pasangan kunci
+melalui sertifikat pengesahan X.509 yang harus ditandatangani dengan kunci
+pengesahan yang valid. Kunci pengesahan adalah kunci penandatangan ECDSA yang
+telah diinjeksikan ke dalam keystore yang didukung perangkat keras pada perangkat saat di pabriknya.
+Karena itu, sertifikat pengesahan yang ditandatangani oleh kunci pengesahan yang
+valid akan mengonfirmasi keberadaan keystore yang didukung perangkat keras, bersama
+  detail pasangan kunci dalam keystore itu.</p>
+
+<p>Untuk memastikan perangkat ini menggunakan citra Android resmi yang
+aman dari pabrik, Pengesahan Kunci mengharuskan <a class="external-link" href="https://source.android.com/security/verifiedboot/verified-boot.html#bootloader_requirements">bootloader</a> perangkat
+menyediakan informasi berikut kepada <a class="external-link" href="https://source.android.com/security/trusty/index.html">Trusted
+Execution Environment (TEE)</a>:</p>
+
+<ul>
+<li>Versi OS dan level patch yang diinstal pada perangkat</li>
+<li>Kunci publik <a href="https://source.android.com/security/verifiedboot/index.html" class="external-link">Verified Boot</a> dan status kunci</li>
+  </ul>
+
+<p>Untuk informasi selengkapnya tentang fitur keystore yang didukung perangkat keras,
+lihat panduan untuk <a href="https://source.android.com/security/keystore/" class="external-link">Keystore yang Didukung Perangkat Keras</a>.</p>
+
+<p>Selain Pengesahan Kunci, Android N juga memperkenalkan
+  kunci yang terikat sidik jari yang tidak dipanggil saat pendaftaran sidik jari.</p>
+
+<h2 id="network_security_config">Network Security Config</h2>
+
+<p>Di Android N, aplikasi bisa menyesuaikan perilaku koneksi aman mereka
+(HTTPS, TLS) secara aman, tanpa modifikasi kode, dengan menggunakan
+<em>Network Security Config</em> deklaratif sebagai ganti menggunakan API programatik
+konvensional yang rawan kesalahan (misalnya X509TrustManager).</p>
+
+  <p>Fitur yang didukung:</p>
+<ul>
+<li><b>Trust-anchor custom.</b> Memungkinkan aplikasi menyesuaikan Certificate
+Authorities (CA) mana yang dipercaya untuk koneksi aman. Misalnya,
+mempercayai sertifikat bertanda tangan sendiri tertentu atau serangkaian CA publik terbatas.
+</li>
+<li><b>Pengesampingan hanya-runut.</b> Memungkinkan pengembang aplikasi merunut
+koneksi aman aplikasi mereka secara aman tanpa menambah risiko terhadap basis yang sudah
+diinstal.
+</li>
+<li><b>Keluar dari lalu lintas cleartext.</b> Memungkinkan aplikasi melindungi dirinya sendiri dari
+penggunaan lalu lintas cleartext yang tidak disengaja.</li>
+<li><b>Penyematan sertifikat.</b> Sebuah fitur canggih yang memungkinkan aplikasi
+  membatasi kunci server mana yang dipercaya untuk koneksi aman.</li>
+</ul>
+
+<p>Untuk informasi selengkapnya, lihat <a href="{@docRoot}preview/features/security-config.html">Network Security
+Config</a>.</p>
+
+<h2 id="default_trusted_ca">Certificate Authority Tepercaya Default</h2>
+
+<p>Secara default, aplikasi yang menargetkan Android N hanya mempercayai sertifikat yang disediakan sistem
+dan tidak lagi mempercayai Certificate Authorities (CA) yang ditambahkan pengguna. Aplikasi yang menargetkan Android
+N dan ingin mempercayai CA yang ditambahkan pengguna harus menggunakan
+<a href="{@docRoot}preview/features/security-config.html">Network Security Config</a> untuk
+menetapkan cara mempercayai CA pengguna.</p>
+
+<h2 id="apk_signature_v2">APK Signature Scheme v2</h2>
+
+<p>Kelas PackageManager sekarang mendukung verifikasi aplikasi menggunakan 
+APK Signature Scheme v2. APK Signature Scheme v2 adalah skema tanda tangan seluruh file
+yang secara signifikan meningkatkan kecepatan verifikasi dan memperkuat jaminan
+  integritas dengan mendeteksi setiap perubahan tidak sah terhadap file APK.</p>
+
+<p>Untuk menjaga kompatibilitas mundur, APK harus ditandatangani dengan Signature Scheme
+v1 (skema tanda tangan JAR) sebelum ditandatangani dengan Signature Scheme v2.
+Dengan Signature Scheme v2, verifikasi akan gagal jika Anda menandatangani APK dengan
+  sertifikat tambahan setelah menandatangani dengan Signature Scheme v2. </p>
+
+<p>Dukungan APK Signature Scheme v2 akan tersedia nanti dalam N Developer
+Preview.</p>
+
+<h2 id="scoped_directory_access">Scoped Directory Access</h2>
+
+<p>Di Android N, aplikasi bisa menggunakan API baru untuk meminta akses ke direktori <a href="{@docRoot}guide/topics/data/data-storage.html#filesExternal">penyimpanan
+eksternal</a> tertentu, termasuk direktori di media lepas-pasang seperti kartu
+SD. API baru ini sangat menyederhanakan cara aplikasi Anda mengakses direktori
+penyimpanan eksternal standar, seperti direktori <code>Pictures</code>. Aplikasi
+seperti aplikasi foto bisa menggunakan API ini sebagai ganti menggunakan
+<code>READ_EXTERNAL_STORAGE</code>, yang memberikan akses ke semua direktori
+penyimpanan, atau Storage Access Framework, yang membuat pengguna mengarah ke
+direktori tersebut.</p>
+
+<p>Selain itu, API baru ini menyederhanakan langkah-langkah yang diambil pengguna untuk memberikan akses
+penyimpanan eksternal ke aplikasi Anda. Bila Anda menggunakan API baru, sistem akan menggunakan UI izin
+sederhana yang memperinci dengan jelas direktori apa yang aksesnya diminta
+oleh aplikasi.</p>
+
+<p>Untuk informasi selengkapnya, lihat dokumentasi pengembang 
+<a href="{@docRoot}preview/features/scoped-folder-access.html">Scoped
+Directory Access</a>.</p>
+
+
+
+
+
+
diff --git a/docs/html-intl/intl/in/preview/behavior-changes.jd b/docs/html-intl/intl/in/preview/behavior-changes.jd
new file mode 100644
index 0000000..40be38b
--- /dev/null
+++ b/docs/html-intl/intl/in/preview/behavior-changes.jd
@@ -0,0 +1,480 @@
+page.title=Perubahan Perilaku
+page.keywords=preview,sdk,compatibility
+meta.tags="preview", "kompatibilitas"
+page.tags="preview", "developer preview"
+page.image=images/cards/card-n-changes_2x.png
+@jd:body
+
+
+<div id="qv-wrapper">
+<div id="qv">
+
+<h2>Dalam dokumen ini</h2>
+
+<ol>
+  <li><a href="#perf">Peningkatan Kinerja</a>
+    <ol>
+      <li><a href="#doze">Doze</a></li>
+      <li><a href="#bg-opt">Optimisasi Latar Belakang</a></li>
+    </ol>
+  </li>
+  <li><a href="#perm">Perubahan Izin</a></li>
+  <li><a href="#accessibility">Peningkatan Aksesibilitas</a>
+    <ol>
+      <li><a href="#screen-zoom">Zoom Layar</a></li>
+      <li><a href="#vision-settings">Vision Settings di Setup Wizard</a></li>
+    </ol>
+  </li>
+  <li><a href="#ndk">Menautkan Aplikasi NDK ke Pustaka Platform</a></li>
+  <li><a href="#afw">Android for Work</a></li>
+</ol>
+
+<h2>Lihat Juga</h2>
+<ol>
+  <li><a href="{@docRoot}preview/api-overview.html">
+    Ikhtisar Android N API</a></li>
+</ol>
+
+</div>
+</div>
+
+
+<p>
+  Selain fitur dan kemampuan baru, Android N
+  juga menyertakan berbagai perubahan perilaku sistem dan API. Dokumen ini
+  menyoroti beberapa perubahan utama yang harus dipahami dan diperhitungkan
+  dalam aplikasi Anda.
+</p>
+
+<p>
+  Jika Anda sebelumnya telah mempublikasikan aplikasi untuk Android, ketahuilah bahwa aplikasi Anda
+  mungkin akan terpengaruh oleh perubahan dalam platform ini.
+</p>
+
+
+<h2 id="perf">Peningkatan Kinerja</h2>
+
+<p>
+  Android N berisi perubahan perilaku sistem yang bertujuan meningkatkan daya tahan
+  baterai perangkat, penggunaan RAM, dan kinerja aplikasi. Perubahan-perubahan ini bisa memengaruhi
+  ketersediaan sumber daya sistem dan pemberitahuan sistem bagi aplikasi. Anda
+  harus meninjau perubahan ini dan mengevaluasi cara menyesuaikan aplikasi Anda terhadap perubahan
+  tersebut.
+</p>
+
+<h3 id="doze">Doze</h3>
+
+<p>
+  Diperkenalkan dalam Android 6.0 (API level 23), Doze meningkatkan daya tahan baterai dengan
+  menangguhkan aktivitas CPU dan jaringan bila pengguna mencabut steker perangkat,
+  diam, dan layar dinonaktifkan. Android N
+  menyempurnakan Doze lebih jauh dengan menerapkan subset CPU dan pembatasan jaringan
+  bila perangkat dicabut stekernya dan layar dinonaktifkan, namun tidak harus
+  diam, misalnya, bila handset dibawa bepergian di saku pengguna.
+</p>
+
+
+<img src="{@docRoot}preview/images/doze-diagram-1.png" alt="" height="251px" id="figure1" />
+<p class="img-caption">
+  <strong>Gambar 1.</strong> Ilustrasi tentang cara Doze menerapkan pembatasan
+  aktivitas sistem tingkat pertama untuk meningkatkan daya tahan baterai.
+</p>
+
+<p>
+  Bila perangkat sedang menggunakan daya baterai, dan layar telah nonaktif selama jangka waktu
+  tertentu, perangkat akan memasuki Doze dan menerapkan pembatasan subset pertama: Perangkat
+  akan menutup akses jaringan aplikasi, serta menangguhkan pekerjaan dan sinkronisasi. Jika perangkat
+  sedang diam selama jangka waktu tertentu setelah memasuki Doze, sistem akan menerapkan pembatasan
+  Doze lainnya terhadap alarm {@link android.os.PowerManager.WakeLock},
+  {@link android.app.AlarmManager}, GPS, dan pemindaian Wi-Fi. Tidak peduli
+  apakah sebagian atau semua pembatasan Doze diterapkan, sistem akan membangunkan
+  perangkat selama jeda pemeliharaan singkat, dan selama itu aplikasi diizinkan
+  mengakses jaringan dan bisa mengeksekusi semua pekerjaan/sinkronisasi yang telah ditangguhkan.
+</p>
+
+
+<img src="{@docRoot}preview/images/doze-diagram-2.png" alt="" id="figure2" />
+<p class="img-caption">
+  <strong>Gambar 2.</strong> Ilustrasi tentang cara Doze menerapkan pembatasan
+  aktivitas sistem tingkat kedua setelah perangkat diam selama jangka waktu tertentu.
+</p>
+
+<p>
+  Perhatikan, mengaktifkan layar atau memasang steker perangkat akan menyebabkan keluar dari Doze dan
+  menghilangkan pembatasan pemrosesan ini. Perilaku tambahan ini tidak
+  memengaruhi rekomendasi dan praktik terbaik dalam menyesuaikan aplikasi Anda dengan versi
+  Doze sebelumnya yang diperkenalkan dalam Android 6.0 (API level 23), seperti yang dibahas di
+  <a href="{@docRoot}training/monitoring-device-state/doze-standby.html">
+  Mengoptimalkan untuk Doze dan App Standby</a>. Anda tetap harus
+  mengikuti rekomendasi itu, seperti menggunakan Google Cloud Messaging (GCM) untuk
+  mengirim dan menerima pesan, dan mulai merencanakan pembaruan untuk mengakomodasi
+  perilaku Doze tambahan.
+</p>
+
+
+<h3 id="bg-opt">Project Svelte: Optimisasi Latar Belakang</h3>
+
+<p>
+  Android N menghilangkan tiga siaran implisit untuk membantu mengoptimalkan
+  penggunaan memori dan konsumsi daya. Perubahan ini penting karena siaran
+  implisit sering memulai aplikasi yang telah didaftarkan untuk mendengarkannya di
+  latar belakang. Menghilangkan siaran ini bisa sangat menguntungkan kinerja perangkat dan pengalaman
+  pengguna.
+</p>
+
+<p>
+  Perangkat seluler sering mengalami perubahan konektivitas, seperti saat berpindah
+  antara Wi-Fi dan data seluler. Saat ini, aplikasi bisa memantau perubahan dalam
+  konektivitas dengan mendaftarkan suatu penerima untuk siaran implisit {@link
+  android.net.ConnectivityManager#CONNECTIVITY_ACTION} dalam manifes
+  mereka. Karena banyak aplikasi yang didaftarkan untuk menerima siaran ini, switch
+  jaringan tunggal bisa menyebabkan semuanya aktif dan memproses siaran tersebut
+  secara bersamaan.
+</p>
+
+<p>
+  Demikian pula, aplikasi bisa mendaftar untuk menerima siaran implisit {@link
+  android.hardware.Camera#ACTION_NEW_PICTURE} dan {@link
+  android.hardware.Camera#ACTION_NEW_VIDEO} dari aplikasi lain, seperti
+  Kamera. Bila pengguna mengambil gambar dengan aplikasi Kamera, semua aplikasi ini akan aktif
+  untuk memproses siaran.
+</p>
+
+<p>
+  Untuk meminimalkan masalah ini, Android N menerapkan optimisasi
+  berikut:
+</p>
+
+<ul>
+  <li>Aplikasi yang menargetkan Android N tidak menerima siaran {@link
+  android.net.ConnectivityManager#CONNECTIVITY_ACTION}, sekalipun
+  memiliki entri manifes untuk meminta pemberitahuan mengenai kejadian ini. Aplikasi yang berjalan
+  di latar depan tetap bisa mendengarkan {@code CONNECTIVITY_CHANGE} pada thread
+  utama jika meminta pemberitahuan dengan {@link
+  android.content.BroadcastReceiver}.
+  </li>
+
+  <li>Aplikasi tidak bisa mengirim atau menerima siaran {@link
+  android.hardware.Camera#ACTION_NEW_PICTURE} atau {@link
+  android.hardware.Camera#ACTION_NEW_VIDEO}. Optimisasi ini
+  memengaruhi semua aplikasi, bukan hanya yang menargetkan Android N.
+  </li>
+</ul>
+
+<p>
+  Rilis Android mendatang mungkin akan menghilangkan siaran implisit tambahan,
+  juga layanan latar belakang tak terikat. Karena itu, Anda harus menghindari atau
+  menghilangkan dependensi terhadap penerima yang dideklarasikan manifes untuk siaran implisit,
+  serta layanan latar belakang.
+</p>
+
+<p>
+  Kerangka kerja Android menyediakan beberapa solusi untuk mengurangi kebutuhan akan
+  siaran implisit atau layanan latar belakang ini. Misalnya, {@link
+  android.app.job.JobScheduler} API menyediakan mekanisme yang tangguh untuk menjadwalkan
+ operasi jaringan bila syarat yang ditetapkan terpenuhi, misalnya koneksi ke suatu
+ jaringan berbiaya tetap. Anda bahkan bisa menggunakan {@link
+  android.app.job.JobScheduler} untuk bereaksi terhadap perubahan kepada penyedia konten.
+</p>
+
+<p>
+  Untuk informasi selengkapnya tentang perubahan perilaku ini dan cara menyesuaikan aplikasi Anda,
+  lihat <a href="{@docRoot}preview/features/background-optimization.html">Optimalisasi
+  Latar Belakang</a>.
+</p>
+
+
+<h2 id="perm">Perubahan Izin</h2>
+
+<p>
+  Android N menyertakan perubahan pada izin yang bisa memengaruhi aplikasi Anda,
+  termasuk izin akun pengguna dan izin baru untuk menulis ke
+  penyimpanan eksternal. Inilah rangkuman izin-izin yang telah berubah dalam
+  preview:
+</p>
+
+<ul>
+  <li>{@code GET_ACCOUNTS} (Tidak digunakan lagi)
+    <p>
+      Izin GET_ACCOUNTS sekarang tidak digunakan lagi. Sistem mengabaikan izin ini
+ untuk aplikasi yang menargetkan Android N.
+    </p>
+  </li>
+
+</ul>
+
+
+
+<h2 id="accessibility">Peningkatan Aksesibilitas</h2>
+
+<p>
+  Android N menyertakan perubahan yang bertujuan meningkatkan kegunaan
+  platform ini untuk pengguna dengan penglihatan yang kurang atau lemah. Perubahan ini secara umum tidak
+  akan mengharuskan perubahan kode dalam aplikasi Anda, akan tetapi Anda harus meninjau
+  fitur ini dan mengujinya dengan aplikasi Anda untuk menilai dampak potensial terhadap pengalaman
+  pengguna.
+</p>
+
+
+<h3 id="screen-zoom">Zoom Layar</h3>
+
+<p>
+  Android N memungkinkan pengguna untuk mengatur <strong>Display size</strong> yang akan memperbesar
+  atau memperkecil semua elemen pada layar, sehingga meningkatkan aksesibilitas perangkat
+  bagi pengguna yang kurang melihat. Pengguna tidak bisa memperbesar layar melewati lebar layar
+  minimum <a href="http://developer.android.com/guide/topics/resources/providing-resources.html">
+  sw320dp</a>, yang merupakan lebar Nexus 4, yakni ponsel ukuran sedang pada umumnya.
+</p>
+
+<div class="cols">
+
+<div class="col-6">
+  <img src="{@docRoot}preview/images/screen-zoom-1.png" alt="" height="XXX" id="figure1" />
+</div>
+<div class="col-6">
+  <img src="{@docRoot}preview/images/screen-zoom-2.png" alt="" height="XXX" id="figure1" />
+</div>
+
+</div> <!-- end cols -->
+<p class="img-caption">
+  <strong>Gambar 3.</strong> Layar di sebelah kanan menampilkan efek
+ penambahan Display size perangkat yang menjalankan citra sistem Android N.
+</p>
+
+
+<p>
+  Bila densitas perangkat berubah, sistem akan memberi tahu aplikasi yang sedang berjalan dengan
+  cara berikut:
+</p>
+
+<ul>
+  <li>Jika aplikasi menargetkan API level 23 atau yang lebih rendah, sistem secara otomatis akan mematikan
+  semua proses latar belakang. Artinya, jika pengguna beralih dari
+ aplikasi tersebut untuk membuka layar <em>Settings</em> dan mengubah
+  pengaturan <strong>Display size</strong>, maka sistem akan mematikan aplikasi tersebut dengan cara yang
+  sama dengan saat memori tinggal sedikit. Jika aplikasi memiliki beberapa proses
+  latar depan, sistem akan memberi tahu proses tersebut mengenai perubahan konfigurasi seperti
+ dijelaskan dalam <a href="{@docRoot}guide/topics/resources/runtime-changes.html">Menangani Perubahan
+  Runtime</a>, seolah-olah orientasi perangkat telah berubah.
+  </li>
+
+  <li>Jika sebuah aplikasi menargetkan Android N, semua prosesnya
+ (latar depan dan latar belakang) akan diberi tahu mengenai perubahan konfigurasi seperti
+  dijelaskan dalam <a href="{@docRoot}guide/topics/resources/runtime-changes.html">Menangani Perubahan
+  Runtime</a>.
+  </li>
+</ul>
+
+<p>
+  Sebagian besar aplikasi tidak perlu melakukan perubahan untuk mendukung fitur ini, asalkan
+  aplikasi tersebut mengikuti praktik terbaik Android. Hal-hal tertentu yang harus diperiksa:
+</p>
+
+<ul>
+  <li>Uji aplikasi Anda pada perangkat dengan lebar layar <code><a href=
+  "{@docRoot}guide/topics/resources/providing-resources.html">sw320dp</a></code>
+  dan pastikan aplikasinya berjalan dengan semestinya.
+  </li>
+
+  <li>Bila konfigurasi perangkat berubah, perbarui informasi cache
+  yang bergantung pada densitas, seperti bitmap di cache atau sumber daya yang dimuat dari
+  jaringan. Periksa perubahan konfigurasi bila aplikasi melanjutkan dari status dihentikan
+  sementara.
+    <p class="note">
+      <strong>Catatan:</strong> Jika Anda menyimpan sementara data yang bergantung pada konfigurasi, ada
+      baiknya untuk menyertakan metadata yang relevan seperti ukuran layar
+      atau densitas piksel yang sesuai untuk data tersebut. Menyimpan metadata ini memungkinkan Anda untuk
+      memutuskan apakah Anda perlu memperbarui data cache setelah perubahan
+      konfigurasi.
+    </p>
+  </li>
+
+  <li>Hindari menetapkan dimensi dengan satuan px, karena satuan ini tidak diskalakan dengan
+  densitas layar. Sebagai gantinya, tetapkan dimensi dengan satuan <a href="{@docRoot}guide/practices/screens_support.html">piksel yang tidak bergantung densitas
+  </a> (<code>dp</code>).
+  </li>
+</ul>
+
+<h3 id="vision-settings">Vision Settings di Setup Wizard</h3>
+
+<p>
+  Android N menyertakan Vision Settings pada layar Welcome, di mana pengguna bisa
+ menyiapkan pengaturan aksesibilitas berikut pada perangkat baru:
+  <strong>Magnification gesture</strong>, <strong>Font size</strong>,
+  <strong>Display size</strong> dan <strong>TalkBack</strong>. Perubahan ini
+  menambah visibilitas bug yang terkait dengan berbagai pengaturan layar. Untuk
+  menilai dampak dari fitur ini, Anda harus menguji aplikasi dengan mengaktifkan
+  pengaturan ini. Anda bisa menemukan pengaturan ini pada <strong>Settings &gt;
+  Accessibility</strong>.
+</p>
+
+<h2 id="ndk">Menautkan Aplikasi NDK ke Pustaka Platform</h2>
+
+<p>
+  Android N menyertakan perubahan namespace untuk mencegah pemuatan API non-publik.
+  Jika Anda menggunakan NDK, Anda hanya bisa menggunakan API publik dari platform
+  Android. Menggunakan API non-publik dalam rilis Android resmi berikutnya
+  bisa menyebabkan aplikasi mengalami crash.
+</p>
+
+<p>
+  Untuk memperingatkan Anda terhadap penggunaan API non-publik, aplikasi yang berjalan pada perangkat
+  Android N akan menghasilkan kesalahan output logcat bila sebuah aplikasi memanggil API non-publik.
+  Kesalahan ini juga ditampilkan pada layar perangkat berupa pesan untuk membantu
+  meningkatkan kesadaran akan situasi ini. Anda harus meninjau kode aplikasi untuk
+  menghilangkan penggunaan API platform non-publik dan secara saksama menguji aplikasi Anda menggunakan
+  perangkat preview atau emulator.
+</p>
+
+<p>
+  Jika aplikasi Anda bergantung pada pustaka platform, lihat dokumentasi NDK untuk
+  perbaikan tipikal guna menggantikan API privat umum dengan padanan API publik.
+  Anda mungkin juga menautkan ke pustaka platform tanpa menyadarinya,
+  terutama jika aplikasi Anda menggunakan pustaka yang merupakan bagian dari platform ini (seperti
+  <code>libpng</code>), namun bukan bagian dari NDK. Dalam hal ini, pastikan
+  APK Anda berisi semua file .so yang ingin ditautkan.
+</p>
+
+<p class="caution">
+  <strong>Peringatan:</strong> Beberapa pustaka pihak ketiga mungkin menautkan ke API
+  non-publik. Jika aplikasi Anda menggunakan pustaka ini, aplikasi Anda mungkin akan crash saat dijalankan
+  pada rilis resmi Android berikutnya.
+</p>
+
+<p>
+  Aplikasi tidak boleh bergantung pada atau menggunakan pustaka bawaan yang tidak disertakan dalam
+  NDK, karena bisa mengalami perubahan, atau dipindahkan dari satu rilis Android ke
+  rilis lainnya. Peralihan dari OpenSSL ke BoringSSL merupakan satu contoh dari perubahan semacam ini.
+  Selain itu, perbedaan perangkat juga bisa menawarkan tingkat kompatibilitas, karena
+  tidak ada persyaratan kompatibilitas bagi pustaka platform yang tidak disertakan
+  dalam NDK. Jika Anda harus mengakses pustaka non-NDK pada perangkat yang lebih lama, jadikan
+  pemuatan bergantung pada level API Android.
+</p>
+
+<p>
+  Untuk membantu Anda mendiagnosis tipe masalah ini ada beberapa contoh kesalahan Java dan NDK
+  yang mungkin Anda temui saat berusaha membangun aplikasi dengan Android N:
+</p>
+
+<p>Contoh kesalahan Java:</p>
+<pre class="no-pretty-print">
+java.lang.UnsatisfiedLinkError: dlopen failed: library "/system/lib/libcutils.so"
+    is not accessible for the namespace "classloader-namespace"
+</pre>
+
+<p>Contoh kesalahan NDK:</p>
+<pre class="no-pretty-print">
+dlopen failed: cannot locate symbol "__system_property_get" referenced by ...
+</pre>
+
+
+<p>
+  Inilah beberapa perbaikan tipikal untuk aplikasi yang mengalami tipe kesalahan ini:
+</p>
+
+<ul>
+  <li>Penggunaan getJavaVM dan getJNIEnv dari libandroid_runtime.so bisa diganti
+  dengan fungsi JNI standar:
+<pre class="no-pretty-print">
+AndroidRuntime::getJavaVM -&gt; GetJavaVM from &lt;jni.h&gt;
+AndroidRuntime::getJNIEnv -&gt; JavaVM::GetEnv or
+JavaVM::AttachCurrentThread from &lt;jni.h&gt;.
+</pre>
+  </li>
+
+  <li>Penggunaan simbol {@code property_get} dari {@code libcutils.so} bisa
+    diganti dengan {@code __system_property_get} alternatif publik.
+   Caranya, gunakan {@code __system_property_get} dengan include berikut:
+<pre>
+#include &lt;sys/system_properties.h&gt;
+</pre>
+  </li>
+
+  <li>Penggunaan simbol {@code SSL_ctrl} dari {@code libcrypto.so} harus
+  diganti dengan aplikasi versi lokal. Misalnya, Anda harus menautkan
+  {@code libcyrpto.a} secara statis dalam file {@code .so} atau menyertakan
+  {@code libcrypto.so} Anda sendiri secara dinamis dari BoringSSL atau OpenSSL dalam aplikasi Anda.
+  </li>
+</ul>
+
+<h2 id="afw">Android for Work</h2>
+<p>
+  Android N berisi perubahan untuk aplikasi yang menargetkan Android for Work, termasuk
+  perubahan pada instalasi sertifikat, pengaturan ulang kata sandi, manajemen pengguna
+  tambahan, dan akses ke identifier perangkat. Jika Anda membangun aplikasi untuk
+  lingkungan Android for Work, Anda harus meninjau perubahan ini dan memodifikasi
+  aplikasi sebagaimana mestinya.
+</p>
+
+<ul>
+  <li>Anda harus menginstal penginstal sertifikat yang didelegasikan sebelum DPC bisa
+  mengaturnya. Untuk profil dan aplikasi pemilik perangkat yang menargetkan N SDK, Anda harus
+  menginstal penginstal sertifikat yang didelegasikan sebelum pengontrol kebijakan
+  perangkat (DPC) memanggil
+  <code>DevicePolicyManager.setCertInstallerPackage()</code>. Jika penginstal
+  belum diinstal, sistem akan melontarkan
+  <code>IllegalArgumentException</code>.
+  </li>
+
+  <li>Pembatasan pengaturan ulang kata sandi untuk admin perangkat sekarang diterapkan kepada pemilik
+  profil. Admin perangkat tidak bisa lagi menggunakan
+  <code>DevicePolicyManager.resetPassword()</code> untuk menghapus kata sandi atau mengubah
+  kata sandi yang sudah ditetapkan. Admin perangkat tetap bisa menetapkan kata sandi, namun hanya
+  bila perangkat belum memiliki kata sandi, PIN, atau pola.
+  </li>
+
+  <li>Pemilik perangkat dan profil bisa mengelola akun meskipun pembatasan
+  ditetapkan. Pemilik perangkat dan pemilik profil bisa memanggil Account Management API
+  sekalipun pembatasan pengguna <code>DISALLOW_MODIFY_ACCOUNTS</code> diberlakukan.
+  </li>
+
+  <li>Pemilik perangkat bisa mengelola pengguna tambahan dengan lebih mudah. bila perangkat
+  dijalankan dalam mode pemilik perangkat, pembatasan <code>DISALLOW_ADD_USER</code> 
+  secara otomatis ditetapkan. Ini mencegah pengguna membuat pengguna tambahan yang
+  tidak terkelola. Selain itu, metode <code>CreateUser()</code> dan
+  <code>createAndInitial()</code> tidak digunakan lagi; metode
+  <code>DevicePolicyManager.createAndManageUser()</code> baru telah menggantikannya.
+  </li>
+
+  <li>Pemilik perangkat bisa mengakses identifier perangkat. Pemilik perangkat bisa mengakses
+  alamat MAC Wi-Fi dari sebuah perangkat, menggunakan
+  <code>DevicePolicyManagewr.getWifiMacAddress()</code>. Jika Wi-Fi belum pernah
+  diaktifkan pada perangkat tersebut, metode ini akan mengembalikan nilai {@code null}.
+  </li>
+</ul>
+
+<p>
+  Untuk informasi selengkapnya tentang perubahan pada Android for Work di Android N, lihat
+  <a href="{@docRoot}preview/features/afw.html">Pembaruan Android for Work</a>.
+</p>
+
+<h2 id="other">Poin penting lainnya</h2>
+
+<ul>
+<li>Bila aplikasi berjalan pada Android N, namun menargetkan level API yang lebih rendah,
+dan pengguna mengubah ukuran tampilan, proses aplikasi akan dimatikan. Aplikasi
+harus dapat menangani skenario ini dengan lancar. Jika tidak, maka akan terjadi crash
+bila pengguna memulihkannya dari Recents.
+
+<p>
+Anda harus menguji aplikasi untuk memastikan
+perilaku ini tidak terjadi.
+Anda bisa melakukannya dengan menyebabkan suatu crash yang mirip
+saat mematikan aplikasi secara manual melalui DDMS.
+</p>
+
+<p>
+Aplikasi yang menargetkan N dan yang di atasnya tidak secara otomatis dimatikan saat perubahan densitas;
+akan tetapi, aplikasi tersebut mungkin tetap merespons perubahan konfigurasi dengan buruk.
+</p>
+</li>
+
+<li>
+Aplikasi pada Android N harus mampu menangani perubahan konfigurasi dengan lancar,
+dan tidak boleh mengalami crash pada start selanjutnya. Anda bisa memverifikasi perilaku aplikasi
+dengan mengubah ukuran font (<strong>Setting</strong> &gt;
+<strong>Display</strong> &gt; <strong>Font size</strong>), kemudian memulihkan
+aplikasi dari Recents.
+</li>
+</ul>
+
diff --git a/docs/html-intl/intl/in/preview/download.jd b/docs/html-intl/intl/in/preview/download.jd
new file mode 100644
index 0000000..565ed90
--- /dev/null
+++ b/docs/html-intl/intl/in/preview/download.jd
@@ -0,0 +1,541 @@
+page.title=Menguji pada Perangkat
+meta.tags="preview", "nexus","citra sistem"
+page.tags="preview", "androidn"
+page.image=images/cards/card-n-downloads_2x.png
+
+@jd:body
+
+<div style="position:relative; min-height:600px">
+
+  <div class="wrap" id="tos" style="position:absolute;display:none;width:inherit;">
+
+    <p class="sdk-terms-intro">Sebelum mengunduh dan menginstal
+      komponen Android Preview SDK, Anda harus menyetujui ketentuan dan persyaratan
+    berikut.</p>
+
+    <h2 class="norule">Ketentuan dan Persyaratan</h2>
+
+    <div class="sdk-terms" onfocus="this.blur()" style="width:678px">
+Ini adalah Perjanjian Lisensi Android SDK Preview ("Perjanjian Lisensi").
+
+1. Pengantar
+
+1.1 Android SDK Preview (dalam Perjanjian Lisensi ini disebut "Preview" dan secara spesifik termasuk file sistem Android, paket API, dan file pustaka Preview, jika disediakan) diberikan lisensinya kepada Anda sesuai dengan ketentuan Perjanjian Lisensi. The License Agreement forms a legally binding contract between you and Google in Perjanjian Lisensi ini merupakan kontrak yang mengikat secara hukum antara Anda dan dalam kaitannya dengan penggunaan Anda atas Preview.
+
+1.2 "Android" berarti sekumpulan perangkat lunak Android untuk perangkat, seperti yang tersedia pada Android Open Source Project, yang ada di URL berikut: http://source.android.com/, yang selalu diperbarui.
+
+1.3 “Kompatibel denganAndroid” berarti segala implementasi Android yang (i) sesuai dengan Android Compatibility Definition Document, yang bisa ditemukan di situs web kompatibilitas Android (http://source.android.com/compatibility) dan yang selalu diperbarui; serta (ii) berhasil lulus Android Compatibility Test Suite (CTS).
+
+1.4 "Google" berarti Google Inc., perusahaan asal Delaware dengan kantor bisnis utama di 1600 Amphitheatre Parkway, Mountain View, CA 94043, United States.
+
+2. Menerima Perjanjian Lisensi
+
+2.1 Agar bisa menggunakan Preview, Anda terlebih dahulu harus menyetujui Perjanjian Lisensi ini. Anda tidak boleh menggunakan SDK jika tidak menerima Perjanjian Lisensi.
+
+2.2 Dengan mengklik untuk menerima dan/atau menggunakan Preview, berarti Anda menyetujui ketentuan Perjanjian Lisensi.
+
+2.3 Anda tidak boleh menggunakan Preview dan tidak boleh menerima Perjanjian Lisensi jika Anda adalah orang yang dilarang menerima Preview berdasarkan hukum Amerika Serikat atau negara lainnya termasuk negara di mana Anda tinggal atau dari mana Anda menggunakan Preview.
+
+2.4 Jika Anda akan menggunakan Preview di lingkungan perusahaan atau organisasi Anda, berarti Anda setuju untuk terikat oleh Perjanjian Lisensi atas nama perusahaan Anda atau entitas lainnya, serta Anda mewakili dan menjamin bahwa Anda memiliki kewenangan hukum penuh untuk mengikat perusahaan Anda atau entitas tersebut pada Perjanjian Lisensi ini. Jika Anda tidak memiliki kewenangan yang disyaratkan, Anda tidak boleh menerima Perjanjian Lisensi atau menggunakan Preview atas nama perusahaan Anda atau entitas lainnya.
+
+3. Lisensi Preview dari Google
+
+3.1 Sesuai dengan ketentuan Perjanjian Lisensi ini, Google memberi Anda lisensi terbatas, bersifat global, bebas royalti, tidak bisa dialihkan, non-eksklusif, dan tidak bisa disublisensikan untuk menggunakan Preview hanya untuk mengembangkan aplikasi bagi implementasi Android yang kompatibel.
+
+3.2 Anda tidak boleh menggunakan Preview ini untuk mengembangkan aplikasi bagi platform lain (termasuk implementasi Android yang tidak kompatibel) atau untuk mengembangkan SDK lain. Tentu saja Anda bebas mengembangkan aplikasi bagi platform lainnya, termasuk implementasi Android yang tidak kompatibel, asalkan Preview ini tidak digunakan untuk keperluan itu.
+
+3.3 Anda setuju bahwa Google atau pihak ketiga memiliki semua hak, kuasa dan kepentingan hukum dalam dan pada Preview, termasuk Hak Kekayaan Intelektual yang terdapat dalam Preview. "Hak Kekayaan Intelektual" berarti setiap dan semua hak yang berdasarkan pada hukum paten, hukum hak cipta, hukum rahasia dagang, hukum merek dagang, dan setiap dan semua hak kepemilikan lainnya. Google memiliki semua hak yang tidak secara tersurat diberikan kepada Anda.
+
+3.4 Anda tidak boleh menggunakan Preview untuk tujuan apa pun yang tidak secara tersurat diizinkan oleh Perjanjian Lisensi. Kecuali sejauh yang diperlukan oleh lisensi pihak ketiga yang berlaku, Anda tidak boleh: (a) menyalin (kecuali untuk keperluan pencadangan), memodifikasi, mengadaptasi, mendistribusikan kembali, mendekompilasi, merekayasa balik, membongkar atau membuat karya turunan dari Preview atau bagian apa pun dari Preview; atau (b) memuat bagian apa pun dari Preview ke sebuah handset ponsel atau perangkat keras selain komputer pribadi, menggabungkan suatu bagian dari Preview dengan perangkat lunak lain, atau mendistribusikan perangkat lunak atau perangkat yang menggabungkan suatu bagian dari Preview.
+
+3.5 Penggunaan, reproduksi dan distribusi komponen Preview yang berlisensi perangkat lunak sumber terbuka diatur semata-mata oleh ketentuan lisensi perangkat lunak sumber terbuka tersebut dan bukan oleh Perjanjian Lisensi ini. Anda menyetujui bagian selebihnya dari lisensi dengan maksud baik sehubungan dengan lisensi perangkat lunak sumber terbuka tersebut sesuai dengan semua hak yang diberikan dan untuk menahan diri dari segala tindakan yang mungkin akan mengakhiri, menangguhkan, atau melanggar hak tersebut.
+
+3.6 Anda setuju bahwa bentuk dan sifat Preview yang disediakan oleh Google dapat berubah tanpa pemberitahuan sebelumnya kepada Anda dan bahwa versi Preview mendatang mungkin tidak kompatibel dengan aplikasi yang dikembangkan di versi Preview sebelumnya. Anda setuju bahwa Google boleh menghentikan (secara permanen atau sementara) penyediaan Preview (atau fitur apa pun dalam Preview) kepada Anda atau pengguna pada umumnya atas kebijakan Google semata, tanpa pemberitahuan sebelumnya kepada Anda.
+
+3.7 Perjanjian Lisensi ini tidak memberi Anda hak untuk menggunakan nama dagang, merek dagang, merek layanan, logo, nama domain, atau fitur merek khas Google lainnya.
+
+3.8 Anda setuju bahwa Anda tidak akan menghapus, mengaburkan, atau mengubah pernyataan hak kepemilikan apa pun (termasuk pemberitahuan hak cipta dan merek dagang) yang terlampir atau termuat dalam Preview.
+
+4. Penggunaan Preview oleh Anda
+
+4.1 Google setuju bahwa tidak ada dalam Perjanjian Lisensi ini yang memberi Google suatu hak, kuasa atau kepentingan dari Anda (atau pemberi lisensi Anda) berdasarkan Perjanjian Lisensi ini dalam atau pada aplikasi perangkat lunak apa pun yang Anda kembangkan menggunakan Preview, termasuk hak kekayaan intelektual yang terdapat dalam aplikasi tersebut.
+
+4.2 Anda setuju untuk menggunakan Preview dan mengembangkan aplikasi hanya untuk tujuan yang diizinkan oleh (a) Perjanjian Lisensi ini dan (b) hukum yang berlaku, peraturan atau praktik atau panduan yang diterima secara umum di yurisdiksi yang relevan (termasuk hukum mengenai ekspor data atau perangkat lunak ke dan dari Amerika Serikat atau negara lain yang relevan).
+
+4.3 Anda setuju bahwa jika Anda menggunakan Preview untuk mengembangkan aplikasi, Anda akan melindungi privasi dan hak hukum penggunanya. Jika pengguna memberikan nama pengguna, kata sandi, atau informasi login atau informasi pribadinya lainnya, Anda harus membuat pengguna tersebut menyadari bahwa informasi tersebut akan bisa digunakan oleh aplikasi Anda, dan Anda harus memberikan perlindungan dan pemberitahuan privasi yang memadai secara hukum bagi pengguna tersebut. Jika aplikasi Anda menyimpan informasi pribadi atau sensitif yang diberikan oleh pengguna, aplikasi Anda harus melakukannya dengan aman. Jika pengguna memberikan informasi Akun Google, aplikasi Anda hanya boleh menggunakan informasi tersebut untuk mengakses Akun Google pengguna tersebut bila, dan untuk tujuan terbatas di mana, setiap pengguna telah memberikan izin kepada Anda untuk melakukannya.
+
+4.4 Anda setuju bahwa Anda tidak akan terlibat dalam aktivitas apa pun dengan Preview, termasuk pengembangan atau distribusi aplikasi yang mengganggu, mengacaukan, merusak, atau mengakses secara tidak sah server, jaringan atau properti atau layanan pihak ketiga lainnya dari Google atau pihak ketiga.
+
+4.5 Anda setuju untuk bertanggung jawab penuh terhadap (dan bahwa Google tidak bertanggung jawab terhadap Anda atau pihak ketiga untuk) data, konten, atau sumber daya apa pun yang Anda buat, kirimkan atau tampilkan melalui Android dan/atau aplikasi untuk Android, dan terhadap konsekuensi tindakan Anda (termasuk kerugian atau kerusakan apa pun yang mungkin dialami Google) karena melakukannya.
+
+4.6 Anda setuju bertanggung jawab penuh terhadap (dan bahwa Google tidak bertanggung jawab terhadap Anda atau pihak ketiga lainnya untuk) pelanggaran kewajiban Anda berdasarkan Perjanjian Lisensi ini, kontrak pihak ketiga yang berlaku atau Ketentuan Layanan, atau hukum atau peraturan yang berlaku, dan terhadap konsekuensi (termasuk kerugian atau kerusakan yang mungkin dialami Google atau pihak ketiga) akibat pelanggaran tersebut.
+
+4.7 Preview sedang dalam pengembangan, dan pengujian serta umpan balik Anda merupakan bagian penting dari proses pengembangan ini. Dengan menggunakan Preview, Anda mengakui bahwa implementasi sebagian fitur masih dalam tahap pengembangan dan bahwa Anda tidak akan berharap bahwa Preview memiliki fungsionalitas penuh rilis stabil. Anda setuju untuk tidak mendistribusikan atau memasarkan kepada umum aplikasi yang menggunakan Preview ini karena Preview ini tidak akan didukung lagi setelah Android SDK resmi dirilis.
+
+5. Kredensial Pengembang Anda
+
+5.1 Anda setuju bertanggung jawab untuk menjaga kerahasiaan semua kredensial pengembang yang mungkin diberikan Google kepada Anda atau yang mungkin Anda pilih sendiri dan bahwa Anda akan bertanggung jawab penuh terhadap semua aplikasi yang dikembangkan dengan kredensial pengembang Anda.
+
+6. Privasi dan Informasi
+
+6.1 Untuk terus berinovasi dan meningkatkan Preview, Google boleh mengumpulkan statistik penggunaan tertentu dari perangkat lunak termasuk namun tidak terbatas pada identifier unik, alamat IP terkait, nomor versi perangkat lunak, dan informasi yang menjadi tempat penggunaan alat dan/atau layanan dalam Preview dan cara penggunaannya. Sebelum informasi ini dikumpulkan, Preview akan memberi tahu dan meminta persetujuan Anda. Jika Anda tidak memberikan persetujuan, informasi tersebut tidak akan dikumpulkan.
+
+6.2 Data yang dikumpulkan akan diperiksa secara agregat untuk meningkatkan Preview dan dikelola sesuai dengan Kebijakan Privasi Google yang terdapat di http://www.google.com/policies/privacy/.
+
+7. Aplikasi Pihak Ketiga
+
+7.1 Jika Anda menggunakan Preview untuk menjalankan aplikasi yang dikembangkan oleh pihak ketiga atau yang mengakses data, konten atau sumber daya yang disediakan oleh pihak ketiga, Anda setuju bahwa Google tidak bertanggung jawab terhadap aplikasi, data, konten atau sumber daya tersebut. Anda memahami bahwa semua data, konten atau sumber daya yang mungkin Anda akses melalui aplikasi pihak ketiga merupakan tanggung jawab penuh dari pihak yang menjadi asal data tersebut dan Google tidak bertanggung jawab terhadap kerugian atau kerusakan apa pun yang mungkin Anda alami sebagai akibat menggunakan atau mengakses aplikasi, data, konten, atau sumber daya pihak ketiga tersebut.
+
+7.2 Anda harus menyadari bahwa data, konten dan sumber daya yang diberikan kepada Anda melalui aplikasi pihak ketiga mungkin dilindungi oleh hak kekayaan intelektual yang dimiliki oleh penyedia (atau oleh orang lain atau perusahaan atas nama mereka). Anda tidak boleh memodifikasi, menyewakan, menyewabelikan, meminjamkan, menjual, mendistribusikan atau membuat karya turunan berdasarkan data, konten, atau sumber daya ini (baik secara keseluruhan atau sebagian) kecuali Anda secara khusus diberikan izin untuk melakukannya oleh pemilik yang bersangkutan.
+
+7.3 Anda mengakui bahwa penggunaan Anda atas aplikasi, data, konten, atau sumber daya pihak ketiga semacam itu tunduk pada ketentuan terpisah antara Anda dan pihak ketiga yang bersangkutan.
+
+8. Menggunakan API Google
+
+8.1 API Google
+
+8.1.1 Jika Anda menggunakan API (Antarmuka Pemrograman Aplikasi) untuk mengambil data dari Google, Anda mengakui bahwa data tersebut dilindungi hak kekayaan intelektual yang dimiliki Google atau pihak-pihak yang menyediakan data (atau oleh orang lain atau perusahaan atas nama mereka). Penggunaan API oleh Anda tunduk pada Ketentuan Layanan tambahan. Anda tidak boleh memodifikasi, menyewakan, menyewabelikan, meminjamkan, menjual, mendistribusikan atau membuat karya turunan berdasarkan data ini (baik secara keseluruhan atau sebagian) kecuali diizinkan oleh Ketentuan Layanan yang bersangkutan.
+
+8.1.2 Jika Anda menggunakan API dalam bentuk apa pun untuk mengambil data pengguna dari Google, Anda mengakui dan menyetujui bahwa Anda akan mengambil data hanya dengan persetujuan yang jelas dari pengguna dan hanya bila, dan sebatas keperluan yang diizinkan oleh pengguna tersebut untuk Anda lakukan.
+
+9. Mengakhiri Perjanjian Lisensi
+
+9.1 Perjanjian Lisensi ini akan terus berlaku hingga diakhiri oleh Anda atau Google sebagaimana diatur di bawah ini.
+
+9.2 Jika Anda ingin mengakhiri Perjanjian Lisensi ini, Anda boleh melakukannya dengan menghentikan penggunaan Preview dan kredensial pengembang yang relevan.
+
+9.3 Google boleh mengakhiri Perjanjian Lisensi ini dengan Anda kapan saja, dengan atau tanpa sebab, setelah memberi tahu Anda.
+
+9.4 Perjanjian Lisensi akan berakhir secara otomatis tanpa pemberitahuan atau tindakan lainnya bila, mana saja yang lebih dahulu: 
+(A) Google berhenti menyediakan Preview atau bagian Preview tertentu kepada pengguna di negara tempat Anda tinggal atau negara tempat asal Anda menggunakan layanan; dan
+(B) Google mengeluarkan versi rilis final dari Android SDK.
+
+9.5 Bila Perjanjian Lisensi berakhir, lisensi yang telah diberikan kepada Anda dalam Perjanjian Lisensi akan berakhir pula, Anda akan segera menghentikan semua penggunaan Preview, dan ketetapan paragraf 10, 11, 12, dan 14 akan terus berlaku secara tak terbatas.
+
+10. SANGGAHAN
+
+10.1 ANDA SEPENUHNYA MEMAHAMI DAN MENYETUJUI BAHWA PENGGUNAAN PREVIEW OLEH ANDA MERUPAKAN RISIKO ANDA SENDIRI DAN BAHWA PREVIEW INI DISEDIAKAN "APA ADANYA" DAN "SEBAGAIMANA TERSEDIA" TANPA JAMINAN DALAM BENTUK APA PUN DARI GOOGLE.
+
+10.2 PENGGUNAAN PREVIEW DAN MATERI APA PUN YANG DIUNDUH ATAU DIPEROLEH MELALUI PENGGUNAAN PREVIEW OLEH ANDA ADALAH ATAS KEHENDAK DAN RISIKO ANDA SENDIRI DAN ANDA BERTANGGUNG JAWAB PENUH TERHADAP KERUSAKAN PADA SISTEM KOMPUTER ATAU PERANGKAT LAIN ATAU HILANGNYA DATA AKIBAT PENGGUNAANNYA. TANPA MEMBATASI HAL TERSEBUT, ANDA MEMAHAMI BAHWA PREVIEW BUKANLAH RILIS STABIL DAN MUNGKIN BERISI KESALAHAN, CACAT, DAN RISIKO KEAMANAN YANG BISA MENGAKIBATKAN KERUSAKAN SIGNIFIKAN, TERMASUK KEHILANGAN PENGGUNAAN ATAS SISTEM KOMPUTER ANDA ATAU PERANGKAT LAIN DENGAN SEPENUHNYA DAN TIDAK BISA DIPULIHKAN LAGI.
+
+10.3 GOOGLE LEBIH LANJUT MENYANGGAH SEMUA JAMINAN DAN PERSYARATAN APA PUN, BAIK TERSURAT MAUPUN TERSIRAT, TERMASUK NAMUN TIDAK TERBATAS PADA JAMINAN TERSIRAT DAN PERSYARATAN MENGENAI DAYA JUAL, KESESUAIAN DENGAN TUJUAN TERTENTU, DAN NON-PELANGGARAN.
+
+11. PEMBATASAN KEWAJIBAN
+
+11.1 ANDA SEPENUHNYA MEMAHAMI DAN MENYETUJUI BAHWA GOOGLE, ANAK PERUSAHAAN DAN AFILIASINYA, DAN PEMBERI LISENSINYA TIDAK AKAN BERTANGGUNG JAWAB KEPADA ANDA BERDASARKAN TEORI KEWAJIBAN TERHADAP SEGALA KERUGIAN LANGSUNG, TIDAK LANGSUNG, INSIDENTAL, KHUSUS, JANGKA PANJANG ATAU GANTI RUGI YANG DIAKIBATKAN OLEH ANDA, TERMASUK HILANGNYA DATA, WALAUPUN GOOGLE ATAU PERWAKILANNYA TELAH DIBERI TAHU ATAU SEHARUSNYA MENGETAHUI KEMUNGKINAN TIMBULNYA KEHILANGAN TERSEBUT.
+
+12. Penggantian Kerugian
+
+12.1 Sejauh maksimum yang diizinkan oleh hukum, Anda setuju untuk membela, mengganti kerugian dan melepaskan tanggung jawab Google, afiliasinya beserta direksi, petugas, karyawan dan agennya dari dan terhadap setiap dan semua klaim, tindakan, gugatan, proses hukum, serta setiap dan semua kehilangan, kewajiban, kerusakan, biaya dan pengeluaran (termasuk biaya pengacara yang sewajarnya) yang timbul atau diakibatkan dari (a) penggunaan Preview oleh Anda, (b) aplikasi apa pun yang Anda kembangkan dari Preview yang melanggar Hak Kekayaan Intelektual seseorang atau mencemarkan nama baik seseorang atau melanggar hak mereka berkaitan dengan publisitas atau privasi, dan (c) ketidakpatuhan Anda terhadap Perjanjian Lisensi ini.
+
+13. Perubahan Perjanjian Lisensi
+
+13.1 Google boleh membuat perubahan pada Perjanjian Lisensi saat mendistribusikan versi baru Preview. Saat perubahan tersebut dibuat, Google akan menyediakan versi baru Perjanjian Lisensi di situs web penyediaan Preview.
+
+14. Ketentuan Hukum Umum
+
+14.1 Perjanjian Lisensi ini merupakan perjanjian hukum antara Anda dan Google dan mengatur penggunaan Preview oleh Anda (tidak termasuk layanan apa pun yang mungkin disediakan Google untuk Anda dalam perjanjian tertulis terpisah), dan sepenuhnya menggantikan perjanjian sebelumnya antara Anda dan Google dalam kaitannya dengan Preview.
+
+14.2 Anda setuju bahwa jika Google tidak menjalankan atau menerapkan hak atau upaya hukum yang terkandung dalam Perjanjian Lisensi ini (atau bila Google memiliki kewenangan berdasarkan hukum yang berlaku), tindakan ini tidak akan dianggap sebagai pelepasan hak secara resmi oleh Google dan bahwa hak atau upaya hukum tersebut akan tetap bisa digunakan oleh Google.
+
+14.3 Jika persidangan hukum yang berwenang untuk memutuskan perkara ini menetapkan bahwa ada ketetapan Perjanjian Lisensi ini yang tidak berlaku, maka ketetapan tersebut akan dihapus dari Perjanjian Lisensi tanpa memengaruhi bagian selebihnya dari Perjanjian Lisensi ini. Ketetapan selebihnya dari Perjanjian Lisensi ini akan tetap sah dan berlaku.
+
+14.4 Anda mengakui dan menyetujui bahwa setiap anggota dari kelompok perusahaan yang diinduki oleh Google akan menjadi pihak ketiga penerima manfaat dari Perjanjian Lisensi ini dan bahwa perusahaan tersebut berhak untuk secara langsung memberlakukan, dan bergantung pada, ketetapan yang dimuat dalam Perjanjian Lisensi ini yang memberikan manfaat (atau hak yang mendukung) kepada mereka. Selain yang telah disebutkan di atas, tidak ada orang atau perusahaan lain yang akan menjadi pihak ketiga penerima manfaat dari Perjanjian Lisensi ini
+
+14.5 PEMBATASAN EKSPOR. PREVIEW TUNDUK PADA HUKUM DAN PERATURAN EKSPOR AMERIKA SERIKAT. ANDA HARUS MEMATUHI SEMUA HUKUM DAN PERATURAN NASIONAL DAN INTERNASIONAL YANG BERLAKU PADA PREVIEW. HUKUM INI MENYERTAKAN PEMBATASAN ATAS TUJUAN, PENGGUNA AKHIR DAN PENGGUNAAN AKHIR.
+
+14.6 Perjanjian Lisensi ini tidak boleh diberikan atau dialihkan baik oleh Anda tanpa persetujuan tertulis sebelumnya dari Google, dan upaya apa pun untuk mengalihkannya tanpa persetujuan akan menjadi tidak sah. Anda tidak boleh mendelegasikan tanggung jawab atau kewajiban berdasarkan Perjanjian Lisensi ini tanpa persetujuan tertulis sebelumnya dari Google.
+
+14.7 Perjanjian Lisensi ini, dan hubungan Anda dengan Google berdasarkan Perjanjian Lisensi ini, diatur oleh hukum Negara Bagian California tanpa mengindahkan pertentangan ketetapan hukumnya. Anda dan Google setuju untuk tunduk pada yurisdiksi eksklusif pengadilan yang berlokasi di county Santa Clara, California untuk menyelesaikan segala masalah hukum yang timbul dari Perjanjian Lisensi ini. Meski demikian, Anda setuju bahwa Google akan tetap diizinkan untuk mengajukan upaya hukum (atau tipe keringanan hukum setara yang mendesak) dalam yurisdiksi apa pun.
+  </div><!-- sdk terms -->
+
+
+
+    <div id="sdk-terms-form">
+      <p>
+        <input id="agree" type="checkbox" name="agree" value="1" onclick="onAgreeChecked()" />
+        <label id="agreeLabel" for="agree">Saya telah membaca dan menyetujui ketentuan dan persyaratan di atas</label>
+      </p>
+      <p><a href="" class="button disabled" id="downloadForRealz" onclick="return onDownloadForRealz(this);"></a></p>
+    </div>
+
+
+  </div><!-- end TOS -->
+
+
+  <div id="landing">
+
+<div id="qv-wrapper">
+  <div id="qv">
+    <h2>Dalam dokumen ini</h2>
+      <ol>
+        <li><a href="#device-preview">Menyiapkan perangkat keras</a>
+          <ol>
+            <li><a href="#ota">Mendapatkan pembaruan lewat jaringan seluler</a></li>
+            <li><a href="#flash">Mem-flash perangkat secara manual</a></li>
+            <li><a href="#revertDevice">Menghapus instalasi</a></li>
+          </ol>
+        </li>
+        <li><a href="#setupAVD">Menyiapkan emulator</a></li>
+      </ol>
+  </div>
+</div>
+
+<p>
+  Untuk menjalankan dan menguji aplikasi Anda pada platform baru, Anda perlu menyiapkan lingkungan runtime
+  Android N. Anda bisa melakukannya dengan salah satu cara ini:
+</p>
+
+<ul>
+  <li>Instal Android N pada perangkat keras yang didukung, atau</li>
+  <li>Siapkan emulator Android yang menjalankan Android N</li>
+</ul>
+
+<p>
+  Jika Anda ingin lingkungan untuk pengujian kompatibilitas dasar aplikasi Anda pada
+  platform baru, maka Anda hanya perlu APK saat ini dan perangkat keras atau
+  emulator. Anda tidak perlu memperbarui lingkungan
+  pengembangan penuh untuk melakukan pengujian dasar.
+</p>
+
+<p>
+  Jika Anda ingin memodifikasi aplikasi untuk menargetkan Android N atau menggunakan API baru Android N,
+  Anda perlu menyiapkan lingkungan pengembangan yang telah diperbarui untuk mendukung
+  Android N. <a href="{@docRoot}preview/setup-sdk.html">Menyiapkan Pengembangan
+  Android N</a> berisi detail mengenai hal ini.
+</p>
+
+
+<h2 id="device-preview">Menyiapkan perangkat keras</h2>
+
+<p>
+  N Developer Preview menawarkan pembaruan sistem untuk berbagai jenis perangkat keras
+  yang bisa Anda gunakan untuk menguji aplikasi Anda, dari ponsel hingga tablet dan TV.
+</p>
+
+<p>
+  Jika Anda memiliki akses ke perangkat yang didukung, Anda bisa memperbaruinya ke build tahapan pencapaian Developer
+  Preview dengan salah satu cara berikut:
+</p>
+
+<ul>
+  <li><strong>Daftarkan perangkat dalam pembaruan sistem OTA otomatis</strong> melalui
+  <a href="https://g.co/androidbeta">Android Beta Program</a>. Setelah didaftarkan, perangkat Anda akan menerima pembaruan
+  lewat jaringan seluler (OTA) untuk semua build tahapan pencapaian dalam N Developer Preview. Pendekatan
+  ini disarankan karena akan membantu Anda melakukan transisi secara mulus dari lingkungan saat ini
+  ke berbagai rilis N Developer Preview.</li>
+  <li><strong>Unduh citra sistem a Developer Preview dan flash perangkat</strong>.
+ Pembaruan OTA tidak disediakan secara otomatis untuk perangkat yang Anda flash secara manual, namun
+  Anda bisa mendaftarkan perangkat tersebut dalam Android Beta Program untuk memperoleh pembaruan OTA. </li>
+</ul>
+
+<h3 id="ota">Mendaftarkan perangkat dalam pembaruan OTA otomatis</h3>
+
+<p>
+  Jika Anda memiliki akses ke perangkat yang didukung (lihat daftar dalam tabel
+  Unduhan), Anda bisa menerima pembaruan lewat jaringan seluler ke versi preview Android
+  dengan mendaftarkan perangkat itu ke <a href="https://g.co/androidbeta">Android Beta Program</a>. Pembaruan ini
+  secara otomatis akan diunduh dan memperbarui perangkat Anda seperti
+  pembaruan sistem resmi.
+</p>
+
+<p>
+  Anda bisa membatalkan pendaftaran perangkat kapan saja. Perangkat akan menerima pembaruan OTA
+  ke versi produksi terbaru Android yang tersedia untuk perangkat itu
+  (misalnya, Android 6.0 Marshmallow). Pembaruan mengharuskan pengaturan ulang
+  perangkat secara penuh, jadi data pengguna pada perangkat itu akan dihapus. Pastikan <strong>mencadangkan
+  data penting</strong> sebelum membatalkan pendaftaran perangkat.
+</p>
+
+<p>
+  Untuk informasi selengkapnya dan untuk mendaftarkan perangkat Anda, lihat
+  situs web <a href="https://g.co/androidbeta">Android Beta Program</a>.
+</p>
+
+<p class="note"><strong>Catatan:</strong>
+  Membatalkan pendaftaran mengharuskan pengaturan ulang perangkat secara penuh. Cadangkan
+  data penting terlebih dahulu.
+</p>
+
+<h3 id="flash">Mem-flash perangkat secara manual</h3>
+
+<p>
+  Anda bisa mengunduh citra sistem Developer Preview terbaru dan
+  mem-flash-nya secara manual ke perangkat Anda. Lihat tabel di bawah untuk mengunduh citra sistem
+  bagi perangkat pengujian Anda. Mem-flash perangkat secara manual berguna jika Anda harus
+  mengontrol secara persis lingkungan pengujian tersebut atau harus menginstal ulang secara rutin,
+  misalnya untuk pengujian otomatis. 
+</p>
+
+<!-- You can flash by ota or system image --><p>
+  Menginstal citra sistem pada perangkat <strong>akan menghapus semua data dari
+  perangkat</strong>, karena itu Anda harus mencadangkan data terlebih dahulu.
+</p>
+
+<p>
+  Setelah Anda mencadangkan data perangkat dan mengunduh citra sistem di bawah ini yang
+  sesuai dengan perangkat Anda, ikuti instruksi di <a href="https://developers.google.com/android/nexus/images#instructions">developers.google.com/android</a>
+  untuk mem-flash citra ini ke perangkat Anda.
+</p>
+
+<p>
+  Mem-flash citra sistem secara manual <strong>
+  tidak secara otomatis akan menerima pembaruan OTA</strong> ke build
+  tahapan pencapaian Developer Preview terbaru. Pastikan lingkungan Anda selalu diperbarui dan lakukan flash
+  citra sistem yang baru di setiap tahapan pencapaian Developer Preview.
+</p>
+
+<p>
+  Jika Anda memutuskan ingin mendapatkan pembaruan OTA setelah mem-flash perangkat secara manual,
+  Anda tinggal mendaftarkan perangkat dalam <a href="https://g.co/androidbeta">
+   Android Beta Program</a>. Anda bisa mendaftarkan perangkat kapan saja untuk menerima pembaruan Preview
+  berikutnya lewat jaringan seluler. 
+</p>
+
+<table>
+  <tr>
+    <th scope="col">Perangkat</th>
+    <th scope="col">Unduhan / Checksum</th>
+  </tr>
+
+  <tr id="bullhead">
+    <td>Nexus 5X <br>"bullhead"</td>
+    <td><a href="#top" onclick="onDownload(this)">bullhead-npc56p-preview-6c877a3d.tgz</a><br>
+      MD5: b5cf874021023b398f5b983b24913f5d<br>
+      SHA-1: 6c877a3d9fae7ec8a1678448e325b77b7a7b143a
+    </td>
+  </tr>
+
+  <tr id="shamu">
+    <td>Nexus 6 <br>"shamu"</td>
+    <td><a href="#top" onclick="onDownload(this)">shamu-npc56p-preview-54b13c67.tgz</a><br>
+      MD5: af183638cf34e0eb944a1957d7696f60<br>
+      SHA-1: 54b13c6703d369cc79a8fd8728fe4103c6343973
+    </td>
+  </tr>
+
+  <tr id="angler">
+    <td>Nexus 6P <br>"angler"</td>
+    <td><a href="#top" onclick="onDownload(this)">angler-npc56p-preview-85ffc1b1.tgz</a><br>
+      MD5: bc4934ea7bd325753eee1606d3725a24<br>
+      SHA-1: 85ffc1b1be402b1b96f9ba10929e86bba6c6c588
+    </td>
+  </tr>
+
+  <tr id="volantis">
+    <td>Nexus 9 <br>"volantis"</td>
+    <td><a href="#top" onclick="onDownload(this)">volantis-npc56p-preview-0e8ec8ef.tgz</a><br>
+      MD5: c901334c6158351e945f188167ae56f4<br>
+      SHA-1: 0e8ec8ef98c7a8d4f58d15f90afc5176303efca4
+    </td>
+  </tr>
+
+  <tr id="volantisg">
+    <td>Nexus 9G <br>"volantisg"</td>
+    <td><a href="#top" onclick="onDownload(this)">volantisg-npc56p-preview-1bafdbfb.tgz</a><br>
+      MD5: 7bb95bebc478d7257cccb4652899d1b4<br>
+      SHA-1: 1bafdbfb502e979a9fe4c257a379c4c7af8a3ae6
+    </td>
+  </tr>
+
+  <tr id="fugu">
+    <td>Nexus Player <br>"fugu"</td>
+    <td><a href="#top" onclick="onDownload(this)">fugu-npc56r-preview-7027d5b6.tgz</a><br>
+      MD5: f5d3d8f75836ccfe4c70e8162e498be4<br>
+      SHA-1: 7027d5b662bceda4c80a91a0a14ef0e5a7ba795b
+    </td>
+  </tr>
+
+  <tr id="ryu">
+    <td>Pixel C <br>"ryu"</td>
+    <td><a href="#top" onclick="onDownload(this)">ryu-npc56p-preview-335a86a4.tgz</a><br>
+      MD5: 4e21fb183bbbf467bee91598d587fd2e<br>
+      SHA-1: 335a86a435ee51f18464de343ad2e071c38f0e92
+    </td>
+  </tr>
+  <tr id="seed">
+    <td>General Mobile 4G (Android One) <br>"seed"</td>
+    <td><a href="#top" onclick="onDownload(this)">seed_l8150-npc56p-preview-82472ebc.tgz</a><br>
+      MD5: 983e083bc7cd0c4a2d39d6ebaa20202a<br>
+      SHA-1: 82472ebc9a6054a103f53cb400a1351913c95127
+    </td>
+  </tr>
+
+</table>
+
+<h3 id="revertDevice">Menghapus instalasi Preview dari perangkat</h3>
+
+<p>
+  Jika Anda ingin menghapus instalasi Preview dari perangkat, Anda bisa melakukannya dengan salah satu cara
+  ini: </p>
+  <ul>
+    <li><strong>Dapatkan citra sistem sesuai spesifikasi pabrik</strong> kemudian flash
+    secara manual ke perangkat.
+      <ul>
+          <li>Untuk <strong>perangkat Nexus dan perangkat Pixel C</strong>, lihat
+        halaman <a href="http://developers.google.com/android/nexus/images">Citra Pabrik untuk
+        Perangkat Nexus</a> untuk mengunduhnya. </li>
+        <li>Untuk <strong>perangkat lain</strong>, hubungi produsen perangkat tersebut
+        secara langsung. Atau, jika perangkat didukung
+        dalam Android Beta Program, Anda bisa mendaftarkan perangkat dalam
+        program kemudian membatalkan pendaftarannya (lihat di bawah).</li>
+      </ul>
+    </li>
+    <li><strong>Batalkan pendaftaran perangkat dari Android Beta Program</strong>. Jika
+    perangkat terdaftar dalam <a href="https://g.co/androidbeta">Android Beta
+    Program</a>, apa pun perangkatnya, Anda cukup membatalkan pendaftarannya dari program tersebut.
+  <p>
+    Perangkat akan menerima pembaruan OTA ke versi
+    produksi terbaru Android yang tersedia untuk perangkat itu (misalnya, Android 6.0 Marshmallow).
+    Pembaruan mengharuskan pengaturan ulang perangkat secara penuh, jadi data pengguna pada perangkat itu
+    akan dihapus. Pastikan <strong>mencadangkan data penting</strong> sebelum
+    membatalkan pendaftaran perangkat.
+  </p>
+  </li>
+</ul>
+
+<p class="note"><strong>Catatan:</strong>
+  Menghapus instalasi citra sistem Developer Preview sebelum
+  program berakhir akan mengharuskan perangkat diatur ulang secara penuh dan menghapus semua data pengguna
+  pada perangkat.
+</p>
+
+
+<h2 id="setupAVD">Menyiapkan emulator</h2>
+
+<p>Untuk menggunakan Android Emulator guna menjalankan Android N Preview, Anda perlu
+mengunduh Android N Preview SDK dan membuat perangkat maya untuk
+emulator.</p>
+
+<p>Pertama, unduh Android N Preview SDK sebagai berikut (jika
+Anda sudah memperolehnya saat <a href="{@docRoot}preview/setup-sdk.html">menyiapkan
+pengembangan Android N</a>, Anda bisa melewatkan bagian ini):
+
+<ol>
+  <li>Di Android Studio, buka dialog Settings
+    (<strong>File &gt; Settings</strong> pada Windows/Linux, atau
+    <strong>Android Studio &gt; Preferences</strong> pada Mac). Di panel kiri,
+    pilih <strong>Appearance &amp; Behavior &gt;
+  System Settings &gt; Android SDK</strong>.
+
+  <li>Klik tab <strong>SDK Platforms</strong>, kemudian pilih kotak cek
+  <strong>Android N Preview</strong>.</li>
+
+  <li>Klik tab <strong>SDK Tools</strong>, kemudian pilih
+    kotak cek <strong>Android SDK Build Tools</strong>, <strong>Android SDK
+    Platform-Tools</strong>, dan <strong>Android SDK Tools</strong>.
+
+  </li>
+
+  <li>Klik <strong>OK</strong>, dan terima
+    perjanjian lisensi untuk setiap paket yang akan diinstal.
+  </li>
+</ol>
+
+<p>Sekarang Anda seharusnya telah memiliki <strong>Android SDK Built-Tools 24.0 0 rc1</strong>,
+<strong>Platform-Tools 24.0.0 rc1</strong>, dan <strong>SDK Tools
+25.0.9</strong>. Jika Anda tidak memperbarui SDK Tools ke 25.0.9, maka Anda tidak akan
+dapat menjalankan citra sistem x86_64 untuk Android N.</p>
+
+
+<p>Sekarang buatlah perangkat maya dengan citra sistem Android N:</p>
+
+<ol>
+  <li>Buka AVD Manager dengan memilih <strong>Tools &gt; Android &gt;
+    AVD Manager</strong>.</li>
+  <li>Klik <strong>Create Virtual Device</strong>.</li>
+  <li>Pilih perangkat misalnya Nexus 5X, Nexus 6P, Nexus 9, atau Android TV,
+    kemudian klik <strong>Next</strong>.</li>
+  <li>Pilih citra sistem <strong>N</strong> (dengan
+    <strong>x86</strong> ABI), kemudian klik <strong>Next</strong>.
+    (Hanya citra sistem x86 yang saat ini didukung dengan Emulator
+untuk Android N Preview.)
+  <li>Selesaikan konfigurasi AVD selanjutnya dan klik 
+    <strong>Finish</strong>.</li>
+</ol>
+
+<p>Anda sekarang bisa meluncurkan Emulator Android dengan Android N Preview AVD.</p>
+
+<p>
+Untuk mendapatkan pengalaman terbaik di Android Emulator, instal
+Android Studio 2.1 Preview, yang mendukung <a href="http://tools.android.com/tech-docs/emulator">Android Emulator 2.0 Beta</a>
+dengan kinerja jauh lebih cepat dibandingkan Emulator di
+Android Studio 1.5.</p>
+
+<p class="note"><strong>Catatan:</strong>
+  Jika Anda saat ini menggunakan Android Studio 2.0 Beta, maka ada masalah yang telah diketahui
+  yang mencegah Anda membuat AVD dengan citra sistem N Preview, jadi
+   Anda saat ini perlu menggunakan preview Android Studio 2.1 untuk membuat AVD.
+</p>
+
+<p>Untuk informasi selengkapnya tentang membuat perangkat maya, lihat <a href="{@docRoot}tools/devices/index.html">Mengelola Perangkat Maya</a>.
+</p>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+  </div><!-- landing -->
+
+</div><!-- relative wrapper -->
+
+
+
+<script>
+  var urlRoot = "http://storage.googleapis.com/androiddevelopers/shareables/preview/";
+  function onDownload(link) {
+
+    $("#downloadForRealz").html("Download " + $(link).text());
+    $("#downloadForRealz").attr('href', urlRoot + $(link).text());
+
+    $("#tos").fadeIn('fast');
+    $("#landing").fadeOut('fast');
+
+    return true;
+  }
+
+
+  function onAgreeChecked() {
+    /* verify that the TOS is agreed */
+    if ($("input#agree").is(":checked")) {
+      /* reveal the download button */
+      $("a#downloadForRealz").removeClass('disabled');
+    } else {
+      $("a#downloadForRealz").addClass('disabled');
+    }
+  }
+
+  function onDownloadForRealz(link) {
+    if ($("input#agree").is(':checked')) {
+    /*
+      $("#tos").fadeOut('fast');
+      $("#landing").fadeIn('fast');
+    */
+
+      ga('send', 'event', 'M Preview', 'System Image', $("#downloadForRealz").html());
+
+    /*
+      location.hash = "";
+    */
+      return true;
+    } else {
+      return false;
+    }
+  }
+
+  $(window).hashchange( function(){
+    if (location.hash == "") {
+      location.reload();
+    }
+  });
+
+</script>
diff --git a/docs/html-intl/intl/in/preview/features/background-optimization.jd b/docs/html-intl/intl/in/preview/features/background-optimization.jd
new file mode 100644
index 0000000..2836959
--- /dev/null
+++ b/docs/html-intl/intl/in/preview/features/background-optimization.jd
@@ -0,0 +1,388 @@
+page.title=Optimisasi Latar Belakang
+page.metaDescription=Pembatasan baru untuk siaran implisit.
+page.keywords="android N", "implicit broadcasts", "job scheduler"
+@jd:body
+
+<div id="qv-wrapper">
+  <div id="qv">
+    <h2>
+      Dalam dokumen ini
+    </h2>
+
+    <ol>
+      <li>
+        <a href="#connectivity-action">Pembatasan pada CONNECTIVITY_ACTION</a>
+      </li>
+
+      <li>
+        <a href="#sched-jobs">Menjadwalkan Pekerjaan Jaringan pada Koneksi
+        Berbiaya Tetap</a>
+      </li>
+
+      <li>
+        <a href="#monitor-conn">Memantau Konektivitas Jaringan Saat Aplikasi
+        Dijalankan</a>
+      </li>
+
+      <li>
+        <a href="#media-broadcasts">Pembatasan pada NEW_PICTURE dan
+        NEW_VIDEO</a>
+      </li>
+
+      <li>
+        <a href="#new-jobinfo">Metode JobInfo Baru</a>
+      </li>
+
+      <li>
+        <a href="#new-jobparam">Metode JobParameter Baru</a>
+      </li>
+
+      <li>
+        <a href="#further-optimization">Mengoptimalkan Aplikasi Anda Lebih Jauh</a>
+      </li>
+    </ol>
+  </div>
+</div>
+
+<p>
+  Proses latar belakang bisa menguras memori dan baterai. Misalnya, sebuah
+  siaran implisit dapat memulai banyak proses latar belakang yang telah didaftarkan
+  untuk mendengarkannya, sekalipun proses-proses itu mungkin tidak melakukan banyak pekerjaan. Ini bisa
+  berdampak besar pada kinerja perangkat dan pengalaman pengguna.
+</p>
+
+<p>
+  Untuk meminimalkan masalah ini, N Developer Preview menerapkan pembatasan
+  berikut:
+</p>
+
+<ul>
+  <li>Aplikasi yang menargetkan Preview tidak menerima siaran {@link
+  android.net.ConnectivityManager#CONNECTIVITY_ACTION} jika mereka
+  mendaftar untuk menerimanya dalam manifes mereka. Aplikasi yang berjalan di latar depan
+  tetap bisa mendengarkan {@code CONNECTIVITY_CHANGE} pada thread utama mereka dengan
+  mendaftarkan {@link android.content.BroadcastReceiver} pada {@link
+  android.content.Context#registerReceiver Context.registerReceiver()}.
+  </li>
+
+  <li>Aplikasi tidak bisa mengirim atau menerima siaran {@link
+  android.hardware.Camera#ACTION_NEW_PICTURE} atau {@link
+  android.hardware.Camera#ACTION_NEW_VIDEO}. Optimisasi ini
+  memengaruhi semua aplikasi, bukan hanya aplikasi yang menargetkan Preview.
+  </li>
+</ul>
+
+<p>
+  Kerangka kerja Android menyediakan beberapa solusi untuk mengurangi kebutuhan akan
+  siaran implisit ini. Misalnya, {@link android.app.job.JobScheduler}
+  dan<a href="https://developers.google.com/android/reference/com/google/android/gms/gcm/GcmNetworkManager">
+  {@code GcmNetworkManager}</a> menyediakan mekanisme yang tangguh untuk menjadwalkan operasi
+  jaringan bila kondisi yang ditetapkan, seperti koneksi ke jaringan
+  berbiaya tetap, terpenuhi. Anda sekarang juga bisa menggunakan {@link android.app.job.JobScheduler}
+  untuk bereaksi terhadap perubahan penyedia konten. Objek {@link android.app.job.JobInfo}
+  membungkus parameter yang digunakan {@link android.app.job.JobScheduler}
+  untuk menjadwalkan pekerjaan Anda. Bila syarat-syarat pekerjaan sudah terpenuhi, sistem
+  akan mengeksekusi pekerjaan ini pada {@link android.app.job.JobService} aplikasi Anda.
+</p>
+
+<p>
+  Dalam dokumen ini, kita akan mempelajari cara menggunakan metode alternatif, seperti
+  {@link android.app.job.JobScheduler}, untuk menyesuaikan aplikasi Anda dengan pembatasan
+  yang baru.
+</p>
+
+<h2 id="connectivity-action">
+  Pembatasan pada CONNECTIVITY_ACTION
+</h2>
+
+<p>
+  Aplikasi yang menargetkan N Developer Preview tidak menerima siaran {@link
+  android.net.ConnectivityManager#CONNECTIVITY_ACTION} jika mereka
+  mendaftar untuk menerimanya dalam manifes mereka, dan proses yang bergantung pada siaran
+  ini tidak akan dimulai. Hal ini bisa menimbulkan masalah bagi aplikasi yang ingin
+  mendengarkan perubahan jaringan atau melakukan aktivitas jaringan dalam jumlah besar bila perangkat
+  menghubungkan ke jaringan berbiaya tetap. Beberapa solusi untuk menyiasati pembatasan
+  ini sudah ada dalam kerangka kerja Android, namun pemilihan solusi
+  yang tepat bergantung pada apa yang ingin dicapai oleh aplikasi Anda.
+</p>
+
+<p class="note">
+  <strong>Catatan:</strong> Sebuah {@link android.content.BroadcastReceiver} yang didaftarkan dengan
+  {@link android.content.Context#registerReceiver Context.registerReceiver()}
+  akan terus menerima siaran ini saat aplikasi berada di latar depan.
+</p>
+
+<h3 id="sched-jobs">
+  Menjadwalkan Pekerjaan Jaringan pada Koneksi Berbiaya Tetap
+</h3>
+
+<p>
+  Saat menggunakan kelas {@link android.app.job.JobInfo.Builder JobInfo.Builder}
+  untuk membuat objek {@link android.app.job.JobInfo} Anda, terapkan metode {@link
+  android.app.job.JobInfo.Builder#setRequiredNetworkType
+  setRequiredNetworkType()} dan teruskan {@link android.app.job.JobInfo
+  JobInfo.NETWORK_TYPE_UNMETERED} sebagai parameter pekerjaan. Contoh kode berikut
+  menjadwalkan layanan yang akan dijalankan bila perangkat menghubungkan ke jaringan
+  berbiaya tetap dan saat mengisi baterai:
+</p>
+
+<pre>
+public static final int MY_BACKGROUND_JOB = 0;
+...
+public static void scheduleJob(Context context) {
+  JobScheduler js =
+      (JobScheduler) context.getSystemService(Context.JOB_SCHEDULER_SERVICE);
+  JobInfo job = new JobInfo.Builder(
+    MY_BACKGROUND_JOB,
+    new ComponentName(context, MyJobService.class))
+      .setRequiredNetworkType(JobInfo.NETWORK_TYPE_UNMETERED)
+      .setRequiresCharging(true)
+      .build();
+  js.schedule(job);
+}
+</pre>
+
+<p>
+  Bila syarat untuk pekerjaan Anda terpenuhi, aplikasi Anda akan menerima callback untuk menjalankan
+  metode {@link android.app.job.JobService#onStartJob onStartJob()} dalam
+  {@code JobService.class} yang ditetapkan. Untuk melihat contoh selengkapnya mengenai implementasi {@link
+  android.app.job.JobScheduler}, lihat <a href="{@docRoot}samples/JobScheduler/index.html">aplikasi contoh JobScheduler</a>.
+</p>
+
+<p>
+  Aplikasi yang menggunakan layanan GMSCore, dan menargetkan Android 5.0 (API tingkat 21)
+  atau lebih rendah, bisa menggunakan <a href="https://developers.google.com/android/reference/com/google/android/gms/gcm/GcmNetworkManager">
+  {@code GcmNetworkManager}</a> dan menetapkan {@code Task.NETWORK_STATE_UNMETERED}.
+</p>
+
+<h3 id="monitor-conn">
+  Memantau Konektivitas Jaringan Saat Aplikasi Dijalankan
+</h3>
+
+<p>
+  Aplikasi yang berjalan di latar depan tetap bisa mendengarkan {@code
+  CONNECTIVITY_CHANGE} dengan {@link
+  android.content.BroadcastReceiver} yang didaftarkan. Akan tetapi, {@link
+  android.net.ConnectivityManager} API menyediakan metode yang lebih tangguh untuk meminta
+  callback hanya bila syarat jaringan yang ditetapkan terpenuhi.
+</p>
+
+<p>
+  Objek {@link android.net.NetworkRequest} mendefinisikan parameter
+  callback jaringan dari segi {@link android.net.NetworkCapabilities}. Anda
+  membuat objek {@link android.net.NetworkRequest} dengan kelas {@link
+  android.net.NetworkRequest.Builder NetworkRequest.Builder}. {@link
+  android.net.ConnectivityManager#registerNetworkCallback(android.net.NetworkRequest,
+  android.net.ConnectivityManager.NetworkCallback) registerNetworkCallback()}
+  kemudian meneruskan objek {@link android.net.NetworkRequest} ke sistem. Bila
+  syarat jaringan terpenuhi, aplikasi akan menerima callback untuk mengeksekusi
+  metode {@link android.net.ConnectivityManager.NetworkCallback#onAvailable
+  onAvailable()} yang didefinisikan dalam kelas {@link
+  android.net.ConnectivityManager.NetworkCallback}.
+</p>
+
+<p>
+  Aplikasi akan terus menerima callback hingga aplikasi keluar atau memanggil
+  {@link android.net.ConnectivityManager#unregisterNetworkCallback
+  unregisterNetworkCallback()}.
+</p>
+
+<h2 id="media-broadcasts">
+  Pembatasan pada NEW_PICTURE dan NEW_VIDEO
+</h2>
+
+<p>
+  Di N Developer Preview, aplikasi tidak dapat mengirim atau menerima siaran {@link
+  android.hardware.Camera#ACTION_NEW_PICTURE} atau {@link
+  android.hardware.Camera#ACTION_NEW_VIDEO}. Pembatasan ini membantu
+  meminimalkan dampak negatif terhadap kinerja dan pengalaman pengguna bila beberapa aplikasi harus
+  aktif untuk memproses gambar atau video baru. N Developer Preview
+  menambahkan {@link android.app.job.JobInfo} dan {@link
+  android.app.job.JobParameters} untuk memberikan solusi alternatif.
+</p>
+
+<h3 id="new-jobinfo">
+  Metode JobInfo baru
+</h3>
+
+<p>
+  Untuk memicu pekerjaan saat perubahan URI konten, N Developer Preview menambahkan
+  {@link android.app.job.JobInfo} API dengan metode berikut:
+</p>
+
+<dl>
+  <dt>
+    {@code JobInfo.TriggerContentUri()}
+  </dt>
+
+  <dd>
+    Membungkus parameter yang diperlukan untuk memicu pekerjaan saat perubahan URI konten.
+  </dd>
+
+  <dt>
+    {@code JobInfo.Builder.addTriggerContentUri()}
+  </dt>
+
+  <dd>
+    Meneruskan objek {@code TriggerContentUri} ke {@link
+    android.app.job.JobInfo}. Sebuah {@link android.database.ContentObserver}
+    akan memantau URI konten yang dibungkus. Jika ada beberapa objek {@code
+    TriggerContentUri} yang dikaitkan dengan pekerjaan, sistem akan memberikan sebuah
+    callback sekalipun itu melaporkan perubahan di salah satu URI konten saja.
+  </dd>
+
+  <dd>
+    Tambahkan flag {@code TriggerContentUri.FLAG_NOTIFY_FOR_DESCENDANTS} untuk
+    memicu pekerjaan jika ada turunan dari perubahan URI yang diberikan. Flag ini
+    berkaitan dengan parameter {@code notifyForDescendants} yang diteruskan ke {@link
+    android.content.ContentResolver#registerContentObserver
+    registerContentObserver()}.
+  </dd>
+</dl>
+
+<p class="note">
+  <strong>Catatan:</strong> {@code TriggerContentUri()} tidak bisa digunakan
+  bersama-sama dengan {@link android.app.job.JobInfo.Builder#setPeriodic
+  setPeriodic()} atau {@link android.app.job.JobInfo.Builder#setPersisted
+  setPersisted()}. Untuk terus memantau perubahan konten, jadwalkan
+  {@link android.app.job.JobInfo} baru sebelum {@link
+  android.app.job.JobService} aplikasi selesai menangani callback terbaru.
+</p>
+
+<p>
+  Kode contoh berikut menjadwalkan pekerjaan yang akan dipicu bila sistem melaporkan
+  perubahan ke URI konten, {@code MEDIA_URI}:
+</p>
+
+<pre>
+public static final int MY_BACKGROUND_JOB = 0;
+...
+public static void scheduleJob(Context context) {
+  JobScheduler js =
+          (JobScheduler) context.getSystemService(Context.JOB_SCHEDULER_SERVICE);
+  JobInfo.Builder builder = new JobInfo.Builder(
+          MY_BACKGROUND_JOB,
+          new ComponentName(context, MediaContentJob.class));
+  builder.addTriggerContentUri(
+          new JobInfo.TriggerContentUri(MEDIA_URI,
+          JobInfo.TriggerContentUri.FLAG_NOTIFY_FOR_DESCENDANTS));
+  js.schedule(builder.build());
+}
+</pre>
+<p>
+  Bila sistem melaporkan perubahan dalam URI konten yang ditetapkan, aplikasi Anda
+  akan menerima callback dan objek {@link android.app.job.JobParameters}
+  akan diteruskan ke metode {@link android.app.job.JobService#onStartJob onStartJob()}
+  dalam {@code MediaContentJob.class}.
+</p>
+
+<h3 id="new-jobparam">
+  Metode JobParameter Baru
+</h3>
+
+<p>
+  N Developer Preview juga menambahkan {@link android.app.job.JobParameters} untuk
+  memungkinkan aplikasi Anda menerima informasi yang berguna tentang otoritas konten
+  dan URI yang memicu pekerjaan:
+</p>
+
+<dl>
+  <dt>
+    {@code Uri[] getTriggeredContentUris()}
+  </dt>
+
+  <dd>
+    Mengembalikan larik URL yang telah memicu pekerjaan. Ini akan berupa {@code
+    null} jika tidak ada URI yang memicu pekerjaan (misalnya, pekerjaan
+    dipicu karena batas waktu atau alasan lainnya), atau jumlah 
+    URI yang berubah lebih dari 50.
+  </dd>
+
+  <dt>
+    {@code String[] getTriggeredContentAuthorities()}
+  </dt>
+
+  <dd>
+    Mengembalikan larik string otoritas konten yang telah memicu pekerjaan.
+    Jika larik yang dikembalikan bukan {@code null}, gunakan {@code getTriggeredContentUris()}
+    untuk mengambil detail URI yang telah berubah.
+  </dd>
+</dl>
+
+<p>
+  Kode contoh berikut mengesampingkan metode {@link
+  android.app.job.JobService#onStartJob JobService.onStartJob()} dan
+  mencatat otoritas konten serta URI yang telah memicu pekerjaan:
+</p>
+
+<pre>
+&#64;Override
+public boolean onStartJob(JobParameters params) {
+  StringBuilder sb = new StringBuilder();
+  sb.append("Media content has changed:\n");
+  if (params.getTriggeredContentAuthorities() != null) {
+      sb.append("Authorities: ");
+      boolean first = true;
+      for (String auth :
+          params.getTriggeredContentAuthorities()) {
+          if (first) {
+              first = false;
+          } else {
+             sb.append(", ");
+          }
+           sb.append(auth);
+      }
+      if (params.getTriggeredContentUris() != null) {
+          for (Uri uri : params.getTriggeredContentUris()) {
+              sb.append("\n");
+              sb.append(uri);
+          }
+      }
+  } else {
+      sb.append("(No content)");
+  }
+  Log.i(TAG, sb.toString());
+  return true;
+}
+</pre>
+
+<h2 id="further-optimization">
+  Mengoptimalkan Aplikasi Anda Lebih Jauh
+</h2>
+
+<p>
+  Mengoptimalkan aplikasi Anda untuk berjalan pada perangkat minim memori, atau dalam kondisi
+  minim memori, bisa meningkatkan kinerja dan pengalaman pengguna. Menghilangkan
+  dependensi pada layanan latar belakang dan penerima siaran
+  implisit yang terdaftar secara statis bisa membantu aplikasi Anda berjalan lebih baik pada perangkat demikian. Meskipun
+  N Developer Preview telah mengambil langkah-langkah untuk mengurangi sebagian masalah ini, Anda disarankan
+  agar mengoptimalkan aplikasi untuk berjalan tanpa menggunakan
+  proses latar belakang ini seluruhnya.
+</p>
+
+<p>
+  N Developer Preview memperkenalkan beberapa tambahan perintah <a href="{@docRoot}tools/help/adb.html">Android Debug Bridge (ADB)</a> yang
+  bisa Anda gunakan untuk menguji perilaku aplikasi dengan proses latar belakang dinonaktifkan:
+</p>
+
+<ul>
+  <li>Untuk mensimulasikan kondisi saat siaran implisit dan layanan latar belakang
+  tidak tersedia, masukkan perintah berikut:
+  </li>
+
+  <li style="list-style: none; display: inline">
+<pre class="no-pretty-print">
+{@code $ adb shell cmd appops set RUN_IN_BACKGROUND ignore}
+</pre>
+  </li>
+
+  <li>Untuk mengaktifkan kembali siaran implisit dan layanan latar belakang, masukkan
+  perintah berikut:
+  </li>
+
+  <li style="list-style: none; display: inline">
+<pre class="no-pretty-print">
+{@code $ adb shell cmd appops set RUN_IN_BACKGROUND allow}
+</pre>
+  </li>
+</ul>
\ No newline at end of file
diff --git a/docs/html-intl/intl/in/preview/features/direct-boot.jd b/docs/html-intl/intl/in/preview/features/direct-boot.jd
new file mode 100644
index 0000000..2952bb5
--- /dev/null
+++ b/docs/html-intl/intl/in/preview/features/direct-boot.jd
@@ -0,0 +1,180 @@
+page.title=Direct Boot
+page.keywords=preview,sdk,direct boot
+page.tags=androidn
+
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+  <h2>Dalam dokumen ini</h2>
+  <ol>
+    <li><a href="#run">Meminta Akses untuk Berjalan Selama Direct Boot</a></li>
+    <li><a href="#access">Mengakses Penyimpanan yang Dienkripsi dengan Perangkat</a></li>
+    <li><a href="#notification">Mendapatkan Pemberitahuan saat Pengguna Membuka Kunci</a></li>
+    <li><a href="#migrating">Migrasi Data yang Ada</a></li>
+    <li><a href="#testing">Menguji Aplikasi Peka Enkripsi Anda</a></li>
+  </ol>
+</div>
+</div>
+
+<p>Android N berjalan dalam mode <i>Direct Boot</i> yang aman
+bila perangkat telah dihidupkan namun pengguna tidak membuka
+kunci perangkat. Untuk mendukung hal ini, sistem menyediakan dua lokasi penyimpanan untuk data:</p>
+
+<ul>
+<li><i>Penyimpanan yang dienkripsi dengan kredensial</i>, yang merupakan lokasi penyimpanan default
+dan hanya tersedia setelah pengguna membuka kunci perangkat.</li>
+<li><i>Penyimpanan yang dienkripsi dengan perangkat</i>, yang merupakan lokasi penyimpanan yang tersedia
+selama mode Direct Boot dan setelah pengguna membuka kunci perangkat.</li>
+</ul>
+
+<p>Secara default, aplikasi tidak berjalan selama mode Direct Boot.
+Jika aplikasi Anda perlu melakukan tindakan selama mode Direct Boot, Anda bisa mendaftarkan
+komponen aplikasi yang harus dijalankan selama mode ini. Beberapa kasus penggunaan umum
+untuk aplikasi yang perlu dijalankan selama mode Direct Boot antara lain:</p>
+
+<ul>
+<li>Aplikasi yang telah menjadwalkan pemberitahuan, seperti aplikasi
+jam alarm.</li>
+<li>Aplikasi yang menyediakan pemberitahuan pengguna yang penting, seperti aplikasi SMS.</li>
+<li>Aplikasi yang menyediakan layanan aksesibilitas, seperti TalkBack.</li>
+</ul>
+
+<p>Jika aplikasi Anda perlu mengakses data saat dijalankan dalam mode Direct Boot, gunakan
+penyimpanan yang dienkripsi dengan perangkat. Penyimpanan yang dienkripsi dengan perangkat berisi data
+yang dienkripsi dengan kunci yang hanya tersedia setelah perangkat melakukan
+boot yang berhasil diverifikasi.</p>
+
+<p>Untuk data yang harus dienkripsi dengan kunci yang dikaitkan dengan kredensial
+pengguna, seperti PIN atau kata sandi, gunakan penyimpanan yang dienkripsi dengan kredensial.
+Penyimpanan yang dienkripsi dengan kredensial hanya tersedia setelah pengguna berhasil
+membuka kunci perangkat, hingga saat pengguna menghidupkan ulang perangkat lagi. Jika
+pengguna mengaktifkan layar kunci setelah membuka kunci perangkat, hal ini tidak akan mengunci
+penyimpanan yang dienkripsi dengan kredensial.</p>
+
+<h2 id="run">Meminta Akses untuk Berjalan Selama Direct Boot</h2>
+
+<p>Aplikasi harus mendaftarkan komponennya pada sistem agar
+bisa berjalan selama mode Direct Boot atau mengakses
+penyimpanan yang dienkripsi dengan perangkat. Aplikasi mendaftar pada sistem dengan menandai komponen sebagai
+<i>peka enkripsi</i>. Untuk menandai komponen Anda sebagai peka enkripsi, atur atribut
+<code>android:encryptionAware</code> ke true dalam manifes Anda.<p>
+
+<p>Komponen yang peka enkripsi bisa mendaftar untuk menerima pesan siaran
+<code>LOCKED_BOOT_COMPLETED</code> dari
+sistem bila perangkat telah dihidupkan ulang. Pada tahap ini
+penyimpanan yang dienkripsi dengan perangkat akan tersedia, dan komponen Anda bisa mengeksekusi tugas-tugas yang perlu
+dijalankan selama mode Direct Boot, seperti memicu alarm yang terjadwal.</p>
+
+<p>Cuplikan kode berikut adalah contoh cara mendaftarkan
+{@link android.content.BroadcastReceiver} sebagai peka enkripsi, dan menambahkan sebuah
+filter intent untuk <code>LOCKED_BOOT_COMPLETED</code>, dalam manifes aplikasi:</p>
+
+<pre>
+&lt;receiever
+  android:encryptionAware="true" &gt;
+  ...
+  &lt;intent-filter&gt;
+    &lt;action android:name="android.intent.action.LOCKED_BOOT_COMPLETED" /&gt;
+  &lt;/intent-filter&gt;
+&lt;/receiver&gt;
+</pre>
+
+<p>Setelah pengguna membuka kunci perangkat, semua komponen bisa mengakses
+penyimpanan yang dienkripsi dengan perangkat serta penyimpanan yang dienkripsi dengan kredensial.</p>
+
+<h2 id="access">Mengakses Penyimpanan yang Dienkripsi dengan Perangkat</h2>
+
+<p>Untuk mengakses penyimpanan yang dienkripsi dengan perangkat, buat instance
+{@link android.content.Context} kedua dengan memanggil
+<code>Context.createDeviceEncryptedStorageContext()</code>. Semua panggilan
+API penyimpanan yang dibuat menggunakan konteks ini akan mengakses penyimpanan yang dienkripsi dengan perangkat. Contoh
+berikut mengakses penyimpanan yang dienkripsi dengan perangkat dan membuka file data aplikasi
+yang ada:</p>
+
+<pre>
+Context directBootContext = Context.createDeviceEncryptedStorageContext();
+// Access appDataFilename that lives in device encrypted storage
+FileInputStream inStream = directBootContext.openFileInput(appDataFilename);
+// Use inStream to read content...
+</pre>
+
+<p>Gunakan penyimpanan yang dienkripsi dengan perangkat hanya untuk
+informasi yang harus bisa diakses selama mode Direct Boot.
+Jangan gunakan penyimpanan yang dienkripsi dengan perangkat sebagai penyimpanan terenkripsi serba guna.
+Untuk informasi pengguna yang bersifat pribadi, atau data terenkripsi yang tidak diperlukan selama
+mode Direct Boot, gunakan penyimpanan yang dienkripsi dengan kredensial.</p>
+
+<h2 id="notification">Mendapatkan Pemberitahuan saat Pengguna Membuka Kunci</h2>
+
+<p>Setelah pengguna membuka kunci perangkat setelah restart, aplikasi Anda bisa beralih untuk
+mengakses penyimpanan yang dienkripsi dengan kredensial dan menggunakan layanan sistem biasa yang
+bergantung pada kredensial pengguna.</p>
+
+<p>Agar diberi tahu bila pengguna membuka kunci perangkat setelah reboot,
+daftarkan {@link android.content.BroadcastReceiver} dari komponen yang berjalan
+untuk mendengarkan pesan <code>ACTION_USER_UNLOCKED</code>. Atau, Anda bisa
+menerima pesan {@link android.content.Intent#ACTION_BOOT_COMPLETED
+ACTION_BOOT_COMPLETED} yang ada, yang sekarang menunjukkan bahwa perangkat telah dihidupkan dan
+pengguna telah membuka kunci perangkat.</p>
+
+<p>Anda bisa langsung melakukan query apakah pengguna telah membuka kunci perangkat dengan memanggil
+<code>UserManager.isUserUnlocked()</code>.</p>
+
+<h2 id="migrating">Migrasi Data yang Ada</h2>
+
+<p>Jika pengguna memperbarui perangkat mereka untuk menggunakan mode Direct Boot,
+data Anda yang ada mungkin perlu dipindahkan ke penyimpanan yang dienkripsi dengan perangkat. Gunakan
+<code>Context.migrateSharedPreferencesFrom()</code> dan
+<code>Context.migrateDatabaseFrom()</code> untuk memindahkan data preferensi dan
+database antara penyimpanan yang dienkripsi dengan kredensial dan penyimpanan yang dienkripsi dengan perangkat.</p>
+
+<p>Pertimbangkan dengan baik saat memutuskan data apa yang akan dipindahkan dari
+penyimpanan yang dienkripsi dengan kredensial ke penyimpanan yang dienkripsi dengan perangkat. Anda sebaiknya tidak memindahkan
+informasi pengguna yang bersifat rahasia, seperti kata sandi atau token otorisasi, ke
+penyimpanan yang dienkripsi dengan perangkat. Dalam beberapa skenario, Anda mungkin perlu mengelola
+set data terpisah pada dua tempat penyimpanan yang dienkripsi.</p>
+
+<h2 id="testing">Menguji Aplikasi Peka Enkripsi Anda</h2>
+
+<p>Uji aplikasi peka enkripsi Anda menggunakan mode Direct Boot baru. Ada
+dua cara untuk mengaktifkan Direct Boot.</p>
+
+<p class="caution"><strong>Perhatian:</strong> Mengaktifkan Direct Boot
+akan menghapus semua data pengguna pada perangkat.</p>
+
+<p>Pada perangkat yang didukung dengan Android N terinstal, aktifkan
+Direct Boot dengan melakukan salah satu hal berikut:</p>
+
+<ul>
+<li>Pada perangkat, aktifkan <b>Developer options</b> jika Anda belum melakukannya dengan
+masuk ke <b>Settings &gt; About phone</b>, dan menyentuh <b>Build number</b>
+tujuh kali. Setelah layar Developer options terbuka, masuk ke
+<b>Settings &gt; Developer options</b> dan pilih
+<b>Convert to file encryption</b>.</li>
+<li>Gunakan perintah shell adb berikut untuk mengaktifkan mode Direct Boot:
+<pre class="no-pretty-print">
+$ adb reboot-bootloader
+$ fastboot --wipe-and-use-fbe
+</pre>
+</li>
+</ul>
+
+<p>Mode emulasi Direct Boot juga tersedia, jika Anda perlu mengganti
+mode pada perangkat pengujian. Mode emulasi sebaiknya hanya digunakan selama
+pengembangan dan bisa menyebabkan kehilangan data. Untuk mengaktifkan mode emulasi Direct Boot,
+atur pola kunci pada perangkat, pilih "No thanks" jika ditanya mengenai
+layar start-up aman saat menetapkan pola kunci, kemudian gunakan
+perintah shell adb berikut:</p>
+
+<pre class="no-pretty-print">
+$ adb shell sm set-emulate-fbe true
+</pre>
+
+<p>Untuk menonaktifkan mode emulasi Direct Boot, gunakan perintah berikut:</p>
+
+<pre class="no-pretty-print">
+$ adb shell sm set-emulate-fbe false
+</pre>
+
+<p>Menggunakan perintah ini akan menyebabkan perangkat melakukan reboot.</p>
diff --git a/docs/html-intl/intl/in/preview/features/icu4j-framework.jd b/docs/html-intl/intl/in/preview/features/icu4j-framework.jd
new file mode 100644
index 0000000..5b7547f
--- /dev/null
+++ b/docs/html-intl/intl/in/preview/features/icu4j-framework.jd
@@ -0,0 +1,158 @@
+page.title=ICU4J Android Framework API
+
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+<h2>Dalam dokumen ini:</h2>
+<ol>
+    <li><a href="#relation">Hubungan dengan ICU4J</a></li>
+    <li><a href="#migration">Migrasi ke android.icu API dari ICU4J </a></li>
+    <li><a href="#licence">Lisensi</a></li>
+</ol>
+
+<h2>Lihat Juga</h2>
+<ol>
+  <li>
+    <a class="external-link" href="http://userguide.icu-project.org">Dokumentasi untuk ICU4J</a>
+  </li>
+
+  <li>
+    <a class="external-link" href="http://site.icu-project.org/#TOC-What-is-ICU-">Standar terbaru yang didukung
+    oleh ICU4J</a>
+  </li>
+</ol>
+</div>
+</div>
+
+<p>
+  ICU4J merupakan serangkaian pustaka Java sumber terbuka yang banyak digunakan dan menyediakan Unicode
+  serta dukungan globalisasi untuk aplikasi perangkat lunak. Android N
+  mengekspos subset ICU4J API dalam kerangka kerja Android bagi pengembang aplikasi
+  untuk digunakan pada paket {@code android.icu}. API ini menggunakan
+  data pelokalan yang ada pada perangkat. Hasilnya, Anda bisa mengurangi footprint
+  APK dengan tidak mengompilasi pustaka ICU4J ke APK Anda; sebagai gantinya,
+  cukup memanggilnya dalam kerangka kerja. (Dalam hal ini, Anda mungkin perlu menyediakan
+  <a href="{@docRoot}google/play/publishing/multiple-apks.html">beberapa versi
+  APK Anda</a>, sehingga pengguna yang menjalankan versi Android lebih rendah dari Android N
+  bisa mengunduh versi aplikasi yang berisi pustaka ICU4J.)
+</p>
+
+<p>
+  Dokumen ini diawali dengan menyediakan beberapa informasi dasar tentang level API Android
+  minimum yang diperlukan untuk mendukung pustaka-pustaka ini. Kemudian dijelaskan tentang apa
+  yang perlu Anda ketahui tentang implementasi ICU4J spesifik Android. Terakhir,
+  Anda akan diberi tahu cara menggunakan ICU4J API dalam kerangka kerja Android.
+</p>
+
+<h2 id="relation">Hubungan dengan ICU4J</h2>
+
+<p>
+  Android N mengekspos subset ICU4J API lewat
+  paket <code>android.icu</code>, bukannya <code>com.ibm.icu</code>. Kerangka kerja
+  Android dapat memilih untuk tidak
+  mengekspos ICU4J API karena berbagai alasan; misalnya, Android N tidak mengekspos
+  beberapa API yang tidak digunakan lagi atau yang dinyatakan belum
+  stabil oleh tim ICU. Karena tim ICU tidak lagi menggunakan API di masa mendatang, Android juga akan menandainya
+  sebagai tidak digunakan lagi namun akan terus menyertakannya.
+</p>
+
+<p class="table-caption"><strong>Tabel 1.</strong> Versi ICU dan CLDR yang digunakan
+  di Android N.</p>
+<table>
+<tr>
+<th>Level API Android</th>
+<th>Versi ICU</th>
+<th>Versi CLDR</th>
+</tr>
+<tr>
+<td>Android N</td>
+<td>56</td>
+<td>28</td>
+</tr>
+</table>
+
+<p>Inilah beberapa hal penting yang harus diperhatikan:</p>
+
+<ul>
+<li>ICU4J Android Framework API tidak menyertakan semua ICU4J API.</li>
+<li>Pengembang NDK harus mengetahui bahwa Android ICU4C tidak didukung.</li>
+<li>API dalam kerangka kerja Android tidak menggantikan dukungan Android untuk
+<a href="{@docRoot}guide/topics/resources/localization.html">melokalkan dengan
+sumber daya</a>.</li>
+</ul>
+
+<h2 id="migration">Migrasi ke paket android.icu dari com.ibm.icu</h2>
+
+<p>
+  Jika Anda sudah menggunakan ICU4J API dalam aplikasi, dan
+  <code>android.icu</code> API memenuhi persyaratan Anda, maka migrasi ke
+  API kerangka kerja mengharuskan Anda untuk mengubah impor Java
+  dari <code>com.ibm.icu</code> ke <code>android.icu</code>. Kemudian Anda bisa
+  menghapus salinan file ICU4J dari APK.
+</p>
+
+<p class="note">
+  <b>Catatan</b>: API kerangka kerja ICU4J menggunakan namespace {@code android.icu}
+  sebagai ganti {@code com.ibm.icu}. Hal ini untuk menghindari konflik
+  namespace di APK yang berisi pustaka {@code com.ibm.icu} sendiri.
+</p>
+
+<h3 id="migrate-from-android">
+  Migrasi ke API android.icu dari Android SDK API lainnya
+</h3>
+
+<p>
+  Beberapa kelas dalam paket <code>java</code> dan <code>android</code> memiliki
+  padanannya dengan yang ditemukan di ICU4J. Akan tetapi, ICU4J seringkali menyediakan dukungan
+  yang lebih luas untuk standar dan bahasa.
+</p>
+<p>Inilah beberapa contoh untuk membantu Anda memulai:</p>
+<table>
+<tr>
+<th>Kelas</th>
+<th>Alternatif</th>
+</tr>
+<tr>
+<td><code>java.lang.Character</code> </td>
+<td><code>android.icu.lang.UCharacter</code> </td>
+</tr>
+<tr>
+<td><code>java.text.BreakIterator</code> </td>
+<td><code>android.icu.text.BreakIterator</code> </td>
+</tr>
+<tr>
+<td><code>java.text.DecimalFormat</code> </td>
+<td><code>android.icu.text.DecimalFormat</code> </td>
+</tr>
+<tr>
+<td><code>java.util.Calendar</code></td>
+<td>
+<code>android.icu.util.Calendar</code></td>
+</tr>
+<tr>
+<td><code>android.text.BidiFormatter</code>
+ </td>
+<td><code>android.icu.text.Bidi</code>
+ </td>
+</tr>
+<tr>
+<td><code>android.text.format.DateFormat</code>
+ </td>
+<td><code>android.icu.text.DateFormat</code>
+ </td>
+</tr>
+<tr>
+<td><code>android.text.format.DateUtils</code> </td>
+<td><code>android.icu.text.DateFormat</code>
+<code>android.icu.text.RelativeDateTimeFormatter</code>
+</td>
+</tr>
+</table>
+
+<h2 id="licence">Lisensi</h2>
+
+<p>
+  ICU4J dirilis dengan lisensi ICU. Untuk detailnya, lihat <a class="external-link" href="http://userguide.icu-project.org/icufaq#TOC-How-is-the-ICU-licensed-">Panduan Pengguna
+  ICU.</a>
+</p>
diff --git a/docs/html-intl/intl/in/preview/features/multi-window.jd b/docs/html-intl/intl/in/preview/features/multi-window.jd
new file mode 100644
index 0000000..f879dc5
--- /dev/null
+++ b/docs/html-intl/intl/in/preview/features/multi-window.jd
@@ -0,0 +1,582 @@
+page.title=Dukungan Multi-Jendela
+page.metaDescription=Dukungan baru di Android N untuk menampilkan lebih dari satu aplikasi sekaligus.
+page.keywords="multi-window", "android N", "split screen", "free-form"
+
+@jd:body
+
+<div id="qv-wrapper">
+  <div id="qv">
+    <h2>Dalam dokumen ini</h2>
+      <ol>
+        <li><a href="#overview">Ikhtisar</a></li>
+        <li><a href="#lifecycle">Daur Hidup Multi-Jendela</a></li>
+        <li><a href="#configuring">Mengonfigurasi Aplikasi Anda untuk Mode
+              Multi-Jendela</a></li>
+        <li><a href="#running">Menjalankan Aplikasi Anda dalam Mode Multi-Jendela</a></li>
+        <li><a href="#testing">Menguji Dukungan Multi-Jendela Aplikasi Anda</a></li>
+      </ol>
+    <h2>Lihat Juga</h2>
+      <ol>
+        <li><a class="external-link" href="https://github.com/googlesamples/android-MultiWindowPlayground">Aplikasi contoh Multi-Window
+          Playground</a></li>
+      </ol>
+  </div>
+</div>
+
+<p>
+  Android N menambahkan dukungan untuk menampilkan lebih dari satu aplikasi
+  sekaligus. Pada perangkat genggam, dua aplikasi bisa berjalan berdampingan atau
+  atas-bawah dalam mode <em>layar terbagi</em>. Pada perangkat TV, aplikasi bisa
+  menggunakan mode <em>gambar-dalam-gambar</em> untuk melanjutkan pemutaran video selagi pengguna
+  berinteraksi dengan aplikasi lain.
+</p>
+
+<p>
+  Jika Anda membangun aplikasi Anda dengan N Preview SDK, Anda bisa mengonfigurasi cara aplikasi
+  menangani tampilan multi-jendela. Misalnya, Anda bisa menetapkan dimensi
+  minimum yang diizinkan aktivitas Anda. Anda juga bisa menonaktifkan tampilan multi-jendela untuk
+   aplikasi, sehingga memastikan sistem hanya menampilkan aplikasi Anda dalam mode
+  layar penuh.
+</p>
+
+<h2 id="overview">Ikhtisar</h2>
+
+<p>
+  Android N memungkinkan beberapa aplikasi berbagi layar sekaligus. Misalnya,
+  pengguna bisa membagi layar, melihat halaman web di sisi kiri
+  sambil menulis email di sisi kanan. Pengalaman pengguna bergantung pada
+  perangkat:
+</p>
+
+<ul>
+  <li>Perangkat genggam yang menjalankan Android N menawarkan mode
+  layar terbagi. Di mode ini, sistem mengisi layar dengan dua aplikasi, menampilkannya secara
+  berdampingan atau atas-bawah. Pengguna bisa menyeret garis pembagi
+   yang memisahkan keduanya untuk membuat satu aplikasi lebih besar dan yang lainnya lebih kecil.
+  </li>
+
+  <li>Pada Nexus Player yang menjalankan Android N, aplikasi bisa menempatkan diri
+  dalam <a href="picture-in-picture.html">mode gambar-dalam-gambar</a>, yang memungkinkannya
+  untuk terus menampilkan konten selagi pengguna melihat-lihat atau berinteraksi dengan
+   aplikasi lain.
+  </li>
+
+  <li>Produsen perangkat berukuran lebih besar bisa memilih untuk mengaktifkan mode
+ bentuk bebas, di mana pengguna bisa bebas mengubah ukuran setiap aktivitas. Jika
+  produsen mengaktifkan fitur ini, perangkat akan menawarkan mode bentuk bebas sebagai tambahan
+  untuk mode layar terbagi.
+  </li>
+</ul>
+
+<img src="{@docRoot}preview/images/mw-splitscreen.png" alt="" width="650" srcset="{@docRoot}preview/images/mw-splitscreen.png 1x,
+    {@docRoot}preview/images/mw-splitscreen_2x.png 2x," id="img-split-screen" />
+<p class="img-caption">
+  <strong>Gambar 1.</strong> Dua aplikasi berjalan berdampingan dalam mode layar terbagi.
+</p>
+
+<p>
+  Pengguna bisa beralih ke mode multi-jendela dengan cara berikut:
+</p>
+
+<ul>
+  <li>Jika pengguna membuka <a href="{@docRoot}guide/components/recents.html">layar
+  Overview</a> dan menekan lama pada
+  judul aktivitas, mereka bisa menyeret aktivitas itu ke bagian yang disorot pada layar
+  untuk menempatkan aktivitas dalam mode multi-jendela.
+  </li>
+
+  <li>Jika pengguna menekan lama pada tombol Overview, perangkat akan menempatkan
+   aktivitas saat ini dalam mode multi-jendela, dan membuka layar Overview guna
+  memungkinkan pengguna memilih aktivitas lain untuk berbagi layar.
+  </li>
+</ul>
+
+<p>
+  Pengguna bisa <a href="{@docRoot}guide/topics/ui/drag-drop.html">menyeret dan
+  meletakkan</a> data dari aktivitas satu ke aktivitas lain sewaktu aktivitas berbagi
+  layar. (Sebelumnya, pengguna hanya bisa menyeret dan meletakkan data dalam aktivitas
+  tunggal.)
+</p>
+
+<h2 id="lifecycle">Daur Hidup Multi-Jendela</h2>
+
+<p>
+  Mode multi-jendela tidak mengubah <a href="{@docRoot}training/basics/activity-lifecycle/index.html">daur hidup
+  aktivitas</a>.
+</p>
+
+<p>
+  Dalam mode multi-jendela, hanya aktivitas yang paling sering digunakan pengguna
+  yang akan aktif pada waktu tertentu. Aktivitas ini dianggap <em>teratas</em>.
+  Semua aktivitas lainnya dalam keadaan berhenti sementara, sekalipun terlihat.
+  Akan tetapi, sistem memberikan aktivitas, yang berhenti-sementara-namun-terlihat ini, prioritas lebih tinggi
+   daripada aktivitas yang tidak terlihat. Jika pengguna berinteraksi dengan salah satu
+  aktivitas yang berhenti sementara, aktivitas tersebut akan dilanjutkan kembali, dan aktivitas
+  teratas sebelumnya akan dihentikan sementara.
+</p>
+
+<p class="note">
+  <strong>Catatan:</strong> Dalam mode multi-jendela, aplikasi bisa berada dalam keadaan berhenti sementara
+  dan masih terlihat oleh pengguna. Sebuah aplikasi mungkin perlu melanjutkan aktivitasnya
+   bahkan saat berhenti sementara. Misalnya, aplikasi pemutar video yang ada dalam
+   mode berhenti sementara namun terlihat harus tetap menampilkan videonya. Karena alasan
+  ini, kami menyarankan aktivitas yang memutar video<em>tidak</em> menghentikan sementara video
+   dalam handler {@link android.app.Activity#onPause onPause()} mereka.
+  Sebagai gantinya, aktivitas itu harus menghentikan sementara video di {@link android.app.Activity#onStop
+  onStop()}, dan melanjutkan pemutaran di {@link android.app.Activity#onStart
+  onStart()}.
+</p>
+
+<p>
+  Bila pengguna menempatkan aplikasi dalam mode multi-jendela, sistem akan memberi tahu
+   aktivitas tersebut mengenai perubahan konfigurasi, sebagaimana ditetapkan dalam <a href="{@docRoot}guide/topics/resources/runtime-changes.html">Menangani Perubahan
+  Runtime</a>. Pada dasarnya, perubahan ini memiliki implikasi siklus hidup aktivitas yang sama
+   seperti saat sistem memberi tahu aplikasi bahwa perangkat telah beralih
+   dari mode potret ke mode lanskap, kecuali dimensi perangkat
+   telah berubah sebagai ganti bertukar posisi. Seperti yang dibahas di <a href="{@docRoot}guide/topics/resources/runtime-changes.html">Menangani Perubahan
+  Runtime</a>, aktivitas Anda bisa menangani perubahan konfigurasi itu sendiri, atau
+   mengizinkan sistem memusnahkan aktivitas dan membuatnya kembali dengan dimensi
+  baru.
+</p>
+
+<p>
+  Jika pengguna mengubah ukuran jendela dan membuat dimensinya jadi lebih besar, sistem
+   akan mengubah ukuran aktivitas untuk menyesuaikan dengan tindakan pengguna dan mengeluarkan <a href="{@docRoot}guide/topics/resources/runtime-changes.html">perubahan runtime</a>
+  sebagaimana diperlukan. Jika aplikasi tertinggal dari gambar di bidang yang baru saja diekspos,
+  sistem untuk sementara akan mengisi bidang tersebut dengan warna yang ditetapkan oleh atribut {@link
+  android.R.attr#windowBackground windowBackground} atau dengan atribut gaya
+  <code>windowBackgroundFallback</code> secara default.
+</p>
+
+<h2 id="configuring">Mengonfigurasi Aplikasi Anda untuk Mode Multi-Jendela</h2>
+
+<p>
+  Jika aplikasi Anda menargetkan Android N, Anda bisa mengonfigurasi bagaimana dan
+  apakah aktivitas aplikasi Anda mendukung tampilan multi-jendela. Anda bisa mengatur
+  atribut dalam manifes untuk mengontrol ukuran dan layoutnya.
+  Pengaturan atribut aktivitas root berlaku untuk semua aktivitas
+   dalam tumpukan tugasnya.
+</p>
+
+<p class="note">
+  <strong>Catatan:</strong> Jika Anda membangun aplikasi multi-orientasi dengan versi
+  SDK lebih rendah dari Android N, dan pengguna menggunakan aplikasi
+   dalam mode multi-jendela, sistem akan mengubah ukuran aplikasi secara paksa. Sistem akan menampilkan kotak
+  dialog yang memperingatkan pengguna bahwa aplikasi mungkin berperilaku tidak terduga. Sistem
+   <em>tidak</em> mengubah ukuran aplikasi yang berorientasi tetap; jika
+  pengguna berusaha membuka  aplikasi berorientasi tetap saat mode multi-jendela,
+  aplikasi akan menggunakan seluruh layar.
+</p>
+
+<h4 id="resizeableActivity">android:resizeableActivity</h4>
+<p>
+  Atur atribut ini dalam manifes <code>&lt;activity&gt;</code> Anda atau simpul
+  <code>&lt;application&gt;</code> untuk mengaktifkan atau menonaktifkan tampilan
+   multi-jendela:
+</p>
+
+<pre>
+android:resizeableActivity=["true" | "false"]
+</pre>
+
+<p>
+  Jika atribut ini diatur ke true, aktivitas bisa dijalankan di
+  mode layar terbagi dan mode bentuk bebas. Jika atribut ini diatur ke false, aktivitas
+  tidak akan mendukung mode multi-jendela. Jika nilai ini false, dan pengguna
+  berusaha memulai aktivitas dalam mode multi-jendela, aktivitas akan menggunakan
+   layar penuh.
+</p>
+
+<p>
+  Jika aplikasi Anda menargetkan Android N, namun Anda tidak menetapkan nilai
+  untuk atribut ini, nilai atribut default adalah true.
+</p>
+
+<h4 id="supportsPictureInPicture">android:supportsPictureInPicture</h4>
+
+<p>
+  Atur atribut ini dalam simpul <code>&lt;activity&gt;</code> manifes Anda untuk
+  menunjukkan apakah aktivitas mendukung tampilan gambar-dalam-gambar. Atribut ini
+  diabaikan jika <code>android:resizeableActivity</code> bernilai false.
+</p>
+
+<pre>
+android:supportsPictureInPicture=["true" | "false"]
+</pre>
+
+<h3 id="layout">Atribut layout</h3>
+
+<p>
+  Dengan Android N, elemen manifes <code>&lt;layout&gt;</code>
+  mendukung beberapa atribut yang memengaruhi cara aktivitas berperilaku dalam
+  mode multi-jendela:
+</p>
+
+<dl>
+  <dt>
+    <code>android:defaultWidth</code>
+  </dt>
+
+  <dd>
+    Lebar default aktivitas saat dijalankan dalam mode bentuk bebas.
+  </dd>
+
+  <dt>
+    <code>android:defaultHeight</code>
+  </dt>
+
+  <dd>
+    Tinggi default aktivitas saat dijalankan dalam mode bentuk bebas.
+  </dd>
+
+  <dt>
+    <code>android:gravity</code>
+  </dt>
+
+  <dd>
+    Penempatan awal dari aktivitas saat dibuka dalam mode bentuk bebas. Lihat referensi
+    {@link android.view.Gravity} untuk mengetahui nilai yang cocok.
+  </dd>
+
+  <dt>
+    <code>android:minimalSize</code>
+  </dt>
+
+  <dd>
+    Tinggi dan lebar minimum untuk aktivitas dalam mode layar terbagi
+    dan mode bentuk bebas. Jika pengguna memindahkan pembagi dalam mode layar terbagi
+    untuk membuat aktivitas lebih kecil dari minimum yang ditetapkan, sistem akan memangkas
+   aktivitas sesuai dengan ukuran yang diminta pengguna.
+  </dd>
+</dl>
+
+<p>
+  Misalnya, kode berikut menampilkan cara menetapkan ukuran dan lokasi default
+  aktivitas, dan ukuran minimumnya, bila aktivitas ditampilkan dalam
+   mode bentuk bebas:
+</p>
+
+<pre>
+&lt;activity android:name=".MyActivity"&gt;
+    &lt;layout android:defaultHeight="500dp"
+          android:defaultWidth="600dp"
+          android:gravity="top|end"
+          android:minimalSize="450dp" /&gt;
+&lt;/activity&gt;
+</pre>
+
+<h2 id="running">Menjalankan Aplikasi Anda dalam Mode Multi-Jendela</h2>
+
+<p>
+  Android N menawarkan fungsionalitas baru untuk mendukung aplikasi yang bisa berjalan
+  dalam mode multi-jendela.
+</p>
+
+<h3 id="disabled-features">Fitur yang dinonaktifkan dalam mode multi-jendela</h3>
+
+<p>
+  Fitur tertentu akan dinonaktifkan atau diabaikan bila perangkat berada dalam mode
+  multi-jendela, karena dianggap tidak logis bagi suatu aktivitas yang mungkin berbagi
+  layar perangkat dengan aktivitas atau aplikasi lainnya. Fitur tersebut meliputi:
+
+<ul>
+  <li>Beberapa opsi penyesuaian di <a href="{@docRoot}training/system-ui/index.html">System UI</a>
+  dinonaktifkan; misalnya, aplikasi tidak bisa menyembunyikan baris status
+  jika tidak berjalan dalam mode layar penuh.
+  </li>
+
+  <li>Sistem akan mengabaikan perubahan pada atribut <code><a href=
+  "{@docRoot}guide/topics/manifest/activity-element.html#screen"
+  >android:screenOrientation</a></code>.
+  </li>
+</ul>
+
+<h3 id="change-notification">Pemberitahuan perubahan multi-jendela dan melakukan query</h3>
+
+<p>
+  Metode baru berikut telah ditambahkan ke kelas {@link android.app.Activity}
+  untuk mendukung tampilan multi-jendela. Untuk mengetahui detail tentang setiap metode, lihat
+  <a href="{@docRoot}preview/setup-sdk.html#docs-dl">Referensi N Preview SDK</a>.
+</p>
+
+<dl>
+  <dt>
+    <code>Activity.inMultiWindow()</code>
+  </dt>
+
+  <dd>
+    Panggil untuk mengetahui apakah aktivitas berada dalam mode multi-jendela.
+  </dd>
+
+  <dt>
+    <code>Activity.inPictureInPicture()</code>
+  </dt>
+
+  <dd>
+    Panggil untuk mengetahui apakah aktivitas berada dalam mode gambar-dalam-gambar.
+
+    <p class="note">
+      <strong>Catatan:</strong> Mode gambar-dalam-gambar adalah kasus khusus pada
+      mode multi-jendela. Jika <code>myActivity.inPictureInPicture()</code>
+     mengembalikan nilai true, maka <code>myActivity.inMultiWindow()</code> juga mengembalikan nilai
+      true.
+    </p>
+  </dd>
+
+  <dt>
+    <code>Activity.onMultiWindowChanged()</code>
+  </dt>
+
+  <dd>
+    Sistem akan memanggil metode ini bila aktivitas masuk atau keluar dari
+    mode multi-jendela. Sistem akan meneruskan metode sebuah nilai true jika
+   aktivitas tersebut memasuki mode multi-jendela, dan nilai false jika aktivitas
+     tersebut meninggalkan mode multi-jendela.
+  </dd>
+
+  <dt>
+    <code>Activity.onPictureInPictureChanged()</code>
+  </dt>
+
+  <dd>
+    Sistem akan memanggil metode ini bila aktivitas masuk atau keluar dari
+    mode gambar-dalam-gambar. Sistem akan meneruskan metode sebuah nilai true jika
+   aktivitas tersebut memasuki mode gambar-dalam-gambar, dan nilai false jika aktivitas
+     tersebut meninggalkan mode gambar-dalam-gambar.
+  </dd>
+</dl>
+
+<p>
+  Ada juga versi {@link android.app.Fragment} untuk setiap
+  metode ini, misalnya <code>Fragment.inMultiWindow()</code>.
+</p>
+
+<h3 id="entering-pip">Memasuki mode gambar-dalam-gambar</h3>
+
+<p>
+  Untuk menempatkan aktivitas dalam mode gambar-dalam-gambar, panggil metode baru
+  <code>Activity.enterPictureInPicture()</code>. Metode ini tidak berpengaruh jika
+   perangkat tidak mendukung mode gambar-dalam-gambar. Untuk informasi selengkapnya,
+   lihat dokumentasi <a href="picture-in-picture.html">Gambar-dalam-Gambar</a>.
+</p>
+
+<h3 id="launch">Meluncurkan Aktivitas Baru dalam Mode Multi-Jendela</h3>
+
+<p>
+  Bila meluncurkan aktivitas baru, Anda bisa memberi petunjuk pada sistem bahwa aktivitas
+  baru harus ditampilkan bersebelahan dengan aktivitas yang sedang aktif, jika memungkinkan. Caranya,
+  gunakan flag
+  <code>Intent.FLAG_ACTIVITY_LAUNCH_TO_ADJACENT</code>. Meneruskan
+  flag ini akan meminta perilaku berikut:
+</p>
+
+<ul>
+  <li>Jika perangkat berada dalam mode layar terbagi, sistem akan berupaya membuat
+  aktivitas baru di sebelah aktivitas yang meluncurkannya, sehingga kedua aktivitas tersebut
+  berbagi layar. Tidak ada jaminan sistem mampu melakukannya, namun sistem akan
+  membuat aktivitas bersebelahan jika memungkinkan.
+  </li>
+
+  <li>Jika perangkat tidak berada dalam mode layar terbagi, flag ini tidak akan berpengaruh.
+  </li>
+</ul>
+
+<p>
+  Jika perangkat berada dalam mode bentuk bebas dan Anda meluncurkan aktivitas baru, Anda bisa
+  menetapkan dimensi dan lokasi layar aktivitas baru dengan memanggil
+  <code>ActivityOptions.setLaunchBounds()</code>. Metode ini tidak berpengaruh jika
+  perangkat tidak berada dalam mode multi-jendela.
+</p>
+
+<p class="note">
+  <strong>Catatan:</strong> Jika Anda meluncurkan aktivitas dalam tumpukan tugas, aktivitas
+  tersebut akan menggantikan aktivitas pada layar, dengan mewarisi semua
+   properti multi-jendelanya. Jika Anda ingin meluncurkan aktivitas baru sebagai jendela
+  terpisah dalam mode multi-jendela, Anda harus meluncurkannya dalam tumpukan tugas baru.
+</p>
+
+<h3 id="dnd">Mendukung seret dan letakkan</h3>
+
+<p>
+  Pengguna bisa <a href="{@docRoot}guide/topics/ui/drag-drop.html">menyeret dan
+  meletakkan</a> data dari satu aktivitas ke aktivitas yang lain selagi kedua aktivitas
+  berbagi layar. (Sebelumnya, pengguna hanya bisa menyeret dan meletakkan data dalam
+   aktivitas tunggal.) Karena alasan ini, Anda mungkin perlu menambahkan fungsionalitas
+  seret dan letakkan ke aplikasi Anda jika aplikasi Anda saat ini belum mendukungnya.
+</p>
+
+<p>
+  N Preview SDK menambahkan paket <a href="{@docRoot}reference/android/view/package-summary.html"><code>android.view</code></a>
+  untuk mendukung seret dan letakkan lintas-aplikasi. Untuk mengetahui detail tentang kelas dan metode
+  berikut, lihat <a href="{@docRoot}preview/setup-sdk.html#docs-dl">Referensi N
+  Preview SDK</a>.
+</p>
+
+<dl>
+  <dt>
+    <code>android.view.DropPermissions</code>
+  </dt>
+
+  <dd>
+    Objek token bertanggung jawab menetapkan izin yang diberikan kepada aplikasi
+    yang menerima peletakan tersebut.
+  </dd>
+
+  <dt>
+    <code>View.startDragAndDrop()</code>
+  </dt>
+
+  <dd>
+    Alias baru untuk {@link android.view.View#startDrag View.startDrag()}. Untuk
+    mengaktifkan seret dan letakkan lintas-aktivitas, teruskan flag baru
+    <code>View.DRAG_FLAG_GLOBAL</code>. Jika Anda perlu memberikan izin URI ke
+    aktivitas penerima, teruskan flag baru,
+    <code>View.DRAG_FLAG_GLOBAL_URI_READ</code> atau
+    <code>View.DRAG_FLAG_GLOBAL_URI_WRITE</code>, sebagaimana mestinya.
+  </dd>
+
+  <dt>
+    <code>View.cancelDragAndDrop()</code>
+  </dt>
+
+  <dd>
+    Membatalkan operasi seret yang sedang berlangsung. Hanya bisa dipanggil oleh
+    aplikasi yang menghasilkan operasi seret.
+  </dd>
+
+  <dt>
+    <code>View.updateDragShadow()</code>
+  </dt>
+
+  <dd>
+    Menggantikan bayangan penyeretan untuk operasi seret yang sedang berlangsung. Hanya
+    bisa dipanggil oleh aplikasi yang menghasilkan operasi seret.
+  </dd>
+
+  <dt>
+    <code>Activity.requestDropPermissions()</code>
+  </dt>
+
+  <dd>
+    Meminta izin untuk URI konten yang diteruskan dengan {@link
+    android.content.ClipData} yang terdapat dalam {@link android.view.DragEvent}.
+  </dd>
+</dl>
+
+<h2 id="testing">Menguji Dukungan Multi-Jendela Aplikasi Anda</h2>
+
+<p>
+  Baik Anda memperbarui aplikasi untuk Android N maupun tidak, Anda harus
+  memverifikasi caranya bertindak dalam mode multi-jendela jika pengguna mencoba meluncurkannya
+  dalam mode multi-jendela pada perangkat yang menjalankan Android N.
+</p>
+
+<h3 id="configuring">Mengonfigurasi Perangkat Pengujian</h3>
+
+<p>
+  Jika Anda menginstal Android N pada perangkat, mode
+  layar terbagi secara otomatis didukung.
+</p>
+
+<h3 id="test-non-n">Jika aplikasi Anda tidak dibangun dengan N Preview SDK</h3>
+
+<p>
+  Jika Anda tidak membangun aplikasi dengan N Preview SDK dan pengguna berupaya menggunakan
+  aplikasi dalam mode multi-jendela, sistem secara paksa akan mengubah ukuran aplikasi kecuali jika aplikasi
+  mendeklarasikan orientasi tetap.
+</p>
+
+<p>
+  Jika aplikasi Anda tidak mendeklarasikan orientasi tetap, Anda harus meluncurkan aplikasi
+  pada perangkat yang menjalankan Android N dan berupaya menempatkan aplikasi tersebut dalam
+  mode layar terbagi. Pastikan pengalaman pengguna
+  bisa diterima bila aplikasi secara paksa diubah ukurannya.
+</p>
+
+<p>
+  Jika aplikasi mendeklarasikan orientasi tetap, Anda harus berupaya menempatkan aplikasi dalam
+  mode multi-jendela. Periksa apakah Anda melakukannya, aplikasi tetap berada dalam
+  mode layar penuh.
+</p>
+
+<h3 id="test-mw">Jika Anda mendukung mode multi-jendela</h3>
+
+<p>
+  Jika Anda membuat aplikasi Anda dengan N Preview SDK dan belum menonaktifkan
+  dukungan multi-jendela, periksa perilaku berikut dalam mode layar terbagi
+   dan mode bentuk bebas.
+</p>
+
+<ul>
+  <li>Luncurkan aplikasi dalam mode layar penuh, kemudian beralih ke mode multi-jendela dengan
+   menekan lama pada tombol Overview. Periksa apakah aplikasi berpindah dengan benar.
+  </li>
+
+  <li>Jalankan aplikasi secara langsung dalam mode multi-jendela, dan pastikan aplikasi
+  diluncurkan dengan benar. Anda bisa meluncurkan aplikasi dalam mode multi-jendela dengan menekan
+  tombol Overview, kemudian menekan lama baris judul pada aplikasi Anda dan menyeretnya
+  ke salah satu area yang disorot di layar.
+  </li>
+
+  <li>Ubah ukuran aplikasi Anda dalam mode layar terbagi dengan menyeret garis pembagi.
+  Periksa apakah aplikasi mengubah ukuran tanpa crash, dan apakah elemen UI yang diperlukan
+  terlihat.
+  </li>
+
+  <li>Jika Anda telah menetapkan dimensi minimum aplikasi, cobalah untuk mengubah ukuran
+  aplikasi di bawah dimensi tersebut. Periksa apakah Anda tidak bisa mengubah ukuran aplikasi menjadi
+  lebih kecil dari minimum yang ditetapkan.
+  </li>
+
+  <li>Melalui semua tes, periksa apakah kinerja aplikasi Anda bisa diterima. Misalnya,
+  periksa apakah tidak ada jeda yang terlalu lama untuk memperbarui UI setelah
+  aplikasi diubah ukurannya.
+  </li>
+</ul>
+
+<h4 id="test-checklist">Daftar periksa pengujian</h4>
+
+<p>
+  Untuk memeriksa kinerja aplikasi Anda dalam mode multi-jendela, cobalah operasi
+  berikut. Anda harus mencoba semua operasi ini dalam mode layar terbagi dan
+   dan mode multi-jendela, kecuali jika dinyatakan berbeda.
+</p>
+
+<ul>
+  <li>Masuki dan tinggalkan mode multi-jendela.
+  </li>
+
+  <li>Beralih dari aplikasi Anda ke aplikasi lain, dan periksa apakah aplikasi berperilaku
+   sebagaimana mestinya saat terlihat namun tidak aktif. Misalnya, jika aplikasi Anda
+   sedang memutar video, periksa apakah video terus diputar selagi pengguna
+  berinteraksi dengan aplikasi lain.
+  </li>
+
+  <li>Dalam mode layar terbagi, cobalah menggeser garis pembagi untuk membuat aplikasi
+  Anda menjadi lebih besar dan lebih kecil. Coba operasi ini dalam konfigurasi berdampingan dan
+  atas-bawah. Periksa apakah aplikasi tidak crash,
+  fungsionalitas penting bisa terlihat, dan operasi mengubah ukuran tidak memakan waktu terlalu
+  lama.
+  </li>
+
+  <li>Lakukan beberapa operasi ubah ukuran berturut-turut dalam waktu cepat. Periksa apakah
+  aplikasi Anda tidak crash atau mengalami kebocoran memori. Untuk informasi tentang memeriksa penggunaan memori
+  aplikasi Anda, lihat <a href="{@docRoot}tools/debugging/debugging-memory.html">
+  Menyelidiki Penggunaan RAM Anda</a>.
+  </li>
+
+  <li>Gunakan aplikasi secara normal di sejumlah konfigurasi jendela yang berbeda, dan
+  periksa apakah aplikasi berperilaku sebagaimana mestinya. Periksa apakah teks terbaca, dan apakah
+  elemen UI tidak terlalu kecil untuk interaksi.
+  </li>
+</ul>
+
+<h3 id="test-disabled-mw">Jika Anda telah menonaktifkan dukungan multi-jendela</h3>
+
+<p>
+  Jika Anda menonaktifkan dukungan multi-jendela dengan mengatur
+  <code>android:resizableActivity="false"</code>, Anda harus menjalankan aplikasi pada
+  perangkat yang menjalankan Android N dan berusaha menempatkan aplikasi dalam
+  mode bentuk bebas dan mode layar terbagi. Periksa apakah Anda melakukannya, aplikasi tetap berada dalam
+  mode layar penuh.
+</p>
diff --git a/docs/html-intl/intl/in/preview/features/multilingual-support.jd b/docs/html-intl/intl/in/preview/features/multilingual-support.jd
new file mode 100644
index 0000000..0a73bcf
--- /dev/null
+++ b/docs/html-intl/intl/in/preview/features/multilingual-support.jd
@@ -0,0 +1,214 @@
+page.title=Bahasa dan Lokal
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+<h2>Dalam dokumen ini:</h2>
+<ol>
+	  <li><a href="#preN">Tantangan dalam Mengatasi Masalah Sumber Daya Bahasa</a></li>
+    <li><a href="#postN">Peningkatan pada Strategi Resolusi Sumber Daya</a></li>
+    <li><a href="#design">Mendesain Aplikasi Anda untuk Mendukung Lokal
+      Tambahan</a></li>
+
+</ol>
+
+</div>
+</div>
+
+<p>Android N memberikan dukungan yang disempurnakan untuk pengguna multibahasa,
+yang memungkinkan mereka memilih beberapa lokal dalam pengaturan. Android N
+menyediakan kemampuan ini dengan memperbanyak jumlah lokal yang didukung
+dan mengubah cara sistem mengatasi masalah sumber daya. Metode baru mengatasi
+masalah sumber daya ini lebih tangguh dan didesain agar kompatibel dengan APK yang ada, namun
+Anda harus ekstra hati-hati terhadap perilaku tak terduga. Misalnya, Anda
+harus menguji untuk memastikan aplikasi Anda secara default diatur ke bahasa yang diinginkan. Juga,
+jika aplikasi Anda mendukung beberapa bahasa, Anda harus memastikan dukungan ini berfungsi
+sebagaimana diinginkan. Terakhir, Anda harus mencoba memastikan aplikasi Anda dengan lancar menangani
+bahasa yang tidak secara eksplisit Anda dukung dalam desain.</p>
+
+<p>Dokumen ini diawali dengan menjelaskan strategi resolusi sumber daya sebelum
+Android N. Berikutnya, akan dijelaskan strategi
+resolusi sumber daya Android N yang telah ditingkatkan. Terakhir, akan djelaskan cara memanfaatkan
+jumlah lokal yang telah diperbanyak untuk mendukung lebih banyak pengguna multibahasa.</p>
+
+<h2 id="preN">Tantangan dalam Mengatasi Masalah Sumber Daya Bahasa</h2>
+
+<p>Sebelum Android N, Android tidak selalu
+ berhasil mencocokkan lokal aplikasi dan lokal sistem. Misalnya, anggaplah bahasa default aplikasi Anda
+  adalah US English, namun aplikasi itu juga berisi string bahasa Spanyol yang dilokalkan di file sumber daya {@code es_ES}.
+.</p>
+<p>Bila kode Java Anda mengacu ke string, itu akan mengatasi masalah bahasa string sebagai
+berikut:</p>
+<ul>
+<li>Jika perangkat diatur ke {@code es_MX} (Spanish-Mexico), Android akan memuat
+string dari file sumber daya {@code es_ES}.</li>
+<li>Jika perangkat diatur ke {@code en_AU}, Android akan kembali pada {@code
+en_US}. Sistem juga akan default ke {@code en_US} jika pengguna memilih
+bahasa yang sama sekali tidak didukung oleh aplikasi, seperti bahasa Prancis.</li>
+</ul>
+
+
+<p>Masalah resolusi ini muncul karena sistem menghilangkan kode negara
+dari lokal jika tidak bisa menemukan yang sama persis.  Misalnya:</p>
+<p class="table-caption" id="t-resource-res">
+<strong>Tabel 1.</strong> Resolusi sumber daya tanpa lokal yang persis sama.
+</p>
+<table>
+<tbody>
+<tr>
+<th>Pengaturan Pengguna</th>
+<th>Sumber Daya Aplikasi</th>
+<th>Resolusi Sumber Daya</th>
+</tr>
+<tr>
+<td>fr_CH</td>
+<td>
+default (en)<br>
+de_DE<br>
+es_ES<br>
+fr_FR<br>
+it_IT<br>
+</td>
+ <td>
+Coba fr_CH =&gt; Gagal<br>
+Coba fr =&gt; Gagal<br>
+Gunakan default (en)
+</td>
+ </tr>
+ </tbody>
+</table>
+
+
+<p>Dalam contoh ini, sistem menampilkan string bahasa Inggris
+tanpa mengetahui apakah pengguna memahami bahasa Inggris. Perilaku ini sudah sangat umum
+sekarang. Android N harus mengurangi frekuensi
+hasil seperti ini secara substansial.</p>
+
+<h2 id="postN">Peningkatan pada Strategi Resolusi Sumber Daya</h2>
+<p>Android N menghadirkan resolusi sumber daya yang lebih handal, dan
+secara otomatis menemukan solusi yang lebih baik. Akan tetapi, untuk mempercepat resolusi dan meningkatkan
+kemudahan pemeliharaan, Anda harus menyimpan sumber daya dalam dialek induk yang paling umum.
+ Misalnya, jika sebelumnya Anda telah menyimpan sumber daya bahasa Spanyol di direktori {@code es-US}
+, pindahkan ke direktori {@code es-419}, yang berisi bahasa Spanyol Amerika Latin.
+ Demikian pula, jika Anda memiliki string sumber daya dalam folder bernama {@code en-GB}, ganti nama
+ folder itu menjadi {@code en-001} (bahasa Inggris internasional), karena induk yang paling umum
+ untuk string <code>en-GB</code> adalah {@code en-001}.
+ Contoh berikut menjelaskan mengapa praktik-praktik ini meningkatkan kinerja dan
+reliabilitas resolusi sumber daya.</p>
+
+<h3>Contoh resolusi sumber daya</h3>
+
+<p>Dengan Android N, kasus yang dijelaskan dalam <strong>Tabel 1</strong> diatasi
+secara berbeda:</p>
+
+<p class="table-caption" id="t-improved-res">
+<strong>Tabel 2.</strong> Strategi resolusi yang ditingkatkan bila tidak ada
+lokal yang sama persis.</p>
+<table>
+<tr>
+<th>Pengaturan Pengguna</th>
+<th>Sumber Daya Aplikasi</th>
+<th>Resolusi Sumber Daya</th>
+</tr>
+<tr>
+<td><ol>
+<li> fr_CH</li>
+</ol>
+</td>
+<td>
+default (en)<br>
+de_DE<br>
+es_ES<br>
+fr_FR<br>
+it_IT<br>
+</td>
+<td>
+Coba fr_CH =&gt; Gagal<br>
+Coba fr =&gt; Gagal<br>
+Coba anak dari fr =&gt; fr_FR<br>
+Gunakan fr_FR
+</td>
+</tr>
+
+</table>
+
+
+<p>Sekarang pengguna mendapatkan sumber daya bahasa Prancis sebagai ganti bahasa Inggris. Contoh ini juga menunjukkan
+ mengapa Anda harus menyimpan string bahasa Prancis dalam {@code fr} bukan dalam {@code fr_FR}
+ untuk Android N. Tindakan di sini adalah untuk mencocokkan dengan induk dialek terdekat,
+ yang membuat resolusi menjadi lebih cepat dan lebih bisa diprediksi.</p>
+
+<p>Selain logika resolusi yang diperbaiki ini, Android sekarang menawarkan lebih banyak
+pilihan bahasa untuk pengguna. Mari kita coba lagi contoh di atas dengan menetapkan bahasa Italia
+ sebagai bahasa pengguna tambahan, tetapi tanpa dukungan aplikasi untuk bahasa Prancis.  </p>
+
+<p class="table-caption" id="t-2d-choice">
+<strong>Tabel 3.</strong> Resolusi sumber daya bila aplikasi hanya mencocokkan
+pengaturan lokal yang disukai kedua oleh pengguna.</p>
+<table>
+<tr>
+<th>Pengaturan Pengguna</th>
+<th>Sumber Daya Aplikasi</th>
+<th>Resolusi Sumber Daya</th>
+
+</tr>
+<tr>
+<td><ol>
+<li> fr_CH</li>
+<li> it_CH</li>
+</ol>
+</td>
+<td>
+default (en)<br>
+de_DE<br>
+es_ES<br>
+it_IT<br>
+</td>
+<td>
+Coba fr_CH =&gt; Gagal<br>
+Coba fr =&gt; Gagal<br>
+Coba anak dari fr =&gt; Gagal<br>
+Coba it_CH =&gt; Gagal<br>
+Coba it =&gt; Gagal<br>
+Coba anak dari it =&gt; it_IT<br>
+Gunakan it_IT
+</td>
+
+</tr>
+
+</table>
+<p>Pengguna tetap mendapatkan bahasa yang mereka pahami, meskipun aplikasi tidak
+mendukung bahasa Prancis.</p>
+
+
+<h2 id="design">Mendesain Aplikasi Anda untuk Mendukung Lokal Tambahan</h2>
+<h3>LocaleList API</h3>
+
+<p>Android N menambahkan API baru {@code LocaleList.GetDefault()}
+yang memungkinkan aplikasi langsung melakukan query daftar bahasa yang telah ditetapkan pengguna. API ini
+memungkinkan Anda untuk membuat
+ perilaku aplikasi yang lebih canggih dan tampilan konten yang lebih optimal. Misalnya, Pencarian
+  bisa menampilkan hasil dalam beberapa bahasa berdasarkan pengaturan pengguna.  Aplikasi browser
+  bisa menghindari penawaran menerjemahkan halaman dalam bahasa yang sudah diketahui pengguna,
+  dan aplikasi keyboard bisa mengaktifkan otomatis semua layout yang sesuai. </p>
+
+<h3>Formatter</h3>
+
+<p>Hingga Android 6.0 (API level 23), Android hanya mendukung satu atau dua lokal
+ untuk banyak bahasa umum
+(en, es, ar, fr, ru). Karena hanya ada beberapa varian dari setiap bahasa,
+aplikasi bisa menghindar dengan menyimpan beberapa nomor dan tanggal sebagai string hard-code
+dalam file sumber daya.  Akan tetapi, dengan perluasan set lokal yang didukung Android,
+maka akan ada
+perbedaan format yang signifikan untuk tanggal, waktu, mata uang, dan informasi
+serupa bahkan dalam lokal tunggal. Menjadikan format Anda sebagai hard-code bisa menghasilkan
+pengalaman yang membingungkan bagi pengguna akhir.  Karena itu, saat mengembangkan untuk Android N
+pastikan menggunakan formatter sebagai ganti menjadikan string angka dan tanggal sebagai hard-code.</p>
+
+<p>Contoh terbaik adalah bahasa Arab, yang mendukung Android N berkembang dari
+satu {@code ar_EG} menjadi 27 lokal bahasa Arab. Bahasa lokal ini bisa berbagi hampir semua sumber daya,
+namun sebagian lebih memilih digit ASCII, sementara yang lain memilih digit asli. Misalnya,
+bila Anda ingin membuat kalimat dengan variabel digit, seperti
+"Pilih PIN 4 digit", gunakan formatter seperti yang ditampilkan di bawah ini:</p>
+
+<pre> format(locale, "Choose a %d-digit PIN", 4)</pre>
diff --git a/docs/html-intl/intl/in/preview/features/notification-updates.jd b/docs/html-intl/intl/in/preview/features/notification-updates.jd
new file mode 100644
index 0000000..6154e83
--- /dev/null
+++ b/docs/html-intl/intl/in/preview/features/notification-updates.jd
@@ -0,0 +1,328 @@
+page.title=Pemberitahuan
+page.tags=notifications
+helpoutsWidget=true
+page.image=/preview/images/notifications-card.png
+
+trainingnavtop=true
+
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+
+<!-- table of contents -->
+<h2>Dokumen ini berisi</h2>
+<ol>
+  <li><a href="#direct">Balasan Langsung</a></li>
+  <li><a href="#bundle">Bundel Pemberitahuan</a></li>
+  <li><a href="#custom">Tampilan Custom</a></li>
+</ol>
+
+</div>
+</div>
+
+<p>Android N memperkenalkan beberapa API baru yang memungkinkan aplikasi memposting
+pemberitahuan yang sangat terlihat dan interaktif.</p>
+
+<p>Android N menambahkan API pemberitahuan{@link android.support.v4.app.RemoteInput}
+yang ada untuk mendukung balasan inline pada handset. Fitur ini memungkinkan pengguna
+ merespons dengan cepat dari bayangan pemberitahuan tanpa mengunjungi aplikasi Anda.</p>
+
+<p>
+  Android N juga memungkinkan Anda menggabungkan pemberitahuan yang serupa agar
+  muncul sebagai satu pemberitahuan. Untuk memungkinkan hal ini, Android N menggunakan metode {@link
+  android.support.v4.app.NotificationCompat.Builder#setGroup
+  NotificationCompat.Builder.setGroup()} yang sudah ada. Pengguna bisa memperluas setiap
+  pemberitahuan, dan melakukan tindakan seperti membalas dan menutup setiap
+  pemberitahuan, satu per satu dari bayangan pemberitahuan.
+</p>
+
+<p>Terakhir, Android N juga menambahkan API baru yang memungkinkan Anda untuk memanfaatkan dekorasi
+sistem dalam tampilan pemberitahuan yang disesuaikan untuk aplikasi Anda. API ini membantu
+memastikan semua tampilan pemberitahuan sama-sama menggunakan penyajian yang konsisten dengan
+template standar.</p>
+
+<p>Dokumen ini menyoroti beberapa perubahan penting yang harus Anda
+ perhitungkan saat menggunakan fitur pemberitahuan baru dalam aplikasi Anda.</p>
+
+<h2 id="direct">Balasan Langsung</h2>
+
+<p>Dengan fitur Balasan Langsung di Android N, pengguna bisa dengan cepat
+merespons pesan teks atau memperbarui daftar tugas secara langsung dalam antarmuka
+pemberitahuan. Pada perangkat genggam, tindakan balasan inline muncul sebagai tombol tambahan
+ yang dilampirkan pada pemberitahuan. Bila pengguna membalas lewat keyboard, sistem akan melampirkan
+ respons teks ke intent
+    yang telah Anda tetapkan untuk tindakan pemberitahuan dan mengirimkan intent ke
+     aplikasi perangkat genggam Anda.
+
+
+<img id="fig-reply-button" src="{@docRoot}preview/images/inline-reply.png" srcset="{@docRoot}preview/images/inline-reply.png 1x,
+  {@docRoot}preview/images/inline-reply_2x.png 2x" width="400">
+<p class="img-caption">
+  <strong>Gambar 1.</strong> Android N menambahkan tombol tindakan <strong>Reply</strong>
+.
+</p>
+
+<h3>Menambahkan tindakan balasan inline</h3>
+
+<p>Untuk membuat tindakan pemberitahuan yang mendukung balasan langsung:
+</p>
+
+<ol>
+<li>Buat instance {@link android.support.v4.app.RemoteInput.Builder}
+ yang bisa Anda tambahkan ke tindakan
+pemberitahuan. Konstruktor kelas ini akan menerima string bahwa sistem menggunakannya sebagai kunci
+ untuk input teks. Kemudian, aplikasi perangkat genggam Anda akan menggunakan kunci itu untuk mengambil teks
+  input tersebut.
+
+<pre>
+// Key for the string that's delivered in the action's intent
+private static final String KEY_TEXT_REPLY = "key_text_reply";
+String replyLabel = getResources().getString(R.string.reply_label);
+RemoteInput remoteInput = new RemoteInput.Builder(KEY_TEXT_REPLY)
+        .setLabel(replyLabel)
+        .build();
+</pre>
+</li>
+<li>Lampirkan objek {@link android.support.v4.app.RemoteInput}
+ pada tindakan dengan menggunakan <code>addRemoteInput()</code>.
+
+<pre>
+// Create the reply action and add the remote input
+Notification.Action action =
+        new Notification.Action.Builder(R.drawable.ic_reply_icon,
+                getString(R.string.label), replyPendingIntent)
+                .addRemoteInput(remoteInput)
+                .build();
+</pre>
+</li>
+
+<li>Terapkan tindakan pada pemberitahuan dan keluarkan pemberitahuan.
+
+<pre>
+// Build the notification and add the action
+Notification notification =
+        new Notification.Builder(mContext)
+                .setSmallIcon(R.drawable.ic_message)
+                .setContentTitle(getString(R.string.title))
+                .setContentText(getString(R.string.content))
+                .addAction(action))
+                .build();
+
+// Issue the notification
+NotificationManager notificationManager =
+        NotificationManager.from(mContext);
+notificationManager.notify(notificationId, notification);
+
+</pre>
+</li>
+
+</ol>
+
+
+<p> Sistem akan meminta pengguna memasukkan respons bila mereka memicu
+tindakan pemberitahuan. </p>
+
+<img id="fig-user-input" src="{@docRoot}preview/images/inline-type-reply.png" srcset="{@docRoot}preview/images/inline-type-reply.png 1x,
+    {@docRoot}preview/images/inline-type-reply_2x.png 2x" width="300">
+<p class="img-caption">
+  <strong>Gambar 2.</strong> Pengguna memasukkan teks dari bayangan pemberitahuan.
+</p>
+
+<h3>Mengambil input pengguna dari balasan inline</h3>
+
+<p>Untuk menerima input pengguna dari antarmuka pemberitahuan untuk aktivitas yang Anda
+deklarasikan dalam intent tindakan balasan:</p>
+<ol>
+<li> Panggil {@link android.support.v4.app.RemoteInput#getResultsFromIntent
+  getResultsFromIntent()} dengan meneruskan intent tindakan pemberitahuan sebagai
+ parameter input. Metode ini mengembalikan {@link android.os.Bundle} yang
+ berisi respons teks.
+</li>
+
+<pre>
+Bundle remoteInput = RemoteInput.getResultsFromIntent(intent);
+</pre>
+
+<li>Lakukan query pada bundel menggunakan kunci hasil (diberikan ke konstruktor {@link
+  android.support.v4.app.RemoteInput.Builder}).
+</li>
+</ol>
+
+<p>Cuplikan kode berikut mengilustrasikan cara metode mengambil teks input
+dari bundel:</p>
+
+<pre>
+// Obtain the intent that started this activity by calling
+// Activity.getIntent() and pass it into this method to
+// get the associated string.
+
+private CharSequence getMessageText(Intent intent) {
+    Bundle remoteInput = RemoteInput.getResultsFromIntent(intent);
+    if (remoteInput != null) {
+            return remoteInput.getCharSequence(KEY_TEXT_REPLY);
+            }
+    return null;
+ }
+</pre>
+
+<p>Aplikasi bisa menerapkan logika untuk memutuskan tindakan apa yang harus diambil pada teks
+yang telah diambil.
+Untuk aplikasi interaktif (seperti chat), memberikan lebih banyak konteks dalam pemberitahuan itu sendiri
+ (misalnya, beberapa baris riwayat obrolan, termasuk pesan pengguna pribadi)
+  sehingga pengguna bisa merespons dengan tepat.
+Bila pengguna merespons melalui{@link android.support.v4.app.RemoteInput},
+ sertakan teks dalam riwayat balasan dengan metode {@code setRemoteInputHistory()}
+.</p>
+
+<h2 id="bundle">Bundel Pemberitahuan</h2>
+
+<p>Android N membekali pengembang dengan sebuah cara baru untuk menyatakan
+ antrean pemberitahuan: <i>bundel pemberitahuan</i>. Ini mirip dengan fitur
+  <a href="{@docRoot}training/wearables/notifications/stacks.html">Tumpukan
+  Pemberitahuan</a> dalam Android Wear. Misalnya, jika aplikasi Anda membuat pemberitahuan
+  untuk pesan yang diterima, bila lebih dari satu pesan diterima, pemberitahuan tersebut akan
+ dibundel sebagai satu grup. Anda bisa
+ menggunakan metode {@link android.support.v4.app.NotificationCompat.Builder#setGroup
+Builder.setGroup()} yang ada untuk membundel pemberitahuan yang sama.</p>
+
+<p>
+  Grup pemberitahuan menerapkan hierarki pada pemberitahuan yang ada di dalamnya.
+  Di bagian teratas hierarki adalah pemberitahuan induk yang menampilkan informasi
+  rangkuman untuk grup tersebut. Pengguna secara bertahap bisa
+  memperbesar grup pemberitahuan, dan sistem akan menampilkan informasi lebih banyak saat
+  pengguna menggali lebih dalam. Bila pengguna memperbesar bundel, sistem akan memperlihatkan informasi lebih
+  banyak untuk semua pemberitahuan anak; bila pengguna
+  memperbesar salah satu pemberitahuan tersebut, sistem akan memperlihatkan seluruh isinya.
+</p>
+
+<img id="fig-bundles" src="{@docRoot}preview/images/bundles.png" srcset="{@docRoot}preview/images/bundles.png 1x,
+          {@docRoot}preview/images/bundles_2x.png 2x" width="300">
+<p class="img-caption">
+  <strong>Gambar 3.</strong> Pengguna secara bertahap bisa memperluas grup
+  pemberitahuan.
+</p>
+
+<p>Untuk mengetahui cara menambahkan pemberitahuan ke grup, lihat
+<a href="{@docRoot}training/wearables/notifications/stacks.html#AddGroup">Menambahkan
+Setiap Pemberitahuan ke Grup</a>.</p>
+
+
+<h3 id="best-practices">Praktik terbaik untuk bundel pemberitahuan</h3>
+<p>Bagian ini memberikan panduan tentang kapan menggunakan grup pemberitahuan sebagai ganti
+pemberitahuan {@link android.app.Notification.InboxStyle InboxStyle}
+yang telah tersedia di
+platform Android versi sebelumnya.</p>
+
+<h3>Kapan menggunakan bundel pemberitahuan</h3>
+
+<p>Anda harus menggunakan grup pemberitahuan hanya jika semua kondisi berikut ini
+bernilai benar untuk kasus penggunaan Anda:</p>
+
+<ul>
+  <li>Pemberitahuan anak adalah pemberitahuan lengkap dan bisa ditampilkan
+   masing-masing tanpa perlu rangkuman grup.</li>
+  <li>Ada untungnya memunculkan pemberitahuan anak satu per satu. Misalnya:
+
+  </li>
+  <ul>
+    <li>Bisa diaplikasikan, dengan tindakan yang spesifik untuk setiap anak.</li>
+    <li>Ada lebih banyak informasi pada anak yang ingin dibaca oleh pengguna.</li>
+  </ul>
+</ul>
+
+<p>Contoh kasus penggunaan yang baik untuk grup pemberitahuan antara lain: aplikasi pertukaran pesan
+yang menampilkan daftar pesan yang masuk, atau aplikasi email yang menampilkan daftar email
+yang diterima.</p>
+
+<p>
+Contoh kasus di mana pemberitahuan tunggal lebih disukai
+ antara lain pesan individual dari satu orang, atau representasi daftar
+ item teks satu-baris. Anda bisa menggunakan
+({@link android.app.Notification.InboxStyle InboxStyle} atau
+{@link android.app.Notification.BigTextStyle BigTextStyle}) untuk mencapai
+hal ini.
+</p>
+
+<h3 id ="post">Menampilkan bundel pemberitahuan</h3>
+
+<p>
+  Aplikasi ini harus selalu memposting rangkuman grup, sekalipun grup hanya berisi
+  satu anak. Sistem akan menyembunyikan rangkuman dan langsung menampilkan
+  pemberitahuan anak jika hanya berisi pemberitahuan tunggal. Hal ini akan memastikan
+  sistem bisa memberikan pengalaman yang konsisten saat pengguna menggeser
+  anak grup.
+</p>
+
+<p class="note">
+  <strong>Catatan:</strong> Versi Android N ini tidak menyembunyikan
+  rangkuman untuk grup pemberitahuan yang berisi satu anak. Fungsionalitas
+  ini akan ditambahkan dalam Android N versi berikutnya.
+</p>
+
+<h3>Mengintip pemberitahuan</h3>
+
+<p>Walaupun sistem biasanya menampilkan pemberitahuan anak sebagai sebuah grup, Anda bisa mengaturnya
+ agar muncul untuk sementara muncul sebagai
+ <a href="{@docRoot}guide/topics/ui/notifiers/notifications.html#Heads-up">
+ pemberitahuan pendahuluan</a>. Fitur ini khususnya berguna karena memungkinkan
+  akses langsung ke pemberitahuan anak terbaru dan tindakan yang dikaitkan dengannya.
+</p>
+
+
+<h3>Kompatibilitas mundur</h3>
+
+<p>
+  Baik grup pemberitahuan maupun input jauh telah menjadi bagian dari {@link
+  android.app.Notification} API sejak Android 5.0 (API level 21) untuk mendukung
+  perangkat Android Wear. Jika Anda sudah membuat pemberitahuan dengan API ini,
+  satu-satunya tindakan yang harus Anda ambil adalah memeriksa apakah perilaku aplikasi sesuai dengan panduan yang
+  dijelaskan di atas, dan mempertimbangkan implementasi {@code
+  setRemoteInputHistory()}.
+</p>
+
+<p>
+  Untuk mendukung kompatibilitas mundur, tersedia API yang sama bersama
+  kelas {@link android.support.v4.app.NotificationCompat}
+  pustaka dukungan, yang memungkinkan Anda untuk membuat pemberitahuan yang bekerja pada versi Android
+  sebelumnya. Pada perangkat genggam dan tablet, pengguna hanya melihat pemberitahuan rangkuman,
+  sehingga aplikasi tetap memiliki gaya kotak masuk atau representasi pemberitahuan yang sama
+  untuk seluruh konten informasi grup. Karena perangkat Android
+  Wear memungkinkan pengguna melihat semua pemberitahuan anak bahkan pada level platform
+  yang lebih lama, maka Anda harus membuat pemberitahuan anak dengan mengabaikan level
+  API.
+</p>
+
+<h2 id="custom"> Tampilan Custom</h2>
+<p>Mulai dari Android N, Anda bisa menyesuaikan tampilan pemberitahuan dan
+tetap mendapatkan dekorasi sistem seperti header pemberitahuan, tindakan, dan
+layout yang bisa diperluas.</p>
+
+<p>Untuk mengaktifkan kemampuan ini, Android N menambahkan API berikut untuk menata gaya
+  tampilan custom Anda:</p>
+
+<dl>
+<dt>
+{@code DecoratedCustomViewStyle()}</dt>
+<dd> Menata gaya pemberitahuan selain pemberitahuan
+media.</dd>
+<dt>
+{@code DecoratedMediaCustomViewStyle()}</dt>
+<dd> Menata gaya pemberitahuan media.</dd>
+</dl>
+
+<p>Untuk menggunakan API baru ini, panggil metode {@code setStyle()}, dengan meneruskan
+gaya tampilan custom yang diinginkan padanya.</p>
+
+<p>Cuplikan ini menampilkan cara membuat objek pemberitahuan custom dengan metode
+{@code DecoratedCustomViewStyle()}.</p>
+
+<pre>
+Notification noti = new Notification.Builder()
+           .setSmallIcon(R.drawable.ic_stat_player)
+           .setLargeIcon(albumArtBitmap))
+           .setCustomContentView(contentView);
+           .setStyle(new Notification.DecoratedCustomViewStyle())
+           .build();
+
+</pre>
diff --git a/docs/html-intl/intl/in/preview/features/picture-in-picture.jd b/docs/html-intl/intl/in/preview/features/picture-in-picture.jd
new file mode 100644
index 0000000..883b17a
--- /dev/null
+++ b/docs/html-intl/intl/in/preview/features/picture-in-picture.jd
@@ -0,0 +1,186 @@
+page.title=Gambar-dalam-gambar
+page.keywords=preview,sdk,PIP,Picture-in-picture
+page.tags=androidn
+
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+
+<h2>Dalam dokumen ini</h2>
+<ol>
+  <li><a href="#declaring">Mendeklarasikan Bahwa Aktivitas Anda Mendukung
+Gambar-dalam-gambar</a></li>
+  <li><a href="#pip_button">Mengalihkan Aktivitas Anda ke Gambar-dalam-gambar</a>
+</li>
+  <li><a href="#handling_ui">Menangani UI Selama Gambar-dalam-gambar</a>
+</li>
+  <li><a href="#continuing_playback">Melanjutkan Pemutaran Video Saat dalam
+Gambar-dalam-gambar</a></li>
+  <li><a href="#best">Praktik Terbaik</a></li>
+</ol>
+
+<h2>Lihat Juga</h2>
+<ol>
+  <li><a href="{@docRoot}preview/features/multi-window.html">Dukungan
+Multi-Jendela</a></li>
+</ol>
+
+</div>
+</div>
+
+<p>Di Android N, pengguna Android TV sekarang bisa menonton video
+dalam jendela yang disematkan di sudut layar saat menyusuri
+aplikasi. Mode gambar-dalam-gambar (PIP) memungkinkan aplikasi menjalankan aktivitas
+video dalam jendela yang disematkan selagi aktivitas lain tetap berjalan di
+latar belakang. Jendela PIP memungkinkan pengguna melakukan multitasking saat menggunakan aplikasi Anda, yang
+membantu pengguna menjadi lebih produktif.</p>
+
+<p>Aplikasi Anda bisa memutuskan kapan memicu mode PIP. Inilah beberapa contoh
+kapan memasuki mode PIP:</p>
+
+<ul>
+<li>Aplikasi Anda bisa memindahkan video ke dalam mode PIP bila pengguna mengarah
+mundur dari video untuk melihat-lihat konten lainnya.</li>
+<li>Aplikasi Anda bisa mengalihkan video ke dalam mode PIP selagi pengguna menonton akhir episode
+dari konten. Layar utama menampilkan informasi
+promosi atau rangkuman tentang episode berikutnya dalam seri tersebut.</li>
+<li>Aplikasi Anda bisa menyediakan suatu cara bagi pengguna untuk mengantre konten tambahan selagi
+mereka menonton video. Video terus dimainkan dalam mode PIP selagi layar
+utama menampilkan aktivitas pemilihan konten.</li>
+</ul>
+
+<p>Jendela PIP memiliki luas 240x135 dp dan ditampilkan di layer paling atas pada salah satu
+dari empat sudut layar, yang dipilih oleh sistem. Pengguna bisa memunculkan
+menu PIP yang memungkinkan mereka untuk beralih mode dari jendela PIP ke layar penuh, atau menutup jendela
+PIP, dengan menekan dan menahan tombol <b>Beranda</b> pada remote. Jika video
+lain mulai diputar pada layar utama, jendela PIP secara otomatis
+ditutup. Pengguna juga bisa menutup jendela PIP melalui Recents.</p>
+
+<img src="{@docRoot}preview/images/pip-active.png" />
+<p class="img-caption"><strong>Gambar 1.</strong> Video
+Gambar-dalam-gambar terlihat di sudut layar selagi pengguna melihat-lihat konten pada layar
+utama.</p>
+
+<p>PIP memanfaatkan API multi-jendela yang tersedia di Android N untuk
+menyediakan jendela overlay video yang disematkan. Untuk menambahkan PIP ke aplikasi, Anda harus
+mendaftarkan aktivitas yang mendukung PIP, mengalihkan aktivitas Anda ke mode PIP bila
+diperlukan, serta memastikan elemen UI disembunyikan dan pemutaran video berlanjut bila
+aktivitas dalam mode PIP.</p>
+
+<h2 id="declaring">Mendeklarasikan Bahwa Aktivitas Anda Mendukung Gambar-dalam-gambar</h2>
+
+<p>Secara default, sistem tidak secara otomatis mendukung PIP untuk aplikasi.
+Jika Anda ingin mendukung PIP dalam aplikasi, daftarkan aktivitas
+video Anda dalam manifes dengan mengatur
+<code>android:supportsPictureInPicture</code> dan
+<code>android:resizeableActivity</code> ke <code>true</code>. Juga, tetapkan
+bahwa aktivitas Anda menangani perubahan konfigurasi layout sehingga aktivitas
+Anda tidak diluncurkan ulang saat terjadi perubahan layout selama transisi mode PIP.</p>
+
+<pre>
+&lt;activity android:name="VideoActivity"
+    android:resizeableActivity="true"
+    android:supportsPictureInPicture="true"
+    android:configChanges=
+        "screenSize|smallestScreenSize|screenLayout|orientation"
+    ...
+</pre>
+
+<p>Saat mendaftarkan aktivitas Anda, ingatlah bahwa dalam mode PIP aktivitas
+Anda akan ditampilkan pada jendela overlay kecil pada layar TV. Aktivitas
+pemutaran video dengan UI minimal akan memberikan pengalaman pengguna terbaik. Aktivitas yang
+berisi elemen UI kecil mungkin tidak memberikan pengalaman pengguna yang baik
+bila beralih ke mode PIP, karena pengguna tidak bisa melihat elemen UI secara detail
+di jendela PIP.</p>
+
+<h2 id="pip_button">Mengalihkan Aktivitas Anda ke Gambar-dalam-gambar</h2>
+
+Bila Anda perlu untuk mengalihkan aktivitas Anda ke mode PIP, panggil
+<code>Activity.enterPictureInPicture()</code>. Contoh berikut mengalihkan
+ke mode PIP bila pengguna memilih tombol PIP khusus pada baris
+kontrol media:</p>
+
+<pre>
+&#64;Override
+public void onActionClicked(Action action) {
+    if (action.getId() == R.id.lb_control_picture_in_picture) {
+        getActivity().enterPictureInPicture();
+        return;
+    }
+    ...
+</pre>
+
+<p>Menambahkan tombol PIP ke baris kontrol media Anda akan memungkinkan pengguna dengan mudah beralih
+ke mode PIP selagi mengontrol pemutaran video.</p>
+
+<img src="{@docRoot}preview/images/pip-button.png" />
+<p class="img-caption"><strong>Gambar 1.</strong> Tombol
+gambar-dalam-gambar pada baris kontrol media.</p>
+
+<p>Android N menyertakan kelas
+<code>PlaybackControlsRow.PictureInPictureAction</code> baru yang mendefinisikan
+tindakan PIP baris kontrol dan menggunakan ikon PIP.</p>
+
+<h2 id="handling_ui">Menangani UI Selama Gambar-dalam-gambar</h2>
+
+<p>Bila aktivitas Anda memasuki mode PIP, aktivitas Anda seharusnya hanya menampilkan pemutaran
+video. Hilangkan elemen UI sebelum aktivitas Anda memasuki PIP,
+dan pulihkan elemen ini bila aktivitas Anda beralih ke layar penuh lagi.
+Kesampingkan <code>Activity.onPictureInPictureChanged()</code> atau
+<code>Fragment.onPictureInPictureChanged()</code> dan aktifkan atau
+nonaktifkan elemen UI saat diperlukan, misalnya:</p>
+
+<pre>
+&#64;Override
+public void onPictureInPictureChanged(boolean inPictureInPicture) {
+    if (inPictureInPicture) {
+        // Hide the controls in picture-in-picture mode.
+        ...
+    } else {
+        // Restore the playback UI based on the playback status.
+        ...
+    }
+}
+</pre>
+
+<h2 id="continuing_playback">Melanjutkan Pemutaran Video Saat dalam
+Gambar-dalam-gambar</h2>
+
+<p>Bila aktivitas Anda beralih ke PIP, sistem akan menganggap aktivitas tersebut berada dalam
+keadaan berhenti sementara, dan akan memanggil metode <code>onPause()</code> aktivitas Anda. Pemutaran
+video tidak boleh berhenti sementara dan harus terus diputar jika aktivitas tersebut
+berhenti sementara karena mode PIP. Periksa PIP dalam metode
+<code>onPause()</code> aktivitas Anda dan tangani pemutaran dengan tepat,
+misalnya:</p>
+
+<pre>
+&#64;Override
+public void onPause() {
+    // If called due to PIP, do not pause playback
+    if (inPictureInPicture()) {
+        // Continue playback
+        ...
+    }
+    // If paused but not in PIP, pause playback if necessary
+    ...
+}
+</pre>
+
+<p>Bila aktivitas Anda meninggalkan mode PIP dan kembali ke mode layar penuh, sistem
+akan melanjutkan aktivitas Anda dan memanggil metode <code>onResume()</code> Anda.</p>
+
+<h2 id="best">Praktik Terbaik</h2>
+
+<p>PIP ditujukan untuk aktivitas yang memutar video layar penuh. Saat mengalihkan
+aktivitas Anda ke mode PIP, hindari menampilkan apa pun selain konten video.
+Pantau saat aktivitas Anda memasuki mode PIP dan sembunyikan elemen UI, seperti dijelaskan
+dalam <a href="#handling_ui">Menangani UI Selama Gambar-dalam-gambar</a>.</p>
+
+<p>Karena jendela PIP ditampilkan sebagai jendela mengambang di sudut
+layar, Anda harus menghindari menampilkan informasi penting di layar utama
+di area mana saja yang bisa terhalang oleh jendela PIP.</p>
+
+<p>Bila aktivitas ada berada dalam mode PIP, secara default aktivitas itu tidak mendapatkan fokus input. Untuk
+menerima kejadian input saat dalam mode PIP, gunakan
+<code>MediaSession.setMediaButtonReceiver()</code>.</p>
diff --git a/docs/html-intl/intl/in/preview/features/scoped-folder-access.jd b/docs/html-intl/intl/in/preview/features/scoped-folder-access.jd
new file mode 100644
index 0000000..cbb7c9f
--- /dev/null
+++ b/docs/html-intl/intl/in/preview/features/scoped-folder-access.jd
@@ -0,0 +1,124 @@
+page.title=Scoped Directory Access
+page.keywords=preview,sdk,scoped directory access
+page.tags=androidn
+
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+  <h2>Dalam dokumen ini</h2>
+  <ol>
+    <li><a href="#accessing">Mengakses Direktori Penyimpanan Eksternal</a></li>
+    <li><a href="#removable">Mengakses Direktori pada Media Lepas-Pasang</a></li>
+    <li><a href="#best">Praktik Terbaik</a></li>
+  </ol>
+</div>
+</div>
+
+<p>Aplikasi seperti aplikasi foto biasanya hanya memerlukan akses ke direktori tertentu dalam
+penyimpanan eksternal, seperti direktori <code>Pictures</code>. Pendekatan
+yang ada untuk mengakses penyimpanan eksternal tidak didesain untuk memberikan
+akses direktori target dengan mudah untuk tipe aplikasi ini. Misalnya:</p>
+
+<ul>
+<li>Meminta {@link android.Manifest.permission#READ_EXTERNAL_STORAGE}
+atau {@link android.Manifest.permission#WRITE_EXTERNAL_STORAGE} dalam manifes Anda
+akan memungkinkan akses ke semua direktori publik pada penyimpanan eksternal, yang mungkin
+lebih banyak akses dari yang dibutuhkan aplikasi Anda.</li>
+<li>Penggunaan
+<a href="{@docRoot}guide/topics/providers/document-provider.html">Storage
+Access Framework</a> biasanya membuat pengguna Anda memilih direktori
+melalui UI sistem, yang tidak diperlukan jika aplikasi Anda selalu mengakses
+direktori eksternal yang sama.</li>
+</ul>
+
+<p>Android N menyediakan API baru yang disederhanakan untuk mengakses
+direktori penyimpanan eksternal umum. </p>
+
+<h2 id="accessing">Mengakses Direktori Penyimpanan Eksternal</h2>
+
+<p>Gunakan kelas <code>StorageManager</code> untuk mendapatkan instance
+<code>StorageVolume</code> yang tepat. Kemudian, buat intent dengan memanggil metode
+<code>StorageVolume.createAccessIntent()</code> dari instance itu.
+Gunakan intent ini untuk mengakses direktori penyimpanan eksternal. Untuk mendapatkan daftar
+semua isi yang tersedia, termasuk isi media lepas-pasang, gunakan
+<code>StorageManager.getVolumesList()</code>.</p>
+
+<p>Cuplikan kode berikut adalah contoh cara membuka direktori
+<code>Pictures</code> dalam penyimpanan bersama utama:</p>
+
+<pre>
+StorageManager sm = (StorageManager)getSystemService(Context.STORAGE_SERVICE);
+StorageVolume volume = sm.getPrimaryVolume();
+Intent intent = volume.createAccessIntent(Environment.DIRECTORY_PICTURES);
+startActivityForResult(intent, request_code);
+</pre>
+
+<p>Sistem ini mencoba untuk memberikan akses ke direktori eksternal, dan jika
+diperlukan mengonfirmasi akses dengan pengguna menggunakan UI yang disederhanakan:</p>
+
+<img src="{@docRoot}preview/images/scoped-folder-access-framed.png" srcset="{@docRoot}preview/images/scoped-folder-access-framed.png 1x,
+{@docRoot}preview/images/scoped-folder-access-framed_2x.png 2x" />
+<p class="img-caption"><strong>Gambar 1.</strong> Sebuah aplikasi yang meminta
+akses ke direktori Pictures.</p>
+
+<p>Jika pengguna memberi akses, sistem akan memanggil pengesampingan
+<code>onActivityResult()</code> Anda dengan kode hasil
+<code>Activity.RESULT_OK</code>, dan data intent yang berisi URI. Gunakan
+URI yang disediakan untuk mengakses informasi direktori, serupa dengan menggunakan URI
+yang dikembalikan oleh
+<a href="{@docRoot}guide/topics/providers/document-provider.html">Storage
+Access Framework</a>.</p>
+
+<p>Jika pengguna tidak memberi akses, sistem akan memanggil pengesampingan
+<code>onActivityResult()</code> Anda dengan kode hasil
+<code>Activity.RESULT_CANCELED</code>, dan data intent nol.</p>
+
+<p class="note"><b>Catatan</b>: Mendapatkan akses ke direktori eksternal tertentu
+juga akan memperoleh akses ke subdirektori dalam direktori tersebut.</p>
+
+<h2 id="removable">Mengakses Direktori pada Media Lepas-Pasang</h2>
+
+<p>Untuk menggunakan Scoped Directory Access guna mengakses direktori pada media lepas-pasang,
+pertama tambahkan {@link android.content.BroadcastReceiver} yang akan mendengarkan pemberitahuan
+{@link android.os.Environment#MEDIA_MOUNTED}, misalnya:</p>
+
+<pre>
+&lt;receiver
+    android:name=".MediaMountedReceiver"
+    android:enabled="true"
+    android:exported="true" &gt;
+    &lt;intent-filter&gt;
+        &lt;action android:name="android.intent.action.MEDIA_MOUNTED" /&gt;
+        &lt;data android:scheme="file" /&gt;
+    &lt;/intent-filter&gt;
+&lt;/receiver&gt;
+</pre>
+
+<p>Bila pengguna memasang media lepas-pasang, seperti kartu SD, sistem akan mengirimkan pemberitahuan
+{@link android.os.Environment#MEDIA_MOUNTED}. Pemberitahuan ini
+memberikan sebuah objek <code>StorageVolume</code> dalam data intent yang bisa
+Anda gunakan untuk mengakses direktori pada media lepas-pasang. Contoh berikut
+mengakses direktori <code>Pictures</code> pada media lepas-pasang:</p>
+
+<pre>
+// BroadcastReceiver has already cached the MEDIA_MOUNTED
+// notification Intent in mediaMountedIntent
+StorageVolume volume = (StorageVolume)
+    mediaMountedIntent.getParcelableExtra(StorageVolume.EXTRA_STORAGE_VOLUME);
+volume.createAccessIntent(Environment.DIRECTORY_PICTURES);
+startActivityForResult(intent, request_code);
+</pre>
+
+<h2 id="best">Praktik Terbaik</h2>
+
+<p>Bila memungkinkan, pertahankan URI akses direktori eksternal sehingga Anda tidak perlu
+berulang kali meminta akses ke pengguna. Setelah pengguna memberikan akses, panggil
+<code>getContentResolver().takePersistableUriPermssion()</code> bersama
+URI akses direktori. Sistem akan mempertahankan URI dan permintaan
+akses berikutnya akan mengembalikan <code>RESULT_OK</code> dan tidak menampilkan UI konfirmasi kepada
+pengguna.</p>
+
+<p>Jika pengguna menolak akses ke direktori eksternal, jangan langsung
+meminta akses lagi. Berulang kali meminta akses akan menghasilkan pengalaman
+pengguna yang buruk.</p>
diff --git a/docs/html-intl/intl/in/preview/features/security-config.jd b/docs/html-intl/intl/in/preview/features/security-config.jd
new file mode 100644
index 0000000..2eb45d4
--- /dev/null
+++ b/docs/html-intl/intl/in/preview/features/security-config.jd
@@ -0,0 +1,744 @@
+page.title=Network Security Configuration
+page.keywords=preview,security,network
+
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+
+<h2>Dalam dokumen ini</h2>
+<ol>
+  <li><a href="#manifest">Menambahkan File Konfigurasi Keamanan</a></li>
+  <li><a href="#CustomTrust">Menyesuaikan CA Tepercaya</a>
+      <ol>
+      <li><a href="#ConfigCustom">Mengonfigurasi CA Tepercaya Custom</a></li>
+      <li><a href="#LimitingCas">Membatasi Set CA Tepercaya</a></li>
+      <li><a href="#TrustingAdditionalCas">Mempercayai CA Tambahan</a></li>
+      </ol>
+  </li>
+  <li><a href="#TrustingDebugCa">Merunut CA Saja</a></li>
+  <li><a href="#UsesCleartextTraffic">Berhenti dari Lalu Lintas Cleartext</a></li>
+  <li><a href="#CertificatePinning">Menyematkan Sertifikat</a></li>
+  <li><a href="#ConfigInheritance">Perilaku Pewarisan Konfigurasi</a></li>
+  <li><a href="#FileFormat">Format File Konfigurasi</a></li>
+</ol>
+</div>
+</div>
+
+
+<p>
+  Android N menyertakan fitur
+  Network Security Configuration yang memungkinkan aplikasi menyesuaikan pengaturan keamanan jaringan mereka dalam
+  file konfigurasi deklaratif yang aman tanpa memodifikasi kode aplikasi. Pengaturan ini bisa
+  dikonfigurasi untuk domain dan aplikasi tertentu. Kemampuan
+  utama fitur ini adalah sebagai berikut:
+</p>
+
+<ul>
+  <li>
+    <b>Trust-anchor custom:</b> Menyesuaikan Certificate Authorities (CA) mana
+    yang dipercaya untuk koneksi aman aplikasi. Misalnya,
+    mempercayai sertifikat tertentu yang ditandatangani sendiri atau membatasi
+    set CA umum yang dipercaya aplikasi.
+  </li>
+
+  <li>
+    <b>Pengesampingan hanya-runut:</b> Merunut secara aman koneksi aman dalam aplikasi
+    tanpa menambahkan risiko pada basis yang telah diinstal.
+  </li>
+
+  <li>
+    <b>Berhenti dari lalu lintas cleartext:</b> Melindungi aplikasi dari
+    penggunaan lalu lintas cleartext secara tidak sengaja.
+  </li>
+
+  <li>
+    <b>Penyematan sertifikat:</b> Membatasi koneksi aman aplikasi ke
+    sertifikat tertentu.
+  </li>
+</ul>
+
+
+<h2 id="manifest">Menambahkan File Konfigurasi Keamanan</h2>
+
+<p>
+  Fitur Network Security Configuration menggunakan file XML tempat Anda menetapkan
+  pengaturan untuk aplikasi. Anda harus menyertakan sebuah entri dalam manifes aplikasi
+  untuk menunjuk ke file ini. Kutipan kode berikut dari sebuah manifes
+  yang memperagakan cara membuat entri ini:
+</p>
+
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?&gt;
+...
+&lt;app ...&gt;
+    &lt;meta-data android:name="android.security.net.config"
+               android:resource="@xml/network_security_config" /&gt;
+    ...
+&lt;/app&gt;
+</pre>
+
+<h2 id="CustomTrust">Menyesuaikan CA Tepercaya</h2>
+
+<p>
+  Aplikasi mungkin perlu mempercayai set CA custom sebagai ganti default
+  platform. Alasannya yang paling umum adalah:
+</p>
+
+<ul>
+  <li>Menghubungkan ke host dengan otoritas sertifikat custom (ditandatangani sendiri,
+  dikeluarkan oleh CA internal, dll).
+  </li>
+
+  <li>Membatasi set CA hanya untuk CA yang Anda percaya sebagai ganti setiap CA
+  yang sudah terinstal.
+  </li>
+
+  <li>Mempercayai CA tambahan yang tidak disertakan dalam sistem.
+  </li>
+</ul>
+
+<p>
+  Secara default koneksi (misalnya TLS, HTTPS) aman dari semua aplikasi mempercayai
+  CA yang telah diinstal oleh sistem, dan aplikasi yang menargetkan API level 23
+  (Android M) ke bawah, juga mempercayai penyimpanan CA yang ditambahkan pengguna secara default. Aplikasi
+  bisa menyesuaikan koneksinya sendiri menggunakan {@code base-config} (untuk
+  penyesuaian di tingkat aplikasi) atau {@code domain-config} (untuk penyesuaian
+  per-domain).
+</p>
+
+
+<h3 id="ConfigCustom">Mengonfigurasi CA Custom</h3>
+
+<p>
+  Anggaplah Anda ingin menghubungkan ke host Anda yang menggunakan sertifikat
+  SSL yang ditandatangani sendiri atau ke host yang sertifikat SSL-nya dikeluarkan oleh CA non-publik
+  yang Anda percaya, seperti CA internal perusahaan Anda.
+</p>
+
+<p>
+  <code>res/xml/network_security_config.xml</code>:
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?&gt;
+&lt;network-security-config&gt;
+    &lt;domain-config&gt;
+        &lt;domain includeSubdomains="true"&gt;example.com&lt;/domain&gt;
+        &lt;trust-anchors&gt;
+            &lt;certificates src="@raw/my_ca"/&gt;
+        &lt;/trust-anchors&gt;
+    &lt;/domain-config&gt;
+&lt;/network-security-config&gt;
+</pre>
+</p>
+
+<p>
+  Menambahkan sertifikat CA yang ditandatangani sendiri atau sertifikat CA non-publik, dalam format PEM atau DER, ke
+  {@code res/raw/my_ca}.
+</p>
+
+
+<h3 id="LimitingCas">Membatasi Set CA Tepercaya</h3>
+
+<p>
+  Aplikasi yang tidak ingin mempercayai semua CA yang dipercaya oleh sistem
+  sebagai gantinya bisa menetapkan set CA sendiri yang telah dikurangi untuk dipercaya. Ini akan melindungi
+  aplikasi dari sertifikat palsu yang dikeluarkan oleh selain CA.
+</p>
+
+<p>
+  Konfigurasi untuk membatasi set CA tepercaya mirip dengan <a href="#TrustingACustomCa">mempercayai CA custom</a> untuk domain tertentu selain
+  beberapa CA disediakan dalam sumber daya.
+</p>
+
+<p>
+<code>res/xml/network_security_config.xml</code>:
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?&gt;
+&lt;network-security-config&gt;
+    &lt;domain-config&gt;
+        &lt;domain includeSubdomains="true"&gt;secure.example.com&lt;/domain&gt;
+        &lt;domain includeSubdomains="true"&gt;cdn.example.com&lt;/domain&gt;
+        &lt;trust-anchors&gt;
+            &lt;certificates src="@raw/trusted_roots"/&gt;
+        &lt;/trust-anchors&gt;
+    &lt;/domain-config&gt;
+&lt;/network-security-config&gt;
+</pre>
+</p>
+
+<p>
+  Menambahkan CA tepercaya, dalam format PEM atau DER, ke {@code res/raw/trusted_roots}.
+  Perhatikan, jika menggunakan format PEM, file <em>hanya</em> boleh berisi data PEM
+  dan tidak ada teks tambahan. Anda juga bisa menyediakan beberapa elemen
+  <a href="#certificates"><code>&lt;certificates&gt;</code></a>
+sebagai ganti satu elemen.
+</p>
+
+
+<h3 id="TrustingAdditionalCas">
+  Mempercayai CA Tambahan
+</h3>
+
+<p>
+  Sebuah aplikasi mungkin perlu mempercayai CA tambahan yang tidak dipercaya oleh sistem,
+  hal ini bisa disebabkan karena sistem belum menyertakan CA atau CA tidak
+  memenuhi persyaratan untuk memasukkan ke dalam sistem Android. Aplikasi
+  bisa melakukannya dengan menetapkan beberapa sumber sertifikat untuk
+  konfigurasi.
+</p>
+<p>
+<code>res/xml/network_security_config.xml</code>:
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?&gt;
+&lt;network-security-config&gt;
+    &lt;base-config&gt;
+        &lt;trust-anchors&gt;
+            &lt;certificates src="@raw/extracas"/&gt;
+            &lt;certificates src="system"/&gt;
+        &lt;/trust-anchors&gt;
+    &lt;/base-config&gt;
+&lt;/network-security-config&gt;
+</pre>
+</p>
+
+
+<h2 id="TrustingDebugCa">Mengonfigurasi CA untuk Perunutan</h2>
+
+<p>
+  Saat merunut aplikasi yang terhubung melalui HTTPS, Anda mungkin perlu
+  menghubungkan ke server pengembangan lokal, yang tidak memiliki sertifikat
+  SSL untuk server produksi Anda. Untuk mendukungnya tanpa
+  memodifikasi kode aplikasi, Anda bisa menetapkan CA hanya-runut
+  yang <i>hanya</i> dipercaya bila <a href="{@docRoot}guide/topics/manifest/application-element.html#debug">
+android:debuggable</a>
+  adalah {@code true} dengan menggunakan {@code debug-overrides}. Biasanya IDE dan alat
+  build mengatur flag ini secara otomatis untuk build non-rilis.
+</p>
+
+<p>
+  Ini lebih aman daripada kode kondisional biasa karena, sebagai tindakan
+  pencegahan keamanan, toko aplikasi tidak menerima aplikasi yang ditandai
+  bisa-dirunut.
+</p>
+
+<p>
+<code>res/xml/network_security_config.xml</code>:
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?&gt;
+&lt;network-security-config&gt;
+    &lt;debug-overrides&gt;
+        &lt;trust-anchors&gt;
+            &lt;certificates src="@raw/debug_cas"/&gt;
+        &lt;/trust-anchors&gt;
+    &lt;/debug-overrides&gt;
+&lt;/network-security-config&gt;
+</pre>
+</p>
+
+
+<h2 id="UsesCleartextTraffic">Berhenti dari Lalu Lintas Cleartext</h2>
+
+<p>
+  Aplikasi yang bermaksud menghubungkan ke tujuan dengan hanya menggunakan koneksi
+  aman bisa berhenti mendukung cleartext (menggunakan protokol
+  HTTP yang tidak dienkripsi sebagai ganti HTTPS) ke tujuan tersebut. Opsi ini akan membantu mencegah
+  regresi tidak disengaja dalam aplikasi karena perubahan dalam URL yang disediakan oleh sumber-sumber
+  eksternal seperti server backend.
+  Lihat {@link android.security.NetworkSecurityPolicy#isCleartextTrafficPermitted
+  NetworkSecurityPolicy.isCleartextTrafficPermitted()} untuk detail selengkapnya.
+</p>
+
+<p>
+  Misalnya, aplikasi mungkin ingin memastikan semua koneksi ke {@code
+  secure.example.com} selalu dilakukan melalui HTTPS untuk melindungi lalu lintas sensitif
+  dari jaringan yang berbahaya.
+</p>
+
+<p>
+<code>res/xml/network_security_config.xml</code>:
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?&gt;
+&lt;network-security-config&gt;
+    &lt;domain-config usesCleartextTraffic="false"&gt;
+        &lt;domain includeSubdomains="true"&gt;secure.example.com&lt;/domain&gt;
+    &lt;/domain-config&gt;
+&lt;/network-security-config&gt;
+</pre>
+</p>
+
+
+<h2 id="CertificatePinning">Menyematkan Sertifikat</h2>
+
+<p>
+  Biasanya aplikasi mempercayai semua CA yang telah terinstal. Jika salah satu dari CA ini
+  mengeluarkan sertifikat palsu, aplikasi akan berisiko terkena serangan
+  MiTM. Beberapa aplikasi memilih untuk membatasi set sertifikat yang mereka terima
+  baik dengan membatasi set CA yang mereka percaya atau dengan menyematkan sertifikat.
+</p>
+
+<p>
+  Penyematan sertifikat dilakukan dengan memberikan seperangkat sertifikat dengan hash
+  kunci publik (SubjectPublicKeyInfo pada sertifikat X.509). Rantai
+  sertifikat nanti hanya berlaku jika rantai sertifikat berisi setidaknya salah satu
+  dari kunci publik yang disematkan.
+</p>
+
+<p>
+  Perhatikan, saat menggunakan penyematan sertifikat, Anda harus selalu menyertakan kunci
+  cadangan sehingga jika Anda terpaksa beralih ke kunci baru, atau mengubah CA (saat
+  menyematkan ke sertifikat CA atau perantara CA tersebut), konektivitas
+  aplikasi Anda tidak terpengaruh. Jika tidak, Anda harus mendorong
+  pembaruan ke aplikasi tersebut untuk memulihkan konektivitas.
+</p>
+
+<p>
+  Selain itu bisa juga mengatur waktu kedaluwarsa untuk pin yang setelah
+  itu penyematan tidak dilakukan. Hal ini membantu mencegah masalah konektivitas dalam
+  aplikasi yang belum diperbarui. Akan tetapi, mengatur waktu kedaluwarsa
+  pada pin mungkin akan membuat penyematan bisa diabaikan.
+</p>
+
+<p>
+<code>res/xml/network_security_config.xml</code>:
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?&gt;
+&lt;network-security-config&gt;
+    &lt;domain-config&gt;
+        &lt;domain includeSubdomains="true"&gt;example.com&lt;/domain&gt;
+        &lt;pin-set expiration="2018-01-01"&gt;
+            &lt;pin digest="SHA-256"&gt;7HIpactkIAq2Y49orFOOQKurWxmmSFZhBCoQYcRhJ3Y=&lt;/pin&gt;
+            &lt;!-- backup pin --&gt
+            &lt;pin digest="SHA-256"&gt;fwza0LRMXouZHRC8Ei+4PyuldPDcf3UKgO/04cDM1oE=&lt;/pin&gt;
+    &lt;/domain-config&gt;
+&lt;/network-security-config&gt;
+</pre>
+</p>
+
+
+<h2 id="ConfigInheritance">Perilaku Pewarisan Konfigurasi</h2>
+
+<p>
+  Nilai yang tidak diatur dalam konfigurasi tertentu akan diwariskan. Perilaku ini memungkinkan konfigurasi
+  yang lebih kompleks sambil menjaga file konfigurasi tetap terbaca.
+</p>
+
+<p>
+  Jika nilai tidak diatur dalam entri tertentu maka nilai dari entri berikutnya yang lebih
+  umum akan digunakan. Nilai yang tidak diatur dalam {@code domain-config} akan
+  diambil dari {@code domain-config} induk, jika tersarang, atau dari {@code
+  base-config} jika tidak. Nilai yang tidak diatur dalam {@code base-config} akan menggunakan
+  nilai default platform.
+</p>
+
+<p>
+  Misalnya pertimbangkan, bila semua koneksi ke subdomain {@code
+  example.com} harus menggunakan set CA custom. Selain itu, lalu lintas cleartext ke
+  domain ini diizinkan <em>kecuali</em> saat menghubungkan ke {@code
+  secure.example.com}. Dengan menyarangkan konfigurasi untuk {@code
+  secure.example.com} dalam konfigurasi untuk {@code example.com},
+  {@code trust-anchors} tidak perlu digandakan.
+</p>
+
+<p>
+<code>res/xml/network_security_config.xml</code>:
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?&gt;
+&lt;network-security-config&gt;
+    &lt;domain-config&gt;
+        &lt;domain includeSubdomains="true"&gt;example.com&lt;/domain&gt;
+        &lt;trust-anchors&gt;
+            &lt;certificates src="@raw/my_ca"/&gt;
+        &lt;/trust-anchors&gt;
+        &lt;domain-config cleartextTrafficPermitted="false"&gt;
+            &lt;domain includeSubdomains="true"&gt;secure.example.com&lt;/domain&gt;
+        &lt;/domain-config&gt;
+    &lt;/domain-config&gt;
+&lt;/network-security-config&gt;
+</pre>
+</p>
+
+
+<h2 id="FileFormat">Format File Konfigurasi</h2>
+
+<p>
+  Fitur Network Security Configuration menggunakan format file XML.
+  Struktur keseluruhan file ditampilkan dalam contoh kode berikut:
+</p>
+
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?&gt;
+&lt;network-security-config&gt;
+    &lt;base-config&gt;
+        &lt;trust-anchors&gt;
+            &lt;certificates src="..."/&gt;
+            ...
+        &lt;/trust-anchors&gt;
+    &lt;/base-config&gt;
+
+    &lt;domain-config&gt;
+        &lt;domain&gt;android.com&lt;/domain&gt;
+        ...
+        &lt;trust-anchors&gt;
+            &lt;certificates src="..."/&gt;
+            ...
+        &lt;/trust-anchors&gt;
+        &lt;pin-set&gt;
+            &lt;pin digest="..."&gt;...&lt;/pin&gt;
+            ...
+        &lt;/pin-set&gt;
+    &lt;/domain-config&gt;
+    ...
+    &lt;debug-overrides&gt;
+        &lt;trust-anchors&gt;
+            &lt;certificates src="..."/&gt;
+            ...
+        &lt;/trust-anchors&gt;
+    &lt;/debug-overrides&gt;
+&lt;/network-security-config&gt;
+</pre>
+
+<p>
+  Bagian berikut menjelaskan sintaks dan detail lainnya dari format
+  file.
+</p>
+
+<h3 id="network-security-config">
+  &lt;network-security-config&gt;
+</h3>
+
+<dl class="xml">
+  <dt>
+    bisa berisi:
+  </dt>
+
+  <dd>
+    0 atau 1 <code><a href="#base-config">&lt;base-config&gt;</a></code><br>
+    Sejumlah <code><a href=
+    "#domain-config">&lt;domain-config&gt;</a></code><br>
+    0 atau 1 <code><a href="#debug-overrides">&lt;debug-overrides&gt;</a></code>
+  </dd>
+</dl>
+
+<h3 id="base-config">
+  &lt;base-config&gt;
+</h3>
+
+<dl class="xml">
+  <dt>
+    sintaks:
+  </dt>
+</dl>
+
+<pre class="stx">
+&lt;base-config <a href=
+"#usesCleartextTraffic">usesCleartextTraffic</a>=["true" | "false"]&gt;
+    ...
+&lt;/base-config&gt;
+</pre>
+<dl class="xml">
+  <dt>
+    bisa berisi:
+  </dt>
+
+  <dd>
+    <code><a href="#trust-anchors">&lt;trust-anchors&gt;</a></code>
+  </dd>
+
+  <dt>
+    keterangan:
+  </dt>
+
+  <dd>
+    Konfigurasi default yang digunakan oleh semua koneksi yang tujuannya tidak
+    tercakup oleh <a href="#domain-config"><code>domain-config</code></a>.
+
+<p>
+  Nilai yang tidak diatur akan menggunakan nilai default platform. Konfigurasi
+  default untuk aplikasi yang menargetkan API level 24 ke atas:
+</p>
+
+<pre>
+&lt;base-config usesCleartextTraffic="true"&gt;
+    &lt;trust-anchors&gt;
+        &lt;certificates src="system" /&gt;
+    &lt;/trust-anchors&gt;
+&lt;/base-config&gt;
+</pre>
+Konfigurasi default untuk aplikasi yang menargetkan API level 23 ke bawah:
+<pre>
+&lt;base-config usesCleartextTraffic="true"&gt;
+    &lt;trust-anchors&gt;
+        &lt;certificates src="system" /&gt;
+        &lt;certificates src="user" /&gt;
+    &lt;/trust-anchors&gt;
+&lt;/base-config&gt;
+</pre>
+
+  </dd>
+</dl>
+
+<h3 id="domain-config">&lt;domain-config&gt;</h3>
+<dl class="xml">
+<dt>sintaks:</dt>
+<dd>
+<pre class="stx">&lt;domain-config <a href="#usesCleartextTraffic">usesCleartextTraffic</a>=["true" | "false"]&gt;
+    ...
+&lt;/domain-config&gt;</pre>
+</dd>
+
+<dt>Bisa Berisi:</dt>
+
+<dd>
+1 atau beberapa <code><a href="#domain">&lt;domain&gt;</a></code>
+<br/>0 atau 1 <code><a href="#trust-anchors">&lt;trust-anchors&gt;</a></code>
+<br/>0 atau 1 <code><a href="#pin-set">&lt;pin-set&gt;</code></a>
+<br/>Sejumlah <code>&lt;domain-config&gt;</code> tersarang</dd>
+
+<dt>Keterangan</dt>
+<dd>Konfigurasi yang digunakan untuk koneksi ke tujuan tertentu seperti didefinisikan oleh elemen {@code domain}.
+
+<p>Perhatikan, jika beberapa elemen {@code domain-config} mencakup suatu tujuan, konfigurasi dengan aturan domain paling spesifik (terpanjang) yang cocok
+akan digunakan.</p></dd>
+</dl>
+
+
+<h3 id="domain">&lt;domain&gt;</h3>
+
+<dl class="xml">
+  <dt>
+    sintaks:
+  </dt>
+
+  <dd>
+    <pre class="stx">
+&lt;domain includeSubdomains=["true" | "false"]&gt;example.com&lt;/domain&gt;
+</pre>
+  </dd>
+
+  <dt>
+    Atribut:
+  </dt>
+
+  <dd>
+    <dl class="attr">
+      <dt>
+        {@code includeSubdomains}
+      </dt>
+
+      <dd>
+        Jika {@code "true"} maka aturan domain ini akan dicocokkan dengan domain dan semua
+        subdomain, termasuk subdomain dari subdomain, jika tidak peraturan hanya
+        diterapkan pada kecocokan yang persis tepat.
+      </dd>
+    </dl>
+  </dd>
+
+  <dt>
+    Keterangan:
+  </dt>
+</dl>
+
+<h3 id="debug-overrides">&lt;debug-overrides&gt;</h3>
+
+<dl class="xml">
+  <dt>
+    sintaks:
+  </dt>
+
+  <dd>
+    <pre class="stx">
+&lt;debug-overrides&gt;
+    ...
+&lt;/debug-overrides&gt;
+</pre>
+  </dd>
+
+  <dt>
+    Bisa Berisi:
+  </dt>
+
+  <dd>
+    0 atau 1 <code><a href="#trust-anchors">&lt;trust-anchors&gt;</a></code>
+  </dd>
+
+  <dt>
+    Keterangan:
+  </dt>
+
+  <dd>
+    Pengesampingan yang akan diterapkan bila <a href="{@docRoot}guide/topics/manifest/application-element.html#debug">android:debuggable</a>
+    adalah {@code "true"} yang biasanya terjadi untuk build non-rilis
+    yang dihasilkan oleh alat IDE dan build. Trust-anchor yang ditetapkan dalam {@code
+    debug-overrides} akan ditambahkan ke semua konfigurasi lainnya dan penyematan
+    sertifikat tidak dilakukan bila rantai sertifikat server menggunakan satu dari
+    trust-anchor hanya-runut ini. Jika <a href="{@docRoot}guide/topics/manifest/application-element.html#debug">android:debuggable</a>
+    adalah {@code "false"} maka bagian ini akan diabaikan sepenuhnya.
+  </dd>
+</dl>
+
+<h3 id="trust-anchors">&lt;trust-anchors&gt;</h3>
+<dl class="xml">
+  <dt>
+    sintaks:
+  </dt>
+
+  <dd>
+    <pre class="stx">
+&lt;trust-anchors&gt;
+...
+&lt;/trust-anchors&gt;
+</pre>
+  </dd>
+
+  <dt>
+    Bisa Berisi:
+  </dt>
+
+  <dd>
+    Sejumlah <code><a href="#certificates">&lt;certificates&gt;</a></code>
+  </dd>
+
+  <dt>
+    Keterangan:
+  </dt>
+
+  <dd>
+    Set trust-anchor untuk koneksi aman.
+  </dd>
+</dl>
+
+
+<h3 id="certificates">&lt;certificates&gt;</h3>
+<dl class="xml">
+<dt>sintaks:</dt>
+<dd><pre class="stx">&lt;certificates src=["system" | "user" | "<i>raw resource</i>"]
+              overridePins=["true" | "false"] /&gt;
+</pre></dd>
+<dt>keterangan:</dt>
+<dd>Set sertifikat X.509 untuk elemen {@code trust-anchors}.</dd>
+
+<dt>atribut:</dt>
+<dd><dl class="attr">
+<dt>{@code src}</dt>
+<dd>
+Sumber sertifikat CA, bisa salah satu dari
+<ul>
+  <li>ID sumber daya mentah yang menunjuk ke file berisi sertifikat X.509.
+  Sertifikat harus dikodekan dalam format DER atau PEM. Dalam hal sertifikat
+  PEM, file <em>tidak boleh</em> berisi data tambahan non-PEM seperti
+  komentar.
+  </li>
+
+  <li>{@code "system"} untuk sertifikat CA sistem yang telah terinstal.
+  </li>
+
+  <li>{@code "user"} untuk sertifikat CA yang ditambahkan pengguna.
+  </li>
+</ul>
+</dd>
+
+<dt>{@code overridePins}</dt>
+<dd>
+  <p>
+    Menetapkan apakah CA dari sumber akan mengabaikan penyematan sertifikat. Jika {@code
+    "true"} maka rantai sertifikat yang rantainya melalui salah satu CA dari
+    sumber ini tidak akan disematkan. Hal ini bisa berguna untuk CA
+    perunutan atau untuk mendukung dengan memungkinkan pengguna melakukan MiTM atas lalu lintas aman aplikasi Anda.
+  </p>
+
+  <p>
+    Default-nya adalah {@code "false"} kecuali jika ditetapkan dalam elemen {@code debug-overrides},
+    dalam hal demikian default-nya adalah {@code "true"}.
+  </p>
+</dd>
+</dl>
+</dd>
+
+
+<h3 id="pin-set">&lt;pin-set&gt;</h3>
+
+<dl class="xml">
+  <dt>
+    sintaks:
+  </dt>
+
+  <dd>
+<pre class="stx">
+&lt;pin-set expiration="date"&gt;
+...
+&lt;/pin-set&gt;
+</pre>
+  </dd>
+
+  <dt>
+    Bisa Berisi:
+  </dt>
+
+  <dd>
+    Sejumlah <code><a href="#pin">&lt;pin&gt;</a></code>
+  </dd>
+
+  <dt>
+    Keterangan:
+  </dt>
+
+  <dd>
+    Satu set pin kunci publik. Agar koneksi aman bisa dipercaya, salah satu
+    kunci publik dalam rantai kepercayaan harus berada dalam set pin. Lihat
+    <code><a href="#pin">&lt;pin&gt;</a></code> untuk mengetahui format pin.
+  </dd>
+
+  <dt>
+    Atribut:
+  </dt>
+
+  <dd>
+    <dl class="attr">
+      <dt>
+        {@code expiration}
+      </dt>
+
+      <dd>
+        Tanggal, dalam format {@code yyyy-MM-dd}, pada saat dan setelah pin
+        kedaluwarsa, sehingga menonaktifkan penyematan. Jika atribut tidak diatur maka
+        pin tidak kedaluwarsa.
+        <p>
+          Tanggal kedaluwarsa membantu mencegah masalah konektivitas di aplikasi yang
+          tidak mendapatkan pembaruan untuk set pin mereka, misalnya karena pengguna
+          menonaktifkan pembaruan aplikasi.
+        </p>
+      </dd>
+    </dl>
+  </dd>
+</dl>
+
+<h3 id="pin">&lt;pin&gt;</h3>
+<dl class="xml">
+  <dt>
+    sintaks:
+  </dt>
+
+  <dd>
+<pre class="stx">
+&lt;pin digest=["SHA-256"]&gt;base64 encoded digest of X.509
+    SubjectPublicKeyInfo (SPKI)&lt;/pin&gt;
+</pre>
+  </dd>
+
+  <dt>
+    Atribut:
+  </dt>
+
+  <dd>
+    <dl class="attr">
+      <dt>
+        {@code digest}
+      </dt>
+
+      <dd>
+        Algoritma intisari yang digunakan untuk menghasilkan pin. Saat ini, hanya 
+        {@code "SHA-256"} yang didukung.
+      </dd>
+    </dl>
+  </dd>
+</dl>
diff --git a/docs/html-intl/intl/in/preview/features/tv-recording-api.jd b/docs/html-intl/intl/in/preview/features/tv-recording-api.jd
new file mode 100644
index 0000000..2f9ad7e
--- /dev/null
+++ b/docs/html-intl/intl/in/preview/features/tv-recording-api.jd
@@ -0,0 +1,120 @@
+page.title=Perekaman TV
+page.keywords=preview,sdk,tv,recording
+page.tags=androidn
+
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+  <h2>Dalam dokumen ini</h2>
+  <ol>
+    <li><a href="#supporting">Menunjukkan Dukungan untuk Perekaman</a></li>
+    <li><a href="#recording">Merekam Sesi</a></li>
+    <li><a href="#errors">Menangani Kesalahan Perekaman</a></li>
+    <li><a href="#sessions">Mengelola Sesi yang Direkam</a></li>
+    <li><a href="#best">Praktik Terbaik</a></li>
+  </ol>
+</div>
+</div>
+
+<p>Layanan input TV memungkinkan pengguna menghentikan sementara dan melanjutkan pemutaran saluran melalui
+API perekaman atau time-shifting. Android N telah berkembang hingga ke perekaman
+dengan memungkinkan pengguna menyimpan beberapa sesi rekaman.</p>
+
+<p>Pengguna bisa menjadwalkan rekaman terlebih dahulu, atau memulai rekaman sambil menonton
+suatu acara. Setelah sistem menyimpan rekaman, pengguna bisa melihat-lihat, menata,
+dan memutar kembali rekaman tersebut menggunakan aplikasi TV di sistem.</p>
+
+<p>Jika Anda ingin menyediakan fungsionalitas perekaman untuk layanan input TV,
+Anda harus menunjukkan pada sistem bahwa aplikasi Anda mendukung perekaman, mengimplementasikan
+kemampuan untuk merekam acara, menangani dan memberitahukan setiap kesalahan yang terjadi
+selama perekaman, serta mengelola sesi yang telah Anda rekam.</p>
+
+<h2 id="supporting">Menunjukkan Dukungan untuk Perekaman</h2>
+
+<p>Untuk memberi tahu sistem bahwa layanan input TV Anda mendukung perekaman, ikuti
+langkah-langkah ini:</p>
+
+<ol>
+<li>Dalam metode<code>TvInputService.onCreate()</code> Anda, buat objek
+<code>TvInputInfo</code> baru menggunakan kelas <code>TvInputInfo.Builder</code>.
+</li>
+<li>Saat membuat objek <code>TvInputInfo</code> baru, panggil
+<code>setCanRecord(true)</code> sebelum memanggil <code>build()</code> untuk
+menunjukkan bahwa layanan Anda mendukung perekaman.</li>
+<li>Daftarkan objek <code>TvInputInfo</code> Anda pada sistem dengan memanggil
+<code>TvInputService.updateTvInputInfo()</code>.</li>
+</ol>
+
+<h2 id="recording">Merekam Sesi</h2>
+
+<p>Setelah layanan input TV Anda didaftarkan bahwa ia mendukung fungsionalitas
+perekaman, sistem akan memanggil
+<code>TvInputService.onCreateRecordingSession()</code> Anda bila perlu mengakses
+implementasi perekaman aplikasi Anda. Implementasikan subkelas
+<code>TvInputService.RecordingSession</code> Anda sendiri dan kembalikan
+bila callback <code>onCreateRecordingSession()</code> dipicu.
+ Subkelas ini bertanggung jawab mengalihkan ke saluran data yang benar,
+merekam data yang diminta, dan memberitahukan status perekaman serta kesalahan ke
+sistem.</p>
+
+<p>Bila sistem memanggil <code>RecordingSession.onTune()</code>, dengan meneruskan
+URI saluran, setel ke saluran yang ditetapkan URI. Beri tahu sistem bahwa
+aplikasi Anda telah disetel ke saluran yang diinginkan dengan memanggil <code>notifyTuned()</code>,
+atau, jika aplikasi Anda tidak bisa disetel ke saluran yang tepat, panggil
+<code>notifyError()</code>.</p>
+
+<p>Sistem berikutnya akan memanggil callback <code>RecordingSession.onStartRecording()</code>.
+ Aplikasi Anda harus segera mulai merekam. Bila sistem memanggil
+callback ini, sistem mungkin akan memberikan URI yang berisi informasi tentang program
+yang akan direkam. Bila perekaman selesai, Anda perlu menyalin data
+ini ke tabel data <code>RecordedPrograms</code>.</p>
+
+<p>Terakhir, sistem akan memanggil <code>RecordingSession.onStopRecording()</code>.
+Pada tahap ini, aplikasi Anda harus segera berhenti merekam. Anda juga perlu
+membuat entri dalam tabel <code>RecordedPrograms</code>. Entri ini harus
+menyertakan URI data sesi yang direkam dalam kolom
+<code>RecordedPrograms.COLUMN_RECORDING_DATA_URI</code>, dan informasi
+program yang diberikan sistem dalam panggilan awal ke
+<code>onStartRecording()</code>.</p>
+
+<p>Untuk detail selengkapnya tentang cara mengakses tabel <code>RecordedPrograms</code>
+lihat <a href="#sessions">Mengelola Sesi yang Direkam</a>.</p>
+
+<h2 id="errors">Menangani Kesalahan Perekaman</h2>
+
+<p>Jika terjadi kesalahan selama perekaman, rendering data yang terekam menjadi tidak bisa digunakan,
+beri tahu sistem dengan memanggil <code>RecordingSession.notifyError()</code>.
+Begitu pula, Anda bisa memanggil <code>notifyError()</code> setelah sesi perekaman dibuat
+agar sistem mengetahui bahwa aplikasi Anda tidak bisa lagi merekam sesi.</p>
+
+<p>Jika terjadi kesalahan selama perekaman, namun Anda ingin menyediakan rekaman parsial
+yang bisa digunakan pengguna untuk pemutaran, panggil
+<code>RecordingSession.notifyRecordingStopped()</code> untuk memungkinkan sistem
+menggunakan sesi parsial.</p>
+
+<h2 id="sessions">Mengelola Sesi yang Direkam</h2>
+
+<p>Sistem menyimpan informasi untuk semua sesi yang direkam dari semua
+aplikasi saluran yang mampu merekam dalam tabel penyedia konten <code>TvContract.RecordedPrograms</code>.
+ Informasi ini bisa diakses lewat URI konten
+<code>RecordedPrograms.Uri</code>. Gunakan API konten penyedia untuk
+membaca, menambah, dan menghapus entri dari tabel ini.</p>
+
+<p>Untuk informasi selengkapnya tentang menangani data penyedia konten, lihat
+<a href="{@docRoot}guide/topics/providers/content-provider-basics.html">
+Dasar-Dasar Penyedia Konten</a>.</p>
+
+<h2 id="best">Praktik Terbaik</h2>
+
+<p>Perangkat TV mungkin memiliki penyimpanan terbatas, jadi pertimbangkan sebaik mungkin saat
+mengalokasikan penyimpanan untuk menyimpan sesi rekaman. Gunakan
+<code>RecordingCallback.onError(RECORDING_ERROR_INSUFFICIENT_SPACE)</code> bila
+tidak cukup ruang untuk menyimpan sesi rekaman.</p>
+
+<p>Bila pengguna memulai perekaman, Anda harus memulai perekaman data
+secepatnya. Untuk memfasilitasinya, selesaikan setiap tugas yang memakan waktu di awal,
+seperti mengakses dan mengalokasikan ruang penyimpanan, saat sistem memanggil callback
+<code>onCreateRecordingSession()</code>. Hal ini akan memungkinkan Anda memulai
+perekaman dengan segera bila callback <code>onStartRecording()</code>
+dipicu.</p>
diff --git a/docs/html-intl/intl/in/preview/index.jd b/docs/html-intl/intl/in/preview/index.jd
new file mode 100644
index 0000000..38af201
--- /dev/null
+++ b/docs/html-intl/intl/in/preview/index.jd
@@ -0,0 +1,120 @@
+page.title=Android N Developer Preview
+page.tags="preview","developer"
+meta.tags="preview", "android"
+fullpage=true
+forcelocalnav=true
+header.hide=1
+footer.hide=1
+@jd:body
+
+<script>
+  $(document).ready(function() {
+    if (useUpdatedTemplates) {
+      $("#useUpdatedTemplates").css("display","block");
+    } else {
+      $("#useOldTemplates").css("display","block");
+    }
+  })
+</script>
+
+<section class="dac-expand dac-hero dac-light" style="background-color:#B2DFDB">
+  <div class="wrap" style="max-width:1100px;margin-top:0">
+    <div class="cols dac-hero-content" style="padding-bottom:1em;">
+
+      <div class="col-7of16 col-push-9of16" style="padding-left:2em">
+        <h1 class="dac-hero-title">Android N Developer Preview</h1>
+        <p class="dac-hero-description">
+          Bersiaplah menyambut Android N!
+          <strong>Uji aplikasi Anda</strong> pada perangkat Nexus dan perangkat lainnya. Dukunglah
+          perilaku sistem baru untuk <strong>menghemat daya dan memori</strong>.
+          Tambah aplikasi Anda dengan <strong>UI multijendela</strong>,
+          <strong>pemberitahuan balasan langsung</strong> dan lainnya.
+        </p>
+
+        <a class="dac-hero-cta" href="{@docRoot}preview/overview.html">
+          <span class="dac-sprite dac-auto-chevron"></span>
+          Memulai
+        </a><!--<br>
+        <a class="dac-hero-cta" href="{@docRoot}preview/support.html">
+          <span class="dac-sprite dac-auto-chevron"></span>
+          Update to Android N (final SDK)
+        </a><br>-->
+      </div>
+      <div class="col-9of16 col-pull-7of16 dac-hero-figure" style="margin-top:1.5em;padding-right:1.5em;">
+        <img class="dac-hero-image" src="{@docRoot}images/home/n-preview-hero.png" srcset="{@docRoot}images/home/n-preview-hero.png 1x,
+             {@docRoot}images/home/n-preview-hero_2x.png 2x">
+      </div>
+    </div>
+    <div class="dac-section dac-small">
+      <div class="resource-widget resource-flow-layout col-16"
+           data-query="collection:preview/landing/resources"
+           data-cardSizes="6x2"
+           data-maxResults="6"></div>
+    </div>
+  </div>
+</section>
+
+<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="#build-apps">
+      <i class="dac-sprite dac-arrow-down-gray"></i>
+    </a>
+    <ul class="dac-actions">
+      <li class="dac-action">
+        <a class="dac-action-link" href="https://developer.android.com/preview/bug">
+          <i class="dac-action-sprite dac-sprite dac-auto-chevron-large"></i>
+          Laporkan masalah
+          </a>
+      </li>
+      <li class="dac-action">
+        <a class="dac-action-link" href="{@docRoot}preview/support.html">
+          <i class="dac-action-sprite dac-sprite dac-auto-chevron-large"></i>
+          Lihat catatan rilis
+          </a>
+      </li>
+      <li class="dac-action">
+        <a class="dac-action-link" href="{@docRoot}preview/dev-community">
+          <i class="dac-action-sprite dac-sprite dac-auto-chevron-large"></i>
+          Bergabunglah dengan komunitas pengembang
+          </a>
+      </li>
+    </ul>
+  </div><!-- end .wrap -->
+</div><!-- end .dac-actions -->
+
+<div id="useOldTemplates" style="display:none;color:black" class="actions-bar dac-expand dac-invert">
+  <div class="wrap dac-offset-parent">
+
+    <div class="actions">
+      <div><a href="https://developer.android.com/preview/bug">
+        <span class="dac-sprite dac-auto-chevron-large"></span>
+        Laporkan masalah
+          </a></div>
+      <div><a href="{@docRoot}preview/support.html">
+        <span class="dac-sprite dac-auto-chevron-large"></span>
+        Lihat catatan rilis
+          </a></div>
+      <div><a href="{@docRoot}preview/dev-community">
+        <span class="dac-sprite dac-auto-chevron-large"></span>
+        Bergabunglah dengan komunitas pengembang
+          </a></div>
+    </div><!-- end .actions -->
+  </div><!-- end .wrap -->
+</div>
+
+<section class="dac-section dac-light"><div class="wrap">
+  <h1 class="dac-section-title">Sumber Daya</h1>
+  <div class="dac-section-subtitle">
+    Informasi penting guna membantu mempersiapkan aplikasi untuk Android N.
+  </div>
+
+  <div class="resource-widget resource-flow-layout col-16"
+       data-query="collection:preview/landing/more"
+       data-cardSizes="6x6"
+       data-items-per-page="6"
+       data-maxResults="15"
+       data-initial-results="6"></div>
+
+  </div>
+</section>
+
diff --git a/docs/html-intl/intl/in/preview/j8-jack.jd b/docs/html-intl/intl/in/preview/j8-jack.jd
new file mode 100644
index 0000000..4b25246
--- /dev/null
+++ b/docs/html-intl/intl/in/preview/j8-jack.jd
@@ -0,0 +1,183 @@
+page.title=Fitur Bahasa Java 8
+page.keywords="android N", "Java 8", "Jack"
+@jd:body
+
+<div id="qv-wrapper">
+  <div id="qv">
+    <ol>
+      <li>
+        <a href="#supported-features">API dan Fitur Bahasa Java 8 yang didukung</a>
+      </li>
+      <li>
+        <a href="#configuration">Mengaktifkan Fitur Java 8 dan Jack Toolchain</a>
+      </li>
+    </ol>
+  </div>
+</div>
+
+<p>Android N memperkenalkan dukungan untuk fitur bahasa Java 8
+  yang bisa Anda gunakan saat mengembangkan aplikasi yang menargetkan Android N.
+  Halaman ini menjelaskan fitur bahasa baru yang didukung dalam Android N
+  Preview, cara menyiapkan proyek Anda dengan benar untuk menggunakannya, dan setiap masalah
+  yang diketahui yang mungkin Anda temui.
+</p>
+
+<p>Untuk mulai menggunakan fitur-fitur ini, Anda perlu mengunduh dan menyiapkan Android
+Studio 2.1 (preview) dan Android N Preview SDK, yang menyertakan
+Jack toolchain yang diperlukan dan Plugin Android untuk Gradle yang telah diperbarui. Jika Anda belum menginstal
+Android N Preview SDK, lihat <a href="{@docRoot}preview/setup-sdk.html">Menyiapkan Pengembangan untuk Android N</a>.</p>
+
+
+
+<p class="note">
+  <strong>Catatan:</strong> Menggunakan fitur bahasa Java 8 yang baru bukanlah
+  persyaratan untuk mengembangkan aplikasi yang menargetkan platform Android N. Jika Anda
+  tidak ingin menulis kode dengan fitur bahasa Java 8, Anda bisa membiarkan nilai kompatibilitas
+  sumber dan target proyek Anda diatur ke Java 7, namun Anda tetap harus
+  mengompilasi dengan JDK 8 untuk membangun pada platform Android N.
+</p>
+
+<h2 id="supported-features">
+  API dan Fitur Bahasa Java 8 yang Didukung
+</h2>
+
+<p>
+  Saat ini tidak semua fitur bahasa Java 8 didukung Android. Akan tetapi,
+  fitur berikut sekarang tersedia saat mengembangkan aplikasi yang menargetkan
+  Android N Preview:
+</p>
+
+<ul>
+  <li>
+    <a class="external-link" href="https://docs.oracle.com/javase/tutorial/java/IandI/defaultmethods.html">Metode-metode
+    antarmuka default dan statis</a>
+  </li>
+
+  <li>
+    <a class="external-link" href="https://docs.oracle.com/javase/tutorial/java/javaOO/lambdaexpressions.html">
+    Ekspresi Lambda</a>
+  </li>
+
+  <li>
+    <a class="external-link" href="https://docs.oracle.com/javase/tutorial/java/annotations/repeating.html">Anotasi
+    yang bisa diulang</a>
+  </li>
+</ul>
+
+
+<p>
+  Selain itu, API fitur bahasa Java 8 berikut ini sekarang tersedia:
+</p>
+
+<ul>
+  <li>Reflection API dan API terkait bahasa:
+  </li>
+
+  <li style="list-style: none; display: inline">
+    <ul>
+      <li>{@code java.lang.FunctionalInterface}
+      </li>
+
+      <li>{@code java.lang.annotation.Repeatable}
+      </li>
+
+      <li>{@code java.lang.reflect.Method.isDefault()}
+      </li>
+
+      <li>dan Reflection API yang terkait dengan anotasi yang bisa diulang, seperti
+     {@code AnnotatedElement.getAnnotationsByType(Class)}
+      </li>
+    </ul>
+  </li>
+  <li>Utility API:
+  </li>
+
+  <li style="list-style: none; display: inline">
+    <ul>
+      <li>{@code java.util.function}
+      </li>
+    </ul>
+  </li>
+</ul>
+
+<p class="note">
+  <strong>Catatan:</strong> Android N mendasarkan implementasi ekspresi
+  lambda pada kelas anonim. Pendekatan ini memungkinkannya kompatibel
+  mundur dan bisa dieksekusi pada versi Android sebelumnya. Untuk menguji ekspresi
+  lambda pada versi sebelumnya, jangan lupa masuk ke file {@code
+  build.gradle} Anda, serta mengatur {@code compileSdkVersion} dan {@code
+  targetSdkVersion} ke 23 atau yang lebih rendah.
+</p>
+
+<h2 id="configuration">
+  Mengaktifkan Fitur Java 8 dan Jack Toolchain
+</h2>
+
+<p>
+  Agar bisa menggunakan fitur bahasa Java 8 yang baru, Anda juga perlu menggunakan
+  <a class="external-link" href="https://source.android.com/source/jack.html">Jack toolchain</a>
+  yang baru. Android Toolchain yang baru ini mengompilasi sumber bahasa Java menjadi dex
+  bytecode yang bisa dibaca Android, memiliki format pustaka {@code .jack} sendiri, dan menyediakan sebagian besar fitur
+  toolchain sebagai bagian dari alat tunggal: pengemasan ulang, penciutan, pengaburan dan
+  multidex.
+</p>
+
+<p>Inilah perbandingan dua toolchain yang digunakan untuk membangun file Android DEX:</p>
+<ul>
+  <li>Toolchain javac lama:<br>
+  <b>javac</b> ({@code .java} --&gt; {@code .class}) --&gt; <b>dx</b> ({@code
+ .class} --&gt; {@code .dex})
+  </li>
+
+  <li>Jack Toolchain baru:<br>
+  <b>Jack</b> ({@code .java} --&gt; {@code .jack} --&gt; {@code .dex})
+  </li>
+</ul>
+
+<h3>
+  Mengonfigurasi Gradle
+</h3>
+
+<p>
+  Untuk mengaktifkan fitur bahasa Java 8 dan Jack untuk proyek Anda, masukkan
+  yang berikut dalam file {@code build.gradle} yang spesifik untuk modul:
+</p>
+
+<pre>
+android {
+  ...
+  defaultConfig {
+    ...
+    jackOptions {
+      enabled true
+    }
+  }
+  compileOptions {
+    sourceCompatibility JavaVersion.VERSION_1_8
+    targetCompatibility JavaVersion.VERSION_1_8
+  }
+}
+</pre>
+
+<h3>
+  Masalah yang Diketahui
+</h3>
+
+<p>
+  Instant Run, yang diperkenalkan dalam Android Studio 2.0 (Beta), saat ini tidak berfungsi
+  dengan Jack dan akan dinonaktifkan saat menggunakan toolchain baru.
+</p>
+
+<p>Karena Jack tidak menghasilkan file kelas antara saat mengompilasi sebuah
+aplikasi, alat yang bergantung pada file-file ini sekarang tidak berfungsi pada Jack. Beberapa
+contoh alat-alat ini adalah:</p>
+
+<ul>
+  <li>Pendeteksi lint yang beroperasi pada file kelas
+  </li>
+
+  <li>Alat dan pustaka yang mewajibkan file kelas aplikasi (misalnya JaCoCo
+  dan Mockito)</li>
+</ul>
+
+<p>Jika Anda menemukan masalah lain saat menggunakan Jack, <a href="http://tools.android.com/filing-bugs">laporkan bug</a>.</p>
\ No newline at end of file
diff --git a/docs/html-intl/intl/in/preview/overview.jd b/docs/html-intl/intl/in/preview/overview.jd
new file mode 100644
index 0000000..4b48a22
--- /dev/null
+++ b/docs/html-intl/intl/in/preview/overview.jd
@@ -0,0 +1,440 @@
+page.title=Ikhtisar Program
+page.metaDescription=Persiapkan aplikasi Anda untuk versi Android berikutnya.
+page.image=images/cards/card-n-overview_2x.png
+meta.tags="preview", "pengembang", "android"
+page.tags="preview", "developer", "android"
+
+@jd:body
+<!--
+<div class="cols" style=
+"background-color:#f2daf5; padding: 5px 0;margin-bottom:1em; text-align:center;">
+<h3>
+    Developer Preview 3 is now available
+  </h3>
+  <p>Includes final SDK and near-final system images</p>
+   <div style="margin:auto 1em">
+ <ul class="dac-section-links">
+    <li class="dac-section-link">
+      <a href="{@docRoot}preview/support.html#preview3-notes">
+      <span class="dac-sprite dac-auto-chevron"></span>
+      Read the Notes</a>
+    </li>
+
+    <li class="dac-section-link">
+      <a href="{@docRoot}preview/support.html#preview3-get">
+      <span class="dac-sprite dac-auto-chevron"></span>
+      Get the Update</a>
+    </li>
+
+    <li class="dac-section-link">
+      <a href="https://code.google.com/p/android-developer-preview/">
+      <span class="dac-sprite dac-auto-chevron"></span>
+      Report Issues</a>
+    </li>
+  </ul>
+  </div>
+</div>
+-->
+
+<p>
+  Selamat datang di <strong>Android N Developer Preview</strong>, program yang
+ akan memberi apa saja yang Anda butuhkan untuk menguji dan mengoptimalkan aplikasi untuk versi
+ Android berikutnya. Program ini tersedia gratis, dan Anda bisa langsung memulai hanya dengan
+  mengunduh alat bantu N Developer Preview.
+</p>
+
+
+
+
+
+
+
+<div style="background-color:#eceff1;padding:1em;">
+<div class="wrap">
+  <div class="cols">
+    <div class="col-4of12">
+      <h5>
+        Gambar perangkat keras dan emulator
+      </h5>
+
+      <p>
+        Jalankan dan uji aplikasi Anda pada berbagai perangkat atau pada emulator.
+
+      </p>
+    </div>
+
+    <div class="col-4of12">
+      <h5>
+        Kode platform terbaru
+      </h5>
+
+      <p>
+        Kami akan menyediakan pembaruan setiap bulan selama Preview, agar Anda bisa menguji perubahan platform terbaru.
+      </p>
+    </div>
+
+    <div class="col-4of12">
+      <h5>
+        Prioritas untuk masalah pengembang
+      </h5>
+
+      <p>
+        Selama beberapa minggu pertama, kami akan memberikan prioritas pada masalah-masalah
+        yang dilaporkan pengembang, jadi ujilah dan berikan umpan balik sesegera mungkin.
+      </p>
+    </div>
+
+  </div>
+
+  <div class="cols">
+
+
+    <div class="col-4of12">
+      <h5>
+        Kemampuan dan perilaku baru
+      </h5>
+
+      <p>
+        Mulailah pekerjaan lebih awal untuk mendukung perilaku platform baru dan kembangkan dengan fitur-fitur baru.
+      </p>
+    </div>
+
+    <div class="col-4of12">
+        <h5>
+        Pembaruan dikirim melalui OTA
+      </h5>
+
+      <p>
+        Pembaruan lewat jaringan seluler tanpa kendala untuk setiap perangkat yang didukung melalui
+        Android Beta Program. Flashing tidak diperlukan.
+      </p>
+    </div>
+
+    <div class="col-4of12">
+      <h5>
+        Umpan balik dan dukungan
+      </h5>
+
+      <p>
+        Laporkan masalah dan berikan umpan balik kepada kami dengan menggunakan
+        <a href="{@docRoot}preview/bug">Issue Tracker</a> kami. Hubungkan dengan
+        pengembang lain di
+        <a href="{@docRoot}preview/dev-community">N&nbsp;Developer Community</a>.
+      </p>
+    </div>
+  </div>
+</div>
+</div>
+
+<!--
+<p>New in the Android N Developer Preview: </p>
+
+<ul>
+  <li> Accompanying Android Beta Program for consumers, starting later in the preview</li>
+  <li> More supported devices, including devices from OEM partners</li>
+  <li> Seamless OTAs for your devices, from initial release to final N release without flashing</li>
+</ul>
+-->
+
+<h2 id="timeline">Kronologi dan pembaruan</h2>
+<img src="{@docRoot}images/n-preview-updates_2x.png">
+
+<p>
+  N Developer Preview berjalan dari 9 Maret 2016 hingga rilis publik Android N
+ final dirilis ke AOSP dan OEM, yang direncanakan selama Kuartal 3 2016.
+</p>
+
+<p>
+  Pada tahapan pencapaian pengembangan utama kami akan mengirimkan pembaruan untuk lingkungan pengujian dan
+  pengembangan Anda. Umumnya Anda boleh berharap mendapatkan pembaruan setiap bulan (dengan interval 4 hingga 6
+  minggu). Tahapan pencapaian tercantum di bawah ini.
+</p>
+
+<ul>
+  <li><strong><a href="{@docRoot}preview/support.html">Preview 1</a></strong> (rilis pertama, alfa)</li>
+  <li><strong>Preview 2</strong> (pembaruan bertahap, beta)</li>
+  <li><strong>Preview 3</strong> (pembaruan bertahap, beta)</li>
+  <li><strong>Preview 4</strong> (API final dan SDK resmi, publikasi di Play)</li>
+  <li><strong>Preview 5</strong> (citra sistem hampir final untuk pengujian akhir)</li>
+  <li><strong>Rilis Final</strong> ke AOSP dan ekosistem</li>
+</ul>
+
+<p>
+  Setiap pembaruan menyertakan SDK Tools, citra sistem preview, emulator, dokumentasi
+  referensi, dan diff API.
+</p>
+
+<p>
+  <strong>Tiga tahapan pencapaian preview pertama</strong> memberikan <strong>pengujian
+  awal dan lingkungan pengembangan</strong> yang membantu Anda mengidentifikasi
+  masalah kompatibilitas dalam aplikasi Anda saat ini dan merencanakan migrasi atau menampilkan pekerjaan
+  yang diperlukan untuk menargetkan platform baru. Ini adalah periode prioritas yang akan
+  memberi kami umpan balik dari Anda tentang fitur dan API serta masalah kompatibilitas file
+  &mdash; untuk semua ini, harap gunakan <a href="{@docRoot}preview/bug">Issue
+ Tracker</a>. Anda boleh mengharapkan beberapa perubahan API selama pembaruan ini.
+</p>
+
+<p>
+  Pada <strong>preview 4 dan 5</strong> Anda akan memiliki akses ke <strong>API
+  dan SDK N final</strong> untuk dikembangkan, serta citra sistem yang hampir final
+  untuk menguji perilaku dan fitur sistem. Android N akan memberikan level API
+  standar pada saat ini. Anda bisa mulai melakukan pengujian kompatibilitas akhir atas aplikasi
+  lama dan menyempurnakan kembali setiap kode baru yang menggunakan API atau fitur N.
+</p>
+
+<p>
+  Juga, mulai preview 4, Anda akan bisa <strong>mempublikasikan aplikasi ke
+  perangkat</strong> yang menjalankan Android N pada level API resmi, seperti
+  perangkat konsumen yang telah memilih mengikuti program Android Beta. Anda bisa
+  mempublikasikan ke saluran alfa dan beta Google Play terlebih dahulu, sehingga Anda bisa menguji
+  aplikasi pada konsumen Android Beta sebelum mendistribusikan secara luas di
+  toko.
+</p>
+
+<p>
+  Saat Anda menguji dan mengembangkan di Android N, kami sangat menyarankan<strong>terus memperbarui
+  lingkungan pengembangan</strong> saat pembaruan preview
+  dirilis. Untuk mempermudah prosesnya, Anda bisa mendaftarkan perangkat pengujian di program
+  Android Beta dan mengambil <strong>pembaruan lewat  jaringan seluler (OTA)</strong> pada
+  setiap tahapan pencapaian. Atau, citra preview yang diperbarui
+  tersedia bila Anda mengunduh dan mem-flash secara manual.
+</p>
+
+<p>
+  Kami akan memberi tahu Anda bila pembaruan preview telah tersedia lewat <a href="http://android-developers.blogspot.com/">Android Developers Blog</a> serta
+  situs ini dan <a href="{@docRoot}preview/dev-community">Android
+  N Developer Community</a>.
+</p>
+
+
+<h2 id="preview_tools">Apa yang ada di N Developer Preview?</h2>
+
+<p>
+  N Developer Preview menyertakan apa saja yang Anda perlukan untuk menguji aplikasi
+  yang ada pada berbagai ukuran layar, teknologi jaringan, chipset CPU/GPU,
+  dan arsitektur perangkat keras.
+</p>
+
+<h3 id="sdk_tools">SDK Tools</h3>
+
+<p>Anda bisa mengunduh komponen-komponen ini melalui SDK Manager di <a href="{@docRoot}sdk/installing/adding-packages.html">Android Studio</a>:</p>
+
+<ul>
+  <li> <strong>SDK dan alat</strong> N Developer Preview
+  <li> <strong>Citra sistem emulator</strong> N Developer Preview (32-bit &amp; 64-bit)
+  <li> <strong>Citra sistem emulator</strong> N Developer Preview untuk Android TV (32-bit)
+  <li> N Developer Preview mendukung pustaka (untuk template aplikasi baru)
+</ul>
+
+<p>
+  Kami akan menyediakan pembaruan untuk alat pengembangan ini di setiap tahapan pencapaian jika diperlukan.
+</p>
+
+<h3 id="hardware_system_images">Citra sistem perangkat keras</h3>
+
+<p>
+  N Developer Preview menyertakan citra sistem Nexus dan perangkat keras lainnya yang bisa Anda gunakan saat
+  menguji dan mengembangkan pada perangkat fisik. Lihat halaman <a href="{@docRoot}preview/download.html">Citra Perangkat</a> untuk melihat daftar lengkap
+  citra perangkat keras.
+</p>
+
+<p>
+  Kami akan menyediakan citra sistem yang diperbarui untuk perangkat ini di setiap tahapan pencapaian. Anda
+  bisa mengunduh dan mem-flash citra sistem yang diperbarui ke perangkat pengujian
+  secara manual, sesering yang Anda perlukan. Ini terutama berguna untuk lingkungan pengujian
+  otomatis bila Anda mungkin perlu mem-flash ulang perangkat beberapa
+  kali.
+</p>
+
+<p class="note"><strong>Catatan</strong>:
+  <strong>Perangkat yang di-flash secara manual tidak akan mendapatkan pembaruan OTA</strong> seperti di
+  preview tahun lalu. Tahun ini, Anda bisa memperoleh OTA dengan mendaftarkan perangkat dalam
+ Android Beta Program &mdash; lihat detailnya di bagian berikutnya.
+</p>
+
+<h3 id="android_beta">Pembaruan OTA melalui Android Beta Program</h3>
+
+<p>
+  Yang baru untuk Android N adalah program pembaruan lewat jaringan seluler (OTA) yang secara otomatis
+  mengirim pembaruan preview terbaru Android N secara langsung ke perangkat yang telah mendaftar
+  di program ini. Program ini gratis dan terbuka bagi siapa saja yang memiliki
+  perangkat yang didukung dan telah didaftarkan ke akun Google mereka.
+</p>
+
+<p>
+  Untuk mendaftarkan dalam program ini, kunjungi situs <a href="https://g.co/androidbeta">Android
+  Beta Program</a>. Anda akan
+  melihat semua perangkat yang telah didaftarkan ke akun Anda yang memenuhi syarat untuk mendaftar
+  dalam Android Beta.
+</p>
+
+<ol>
+  <li> Pilih perangkat yang Anda inginkan untuk menerima pembaruan Android N
+  <li> Klik Enroll, baca dan setujui ketentuan layanan, kemudian klik OK
+</ol>
+
+<p>
+  Setelah terdaftar, perangkat Anda akan segera menerima pembaruan. Umumnya
+  Anda tidak perlu pengaturan ulang penuh atas data untuk beralih ke Android N, namun
+  Anda disarankan mencadangkan setiap data yang tidak ingin hilang sebelum
+  mendaftarkan perangkat.
+</p>
+
+<p>
+  Saat pembaruan dikirim ke perangkat Anda, kami menyarankan Anda untuk segera mengunduh dan
+  menginstalnya sesegera mungkin. Anda perlu memantau perubahan terbaru
+  di UI sistem, perilaku, API, dan fitur.
+</p>
+
+<p>
+  Di akhir periode Developer Preview, perangkat Anda yang telah didaftarkan akan
+  menerima pembaruan ke rilis resmi Android N.
+</p>
+
+<p>
+  Anda bisa membatalkan pendaftaran perangkat dari program Android Beta kapan saja dari
+  situs Android Beta. Sebelum membatalkan pendaftaran, pastikan Anda telah mencadangkan data pada
+  perangkat.
+</p>
+
+  <p class="note"><strong>Catatan</strong>:
+  Bila Anda membatalkan pendaftaran, <strong>perangkat Anda akan diatur ulang</strong>
+  ke versi terbaru
+  Android 6.0 Marshmallow (tidak mesti ke versi yang telah Anda
+  instal sebelum mendaftarkan perangkat). Untuk memastikan instalasi yang bersih,
+  data Anda akan dihapus dari perangkat, termasuk kontak, pesan,
+  foto, dan seterusnya.
+</p>
+
+<h3 id="documentation_and_sample_code">Dokumentasi dan kode contoh</h3>
+
+<p>
+  Sumber daya dokumentasi ini tersedia pada situs Developer Preview untuk
+  membantu Anda mempelajari tentang Android&nbsp;N:
+</p>
+
+<ul>
+  <li> <a href="{@docRoot}preview/setup-sdk.html">Menyiapkan Pengembangan untuk
+Android N</a> memiliki
+  instruksi langkah demi langkah untuk memulai.</li>
+  <li> <a href="{@docRoot}preview/behavior-changes.html">Perubahan
+  Perilaku</a>  akan menunjukkan kepada Anda bidang-bidang utama untuk diuji.</li>
+  <li> Dokumentasi API baru, termasuk <a href="{@docRoot}preview/api-overview.html">Ikhtisar API</a>,
+  <a href="{@docRoot}preview/setup-sdk.html#docs-dl">Referensi
+  API</a> yang bisa diunduh, dan panduan pengembang detail mengenai fitur-fitur utama seperti
+  menambahkan dukungan multi-jendela, bundel pemberitahuan, dukungan multilokal, dan lainnya.
+  <li> <a href="{@docRoot}preview/samples.html">Kode contoh</a> yang
+  memperagakan cara mendukung izin dan fitur baru lainnya.
+  <li> <a href="{@docRoot}preview/support.html#release-notes">Catatan rilis</a>
+  untuk versi N Developer Preview saat ini, termasuk catatan perubahan dan
+  laporan diff.
+</ul>
+
+<h4 id="reference">Referensi API yang Bisa Diunduh</h4>
+
+<p>
+  Selama pembaruan preview awal, Anda bisa mengunduh
+  <a href="{@docRoot}preview/setup-sdk.html#docs-dl">Referensi API
+  untuk platform Android N</a> sebagai arsip zip terpisah. Unduhan
+  referensi juga menyertakan laporan diff yang akan membantu Anda mengenali perubahan API dari
+  API 23 dan pembaruan sebelumnya.
+</p>
+
+<p>
+  Bila API Android N sudah final dan API Level resmi telah ditetapkan,
+  kami akan menyediakan referensi API kepada Anda secara online di <a href="https://developer.android.com">https://developer.android.com</a>.
+</p>
+
+<h3 id="support_resources">
+  Sumber daya dukungan
+</h3>
+
+<p>
+  Saat Anda menguji dan mengembangkan N Developer Preview, gunakan saluran
+  ini untuk melaporkan masalah dan memberikan umpan balik.
+</p>
+
+<ul>
+  <li> <a href="https://code.google.com/p/android-developer-preview/">N Developer Preview Issue
+ Tracker</a> adalah <strong>saluran umpan balik utama.</strong> Anda bisa melaporkan bug, masalah
+  kinerja, dan umpan balik umum melalui Issue Tracker. Anda juga bisa memeriksa
+<a href="{@docRoot}preview/bug">masalah yang telah diketahui</a> dan
+  menemukan langkah-langkah solusinya. Kami akan terus mengabari mengenai masalah Anda saat masalah tersebut bila telah dipilah dan dikirimkan ke
+  tim teknis Android untuk ditinjau. </li>
+  <li> <a href="{@docRoot}preview/dev-community">Android N Developer Community</a> adalah
+    sebuah komunitas Google+ tempat Anda bisa <strong>terhubung dengan pengembang lain</strong> yang menggunakan
+    Android N. Anda bisa menyampaikan pengamatan atau ide atau menemukan jawaban atas
+ pertanyaan-pertanyaan mengenai Android N. Kami akan memoderasi komunitas ini dan memberikan jawaban serta
+    panduan jika diperlukan.</li>
+</ul>
+
+<h3 id="targeting">Menargetkan, API preview, dan mempublikasikan</h3>
+
+<p>
+  N Developer Preview menyediakan sistem pengembangan semata dan pustaka Android
+  yang <strong>tidak memiliki API level standar</strong>. Jika Anda tidak ingin
+  mengikuti perilaku kompatibilitas untuk menguji aplikasi Anda (sangat
+  disarankan), Anda bisa menargetkan versi preview Android N dengan mengatur
+  <code><a href=
+  "{@docRoot}preview/setup-sdk.html#create-update">targetSdkVersion</a></code>
+  aplikasi Anda ke <code>“N”</code>.
+</p>
+
+<p>
+  Android N Developer Preview menghasilkan <strong>API preview</strong>
+  &mdash; API ini tidak akan resmi hingga SDK final dirilis,
+  yang saat ini direncanakan pada kuartal ketiga 2016. Ini berarti Anda boleh
+ <strong>berharap adanya perubahan kecil pada API </strong> selama waktu ini, terutama selama
+  minggu-minggu pertama program ini. Kami akan menyediakan rangkuman perubahan pada Anda bersama
+  setiap pembaruan Android N Developer Preview.
+</p>
+
+<p class="note">
+  <strong>Catatan</strong>: Meskipun API preview mungkin berubah, perilaku dasar
+  sistem stabil dan siap diuji.
+
+</p>
+
+<p>
+  Google Play <strong>akan mencegah publikasi aplikasi yang menargetkan N Developer
+  Preview</strong>. Bila SDK final Android N telah tersedia, Anda akan dapat
+  menargetkan Android N API level resmi dan mempublikasikan aplikasi ke Google
+  Play lewat saluran rilis alfa dan beta. Sementara itu, jika Anda ingin
+  mendistribusikan aplikasi yang menargetkan Android N kepada penguji, Anda bisa melakukannya lewat email atau
+  melalui pengunduhan langsung dari situs Anda.
+</p>
+
+<p>
+  Pada saat rilis penuh Android N ke AOSP dan OEM, yang direncanakan selama Kuartal 3 2016,
+  Anda akan dapat mempublikasikan aplikasi yang menargetkan Android N ke saluran
+  rilis publik di Google Play.
+</p>
+
+
+<h2 id="how_to_get_started">Cara memulai</h2>
+
+<p>
+  Untuk memulai pengujian aplikasi Anda dengan Android N:
+</p>
+
+<ol>
+  <li> Tinjau <a href="{@docRoot}preview/api-overview.html">Ikhtisar API</a>
+  dan <a href="{@docRoot}preview/behavior-changes.html">Perubahan Perilaku</a> untuk
+  mendapatkan gambaran mengenai apa saja yang baru dan bagaimana pengaruhnya pada aplikasi Anda. Khususnya,
+  pelajari tentang fitur baru <a href="{@docRoot}preview/features/notification-updates.html">pemberitahuan</a> dan
+  <a href="{@docRoot}preview/features/multi-window.html">dukungan multi-jendela</a>.</li>
+  <li> Siapkan lingkungan Anda dengan mengikuti instruksi berikut untuk <a href="{@docRoot}preview/setup-sdk.html">Menyiapkan SDK Preview</a>
+  dan mengonfigurasi perangkat pengujian.</li>
+  <li> Ikuti <a href="https://developers.google.com/android/nexus/images">instruksi
+  flashing</a> untuk mem-flash citra sistem Android N terbaru ke perangkat Anda. </li>
+  <li> Tinjau <a href="{@docRoot}preview/setup-sdk.html#docs-dl">Referensi API</a>
+  dan <a href="{@docRoot}preview/samples.html">contoh Android N</a> untuk mendapatkan wawasan
+  lebih luas mengenai fitur-futur API yang baru dan cara menggunakannya dalam aplikasi Anda.
+  <li> Bergabunglah dengan <a href="{@docRoot}preview/dev-community">Android N
+  Developer Community</a> untuk mendapatkan berita terbaru dan terhubung dengan pengembang
+  lainnya yang menggunakan platform baru ini.</li>
+</ol>
+
+<p>
+  Terima kasih atas partisipasi Anda dalam program Android N Developer Preview!
+</p>
diff --git a/docs/html-intl/intl/in/preview/samples.jd b/docs/html-intl/intl/in/preview/samples.jd
new file mode 100644
index 0000000..3c51f48
--- /dev/null
+++ b/docs/html-intl/intl/in/preview/samples.jd
@@ -0,0 +1,85 @@
+page.title=Contoh
+page.tags="preview", "samples", "android"
+page.image=images/cards/card-n-samples_2x.png
+@jd:body
+
+<p>
+  Contoh kode berikut disediakan untuk Android N. Untuk
+  mengunduh contoh di Android Studio, pilih opsi menu <b>File &gt; Import
+  Samples</b>.
+</p>
+
+<p class="note">
+  <strong>Catatan:</strong> Proyek yang bisa diunduh ini didesain
+  untuk digunakan bersama Gradle dan Android Studio.
+</p>
+
+
+<h3 id="mw">Multi-Window Playground</h3>
+<img src="{@docRoot}preview/images/sample-multiwindow.png" style="float: left; padding-right: 0.5em" height="250" width="156" />
+<p>
+  Contoh ini memperagakan cara memanfaatkan antarmuka pengguna
+  multijendela bersama aplikasi Anda.
+</p>
+<p>
+  <a href="https://github.com/googlesamples/android-MultiWindowPlayground">
+  Dapatkan di GitHub</a>
+</p>
+
+<div style="clear: both;"></div>
+<h3 id="an">Active Notifications</h3>
+<img src="{@docRoot}preview/images/sample-activenotifications.png" style="float: left; padding-right: 0.5em" height="250" width="141" />
+<p>
+  Ini adalah contoh yang telah ada sebelumnya yang menampilkan layanan sederhana yang mengirimkan
+  pemberitahuan menggunakan NotificationCompat. Setiap percakapan yang belum dibaca dari pengguna
+  akan dikirim sebagai pemberitahuan tersendiri.
+</p>
+<p>
+  Contoh ini telah diperbarui untuk memanfaatkan fitur pemberitahuan baru
+  yang tersedia di Android N.
+</p>
+<p>
+  <a href="https://github.com/googlesamples/android-ActiveNotifications">
+  Dapatkan di GitHub</a>
+</p>
+
+<div style="clear: both;"></div>
+<h3 id="ms">Messaging Service</h3>
+<img src="{@docRoot}preview/images/sample-messagingservice.png" style="float: left; padding-right: 0.5em" height="250" width="150" />
+<p>
+  Ini adalah contoh yang telah ada sebelumnya yang memperagakan cara menggunakan
+  NotificationManager untuk memberi tahu jumlah pemberitahuan yang saat ini ditampilkan
+  oleh aplikasi.
+</p>
+<p>
+  Contoh ini telah diperbarui untuk memanfaatkan fitur pemberitahuan baru
+  yang tersedia di Android N.
+</p>
+<p>
+  <a href="https://github.com/googlesamples/android-MessagingService">
+  Dapatkan di GitHub</a>
+</p>
+
+<div style="clear: both;"></div>
+<h3 id="fbe">Direct Boot</h3>
+<img src="{@docRoot}preview/images/sample-directboot.png" style="float: left; padding-right: 0.5em" height="250" width="141" />
+<p>
+  Contoh ini memperagakan cara menyimpan dan mengakses data dalam penyimpanan yang dienkripsi
+  dengan perangkat yang selalu tersedia saat perangkat booting.
+</p>
+<p>
+  <a href="https://github.com/googlesamples/android-DirectBoot">
+  Dapatkan di GitHub</a>
+</p>
+
+<div style="clear: both;"></div>
+<h3 id="sda">Scoped Directory Access</h3>
+<img src="{@docRoot}preview/images/sample-scopeddirectoryaccess.png" style="float: left; padding-right: 0.5em" height="250" width="141" />
+<p>
+  Contoh ini memperagakan cara membaca dan menulis data dari direktori
+  spesifik, sekaligus meminta izin lebih sedikit.
+</p>
+<p>
+  <a href="https://github.com/googlesamples/android-ScopedDirectoryAccess">
+  Dapatkan di GitHub</a>
+</p>
\ No newline at end of file
diff --git a/docs/html-intl/intl/in/preview/setup-sdk.jd b/docs/html-intl/intl/in/preview/setup-sdk.jd
new file mode 100644
index 0000000..5187e99
--- /dev/null
+++ b/docs/html-intl/intl/in/preview/setup-sdk.jd
@@ -0,0 +1,226 @@
+page.title=Menyiapkan Preview
+meta.keywords="preview", "android"
+page.tags="preview", "developer preview"
+page.image=images/cards/card-n-sdk_2x.png
+
+@jd:body
+
+
+<div id="qv-wrapper">
+  <div id="qv">
+<ol>
+  <li><a href="#get-as13">Dapatkan Android Studio 2.1</a></li>
+  <li><a href="#get-sdk">Dapatkan Android N SDK</a>
+    <ol>
+      <li><a href="#docs-dl">Dokumentasi referensi</a>
+    </ol>
+  </li>
+  <li><a href="#java8">Dapatkan Java 8 JDK dan JRE</a></li>
+  <li><a href="#create-update">Perbarui atau Buat sebuah Proyek</a></li>
+  <li><a href="#next">Langkah Berikutnya</a></li>
+</ol>
+  </div>
+</div>
+
+<p>Untuk mengembangkan aplikasi bagi Android N Preview, Anda perlu membuat beberapa pembaruan
+pada lingkungan pengembang, seperti dijelaskan pada halaman ini.</p>
+
+<p>Untuk sekedar menguji kompatibilitas aplikasi Anda pada
+citra sistem Android N, ikuti panduan untuk <a href="{@docRoot}preview/download.html">Menguji pada Perangkat Android N</a>.</p>
+
+<img src="{@docRoot}preview/images/n-preview-setup.png" width="700" alt="" />
+
+
+<h2 id="get-as13">Dapatkan Android Studio 2.1 (preview)</h2>
+
+<p>Platform Android N menambahkan dukungan untuk <a href="{@docRoot}preview/j8-jack.html">fitur bahasa Java 8</a>,
+yang memerlukan compiler baru yang disebut Jack. Versi terbaru Jack
+saat ini hanya didukung di Android Studio 2.1. Jadi jika ingin
+menggunakan fitur bahasa Java 8, Anda perlu menggunakan Android Studio 2.1 untuk
+membangun aplikasi. Jika tidak, Anda tidak perlu menggunakan compiler Jack, namun Anda
+tetap perlu memperbarui ke JDK 8 untuk mengompilasi pada platform Android N,
+seperti dijelaskan di bawah ini.
+</p>
+
+<iframe width="400" height="225" src="//www.youtube.com/embed/SBbWGxXCMqQ?autohide=1&amp;showinfo=0" frameborder="0" allowfullscreen="" style="float: right; margin: 0 0 20px 20px;"></iframe>
+
+<p>Android Studio 2.1 saat ini tersedia sebagai preview di
+Canary Release Channel. Jika Anda sudah
+memiliki Android Studio dan tidak ingin memperbarui ke Canary Channel, Anda bisa
+mengunduh Android Studio 2.1 sebagai instalasi terpisah dan menggunakannya
+untuk pengembangan dengan Android N, sehingga membuat lingkungan Android Studio
+utama Anda tidak terpengaruh.</p>
+
+<p>Untuk mengunduh Android Studio 2.1 sebagai instalasi terpisah, ikuti langkah-langkah
+ini (atau jika Anda ingin menerima Android Studio 2.1 sebagai pembaruan pada
+instalasi yang ada, lompat ke langkah 4):</p>
+
+<ol>
+  <li>Edit nama
+  instalasi Android Studio yang ada dan tambahkan nomor versinya. Dengan cara ini,
+  bila Anda menginstal versi baru, versi yang ada tidak akan ditimpa.</li>
+  <li>Unduh file ZIP yang sesuai untuk sistem operasi Anda dari
+ <a href="http://tools.android.com/download/studio/canary/latest">halaman pengunduhan Canary Channel</a>.
+  </li>
+  <li>Unzip paket tersebut kemudian pindahkan konten Android Studio 2.1 ke
+   lokasi yang sesuai untuk aplikasi pada sistem Anda, kemudian jalankan.</li>
+  <li>Buka dialog Settings
+    (<strong>File &gt; Settings</strong> pada Windows/Linux, atau
+    <strong>Android Studio &gt; Preferences</strong> pada Mac). Di panel
+    kiri, pilih <strong>Appearance &amp; Behavior &gt; System Settings &gt;
+    Updates</strong>.
+  </li>
+  <li>Pada panel Updates, pilih kotak cek <strong>Automatically
+    check updates for</strong> dan pilih
+    <strong>Canary Channel</strong> dari daftar tarik-turun.
+  </li>
+</ol>
+
+<p>Biarkan jendela pengaturan ini tetap terbuka untuk langkah berikutnya.</p>
+
+
+<h2 id="get-sdk">Dapatkan N Preview SDK</h2>
+
+<p>Untuk mulai mengembangkan dengan Android N API, Anda perlu menginstal
+Android N Preview SDK di Android Studio sebagai berikut:</p>
+
+<ol>
+  <li>Saat panel Updates masih ditampilkan (langkah 4 dari di atas),
+  pilih kotak cek <strong>Automatically
+    check updates for Android SDK</strong> dan pilih
+    <strong>Preview Channel</strong> dari daftar tarik-turun.
+  </li>
+  <li>Klik <strong>Check Now</strong>.</li>
+
+  <li>Di panel kiri, pilih <strong>Appearance &amp; Behavior &gt;
+  System Settings &gt; Android SDK</strong>.
+
+  <li>Klik tab <strong>SDK Platforms</strong>, kemudian pilih kotak cek
+  <strong>Android N Preview</strong>.</li>
+
+  <li>Klik tab <strong>SDK Tools</strong>, kemudian pilih
+    kotak cek <strong>Android SDK Build Tools</strong>, <strong>Android SDK
+    Platform-Tools</strong>, dan <strong>Android SDK Tools</strong>.
+
+  </li>
+
+  <li>Klik <strong>OK</strong>, kemudian terima
+    perjanjian lisensi untuk setiap paket yang perlu diinstal.
+  </li>
+</ol>
+
+<h3 id="docs-dl">Dapatkan dokumentasi referensi N Preview</h3>
+
+<p>
+  Informasi detail tentang Android N API tersedia dalam dokumentasi referensi N Preview,
+ yang bisa Anda unduh dari tabel berikut.
+  Paket ini berisi versi offline untuk situs web pengembang Android yang disederhanakan,
+  dan termasuk referensi API yang diperbarui untuk Android N API dan
+  laporan perbedaan API.
+</p>
+
+<table>
+  <tr>
+    <th scope="col">Dokumentasi</th>
+    <th scope="col">Checksum</th>
+  </tr>
+  <tr>
+    <td style="white-space: nowrap">
+    <a href="{@docRoot}shareables/preview/n-preview-1-docs.zip">n-preview-1-docs.zip</a></td>
+    <td width="100%">
+      MD5: 4ab33ccbe698f46f125cc5b807cf9c2f<br>
+      SHA-1: 6a3880b3ccd19614daae5a4d0698ea6ae11c20a5
+    </td>
+  </tr>
+<table>
+
+
+
+<h2 id="java8">Dapatkan Java 8 JDK dan JRE</h2>
+
+<p>Untuk mengompilasi aplikasi Anda sesuai platform Android N, Anda perlu menggunakan
+Java 8 Developer Kit (JDK 8), dan untuk menggunakan beberapa alat bersama Android
+Studio 2.1, Anda perlu menginstal Java 8 Runtime Environment (JRE 8). Jadi, jika
+Anda belum versi terbarunya, unduhlah JDK 8 dan JRE 8
+sekarang.</p>
+
+<p>Kemudian atur versi JDK di Android Studio sebagai berikut:</p>
+
+<ol>
+  <li>Buka proyek Android di Android Studio, kemudian buka
+    dialog Project Structure dengan memilih <strong>File &gt;
+        Project Structure</strong>. (Atau, Anda bisa mengatur default
+     untuk semua proyek dengan memilih <strong>File &gt; Other Settings &gt;
+        Default Project Structure</strong>.)
+   </li>
+   <li>Di panel kiri dialog, klik <strong>SDK Location</strong>.
+   </li>
+   <li>Dalam bidang <strong>JDK Location</strong>, masukkan lokasi
+    Java 8 JDK (klik tombol di sebelah kanan
+    untuk menjelajahi file Anda), kemudian klik <strong>OK</strong>.
+   </li>
+</ol>
+
+<img src="{@docRoot}preview/images/studio-jdk-location.jpg" width="700" alt="" />
+
+
+<h2 id="create-update">Perbarui atau Buat sebuah Proyek</h2>
+
+<p>
+  Untuk menggunakan Android N API, proyek Anda harus dikonfigurasi dengan benar.
+</p>
+
+<p>Jika Anda berencana menggunakan fitur bahasa Java 8, Anda juga harus membaca
+<a href="{@docRoot}preview/j8-jack.html">Fitur Bahasa Java 8</a>
+untuk informasi tentang fitur Java 8 yang didukung dan
+cara mengonfigurasi proyek Anda dengan Jack compiler.</p>
+
+
+<h3 id="update">Perbarui proyek yang ada</h3>
+
+<p>Buka file
+  <code>build.gradle</code> untuk modul Anda dan perbarui nilainya sebagai
+  berikut:
+</p>
+
+<pre>
+android {
+  compileSdkVersion <strong>'android-N'</strong>
+  buildToolsVersion <strong>'24.0.0-rc1'</strong>
+  ...
+
+  defaultConfig {
+     minSdkVersion <strong>'N'</strong>
+     targetSdkVersion <strong>'N'</strong>
+     ...
+  }
+  ...
+}</pre>
+
+
+<h3 id="create">Buat proyek baru</h3>
+
+
+<p>Untuk membuat proyek baru bagi pengembangan dengan Android N Preview SDK:</p>
+
+<ol>
+  <li>Klik <strong>File &gt; New Project</strong>, dan ikuti langkah-langkahnya hingga
+  Anda tiba di halaman Target Android Devices.
+  </li>
+  <li>Pada halaman ini, pilih opsi <strong>Phone and Tablet</strong>.</li>
+  <li>Pada opsi <strong>Phone and Tablet</strong>, dalam daftar opsi <strong>Minimum
+ SDK</strong>, pilih
+    <strong>N: Android API 23, N Preview (Preview)</strong>.</li>
+</ol>
+
+
+<h2 id="next">Langkah Berikutnya</h2>
+
+<ul>
+  <li>Ikuti panduan untuk <a href="{@docRoot}preview/download.html">Menguji pada Perangkat Android N</a>.</li>
+  <li>Ketahui selengkapnya tentang platform Android N dengan
+<a href="{@docRoot}preview/behavior-changes.html">Perubahan Perilaku</a>
+dan <a href="{@docRoot}preview/api-overview.html">Android N API
+dan Fiturnya</a>.</li>
+</ul>
+
diff --git a/docs/html-intl/intl/ja/preview/api-overview.jd b/docs/html-intl/intl/ja/preview/api-overview.jd
new file mode 100644
index 0000000..617872b
--- /dev/null
+++ b/docs/html-intl/intl/ja/preview/api-overview.jd
@@ -0,0 +1,676 @@
+page.title=デベロッパー向け Android N
+meta.tags="プレビュー"、"androidn"
+page.tags="preview", "developer preview"
+page.image=images/cards/card-n-apis_2x.png
+@jd:body
+
+
+
+
+<div id="qv-wrapper">
+<div id="qv">
+  <h2>主なデベロッパー機能</h2>
+  <ol>
+      <ul style="list-style-type:none;">
+        <li><a href="#multi-window_support">マルチ ウィンドウのサポート</a></li>
+        <li><a href="#notification_enhancements">通知</a></li>
+        <li><a href="#jit_aot">JIT/AOT コンパイル</a></li>
+        <li><a href="#quick_path_to_app_install">アプリの高速インストール</a></li>
+        <li><a href="#doze_on_the_go">どこでも機能する Doze</a></li>
+        <li><a href="#background_optimizations">バックグラウンド処理の最適化</a></li>
+        <li><a href="#data_saver">データセーバー</a></li>
+        <li><a href="#tile_api">クイック設定タイル API</a></li>
+        <li><a href="#number-blocking">迷惑電話のブロック</a></li>
+        <li><a href="#call_screening">通話スクリーニング</a></li>
+        <li><a href="#multi-locale_languages">ロケールと言語</a></li>
+        <li><a href="#icu4">Android の ICU4J API</a></li>
+        <li><a href="#gles_32">OpenGL ES 3.2 API</a></li>
+        <li><a href="#android_tv_recording">Android TV の録画機能</a></li>
+        <li><a href="#android_for_work">Android for Work</a></li>
+        <li><a href="#accessibility_enhancements">アクセシビリティ</a></li>
+        <li><a href="#direct_boot">ダイレクト ブート</a></li>
+        <li><a href="#key_attestation">キーの構成証明</a></li>
+        <li><a href="#network_security_config">ネットワーク セキュリティ構成</a></li>
+        <li><a href="#default_trusted_ca">デフォルトで信頼される証明機関</a></li>
+        <li><a href="apk_signature_v2">APK 署名スキーム v2</a></li>
+        <li><a href="#scoped_directory_access">特定のディレクトリへのアクセス</a></li>
+      </ol>
+</div>
+</div>
+
+
+
+<p>Android N は現在も開発中ですが、N Developer Preview の一部として Android N を試用できます。以下のセクションでは、デベロッパー向けの新しい機能の一部を紹介しています。
+
+ </p>
+
+<p>
+  <a href="{@docRoot}preview/behavior-changes.html">動作の変更点</a>を確認して、プラットフォームの変更がアプリに影響を及ぼす可能性のある領域について把握してください。また、デベロッパー ガイドを参照して主な機能について詳しく学習し、<a href="{@docRoot}preview/setup-sdk.html#docs-dl">API リファレンス</a>をダウンロードして、新しい API の詳細を理解してください。
+
+
+
+</p>
+
+<h2 id="multi-window_support">マルチ ウィンドウのサポート</h2>
+
+
+<p>Android N では、多くのユーザーから求められていたマルチタスク機能がプラットフォームに新しく導入され、マルチ ウィンドウがサポートされています。
+ </p>
+
+  <p>これにより、ユーザーは画面に 2 つのアプリを同時に開くことができるようになりました。 </p>
+  <ul>
+  <li>Android N が動作している携帯端末やタブレットでは、分割画面モードで 2 つのアプリを左右や上下に並べて実行できます。また、2 つのアプリの間にある分割線をドラッグしてアプリのサイズを変更することもできます。
+
+
+ </li>
+
+<li>Android TV デバイスでは、アプリを<a href="{@docRoot}preview/features/picture-in-picture.html">ピクチャ イン ピクチャ モード</a>にすると、アプリにコンテンツを表示したまま、他のアプリをブラウジングまたは操作することができます。詳細は以下をご覧ください。
+
+ </li>
+  </ul>
+
+<div class="col-4of10">
+<img src="{@docRoot}preview/images/mw-portrait.png" alt="" style="height:460px;padding-left:1em;" id="img-split-screen" />
+<p class="img-caption">
+  <strong>図 1.</strong> 分割画面モードで実行されているアプリ
+</p>
+  </div>
+
+<p>特にタブレットや大画面のデバイスでは、マルチ ウィンドウのサポートにより、ユーザーを引き付ける新しい方法が提供されます。アプリでドラッグ アンド ドロップを有効にすると、ユーザーはアプリとの間でコンテンツを簡単にドラッグすることができるので、快適な使い心地が実現することができます。
+
+
+ </p>
+
+<p>マルチ ウィンドウのサポートをアプリに追加して、どのようにマルチ ウィンドウを処理するかを設定するのは簡単です。たとえば、アクティビティの最小許容寸法を指定すると、ユーザーはアクティビティをそのサイズ以下に変更できなくなります。また、アプリに対してマルチ ウィンドウ表示を無効にすると、アプリが全画面モードでのみ表示されます。
+
+
+
+</p>
+
+<p>
+  詳細については、<a href="{@docRoot}preview/features/multi-window.html">マルチ ウィンドウのサポート</a>に関するデベロッパー向けドキュメントをご覧ください。
+
+</p>
+
+<h2 id="notification_enhancements">通知の機能強化</h2>
+
+<p>Android N では、通知が再設計されており、さらに使いやすくなっています。加えられている変更は、次のような点です。
+</p>
+
+<ul>
+  <li>
+    <strong>テンプレートのアップデート</strong>: 通知テンプレートは、ヒーロー イメージやアバターを中心としたデザインにアップデートされています。デベロッパーは、コードに最小限の変更を加えるだけで、この新しいテンプレートを活用できます。
+
+
+  </li>
+
+  <li>
+    <strong>バンドル通知</strong>: メッセージをグループ化します。たとえば、メッセージをトピックごとにグループ化して、各グループを表示できます。ユーザーは、各グループに対して、消去やアーカイブといったアクションを実行できます。Android Wear 向けの通知を実装したことがある場合は、このモデルはおなじみでしょう。
+
+
+
+
+  </li>
+
+  <li>
+    <strong>ダイレクト リプライ</strong>: Android システムでは、インライン リプライがサポートされています。リアルタイム通信アプリを使用しているユーザーは、通知インターフェース内で直接 SMS やテキスト メッセージにすばやく応答できます。
+
+
+  </li>
+
+  <li>
+    <strong>カスタムビュー</strong>: 2 つの新しい API を使用すると、通知でカスタムビューを使用するときに、通知ヘッダーやアクションなどのシステム デコレーションを活用できます。
+
+
+  </li>
+</ul>
+
+<div class="col-4of12">
+  <img src="{@docRoot}preview/images/notifications-1.png" alt="" style="padding:.5em;max-width:226px">
+</div>
+
+<div class="col-4of12">
+  <img src="{@docRoot}preview/images/notifications-3.png" alt="" style="padding:.5em;max-width:226px">
+</div>
+
+<div class="col-4of12">
+  <img src="{@docRoot}preview/images/notifications-2.png" alt="" style="padding:.5em;max-width:226px">
+</div>
+
+
+<p class="img-caption">
+  <strong>図 2.</strong> バンドル通知とダイレクト リプライ
+</p>
+
+<p>以上の新しい機能を実装する方法の詳細については、<a href="{@docRoot}preview/features/notification-updates.html">通知</a>に関するガイドをご覧ください。
+
+</p>
+
+
+
+<h2 id="jit_aot">プロファイルに基づいた JIT/AOT コンパイル</h2>
+
+<p>Android N では、コード プロファイリングにも対応した Just in Time(JIT)コンパイラーが ART に追加されており、Android アプリの実行時のパフォーマンスが向上しています。JIT コンパイラーは、ART で現在使用されている Ahead of Time(AOT)コンパイラーを補完するものであり、実行時パフォーマンスの向上、記憶領域の削減、アプリとシステムのアップデートの高速化に貢献します。
+
+
+
+</p>
+
+<p>プロファイルに基づいたコンパイルを使用すると、アプリの実際の使用方法やデバイス上での状態に応じて、ART が各アプリの AOT/JIT コンパイルを管理します。たとえば、ART は各アプリのホット メソッドのプロファイルを維持し、メソッドをプリコンパイルしてキャッシュすることにより、パフォーマンスを最適化します。また、アプリの他の部分は、実際に使用されるときまでコンパイルされません。
+
+
+
+</p>
+
+<p>プロファイルに基づいたコンパイルは、アプリの主要部分のパフォーマンスを向上させ、関連するバイナリなど、アプリの全体的な RAM 使用量を削減します。この機能は、メモリが少ないデバイスで特に重要です。
+
+</p>
+
+<p>ART は、デバイスのバッテリーへの影響が最小限になるようにプロファイルに基づいたコンパイルを管理します。デバイスがアイドル状態および充電中のときにのみ、プリコンパイルが事前に実行されるため、時間とバッテリーが節約できます。
+
+</p>
+
+<h2 id="quick_path_to_app_install">アプリの高速インストール</h2>
+
+<p>ART の JIT コンパイラーの最も明確な利点の 1 つは、アプリのインストールとシステム アップデートの速度です。Android 6.0 では最適化とインストールの実行に数分かかっていたサイズの大きいアプリでも、数秒でインストールできるようになりました。最適化のステップが不要なったため、システム アップデートも高速化されています。
+
+
+ </p>
+
+<h2 id="doze_on_the_go">どこでも機能する Doze</h2>
+
+<p>Android 6.0 では Doze システム モードが導入されています。これにより、デバイスが机に置かれているときや引き出しに収められているときなどのアイドル時にアプリの CPU とネットワーク通信の実行を保留し、バッテリーを節約します。
+
+ </p>
+
+<p>Android N では Doze が改良され、外出中でもバッテリーを節約できるようになっています。画面をしばらくオフにしたりデバイスを電源から抜いたりすると、Doze により、通常の CPU およびネットワーク制限の一部がアプリに適用されます。つまり、デバイスをポケットに入れて持ち歩いてるときでもバッテリーを節約できます。
+
+
+
+</p>
+
+
+<img src="/preview/images/doze-diagram-1.png" alt="" id="figure1" />
+<p class="img-caption">
+  <strong>図 3.</strong> Doze により、デバイスが静止していないときでも制限が適用され、バッテリーの寿命が延長される
+
+</p>
+
+
+<p>デバイスがバッテリーで動作しているときに画面をしばらくオフにすると、Doze はネットワーク アクセスを制限し、ジョブと同期を保留します。アプリはメンテナンス ウィンドウと呼ばれる短い時間にネットワークにアクセスしたり、保留中のジョブや同期を実行します。画面をオンにするか、デバイスを電源に接続すると、デバイスの Doze モードは解除されます。
+
+
+
+</p>
+
+<p>バッテリーで動作しているデバイスが再び静止状態になり、画面がしばらくオフになると、Doze は完全な CPU およびネットワーク制限を {@link
+android.os.PowerManager.WakeLock}、{@link android.app.AlarmManager} アラーム、GPS / Wi-Fi スキャンに適用します。
+
+</p>
+
+<p>アプリを Doze に対応させるためのベストプラクティスはデバイスを持ち歩いているかどうかには関係ありません。そのため、Doze が適切に処理されるようにアプリを既にアップデートしている場合は、追加の対応は必要ありません。そうでない場合は、<a href="{@docRoot}training/monitoring-device-state/doze-standby.html#assessing_your_app">アプリの Doze 対応</a>を行ってください。
+
+
+</p>
+
+<h2 id="background_optimizations">Project Svelte: バックグラウンド処理の最適化</h2>
+
+<p>Project Svelte は、Android エコシステムのさまざまなデバイスでシステムやアプリによる RAM の使用を最小限にする取り組みです。Android N 向けの Project Svelte は、アプリをバックグラウンドで実行する方法を最適化することに重点を置いています。
+
+ </p>
+
+<p>ほとんどのアプリでは、バックグラウンド処理が非常に重要になります。バックグラウンド処理を適切に実行すると、ユーザー エクスペリエンスが大幅に向上し、状況に応じてアプリより高速に実行できるようになります。バックグラウンド処理が不適切な場合は、RAM(とバッテリー)が必要以上に消費され、他のアプリのシステム パフォーマンスに影響を及ぼす可能性があります。
+
+
+ </p>
+
+<p>Android 5.0 以降では、ユーザーに適した方法でバックグラウンド処理を実行する {@link android.app.job.JobScheduler} が推奨されています。これによって、メモリ、電源、接続の状態に基づいてシステムを最適化しながら、アプリでジョブをスケジュールできます。JobScheduler はシンプルな制御を提供するため、すべてのアプリで JobScheduler を使用することが効果的です。
+
+
+
+ </p>
+
+<p>
+  もう 1 つの適切な選択肢は、Google Play サービスの一部である <a href="https://developers.google.com/android/reference/com/google/android/gms/gcm/GcmNetworkManager"><code>GCMNetworkManager</code></a> です。この機能も同様のジョブ スケジュール機能を提供しますが、こちらはレガシー バージョンの Android とも互換性があります。
+
+
+
+</p>
+
+<p>さらに多くのユースケースに対応するために、<code>JobScheduler</code> と <code>GCMNetworkManager</code> の拡張は継続されています。たとえば、Android N では、コンテンツ プロバイダの変更に基づいてバックグラウンド処理をスケジュールできるようになります。また、特にメモリの少ないデバイスでシステム パフォーマンスを低下させる可能性のある一部の古いパターンの廃止も開始されています。
+
+
+
+
+</p>
+
+<p>一般的に使用される暗黙的なブロードキャストである
+{@link android.net.ConnectivityManager#CONNECTIVITY_ACTION}、{@link
+  android.hardware.Camera#ACTION_NEW_PICTURE}、{@link
+  android.hardware.Camera#ACTION_NEW_VIDEO} は複数のアプリのバックグラウンド処理を同時に起動するので、メモリとバッテリーに負荷をかける可能性があります。そのため、Android N では、この 3 つのブロードキャストが削除されています。アプリがこれらのブロードキャストを受信する場合は、N Developer Preview を使用して、<code>JobScheduler</code> とそれに関連する API に移行してください。
+
+
+ </p>
+
+<p>
+  詳細については、<a href="{@docRoot}preview/features/background-optimization.html">バックグラウンド処理の最適化</a>に関するドキュメントをご覧ください。
+
+</p>
+
+
+<h2 id="data_saver">データセーバー</h2>
+
+<div class="col-5of12" style="margin-right:1.5em;">
+<img src="{@docRoot}preview/images/datasaver.png" style="border:2px solid #ddd">
+
+<p class="img-caption" style="padding-right:2em;">
+  <strong>図 4.</strong> [Settings] でのデータセーバー
+</p>
+  </div>
+
+<p>一般的に、モバイル端末のライフサイクル全体では、携帯データ通信プランのコストがデバイス自体のコストを上回ります。多くのユーザーにとって、携帯データ通信は、節約する必要のある高価なリソースです。
+
+ </p>
+
+<p>Android N では、ローミング、課金サイクルの終了近く、または短期間のデータパックであるかどうかに関係なく、アプリによる携帯データ通信の使用を削減する新しいシステム サービスであるデータセーバー モードが導入されています。データセーバーを使用すると、アプリによる携帯データ通信の使用方法をユーザーが制御できます。また、デベロッパーは、データセーバーがオンのときに、より効率よく通信するサービスを提供できるようになります。
+
+
+
+ </p>
+
+<p>ユーザーが [<strong>Settings</strong>] でデータセーバーを有効にし、デバイスが従量制課金ネットワークに接続されている場合、システムは、ストリーミングのビットレートを制限したり、画質を低下させたり、オプティミスティックなプレキャッシングを保留したりすることにより、バックグラウンドでのデータ使用をブロックし、フォアグラウンドでデータの使用を抑えるようにアプリに指示します。ユーザーは特定のアプリをホワイトリストに登録することにより、データセーバーがオンになっているときでも、バックグラウンドで従量制課金接続を使用できます。
+
+
+
+
+</p>
+
+<p>Android N は {@link android.net.ConnectivityManager} を拡張することで、<a href="{@docRoot}preview/features/data-saver.html#status">ユーザーのデータセーバー設定を取得</a>する方法と、<a href="{@docRoot}preview/features/data-saver.html#monitor-changes">設定の変更を監視</a>する方法を提供しています。すべてのアプリは、ユーザーがデータセーバーを有効にしているかどうかを確認し、フォアグラウンドおよびバックグラウンドでのデータ使用を制限する必要があります。
+
+
+
+</p>
+
+
+<h2 id="tile_api">クイック設定タイル API</h2>
+
+
+<div style="float:right;max-width:320px">
+<img src="{@docRoot}preview/images/quicksettings.png" style="padding-left:1.5em;">
+
+<p class="img-caption" style="padding-left:2em;">
+  <strong>図 5.</strong> 通知シェードにあるクイック設定タイル
+</p>
+
+
+  </div><p>クイック設定を使用すると、通知シェードで主要な設定とアクションを直接公開することができます。Android N では、クイック設定の範囲が拡大され、さらに使いやすく便利な機能になっています。
+
+ </p>
+
+<p>クイック設定タイル用のスペースが広くなったので、ユーザーは、左または右にスワイプして、ページ分割された表示領域でこれらのタイルにアクセスできます。また、ユーザーは、表示するクイック設定タイルとその表示場所を制御できるようになっています。ユーザーはタイルをドラッグ アンド ドロップして、タイルを追加または移動できます。
+
+
+ </p>
+
+<p>Android N では、デベロッパーが独自のクイック設定タイルを定義できる新しい API が追加されており、ユーザーはこの API を通じて、アプリの主なコントロールとアクションに簡単にアクセスできます。
+</p>
+
+<p>
+  クイック設定タイルは、緊急に必要な、または頻繁に使用されるコントロールやアクション用に用意されたものであり、アプリを起動するためのショートカットとして使用するべきではありません。
+
+
+</p>
+
+<p>
+  タイルの定義が完了すると、ユーザーにタイルを公開できるようになります。ユーザーはタイルをドラッグ アンド ドロップするだけで、クイック設定にタイルを追加できます。
+
+</p>
+
+<p>
+  アプリタイルを作成する方法の詳細については、ダウンロード可能な <a href="{@docRoot}preview/setup-sdk.html#docs-dl">API リファレンス</a>に掲載されている <code>android.service.quicksettings.Tile</code> をご覧ください。
+
+</p>
+
+
+
+<h2 id="number-blocking">迷惑電話のブロック</h2>
+
+<p>Android N では、プラットフォームで迷惑電話のブロックがサポートされており、サービス プロバイダがブロックリストを保持するためのフレームワーク API が提供されています。デフォルトの SMS アプリ、デフォルトの電話アプリ、プロバイダ アプリは、ブロックリストを読みこんだり、ブロックリストに書き込んだりできます。その他のアプリはブロックリストにアクセスできません。
+
+
+</p>
+
+<p>Android では、迷惑電話のブロックをプラットフォームの標準の機能にすることにより、幅広いデバイスで迷惑電話をブロックできるようにする一貫した方法がアプリに提供されています。その他に、次のような機能も提供されます。
+
+</p>
+
+<ul>
+  <li> ブロックされた電話番号は、テキスト メッセージでもブロックされる
+  <li> ブロックされた電話番号は、リセットしたデバイスや、バックアップおよびリストア機能で移行したデバイスでも保持される
+
+  <li> 複数のアプリが同じブロックリストを使用できる
+</ul>
+
+<p>また、Android に携帯通信会社のアプリが組み込まれていると、携帯通信会社はデバイス上のブロックリストを読み込んで迷惑な電話やテキスト メッセージをサービス側でブロックできます。これによって、VOIP エンドポイントや転送電話などいかなる媒体を介しても、ブロックされた番号はユーザーに到達できなくなります。
+
+
+</p>
+
+<p>
+  詳細については、ダウンロード可能な <a href="{@docRoot}preview/setup-sdk.html#docs-dl">API リファレンス</a>にある <code>android.provider.BlockedNumberContract</code> をご覧ください。
+
+
+</p>
+
+<h2 id="call_screening">通話スクリーニング</h2>
+
+<p>
+  Android N では、デフォルトの電話アプリで新しい <code>CallScreeningService</code> を実装することによって、着信をスクリーニング(分類)できます。電話アプリは、着信する電話の {@link android.telecom.Call.Details Call.Details} に基づいて次のようなアクションを実行できます。
+
+
+
+</p>
+
+<ul>
+  <li> 着信を拒否する
+  <li> 着信を通話履歴に含めない
+  <li> 着信通知をユーザーに表示しない
+</ul>
+
+<p>
+  詳細については、ダウンロード可能な <a href="{@docRoot}preview/setup-sdk.html#docs-dl">API リファレンス</a>にある <code>android.telecom.CallScreeningService</code> をご覧ください。
+
+
+</p>
+
+
+<h2 id="multi-locale_languages">マルチロケールのサポートと言語の追加</h2>
+
+
+<p>Android N では、[Settings] で<strong>マルチロケール</strong>が選択できるようになり、複数言語を使用するユーザーへのサポートが強化されました。アプリで新しい API を使用して、ユーザーが選択したロケールを取得すると、複数のロケールを設定しているユーザーに対してより洗練された使用感を提供できます。たとえば、検索結果を複数の言語で表示したり、ユーザーが知っている言語のウェブページでは翻訳の提案を行わないようなことが可能になります。
+
+
+
+
+</p>
+
+<p>また、Android N では、マルチロケールのサポートに加えて、ユーザーが利用できる言語が追加されています。英語、スペイン語、フランス語、アラビア語などの一般的な言語に対して、それぞれ 25 以上の言語バリエーションが提供されます。100 以上の新しい言語も部分的にサポートされています。
+
+
+</p>
+
+<p>アプリは、<code>LocaleList.GetDefault()</code> を呼び出すことにより、ユーザーが設定したロケールのリストを取得できます。Android N では、増加したロケールをサポートするために、リソースを解決する方法が変更されています。この新しいリソース解決ロジックでアプリが想定どおりに動作することをテストおよび確認してください。
+
+</p>
+
+<p>新しいリソース解決動作と順守する必要のあるベストプラクティスの詳細については、<a href="{@docRoot}preview/features/multilingual-support.html">複数言語のサポート</a>をご覧ください。
+</p>
+
+<h2 id="icu4">Android の ICU4J API</h2>
+
+<p>
+  Android N では、<a href="http://site.icu-project.org/">ICU4J</a> API のサブセットが提供されています。これは、Android フレームワークの <code>android.icu</code> パッケージにあります。移行は簡単で、ほとんどの場合、名前空間を <code>com.java.icu</code> から <code>android.icu</code> に変更するだけです。アプリで ICU4J バンドルを既に使用している場合は、Android フレームワークで提供されている <code>android.icu</code> API に移行すると、APK サイズを大幅に削減できます。
+
+
+
+
+
+</p>
+
+<p>
+  Android ICU4J API の詳細については、<a href="{@docRoot}preview/features/icu4j-framework.html">ICU4J サポート</a>をご覧ください。
+</p>
+
+
+
+<h2 id="gles_32">OpenGL&trade; ES 3.2 API</h2>
+
+<p>Android N では、OpenGL ES 3.2 用の次のようなフレームワーク インターフェースとプラットフォーム サポートが追加されています。</p>
+
+<ul>
+  <li> <code>EXT_texture_sRGB_decode</code> を除く <a class="external-link" href="https://www.khronos.org/registry/gles/extensions/ANDROID/ANDROID_extension_pack_es31a.txt">Android エクステンション パック</a></a>(AEP)のすべての拡張機能
+  <li> HDR および遅延シェーディング用の浮動小数点フレームバッファ
+  <li> 一括処理とストリーミングを向上させるための BaseVertex 描画呼び出し
+  <li> WebGL のオーバーヘッドを低減するための堅牢なバッファ アクセス コントロール
+</ul>
+
+<p>Android N の OpenGL ES 3.2 用のフレームワーク API は、<code>GLES32</code> クラスで提供されます。OpenGL ES 3.2 を使用する場合、<code>&lt;uses-feature&gt;</code> タグと <code>android:glEsVersion</code> 属性を使用してマニフェスト ファイルで要件を宣言する必要があります。
+
+
+ </p>
+
+<p>デバイスでサポートされる OpenGL ES のバージョンを実行時に確認する方法など、OpenGL ES の使用方法については、<a href="{@docRoot}guide/topics/graphics/opengl.html">OpenGL ES API ガイド</a>をご覧ください。
+</p>
+
+
+<h2 id="android_tv_recording">Android TV の録画機能</h2>
+
+<p>Android N では、新しい recording API を介して Android TV 入力サービスからコンテンツを録画して再生する機能が追加されています。TV 入力サービスは、録画できるチャンネル データや録画したセッションを保存する方法の制御、ユーザーによる録画されたコンテンツの操作の管理を行います。このサービスは、既存の time-shifting API を使用して構築されています。
+
+
+ </p>
+
+<p>詳細については、<a href="{@docRoot}preview/features/tv-recording-api.html">Android TV Recording API</a> をご覧ください。</p>
+
+
+<h2 id="android_for_work">Android for Work</h2>
+
+<p>Android for Work は、Android N を実行しているデバイスに多くの新しい機能と API を追加するものです。主要な機能の一部を以下に紹介します。Android N に関連する Android for Work のアップデートの完全なリストについては、Android for Work の変更点をご覧ください。
+
+</p>
+
+<h3 id="work_profile_security_challenge">ワーク プロファイルによるセキュリティ確認 </h3>
+
+<p>
+  プロファイル オーナーは、ワーク プロファイルで実行しているアプリで個別にセキュリティ確認を行うよう指定することができます。ユーザーが仕事用アプリを開こうとすると、セキュリティの確認画面が表示されます。セキュリティの確認に成功すると、ワーク プロファイルのロックが解除され、必要に応じて暗号化も解除されます。プロファイル オーナーは、<code>ACTION_SET_NEW_PASSWORD</code> でユーザーにワーク プロファイル用のセキュリティ確認を設定するように求めたり、<code>ACTION_SET_NEW_PARENT_PROFILE_PASSWORD</code> でユーザーにデバイスのロックを設定するように求めることができます。
+
+
+
+
+
+
+</p>
+
+<p>
+  プロファイル オーナーは、<code>setPasswordQuality()</code>、<code>setPasswordMinimumLength()</code>、および関連するメソッドを使用して、ワーク プロファイル用のセキュリティ確認に個別のパスワード ポリシー(PIN に必要な長さや、指紋によるプロファイルのロック解除が可能かどうかなど)を設定できます。また、新しい <code>getParentProfileInstance()</code> メソッドが返す <code>DevicePolicyManager</code> インスタンスを使用してデバイスのロックを設定できます。さらに、新しい <code>setOrganizationColor()</code> メソッドおよび <code>setOrganizationName()</code> メソッドを使用してワーク プロファイル用のセキュリティ確認画面をカスタマイズすることができます。
+
+
+
+
+
+
+
+
+</p>
+<h3 id="turn_off_work">ワークモードのオフ </h3>
+
+<p>ユーザーは、ワーク プロファイルがあるデバイスでワークモードのオン / オフを切り替えることができます。ワークモードがオフになると、管理されているユーザーが一時的にシャットダウンされ、ワーク プロファイルのアプリ、バックグラウンドでの同期、通知が無効になります。無効になるアプリには、プロファイル オーナーのアプリが含まれます。また、ワークモードがオフになると、仕事用アプリを起動できないことをユーザーに示すステータス アイコンが表示されたままになります。ランチャーは、仕事用アプリとウィジェットにアクセスできないことを示します。
+
+
+
+
+ </p>
+
+<h3 id="always_on_vpn">Always on VPN </h3>
+
+<p>デバイス オーナーとプロファイル オーナーは、仕事用アプリが指定した VPN を介して常時接続するように設定できます。デバイスが起動すると、システムは VPN を自動的に開始します。
+
+</p>
+
+<p>
+  <code>setAlwaysOnVpnPackage()</code> と <code>getAlwaysOnVpnPackage()</code> は新しい <code>DevicePolicyManager</code> のメソッドです。
+
+
+</p>
+
+<p>システムがアプリの介入なしに VPN サービスを直接バインドするため、Always on VPN の新しいエンドポイントは VPN クライアント側で処理する必要があります。以前と同じように、システムへのサービスの通知はインテントフィルタのマッチング アクション <code>android.net.VpnService</code> で行います。
+
+
+ </p>
+
+<p>
+  プライマリ ユーザーは、<strong>[Settings] &gt; [More] &gt; [Vpn]</strong> から <code>VPNService</code> のメソッドを実装した Always on VPN クライアントを手動で設定することもできます。
+
+
+</p>
+
+<h2 id="accessibility_enhancements">アクセシビリティの機能強化</h2>
+
+<p>Android N では、新しいデバイスのセットアップのオープニング画面に [Vision Settings] が直接表示されます。これにより、ユーザーは、ズーム操作、フォントサイズ、ディスプレイ サイズ、TalkBack など、デバイスのアクセシビリティ機能を簡単に見つけて構成できるようになっています。
+
+
+ </p>
+
+<p>このようなアクセシビリティ機能が目立つ場所に配置されたため、ユーザーがこれらの機能を有効にしてアプリを試用する可能性が高まりました。アクセシビリティ機能の設定を有効にして、アプリを事前にテストするようにしてください。これらの設定は、[Settings] &gt; [Accessibility] で有効にできます。
+
+
+</p>
+
+<p>Android N では、アクセシビリティ サービスにより、運動障害のあるユーザーが画面をタップすることを支援できます。この新しい API を使用すると、顔追跡、視線追跡、ポイント スキャンなどの機能を備えたサービスを構築して、これらのユーザーのニーズに対応することができます。
+
+
+</p>
+
+<p>詳細については、ダウンロード可能な <a href="{@docRoot}preview/setup-sdk.html#docs-dl">API リファレンス</a>にある <code>android.accessibilityservice.GestureDescription</code> をご覧ください。
+	</p>
+
+
+<h2 id="direct_boot">ダイレクト ブート</h2>
+
+<p>ダイレクト ブートはデバイスのスタートアップ時間を短縮し、予期しない再起動後でも、登録されたアプリの一部の機能が使用できるようにします。たとえば、ユーザーの就寝中に暗号化されたデバイスが再起動した場合でも、登録したアラーム、メッセージ、電話の着信をユーザーに通常どおり通知することができます。また、再起動後にアクセシビリティ サービスをすぐに使用することもできます。
+
+
+
+
+</p>
+
+<p>ダイレクト ブートでは、Android N のファイルベースの暗号化を活用して、システムとアプリのデータに対してきめ細かい暗号化ポリシーを適用します。システムは、一部のシステムデータと明示的に登録されたアプリデータにデバイス暗号化ストアを使用します。デフォルトでは、他のすべてのシステムデータ、ユーザーデータ、アプリ、アプリデータには、資格情報暗号化ストアが使用されます。
+
+
+
+ </p>
+
+<p>システムは起動時にデバイス暗号化データのみにアクセスできる制限モードになります。この状態では、アプリやデータへの一般的なアクセスは許可されません。このモードで実行する必要のあるコンポーネントがある場合、マニフェストにフラグを設定することでコンポーネントを登録できます。再起動後、システムは、<code>LOCKED_BOOT_COMPLETED</code> インテントをブロードキャストすることにより、登録済みのコンポーネントをアクティベートします。システムは、ロック解除する前に、登録済みのデバイス暗号化アプリデータを利用できるようにします。他のすべてのデータは、ユーザーがロック画面の資格情報を確認して暗号化解除するまで利用できません。
+
+
+
+
+
+
+ </p>
+
+詳細については、<a href="{@docRoot}preview/features/direct-boot.html">ダイレクト ブート</a>をご覧ください。</p>
+</p>
+
+
+<h2 id="key_attestation">キーの構成証明</h2>
+
+<p>ハードウェアがサポートするキーストアは、Android 端末で暗号化キーを作成、格納、使用するためのより安全な方法を提供します。このキーストアは、Linux カーネル、Android の潜在的な脆弱性、ルート権限を取得された端末からの抽出からキーを保護します。
+
+
+</p>
+
+<p>ハードウェアがサポートするキーストアの使用をさらに簡単かつ安全にするために、Android N では、キーの構成証明が導入されています。アプリや別のデバイスは、キーの構成証明を使用して RSA または EC キーペアがハードウェアでサポートされているかどうか、キーペアのプロパティはどのようなものか、使用方法や有効性にどのような制限が適用されるかを積極的に確認することができます。
+
+
+
+ </p>
+
+<p>アプリや別のデバイスのサービスは、有効な構成証明キーによって署名された X.509 構成証明書を通じて、キーペアについての情報をリクエストできます。この構成証明キーは、出荷前にデバイスのハードウェアがサポートするキーストアに挿入される ECDSA 署名キーです。したがって、有効な構成証明キーによって署名される構成証明書により、ハードウェアがサポートするキーストアの存在に加えて、そのキーストアのキーペアの詳細が確認できます。
+
+
+
+
+
+</p>
+
+<p>デバイスが Android の安全な公式ファクトリー イメージを使用していることを確認するために、キーの構成証明では、デバイスの<a class="external-link" href="https://source.android.com/security/verifiedboot/verified-boot.html#bootloader_requirements">ブートローダー</a>が以下の情報を <a class="external-link" href="https://source.android.com/security/trusty/index.html">Trusted Execution Environment(TEE)</a>に提供することが要求されます。
+
+
+</p>
+
+<ul>
+<li>デバイスにインストールされる OS のバージョンとパッチレベル</li>
+<li><a href="https://source.android.com/security/verifiedboot/index.html" class="external-link">セキュアブート</a>の公開キーとロック ステータス</li>
+  </ul>
+
+<p>ハードウェアがサポートするキーストアの機能の詳細については、<a href="https://source.android.com/security/keystore/" class="external-link">ハードウェアがサポートするキーストア</a>に関するガイドをご覧ください。
+</p>
+
+<p>Android N では、キーの構成証明に加えて、指紋にバインドされたキーが導入されています。このキーは、指紋を登録しても無効になることはありません。
+</p>
+
+<h2 id="network_security_config">ネットワーク セキュリティ構成</h2>
+
+<p>Android N では、エラーが発生しやすいプログラムによる従来の API(X509TrustManager など)ではなく、宣言型のネットワーク セキュリティ構成を使用することにより、コードを変更することなく、セキュアな(HTTPS、TLS)接続の動作をアプリで安全にカスタマイズできます。<em></em>
+
+
+</p>
+
+  <p>以下の機能がサポートされます。</p>
+<ul>
+<li><b>カスタム トラスト アンカー: </b>アプリがセキュアな接続でどの証明機関(CA)を信頼するかをカスタマイズできます。たとえば、特定の自己署名証明書や制限された一連の公的 CA を信頼できます。
+
+
+</li>
+<li><b>デバッグのみのオーバーライド: </b>アプリのデベロッパーは、インストール ベースに対する追加リスクなしに、アプリのセキュアな接続を安全にデバッグできます。
+
+
+</li>
+<li><b>クリアテキスト トラフィックのオプトアウト: </b>クリアテキスト トラフィックの意図しない使用からアプリを保護できます。
+</li>
+<li><b>証明書の固定: </b>アプリのセキュアな接続で信頼するサーバーキーを制限できる高度な機能です。
+</li>
+</ul>
+
+<p>詳細については、<a href="{@docRoot}preview/features/security-config.html">ネットワーク セキュリティ構成</a>をご覧ください。
+</p>
+
+<h2 id="default_trusted_ca">デフォルトで信頼される証明機関</h2>
+
+<p>デフォルトでは、Android N をターゲットにしたアプリは、システムが提供する証明書のみを信頼し、ユーザーが追加した証明機関(CA)を信頼しません。ユーザーが追加した CA を信頼する必要がある Android N 用アプリは、<a href="{@docRoot}preview/features/security-config.html">ネットワーク セキュリティ構成</a>を使用して、ユーザー CA を信頼する方法を指定する必要があります。
+
+
+
+</p>
+
+<h2 id="apk_signature_v2">APK 署名スキーム v2</h2>
+
+<p>PackageManager クラスが APK 署名スキーム v2 を使用して、アプリを検証できるようになりました。APK 署名スキーム v2 は、APK ファイルに加えられた無許可の変更を検出することにより、検証速度の大幅な向上と整合性の保証強化を実現するファイル全体の署名スキームです。
+
+
+</p>
+
+<p>下位互換性を確保するために、v2 署名スキームで署名する前に、v1 署名スキーム(JAR 署名スキーム)で APK に署名する必要があります。v2 署名スキームでは、v2 スキームで署名した後、追加の証明書で APK に署名すると、検証が失敗します。
+
+
+ </p>
+
+<p>APK 署名スキーム v2 のサポートは、Android N デベロッパー プレビューで間もなく使用できるようになります。
+</p>
+
+<h2 id="scoped_directory_access">特定のディレクトリへのアクセス</h2>
+
+<p>Android N では、アプリで新しい API を使用して、SD カードなどのリムーバブル メディア上のディレクトリといった特定の<a href="{@docRoot}guide/topics/data/data-storage.html#filesExternal">外部ストレージ</a> ディレクトリへのアクセスをリクエストできるようになりました。この新しい API は、アプリが <code>Pictures</code> ディレクトリなどの標準の外部ストレージ ディレクトリにアクセスする方法を大幅に簡略化します。写真アプリなどのアプリでは、<code>READ_EXTERNAL_STORAGE</code> の代わりに、この API ですべてのストレージ ディレクトリやストレージ アクセス フレームワークにアクセスできます。その結果、ユーザーはそのディレクトリに移動できます。
+
+
+
+
+
+
+</p>
+
+<p>また、この新しい API は、ユーザーがアプリに外部ストレージへのアクセスを付与するステップを簡素化します。この新しい API を使用する場合、アプリがどのディレクトリへのアクセス許可を求めているかをわかりやすく説明するシンプルな UI が使用されます。
+
+
+</p>
+
+<p>詳細については、<a href="{@docRoot}preview/features/scoped-folder-access.html">特定のディレクトリへのアクセス</a>に関するデベロッパー向けドキュメントをご覧ください。
+
+</p>
+
+
+
+
+
+
diff --git a/docs/html-intl/intl/ja/preview/behavior-changes.jd b/docs/html-intl/intl/ja/preview/behavior-changes.jd
new file mode 100644
index 0000000..7e6a026
--- /dev/null
+++ b/docs/html-intl/intl/ja/preview/behavior-changes.jd
@@ -0,0 +1,480 @@
+page.title=動作の変更点
+page.keywords=preview,sdk,compatibility
+meta.tags="プレビュー"、"互換性"
+page.tags="preview", "developer preview"
+page.image=images/cards/card-n-changes_2x.png
+@jd:body
+
+
+<div id="qv-wrapper">
+<div id="qv">
+
+<h2>本書の内容</h2>
+
+<ol>
+  <li><a href="#perf">パフォーマンスの向上</a>
+    <ol>
+      <li><a href="#doze">Doze</a></li>
+      <li><a href="#bg-opt">バックグラウンド処理の最適化</a></li>
+    </ol>
+  </li>
+  <li><a href="#perm">パーミッションの変更</a></li>
+  <li><a href="#accessibility">アクセシビリティの改善</a>
+    <ol>
+      <li><a href="#screen-zoom">画面のズーム</a></li>
+      <li><a href="#vision-settings">セットアップ ウィザードの [Vision Settings]</a></li>
+    </ol>
+  </li>
+  <li><a href="#ndk">プラットフォーム ライブラリにリンクした NDK アプリ</a></li>
+  <li><a href="#afw">Android for Work</a></li>
+</ol>
+
+<h2>関連ドキュメント</h2>
+<ol>
+  <li><a href="{@docRoot}preview/api-overview.html">Android N API の概要</a>
+</li>
+</ol>
+
+</div>
+</div>
+
+
+<p>
+  Android N には、新しい機能に加えて、さまざまなシステムおよび API の動作の変更が追加されています。このドキュメントでは、アプリ開発において把握しておくべき主な変更点について説明します。
+
+
+
+</p>
+
+<p>
+  過去に Android にアプリを公開したことがある場合は、アプリが今回のプラットフォームの変更による影響を受ける場合があることに注意してください。
+
+</p>
+
+
+<h2 id="perf">パフォーマンスの向上</h2>
+
+<p>
+  Android N では、デバイスのバッテリー寿命、RAM の使用状況、アプリのパフォーマンスを改善するために、システムの動作がいくつか変更されています。これらの変更点は、システム リソースの可用性やアプリへのシステム通知に影響を及ぼす可能性があります。これらの変更点を理解し、変更点に対してアプリを対応させる方法を検討する必要があります。
+
+
+
+
+</p>
+
+<h3 id="doze">Doze</h3>
+
+<p>
+  Android 6.0(API レベル 23)で Doze が導入されました。これは、ユーザーがデバイスを電源と接続せずに静止状態にし、画面をオフにすると、CPU とネットワークのアクティビティを保留してバッテリーの寿命を改善するものです。Android N では、Doze が改良されています。デバイスを電源と接続せずに画面をオフにすると、デバイスが静止していなくても(たとえば、ユーザーが携帯端末をポケットに入れて持ち歩いている場合)、CPU およびネットワーク制限のサブセットがアプリに適用されます。
+
+
+
+
+
+</p>
+
+
+<img src="{@docRoot}preview/images/doze-diagram-1.png" alt="" height="251px" id="figure1" />
+<p class="img-caption">
+  <strong>図 1.</strong> Doze が第 1 レベルのシステム アクティビティ制限を適用して、バッテリーの寿命を改善
+
+</p>
+
+<p>
+  デバイスがバッテリー電源で動作しているときに画面をしばらくオフにすると、デバイスは Doze モードになります。それによって制限の最初のサブセットが適用され、アプリのネットワーク アクセスが切断されてジョブと同期が保留されます。デバイスが Doze モードに入った後、しばらくの間動かさずに放置していると、残りの Doze 制限が {@link android.os.PowerManager.WakeLock}、
+{@link android.app.AlarmManager} アラーム、GPS、Wi-Fi スキャンに適用されます。適用される Doze 制限が一部であるか完全なものであるかには関係なく、デバイスは Doze モードから短時間抜け出し、メンテナンス ウィンドウと呼ばれる状態になります。このとき、アプリはネットワーク アクセスを許可され、保留されたジョブや同期を実行することができます。
+
+
+
+
+
+
+
+</p>
+
+
+<img src="{@docRoot}preview/images/doze-diagram-2.png" alt="" id="figure2" />
+<p class="img-caption">
+  <strong>図 2.</strong> デバイスがしばらくの間静止状態になると、Doze が第 2 レベルのシステム アクティビティ制限を適用する
+
+</p>
+
+<p>
+  画面をオンにするか、デバイスを電源に接続すると、Doze モードは解除され、処理の制限は適用されなくなります。<a href="{@docRoot}training/monitoring-device-state/doze-standby.html">Doze と App Standby 用に最適化する</a>で説明したように、今回追加された動作は、Android 6.0(API レベル 23)で導入された以前のバージョンの Doze にアプリを対応するための推奨事項とベストプラクティスには影響を及ぼしません。Google Cloud Messaging(GCM)を使用してメッセージを受送信することなどの推奨事項を引き続き順守して、追加の Doze 動作に対応するためにアップデートを計画する必要があります。
+
+
+
+
+
+
+
+
+</p>
+
+
+<h3 id="bg-opt">Project Svelte: バックグラウンド処理の最適化</h3>
+
+<p>
+  Android N では、メモリ使用量と消費電力を最適化するために、3 つの暗黙的なブロードキャストが削除されています。この変更が必要になるのは、暗黙的なブロードキャストが行われると、バックグラウンドでブロードキャストをリッスンするように登録されているアプリが頻繁に起動されるためです。このブロードキャストを削除するとデバイスのパフォーマンスとユーザー エクスペリエンスが大幅に向上します。
+
+
+
+
+</p>
+
+<p>
+  モバイル端末では、Wi-Fi とモバイルデータの切り替えなど、接続が頻繁に変化します。現在のアプリでは、暗黙的な {@link
+  android.net.ConnectivityManager#CONNECTIVITY_ACTION} ブロードキャストのレシーバーをマニフェストに登録することにより、接続の変化を監視できるようになっています。多くのアプリがこのブロードキャストを受信する登録を行っているので、1 度ネットワークの切り替えが起こるだけですべてのアプリがアクティブになり、ブロードキャストが同時に処理されます。
+
+
+
+
+
+</p>
+
+<p>
+  同様に、暗黙的な {@link
+  android.hardware.Camera#ACTION_NEW_PICTURE} ブロードキャストおよび {@link
+  android.hardware.Camera#ACTION_NEW_VIDEO} ブロードキャストをカメラなどの他のアプリから受信するよう登録している場合、ユーザーがカメラアプリで写真を撮ると、登録されたアプリがアクティブになり、ブロードキャストの処理が行われます。
+
+
+</p>
+
+<p>
+  Android N では、こういった問題を緩和するために、以下の最適化手法が適用されます。
+
+</p>
+
+<ul>
+  <li>Android N をターゲットにしたアプリは、{@link
+  android.net.ConnectivityManager#CONNECTIVITY_ACTION} ブロードキャストを受信しません。これは、アプリにイベントの通知をリクエストするマニフェスト エントリがある場合も同様です。フォアグラウンドで実行されているアプリが {@link
+  android.content.BroadcastReceiver} で通知をリクエストした場合は、メインスレッドで {@code CONNECTIVITY_CHANGE} を引き続きリッスンできます。
+
+
+
+  </li>
+
+  <li>アプリは、{@link
+  android.hardware.Camera#ACTION_NEW_PICTURE} ブロードキャストまたは {@link
+  android.hardware.Camera#ACTION_NEW_VIDEO} ブロードキャストを送受信できません。この最適化は、Android N をターゲットにしたアプリだけでなく、すべてのアプリに影響を及ぼします。
+
+  </li>
+</ul>
+
+<p>
+  Android の将来のリリースでは、追加の暗黙的なブロードキャストに加えて、バインドされていないバックグラウンド サービスが廃止される可能性があります。このため、マニフェストで宣言されている暗黙的なブロードキャスト用のレシーバーやバックグラウンド サービスとの依存関係は回避または削除する必要があります。
+
+
+
+</p>
+
+<p>
+  Android フレームワークは、これらの暗黙的なブロードキャストやバックグラウンド サービスの必要性を軽減するいくつかのソリューションを提供しています。たとえば、{@link
+  android.app.job.JobScheduler} API は、従量制ではないネットワークへの接続など、特定の条件が満たされたときに、ネットワーク操作をスケジュールするための堅牢なメカニズムを提供します。また、{@link
+  android.app.job.JobScheduler} を使用して、コンテンツ プロバイダの変更に対応することもできます。
+
+
+
+</p>
+
+<p>
+  この動作の変更や、アプリで必要となる対応の詳細については、<a href="{@docRoot}preview/features/background-optimization.html">バックグラウンド処理の最適化</a>をご覧ください。
+
+
+</p>
+
+
+<h2 id="perm">パーミッションの変更</h2>
+
+<p>
+  Android N には、ユーザー アカウント パーミッションや外部ストレージに書き込むための新しいパーミッションなど、アプリに影響を及ぼす可能性のあるパーミッションが変更されています。ここでは、今回のプレビューで変更されたパーミションの概要について説明します。
+
+
+
+</p>
+
+<ul>
+  <li>{@code GET_ACCOUNTS}(廃止予定)
+    <p>
+      GET_ACCOUNTS パーミッションは廃止予定となりました。システムは、Android N をターゲットにしたアプリでこのパーミションを無視します。
+
+    </p>
+  </li>
+
+</ul>
+
+
+
+<h2 id="accessibility">アクセシビリティの改善</h2>
+
+<p>
+  Android N には、低視力のユーザーまたは視覚障害のあるユーザー向けのプラットフォームのユーザビリティを改善するための変更が追加されています。通常は、これによってアプリのコードを変更する必要はありませんが、この機能について理解し、アプリをテストして、ユーザー エクスペリエンスに与える潜在的な影響を評価する必要があります。
+
+
+
+
+</p>
+
+
+<h3 id="screen-zoom">画面のズーム</h3>
+
+<p>
+  Android N では、<strong>ディスプレイ サイズ</strong>を設定して、画面上のすべての要素を拡大または縮小することができるので、低視力のユーザーに対するデバイスのアクセシビリティが向上しています。ユーザーは、一般的な中くらいのサイズの携帯端末 Nexus 4 の幅である <a href="http://developer.android.com/guide/topics/resources/providing-resources.html">sw320dp</a> の画面最小幅を超えて画面をズームできません。
+
+
+
+
+</p>
+
+<div class="cols">
+
+<div class="col-6">
+  <img src="{@docRoot}preview/images/screen-zoom-1.png" alt="" height="XXX" id="figure1" />
+</div>
+<div class="col-6">
+  <img src="{@docRoot}preview/images/screen-zoom-2.png" alt="" height="XXX" id="figure1" />
+</div>
+
+</div> <!-- end cols -->
+<p class="img-caption">
+  <strong>図 3.</strong> 右側の画面では、Android N システム イメージを実行しているデバイスのディスプレイ サイズを拡大している
+
+</p>
+
+
+<p>
+  デバイスの画面密度が変更されると、以下の方法で実行中のアプリに通知されます。
+
+</p>
+
+<ul>
+  <li>アプリが API レベル 23 以前のデバイスをターゲットにしている場合は、すべてのバックグラウンド処理が自動的に強制終了します。つまり、ユーザーがそのようなアプリから移動して [Settings] 画面を開き、<strong>ディスプレイ サイズ</strong>の設定を変更すると、メモリ不足の場合と同じように、アプリが強制終了します。アプリに何らかのフォアグラウンド処理がある場合は、<a href="{@docRoot}guide/topics/resources/runtime-changes.html">実行時の変更の処理</a>に記載されている構成変更の処理が通知されます。これは、デバイスの画面の向きが変わったときの処理と同様です。<em></em>
+
+
+
+
+
+
+
+  </li>
+
+  <li>アプリが Android N をターゲットにしている場合、<a href="{@docRoot}guide/topics/resources/runtime-changes.html">実行時の変更の処理</a>に記載されているように、すべての処理(フォアグラウンド処理およびバックグラウンド処理)に対して構成変更が通知されます。
+
+
+
+  </li>
+</ul>
+
+<p>
+  Android のベストプラクティスに従っているほとんどのアプリでは、この機能をサポートするための変更を加える必要はありませんが、以下の点は確認する必要があります。
+
+</p>
+
+<ul>
+  <li>画面幅 <code><a href=
+  "{@docRoot}guide/topics/resources/providing-resources.html">sw320dp</a></code> のデバイスでアプリをテストして、適切に機能することを確認します。
+
+  </li>
+
+  <li>デバイスの構成が変更された場合、キャッシュ済みのビットマップやネットワークからロードされるリソースなど、画面密度に依存するキャッシュ情報をアップデートしてください。また、アプリが一時停止状態から再開された場合は、構成変更をチェックしてください。
+
+
+
+    <p class="note">
+      <strong>注:</strong> 構成に依存したデータをキャッシュする場合は、そのデータ用の適切な画面サイズやピクセル密度など、関連するメタデータを含めることをお勧めします。このメタデータを保存しておくと、構成を変更した後、キャッシュ データを更新する必要があるかどうかを決定できます。
+
+
+
+
+    </p>
+  </li>
+
+  <li>ピクセル単位は画面密度に対応しないため、ピクセル単位で寸法を指定することは避けてください。その代わり、<a href="{@docRoot}guide/practices/screens_support.html">密度非依存ピクセル</a>(<code>dp</code>)単位で寸法を指定します。
+
+
+  </li>
+</ul>
+
+<h3 id="vision-settings">セットアップ ウィザードの [Vision Settings]</h3>
+
+<p>
+  Android N には、オープニング画面に [Vision Settings] が追加されています。ユーザーは [Vision Settings] を使用して、新しいデバイスで<strong>ズーム操作</strong>、<strong>フォントサイズ</strong>、<strong>ディスプレイ サイズ</strong>、<strong>TalkBack</strong> などのアクセシビリティ機能を設定できます。この変更により、さまざまな画面設定に関連するバグが顕在化する可能性があります。この機能が及ぼす影響を評価するには、これらの設定を有効にしてアプリをテストする必要があります。設定は、<strong>[Settings] &gt; [Accessibility]</strong> にあります。
+
+
+
+
+
+
+
+</p>
+
+<h2 id="ndk">プラットフォーム ライブラリにリンクした NDK アプリ</h2>
+
+<p>
+  Android N では、非パブリック API のロードを防止するために、名前空間が変更されています。NDK を使用する場合、Android プラットフォームのパブリック API のみを使用する必要があります。Android の次の公式リリースで非パブリック API を使用すると、アプリがクラッシュする可能性があります。
+
+
+
+</p>
+
+<p>
+  非パブリック API を使用していることをデベロッパーに警告するため、Android N で実行されているアプリが非パブリック API を呼び出すと、logcat にエラーが出力されます。この状態を認識してもらえるよう、エラー メッセージはデバイスの画面にも表示されます。アプリのコードを確認して、非パブリック API を削除し、プレビュー デバイスまたはエミュレータを使用して、アプリを十分にテストしてください。
+
+
+
+
+
+</p>
+
+<p>
+  アプリがプラットフォーム ライブラリに依存している場合は、NDK ドキュメントにある一般的な修正例を参照して、共通のプライベート API をそれと同等な機能を持つパブリック API に置き換えます。特に、プラットフォームに含まれていて NDK には含まれていないライブラリ(<code>libpng</code> など)をアプリで使用している場合、気付かないうちにプラットフォーム ライブラリにリンクしていることがあります。この場合、APK にリンク対象のすべての .so ファイルが含まれていることを確認します。
+
+
+
+
+
+</p>
+
+<p class="caution">
+  <strong>警告:</strong> サードパーティのライブラリの中には非パブリック API にリンクしているものもあります。アプリがこれらのライブラリを使用している場合、Android の次の公式リリースでアプリを実行すると、アプリがクラッシュする可能性があります。
+
+
+</p>
+
+<p>
+  NDK に含まれていないネイティブ ライブラリは Android のリリース版が変わると変更または削除される場合があるため、アプリでは、こういったライブラリへの依存やその使用を避けてください。OpenSSL から BoringSSL への移行は、そのような変更の一例です。また、NDK に含まれていないプラットフォーム ライブラリには互換性要件がないため、デバイスによって互換性レベルが異なる場合があります。古いバージョンで非 NDK ライブラリにアクセスする必要がある場合は、Android API レベルを判定してからロードしてください。
+
+
+
+
+
+
+</p>
+
+<p>
+  こうしたタイプの問題の診断を支援するために、Android N でアプリをビルドするときに発生する可能性のある Java および NDK のエラーの例を以下に示します。
+
+</p>
+
+<p>Java のエラー例</p>
+<pre class="no-pretty-print">
+java.lang.UnsatisfiedLinkError: dlopen failed: library "/system/lib/libcutils.so"
+    is not accessible for the namespace "classloader-namespace"
+</pre>
+
+<p>NDK のエラー例</p>
+<pre class="no-pretty-print">
+dlopen failed: cannot locate symbol "__system_property_get" referenced by ...
+</pre>
+
+
+<p>
+  こうしたタイプのエラーが発生しているアプリの典型的な修正例を以下に示します。
+</p>
+
+<ul>
+  <li>libandroid_runtime.so の getJavaVM と getJNIEnv を使用している場合は、標準の JNI 関数に置き換えることができます。
+
+<pre class="no-pretty-print">
+AndroidRuntime::getJavaVM -&gt; GetJavaVM from &lt;jni.h&gt;
+AndroidRuntime::getJNIEnv -&gt; JavaVM::GetEnv or
+JavaVM::AttachCurrentThread from &lt;jni.h&gt;.
+</pre>
+  </li>
+
+  <li>{@code libcutils.so} の {@code property_get} シンボルを使用している場合は、公開されている {@code __system_property_get} に置き換えることができます。これを行うには、次の include 文とともに {@code __system_property_get} を使用します。
+
+
+<pre>
+#include &lt;sys/system_properties.h&gt;
+</pre>
+  </li>
+
+  <li>{@code libcrypto.so} の {@code SSL_ctrl} シンボルを使用している場合は、アプリ内のローカルなバージョンに置き換える必要があります。たとえば、{@code .so} ファイルを
+{@code libcyrpto.a} に静的にリンクするか、BoringSSL や OpenSSL の動的ライブラリ {@code libcrypto.so} をアプリに含める必要があります。
+
+
+  </li>
+</ul>
+
+<h2 id="afw">Android for Work</h2>
+<p>
+  Android N には、証明書のインストール、パスワードのリセット、セカンダリ ユーザーの管理、デバイス識別子へのアクセスなど、Android for Work をターゲットにしたアプリに対する変更が含まれています。Android for Work 環境向けのアプリを構築している場合、これらの変更点を確認し、変更に応じてアプリを修正する必要があります。
+
+
+
+
+</p>
+
+<ul>
+  <li>デバイス ポリシー コントローラ(DPC)が代理証明書の設定を行う前に、代理証明書のインストーラーをインストールする必要があります。また、プロファイルと N SDK をターゲットにしたデバイスオーナー アプリが代理証明書のインストーラーを使用できるよう、DPC が <code>DevicePolicyManager.setCertInstallerPackage()</code> を呼び出す前にインストーラーをインストールする必要があります。インストールされていない場合、システムは <code>IllegalArgumentException</code> をスローします。
+
+
+
+
+
+
+  </li>
+
+  <li>デバイス管理者向けのパスワードのリセット制限がプロファイル オーナーに適用されます。デバイスの管理者は、<code>DevicePolicyManager.resetPassword()</code> を使用して、既に設定されているパスワードを削除または変更できなくなりました。デバイスの管理者は、デバイスにパスワード、PIN、またはパターンが設定されていない場合のみ、パスワードを設定できます。
+
+
+
+
+  </li>
+
+  <li>デバイスとプロファイルのオーナーは、制限が設定されている場合でもアカウントを管理することができます。デバイス オーナーとプロファイル オーナーは、<code>DISALLOW_MODIFY_ACCOUNTS</code> ユーザー制限が適用されている場合でもアカウント管理 API を呼び出すことができます。
+
+
+  </li>
+
+  <li>デバイス オーナーによるセカンダリ ユーザーの管理がさらに簡単になりました。デバイスがデバイス オーナー モードで実行されている場合は、<code>DISALLOW_ADD_USER</code> 制限が自動的に設定されます。これにより、管理されていないセカンダリ ユーザーが作成されることを防ぐことができます。また、<code>CreateUser()</code> メソッドと <code>createAndInitial()</code> メソッドは廃止され、新しい <code>DevicePolicyManager.createAndManageUser()</code> メソッドに置き換えられました。
+
+
+
+
+
+  </li>
+
+  <li>デバイス オーナーは、デバイス識別子にアクセスできます。また、<code>DevicePolicyManagewr.getWifiMacAddress()</code> を使用して、デバイスの Wi-Fi MAC アドレスにもアクセスできます。デバイスで Wi-Fi が有効にされたことがない場合、このメソッドは {@code null} 値を返します。
+
+
+
+  </li>
+</ul>
+
+<p>
+  Android N の Android for Work の変更に関する詳細については、<a href="{@docRoot}preview/features/afw.html">Android for Work のアップデート</a>をご覧ください。
+
+</p>
+
+<h2 id="other">その他の重要事項</h2>
+
+<ul>
+<li>Android N 上で低い API レベルをターゲットにしたアプリが実行されている場合、ユーザーがディスプレイ サイズを変更すると、アプリのプロセスは強制終了されます。アプリは、このシナリオを適切に処理する必要があります。適切に処理しないと、ユーザーが [Recents] からアプリを復元したときに、アプリがクラッシュします。
+
+
+
+
+<p>
+アプリをテストして、この動作が発生しないようにしてください。DDMS でアプリを手動で強制終了させて同様のクラッシュを発生させることにより、アプリのテストを行なうことができます。
+
+
+
+</p>
+
+<p>
+N 以上をターゲットにしたアプリは、画面密度の変更時に自動的に強制終了しませんが、構成変更への対応が不十分なままである可能性があります。
+
+</p>
+</li>
+
+<li>
+Android N 上のアプリは構成変更を適切に処理し、次回の起動時にクラッシュしないようにする必要があります。フォントのサイズを変更([<strong>Setting</strong>] &gt; [<strong>Display</strong>] &gt; [<strong>Font size</strong>])した後に [Recents] からアプリを復元すると、アプリの動作を確認できます。
+
+
+
+
+</li>
+</ul>
+
diff --git a/docs/html-intl/intl/ja/preview/download.jd b/docs/html-intl/intl/ja/preview/download.jd
new file mode 100644
index 0000000..9d9df37
--- /dev/null
+++ b/docs/html-intl/intl/ja/preview/download.jd
@@ -0,0 +1,541 @@
+page.title=デバイス上でテストする
+meta.tags="プレビュー", "nexus","システム イメージ"
+page.tags="preview", "androidn"
+page.image=images/cards/card-n-downloads_2x.png
+
+@jd:body
+
+<div style="position:relative; min-height:600px">
+
+  <div class="wrap" id="tos" style="position:absolute;display:none;width:inherit;">
+
+    <p class="sdk-terms-intro">Android Preview SDK のコンポーネントをダウンロード、インストールする前に、次の利用規約に同意する必要があります。
+
+</p>
+
+    <h2 class="norule">利用規約</h2>
+
+    <div class="sdk-terms" onfocus="this.blur()" style="width:678px">
+以下は、Android SDK Preview の使用許諾契約です(以下「本契約」)。
+
+1. はじめに
+
+1.1 Android SDK Preview(以下、本契約で「Preview」という。具体的には利用可能な場合には Android システム ファイル、パッケージ型 API、Preview ライブラリ ファイルを含む)は、本契約の規定に従ってライセンス許可されます。本契約では、デベロッパーの Preview の使用に関して、デベロッパーと Google の間で法的拘束力のある契約を結びます。
+
+1.2 「Android」とは、Android オープン ソース プロジェクト(http://source.android.com/ にて随時更新)にて利用可能な、端末向けの Android ソフトウェア スタックを意味します。
+
+1.3 「Android 互換」とは、(i)Android 互換ウェブサイト(http://source.android.com/compatibility)に掲載されており、随時アップデートされる可能性がある Android Compatibility Definition ドキュメントに準拠し、かつ(ii)Android Compatibility Test Suite(CTS)に合格した任意の Android 実装を指します。
+
+1.4 「Google」とは、1600 Amphitheatre Parkway, Mountain View, CA 94043, United States に主たる事業所を有するデラウェア州法人である Google Inc. を意味します。
+
+2. 本契約の同意
+
+2.1 Preview を使用するには、まず本契約に同意する必要があります。本契約に同意しない場合は Preview を使用できません。
+
+2.2 同意するかまたは Preview を使用するためにクリックすると、本契約に同意したことになります。
+
+2.3 米国またはその他の国(デベロッパーが居住している国かまたはデベロッパーが Preview を使用する国を含む)の法律により Preview の使用を禁止されている人である場合、Preview を使用することも、使用許諾契約に同意することもできません。
+
+2.4 雇用主またはその他の事業体を代表または代理して本契約に拘束されることに同意し Preview を企業または組織の内部で使用する場合、担当者の雇用主またはその他の事業体を本契約に法的に拘束する完全な法的権限を有していることを表明および保証するものとします。担当者が必要な権限を有していない場合は、担当者の雇用主またはその他の事業体を代表または代理して、本契約に同意することも、Preview を使用することもできません。
+
+3. Google からの Preview ライセンス
+
+3.1 本契約の規定に従い、Google は Android 実装と互換性のあるアプリケーションの開発に Preview を使用するための、限定的で、世界規模の、ロイヤリティ フリーな、譲渡不可、非排他的、サブライセンス不可なライセンスを付与するものとします。
+
+3.2 本 Preview は、別のプラットフォーム(Android 実装と互換性のないものも含む)のアプリケーションの開発や別の SDK の開発には使用できません。本 Preview をその目的で使用しない場合は、Android 実装と互換性のないものを含め、自由に別のプラットフォームのアプリケーションの開発を行うことができます。
+
+3.3 Preview に関するすべての法的権利、所有権、利益(Preview に含まれる知的財産権を含む)は Google またはサードパーティが所有するものとします。「知的財産権」とは、特許法、著作権法、営業秘密法、商標法、不当競争防止法に基づいて発生するすべての権利、およびその他のすべての所有権を意味します。デベロッパーに明示的に付与されていない権利は、すべて Google が所有します。
+
+3.4 本契約で明示的に許可されている目的以外においては、Preview を使用できません。当該のサードパーティのライセンスで必要とされる場合を除き、デベロッパーは、(a)Preview または Preview の一部をコピー(バックアップ目的を除く)、修正、改造、再配布、逆コンパイル、リバース エンジニアリング、逆アセンブルまたは派生物の作成、または(b)モバイル ハンドセットまたは個人用 PC 以外のハードウェア端末への Preview の読み込み、Preview と他のソフトウェアとの結合、または Preview の一部を組み込んだソフトウェアや端末の配布はできません。
+
+3.5 オープンソース ソフトウェア ライセンス下でライセンス付与された Preview のコンポーネントの使用、複製、配布は、本契約ではなく、そのオープンソース ソフトウェアのライセンスに準拠するものとします。デベロッパーは、許諾されるすべての権利下で、そのようなオープンソース ソフトウェア ライセンスに対して、優良ライセンシーのままでいることに同意し、そのような権利を終了、停止、または違反する可能性のあるいかなる行為も差し控えることに同意するものとします。
+
+3.6 デベロッパーは、Google が提供する Preview の形式および性質は事前の通知なしに変更される場合があり、今後リリースされる Preview のバージョンでは、以前のバージョンの Preview で開発されたアプリケーションとの互換性がない可能性があることに同意します。デベロッパーは、Google が事前の通知なく、Google の単独の裁量でデベロッパーまたはユーザーへの Preview(または Preview 内の一部の機能)の提供を(恒久的または一時的に)停止する場合があることに同意します。
+
+3.7 本契約のいかなる部分も、Google のいかなる商標名、商標、サービスマーク、ロゴ、ドメイン名、またはその他のブランド識別表示を使用する権利もデベロッパーに付与するものではありません。
+
+3.8 デベロッパーは、Preview に添付または収録されているすべての知的財産権に関する通知(著作権および商標の通知を含む)の削除、隠ぺい、改ざんを行わないことに同意します。
+
+4. デベロッパーによる Preview の使用
+
+4.1 Google は、本契約に基づき Preview を使用してデベロッパーが開発したソフトウェア アプリケーションに関して、デベロッパー(またはデベロッパーのライセンサー)からいかなる権利、所有権、または利益(当該アプリケーションに含まれる知的財産権を含む)も取得するものではないことに同意します。
+
+4.2 デベロッパーは、Preview を(a)本契約、および(b)該当する司法管轄区における適用される法律、規則、または一般に認められた慣行またはガイドライン(米国またはその他の該当国におけるデータまたはソフトウェアの輸出入に関する法律を含む)で認められている目的にのみ使用することに同意します。
+
+4.3 Preview を使用してアプリケーションを開発する場合、デベロッパーはユーザーのプライバシーおよび法的権利を保護することに同意します。ユーザーからデベロッパーにユーザー名、パスワード、またはその他のログイン情報または個人情報が提供される場合、デベロッパーは、情報がデベロッパーのアプリケーションに提供されることをユーザーに認識させ、当該ユーザーについてプライバシーに関する法的に十分な通知および保護を行わなければなりません。デベロッパーのアプリケーションに個人情報または秘密情報が保存される場合、この保存は保護された方法で行われなければなりません。ユーザーからデベロッパーのアプリケーションに Google アカウントの情報が提供された場合、デベロッパーのアプリケーションでは、ユーザーが許可したタイミングで、かつユーザーが許可した限定された目的にのみ、当該情報を使用してユーザーの Google アカウントにアクセスすることが認められるものとします。
+
+4.4 デベロッパーは、Preview に関して、第三者(Google、およびあらゆる携帯電話会社を含むが、これらに限定されない)のサーバー、ネットワーク、またはその他の財産またはサービスへの妨害、中断、損害、または許可されていない態様でのアクセスとなる行為(そのような行為に該当する対象製品の開発または販売 / 配布を含む)に関与しないことに同意します。
+
+4.5 デベロッパーは、デベロッパーが Android および Android のアプリケーションを介して作成、送信、表示するデータ、コンテンツ、リソース、および自身の行為の結果(Google に発生する可能性のあるあらゆる損失および損害を含む)について、自身が単独で責任を負うこと(および Google がこれについてデベロッパーまたはいかなる第三者に対しても一切責任を負わないこと)に同意します。
+
+4.6 デベロッパーは、本契約、適用される第三者の契約もしくは利用規約、または適用される法律もしくは規則に基づく自身の義務に違反したこと、および当該違反の結果(Google または第三者に発生したあらゆる損失および損害を含む)について、自身が単独で責任を負うこと(および Google がこれについてデベロッパーまたはいかなる第三者に対しても一切責任を負わないこと)に同意します。
+
+4.7 Preview は開発中であり、デベロッパーによるテスティングやフィードバックは開発プロセスの重要な一部となります。デベロッパーは、Preview の使用により、一部の機能の実装が開発中であると認識し、Preview が安定したリリースの完全な機能性を持つことに依存すべきでないことを認識するものとします。本 Preview は、公式の Android SDK のリリース後はサポート対象でなくなるため、デベロッパーは、Preview を使用するいかなるアプリケーションも公然と配布または引き渡さないことに同意するものとします。
+
+5. デベロッパーの資格情報
+
+5.1 デベロッパーは、Google が発行した、またはデベロッパー自身で選択した、自身のデベロッパー用資格情報の秘密を保持する責任を負うこと、および自身のデベロッパー用資格情報のもとで開発されたすべてのアプリケーションについて単独で責任を負うことに同意します。
+
+6. プライバシーおよび情報
+
+6.1 Google は、Preview の継続的な技術革新と改良のために、ソフトウェアから特定の使用状況統計情報(一意識別子、関連する IP アドレス、ソフトウェアのバージョン番号、Preview のどのツール/サービスがどのように使用されているかに関する情報を含むが、これらに限定されない)を収集できます。この情報が収集される前に、Preview に通知が表示され、デベロッパーの同意が求められます。デベロッパーが同意しない場合は、情報は収集されません。
+
+6.2 収集されるデータは、Preview の改良のために集約された形で精査され、Google のプライバシー ポリシー(http://www.google.com/policies/privacy/)に従って管理されます。
+
+7. 第三者のアプリケーション
+
+7.1 デベロッパーが、Preview を使用して第三者が開発したアプリケーションを実行する、あるいは第三者から提供されたデータ、コンテンツ、リソースにアクセスする場合、デベロッパーは、Google がそれらのアプリケーション、データ、コンテンツ、リソースについて責任を負わないことに同意します。デベロッパーは、そのような第三者のアプリケーションを介してアクセスするすべてのデータ、コンテンツ、リソースについては、それらを生成した者が単独で責任を負うものであり、Google はそれらの第三者のアプリケーション、データ、コンテンツ、またはリソースの使用もしくはアクセスによって生じたあらゆる損失および損害について一切責任を負わないことを理解します。
+
+7.2 デベロッパーは、そのような第三者のアプリケーションを介して表示されるデータ、コンテンツ、リソースは、提供者(あるいは代理の第三者または事業体)が所有する知的財産権で保護されている場合があることを認識するものとします。デベロッパーは、当該所有者からの明確な許可がない限り、それらのデータ、コンテンツ、リソース(全体または一部)の変更、貸与、賃貸、担保、配布または派生物の作成を行うことはできません。
+
+7.3 デベロッパーは、そのような第三者のアプリケーション、データ、コンテンツまたはリソースの使用が、デベロッパーと当該第三者間の別の規約に従うものであることを認識するものとします。
+
+8. Google API の使用
+
+8.1 Google API
+
+8.1.1 API を使用して Google からデータを取得する場合、デベロッパーは、そのデータは、Google またはデータを提供する事業体(あるいは代理の第三者または事業体)が所有する知的財産権で保護されている場合があることを認識するものとします。そのような API の使用は追加の利用規約に従うものとします。デベロッパーは、当該の利用規約による許可がない限り、そのデータ(全体または一部)の変更、貸与、賃貸、担保、配布または派生物の作成を行うことはできません。
+
+8.1.2 デベロッパーは、API を使用して Google からユーザーのデータを取得する場合、ユーザーが明示的に同意した場合のみ、およびユーザーが許可したタイミングとその目的にのみ、データを取得できることを理解し、同意します。
+
+9. 本契約の終了
+
+9.1 本契約は、下記の規定に従ってデベロッパーまたは Google のいずれかによって解約されるまで、継続して適用されるものとします。
+
+9.2 デベロッパーが本契約の解約を希望する場合は、Preview および関連するデベロッパー資格情報の使用を停止することで、契約を終了するものとします。
+
+9.3 Google は、理由の有無にかかわらず、書面で通知することでいつでもデベロッパーとの本契約を解約することができます。
+
+9.4 本契約は事前の通知またはその他の措置なく、次のうち早い方に自動的に終了します。
+(A)Google が、デベロッパーが居住している国またはデベロッパーがサービスを使用する国での Preview または Preview の一部の配布を停止したとき。
+(B)Google が Android SDK の最終バージョンをリリースしたとき。
+
+9.5 本契約が終了すると、本契約で付与されていたライセンスは終了し、デベロッパーは速やかに Preview のすべての使用を停止するものとし、第 10 条、第 11 条、第 12 条、第 14 条の規定は無期限に効力を有するものとします。
+
+10. 免責事項
+
+10.1 デベロッパーは、デベロッパーによる Preview の使用はデベロッパー自身の責任において行うものであること、および Preview は「現状有姿」かつ「提供可能な限りにおいて」、Google からのいかなる種類の保証もなく提供されるものであることを明示的に理解し、これに同意します。
+
+10.2 デベロッパーによる Preview および Preview の使用を通じてダウンロードまたはその他の方法で取得されたマテリアルの使用は、デベロッパー自身の裁量および責任において行うものであり、当該使用の結果として生じるデベロッパーのコンピュータ システムもしくはその他の端末への損害またはデータの喪失についての責任はデベロッパーが単独で負います。前述を制限することなく、Preview は安定したリリースではなく、コンピュータやその他の端末の利用の完全な回復不可能な損失を含む、重大な損害を引き起こす可能性のあるエラー、欠陥、およびセキュリティ上の脆弱性が含まれている可能性があることを理解します。
+
+10.3 Google はまた、商品性、特定目的への適合性、および権利侵害がないことの黙示的な保証および条件を含む(ただしこれらに限定されない)、明示的か黙示的かを問わずあらゆる種類のすべての保証および条件を明示的に否定します。
+
+11. 責任の制限
+
+11.1 デベロッパーは、Google、その子会社および関連会社、ならびにそのライセンサーが、デベロッパーに発生した直接損害、間接損害、偶発的損害、特別損害、結果的損害、または懲罰的損害(データの喪失を含む)について、Google またはその代表者が当該損失が発生する可能性について告知されていたかどうか、または知っていたはずであるかどうかにかかわらず、いかなる責任法理のもとでもデベロッパーに対して責任を負わないことを明示的に理解し、これに同意します。
+
+12. 補償
+
+12.1 法律で認められる最大限の範囲内において、デベロッパーは、(a)デベロッパーが Preview を使用したこと、および(b)デベロッパーが Preview で開発したアプリケーションが他者のいかなる知的財産権を侵害していること、または他者の名誉を毀損している、もしくは他者のパブリシティ権もしくはプライバシー権を侵害していること、および(c)デベロッパーが本契約に違反したことから発生したあらゆる申し立て、普通法上の訴訟、衡平法上の訴訟、または法的手続き、ならびにあらゆる損失、責任、損害、費用、および経費(合理的な弁護士報酬を含む)について、Google、その関連会社、ならびに当該各社の取締役、役員、従業員、代理人を防御し、補償し、免責することに同意します。
+
+13. 契約の変更
+
+13.1 Google は、Preview の新しいバージョンを配布することにより、いつでも本契約を変更することができます。変更が生じた場合、Google は、Preview の提供ウェブサイト上に使用許諾契約の改訂版を公開します。
+
+14. 法的一般条項
+
+14.1 本契約は、デベロッパーと Google の間の法的な合意のすべてを表し、デベロッパーによる Preview の使用(別の契約下で Google が提供するサービスを除く)に適用され、Preview に関するデベロッパーと Google の間のあらゆる事前の合意に完全に取って代わるものです。
+
+14.2 デベロッパーは、Google が本契約に定める(または適用される法律のもとで Google が享受できる)法的な権利または救済措置を行使または執行しなかった場合でも、Google の権利が正式に放棄されたとはみなされないこと、および Google が以後も引き続き当該権利および救済措置を行使または執行できることに同意します。
+
+14.3 本件について判断を下す管轄権を有する司法裁判所によって、本契約のいずれかの条項が無効と判断された場合、当該条項は、本契約の残りの部分に影響を与えることなく本契約から削除されるものとします。本契約の残りの条項は、以後も引き続き有効かつ執行可能であるものとします。
+
+14.4 デベロッパーは、Google が親会社となっている各グループ企業が、本契約の第三受益者となること、および当該企業が、当該企業に利益(または受益権)を付与する本契約の条項を直接執行する、また当該条項に依拠する権利を有することを了承し、これに同意します。上記以外のいかなる人または法人も、本契約の第三受益者とはならないものとします。
+
+14.5 輸出規制。Preview は、米国輸出管理法令の対象です。デベロッパーは、Preview に適用されるすべての国内および国際の輸出管理法令に従わなければなりません。これらの法律には、仕向け地、ユーザー、および最終用途に関する制限が含まれます。
+
+14.6 デベロッパーは、Google から事前に書面で承認を得ずに、本契約を譲渡または移転することはできません。また、そのような承認を得ずに計画された譲渡はすべて無効になります。デベロッパーは、Google から事前に書面で承認を得ずに、本契約に基づく自身の責任または義務を他者に委任してはなりません。
+
+14.7 本契約あるいは本契約に基づくデベロッパーと Google の関係から発生または関連するすべての申し立ては、米国カリフォルニア州の抵触法を除いて、カリフォルニア州法に準拠するものとします。デベロッパーおよび Google は、本契約あるいは本契約に基づくデベロッパーと Google の関係から発生または関連する法的事項の解決について、米国カリフォルニア州サンタクララ郡に所在の連邦裁判所または州立裁判所が専属管轄権を有することに合意します。上記にかかわらず、デベロッパーは、Google が任意の司法管轄区において差し止め命令による救済(または同等の緊急法的救済)を求める申し立てを行うことが認められることに同意します。
+  </div><!-- sdk terms -->
+
+
+
+    <div id="sdk-terms-form">
+      <p>
+        <input id="agree" type="checkbox" name="agree" value="1" onclick="onAgreeChecked()" />
+        <label id="agreeLabel" for="agree">上記の利用規約を読み、同意します。</label>
+      </p>
+      <p><a href="" class="button disabled" id="downloadForRealz" onclick="return onDownloadForRealz(this);"></a></p>
+    </div>
+
+
+  </div><!-- end TOS -->
+
+
+  <div id="landing">
+
+<div id="qv-wrapper">
+  <div id="qv">
+    <h2>本書の内容</h2>
+      <ol>
+        <li><a href="#device-preview">ハードウェア デバイスをセットアップする</a>
+          <ol>
+            <li><a href="#ota">OTA アップデートを取得する</a></li>
+            <li><a href="#flash">手動でデバイスへの書き込みを行う</a></li>
+            <li><a href="#revertDevice">アンインストールする</a></li>
+          </ol>
+        </li>
+        <li><a href="#setupAVD">エミュレータをセットアップする</a></li>
+      </ol>
+  </div>
+</div>
+
+<p>
+  新しいプラットフォーム上でアプリを実行してテストするには、以下のいずれかの方法で Android N のランタイム環境をセットアップする必要があります。
+
+</p>
+
+<ul>
+  <li>Android N をサポート対象のハードウェア デバイスにインストールする。</li>
+  <li>Android N が動作する Android エミュレータをセットアップする。</li>
+</ul>
+
+<p>
+  既存の APK とハードウェア デバイスまたはエミュレータがあれば、新しいプラットフォーム上でアプリの基本的な互換性テストを実施できます。基本的なテストのために開発環境全体をアップデートする必要はありません。
+
+
+
+</p>
+
+<p>
+  アプリを Android N 向けに修正したり、Android N の API を使用したりする場合は、Android N 用にアップデートされた開発環境をセットアップする必要があります。詳細は <a href="{@docRoot}preview/setup-sdk.html">Android N 向けの開発準備をする</a>の説明をご覧ください。
+
+
+
+</p>
+
+
+<h2 id="device-preview">ハードウェア デバイスをセットアップする</h2>
+
+<p>
+  N Developer Preview は、携帯端末やタブレット、テレビなど、アプリのテストに使用するさまざまなハードウェア デバイスのシステム アップデートに対応しています。
+
+</p>
+
+<p>
+  対象機種をお持ちの場合は、以下のいずれかの方法で Developer Preview マイルストーン ビルドにアップデートできます。
+
+</p>
+
+<ul>
+  <li><a href="https://g.co/androidbeta">Android ベータ版プログラム</a>の<strong>自動 OTA システム アップデートにデバイスを登録します</strong>。登録したデバイスは、N Developer Preview のマイルストーン ビルドごとに、定期的に無線(OTA)アップデートを受信できます。既存の環境から N Developer Preview のさまざまなリリースへシームレスに移行できるため、このベータ版プログラムに登録することをお勧めします。
+
+
+
+</li>
+  <li><strong>Developer Preview のシステム イメージをダウンロードして、デバイスに書き込みます</strong>。手動で書き込みをしたデバイスには、OTA アップデートが自動で配信されません。ただし、デバイスを Android ベータ版プログラムに登録すれば、OTA アップデートを取得できるようになります。
+
+ </li>
+</ul>
+
+<h3 id="ota">自動 OTA アップデートを受信するためにデバイスを登録する</h3>
+
+<p>
+  対象機種(以下のダウンロードの表をご覧ください)をお持ちの場合は、<a href="https://g.co/androidbeta">Android ベータ版プログラム</a>にデバイスを登録すると、Android のプレビュー版への OTA アップデートを受信できます。正式なシステム アップデートと同様に、OTA アップデートのダウンロードやデバイスの更新は自動で行われます。
+
+
+
+
+</p>
+
+<p>
+  デバイスの登録解除はいつでもできます。登録を解除すると、そのデバイスで利用可能な Android の最新の実稼働向けバージョン(Android 6.0 Marshmallow など)への OTA アップデートがデバイスに配信されます。アップデート時はオールリセットされ、デバイス上のユーザーデータは削除されます。デバイスの登録解除前には、<strong>重要なデータをバックアップ</strong>しておいてください。
+
+
+
+
+</p>
+
+<p>
+  詳細情報やデバイスの登録方法については、<a href="https://g.co/androidbeta">Android ベータ版プログラム</a>のウェブサイトをご覧ください。
+
+</p>
+
+<p class="note"><strong>注:</strong> 登録を解除するとデバイスはオールリセットされるので、重要なデータはあらかじめバックアップしておいてください。
+
+
+</p>
+
+<h3 id="flash">手動でデバイスへの書き込みを行う</h3>
+
+<p>
+  最新の Developer Preview のシステム イメージはいつでもダウンロードして、手動でデバイスに書き込むことができます。テスト端末用のシステム イメージは、以下の表からダウンロード可能です。テスト環境を詳細に管理したり、自動テストなどで頻繁に再インストールが必要な場合は、このように手動でデバイスに書き込みをする方法が便利です。
+
+
+
+ 
+</p>
+
+<!-- You can flash by ota or system image --><p>
+  デバイスにシステム イメージをインストールすると、<strong>端末からすべてのデータが削除</strong>されるため、あらかじめデータをバックアップしておいてください。
+
+</p>
+
+<p>
+  デバイス上のデータをバックアップして、ご自身のデバイス用のシステム イメージを以下からダウンロードした後、<a href="https://developers.google.com/android/nexus/images#instructions">developers.google.com/android</a> の手順に従ってデバイスにイメージを書き込みます。
+
+
+</p>
+
+<p>
+  手動でシステム イメージを書き込んだデバイスには、以降の Developer Preview マイルストーン ビルドへの <strong>OTA アップデートが自動配信されません</strong>。そのため Developer Preview マイルストーンごとに環境を最新にして、新しいシステムイメージを書き込む必要があります。
+
+
+
+</p>
+
+<p>
+  手動でデバイスに書き込みを行った後でも、<a href="https://g.co/androidbeta">Android ベータ版プログラム</a>にデバイスを登録すれば OTA アップデートを受信できるようになります。次のプレビュー版への OTA アップデートを受信したい方は、いつでもデバイス登録が可能です。
+
+
+ 
+</p>
+
+<table>
+  <tr>
+    <th scope="col">デバイス</th>
+    <th scope="col">ダウンロード / チェックサム</th>
+  </tr>
+
+  <tr id="bullhead">
+    <td>Nexus 5X <br>"bullhead"</td>
+    <td><a href="#top" onclick="onDownload(this)">bullhead-npc56p-preview-6c877a3d.tgz</a><br>
+      MD5:b5cf874021023b398f5b983b24913f5d<br>
+      SHA-1:6c877a3d9fae7ec8a1678448e325b77b7a7b143a
+    </td>
+  </tr>
+
+  <tr id="shamu">
+    <td>Nexus 6 <br>"shamu"</td>
+    <td><a href="#top" onclick="onDownload(this)">shamu-npc56p-preview-54b13c67.tgz</a><br>
+      MD5:af183638cf34e0eb944a1957d7696f60<br>
+      SHA-1:54b13c6703d369cc79a8fd8728fe4103c6343973
+    </td>
+  </tr>
+
+  <tr id="angler">
+    <td>Nexus 6P <br>"angler"</td>
+    <td><a href="#top" onclick="onDownload(this)">angler-npc56p-preview-85ffc1b1.tgz</a><br>
+      MD5:bc4934ea7bd325753eee1606d3725a24<br>
+      SHA-1:85ffc1b1be402b1b96f9ba10929e86bba6c6c588
+    </td>
+  </tr>
+
+  <tr id="volantis">
+    <td>Nexus 9 <br>"volantis"</td>
+    <td><a href="#top" onclick="onDownload(this)">volantis-npc56p-preview-0e8ec8ef.tgz</a><br>
+      MD5:c901334c6158351e945f188167ae56f4<br>
+      SHA-1:0e8ec8ef98c7a8d4f58d15f90afc5176303efca4
+    </td>
+  </tr>
+
+  <tr id="volantisg">
+    <td>Nexus 9G <br>"volantisg"</td>
+    <td><a href="#top" onclick="onDownload(this)">volantisg-npc56p-preview-1bafdbfb.tgz</a><br>
+      MD5:7bb95bebc478d7257cccb4652899d1b4<br>
+      SHA-1:1bafdbfb502e979a9fe4c257a379c4c7af8a3ae6
+    </td>
+  </tr>
+
+  <tr id="fugu">
+    <td>Nexus Player <br>"fugu"</td>
+    <td><a href="#top" onclick="onDownload(this)">fugu-npc56r-preview-7027d5b6.tgz</a><br>
+      MD5:f5d3d8f75836ccfe4c70e8162e498be4<br>
+      SHA-1:7027d5b662bceda4c80a91a0a14ef0e5a7ba795b
+    </td>
+  </tr>
+
+  <tr id="ryu">
+    <td>Pixel C <br>"ryu"</td>
+    <td><a href="#top" onclick="onDownload(this)">ryu-npc56p-preview-335a86a4.tgz</a><br>
+      MD5:4e21fb183bbbf467bee91598d587fd2e<br>
+      SHA-1:335a86a435ee51f18464de343ad2e071c38f0e92
+    </td>
+  </tr>
+  <tr id="seed">
+    <td>General Mobile 4G(AndroidOne) <br>"seed"</td>
+    <td><a href="#top" onclick="onDownload(this)">seed_l8150-npc56p-preview-82472ebc.tgz</a><br>
+      MD5:983e083bc7cd0c4a2d39d6ebaa20202a<br>
+      SHA-1:82472ebc9a6054a103f53cb400a1351913c95127
+    </td>
+  </tr>
+
+</table>
+
+<h3 id="revertDevice">プレビュー版をデバイスからアンインストールする</h3>
+
+<p>
+  以下のいずれかの方法で、プレビュー版をデバイスからアンインストールできます。
+ </p>
+  <ul>
+    <li><strong>工場出荷時仕様のシステム イメージを取得</strong>して、手動でデバイスに書き込みます。
+
+      <ul>
+          <li><strong>Nexus 端末と Pixel C 端末</strong>については <a href="http://developers.google.com/android/nexus/images">Nexus 端末のファクトリー イメージ</a>のページを参照してダウンロードしてください。
+
+ </li>
+        <li><strong>その他の端末</strong>については、直接デバイス メーカーにお問い合わせください。Android ベータ版プログラムの対象機種については、デバイスをプログラムに登録した後、登録を解除することができます(詳細は以下をご覧ください)。
+
+
+</li>
+      </ul>
+    </li>
+    <li><strong>Android ベータ版プログラムへのデバイス登録を解除</strong>します。<a href="https://g.co/androidbeta">Android ベータ版プログラム</a>に登録中のデバイスは、その種類のよらず、簡単に登録を解除することができます。
+
+
+  <p>
+    登録を解除すると、そのデバイスで利用可能な Android の最新の実稼働向けバージョン(Android 6.0 Marshmallow など)への OTA アップデートがデバイスに配信されます。アップデート時はオールリセットされ、デバイス上のユーザーデータは削除されます。デバイスの登録解除前には、<strong>重要なデータをバックアップ</strong>しておいてください。
+
+
+
+
+  </p>
+  </li>
+</ul>
+
+<p class="note"><strong>注:</strong> プログラムの終了前に Developer Preview のシステム イメージをアンインストールすると、端末はオールリセットされ、すべてのユーザーデータが削除されます。
+
+
+
+</p>
+
+
+<h2 id="setupAVD">エミュレータをセットアップする</h2>
+
+<p>Android エミュレータで Android N Preview を実行するには、Android N Preview SDK をダウンロードして、エミュレータ用の仮想デバイスを準備する必要があります。
+
+</p>
+
+<p>まずは以下の手順で Android N Preview SDK をダウンロードします(すでに <a href="{@docRoot}preview/setup-sdk.html">Android N 向けの開発準備</a>でダウンロード済みの場合は、この手順は飛ばしてください)。
+
+
+
+<ol>
+  <li>Android Studio で設定ダイアログを開きます(Windows、Linux では <strong>[File] &gt; [Settings]</strong>、Mac では <strong>[Android Studio] &gt; [Preferences]</strong>)。左側のパネルで <strong>[Appearance &amp; Behavior] &gt; [System Settings] &gt; [Android SDK]</strong> を選択します。
+
+
+
+
+
+  <li><strong>[SDK Platforms]</strong> タブをクリックして、<strong>[Android N Preview]</strong> チェック ボックスを選択します。
+</li>
+
+  <li><strong>[SDK Tools]</strong> タブをクリックして <strong>[Android SDK Build Tools]</strong>、<strong>[Android SDK Platform-Tools]</strong>、<strong>[Android SDK Tools]</strong> のチェック ボックスを選択します。
+
+
+
+  </li>
+
+  <li><strong>[OK]</strong> をクリックして、インストールするパッケージの使用許諾に同意します。
+
+  </li>
+</ol>
+
+<p>これで <strong>Android SDK Built-Tools 24.0 0 rc1</strong>、<strong>Platform-Tools 24.0.0 rc1</strong>、<strong>SDK Tools 25.0.9</strong> がインストールされます。SDK Tools を 25.0.9 にアップデートしないと、Android N の x86_64 システム イメージは動作しません。
+
+
+</p>
+
+
+<p>次に Android N のシステム イメージを使用して仮想デバイスを作成します。</p>
+
+<ol>
+  <li><strong>[Tools] &gt; [Android] &gt; [AVD Manager]</strong> を選択して、AVD Manager を起動します。
+</li>
+  <li><strong>[Create Virtual Device]</strong> をクリックします。</li>
+  <li>Nexus 5X、Nexus 6P、Nexus 9、Android TV などの端末を選択して、<strong>[Next]</strong> をクリックします。
+</li>
+  <li><strong>N</strong> システム イメージ(<strong>x86</strong> ABI)を選択して <strong>[Next]</strong> をクリックします(現時点で Android N Preview の Android エミュレータに対応しているのは x86 システム イメージだけです)。
+
+
+
+  <li>残りの AVD 設定を終えたら <strong>[Finish]</strong> をクリックします。
+</li>
+</ol>
+
+<p>これで Android N Preview AVD で Android エミュレータを起動できます。</p>
+
+<p>
+<a href="http://tools.android.com/tech-docs/emulator">Android Emulator 2.0 Beta</a> に対応した Android Studio 2.1 のプレビュー版をインストールすると、Android Studio 1.5 よりもパフォーマンスが格段に向上し、Android エミュレータをより快適にお使いいただけます。
+
+
+</p>
+
+<p class="note"><strong>注:</strong> Android Studio 2.0 Beta を使用している場合、N プレビュー版のシステム イメージで AVD を作成できないという既知の不具合があります。よって現時点では、Android Studio 2.1 のプレビュー版を使用して AVD を作成してください。
+
+
+
+</p>
+
+<p>仮想デバイスの作成については、<a href="{@docRoot}tools/devices/index.html">仮想デバイスを管理する</a>で詳細をご覧ください。
+</p>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+  </div><!-- landing -->
+
+</div><!-- relative wrapper -->
+
+
+
+<script>
+  var urlRoot = "http://storage.googleapis.com/androiddevelopers/shareables/preview/";
+  function onDownload(link) {
+
+    $("#downloadForRealz").html("Download " + $(link).text());
+    $("#downloadForRealz").attr('href', urlRoot + $(link).text());
+
+    $("#tos").fadeIn('fast');
+    $("#landing").fadeOut('fast');
+
+    return true;
+  }
+
+
+  function onAgreeChecked() {
+    /* verify that the TOS is agreed */
+    if ($("input#agree").is(":checked")) {
+      /* reveal the download button */
+      $("a#downloadForRealz").removeClass('disabled');
+    } else {
+      $("a#downloadForRealz").addClass('disabled');
+    }
+  }
+
+  function onDownloadForRealz(link) {
+    if ($("input#agree").is(':checked')) {
+    /*
+      $("#tos").fadeOut('fast');
+      $("#landing").fadeIn('fast');
+    */
+
+      ga('send', 'event', 'M Preview', 'System Image', $("#downloadForRealz").html());
+
+    /*
+      location.hash = "";
+    */
+      return true;
+    } else {
+      return false;
+    }
+  }
+
+  $(window).hashchange( function(){
+    if (location.hash == "") {
+      location.reload();
+    }
+  });
+
+</script>
diff --git a/docs/html-intl/intl/ja/preview/features/background-optimization.jd b/docs/html-intl/intl/ja/preview/features/background-optimization.jd
new file mode 100644
index 0000000..278e545
--- /dev/null
+++ b/docs/html-intl/intl/ja/preview/features/background-optimization.jd
@@ -0,0 +1,388 @@
+page.title=バックグラウンド処理の最適化
+page.metaDescription=暗黙的なブロードキャストに対する新しい制限。
+page.keywords="android N", "implicit broadcasts", "job scheduler"
+@jd:body
+
+<div id="qv-wrapper">
+  <div id="qv">
+    <h2>
+      このドキュメントの内容
+    </h2>
+
+    <ol>
+      <li>
+        <a href="#connectivity-action">CONNECTIVITY_ACTION に対する制限</a>
+      </li>
+
+      <li>
+        <a href="#sched-jobs">従量制ではない接続でネットワーク ジョブをスケジュールする</a>
+
+      </li>
+
+      <li>
+        <a href="#monitor-conn">アプリを実行しているときにネットワーク接続を監視する</a>
+
+      </li>
+
+      <li>
+        <a href="#media-broadcasts">NEW_PICTURE と NEW_VIDEO に対する制限</a>
+
+      </li>
+
+      <li>
+        <a href="#new-jobinfo">新しい JobInfo メソッド</a>
+      </li>
+
+      <li>
+        <a href="#new-jobparam">新しい JobParameter メソッド</a>
+      </li>
+
+      <li>
+        <a href="#further-optimization">アプリをさらに最適化する</a>
+      </li>
+    </ol>
+  </div>
+</div>
+
+<p>
+  バックグラウンド処理が多くのメモリとバッテリーを消費する場合があります。たとえば、多くのバックグラウンド処理が暗黙的なブロードキャストをリッスンするように登録されていますが、バックグラウンド処理が有用でない場合でも、暗黙的なブロードキャストによりこれらの処理が開始されることがあります。
+
+バックグラウンド処理が端末のパフォーマンスとユーザー エクスペリエンスの両方に多大な影響を及ぼす可能性があります。
+
+</p>
+
+<p>
+  N Developer Preview では、この問題を軽減するために、次の制限が適用されています。
+
+</p>
+
+<ul>
+  <li>プレビューをターゲットにしたアプリは、マニフェストで {@link
+  android.net.ConnectivityManager#CONNECTIVITY_ACTION} ブロードキャストの受信登録をしていても、このブロードキャストを受信しません。
+フォアグラウンドで実行中のアプリは、{@link
+  android.content.Context#registerReceiver Context.registerReceiver()} で {@link android.content.BroadcastReceiver} を登録することにより、メインスレッドで {@code CONNECTIVITY_CHANGE} を引き続きリッスンできます。
+
+
+  </li>
+
+  <li>アプリは、{@link
+  android.hardware.Camera#ACTION_NEW_PICTURE} ブロードキャストまたは {@link
+  android.hardware.Camera#ACTION_NEW_VIDEO} ブロードキャストを送受信できません。この最適化は、プレビューをターゲットにしたアプリだけでなく、すべてのアプリに影響を及ぼします。
+
+  </li>
+</ul>
+
+<p>
+  Android フレームワークは、これらの暗黙的なブロードキャストの必要性を軽減するいくつかのソリューションを提供します。
+たとえば、{@link android.app.job.JobScheduler} と <a href="https://developers.google.com/android/reference/com/google/android/gms/gcm/GcmNetworkManager">
+{@code GcmNetworkManager}</a> は、従量制ではないネットワークへの接続など、指定条件が満たされたときに、ネットワーク操作をスケジュールするための堅牢なメカニズムを提供します。
+
+
+また、コンテンツ プロバイダの変更に対応するために、{@link android.app.job.JobScheduler} を使用することもできます。{@link android.app.job.JobInfo} オブジェクトは、{@link android.app.job.JobScheduler} がジョブをスケジュールするために使用するパラメータをカプセル化します。
+
+
+ジョブの条件が満たされると、システムはこのジョブをアプリの {@link android.app.job.JobService} で実行します。
+
+</p>
+
+<p>
+  このドキュメントでは、アプリをこれらの新しい制限に対応させるために、
+{@link android.app.job.JobScheduler} などの代替メソッドの使用法について説明します。
+
+</p>
+
+<h2 id="connectivity-action">
+  CONNECTIVITY_ACTION に対する制限
+</h2>
+
+<p>
+  N Developer Preview をターゲットにしたアプリは、マニフェストで {@link
+  android.net.ConnectivityManager#CONNECTIVITY_ACTION} ブロードキャストの受信登録をしていても、このブロードキャストを受信しません。また、このブロードキャストに依存している処理は開始されません。
+
+これにより、ネットワークの変更をリッスンするアプリ、または端末が従量制ではないネットワークに接続したときにネットワーク アクティビティをまとめて実行するアプリに問題が発生する可能性があります。
+
+Android フレームワークは、この制限を回避するためのいくつかのソリューションを備えていますが、アプリで実行するタスクに応じて、適切なソリューションを選択してください。
+
+
+</p>
+
+<p class="note">
+  <strong>注: </strong>{@link android.content.Context#registerReceiver Context.registerReceiver()} で登録された {@link android.content.BroadcastReceiver} は、アプリがフォアグラウンドにあるときにこれらのブロードキャストを継続して受信します。
+
+
+</p>
+
+<h3 id="sched-jobs">
+  従量制ではない接続でネットワーク ジョブをスケジュールする
+</h3>
+
+<p>
+  {@link android.app.job.JobInfo} オブジェクトをビルドするために {@link android.app.job.JobInfo.Builder JobInfo.Builder} を使用するときは、{@link
+  android.app.job.JobInfo.Builder#setRequiredNetworkType
+  setRequiredNetworkType()} メソッドを適用し、{@link android.app.job.JobInfo
+  JobInfo.NETWORK_TYPE_UNMETERED} をジョブ パラメータとして渡します。
+次のコードサンプルは、端末が従量制ではないネットワークに接続し、充電しているときに実行するサービスをスケジュールします。
+
+
+</p>
+
+<pre>
+public static final int MY_BACKGROUND_JOB = 0;
+...
+public static void scheduleJob(Context context) {
+  JobScheduler js =
+      (JobScheduler) context.getSystemService(Context.JOB_SCHEDULER_SERVICE);
+  JobInfo job = new JobInfo.Builder(
+    MY_BACKGROUND_JOB,
+    new ComponentName(context, MyJobService.class))
+      .setRequiredNetworkType(JobInfo.NETWORK_TYPE_UNMETERED)
+      .setRequiresCharging(true)
+      .build();
+  js.schedule(job);
+}
+</pre>
+
+<p>
+  ジョブの条件が満たされたとき、アプリはコールバックを受け取り、指定された {@code JobService.class} で {@link android.app.job.JobService#onStartJob onStartJob()} メソッドを実行します。
+
+{@link
+  android.app.job.JobScheduler} 実装の例については、<a href="{@docRoot}samples/JobScheduler/index.html">JobScheduler サンプルアプリ</a>をご覧ください。
+</p>
+
+<p>
+  GMSCore サービスを使用し、Android 5.0(API レベル 21)以前をターゲットにしているアプリは、<a href="https://developers.google.com/android/reference/com/google/android/gms/gcm/GcmNetworkManager">
+{@code GcmNetworkManager}</a> を使用して {@code Task.NETWORK_STATE_UNMETERED} を指定できます。
+
+</p>
+
+<h3 id="monitor-conn">
+  アプリを実行しているときにネットワーク接続を監視する
+</h3>
+
+<p>
+  フォアグラウンドで実行中のアプリは、{@link
+  android.content.BroadcastReceiver} を登録することにより、{@code
+  CONNECTIVITY_CHANGE} を引き続きリッスンできます。ただし、{@link
+  android.net.ConnectivityManager} API は、特定のネットワーク条件が満たされたときだけコールバックをリクエストするより堅牢なメソッドを提供します。
+
+</p>
+
+<p>
+  {@link android.net.NetworkRequest} オブジェクトは、{@link android.net.NetworkCapabilities} に応じてネットワーク コールバックのパラメータを定義します。
+{@link
+  android.net.NetworkRequest.Builder NetworkRequest.Builder} クラスを使って {@link android.net.NetworkRequest} オブジェクトを作成します。次に、{@link
+  android.net.ConnectivityManager#registerNetworkCallback(android.net.NetworkRequest,
+  android.net.ConnectivityManager.NetworkCallback) registerNetworkCallback()} は、{@link android.net.NetworkRequest} オブジェクトをシステムに渡します。
+
+ネットワーク条件が満たされると、アプリはコールバックを受け取り、{@link
+  android.net.ConnectivityManager.NetworkCallback} クラスで定義された {@link android.net.ConnectivityManager.NetworkCallback#onAvailable
+  onAvailable()} メソッドを実行します。
+
+
+</p>
+
+<p>
+  アプリは終了するか、{@link android.net.ConnectivityManager#unregisterNetworkCallback
+  unregisterNetworkCallback()} を呼び出すまで、コールバックを受信し続けます。
+
+</p>
+
+<h2 id="media-broadcasts">
+  NEW_PICTURE と NEW_VIDEO に対する制限
+</h2>
+
+<p>
+  N Developer Preview では、アプリは、{@link
+  android.hardware.Camera#ACTION_NEW_PICTURE} ブロードキャストまたは {@link
+  android.hardware.Camera#ACTION_NEW_VIDEO} ブロードキャストを送受信できません。この制限は、新しい画像やビデオを処理するためにいくつかのアプリを起動する必要があるときに、パフォーマンスとユーザー エクスペリエンスへの影響を軽減するのに役立ちます。
+
+N Developer Preview では、{@link android.app.job.JobInfo} と {@link
+  android.app.job.JobParameters} を拡張することにより、代わりのソリューションを提供しています。
+
+</p>
+
+<h3 id="new-jobinfo">
+  新しい JobInfo メソッド
+</h3>
+
+<p>
+  N Developer Preview では、コンテンツ URI の変更でジョブをトリガーするために、{@link android.app.job.JobInfo} API に次のメソッドが追加されています。
+
+</p>
+
+<dl>
+  <dt>
+    {@code JobInfo.TriggerContentUri()}
+  </dt>
+
+  <dd>
+    コンテンツ URI の変更でジョブをトリガーするために必要なパラメータをカプセル化します。
+  </dd>
+
+  <dt>
+    {@code JobInfo.Builder.addTriggerContentUri()}
+  </dt>
+
+  <dd>
+    {@code TriggerContentUri} オブジェクトを {@link
+    android.app.job.JobInfo} に渡します。{@link android.database.ContentObserver} は、カプセル化されたコンテンツ URI を監視します。
+ジョブに関連する複数の {@code
+    TriggerContentUri} オブジェクトがある場合、システムは、1 つのコンテンツ URI のみの変更を通知する場合でも、コールバックを提供します。
+
+  </dd>
+
+  <dd>
+    指定した URI の子孫のいずれかが変更された場合、ジョブをトリガーするために、{@code TriggerContentUri.FLAG_NOTIFY_FOR_DESCENDANTS} フラグを追加します。
+このフラグは、{@link
+    android.content.ContentResolver#registerContentObserver
+    registerContentObserver()} に渡される {@code notifyForDescendants} パラメータに相当します。
+
+  </dd>
+</dl>
+
+<p class="note">
+  <strong>注:</strong> {@code TriggerContentUri()} は、{@link android.app.job.JobInfo.Builder#setPeriodic
+  setPeriodic()} または {@link android.app.job.JobInfo.Builder#setPersisted
+  setPersisted()} と組み合わせて使うことはできません。
+コンテンツの変更を継続的に監視するには、アプリの {@link
+  android.app.job.JobService} が最新のコールバックの処理を完了する前に、新しい 
+{@link android.app.job.JobInfo} をスケジュールします。
+</p>
+
+<p>
+  次のサンプルコードは、システムが変更をコンテンツ URI {@code MEDIA_URI} に通知するときにトリガーされるジョブをスケジュールします。
+
+</p>
+
+<pre>
+public static final int MY_BACKGROUND_JOB = 0;
+...
+public static void scheduleJob(Context context) {
+  JobScheduler js =
+          (JobScheduler) context.getSystemService(Context.JOB_SCHEDULER_SERVICE);
+  JobInfo.Builder builder = new JobInfo.Builder(
+          MY_BACKGROUND_JOB,
+          new ComponentName(context, MediaContentJob.class));
+  builder.addTriggerContentUri(
+          new JobInfo.TriggerContentUri(MEDIA_URI,
+          JobInfo.TriggerContentUri.FLAG_NOTIFY_FOR_DESCENDANTS));
+  js.schedule(builder.build());
+}
+</pre>
+<p>
+  システムが特定のコンテンツ URI の変更を通知すると、アプリはコールバックを受け取り、{@link android.app.job.JobParameters} オブジェクトが {@code MediaContentJob.class} の {@link android.app.job.JobService#onStartJob onStartJob()} メソッドに渡されます。
+
+
+
+</p>
+
+<h3 id="new-jobparam">
+  新しい JobParameter メソッド
+</h3>
+
+<p>
+  また、N Developer Preview では、{@link android.app.job.JobParameters} が拡張され、ジョブをトリガーしたコンテンツ権限や URI についての有用な情報をアプリが受け取れるようになっています。
+
+
+</p>
+
+<dl>
+  <dt>
+    {@code Uri[] getTriggeredContentUris()}
+  </dt>
+
+  <dd>
+    ジョブをトリガーした URI の配列を返します。この配列は、ジョブをトリガーした URI がない場合(たとえば、期限切れ、またはその他の理由でジョブがトリガーされた場合)、または変更された URI の数が 50 を超える場合は、{@code
+    null} になります。
+
+
+  </dd>
+
+  <dt>
+    {@code String[] getTriggeredContentAuthorities()}
+  </dt>
+
+  <dd>
+    ジョブをトリガーしたコンテンツ権限の文字列配列を返します。
+    返された配列が {@code null} ではない場合、どの URI が変更されたかについて、詳細を取得するために {@code getTriggeredContentUris()} を使用します。
+
+  </dd>
+</dl>
+
+<p>
+  次のサンプルコードは、{@link
+  android.app.job.JobService#onStartJob JobService.onStartJob()} メソッドをオーバーライドし、ジョブを起動したコンテンツ権限と URI を記録します。
+
+</p>
+
+<pre>
+&#64;Override
+public boolean onStartJob(JobParameters params) {
+  StringBuilder sb = new StringBuilder();
+  sb.append("Media content has changed:\n");
+  if (params.getTriggeredContentAuthorities() != null) {
+      sb.append("Authorities: ");
+      boolean first = true;
+      for (String auth :
+          params.getTriggeredContentAuthorities()) {
+          if (first) {
+              first = false;
+          } else {
+             sb.append(", ");
+          }
+           sb.append(auth);
+      }
+      if (params.getTriggeredContentUris() != null) {
+          for (Uri uri : params.getTriggeredContentUris()) {
+              sb.append("\n");
+              sb.append(uri);
+          }
+      }
+  } else {
+      sb.append("(No content)");
+  }
+  Log.i(TAG, sb.toString());
+  return true;
+}
+</pre>
+
+<h2 id="further-optimization">
+  アプリをさらに最適化する
+</h2>
+
+<p>
+  アプリをメモリ不足の端末またはメモリ不足の状況で実行するために最適化すると、パフォーマンスとユーザー エクスペリエンスが向上します。
+バックグラウンド サービスと静的に登録された暗黙的なブロードキャスト レシーバーへの依存関係を削除すると、そのような端末上のアプリの動作が向上します。
+
+N Developer Preview では、これらの問題を削減するための措置が講じられていますが、これらのバックグラウンド処理をまったく使用せずに、アプリが実行されるように最適化することをお勧めします。
+
+
+
+</p>
+
+<p>
+  N Developer Preview には、それらのバックグラウンド処理を無効にした状態でアプリの動作をテストするために使用できるいくつかの <a href="{@docRoot}tools/help/adb.html">Android デバッグ ブリッジ(ADB)</a>コマンドが追加されています。
+
+</p>
+
+<ul>
+  <li>暗黙的なブロードキャストとバックグラウンド サービスが利用できない状態をシミュレートするには、次のコマンドを入力します。
+
+  </li>
+
+  <li style="list-style: none; display: inline">
+<pre class="no-pretty-print">
+{@code $ adb shell cmd appops set RUN_IN_BACKGROUND ignore}
+</pre>
+  </li>
+
+  <li>暗黙的なブロードキャストとバックグラウンド サービスを再度有効にするには、次のコマンドを入力します。
+
+  </li>
+
+  <li style="list-style: none; display: inline">
+<pre class="no-pretty-print">
+{@code $ adb shell cmd appops set RUN_IN_BACKGROUND allow}
+</pre>
+  </li>
+</ul>
\ No newline at end of file
diff --git a/docs/html-intl/intl/ja/preview/features/direct-boot.jd b/docs/html-intl/intl/ja/preview/features/direct-boot.jd
new file mode 100644
index 0000000..3b3bcb1
--- /dev/null
+++ b/docs/html-intl/intl/ja/preview/features/direct-boot.jd
@@ -0,0 +1,180 @@
+page.title=ダイレクト ブート
+page.keywords=preview,sdk,direct boot
+page.tags=androidn
+
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+  <h2>このドキュメントの内容</h2>
+  <ol>
+    <li><a href="#run">ダイレクト ブート中に実行するためのアクセスを要求する</a></li>
+    <li><a href="#access">暗号化端末ストレージにアクセスする</a></li>
+    <li><a href="#notification">ユーザーによる端末のロック解除の通知を受信する</a></li>
+    <li><a href="#migrating">既存のデータを移行する</a></li>
+    <li><a href="#testing">暗号化対応アプリをテストする</a></li>
+  </ol>
+</div>
+</div>
+
+<p>Android N は <i>、</i> 電源を入れたときにユーザーが端末のロックを解除していない場合、セキュリティで保護された「ダイレクト ブート」モードで実行します。
+
+この機能をサポートするため、システムで次の 2 つの保存先を使用できるようになります。</p>
+
+<ul>
+<li><i>資格情報暗号化ストレージ。</i>これはデフォルトの保存先で、ユーザーが端末のロックを解除した後にだけ使用できます。
+</li>
+<li><i>端末暗号化ストレージ。</i>この保存先は、ダイレクト ブート モード中とユーザーが端末のロックを解除した後の両方で使用できます。
+</li>
+</ul>
+
+<p>デフォルトで、ダイレクト ブート モード中はアプリは実行されません。ダイレクト ブート モード中にアプリでアクションを実行する必要がある場合、このモードで実行するアプリ コンポーネントを登録できます。
+
+ダイレクト ブート モードでアプリの実行が必要になる一般的な使用例は次のとおりです。
+</p>
+
+<ul>
+<li>アラーム クロック アプリなど、通知がスケジュールされているアプリ。
+</li>
+<li>SMS アプリなど、重要なユーザー通知を表示するアプリ。</li>
+<li>Talkback など、アクセシビリティ サービスを提供するアプリ。</li>
+</ul>
+
+<p>ダイレクト ブート モードで実行中にアプリがデータにアクセスする必要がある場合は、端末暗号化ストレージを使用します。
+端末暗号化ストレージにはキーで暗号化されたデータが保存され、端末がセキュア ブートに成功した場合にのみこのデータを使用できます。
+
+</p>
+
+<p>ユーザーの資格情報に関連付けたキーで暗号化しなければならない PIN やパスワードなどのデータには、資格情報暗号化ストレージを使用します。資格情報暗号化ストレージは、ユーザーが端末のロック解除に成功した後に使用可能になり、ユーザーが端末を再起動するまでアクセスできます。
+
+
+ユーザーが端末をロック解除した後にロック画面を有効にしても、資格情報暗号化ストレージはロックされません。
+
+</p>
+
+<h2 id="run">ダイレクト ブート中に実行するためのアクセスを要求する</h2>
+
+<p>ダイレクト ブート モード中にアプリを実行したり、端末暗号化ストレージにアクセスしたりするには、アプリ コンポーネントの登録が必要です。
+
+アプリをシステムに登録するには、コンポーネントが暗号化対応するように指定します。
+<i></i>コンポーネントが暗号化対応するよう指定するには、マニフェスト内で 
+<code>android:encryptionAware</code> 属性を true に設定します。<p>
+
+<p>暗号化対応コンポーネントを登録しておくと、端末を再起動したときにシステムから 
+<code>LOCKED_BOOT_COMPLETED</code> ブロードキャスト メッセージを受信できます。
+この時点で端末暗号化ストレージが使用できるようになり、ダイレクト ブート モード中にコンポーネントが実行しなければならないタスクを実行できます。たとえば、スケジュールしたアラームのトリガーなどが該当します。
+
+</p>
+
+<p>次のコード スニペットは、アプリのマニフェスト内で 
+{@link android.content.BroadcastReceiver} を暗号化対応として登録し、<code>LOCKED_BOOT_COMPLETED</code> のインテント フィルタを追加する方法の例を示しています。
+</p>
+
+<pre>
+&lt;receiever
+  android:encryptionAware="true" &gt;
+  ...
+  &lt;intent-filter&gt;
+    &lt;action android:name="android.intent.action.LOCKED_BOOT_COMPLETED" /&gt;
+  &lt;/intent-filter&gt;
+&lt;/receiver&gt;
+</pre>
+
+<p>ユーザーが端末のロックを解除すると、すべてのコンポーネントは端末暗号化ストレージと資格情報暗号化ストレージの両方にアクセスできます。
+</p>
+
+<h2 id="access">暗号化端末ストレージにアクセスする</h2>
+
+<p>暗号化端末ストレージにアクセスするには、
+<code>Context.createDeviceEncryptedStorageContext()</code> を呼び出して追加の
+{@link android.content.Context} インスタンスを作成します。このコンテキストで実行されたストレージ API 呼び出しはすべて、端末暗号化ストレージにアクセスします。
+次の例では、端末暗号化ストレージにアクセスして既存のアプリのデータ ファイルを開きます。
+
+</p>
+
+<pre>
+Context directBootContext = Context.createDeviceEncryptedStorageContext();
+// Access appDataFilename that lives in device encrypted storage
+FileInputStream inStream = directBootContext.openFileInput(appDataFilename);
+// Use inStream to read content...
+</pre>
+
+<p>端末暗号化ストレージは、ダイレクト ブート モード中にアクセスが必要な情報のみに使用してください。汎用的な暗号化された保存先として、端末暗号化ストレージを使用することはできません。ユーザーの個人情報や、ダイレクト ブート モード中に特に必要ではない暗号化されたデータには、資格情報暗号化ストレージを使用してください。
+
+
+
+</p>
+
+<h2 id="notification">ユーザーによる端末のロック解除の通知を受信する</h2>
+
+<p>再起動後にユーザーが端末のロックを解除すると、アプリは資格情報暗号化ストレージへのアクセスに切り替えて、ユーザーの資格情報に応じて通常のシステム サービスを使用します。
+
+</p>
+
+<p>再起動後、ユーザーが端末のロックを解除したときに通知を受信するには、実行中のコンポーネントから {@link android.content.BroadcastReceiver} を登録して、<code>ACTION_USER_UNLOCKED</code> メッセージをリッスンするようにします。
+
+または、既存の {@link android.content.Intent#ACTION_BOOT_COMPLETED
+ACTION_BOOT_COMPLETED} メッセージを受信することもできます。このメッセージは、端末が起動してユーザーが端末のロックを解除したことを示すようになりました。
+
+</p>
+
+<p>
+<code>UserManager.isUserUnlocked()</code> を呼び出して、ユーザーが端末のロックを解除したかを直接問い合わせることもできます。</p>
+
+<h2 id="migrating">既存のデータを移行する</h2>
+
+<p>ユーザーが端末をアップデートしてダイレクト ブート モードを使用できるようになると、既存のデータを端末暗号化ストレージに移行しなければならない場合があります。
+
+<code>Context.migrateSharedPreferencesFrom()</code> および 
+<code>Context.migrateDatabaseFrom()</code> を使用すると、設定およびデータベースのデータを資格情報暗号化ストレージと端末暗号化ストレージ間で移行できます。
+</p>
+
+<p>どのデータを資格情報暗号化ストレージから端末暗号化ストレージに移行するかは、慎重に判断してください。
+パスワードや認証トークンなどのユーザーの個人情報は、端末暗号化ストレージに移行しないでください。
+
+場合によっては、この 2 つの暗号化された保存先に、データセットを振り分けて管理する必要があります。
+</p>
+
+<h2 id="testing">暗号化対応アプリをテストする</h2>
+
+<p>新しいダイレクト ブート モードを使用して、暗号化対応アプリをテストしてみましょう。ダイレクト ブートを有効にする方法は 2 つあります。
+</p>
+
+<p class="caution"><strong>警告:</strong>ダイレクト ブートを有効にすると、端末上のすべてのユーザーデータが消去されます。
+</p>
+
+<p>Android N がインストールされたサポート対象端末では、次のいずれかの方法を使用してダイレクト ブートを有効にします。
+</p>
+
+<ul>
+<li>端末で、<b>[Developer options]</b> がまだ有効になっていない場合は、次の手順で有効にします。<b>[Settings] &gt; [About phone]</b> で <b>[Build number]</b> を 7 回タップします。
+
+[Developer options] 画面が表示されたら、<b>[Settings] &gt; [Developer options]</b> で <b>[Convert to file encryption]</b> を選択します。
+
+</li>
+<li>次の adb shell コマンドを使用して、ダイレクト ブート モードを有効にします。
+<pre class="no-pretty-print">
+$ adb reboot-bootloader
+$ fastboot --wipe-and-use-fbe
+</pre>
+</li>
+</ul>
+
+<p>テスト端末でモードの切り替えが必要な場合、エミュレーションされたダイレクト ブート モードも使用できます。
+データが失われるおそれがありますので、EMULATED モードは開発中にのみ使用してください。
+エミュレーションされたダイレクト ブート モードを有効にするには、端末でロック パターンを設定します。ロック パターンの設定時にセキュリティで保護されたスタートアップ画面について確認メッセージが表示された場合は、[No thanks] を選択します。次に、次の adb shell コマンドを使用します。
+
+
+</p>
+
+<pre class="no-pretty-print">
+$ adb shell sm set-emulate-fbe true
+</pre>
+
+<p>エミュレーションされたダイレクト ブート モードを無効にするには、次のコマンドを使用します。</p>
+
+<pre class="no-pretty-print">
+$ adb shell sm set-emulate-fbe false
+</pre>
+
+<p>これらのコマンドを使用すると、端末が再起動されます。</p>
diff --git a/docs/html-intl/intl/ja/preview/features/icu4j-framework.jd b/docs/html-intl/intl/ja/preview/features/icu4j-framework.jd
new file mode 100644
index 0000000..791a67f
--- /dev/null
+++ b/docs/html-intl/intl/ja/preview/features/icu4j-framework.jd
@@ -0,0 +1,158 @@
+page.title=ICU4J Android フレームワーク API
+
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+<h2>このドキュメントの内容:</h2>
+<ol>
+    <li><a href="#relation">ICU4J との関係</a></li>
+    <li><a href="#migration">ICU4J から android.icu API に移行する</a></li>
+    <li><a href="#licence">ライセンス</a></li>
+</ol>
+
+<h2>関連ドキュメント</h2>
+<ol>
+  <li>
+    <a class="external-link" href="http://userguide.icu-project.org">ICU4J のドキュメント</a>
+  </li>
+
+  <li>
+    <a class="external-link" href="http://site.icu-project.org/#TOC-What-is-ICU-">ICU4J でサポートされている最新の標準</a>
+
+  </li>
+</ol>
+</div>
+</div>
+
+<p>
+  ICU4J は幅広く使用されている、オープン ソースの Java ライブラリのセットで、Unicode のほか、ソフトウェア アプリケーションのグローバル化のサポートを提供しています。
+Android N では、アプリのデベロッパー向けの Android フレームワーク内で ICU4J API のサブセットを公開しており、{@code android.icu} パッケージ内で使用できます。
+
+これらの API は、端末上のローカライズ データを使用します。
+そのため、ICU4J ライブラリを APK にコンパイルせず、フレームワーク内にあるライブラリを呼び出せばよいので、APK のフットプリントを削減できます
+
+(この場合、Android N より前のバージョンの Android を実行しているユーザーも、ICU4J ライブラリを含むバージョンのアプリをダウンロードできるようにするには、<a href="{@docRoot}google/play/publishing/multiple-apks.html">APK を複数のバージョン</a>用意する必要があります)。
+
+
+
+</p>
+
+<p>
+  ここではまず、これらのライブラリをサポートするために必要な最低限の Android API レベルについて基本的な情報を説明します。
+次に、Android 固有の ICU4J の実装に必要な情報を説明します。
+最後に、Android フレームワーク内で ICU4J API を使用する方法について説明します。
+
+</p>
+
+<h2 id="relation">ICU4J との関係</h2>
+
+<p>
+  Android N では、<code>com.ibm.icu</code> ではなく 
+<code>android.icu</code> パッケージを介して ICU4J API のサブセットを公開しています。Android フレームワークでは、さまざまな理由により ICU4J API を公開しないという選択も考えられます。たとえば、Android N で廃止された API を公開しないため、または ICU チームからまだ安定版の発表がないため、などの理由があります。
+
+
+
+ICU チームが今後 API を廃止した場合、Android でも廃止と見なすことになりますが、引き続きそれらの API を含める予定です。
+
+</p>
+
+<p class="table-caption"><strong>表 1.</strong> Android N で使用される ICU および CLDR のバージョン
+</p>
+<table>
+<tr>
+<th>Android API レベル</th>
+<th>ICU バージョン</th>
+<th>CLDR バージョン</th>
+</tr>
+<tr>
+<td>Android N</td>
+<td>56</td>
+<td>28</td>
+</tr>
+</table>
+
+<p>いくつか注意事項があります。</p>
+
+<ul>
+<li>ICU4J Android フレームワーク API には、すべての ICU4J API が含まれているわけではありません。</li>
+<li>NDK デベロッパーは、Android ICU4C がサポートされていない点にご注意ください。</li>
+<li>Android フレームワーク内の API は、Android の<a href="{@docRoot}guide/topics/resources/localization.html">リソースを使用したローカライズ</a>に対するサポートに代わるものではありません。
+
+</li>
+</ul>
+
+<h2 id="migration">com.ibm.icu から android.icu パッケージに移行する</h2>
+
+<p>
+  アプリ内で既に ICU4J API を使用しており、
+<code>android.icu</code> API がその要件を満たしている場合、このフレームワーク API に移行するには、Java のインポートを <code>com.ibm.icu</code> から <code>android.icu</code> に変更します。
+
+次に、APK から ICU4J ファイルのコピーを削除します。
+
+</p>
+
+<p class="note">
+  <b>注:</b> ICU4J フレームワーク API では、名前空間に {@code com.ibm.icu} ではなく{@code android.icu} を使用します。
+これは、独自の {@code com.ibm.icu} ライブラリを含む APK で名前空間が競合しないようにするためです。
+
+</p>
+
+<h3 id="migrate-from-android">
+  その他の Android SDK API から android.icu API に移行する
+</h3>
+
+<p>
+  <code>java</code> および <code>android</code> パッケージには、ICU4J にあるクラスと同等のクラスが一部含まれています。
+しかし多くの場合、ICU4J では、より幅広い標準と言語のサポートを提供しています。
+
+</p>
+<p>次に、すぐに利用できる例をいくつか示します。</p>
+<table>
+<tr>
+<th>クラス</th>
+<th>代替クラス</th>
+</tr>
+<tr>
+<td><code>java.lang.Character</code> </td>
+<td><code>android.icu.lang.UCharacter</code> </td>
+</tr>
+<tr>
+<td><code>java.text.BreakIterator</code> </td>
+<td><code>android.icu.text.BreakIterator</code> </td>
+</tr>
+<tr>
+<td><code>java.text.DecimalFormat</code> </td>
+<td><code>android.icu.text.DecimalFormat</code> </td>
+</tr>
+<tr>
+<td><code>java.util.Calendar</code></td>
+<td>
+<code>android.icu.util.Calendar</code></td>
+</tr>
+<tr>
+<td><code>android.text.BidiFormatter</code>
+ </td>
+<td><code>android.icu.text.Bidi</code>
+ </td>
+</tr>
+<tr>
+<td><code>android.text.format.DateFormat</code>
+ </td>
+<td><code>android.icu.text.DateFormat</code>
+ </td>
+</tr>
+<tr>
+<td><code>android.text.format.DateUtils</code> </td>
+<td><code>android.icu.text.DateFormat</code>
+<code>android.icu.text.RelativeDateTimeFormatter</code>
+</td>
+</tr>
+</table>
+
+<h2 id="licence">ライセンス</h2>
+
+<p>
+  ICU4J は ICU ライセンスでリリースされています。詳細については、<a class="external-link" href="http://userguide.icu-project.org/icufaq#TOC-How-is-the-ICU-licensed-">ICU User Guide</a> をご覧ください。
+
+</p>
diff --git a/docs/html-intl/intl/ja/preview/features/multi-window.jd b/docs/html-intl/intl/ja/preview/features/multi-window.jd
new file mode 100644
index 0000000..2d54178
--- /dev/null
+++ b/docs/html-intl/intl/ja/preview/features/multi-window.jd
@@ -0,0 +1,582 @@
+page.title=マルチ ウィンドウのサポート
+page.metaDescription=複数のアプリを同時に表示するための Android N の新しいサポート。
+page.keywords="multi-window", "android N", "split screen", "free-form"
+
+@jd:body
+
+<div id="qv-wrapper">
+  <div id="qv">
+    <h2>このドキュメントの内容</h2>
+      <ol>
+        <li><a href="#overview">概要</a></li>
+        <li><a href="#lifecycle">マルチ ウィンドウ ライフサイクル</a></li>
+        <li><a href="#configuring">マルチ ウィンドウ モード向けアプリを構成する</a>
+</li>
+        <li><a href="#running">マルチ ウィンドウ モードでアプリを実行する</a></li>
+        <li><a href="#testing">アプリのマルチ ウィンドウ サポートをテストする</a></li>
+      </ol>
+    <h2>関連ドキュメント</h2>
+      <ol>
+        <li><a class="external-link" href="https://github.com/googlesamples/android-MultiWindowPlayground">マルチ ウィンドウ Playground のサンプルアプリ</a>
+</li>
+      </ol>
+  </div>
+</div>
+
+<p>
+  Android N には、複数のアプリを同時に表示するためのサポートが追加されています。
+ハンドヘルド端末で、分割画面モードにして、2 つのアプリを並べて実行したり、重ねて表示したりできます。<em></em>
+TV デバイスで、アプリがピクチャ イン ピクチャ モードでビデオを再生しているときに、ユーザーは別のアプリを操作できます。<em></em>
+
+
+</p>
+
+<p>
+  N Preview SDK でアプリをビルドする場合、アプリがマルチ ウィンドウ ディスプレイを処理をする方法を設定できます。
+たとえば、アクティビティの最小許容ディメンションを指定できます。
+また、アプリに対してマルチ ウィンドウ ディスプレイを無効にし、アプリを全画面モードのみで表示することもできます。
+
+
+</p>
+
+<h2 id="overview">概要</h2>
+
+<p>
+  Android N では、複数のアプリが画面を同時に共有できます。たとえば、ユーザーは画面を分割し、ウェブページを左側の画面に表示しながら、右側の画面でメールを作成することができます。
+
+ユーザー エクスペリエンスは端末によって異なります。
+
+</p>
+
+<ul>
+  <li>Android N を実行しているハンドヘルド端末は、分割画面モードに対応しています。
+このモードでは、画面で 2 つのアプリが実行され、これらのアプリを並べて、または重ねて表示できます。
+ユーザーは、2 つのアプリを分離している分割線をドラッグして、1 つのアプリを拡大し、もう 1 つのアプリを縮小することができます。
+
+  </li>
+
+  <li>Android N を実行している Nexus Player で、アプリを<a href="picture-in-picture.html">ピクチャ イン ピクチャ モード</a>にすると、アプリにコンテンツを表示したまま、ユーザーは他のアプリをブラウジングまたは操作することができます。
+
+
+
+  </li>
+
+  <li>より大きい画面の端末のメーカーは、ユーザーが各アクティビティのサイズを自由に変更できるフリーフォーム モードを有効にすることもできます。
+メーカーがこの機能を有効にした場合、端末では、分割画面モードに加えて、フリーフォーム モードが利用できます。
+
+
+  </li>
+</ul>
+
+<img src="{@docRoot}preview/images/mw-splitscreen.png" alt="" width="650" srcset="{@docRoot}preview/images/mw-splitscreen.png 1x,
+    {@docRoot}preview/images/mw-splitscreen_2x.png 2x," id="img-split-screen" />
+<p class="img-caption">
+  <strong>図 1.</strong> 分割画面モードで並べて実行されている 2 つのアプリ。
+</p>
+
+<p>
+  ユーザーは、次の方法でマルチ ウィンドウ モードに切り替えることができます。
+</p>
+
+<ul>
+  <li>ユーザーは<a href="{@docRoot}guide/components/recents.html">オーバービュー画面</a>を開いているときに、アクティビティのタイトルを長押ししてから、そのアクティビティを画面の強調表示された部分にドラッグすることにより、アクティビティをマルチ ウィンドウ モードにすることができます。
+
+
+
+  </li>
+
+  <li>ユーザーがオーバービュー ボタンを長押しすると、現在のアクティビティがマルチ ウィンドウ モードになり、オーバービュー画面が開くので、ユーザーは、画面で共有する別のアクティビティを選択できるようになります。
+
+
+  </li>
+</ul>
+
+<p>
+  ユーザーは、複数のアクティビティが画面を共有しているときに、データを 1 つのアクティビティから別のアクティビティに<a href="{@docRoot}guide/topics/ui/drag-drop.html">ドラッグ アンド ドロップ</a>できます
+
+(以前は、単一のアクティビティ内でのみデータをドラッグ アンド ドロップできました)。
+
+</p>
+
+<h2 id="lifecycle">マルチ ウィンドウ ライフサイクル</h2>
+
+<p>
+  マルチ ウィンドウ モードは、<a href="{@docRoot}training/basics/activity-lifecycle/index.html">アクティビティのライフサイクル</a>を変更しません。
+
+</p>
+
+<p>
+  マルチ ウィンドウ モードでは、ユーザーが直前に操作したアクティビティのみが任意の時点でアクティブになります。
+このアクティビティは、トップ レベルにあると見なされます。<em></em>
+  他のすべてのアクティビティは、表示されていても一時停止状態になっています。
+  ただし、一時停止状態ではあるが、表示されているこれらのアクティビティには、表示されていないアクティビティよりも高い優先度が付与されます。
+ユーザーが一時停止状態のアクティビティのいずれかを操作した場合、そのアクティビティが再開され、前のトップ レベルのアクティビティが一時停止します。
+
+
+</p>
+
+<p class="note">
+  <strong>注:</strong> マルチ ウィンドウ モードでは、アプリが一時停止状態になっても、そのアプリを表示したままにすることができます。
+アプリは、一時停止していても、アクティビティを続行する必用がある場合があります。
+たとえば、一時停止モードになっているが、表示されているビデオ再生アプリは、ビデオの表示を継続する必要があります。
+そのため、ビデオを再生するアクティビティが {@link android.app.Activity#onPause onPause()} ハンドラでビデオを一時停止しないようにすることをお勧めします。
+
+<em></em>
+  その代わり、これらのアクティビティは {@link android.app.Activity#onStop
+  onStop()} でビデオを一時停止し、{@link android.app.Activity#onStart
+  onStart()} でビデオの再生を再開する必要があります。
+</p>
+
+<p>
+  <a href="{@docRoot}guide/topics/resources/runtime-changes.html">実行時の変更の処理</a>で指定したように、ユーザーがアプリをマルチ ウィンドウ モードにすると、アクティビティに構成の変更が通知されます。
+
+基本的に、この構成の変更は、端末が縦表示から横表示に切り替えられたことをアプリに通知する場合と同じ影響(端末のディメンションが変更された場合を除いて)をアクティビティのライフサイクルに及ぼします。
+
+
+<a href="{@docRoot}guide/topics/resources/runtime-changes.html">実行時の変更の処理</a>で説明したように、アクティビティは構成の変更を処理することができます。または、システムによってアクティビティを破棄し、新しいディメンションでアクティビティを再作成することもできます。
+
+
+
+</p>
+
+<p>
+  ユーザーがウィンドウのサイズを変更して、高さや幅を拡大した場合、ユーザー アクションに一致するようにアクティビティのサイズが変更され、必要に応じて、<a href="{@docRoot}guide/topics/resources/runtime-changes.html">実行時の変更</a>が発行されます。
+
+アプリで新しく表示された領域を描画するまでに時間がかかる場合、{@link
+  android.R.attr#windowBackground windowBackground} 属性またはデフォルトの 
+<code>windowBackgroundFallback</code> システム属性によって指定された色でこれらの領域が一時的に塗りつぶされます。
+
+</p>
+
+<h2 id="configuring">マルチ ウィンドウ モード向けアプリを構成する</h2>
+
+<p>
+  アプリが Android N をターゲットにしている場合は、アプリのアクティビティがマルチ ウィンドウ ディスプレイをサポートする方法や、このサポートを行うかどうかを決めることができます。
+サイズとレイアウトを制御するための属性をマニフェストに設定できます。
+
+  ルート アクティビティ属性の設定は、タスクスタック内のすべてのアクティビティに適用されます。
+
+</p>
+
+<p class="note">
+  <strong>注</strong>: Android N より前の SDK バージョンでマルチ オリエンテーション アプリをビルドして、そのアプリをマルチ ウィンドウ モードで使用する場合は、アプリのサイズが強制的に変更されます。
+
+アプリに予想外の動作が発生する場合があることをユーザーに警告するダイアログ ボックスが表示されます。
+システムは、向きが固定されたアプリのサイズを変更しません。ユーザーがマルチ ウィンドウ モードで向きが固定されたアプリを開こうとすると、そのアプリが全画面で表示されます。<em></em>
+
+
+
+</p>
+
+<h4 id="resizeableActivity">android:resizeableActivity</h4>
+<p>
+  マルチ ウィンドウ ディスプレイを有効または無効にするには、この属性をマニフェストの <code>&lt;activity&gt;</code> ノードまたは 
+<code>&lt;application&gt;</code> ノードに設定します。
+
+</p>
+
+<pre>
+android:resizeableActivity=["true" | "false"]
+</pre>
+
+<p>
+  この属性が true に設定されている場合、アクティビティを分割画面モードまたはフリーフォーム モードで起動できます。
+この属性が false に設定されている場合、アクティビティはマルチ ウィンドウ モードをサポートしません。
+この値が false のとき、ユーザーがアクティビティをマルチ ウィンドウ モードで起動しようとすると、アクティビティが全画面で表示されます。
+
+
+</p>
+
+<p>
+  アプリが Android N をターゲットにしているが、この属性の値が指定されていない場合、属性の値がデフォルトの true になります。
+
+</p>
+
+<h4 id="supportsPictureInPicture">android:supportsPictureInPicture</h4>
+
+<p>
+  この属性をマニフェストの <code>&lt;activity&gt;</code> ノードに設定すると、アクティビティがピクチャ イン ピクチャ ディスプレイをサポートするかどうかを示すことができます。
+<code>android:resizeableActivity</code> が false の場合、この属性は無視されます。
+
+</p>
+
+<pre>
+android:supportsPictureInPicture=["true" | "false"]
+</pre>
+
+<h3 id="layout">レイアウト属性</h3>
+
+<p>
+  Android N では、<code>&lt;layout&gt;</code> マニフェスト要素により、マルチ ウィンドウ モードでのアクティビティの動作に影響を及ぼすいくつかの属性がサポートされています。
+
+
+</p>
+
+<dl>
+  <dt>
+    <code>android:defaultWidth</code>
+  </dt>
+
+  <dd>
+    フリーフォーム モードで起動されたときのアクティビティのデフォルトの幅です。
+  </dd>
+
+  <dt>
+    <code>android:defaultHeight</code>
+  </dt>
+
+  <dd>
+    フリーフォーム モードで起動されたときのアクティビティのデフォルトの高さです。
+  </dd>
+
+  <dt>
+    <code>android:gravity</code>
+  </dt>
+
+  <dd>
+    フリーフォーム モードで起動されたときのアクティビティの初期配置です。適切な値については、
+{@link android.view.Gravity} のリファレンスをご覧ください。
+  </dd>
+
+  <dt>
+    <code>android:minimalSize</code>
+  </dt>
+
+  <dd>
+    分割画面モードおよびフリーフォーム モードでのアクティビティの最小の高さと幅です。
+ユーザーが分割画面モードの分割線を移動して、アクティビティを指定された最小ディメンションよりも小さくすると、アクティビティはユーザーがリクエストしたサイズにトリミングされます。
+
+
+  </dd>
+</dl>
+
+<p>
+  たとえば、次のコードは、アクティビティがフリーフォーム モードで表示されているときに、アクティビティのデフォルトのサイズと位置、およびその最小サイズを指定する方法を示しています。
+
+
+</p>
+
+<pre>
+&lt;activity android:name=".MyActivity"&gt;
+    &lt;layout android:defaultHeight="500dp"
+          android:defaultWidth="600dp"
+          android:gravity="top|end"
+          android:minimalSize="450dp" /&gt;
+&lt;/activity&gt;
+</pre>
+
+<h2 id="running">マルチ ウィンドウ モードでアプリを実行する</h2>
+
+<p>
+  Android N では、マルチ ウィンドウ モードで実行できるアプリをサポートするための新しい機能が導入されています。
+
+</p>
+
+<h3 id="disabled-features">マルチ ウィンドウ モードで無効になる機能</h3>
+
+<p>
+  端末がマルチ ウィンドウ モードになっている場合、特定の機能は、端末の画面を他のアクティビティやアプリと共有する場合があるアクティビティに対して機能しないため、これらの機能は無効なるか、無視されます。
+
+これらの機能には、次のものが含まれます。
+
+<ul>
+  <li><a href="{@docRoot}training/system-ui/index.html">システム UI</a> の一部のカスタマイズ オプションは無効になります。たとえば、アプリが全画面モードで実行されていない場合、アプリのステータスバーを非表示にできません。
+
+
+  </li>
+
+  <li>システムは、<code><a href=
+  "{@docRoot}guide/topics/manifest/activity-element.html#screen"
+  >android:screenOrientation</a></code> 属性に加えられた変更を無視します。
+  </li>
+</ul>
+
+<h3 id="change-notification">マルチ ウィンドウの変更通知とクエリ</h3>
+
+<p>
+  マルチ ウィンドウ ディスプレイをサポートするために、次の新しいメソッドが {@link android.app.Activity} クラスに追加されています。
+各メソッドの詳細については、<a href="{@docRoot}preview/setup-sdk.html#docs-dl">N プレビュー SDK リファレンス</a>をご覧ください。
+
+</p>
+
+<dl>
+  <dt>
+    <code>Activity.inMultiWindow()</code>
+  </dt>
+
+  <dd>
+    アクティビティがマルチ ウィンドウ モードで実行されているかどうかを判別するために呼び出します。
+  </dd>
+
+  <dt>
+    <code>Activity.inPictureInPicture()</code>
+  </dt>
+
+  <dd>
+    アクティビティがピクチャ イン ピクチャ モードで実行されているかどうかを判別するために呼び出します。
+
+    <p class="note">
+      <strong>注</strong>: ピクチャ イン ピクチャ モードは、マルチ ウィンドウ モードの特別な形態です。
+<code>myActivity.inPictureInPicture()</code> が true を返す場合は、<code>myActivity.inMultiWindow()</code> も true を返します。
+
+
+    </p>
+  </dd>
+
+  <dt>
+    <code>Activity.onMultiWindowChanged()</code>
+  </dt>
+
+  <dd>
+    アクティビティがマルチ ウィンドウ モードになるか、マルチ ウィンドウ モードではなくなると、常にこのメソッドが呼び出されます。
+アクティビティがマルチ ウィンドウ モードになると、このメソッドに true 値が渡され、アクティビティがマルチ ウィンドウ モードではなくなると、このメソッドに false 値が渡されます。
+
+
+  </dd>
+
+  <dt>
+    <code>Activity.onPictureInPictureChanged()</code>
+  </dt>
+
+  <dd>
+    アクティビティがピクチャ イン ピクチャ モードになるか、ピクチャ イン ピクチャ モードではなくなると、常にこのメソッドが呼び出されます。
+アクティビティがピクチャ イン ピクチャ モードになると、このメソッドに true 値が渡され、アクティビティがピクチャ イン ピクチャ モードではなくなると、このメソッドに false 値が渡されます。
+
+
+  </dd>
+</dl>
+
+<p>
+  また、これらの各メソッドの {@link android.app.Fragment} バージョンがあります。たとえば、<code>Fragment.inMultiWindow()</code> です。
+
+</p>
+
+<h3 id="entering-pip">ピクチャ イン ピクチャ モードにする</h3>
+
+<p>
+  アクティビティをピクチャ イン ピクチャ モードにするには、新しいメソッド 
+<code>Activity.enterPictureInPicture()</code> を呼び出します。端末がピクチャ イン ピクチャ モードをサポートしない場合、このメソッドの効果はありません。
+詳細については、<a href="picture-in-picture.html">ピクチャ イン ピクチャ</a>に関するドキュメントをご覧ください。
+
+</p>
+
+<h3 id="launch">マルチ ウィンドウ モードで新しいアクティビティを起動する</h3>
+
+<p>
+  新しいアクティビティを起動するときに、可能であれば、新しいアクティビティを現在のアクティビティの隣に表示する必用があるかどうかをシステムに示すことができます。
+そうするには、フラグ 
+<code>Intent.FLAG_ACTIVITY_LAUNCH_TO_ADJACENT</code> を使用します。
+このフラグを渡すと、次の動作がリクエストされます。
+
+</p>
+
+<ul>
+  <li>端末が分割画面モードになっている場合、システムは、起動しているアクティビティの隣に新しいアクティビティを作成しようとするので、これらの 2 つのアクティビティが画面を共有します。
+
+システムでは、この操作の実行が保証されるわけではありませんが、可能であれば、アクティビティが並べて表示されます。
+
+  </li>
+
+  <li>端末が分割画面モードではない場合、このフラグの効果はありません。
+  </li>
+</ul>
+
+<p>
+  端末がフリーフォーム モードになっている場合、新しいアクティビティを起動するときに、
+<code>ActivityOptions.setLaunchBounds()</code> を呼び出すことにより、新しいアクティビティのディメンションと画面上での位置を指定することができます。
+端末がマルチ ウィンドウ モードではない場合、このメソッドの効果はありません。
+
+</p>
+
+<p class="note">
+  <strong>注</strong>: タスクスタック内でアクティビティを起動すると、画面上のアクティビティが起動したアクティビティに置き換えられ、すべてのマルチ ウィンドウ プロパティが継承されます。
+
+マルチ ウィンドウ モードで新しいアクティビティを別個の画面として起動する場合は、新しいアクティビティを新しいタスクスタックで起動する必要があります。
+
+</p>
+
+<h3 id="dnd">ドラッグ アンド ドロップのサポート</h3>
+
+<p>
+  ユーザーは、2 つのアクティビティが画面を共有しているときに、データを 1 つのアクティビティから別のアクティビティに<a href="{@docRoot}guide/topics/ui/drag-drop.html">ドラッグ アンド ドロップ</a>できます
+
+(以前は、単一のアクティビティ内でのみデータをドラッグ アンド ドロップできました)。
+そのため、アプリがドラッグ アンド ドロップをサポートしていない場合は、ドラッグ アンド ドロップ機能をアプリに追加する必要があります。
+
+</p>
+
+<p>
+  N プレビュー SDK では、異なるアプリ間のドラッグ アンド ドロップをサポートするために、<a href="{@docRoot}reference/android/view/package-summary.html"><code>android.view</code></a> パッケージが拡張されています。
+次のクラスとメソッドの詳細については、<a href="{@docRoot}preview/setup-sdk.html#docs-dl">N プレビュー SDK リファレンス</a>をご覧ください。
+
+
+</p>
+
+<dl>
+  <dt>
+    <code>android.view.DropPermissions</code>
+  </dt>
+
+  <dd>
+    ドロップを受け取るアプリに付与されるパーミッションの指定を処理するトークン オブジェクトです。
+
+  </dd>
+
+  <dt>
+    <code>View.startDragAndDrop()</code>
+  </dt>
+
+  <dd>
+    {@link android.view.View#startDrag View.startDrag()} の新しいエイリアスです。異なるアクティビティ間のドラッグ アンド ドロップを有効にするには、新しいフラグ 
+<code>View.DRAG_FLAG_GLOBAL</code> を渡します。
+URI パーミッションを受け取る側のアクティビティに付与する必要がある場合、必要に応じて、新しいフラグ 
+<code>View.DRAG_FLAG_GLOBAL_URI_READ</code> または 
+<code>View.DRAG_FLAG_GLOBAL_URI_WRITE</code> を渡します。
+
+  </dd>
+
+  <dt>
+    <code>View.cancelDragAndDrop()</code>
+  </dt>
+
+  <dd>
+    実行中のドラッグ操作をキャンセルします。ドラッグ操作を開始したアプリだけが呼び出せます。
+
+  </dd>
+
+  <dt>
+    <code>View.updateDragShadow()</code>
+  </dt>
+
+  <dd>
+    実行中のドラッグ操作のドラッグ シャドウを置き換えます。ドラッグ操作を開始したアプリだけが呼び出せます。
+
+  </dd>
+
+  <dt>
+    <code>Activity.requestDropPermissions()</code>
+  </dt>
+
+  <dd>
+    {@link android.view.DragEvent} に含まれる {@link
+    android.content.ClipData} で渡されるコンテンツ URI のパーミッションをリクエストします。
+  </dd>
+</dl>
+
+<h2 id="testing">アプリのマルチ ウィンドウ サポートをテストする</h2>
+
+<p>
+  ユーザーが Android N を実行している端末をマルチ ウィンドウ モードにしてアプリの起動を試みる場合に備えて、Android N 向けにアプリをアップデートするかどうかに関係なく、アプリがマルチ ウィンドウ モードでどのように動作するかを確認する必要があります。
+
+
+</p>
+
+<h3 id="configuring">テスト端末の構成</h3>
+
+<p>
+  Android N を端末にインストールすると、分割画面モードが自動的にサポートされます。
+
+</p>
+
+<h3 id="test-non-n">アプリが N プレビュー SDK でビルドされていない場合</h3>
+
+<p>
+  アプリが N プレビュー SDK でビルドされていないときに、ユーザーがマルチ ウィンドウ モードでそのアプリを使用しようとすると、アプリが向きの固定を宣言しない限り、アプリのサイズが強制的に変更されます。
+
+
+</p>
+
+<p>
+  アプリが向きの固定を宣言しない場合、Android N を実行している端末でアプリを起動し、アプリを分割画面モードにすることを試みる必要があります。
+
+アプリのサイズが強制的に変更されたときに、ユーザー エクスペリエンスが許容範囲内にあることを確認してください。
+
+</p>
+
+<p>
+  アプリが向きの固定を宣言する場合、アプリをマルチ ウィンドウ モードにすることを試みる必要があります。
+アプリをマルチ ウィンドウ モードにすることを試みたとき、アプリが全画面モードのままであることを確認してください。
+
+</p>
+
+<h3 id="test-mw">マルチ ウィンドウ モードをサポートする場合</h3>
+
+<p>
+  アプリが N プレビュー SDK でビルドされていて、マルチ ウィンドウ モードが無効になっていない場合、分割画面モードとフリーフォーム モードの両方で次の動作を確認してください。
+
+
+</p>
+
+<ul>
+  <li>アプリを全画面モードで起動してから、オーバービュー ボタンを長押しして、マルチ ウィンドウ モードに切り替えます。
+モードが適切に切り替わることを確認します。
+  </li>
+
+  <li>アプリをマルチ ウィンドウ モードで直接起動し、アプリが適切に起動することを確認します。
+オーバービュー ボタンを押すと、アプリをマルチ ウィンドウ モードで起動できます。次に、アプリのタイトルバーを長押しし、アプリを画面上の強調表示された領域のいずれかにドラッグします。
+
+
+  </li>
+
+  <li>分割画面モードで分割線をドラッグして、アプリのサイズを変更します。
+  アプリがクラッシュせずに、アプリのサイズが変更され、必要な UI 要素が表示されることを確認します。
+
+  </li>
+
+  <li>アプリの最小ディメンションを指定している場合、アプリのサイズをそれらのディメンション以下にすることを試みてください。
+アプリのサイズを指定最小ディメンションよりも小さくできないことを確認してください。
+
+  </li>
+
+  <li>すべてのテストを通じて、アプリのパフォーマンスが許容範囲内にあることを確認してください。たとえば、アプリのサイズを変更した後、UI の更新に大きな遅延がないことを確認してください。
+
+
+  </li>
+</ul>
+
+<h4 id="test-checklist">チェックリストのテスト</h4>
+
+<p>
+  アプリのパフォーマンスをマルチ ウィンドウ モードで確認するには、以下の操作を試みてください。
+特に記載のない限り、分割画面モードとマルチ ウィンドウ モードの両方でこれらの操作を試みる必要があります。
+
+</p>
+
+<ul>
+  <li>マルチ ウィンドウ モードを有効にしてから無効にします。
+  </li>
+
+  <li>1 つのアプリから別のアプリに切り替えたとき、最初のアプリの動作が適切であり、表示されているが、アクティブになっていないことを確認します。
+たとえば、アプリがビデオを再生している場合、ユーザーが別のアプリを操作しているときに、アプリでビデオの再生が継続していることを確認します。
+
+
+  </li>
+
+  <li>分割画面モードで分割線を移動して、アプリの拡大および縮小を試みてください。
+アプリを並べて表示しているときと重ねて表示しているときの両方でこれらの操作を試みてください。
+アプリがクラッシュせず、基本的な機能が表示され、サイズ変更の操作に時間がかかり過ぎないことを確認します。
+
+
+  </li>
+
+  <li>続けざまにサイズ変更の操作を行います。アプリがクラッシュしたり、メモリリークが発生したりしないことを確認します。
+アプリのメモリリークをチェックする方法の詳細については、<a href="{@docRoot}tools/debugging/debugging-memory.html">RAM の使用状況を調査する</a>をご覧ください。
+
+
+  </li>
+
+  <li>さまざまなウィンドウ構成でアプリを通常の方法で使用し、アプリが適切に動作することを確認します。
+テキストが読み取り可能であり、UI 要素が操作に支障をきたすほど小さくないことを確認します。
+
+  </li>
+</ul>
+
+<h3 id="test-disabled-mw">マルチ ウィンドウのサポートを無効にしている場合</h3>
+
+<p>
+  
+<code>android:resizableActivity="false"</code> を設定して、マルチ ウィンドウのサポートを無効にした場合は、Android N を実行している端末でアプリを起動し、アプリをフリーフォーム モードおよび分割画面モードにすることを試みる必要があります。
+
+アプリをマルチ ウィンドウ モードにすることを試みたとき、アプリが全画面モードのままであることを確認してください。
+
+</p>
diff --git a/docs/html-intl/intl/ja/preview/features/multilingual-support.jd b/docs/html-intl/intl/ja/preview/features/multilingual-support.jd
new file mode 100644
index 0000000..b84ac60
--- /dev/null
+++ b/docs/html-intl/intl/ja/preview/features/multilingual-support.jd
@@ -0,0 +1,214 @@
+page.title=言語とロケール
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+<h2>このドキュメントの内容:</h2>
+<ol>
+	  <li><a href="#preN">言語リソースの解決における課題</a></li>
+    <li><a href="#postN">リソース解決方針の改善</a></li>
+    <li><a href="#design">追加のロケールをサポートするためのアプリ設計
+</a></li>
+
+</ol>
+
+</div>
+</div>
+
+<p>Android N では、複数言語のユーザーのサポートが強化されており、設定で複数のロケールを選択できます。
+Android N ではこの機能を提供するために、サポート対象のロケール数を大幅に拡大し、システムがリソースを解決する方法を変更しました。
+
+この新しいリソース解決方法は、より堅牢で、既存の APK との互換性を保つよう設計されていますが、予想外の動作には十分に注意してください。
+
+たとえば、アプリで目的の言語がデフォルトに設定されているかをテストする必要があります。
+また、アプリで複数の言語をサポートする場合、そのサポートが意図したとおりに機能するかを確かめてください。
+
+最後に、明示的にサポートを設計していない言語については、アプリで適切に処理する必要があります。
+</p>
+
+<p>このドキュメントでは最初に、Android N より前のバージョンのリソース解決方針について説明します。次に、Android N の改善されたリソース解決方針について説明します。
+
+最後に、増大したロケールを活用し、より多くの複数言語ユーザーをサポートする方法について説明します。
+</p>
+
+<h2 id="preN">言語リソースの解決における課題</h2>
+
+<p>Android N より前のバージョンの Android では、アプリとシステムのロケールを一致させることができない場合がありました。
+たとえば、アプリのデフォルトの言語が米国英語で、{@code es_ES} リソース ファイルでスペイン語の文字列もローカライズされていたとします。
+
+</p>
+<p>Java コードが文字列を参照したとき、次のように文字列の言語を解決していました。
+</p>
+<ul>
+<li>端末が {@code es_MX}(スペイン語 - メキシコ)に設定されていた場合、Android は {@code es_ES} リソース ファイルから文字列を読み込みます。
+</li>
+<li>端末が {@code en_AU} に設定されていた場合、Android は代わりに {@code
+en_US} を読み込みます。ユーザーがアプリでまったくサポートされていないフランス語などを選択した場合にも、システムはデフォルトの {@code en_US} を読み込みます。
+</li>
+</ul>
+
+
+<p>これらの解決の問題は、完全一致が見つからなかった場合に、ロケールの国コードが無視されることが原因で起こります。
+次に例を示します。</p>
+<p class="table-caption" id="t-resource-res">
+<strong>表 1.</strong> ロケールの完全一致がない場合のリソース解決
+</p>
+<table>
+<tbody>
+<tr>
+<th>ユーザー設定</th>
+<th>アプリのリソース</th>
+<th>リソース解決</th>
+</tr>
+<tr>
+<td>fr_CH</td>
+<td>
+デフォルト(en)<br>
+de_DE<br>
+es_ES<br>
+fr_FR<br>
+it_IT<br>
+</td>
+ <td>
+fr_CH を試行 =&gt; 失敗<br>
+fr を試行 =&gt; 失敗<br>
+デフォルト(en)を使用
+</td>
+ </tr>
+ </tbody>
+</table>
+
+
+<p>この例では、システムはユーザーが英語を理解できるかどうかを認識せず、英語の文字列を表示します。
+この動作は現在、ごく一般的です。
+Android N では、このような状況が大幅に削減されるはずです。
+</p>
+
+<h2 id="postN">リソース解決方針の改善</h2>
+<p>Android N は、より堅牢なリソース解決を導入しており、自動的に適切な代替言語を見つけます。
+ただし、解決を迅速化し保守性を向上させるには、最も一般的な親言語でリソースを保存する必要があります。
+
+ たとえば、これまで {@code es-US} ディレクトリにスペイン語のリソースを保存していた場合、{@code es-419} ディレクトリに移動します。ここには、ラテンアメリカのスペイン語が格納されます。
+
+ 同様に {@code en-GB} という名前のフォルダにリソースを保存している場合、そのフォルダの名前を {@code en-001}(国際英語)に変更します。<code>en-GB</code> 文字列の最も一般的な親言語は {@code en-001} であるためです。
+
+
+ 次の例では、このような対応がリソース解決のパフォーマンスと信頼性を向上する根拠について説明します。
+</p>
+
+<h3>リソース解決の例</h3>
+
+<p>Android N では、<strong>表 1</strong> で説明した例の解決方法が異なります。
+</p>
+
+<p class="table-caption" id="t-improved-res">
+<strong>表 2.</strong> ロケールの完全一致が存在しない場合の改善された解決方針
+</p>
+<table>
+<tr>
+<th>ユーザー設定</th>
+<th>アプリのリソース</th>
+<th>リソース解決</th>
+</tr>
+<tr>
+<td><ol>
+<li> fr_CH</li>
+</ol>
+</td>
+<td>
+デフォルト(en)<br>
+de_DE<br>
+es_ES<br>
+fr_FR<br>
+it_IT<br>
+</td>
+<td>
+fr_CH を試行 =&gt; 失敗<br>
+fr を試行 =&gt; 失敗<br>
+fr の子言語を試行 =&gt; fr_FR<br>
+fr_FR を使用
+</td>
+</tr>
+
+</table>
+
+
+<p>これで、ユーザーは英語ではなくフランス語のリソースを利用できます。この例は、フランス語の文字列を Android N の {@code fr_FR} ではなく {@code fr} に保存すべき理由も示しています。これが、最も近い親言語と一致させ、迅速に解決し、予測しやすくするための対策になります。
+
+
+</p>
+
+<p>この改善された解決ロジックに加えて、Android では、選択できるユーザー言語を増やしました。
+もう一度上記の例で説明します。今回は、追加のユーザー言語としてイタリア語が指定され、アプリはフランス語をサポートしていません。
+  </p>
+
+<p class="table-caption" id="t-2d-choice">
+<strong>表 3.</strong> アプリがユーザーの 2 番目に優先されるロケール設定のみと一致する場合のリソース解決
+</p>
+<table>
+<tr>
+<th>ユーザー設定</th>
+<th>アプリのリソース</th>
+<th>リソース解決</th>
+
+</tr>
+<tr>
+<td><ol>
+<li> fr_CH</li>
+<li> it_CH</li>
+</ol>
+</td>
+<td>
+デフォルト(en)<br>
+de_DE<br>
+es_ES<br>
+it_IT<br>
+</td>
+<td>
+fr_CH を試行 =&gt; 失敗<br>
+fr を試行 =&gt; 失敗<br>
+fr の子を試行 =&gt; 失敗<br>
+it_CH を試行 =&gt; 失敗<br>
+it を試行 =&gt; 失敗<br>
+it の子言語を試行 =&gt; it_IT<br>
+it_IT を使用
+</td>
+
+</tr>
+
+</table>
+<p>アプリでフランス語をサポートしていなくても、ユーザーが理解できる言語が使用されます。
+</p>
+
+
+<h2 id="design">追加のロケールをサポートするためのアプリ設計</h2>
+<h3>LocaleList API</h3>
+
+<p>Android N では、新しい API {@code LocaleList.GetDefault()} が加わりました。これにより、アプリは直接、ユーザーが指定した言語のリストを問い合わせることができます。
+この API を使用すると、アプリの動作がさらに洗練され、コンテンツの表示がより最適化されます。
+
+たとえば検索で、ユーザーの設定に基づいて複数の言語で結果を表示できます。
+ブラウザ アプリは、ユーザーが理解できる言語の翻訳ページを表示することがなくなり、キーボード アプリは、自動的に最適なレイアウトを有効にすることができます。
+
+ </p>
+
+<h3>フォーマッタ</h3>
+
+<p>Android 6.0(API レベル 23)までは、Android は多くの一般的な言語(en、es、ar、fr、ru)に対して 1 つか 2 つのロケールのみをサポートしていました。
+
+各言語にはわずかなバリエーションしかなかったため、アプリはリソース ファイルでハードコーディングされた文字列として数字や日付を保存し、処理することができました。
+
+しかし Android で幅広いロケールのセットがサポートされるようになったため、日付、時刻、通貨などの情報は、1 つのロケール内でも形式が大幅に異なる場合があります。
+
+
+形式をハードコーディングすると、エンドユーザーが混乱するおそれがあります。
+したがって、Android N で開発するときは、数字や日付の文字列をハードコーディングせず、必ずフォーマッタを使用してください。
+</p>
+
+<p>その良い例がアラビア語です。アラビア語のロケールのサポートは {@code ar_EG} の 1 つだけでしたが、Android N では 27 に増えました。
+これらのロケールは、ほとんどのリソースを共有できますが、数字は ASCII 表記とネイティブ表記で好みが分かれています。
+たとえば、「4 桁の PIN を選択してください」など、数字の変数を含む文を作成する場合、以下のようにフォーマッタを使用します。
+
+</p>
+
+<pre> format(locale, "Choose a %d-digit PIN", 4)</pre>
diff --git a/docs/html-intl/intl/ja/preview/features/notification-updates.jd b/docs/html-intl/intl/ja/preview/features/notification-updates.jd
new file mode 100644
index 0000000..bbd8481
--- /dev/null
+++ b/docs/html-intl/intl/ja/preview/features/notification-updates.jd
@@ -0,0 +1,328 @@
+page.title=通知
+page.tags=notifications
+helpoutsWidget=true
+page.image=/preview/images/notifications-card.png
+
+trainingnavtop=true
+
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+
+<!-- table of contents -->
+<h2>このドキュメントの内容</h2>
+<ol>
+  <li><a href="#direct">ダイレクト リプライ</a></li>
+  <li><a href="#bundle">バンドル通知</a></li>
+  <li><a href="#custom">カスタムビュー</a></li>
+</ol>
+
+</div>
+</div>
+
+<p>Android N には、アプリが視認性の高いインタラクティブな通知をポストできるようにする新しい API がいくつか導入されています。
+</p>
+
+<p>Android N では、ハンドセットでインライン リプライをサポートするために、既存の {@link android.support.v4.app.RemoteInput} 通知 API が拡張されています。
+これらの機能を使用すると、ユーザーは、アプリにアクセスすることなく、通知シェードからすばやく応答できます。
+</p>
+
+<p>
+  Android N では、類似した通知をバンドルして、単一の通知として表示することもできます。
+このバンドルを可能にするために、Android N では、既存の {@link
+  android.support.v4.app.NotificationCompat.Builder#setGroup
+  NotificationCompat.Builder.setGroup()} メソッドが使用されます。ユーザーは、各通知を展開して、通知シェードから個別に返信や消去などのアクションを各通知に対して行うことができます。
+
+
+</p>
+
+<p>最後に、Android N には、アプリのカスタマイズした通知ビューでシステム デコレーションを活用できるようにする新しい API が追加されています。
+これらの API は、通知ビューで、標準のテンプレートを使った一貫した表示を共有できるようにします。
+
+</p>
+
+<p>このドキュメントでは、アプリでこれらの新しい通知機能を使用するときに考慮する必要のある主な変更点について説明します。
+</p>
+
+<h2 id="direct">ダイレクト リプライ</h2>
+
+<p>Android N のダイレクト リプライ機能を使用すると、ユーザーは、テキスト メッセージにすばやく応答したり、通知インターフェース内でタスク リストを直接アップデートしたりできます。
+
+ハンドヘルド デバイスでは、インライン リプライ アクションが、通知にアタッチされた追加ボタンとして表示されます。
+ユーザーがキーボード経由で返信する場合、通知アクション向けに指定したインテントにテキストによる応答がアタッチされ、そのインテントがハンドヘルド デバイス用アプリに送信されます。
+
+
+
+
+
+<img id="fig-reply-button" src="{@docRoot}preview/images/inline-reply.png" srcset="{@docRoot}preview/images/inline-reply.png 1x,
+  {@docRoot}preview/images/inline-reply_2x.png 2x" width="400">
+<p class="img-caption">
+  <strong>図 1.</strong>Android N に追加された<strong>リプライ</strong> アクション ボタン。
+
+</p>
+
+<h3>インライン リプライ アクションを追加する</h3>
+
+<p>ダイレクト リプライをサポートする通知アクションを作成する方法は次のとおりです。
+</p>
+
+<ol>
+<li>通知アクションに追加できる {@link android.support.v4.app.RemoteInput.Builder} のインスタンスを作成します。
+
+このクラスのコンストラクタは、システムがテキスト入力のキーとして使用する文字列を受け取ります。
+その後、ハンドヘルド デバイス用アプリはそのキーを使用して、入力テキストを取得します。
+
+
+<pre>
+// Key for the string that's delivered in the action's intent
+private static final String KEY_TEXT_REPLY = "key_text_reply";
+String replyLabel = getResources().getString(R.string.reply_label);
+RemoteInput remoteInput = new RemoteInput.Builder(KEY_TEXT_REPLY)
+        .setLabel(replyLabel)
+        .build();
+</pre>
+</li>
+<li> <code>addRemoteInput()</code> を使用して、{@link android.support.v4.app.RemoteInput} オブジェクトをアクションにアタッチします。
+
+
+<pre>
+// Create the reply action and add the remote input
+Notification.Action action =
+        new Notification.Action.Builder(R.drawable.ic_reply_icon,
+                getString(R.string.label), replyPendingIntent)
+                .addRemoteInput(remoteInput)
+                .build();
+</pre>
+</li>
+
+<li>アクションを通知に適用し、通知を発行します。
+
+<pre>
+// Build the notification and add the action
+Notification notification =
+        new Notification.Builder(mContext)
+                .setSmallIcon(R.drawable.ic_message)
+                .setContentTitle(getString(R.string.title))
+                .setContentText(getString(R.string.content))
+                .addAction(action))
+                .build();
+
+// Issue the notification
+NotificationManager notificationManager =
+        NotificationManager.from(mContext);
+notificationManager.notify(notificationId, notification);
+
+</pre>
+</li>
+
+</ol>
+
+
+<p> ユーザーが通知アクションをトリガーすると、ユーザーは応答を入力するよう求められます。
+ </p>
+
+<img id="fig-user-input" src="{@docRoot}preview/images/inline-type-reply.png" srcset="{@docRoot}preview/images/inline-type-reply.png 1x,
+    {@docRoot}preview/images/inline-type-reply_2x.png 2x" width="300">
+<p class="img-caption">
+  <strong>図 2.</strong>ユーザーは通知シェードでテキスト メッセージを入力できます。
+</p>
+
+<h3>インライン リプライからユーザー入力を取得する</h3>
+
+<p>リプライ アクションのインテントで宣言したアクティビティで、通知インターフェースからのユーザー入力を取得する方法は次のとおりです。
+</p>
+<ol>
+<li> 通知アクションのインテントを入力パラメータとして渡すことにより、{@link android.support.v4.app.RemoteInput#getResultsFromIntent
+  getResultsFromIntent()} を呼び出します。
+このメソッドは、テキストによる応答が含まれた {@link android.os.Bundle} を返します。
+
+</li>
+
+<pre>
+Bundle remoteInput = RemoteInput.getResultsFromIntent(intent);
+</pre>
+
+<li>result キー({@link
+  android.support.v4.app.RemoteInput.Builder} コンストラクタに提供されている)を使用して、バンドルへのクエリを実行します。
+</li>
+</ol>
+
+<p>次のコード スニペットは、メソッドがバンドルから入力テキストを取得する方法を示しています。
+</p>
+
+<pre>
+// Obtain the intent that started this activity by calling
+// Activity.getIntent() and pass it into this method to
+// get the associated string.
+
+private CharSequence getMessageText(Intent intent) {
+    Bundle remoteInput = RemoteInput.getResultsFromIntent(intent);
+    if (remoteInput != null) {
+            return remoteInput.getCharSequence(KEY_TEXT_REPLY);
+            }
+    return null;
+ }
+</pre>
+
+<p>アプリはロジックを適用して、取得したテキストに対して実行するアクションを決定できます。インタラクティブなアプリ(チャットなど)の場合、ユーザーが適切に応答できるように通知自体により多くのコンテキスト(たとえば、ユーザー自身のメッセージを含めた、複数行のチャット履歴)を提供します。ユーザーが {@link android.support.v4.app.RemoteInput} を介して応答する場合は、{@code setRemoteInputHistory()} メソッドを使って、返信履歴にテキスト メッセージを含めます。
+
+
+
+
+
+
+</p>
+
+<h2 id="bundle">バンドル通知</h2>
+
+<p>Android N は、通知のキューを表す新しい方法である
+ <i>バンドル通知をデベロッパーに提供します</i>。この機能は、Android Wear の<a href="{@docRoot}training/wearables/notifications/stacks.html">通知スタック</a>機能に似ています。
+
+たとえば、受信したメッセージの通知をアプリで作成する場合、複数のメッセージが受信されると、通知が単一のグループにバンドルされます。
+
+既存の {@link android.support.v4.app.NotificationCompat.Builder#setGroup
+Builder.setGroup()} メソッドを使用して、同様の通知をバンドルできます。
+</p>
+
+<p>
+  通知グループでは、通知グループを構成する通知が階層化されます。
+  この階層の最上位には、そのグループの概要情報を表示する親通知があります。
+ユーザーは通知グループを順次展開できます。ユーザが階層を深くたどると、より多くの情報が表示されます。
+
+ユーザーがバンドルを展開すると、すべての子通知の詳細情報が表示されます。ユーザーがいずれかの通知を展開すると、その内容がすべて表示されます。
+
+
+</p>
+
+<img id="fig-bundles" src="{@docRoot}preview/images/bundles.png" srcset="{@docRoot}preview/images/bundles.png 1x,
+          {@docRoot}preview/images/bundles_2x.png 2x" width="300">
+<p class="img-caption">
+  <strong>図 3.</strong>ユーザーは通知グループを順次展開できます。
+
+</p>
+
+<p>通知をグループに追加する方法については、<a href="{@docRoot}training/wearables/notifications/stacks.html#AddGroup">各通知をグループに追加する</a>をご覧ください。
+
+</p>
+
+
+<h3 id="best-practices">バンドル通知のベストプラクティス</h3>
+<p>このセクションでは、前のバージョンの Android プラットフォームで利用可能な {@link android.app.Notification.InboxStyle InboxStyle} 通知の代わりに、通知グループを使用する必要がある状況についてのガイドラインを提供します。
+
+
+</p>
+
+<h3>バンドル通知を使用するとき</h3>
+
+<p>ユースケースで次のすべての条件が満たされた場合にのみ通知グループを使用する必要があります。
+</p>
+
+<ul>
+  <li>子通知が完全な通知であり、グループの概要なしに、子通知を個別に表示できる。
+</li>
+  <li>子通知を個別に表示するメリットがある。次に例を示します。
+
+  </li>
+  <ul>
+    <li>子通知がアクション可能であり、各子通知に固有のアクションがある。</li>
+    <li>ユーザーが読みたい多くの情報が子通知にある。</li>
+  </ul>
+</ul>
+
+<p>通知グループの適切なユースケースの例には、着信メッセージのリストを表示するメッセージング アプリや受信したメールのリストを表示するメールアプリなどが含まれます。
+
+</p>
+
+<p>
+単一の通知が望ましいユースケースの例には、1 人のユーザーからの個別メッセージや、1 行のテキスト アイテムのリスト表示が含まれます。
+
+このリスト表示を行うには、
+{@link android.app.Notification.InboxStyle InboxStyle} または {@link android.app.Notification.BigTextStyle BigTextStyle} を使用します。
+
+
+</p>
+
+<h3 id ="post">バンドル通知を表示する</h3>
+
+<p>
+  アプリは、グループに単一の子通知が含まれている場合でも、グループの概要を常にポストする必要があります。
+グループに単一の通知のみが含まれている場合、システムによって、概要の表示が非表示になり、子通知が直接表示されます。
+これにより、ユーザーがグループの子通知をスワイプして消すときに一貫した使用感が出ます。
+
+
+</p>
+
+<p class="note">
+  <strong>注:</strong> このバージョンの Android N では、単一の子通知が含まれる通知グループの概要を非表示にできません。
+この機能は、将来のバージョンの Android N に追加されます。
+
+</p>
+
+<h3>通知をピークする</h3>
+
+<p>通常、子通知はグループとして表示されますが、子通知を<a href="{@docRoot}guide/topics/ui/notifiers/notifications.html#Heads-up">ヘッドアップ通知</a>として一時的に表示するように設定できます。
+
+
+この機能は、特に最新の子通知とその関連するアクションへの即時アクセスを可能にするので便利です。
+
+</p>
+
+
+<h3>下位互換性</h3>
+
+<p>
+  Android 5.0(API レベル 21)以降では、Android Wear 端末をサポートするために、通知グループとリモート入力が {@link
+  android.app.Notification} API の一部になっています。
+これらの API を使用して通知を既に作成している場合は、アプリの動作が上記のガイドラインに適合していることの確認と、{@code
+  setRemoteInputHistory()} の実装検討のみを行ってください。
+
+
+</p>
+
+<p>
+  下位互換性をサポートするために、サポート ライブラリの {@link android.support.v4.app.NotificationCompat} クラスで同じ API が利用できるようになっているため、前の Android バージョンで機能する通知を作成できます。
+
+
+携帯端末とタブレットでは、概要通知のみがユーザーに表示されるため、アプリは、受信トレイスタイルやグループの全情報を表す同等の通知を引き続きサポートする必要があります。
+
+Android Wear 端末では、古いプラットフォーム レベル上にもすべての子通知が表示されるため、API レベルに関係なく、子通知を作成する必要があります。
+
+
+
+</p>
+
+<h2 id="custom"> カスタムビュー</h2>
+<p>Android N 以降では通知ビューをカスタマイズでき、通知ヘッダー、アクション、展開レイアウトなどのシステム デコレーションを引き続き取得できます。
+
+</p>
+
+<p>この機能を有効にするために、Android N には、カスタムビューにスタイルを適用する次の API が追加されています。
+</p>
+
+<dl>
+<dt>
+{@code DecoratedCustomViewStyle()}</dt>
+<dd> メディア通知以外の通知にスタイルを適用します。
+</dd>
+<dt>
+{@code DecoratedMediaCustomViewStyle()}</dt>
+<dd> メディア通知にスタイルを適用します。</dd>
+</dl>
+
+<p>この新しい API を使用するには、{@code setStyle()} メソッドを呼び出し、目的のカスタムビュー スタイルに渡します。
+</p>
+
+<p>次のコード スニペットは、{@code DecoratedCustomViewStyle()} メソッドでカスタム通知オブジェクトを作成する方法を示しています。
+</p>
+
+<pre>
+Notification noti = new Notification.Builder()
+           .setSmallIcon(R.drawable.ic_stat_player)
+           .setLargeIcon(albumArtBitmap))
+           .setCustomContentView(contentView);
+           .setStyle(new Notification.DecoratedCustomViewStyle())
+           .build();
+
+</pre>
diff --git a/docs/html-intl/intl/ja/preview/features/picture-in-picture.jd b/docs/html-intl/intl/ja/preview/features/picture-in-picture.jd
new file mode 100644
index 0000000..a7f2a92
--- /dev/null
+++ b/docs/html-intl/intl/ja/preview/features/picture-in-picture.jd
@@ -0,0 +1,186 @@
+page.title=ピクチャ イン ピクチャ
+page.keywords=preview,sdk,PIP,Picture-in-picture
+page.tags=androidn
+
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+
+<h2>このドキュメントの内容</h2>
+<ol>
+  <li><a href="#declaring">アクティビティがピクチャ イン ピクチャをサポートしていることを宣言する
+</a></li>
+  <li><a href="#pip_button">アクティビティをピクチャ イン ピクチャに切り替える</a>
+</li>
+  <li><a href="#handling_ui">ピクチャ イン ピクチャの実行中に UI を処理する</a>
+</li>
+  <li><a href="#continuing_playback">ピクチャ イン ピクチャの実行中にビデオの再生を続行する
+</a></li>
+  <li><a href="#best">ベスト プラクティス</a></li>
+</ol>
+
+<h2>関連ドキュメント</h2>
+<ol>
+  <li><a href="{@docRoot}preview/features/multi-window.html">マルチ ウィンドウのサポート
+</a></li>
+</ol>
+
+</div>
+</div>
+
+<p>Android N では、Android TV ユーザーは、アプリを操作するときに画面の隅に固定されたウィンドウでビデオを視聴できるようになりました。
+
+ピクチャ イン ピクチャ(PIP)モードを使用すると、アプリはバックグランドで別のアクティビティを続けながら、固定されたウィンドウでビデオ アクティビティを実行できるようになります。
+
+PIP ウィンドウでは、アプリの使用中にマルチタスクを実行できます。これにより、ユーザーの作業効率が向上します。
+</p>
+
+<p>アプリで、PIP モードをトリガーするタイミングを決めることができます。次に、PIP モードの開始時点の例を示します。
+</p>
+
+<ul>
+<li>ユーザーが別のコンテンツを閲覧するためにビデオから別のコンテンツに切り替えると、アプリはビデオを PIP モードに切り替えることができます。
+</li>
+<li>コンテンツのエピソード終了の画面が表示されている間、アプリはビデオを PIP モードに切り替えることができます。
+メイン画面には、シリーズの次のエピソードに関するプロモーションや概要の情報が表示されます。
+</li>
+<li>アプリで、ユーザーがビデオを視聴している間に、追加のコンテンツのキューを作成する方法を提供できます。
+メイン画面でコンテンツの選択アクティビティを表示している間に、ビデオは PIP モードで再生を続行できます。
+</li>
+</ul>
+
+<p>PIP ウィンドウは 240 x 135 dp で、画面の 4 つのコーナーのうちいずれかの一番上のレイヤに表示されます。表示する場所はシステムによって選択されます。
+ユーザーは PIP メニューを表示して、PIP ウィンドウを全画面表示に切り替えたり、リモコンの [<b>Home</b>] ボタンを押して PIP ウィンドウを閉じたりすることができます。
+
+別のビデオがメイン画面で再生を開始すると、PIP ウィンドウは自動的に閉じます。
+
+最近使ったアプリから PIP ウィンドウを閉じることもできます。</p>
+
+<img src="{@docRoot}preview/images/pip-active.png" />
+<p class="img-caption"><strong>図 1.</strong> ユーザーがメイン画面でコンテンツを閲覧中に画面の隅に表示されるピクチャ イン ピクチャのビデオ
+
+</p>
+
+<p>PIP では、Android N で使用可能なマルチウィンドウ API を活用し、固定されたビデオ オーバーレイ ウィンドウを表示します。
+PIP をアプリに追加するには、PIP をサポートするアクティビティを登録し、必要に応じてアクティビティを PIP モードに切り替えて、UI 要素を非表示にして、アクティビティが PIP モードを開始してもビデオの再生が続行されるようにします。
+
+
+</p>
+
+<h2 id="declaring">アクティビティがピクチャ イン ピクチャをサポートしていることを宣言する</h2>
+
+<p>デフォルトでは、システムはアプリの PIP を自動的にサポートしません。アプリで PIP をサポートする場合、マニフェストで 
+<code>android:supportsPictureInPicture</code> および 
+<code>android:resizeableActivity</code> を <code>true</code> に設定して、ビデオ アクティビティを登録します。
+
+また、アクティビティがレイアウトの設定変更を処理するように指定して、PIP モードの遷移中にレイアウト変更が発生しても、アクティビティが再開しないようにします。
+
+</p>
+
+<pre>
+&lt;activity android:name="VideoActivity"
+    android:resizeableActivity="true"
+    android:supportsPictureInPicture="true"
+    android:configChanges=
+        "screenSize|smallestScreenSize|screenLayout|orientation"
+    ...
+</pre>
+
+<p>アクティビティを登録する際は、PIP モードでは、アクティビティが TV 画面の小さなオーバーレイ ウィンドウに表示される点に注意してください。
+ビデオの再生アクティビティは、最小限の UI にすることで最高のユーザー エクスペリエンスを提供できます。
+小さな UI 要素を含むアクティビティでは、PIP モードに切り替えたときに優れたユーザー エクスペリエンスを提供できない可能性があります。PIP ウィンドウでは、その UI 要素の詳細が見えづらくなるためです。
+
+
+</p>
+
+<h2 id="pip_button">アクティビティをピクチャ イン ピクチャに切り替える</h2>
+
+アクティビティを PIP モードに切り替える必要があるときは、
+<code>Activity.enterPictureInPicture()</code> を呼び出します。次の例では、ユーザーがメディア コントロール バーにある専用の PIP ボタンを選択したときに、PIP モードに切り替わります。
+
+</p>
+
+<pre>
+&#64;Override
+public void onActionClicked(Action action) {
+    if (action.getId() == R.id.lb_control_picture_in_picture) {
+        getActivity().enterPictureInPicture();
+        return;
+    }
+    ...
+</pre>
+
+<p>メディア コントロール バーに PIP ボタンを追加すると、ユーザーがビデオの再生を操作中に、簡単に PIP モードに切り替えることができます。
+</p>
+
+<img src="{@docRoot}preview/images/pip-button.png" />
+<p class="img-caption"><strong>図 1.</strong> メディア コントロール バー上の [Picture-in-picture] ボタン
+</p>
+
+<p>Android N には、新しい 
+<code>PlaybackControlsRow.PictureInPictureAction</code> クラスが含まれています。このクラスは、コントロール バーの PIP アクションと PIP アイコンの使用方法を定義します。
+</p>
+
+<h2 id="handling_ui">ピクチャ イン ピクチャの実行中に UI を処理する</h2>
+
+<p>アクティビティが PIP モードを開始したら、ビデオの再生のみを表示する必要があります。
+アクティビティが PIP を開始する前に UI 要素を削除して、再び全画面表示に戻ったら、削除した要素を復元します。<code>Activity.onPictureInPictureChanged()</code> または 
+<code>Fragment.onPictureInPictureChanged()</code> をオーバーライドして、必要に応じて UI 要素を有効または無効にします。次に例を示します。
+
+
+</p>
+
+<pre>
+&#64;Override
+public void onPictureInPictureChanged(boolean inPictureInPicture) {
+    if (inPictureInPicture) {
+        // Hide the controls in picture-in-picture mode.
+        ...
+    } else {
+        // Restore the playback UI based on the playback status.
+        ...
+    }
+}
+</pre>
+
+<h2 id="continuing_playback">ピクチャ イン ピクチャの実行中にビデオの再生を続行する
+</h2>
+
+<p>アクティビティを PIP に切り替えると、システムはそのアクティビティを一時停止状態と見なして、アクティビティの <code>onPause()</code> メソッドを呼び出します。
+PIP モードによってアクティビティが一時停止になっても、ビデオの再生は一時停止せず、再生を続ける必要があります。
+
+アクティビティの 
+<code>onPause()</code> メソッドで PIP を確認し、適切に再生を処理してください。次に例を示します。
+</p>
+
+<pre>
+&#64;Override
+public void onPause() {
+    // If called due to PIP, do not pause playback
+    if (inPictureInPicture()) {
+        // Continue playback
+        ...
+    }
+    // If paused but not in PIP, pause playback if necessary
+    ...
+}
+</pre>
+
+<p>アクティビティが PIP モードを終了して全画面モードに戻ると、システムはアクティビティを再開して <code>onResume()</code> メソッドを呼び出します。
+</p>
+
+<h2 id="best">ベスト プラクティス</h2>
+
+<p>PIP は、ビデオを全画面表示で再生するアクティビティに使用します。アクティビティを PIP モードに切り替えるときは、ビデオ コンテンツ以外は何も表示しないでください。アクティビティが PIP モードを開始したタイミングを検出し、<a href="#handling_ui">ピクチャ イン ピクチャの実行中に UI を処理する</a>で説明したように、UI 要素を非表示にします。
+
+
+</p>
+
+<p>PIP ウィンドウは画面の隅にフローティング ウィンドウとして表示されるため、メイン画面のどの場所にも重要な情報を表示しないでください。PIP ウィンドウによって隠れる可能性があります。
+
+</p>
+
+<p>アクティビティが PIP モードになると、デフォルトで、入力フォーカスは失われます。PIP モードで動作中に入力イベントを受け付けるには、
+<code>MediaSession.setMediaButtonReceiver()</code> を使用します。
+</p>
diff --git a/docs/html-intl/intl/ja/preview/features/scoped-folder-access.jd b/docs/html-intl/intl/ja/preview/features/scoped-folder-access.jd
new file mode 100644
index 0000000..6bfae2d
--- /dev/null
+++ b/docs/html-intl/intl/ja/preview/features/scoped-folder-access.jd
@@ -0,0 +1,124 @@
+page.title=特定のディレクトリへのアクセス
+page.keywords=preview,sdk,scoped directory access
+page.tags=androidn
+
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+  <h2>このドキュメントの内容</h2>
+  <ol>
+    <li><a href="#accessing">外部ストレージのディレクトリへのアクセス</a></li>
+    <li><a href="#removable">リムーバブル メディアのディレクトリへのアクセス</a></li>
+    <li><a href="#best">ベスト プラクティス</a></li>
+  </ol>
+</div>
+</div>
+
+<p>写真アプリなどは通常、外部ストレージの特定のディレクトリ(<code>Pictures</code> ディレクトリなど)のみにアクセスする必要があります。
+外部ストレージへのアクセスに関する従来のアプローチでは、このようなアプリに目的のディレクトリへのアクセスを容易に提供できる設計にはなっていませんでした。
+
+次に例を示します。</p>
+
+<ul>
+<li>マニフェストで {@link android.Manifest.permission#READ_EXTERNAL_STORAGE} または {@link android.Manifest.permission#WRITE_EXTERNAL_STORAGE} を要求すると、外部ストレージ上のすべての公開ディレクトリにアクセスできますが、この場合、アプリが不要な場所にもアクセスできます。
+
+
+</li>
+<li><a href="{@docRoot}guide/topics/providers/document-provider.html">ストレージ アクセス フレームワーク</a>を使用すると、通常、ユーザーはシステム UI を使用してディレクトリを選択できますが、アプリが常に同じ外部ディレクトリにアクセスする場合、この選択は不要です。Android N では、一般的な外部ストレージ ディレクトリにアクセスできる、新しいシンプルな API を提供します。
+
+
+
+</li>
+</ul>
+
+<p>
+ </p>
+
+<h2 id="accessing">外部ストレージのディレクトリへのアクセス</h2>
+
+<p><code>StorageManager</code> クラスを使用して、適切な 
+<code>StorageVolume</code> インスタンスを取得します。次に、そのインスタンスの 
+<code>StorageVolume.createAccessIntent()</code> メソッドを呼び出して、インテントを作成します。このインテントを使用して、外部ストレージのディレクトリにアクセスします。
+リムーバブル メディア ボリュームなど、使用できるすべてのボリュームのリストを取得するには、
+<code>StorageManager.getVolumesList()</code> を使用します。
+</p>
+
+<p>次のコード スニペットは、プライマリ共有ストレージの 
+<code>Pictures</code> ディレクトリを開く方法の例を示しています。</p>
+
+<pre>
+StorageManager sm = (StorageManager)getSystemService(Context.STORAGE_SERVICE);
+StorageVolume volume = sm.getPrimaryVolume();
+Intent intent = volume.createAccessIntent(Environment.DIRECTORY_PICTURES);
+startActivityForResult(intent, request_code);
+</pre>
+
+<p>システムは外部ディレクトリへのアクセスの付与を試行し、必要に応じてシンプルな UI で、ユーザーにアクセスを確認します。
+</p>
+
+<img src="{@docRoot}preview/images/scoped-folder-access-framed.png" srcset="{@docRoot}preview/images/scoped-folder-access-framed.png 1x,
+{@docRoot}preview/images/scoped-folder-access-framed_2x.png 2x" />
+<p class="img-caption"><strong>図 1.</strong> Pictures ディレクトリへのアクセスを要求するアプリケーション
+</p>
+
+<p>ユーザーがアクセスを付与すると、
+<code>Activity.RESULT_OK</code> の結果コードと、URI を含むインテント データを指定して、
+<code>onActivityResult()</code> のオーバーライドを呼び出します。提供された URI を使用して、ディレクトリの情報にアクセスします。これは、<a href="{@docRoot}guide/topics/providers/document-provider.html">ストレージ アクセス フレームワーク</a>で返された URI を使用する場合と同様です。
+
+
+
+</p>
+
+<p>ユーザーがアクセスを付与しなかった場合は、
+<code>Activity.RESULT_CANCELED</code> の結果コードと、null のインテント データを指定して、
+<code>onActivityResult()</code> のオーバーライドを呼び出します。</p>
+
+<p class="note"><b>注:</b> 特定の外部ディレクトリへのアクセスを取得すると、そのディレクトリ内のサブディレクトリへのアクセスも取得します。
+</p>
+
+<h2 id="removable">リムーバブル メディアのディレクトリへのアクセス</h2>
+
+<p>特定のディレクトリへのアクセスを使用してリムーバブル メディア上のディレクトリにアクセスするには、まず {@link android.os.Environment#MEDIA_MOUNTED} 通知をリッスンする {@link android.content.BroadcastReceiver} を追加します。次に例を示します。
+
+</p>
+
+<pre>
+&lt;receiver
+    android:name=".MediaMountedReceiver"
+    android:enabled="true"
+    android:exported="true" &gt;
+    &lt;intent-filter&gt;
+        &lt;action android:name="android.intent.action.MEDIA_MOUNTED" /&gt;
+        &lt;data android:scheme="file" /&gt;
+    &lt;/intent-filter&gt;
+&lt;/receiver&gt;
+</pre>
+
+<p>ユーザーが SD カードなどのリムーバブル メディアをマウントすると、システムは 
+{@link android.os.Environment#MEDIA_MOUNTED} 通知を送信します。この通知は、インテント データ内の <code>StorageVolume</code> オブジェクトを提供します。このオブジェクトを使用して、リムーバブル メディア上のディレクトリにアクセスできます。
+
+次の例では、リムーバブル メディア上の <code>Pictures</code> ディレクトリにアクセスします。
+</p>
+
+<pre>
+// BroadcastReceiver has already cached the MEDIA_MOUNTED
+// notification Intent in mediaMountedIntent
+StorageVolume volume = (StorageVolume)
+    mediaMountedIntent.getParcelableExtra(StorageVolume.EXTRA_STORAGE_VOLUME);
+volume.createAccessIntent(Environment.DIRECTORY_PICTURES);
+startActivityForResult(intent, request_code);
+</pre>
+
+<h2 id="best">ベスト プラクティス</h2>
+
+<p>外部ディレクトリのアクセス URI はできる限り保持してください。そうすれば、ユーザーに何度もアクセス要求をする必要がなくなります。
+ユーザーがアクセスを付与したら、ディレクトリのアクセス URI を指定して 
+<code>getContentResolver().takePersistableUriPermssion()</code> を呼び出します。
+システムが URI を保持し、以降のアクセス要求では <code>RESULT_OK</code> を返して、ユーザーに確認の UI を表示しません。
+
+</p>
+
+<p>ユーザーが外部ディレクトリへのアクセスを拒否した直後に、またアクセスを要求しないようにしてください。
+何度もアクセスを要求すると、ユーザー エクスペリエンスが低下します。
+</p>
diff --git a/docs/html-intl/intl/ja/preview/features/security-config.jd b/docs/html-intl/intl/ja/preview/features/security-config.jd
new file mode 100644
index 0000000..6facba6
--- /dev/null
+++ b/docs/html-intl/intl/ja/preview/features/security-config.jd
@@ -0,0 +1,744 @@
+page.title=ネットワーク セキュリティ構成
+page.keywords=preview,security,network
+
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+
+<h2>このドキュメントの内容</h2>
+<ol>
+  <li><a href="#manifest">セキュリティ構成ファイルの追加</a></li>
+  <li><a href="#CustomTrust">信頼できる CA のカスタマイズ</a>
+      <ol>
+      <li><a href="#ConfigCustom">信頼できる CA の構成</a></li>
+      <li><a href="#LimitingCas">信頼できる CA の制限</a></li>
+      <li><a href="#TrustingAdditionalCas">信頼できる CA の追加</a></li>
+      </ol>
+  </li>
+  <li><a href="#TrustingDebugCa">デバッグ限定の CA</a></li>
+  <li><a href="#UsesCleartextTraffic">クリアテキスト トラフィックのオプトアウト</a></li>
+  <li><a href="#CertificatePinning">証明書のピン留め</a></li>
+  <li><a href="#ConfigInheritance">構成の継承の動作</a></li>
+  <li><a href="#FileFormat">構成ファイルの形式</a></li>
+</ol>
+</div>
+</div>
+
+
+<p>
+  Android N には、ネットワーク セキュリティ構成機能が含まれています。これにより、アプリのコードを修正しなくても、安全な宣言型構成ファイルで、アプリのネットワーク セキュリティの設定をカスタマイズできます。
+
+これらの設定は、特定のドメインおよび特定のアプリに対して構成できます。
+主な機能は次のとおりです。
+
+</p>
+
+<ul>
+  <li>
+    <b>カスタム トラスト アンカー:</b>アプリのセキュアな接続にどの証明機関(CA)を信頼するかをカスタマイズできます。
+たとえば、特定の自己署名証明書や制限された一連の公的 CA を信頼できます。
+
+
+  </li>
+
+  <li>
+    <b>デバッグ限定のオーバーライド:</b>インストール ベースに対する追加リスクなしに、アプリのセキュアな接続を安全にデバッグできます。<b>クリアテキスト トラフィックのオプトアウト:</b>
+
+  </li>
+
+  <li>
+クリアテキスト トラフィックの意図しない使用からアプリを保護できます。
+
+  </li>
+
+  <li>
+    <b>証明書のピン留め:</b>アプリのセキュアな接続を特定の証明書に制限します。
+
+  </li>
+</ul>
+
+
+<h2 id="manifest">セキュリティ構成ファイルの追加</h2>
+
+<p>
+  ネットワーク セキュリティ構成機能は、XML ファイルを使用します。このファイルで、アプリの設定を指定できます。
+アプリのマニフェストに、このファイルを指すエントリを含める必要があります。
+次のコードはマニフェストからの抜粋で、このエントリの作成方法を示しています。
+
+</p>
+
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?&gt;
+...
+&lt;app ...&gt;
+    &lt;meta-data android:name="android.security.net.config"
+               android:resource="@xml/network_security_config" /&gt;
+    ...
+&lt;/app&gt;
+</pre>
+
+<h2 id="CustomTrust">信頼できる CA のカスタマイズ</h2>
+
+<p>
+  アプリで、プラットフォームのデフォルトの設定ではなく、カスタマイズした一連の CA を信頼することが必要な場合があります。
+主な理由は次のとおりです。
+</p>
+
+<ul>
+  <li>カスタムの証明機関(自己署名、社内の CA で発行など)を使用してホストに接続する。
+
+  </li>
+
+  <li>プレインストールされたすべての CA ではなく、信頼する一部の CA のみに制限する。
+
+  </li>
+
+  <li>システムに含まれていない追加の CA を信頼する。
+  </li>
+</ul>
+
+<p>
+  デフォルトで、すべてのアプリのセキュアな接続(TLS、HTTPS など)は、システムにプレインストールされた CA を信頼し、API レベル 23(Android M)以下をターゲットにしたアプリは、ユーザーが追加した CA も信頼します。
+
+アプリは {@code base-config}(アプリ全体のカスタマイズ)または {@code domain-config} (ドメイン単位のカスタマイズ)を使用して、独自の接続をカスタマイズすることもできます。
+
+
+
+</p>
+
+
+<h3 id="ConfigCustom">信頼できる CA の構成</h3>
+
+<p>
+  自己署名 SSL 証明書を使用するホストか、または信頼できる非パブリック CA(社内の CA など)によって SSL 証明書が発行されているホストに接続するケースで説明します。
+
+
+</p>
+
+<p>
+  <code>res/xml/network_security_config.xml</code>:
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?&gt;
+&lt;network-security-config&gt;
+    &lt;domain-config&gt;
+        &lt;domain includeSubdomains="true"&gt;example.com&lt;/domain&gt;
+        &lt;trust-anchors&gt;
+            &lt;certificates src="@raw/my_ca"/&gt;
+        &lt;/trust-anchors&gt;
+    &lt;/domain-config&gt;
+&lt;/network-security-config&gt;
+</pre>
+</p>
+
+<p>
+  PEM または DER 形式で、自己署名または非パブリック CA 証明書を
+{@code res/raw/my_ca} に追加します。
+</p>
+
+
+<h3 id="LimitingCas">信頼できる CA の制限</h3>
+
+<p>
+  システムによって信頼されているすべての CA をアプリで信頼したくない場合は、信頼する CA を制限できます。
+これにより、他の CA が発行した偽造証明書からアプリを保護できます。
+
+</p>
+
+<p>
+  信頼できる CA を制限するための設定は、特定のドメインで<a href="#TrustingACustomCa">カスタムの CA を信頼する</a>設定と似ています。ただし、リソースで複数の CA を指定できる点が異なります。
+
+</p>
+
+<p>
+<code>res/xml/network_security_config.xml</code>:
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?&gt;
+&lt;network-security-config&gt;
+    &lt;domain-config&gt;
+        &lt;domain includeSubdomains="true"&gt;secure.example.com&lt;/domain&gt;
+        &lt;domain includeSubdomains="true"&gt;cdn.example.com&lt;/domain&gt;
+        &lt;trust-anchors&gt;
+            &lt;certificates src="@raw/trusted_roots"/&gt;
+        &lt;/trust-anchors&gt;
+    &lt;/domain-config&gt;
+&lt;/network-security-config&gt;
+</pre>
+</p>
+
+<p>
+  PEM または DER 形式で、信頼できる CA を {@code res/raw/trusted_roots} に追加します。
+  PEM 形式を使用する場合、そのファイルには PEM データのみを含めるようにして、余分なテキストを含めないでください。<em></em>
+1 つだけでなく複数の
+<a href="#certificates"><code>&lt;certificates&gt;</code></a> 要素を指定できます。
+
+</p>
+
+
+<h3 id="TrustingAdditionalCas">
+  信頼できる CA の追加
+</h3>
+
+<p>
+  システムで信頼されていない CA を、アプリが追加で信頼しなければならない場合があります。これは、システムに CA がまだ組み込まれていなかったり、CA が Android システムに組み込まれるための要件を満たしていないことが原因です。
+
+CA を追加するには、アプリの構成で複数の証明書ソースを指定します。
+
+
+</p>
+<p>
+<code>res/xml/network_security_config.xml</code>:
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?&gt;
+&lt;network-security-config&gt;
+    &lt;base-config&gt;
+        &lt;trust-anchors&gt;
+            &lt;certificates src="@raw/extracas"/&gt;
+            &lt;certificates src="system"/&gt;
+        &lt;/trust-anchors&gt;
+    &lt;/base-config&gt;
+&lt;/network-security-config&gt;
+</pre>
+</p>
+
+
+<h2 id="TrustingDebugCa">デバッグ用の CA の構成</h2>
+
+<p>
+  HTTPS で接続するアプリをデバッグするときは、運用サーバーの SSL 証明書がインストールされていないローカルの開発サーバーへの接続が必要になります。
+
+アプリのコードを変更せずにこの接続をサポートするには
+
+ <i>、</i> {@code debug-overrides} を使用して、<a href="{@docRoot}guide/topics/manifest/application-element.html#debug">android:debuggable</a> が {@code true} の場合にのみ信頼されるデバッグ限定の CA を指定できます。
+
+通常、IDE およびビルド ツールによって、非リリース ビルドには自動的にこのフラグが設定されます。
+
+</p>
+
+<p>
+  この方法は、通常の条件付きコードよりも安全です。セキュリティ対策として、アプリ ストアでは debuggable とマークされたアプリは拒否されるからです。
+
+
+</p>
+
+<p>
+<code>res/xml/network_security_config.xml</code>:
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?&gt;
+&lt;network-security-config&gt;
+    &lt;debug-overrides&gt;
+        &lt;trust-anchors&gt;
+            &lt;certificates src="@raw/debug_cas"/&gt;
+        &lt;/trust-anchors&gt;
+    &lt;/debug-overrides&gt;
+&lt;/network-security-config&gt;
+</pre>
+</p>
+
+
+<h2 id="UsesCleartextTraffic">クリアテキスト トラフィックのオプトアウト</h2>
+
+<p>
+  アプリケーションで、セキュアな接続のみを使用して接続する場合、それらの接続先に対して(HTTPS ではなく暗号化されていない HTTP プロトコルを使用する)クリアテキストのサポートを除外できます。
+
+このオプションにより、バックエンド サーバーなど外部ソースが提供する URL の変更によって、アプリで思わぬパフォーマンスの低下が発生するのを防ぐことができます。
+
+
+  詳細については、{@link android.security.NetworkSecurityPolicy#isCleartextTrafficPermitted
+  NetworkSecurityPolicy.isCleartextTrafficPermitted()} をご覧ください。
+</p>
+
+<p>
+  たとえば、アプリで {@code
+  secure.example.com} へのすべての接続には常に HTTPS を使用して、機密性の高いトラフィックを有害なネットワークから保護することが必要な場合があります。
+
+</p>
+
+<p>
+<code>res/xml/network_security_config.xml</code>:
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?&gt;
+&lt;network-security-config&gt;
+    &lt;domain-config usesCleartextTraffic="false"&gt;
+        &lt;domain includeSubdomains="true"&gt;secure.example.com&lt;/domain&gt;
+    &lt;/domain-config&gt;
+&lt;/network-security-config&gt;
+</pre>
+</p>
+
+
+<h2 id="CertificatePinning">証明書のピン留め</h2>
+
+<p>
+  通常、アプリはプレインストールされたすべての CA を信頼します。これらの CA が偽造証明書を発行すると、アプリは MiTM 攻撃のリスクにさらされます。
+
+アプリによっては、信頼する CA を制限するか証明書をピン留めすることで、受け入れる証明書を制限できます。
+
+</p>
+
+<p>
+  証明書をピン留めするには、公開鍵のハッシュによって証明書のセットを指定します(X.509 証明書の SubjectPublicKeyInfo)。
+証明書チェーンが有効になるのは、証明書チェーンに 1 つ以上のピン留めされた公開鍵が含まれている場合のみです。
+
+
+</p>
+
+<p>
+  証明書のピン留めを使用するときは、必ずバックアップの鍵を含めてください。そうすれば、新しい鍵に切り替えたり、CA を変更したりする必要が生じた場合に(CA の証明書またはその CA の中間証明書にピン留めしていても)、アプリの接続が影響を受けることはありません。
+
+
+そうしないと、接続を復元するためにアプリにアップデートをプッシュしなければならなくなります。
+
+</p>
+
+<p>
+  また、ピン留めの有効期限を設定することもできます。その有効期限を過ぎると、ピン留めが無効になります。
+これにより、アップデートされていないアプリの接続の問題を防ぐことができます。
+ただし、ピン留めに有効期限を設定すると、ピン留めを回避できるようになります。
+
+</p>
+
+<p>
+<code>res/xml/network_security_config.xml</code>:
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?&gt;
+&lt;network-security-config&gt;
+    &lt;domain-config&gt;
+        &lt;domain includeSubdomains="true"&gt;example.com&lt;/domain&gt;
+        &lt;pin-set expiration="2018-01-01"&gt;
+            &lt;pin digest="SHA-256"&gt;7HIpactkIAq2Y49orFOOQKurWxmmSFZhBCoQYcRhJ3Y=&lt;/pin&gt;
+            &lt;!-- backup pin --&gt
+            &lt;pin digest="SHA-256"&gt;fwza0LRMXouZHRC8Ei+4PyuldPDcf3UKgO/04cDM1oE=&lt;/pin&gt;
+    &lt;/domain-config&gt;
+&lt;/network-security-config&gt;
+</pre>
+</p>
+
+
+<h2 id="ConfigInheritance">構成の継承の動作</h2>
+
+<p>
+  固有の構成で設定されていない値は、継承されます。この動作により、より複雑な構成が可能になるうえ、構成ファイルの読みやすさを維持できます。
+
+</p>
+
+<p>
+  固有のエントリに値が設定されていない場合、その次に汎用的なエントリの値が使用されます。
+{@code domain-config} で設定されていない値は、ネストされている場合は親の {@code domain-config} から、ネストされていない場合は {@code
+  base-config} から取得されます。
+{@code base-config} で設定されていない値には、プラットフォームのデフォルト値を使用します。
+
+</p>
+
+<p>
+  たとえば、{@code
+  example.com} のサブドメインに対するすべての接続で、CA のカスタム セットを使用する必要があるケースを考えてみましょう。また、これらのドメインに対するクリアテキストのトラフィックは、{@code
+  secure.example.com} に接続する場合を除いて許可します。<em></em>
+{@code example.com} の構成で {@code
+  secure.example.com} の構成をネストすることで、
+{@code trust-anchors} の重複を回避できます。
+</p>
+
+<p>
+<code>res/xml/network_security_config.xml</code>:
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?&gt;
+&lt;network-security-config&gt;
+    &lt;domain-config&gt;
+        &lt;domain includeSubdomains="true"&gt;example.com&lt;/domain&gt;
+        &lt;trust-anchors&gt;
+            &lt;certificates src="@raw/my_ca"/&gt;
+        &lt;/trust-anchors&gt;
+        &lt;domain-config cleartextTrafficPermitted="false"&gt;
+            &lt;domain includeSubdomains="true"&gt;secure.example.com&lt;/domain&gt;
+        &lt;/domain-config&gt;
+    &lt;/domain-config&gt;
+&lt;/network-security-config&gt;
+</pre>
+</p>
+
+
+<h2 id="FileFormat">構成ファイルの形式</h2>
+
+<p>
+  ネットワーク セキュリティ構成機能では、XML ファイル形式を使用します。
+  ファイルの全体的な構造については、次のコード サンプルをご覧ください。
+</p>
+
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?&gt;
+&lt;network-security-config&gt;
+    &lt;base-config&gt;
+        &lt;trust-anchors&gt;
+            &lt;certificates src="..."/&gt;
+            ...
+        &lt;/trust-anchors&gt;
+    &lt;/base-config&gt;
+
+    &lt;domain-config&gt;
+        &lt;domain&gt;android.com&lt;/domain&gt;
+        ...
+        &lt;trust-anchors&gt;
+            &lt;certificates src="..."/&gt;
+            ...
+        &lt;/trust-anchors&gt;
+        &lt;pin-set&gt;
+            &lt;pin digest="..."&gt;...&lt;/pin&gt;
+            ...
+        &lt;/pin-set&gt;
+    &lt;/domain-config&gt;
+    ...
+    &lt;debug-overrides&gt;
+        &lt;trust-anchors&gt;
+            &lt;certificates src="..."/&gt;
+            ...
+        &lt;/trust-anchors&gt;
+    &lt;/debug-overrides&gt;
+&lt;/network-security-config&gt;
+</pre>
+
+<p>
+  次のセクションでは、このファイル形式の構文とその他の詳細について説明します。
+
+</p>
+
+<h3 id="network-security-config">
+  &lt;network-security-config&gt;
+</h3>
+
+<dl class="xml">
+  <dt>
+    含めることのできる要素: 
+  </dt>
+
+  <dd>
+    0 または 1 つの <code><a href="#base-config">&lt;base-config&gt;</a></code><br>
+    任意の数の <code><a href=
+    "#domain-config">&lt;domain-config&gt;</a></code><br>
+    0 または 1 つの <code><a href="#debug-overrides">&lt;debug-overrides&gt;</a></code>
+  </dd>
+</dl>
+
+<h3 id="base-config">
+  &lt;base-config&gt;
+</h3>
+
+<dl class="xml">
+  <dt>
+    構文: 
+  </dt>
+</dl>
+
+<pre class="stx">
+&lt;base-config <a href=
+"#usesCleartextTraffic">usesCleartextTraffic</a>=["true" | "false"]&gt;
+    ...
+&lt;/base-config&gt;
+</pre>
+<dl class="xml">
+  <dt>
+    含めることのできる要素: 
+  </dt>
+
+  <dd>
+    <code><a href="#trust-anchors">&lt;trust-anchors&gt;</a></code>
+  </dd>
+
+  <dt>
+    説明: 
+  </dt>
+
+  <dd>
+    <a href="#domain-config"><code>domain-config</code></a> に含まれていない接続先に対するすべての接続に使用される、デフォルトの構成。
+
+
+<p>
+  設定されていない値はすべて、プラットフォームのデフォルト値を使用します。API レベル 24 以上をターゲットにしたアプリのデフォルトの構成は次のとおりです。
+
+</p>
+
+<pre>
+&lt;base-config usesCleartextTraffic="true"&gt;
+    &lt;trust-anchors&gt;
+        &lt;certificates src="system" /&gt;
+    &lt;/trust-anchors&gt;
+&lt;/base-config&gt;
+</pre>
+API レベル 23 以下をターゲットにしたアプリのデフォルトの構成は次のとおりです。
+<pre>
+&lt;base-config usesCleartextTraffic="true"&gt;
+    &lt;trust-anchors&gt;
+        &lt;certificates src="system" /&gt;
+        &lt;certificates src="user" /&gt;
+    &lt;/trust-anchors&gt;
+&lt;/base-config&gt;
+</pre>
+
+  </dd>
+</dl>
+
+<h3 id="domain-config">&lt;domain-config&gt;</h3>
+<dl class="xml">
+<dt>構文: </dt>
+<dd>
+<pre class="stx">&lt;domain-config <a href="#usesCleartextTraffic">usesCleartextTraffic</a>=["true" | "false"]&gt;
+    ...
+&lt;/domain-config&gt;</pre>
+</dd>
+
+<dt>含めることのできる要素: </dt>
+
+<dd>
+1 つ以上の <code><a href="#domain">&lt;domain&gt;</a></code>
+<br/>0 または 1 つの <code><a href="#trust-anchors">&lt;trust-anchors&gt;</a></code>
+<br/>0 または 1 つの <code><a href="#pin-set">&lt;pin-set&gt;</code></a>
+<br/>任意の数のネストされた <code>&lt;domain-config&gt;</code></dd>
+
+<dt>説明</dt>
+<dd>固有の接続先への接続に使用される構成です。{@code domain} 要素の定義に従います。
+
+<p>複数の {@code domain-config} 要素で接続先を指定している場合は、最も具体的な(長い)マッチング ドメイン ルールを持つ構成が採用されます。
+</p></dd>
+</dl>
+
+
+<h3 id="domain">&lt;domain&gt;</h3>
+
+<dl class="xml">
+  <dt>
+    構文: 
+  </dt>
+
+  <dd>
+    <pre class="stx">
+&lt;domain includeSubdomains=["true" | "false"]&gt;example.com&lt;/domain&gt;
+</pre>
+  </dd>
+
+  <dt>
+    属性: 
+  </dt>
+
+  <dd>
+    <dl class="attr">
+      <dt>
+        {@code includeSubdomains}
+      </dt>
+
+      <dd>
+        {@code "true"} の場合、このドメイン ルールはドメインおよびすべてのサブドメイン(サブドメインのサブドメインも含む)に一致します。そうでない場合、このルールは完全一致のみに適用されます。
+
+
+      </dd>
+    </dl>
+  </dd>
+
+  <dt>
+    説明: 
+  </dt>
+</dl>
+
+<h3 id="debug-overrides">&lt;debug-overrides&gt;</h3>
+
+<dl class="xml">
+  <dt>
+    構文: 
+  </dt>
+
+  <dd>
+    <pre class="stx">
+&lt;debug-overrides&gt;
+    ...
+&lt;/debug-overrides&gt;
+</pre>
+  </dd>
+
+  <dt>
+    含めることのできる要素: 
+  </dt>
+
+  <dd>
+    0 または 1 つの <code><a href="#trust-anchors">&lt;trust-anchors&gt;</a></code>
+  </dd>
+
+  <dt>
+    説明: 
+  </dt>
+
+  <dd>
+    オーバーライドは、<a href="{@docRoot}guide/topics/manifest/application-element.html#debug">android:debuggable</a> が {@code "true"} の場合に適用されます。これは通常、IDE およびビルド ツールで生成された非リリース ビルドに使用します。
+
+{@code
+    debug-overrides} で指定されたトラスト アンカーは、その他すべての構成に追加されます。サーバーの証明書チェーンでデバッグ限定のトラスト アンカーのいずれかを使用するときは、証明書のピン留めは実行されません。
+
+<a href="{@docRoot}guide/topics/manifest/application-element.html#debug">android:debuggable</a> が {@code "false"} の場合、このセクションは完全に無視されます。
+
+  </dd>
+</dl>
+
+<h3 id="trust-anchors">&lt;trust-anchors&gt;</h3>
+<dl class="xml">
+  <dt>
+    構文: 
+  </dt>
+
+  <dd>
+    <pre class="stx">
+&lt;trust-anchors&gt;
+...
+&lt;/trust-anchors&gt;
+</pre>
+  </dd>
+
+  <dt>
+    含めることのできる要素: 
+  </dt>
+
+  <dd>
+    任意の数の <code><a href="#certificates">&lt;certificates&gt;</a></code>
+  </dd>
+
+  <dt>
+    説明: 
+  </dt>
+
+  <dd>
+    セキュアな接続に使用するトラスト アンカーのセット。
+  </dd>
+</dl>
+
+
+<h3 id="certificates">&lt;certificates&gt;</h3>
+<dl class="xml">
+<dt>構文: </dt>
+<dd><pre class="stx">&lt;certificates src=["system" | "user" | "<i>raw resource</i>"]
+              overridePins=["true" | "false"] /&gt;
+</pre></dd>
+<dt>説明: </dt>
+<dd>{@code trust-anchors} 要素の X.509 証明書のセットです。</dd>
+
+<dt>属性: </dt>
+<dd><dl class="attr">
+<dt>{@code src}</dt>
+<dd>
+CA 証明書のソースには、次のいずれかを指定します。
+<ul>
+  <li>X.509 証明書を含むファイルを指す未加工のリソース ID。
+  証明書は、DER または PEM 形式でエンコードする必要があります。PEM 証明書の場合、ファイルには PEM 以外の余分なデータ(コメントなど)を含めないでください。
+<em></em>
+
+  </li>
+
+  <li>{@code "system"}: プレインストールされたシステムの CA 証明書
+  </li>
+
+  <li>{@code "user"}: ユーザーが追加した CA 証明書
+  </li>
+</ul>
+</dd>
+
+<dt>{@code overridePins}</dt>
+<dd>
+  <p>
+    ソースから取得した CA が証明書のピン留めを回避するかどうかを指定します。{@code
+    "true"} の場合、証明書チェーンはこのソースから取得したいずれかの CA を使用して作成され、ピン留めは実行されません。
+この設定は、CA をデバッグしたり、アプリのセキュアなトラフィックでユーザーの MiTM の許可をサポートするために役立ちます。
+
+  </p>
+
+  <p>
+    デフォルトは {@code "false"} です。ただし、{@code debug-overrides} 要素で指定された場合のデフォルトは {@code "true"} です。
+
+  </p>
+</dd>
+</dl>
+</dd>
+
+
+<h3 id="pin-set">&lt;pin-set&gt;</h3>
+
+<dl class="xml">
+  <dt>
+    構文: 
+  </dt>
+
+  <dd>
+<pre class="stx">
+&lt;pin-set expiration="date"&gt;
+...
+&lt;/pin-set&gt;
+</pre>
+  </dd>
+
+  <dt>
+    含めることのできる要素: 
+  </dt>
+
+  <dd>
+    任意の数の <code><a href="#pin">&lt;pin&gt;</a></code>
+  </dd>
+
+  <dt>
+    説明: 
+  </dt>
+
+  <dd>
+    公開鍵のピンのセットです。セキュアな接続を信頼するには、信頼チェーン内の公開鍵一式のうちどれかが、ピンのセットに含まれている必要があります。
+ピンの形式については、
+<code><a href="#pin">&lt;pin&gt;</a></code> をご覧ください。
+  </dd>
+
+  <dt>
+    属性: 
+  </dt>
+
+  <dd>
+    <dl class="attr">
+      <dt>
+        {@code expiration}
+      </dt>
+
+      <dd>
+        {@code yyyy-MM-dd} 形式のピン留めの有効期限、つまりピン留めを無効にする日付です。
+この属性が設定されていない場合、ピン留めの有効期限はありません。
+
+        <p>
+          有効期限を設定しておくと、ユーザーがアプリのアップデートを無効にしているなどの原因で、ピンのセットのアップデートを取得していないアプリで、アプリの接続上の問題を回避できます。
+
+
+        </p>
+      </dd>
+    </dl>
+  </dd>
+</dl>
+
+<h3 id="pin">&lt;pin&gt;</h3>
+<dl class="xml">
+  <dt>
+    構文: 
+  </dt>
+
+  <dd>
+<pre class="stx">
+&lt;pin digest=["SHA-256"]&gt;base64 encoded digest of X.509
+    SubjectPublicKeyInfo (SPKI)&lt;/pin&gt;
+</pre>
+  </dd>
+
+  <dt>
+    属性: 
+  </dt>
+
+  <dd>
+    <dl class="attr">
+      <dt>
+        {@code digest}
+      </dt>
+
+      <dd>
+        ピンの生成にはダイジェスト アルゴリズムが使用されます。現在サポートされているのは
+{@code "SHA-256"} のみです。
+      </dd>
+    </dl>
+  </dd>
+</dl>
diff --git a/docs/html-intl/intl/ja/preview/features/tv-recording-api.jd b/docs/html-intl/intl/ja/preview/features/tv-recording-api.jd
new file mode 100644
index 0000000..a212935
--- /dev/null
+++ b/docs/html-intl/intl/ja/preview/features/tv-recording-api.jd
@@ -0,0 +1,120 @@
+page.title=TV の録画
+page.keywords=preview,sdk,tv,recording
+page.tags=androidn
+
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+  <h2>このドキュメントの内容</h2>
+  <ol>
+    <li><a href="#supporting">録画のサポートを示す</a></li>
+    <li><a href="#recording">セッションを録画する</a></li>
+    <li><a href="#errors">録画のエラーを処理する</a></li>
+    <li><a href="#sessions">録画したセッションを管理する</a></li>
+    <li><a href="#best">ベスト プラクティス</a></li>
+  </ol>
+</div>
+</div>
+
+<p>TV の入力サービスを使用すると、ユーザーは time-shifting API を介してチャンネルの再生を一時停止および再開できます。
+Android N では、録画したセッションを複数保存できるようにして、タイムシフティング機能を拡張しています。
+</p>
+
+<p>ユーザーはあらかじめ録画をスケジュールできます。また、プログラムを視聴しながら録画を開始することもできます。
+システムが録画を保存すると、システムの TV アプリで録画を視聴、管理、再生できます。
+</p>
+
+<p>TV 入力サービスで録画機能を提供する場合は、アプリが録画をサポートしていることをシステムに示し、プログラムの録画機能を実装し、録画中に発生したエラーを処理および通知し、録画したセッションを管理する必要があります。
+
+
+</p>
+
+<h2 id="supporting">録画のサポートを示す</h2>
+
+<p>TV 入力サービスで録画をサポートしていることをシステムに示すには、次の手順を実行します。
+</p>
+
+<ol>
+<li><code>TvInputService.onCreate()</code> メソッドで、<code>TvInputInfo.Builder</code> クラスを使用して新しい
+<code>TvInputInfo</code> オブジェクトを作成します。
+</li>
+<li>新しい <code>TvInputInfo</code> オブジェクトを作成するときは、
+<code>setCanRecord(true)</code> を呼び出してから、<code>build()</code> を呼び出して、サービスが録画をサポートしていることを示します。
+</li>
+<li>
+<code>TvInputService.updateTvInputInfo()</code> を呼び出してシステムに <code>TvInputInfo</code> オブジェクトを登録します。</li>
+</ol>
+
+<h2 id="recording">セッションを録画する</h2>
+
+<p>TV 入力サービスで録画機能のサポートを登録した後、システムがアプリの録画機能の実装にアクセスする必要があるときに、
+<code>TvInputService.onCreateRecordingSession()</code> を呼び出します。
+
+独自の
+<code>TvInputService.RecordingSession</code> サブクラスを実装し、<code>onCreateRecordingSession()</code> コールバックが発生したときに返します。
+
+このサブクラスは、正しいチャンネル データへの切り替え、要求されたデータの録画、録画のステータスおよびエラーのシステムへの通知を処理します。
+
+</p>
+
+<p>システムが <code>RecordingSession.onTune()</code> を呼び出すと、チャンネル URI を渡して、URI で指定されたチャンネルに合わせます。
+<code>notifyTuned()</code> を呼び出して、アプリが目的のチャンネルに合わせたことをシステムに通知します。または、アプリが適切なチャンネルに合わせることができなかった場合は、
+<code>notifyError()</code> を呼び出します。
+
+</p>
+
+<p>次に、システムは <code>RecordingSession.onStartRecording()</code> コールバックを呼び出します。
+アプリは直ちに録画を開始する必要があります。システムはこのコールバックを呼び出すときに、これから録画するプログラムに関する情報を含む URI を提供します。
+
+録画が完了したら、このデータを <code>RecordedPrograms</code> データ テーブルにコピーする必要があります。
+</p>
+
+<p>最後に、システムが <code>RecordingSession.onStopRecording()</code> を呼び出します。この時点で、アプリは録画を直ちに停止する必要があります。
+また、<code>RecordedPrograms</code> テーブルのエントリも作成する必要があります。
+このエントリは、
+<code>RecordedPrograms.COLUMN_RECORDING_DATA_URI</code> 列に録画したセッション データの URI を設定し、システムが最初に
+<code>onStartRecording()</code> を呼び出したときに提供したプログラム情報がすべて含まれている必要があります。
+
+</p>
+
+<p><code>RecordedPrograms</code> テーブルへのアクセス方法の詳細については、<a href="#sessions">録画したセッションを管理する</a>をご覧ください。
+</p>
+
+<h2 id="errors">録画のエラーを処理する</h2>
+
+<p>録画中にエラーが発生し、録画したデータのレンダリングができない場合は、<code>RecordingSession.notifyError()</code> を呼び出してシステムに通知します。同様に、録画セッションの作成後に <code>notifyError()</code> を呼び出して、アプリがセッションを録画できないことをシステムに通知することもできます。
+
+
+</p>
+
+<p>録画中にエラーが発生したにもかかわらず、一部の録画を再生できるようにしてユーザーに提供したい場合は、
+<code>RecordingSession.notifyRecordingStopped()</code> を呼び出すと、システムで部分的なセッションを使用できるようになります。
+
+</p>
+
+<h2 id="sessions">録画したセッションを管理する</h2>
+
+<p>システムは、すべての録画可能チャンネル アプリで録画したすべてのセッションの情報を、<code>TvContract.RecordedPrograms</code>
+コンテンツ プロバイダ テーブルに保持します。
+この情報は、
+<code>RecordedPrograms.Uri</code> コンテンツ URI を使用してアクセスできます。コンテンツ プロバイダ API を使用して、このテーブルのエントリの読み取り、追加、削除が可能です。
+</p>
+
+<p>コンテンツ プロバイダのデータの操作方法については、<a href="{@docRoot}guide/topics/providers/content-provider-basics.html">コンテンツ プロバイダの基本</a>をご覧ください。
+
+</p>
+
+<h2 id="best">ベスト プラクティス</h2>
+
+<p>TV 端末のストレージには上限があるため、録画したセッションを保存するためにストレージを割り当てるときは、十分に検討してください。
+録画したセッションを保存する容量が不足している場合は、
+<code>RecordingCallback.onError(RECORDING_ERROR_INSUFFICIENT_SPACE)</code> を使用します。
+</p>
+
+<p>ユーザーが録画を開始すると、できるだけ速やかにデータの録画を開始する必要があります。
+録画を円滑に開始するには、システムが
+<code>onCreateRecordingSession()</code> コールバックを呼び出したときにストレージ容量のアクセスや割り当てなど、時間のかかるタスクをあからじめ完了しておきます。
+そうすれば、<code>onStartRecording()</code> コールバックが発生したときに直ちに録画を開始できます。
+
+</p>
diff --git a/docs/html-intl/intl/ja/preview/index.jd b/docs/html-intl/intl/ja/preview/index.jd
new file mode 100644
index 0000000..d077f30
--- /dev/null
+++ b/docs/html-intl/intl/ja/preview/index.jd
@@ -0,0 +1,120 @@
+page.title=Android N Developer Preview
+page.tags="preview","developer"
+meta.tags="プレビュー", "android"
+fullpage=true
+forcelocalnav=true
+header.hide=1
+footer.hide=1
+@jd:body
+
+<script>
+  $(document).ready(function() {
+    if (useUpdatedTemplates) {
+      $("#useUpdatedTemplates").css("display","block");
+    } else {
+      $("#useOldTemplates").css("display","block");
+    }
+  })
+</script>
+
+<section class="dac-expand dac-hero dac-light" style="background-color:#B2DFDB">
+  <div class="wrap" style="max-width:1100px;margin-top:0">
+    <div class="cols dac-hero-content" style="padding-bottom:1em;">
+
+      <div class="col-7of16 col-push-9of16" style="padding-left:2em">
+        <h1 class="dac-hero-title">Android N Developer Preview</h1>
+        <p class="dac-hero-description">
+          Android N が正式リリースされる前に、Nexus などのデバイスで事前に<strong>アプリの動作をご確認</strong>いただけます。Android N の新しいシステム動作をサポートして、<strong>電力やメモリの使用量を削減</strong>しましょう。<strong>マルチ ウィンドウ UI</strong> や<strong>ダイレクト リプライ通知</strong>などの機能も利用して、アプリを拡張してみてください。
+
+
+
+
+        </p>
+
+        <a class="dac-hero-cta" href="{@docRoot}preview/overview.html">
+          <span class="dac-sprite dac-auto-chevron"></span>
+          スタートガイド</a>
+<!--<br>
+        <a class="dac-hero-cta" href="{@docRoot}preview/support.html">
+          <span class="dac-sprite dac-auto-chevron"></span>
+          Update to Android N (final SDK)
+        </a><br>-->
+      </div>
+      <div class="col-9of16 col-pull-7of16 dac-hero-figure" style="margin-top:1.5em;padding-right:1.5em;">
+        <img class="dac-hero-image" src="{@docRoot}images/home/n-preview-hero.png" srcset="{@docRoot}images/home/n-preview-hero.png 1x,
+             {@docRoot}images/home/n-preview-hero_2x.png 2x">
+      </div>
+    </div>
+    <div class="dac-section dac-small">
+      <div class="resource-widget resource-flow-layout col-16"
+           data-query="collection:preview/landing/resources"
+           data-cardSizes="6x2"
+           data-maxResults="6"></div>
+    </div>
+  </div>
+</section>
+
+<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="#build-apps">
+      <i class="dac-sprite dac-arrow-down-gray"></i>
+    </a>
+    <ul class="dac-actions">
+      <li class="dac-action">
+        <a class="dac-action-link" href="https://developer.android.com/preview/bug">
+          <i class="dac-action-sprite dac-sprite dac-auto-chevron-large"></i>
+          問題の報告</a>
+
+      </li>
+      <li class="dac-action">
+        <a class="dac-action-link" href="{@docRoot}preview/support.html">
+          <i class="dac-action-sprite dac-sprite dac-auto-chevron-large"></i>
+          リリースノートの確認</a>
+
+      </li>
+      <li class="dac-action">
+        <a class="dac-action-link" href="{@docRoot}preview/dev-community">
+          <i class="dac-action-sprite dac-sprite dac-auto-chevron-large"></i>
+          開発者コミュニティに参加</a>
+
+      </li>
+    </ul>
+  </div><!-- end .wrap -->
+</div><!-- end .dac-actions -->
+
+<div id="useOldTemplates" style="display:none;color:black" class="actions-bar dac-expand dac-invert">
+  <div class="wrap dac-offset-parent">
+
+    <div class="actions">
+      <div><a href="https://developer.android.com/preview/bug">
+        <span class="dac-sprite dac-auto-chevron-large"></span>
+        問題の報告</a>
+</div>
+      <div><a href="{@docRoot}preview/support.html">
+        <span class="dac-sprite dac-auto-chevron-large"></span>
+        リリースノートの確認</a>
+</div>
+      <div><a href="{@docRoot}preview/dev-community">
+        <span class="dac-sprite dac-auto-chevron-large"></span>
+        開発者コミュニティに参加</a>
+</div>
+    </div><!-- end .actions -->
+  </div><!-- end .wrap -->
+</div>
+
+<section class="dac-section dac-light"><div class="wrap">
+  <h1 class="dac-section-title">リソース</h1>
+  <div class="dac-section-subtitle">
+    Android N 向けにアプリを開発する上で役立つ必須情報をご提供します。
+  </div>
+
+  <div class="resource-widget resource-flow-layout col-16"
+       data-query="collection:preview/landing/more"
+       data-cardSizes="6x6"
+       data-items-per-page="6"
+       data-maxResults="15"
+       data-initial-results="6"></div>
+
+  </div>
+</section>
+
diff --git a/docs/html-intl/intl/ja/preview/j8-jack.jd b/docs/html-intl/intl/ja/preview/j8-jack.jd
new file mode 100644
index 0000000..1723e46
--- /dev/null
+++ b/docs/html-intl/intl/ja/preview/j8-jack.jd
@@ -0,0 +1,183 @@
+page.title=Java 8 の機能
+page.keywords="android N", "Java 8", "Jack"
+@jd:body
+
+<div id="qv-wrapper">
+  <div id="qv">
+    <ol>
+      <li>
+        <a href="#supported-features">Java 8 のサポート機能と API</a>
+      </li>
+      <li>
+        <a href="#configuration">Java 8 の機能と Jack ツールチェーンの有効化</a>
+      </li>
+    </ol>
+  </div>
+</div>
+
+<p>Android N 向けのアプリを開発する際は、Java 8 の機能をご利用いただけます。このページでは Android N Preview でサポートしている Java 8 の新機能や、それらを利用するためのプロジェクトの正しい設定方法、想定される既知の問題についてご紹介します。
+
+
+
+
+</p>
+
+<p>これらの機能を使うには、Android Studio 2.1(プレビュー版)と Android N Preview SDK をダウンロードしてセットアップし、Jack ツールチェーンと最新の Gradle 用の Android Plugin を準備する必要があります。Android N Preview SDK をお持ちでない方は、<a href="{@docRoot}preview/setup-sdk.html">Android N 向けの開発準備</a>の説明をご覧ください。
+
+
+</p>
+
+
+
+<p class="note">
+  <strong>注: </strong> Android N プラットフォーム向けのアプリを開発する際は、必ずしも Java 8 の新機能を使う必要はありません。Java 8 の機能を使用せずにコーディングしたい場合は、プロジェクトのソースコードを保持して、ターゲットの互換性の指定を Java 7 にしておくこともできます。ただし、Android N プラットフォームでビルドする時は、必ず JDK 8 を使用してコンパイルしてください。
+
+
+
+
+</p>
+
+<h2 id="supported-features">
+  Java 8 のサポート機能と API
+</h2>
+
+<p>
+  Android ではまだ Java 8 の全機能はサポートしておりません。現時点で Android N のプレビュー版向けにアプリを開発する際にご利用いただける機能は、以下のとおりです。
+
+
+</p>
+
+<ul>
+  <li>
+    <a class="external-link" href="https://docs.oracle.com/javase/tutorial/java/IandI/defaultmethods.html">デフォルトおよび静的インターフェースのメソッド</a>
+
+  </li>
+
+  <li>
+    <a class="external-link" href="https://docs.oracle.com/javase/tutorial/java/javaOO/lambdaexpressions.html">ラムダ式</a>
+
+  </li>
+
+  <li>
+    <a class="external-link" href="https://docs.oracle.com/javase/tutorial/java/annotations/repeating.html">反復アノテーション</a>
+
+  </li>
+</ul>
+
+
+<p>
+  さらに以下の Java 8 機能の API もご利用いただけます。
+</p>
+
+<ul>
+  <li>リフレクションおよび言語関連の API
+  </li>
+
+  <li style="list-style: none; display: inline">
+    <ul>
+      <li>{@code java.lang.FunctionalInterface}
+      </li>
+
+      <li>{@code java.lang.annotation.Repeatable}
+      </li>
+
+      <li>{@code java.lang.reflect.Method.isDefault()}
+      </li>
+
+      <li>以下のような反復アノテーション関連のリフレクション API
+      {@code AnnotatedElement.getAnnotationsByType(Class)}
+      </li>
+    </ul>
+  </li>
+  <li>ユーティリティ API
+  </li>
+
+  <li style="list-style: none; display: inline">
+    <ul>
+      <li>{@code java.util.function}
+      </li>
+    </ul>
+  </li>
+</ul>
+
+<p class="note">
+  <strong>注:</strong> Android N の実装は匿名クラスのラムダ式に基づいているため下方互換性があり、前の Andoird バージョンで実行することができます。前のバージョンでラムダ式をテストする際は、必ず {@code
+  build.gradle} ファイルの {@code compileSdkVersion} と {@code
+  targetSdkVersion} の値を 23 以下に設定してください。
+
+
+
+</p>
+
+<h2 id="configuration">
+  Java 8 の機能と Jack ツールチェーンの有効化
+</h2>
+
+<p>
+  Java 8 の新機能を使うには、新しい <a class="external-link" href="https://source.android.com/source/jack.html">Jack ツールチェーン</a>も必要です。この新しい Android ツールチェーンは、Java のソースコードを Android で判別可能な dex バイトコードにコンパイルします。さらにこのツールには独自の {@code .jack} ライブラリ フォーマットがあり、再パッケージ化、縮小、難読化、Multidex など、ほとんどのツールチェーン機能に対応しています。
+
+
+
+
+
+</p>
+
+<p>以下は、Android の DEX ファイルのビルドに使用する 2 つのツールチェーンの比較です。</p>
+<ul>
+  <li>従来の javac ツールチェーン<br>
+  <b>javac</b> ({@code .java} --&gt; {@code .class}) --&gt; <b>dx</b> ({@code
+  .class} --&gt; {@code .dex})
+  </li>
+
+  <li>新しい Jack ツールチェーン<br>
+  <b>Jack</b> ({@code .java} --&gt; {@code .jack} --&gt; {@code .dex})
+  </li>
+</ul>
+
+<h3>
+  Gradle の設定
+</h3>
+
+<p>
+  プロジェクトで Java 8 の機能と Jack を使うには、モジュール固有の {@code build.gradle} ファイルに以下の内容を記載します。
+
+</p>
+
+<pre>
+android {
+  ...
+  defaultConfig {
+    ...
+    jackOptions {
+      enabled true
+    }
+  }
+  compileOptions {
+    sourceCompatibility JavaVersion.VERSION_1_8
+    targetCompatibility JavaVersion.VERSION_1_8
+  }
+}
+</pre>
+
+<h3>
+  既知の問題
+</h3>
+
+<p>
+  Android Studio 2.0(ベータ版)で導入された Instant Run は、現段階では Jack と併用できません。そのため新しいツールチェーンの使用中は、Instant Run が無効になります。
+
+</p>
+
+<p>Jack はアプリのコンパイル中に中間クラスファイルを生成しないため、中間ファイルに依存する以下のようなツールは現在 Jack と併用できません。
+
+</p>
+
+<ul>
+  <li>クラスファイルに作用する Lint Detector
+  </li>
+
+  <li>アプリのクラスファイルを必要とするツールやライブラリ(JaCoCo や Mockito など)
+</li>
+</ul>
+
+<p>その他の不具合がありましたら、<a href="http://tools.android.com/filing-bugs">バグの報告</a>をお願いします。</p>
\ No newline at end of file
diff --git a/docs/html-intl/intl/ja/preview/overview.jd b/docs/html-intl/intl/ja/preview/overview.jd
new file mode 100644
index 0000000..29340f8
--- /dev/null
+++ b/docs/html-intl/intl/ja/preview/overview.jd
@@ -0,0 +1,440 @@
+page.title=プログラムの概要
+page.metaDescription= 次期 Android バージョン用のアプリを準備しましょう。
+page.image=images/cards/card-n-overview_2x.png
+meta.tags="プレビュー", "デベロッパー", "android"
+page.tags="preview", "developer", "android"
+
+@jd:body
+<!--
+<div class="cols" style=
+"background-color:#f2daf5; padding: 5px 0;margin-bottom:1em; text-align:center;">
+<h3>
+    Developer Preview 3 is now available
+  </h3>
+  <p>Includes final SDK and near-final system images</p>
+   <div style="margin:auto 1em">
+ <ul class="dac-section-links">
+    <li class="dac-section-link">
+      <a href="{@docRoot}preview/support.html#preview3-notes">
+      <span class="dac-sprite dac-auto-chevron"></span>
+      Read the Notes</a>
+    </li>
+
+    <li class="dac-section-link">
+      <a href="{@docRoot}preview/support.html#preview3-get">
+      <span class="dac-sprite dac-auto-chevron"></span>
+      Get the Update</a>
+    </li>
+
+    <li class="dac-section-link">
+      <a href="https://code.google.com/p/android-developer-preview/">
+      <span class="dac-sprite dac-auto-chevron"></span>
+      Report Issues</a>
+    </li>
+  </ul>
+  </div>
+</div>
+-->
+
+<p>
+  <strong>Android N Developer Preview</strong> には、Android の次期バージョンに備えてアプリをテストし、最適化するための機能がすべて備わっています。N Developer Preview 用のツールをダウンロードするだけで、今すぐ無料でご利用いただけます。
+
+
+
+</p>
+
+
+
+
+
+
+
+<div style="background-color:#eceff1;padding:1em;">
+<div class="wrap">
+  <div class="cols">
+    <div class="col-4of12">
+      <h5>
+        ハードウェアとエミュレータのイメージ
+      </h5>
+
+      <p>
+        さまざまなデバイスやエミュレータでアプリを動かしてテストできます。
+
+      </p>
+    </div>
+
+    <div class="col-4of12">
+      <h5>
+        最新のプラットフォームのコード
+      </h5>
+
+      <p>
+        プレビュー期間は毎月アップデートされるので、最新のプラットフォームで変更された箇所のテストを実施できます。
+      </p>
+    </div>
+
+    <div class="col-4of12">
+      <h5>
+        デベロッパー不具合の優先
+      </h5>
+
+      <p>
+        最初の数週間でデベロッパーから報告された問題に優先的に対応するので、テストの実施とフィードバックはお早めにお願いします。
+
+      </p>
+    </div>
+
+  </div>
+
+  <div class="cols">
+
+
+    <div class="col-4of12">
+      <h5>
+        新しい動作や機能
+      </h5>
+
+      <p>
+        新しいプラットフォーム動作への対応や、新機能を利用した開発を早い段階で開始できます。
+      </p>
+    </div>
+
+    <div class="col-4of12">
+        <h5>
+        OTA 配信によるアップデート
+      </h5>
+
+      <p>
+        Android ベータ版プログラムによる無線でのシームレスなアップデートに対応しているため、イメージを書き込む必要がありません。
+
+      </p>
+    </div>
+
+    <div class="col-4of12">
+      <h5>
+        フィードバックとサポート
+      </h5>
+
+      <p>
+        <a href="{@docRoot}preview/bug">Issue Tracker</a> で問題を報告し、フィードバックを送ってください。<a href="{@docRoot}preview/dev-community">N&nbsp;デベロッパー コミュニティ</a>では、他のデベロッパーと情報交換をすることができます。
+
+
+
+      </p>
+    </div>
+  </div>
+</div>
+</div>
+
+<!--
+<p>New in the Android N Developer Preview: </p>
+
+<ul>
+  <li> Accompanying Android Beta Program for consumers, starting later in the preview</li>
+  <li> More supported devices, including devices from OEM partners</li>
+  <li> Seamless OTAs for your devices, from initial release to final N release without flashing</li>
+</ul>
+-->
+
+<h2 id="timeline">スケジュールとアップデート</h2>
+<img src="{@docRoot}images/n-preview-updates_2x.png">
+
+<p>
+  N Developer Preview の対象期間は、2016 年 3 月 9 日から AOSP と OEM 向けの Android N の正式リリース(2016 年 の第 3 四半期を予定)までの間です。
+
+</p>
+
+<p>
+  主要な開発マイルストーンでアップデートをリリースしますので、開発やテスト用の環境としてご利用ください。リリース間隔は基本的には各月(4 週から 6 週に 1 回)の予定です。マイルストーンについては、以下をご覧ください。
+
+
+</p>
+
+<ul>
+  <li><strong><a href="{@docRoot}preview/support.html">Preview 1</a></strong>(初回リリース、アルファ版)</li>
+  <li><strong>Preview 2</strong>(追加アップデート、ベータ版)</li>
+  <li><strong>Preview 3</strong>(追加アップデート、ベータ版)</li>
+  <li><strong>Preview 4</strong>(最終版の API と正式な SDK、Google Play への公開)</li>
+  <li><strong>Preview 5</strong>(最終テスト用の最終版とほぼ同じシステム イメージ)</li>
+  <li>AOSP とエコシステムへの<strong>最終リリース</strong></li>
+</ul>
+
+<p>
+  各アップデートには、SDK ツールとプレビュー版のシステム イメージ、エミュレータ、参考資料、API の差分情報が含まれます。
+
+</p>
+
+<p>
+  <strong>最初の 3 つのプレビュー マイルストーン</strong>では、<strong>初期段階のテストや開発用の環境</strong>を提供します。それを利用して既存のアプリにおける互換性の問題を特定し、新規プラットフォームへの移行や主な作業計画を立ててください。この期間は各種機能や API、ファイル互換性の問題など、あらゆるフィードバックを受け付けている貴重な期間です。ぜひ <a href="{@docRoot}preview/bug">Issue Tracker</a> を使用して、皆様のご意見をお聞かせください。いただいたフィードバックをもとに、一部の API を改善してアップデートで提供する予定です。
+
+
+
+
+
+
+</p>
+
+<p>
+  <strong>Preview 4 と 5</strong> には、開発に使用する <strong>Android N の最終版の API と SDK</strong>、システム動作や機能のテストに使用する最終版とほぼ同じシステム イメージが含まれます。この時点で Android N の標準 API レベルが確定しますので、以後は既存アプリの最終的な互換性テストを開始し、Android N の API や機能を使った新しいコードを改善できるようになります。
+
+
+
+
+</p>
+
+<p>
+  さらに Preview 4 以降では、正式な API レベルの Android N を搭載している<strong>デバイスにアプリを公開</strong>できるようになります(Android ベータ版プログラムにオプトインしたユーザーのデバイスなどが対象)。なお、アプリは Google Play のアルファ版やベータ版のチャネルで先に配信できるので、ストア全体に公開する前に、Android ベータ版のユーザーに事前にアプリをテストしてもらうことが可能です。
+
+
+
+
+
+</p>
+
+<p>
+  Android N でテストや開発を行う場合、プレビューのアップデートがリリースされるたびに<strong>開発環境を最新の状態に更新する</strong>ことを強くお勧めします。その際はテスト用のデバイスを Android ベータ版プログラムに登録して、マイルストーンごとに<strong>無線(OTA)でアップデート</strong>を取得するようにしておくと便利です。もしくはプレビュー イメージを手動でダウンロードして書き込むこともできます。
+
+
+
+
+
+</p>
+
+<p>
+  プレビュー アップデートをご利用いただけるようになった際は <a href="http://android-developers.blogspot.com/">Android デベロッパー ブログ</a>、本サイト、<a href="{@docRoot}preview/dev-community">Android N デベロッパー コミュニティ</a>でお知らせします。
+
+
+</p>
+
+
+<h2 id="preview_tools">N Developer Preview の概要</h2>
+
+<p>
+  N Developer Preview は、既存のアプリをさまざまな画面サイズ、ネットワーク テクノロジー、CPU や GPU チップセット、ハードウェア アーキテクチャでテストするために必要なものをすべて備えています。
+
+
+</p>
+
+<h3 id="sdk_tools">SDK ツール</h3>
+
+<p>各コンポーネントは <a href="{@docRoot}sdk/installing/adding-packages.html">Android Studio</a> の SDK Manager を使ってダウンロードできます。</p>
+
+<ul>
+  <li> N Developer Preview の <strong>SDK とツール</strong>
+  <li> N Developer Preview の<strong>エミュレータ システム イメージ</strong>(32 ビット版と 64 ビット版)
+  <li> N Developer Preview の <strong>Android TV 版エミュレータ システム イメージ</strong>(32 ビット版)
+  <li> N Developer Preview サポート ライブラリ(新規アプリのテンプレート用)
+</ul>
+
+<p>
+  上記のツールは、必要に応じて各マイルストーンでアップデートします。
+</p>
+
+<h3 id="hardware_system_images">ハードウェアのシステム イメージ</h3>
+
+<p>
+  N Developer Preview に含まれる Nexus などのハードウェアのシステム イメージを使用すると、実機でテストや開発ができます。ハードウェア イメージの一覧は、<a href="{@docRoot}preview/download.html">デバイス イメージ</a>のページでご確認ください。
+
+
+</p>
+
+<p>
+  これらのデバイス用のシステム イメージは、各マイルストーンでアップデートします。アップデートされたシステム イメージは、何度でもダウンロードしてテスト用のデバイスに手動で書き込むことができます。自動化されたテスト環境では、繰り返しデバイスに再書き込みをする必要があるので、この方法は特に便利です。
+
+
+
+
+</p>
+
+<p class="note"><strong>注:</strong> 昨年のプレビュー版とは違い、<strong>手動で書き込みをしたデバイスは OTA アップデートを取得できなくなります</strong>。そのため、今年はデバイスを Android ベータ版プログラムに登録して、OTA を取得するようにしてください。 詳細は次のセクションに記載しています。
+
+
+
+</p>
+
+<h3 id="android_beta">Android ベータ版プログラムによる OTA アップデート</h3>
+
+<p>
+  Android N は、新たに無線(OTA)アップデート プログラムに対応しています。このプログラムに登録しているデバイスには、Android N の最新プレビュー版へのアップデートが直接自動配信されます。登録は無料で、Google アカウントに登録済みの対象機種を所有していれば誰でもご利用いただけます。
+
+
+
+</p>
+
+<p>
+  このプログラムに登録するには、まず <a href="https://g.co/androidbeta">Android ベータ版プログラム</a>のサイトに移動します。このページには、Android ベータ版プログラムに登録可能なアカウントに登録済みデバイスの一覧が表示されます。
+
+
+
+</p>
+
+<ol>
+  <li> Android N のアップデートを取得するデバイスを選択します。
+  <li> [Enroll] をクリックして利用規約を読み、合意したら [OK] をクリックします。
+</ol>
+
+<p>
+  登録が完了すると、すぐにデバイスにアップデートが配信されます。ほとんどの場合、Android N に移行する際にデータのオールリセットは不要ですが、デバイスの登録前には大事なデータをバックアップしておくことをお勧めします。
+
+
+
+</p>
+
+<p>
+  デバイスにアップデートが配信されたら、できるだけ早めにダウンロードしてインストールするようにしてください。そうすることで常に最新のシステム UI や 動作、API、さまざまな機能の変更点を把握できます。
+
+
+</p>
+
+<p>
+  Developer Preview の終了時には、登録デバイスに Android N の正式リリース版へのアップデートが配信されます。
+
+</p>
+
+<p>
+  デバイスはいつでも Android ベータ版プログラムへの登録を解除できます。登録を解除する前には、デバイス上のデータを必ずバックアップしておいてください。
+
+
+</p>
+
+  <p class="note"><strong>注:</strong> 登録を解除すると、<strong>デバイスはファクトリー リセットされ</strong>、Android 6.0 Marshmallow の最新バージョンになります(デバイスを登録する前のバージョンに戻るとは限りません)。確実にクリーン インストールを行うため、連絡先やメッセージ、写真などのデバイス上のデータは削除されます。
+
+
+
+
+
+
+</p>
+
+<h3 id="documentation_and_sample_code">ドキュメントとサンプル コード</h3>
+
+<p>
+  Developer Preview サイトにあるドキュメントで、Android&nbsp;N の詳細をご確認いただけます。
+
+</p>
+
+<ul>
+  <li> <a href="{@docRoot}preview/setup-sdk.html">Android N 向けの開発準備</a>では、はじめの手順をステップごとに説明しています。
+
+</li>
+  <li> <a href="{@docRoot}preview/behavior-changes.html">動作の変更点</a> には、集中的にテストを実施すべき箇所が記載されています。
+</li>
+  <li> 新規 API に関するドキュメントには、<a href="{@docRoot}preview/api-overview.html">API 概要</a>、ダウンロード可能な <a href="{@docRoot}preview/setup-sdk.html#docs-dl">API リファレンス</a>などが含まれています。また、マルチ ウィンドウのサポート、バンドル通知、マルチロケールのサポートなどの主要機能についての詳細なデベロッパー ガイドも含まれています。
+
+
+
+  <li> <a href="{@docRoot}preview/samples.html">サンプル コード</a>では、パーミッションや他の新機能の使用方法を確認できます。
+
+  <li> 現行バージョンの N Developer Preview の<a href="{@docRoot}preview/support.html#release-notes">リリース ノート</a>では、変更履歴や差分レポートなどを確認できます。
+
+
+</ul>
+
+<h4 id="reference">ダウンロード可能な API リファレンス</h4>
+
+<p>
+  初期のプレビュー アップデートでは、<a href="{@docRoot}preview/setup-sdk.html#docs-dl">Android N プラットフォーム用の API リファレンス</a>の最新版を個別の zip ファイルとしてダウンロードできます。このリファレンスには差分レポートも含まれているので、API 23 や以前のアップデートからの API の変更点をご確認いただけます。
+
+
+
+
+</p>
+
+<p>
+  Android N の API が最終決定して正式な API レベルが割り当てられた時点で、API リファレンスを <a href="https://developer.android.com">https://developer.android.com</a> で公開します。
+
+</p>
+
+<h3 id="support_resources">
+  サポート リソース
+</h3>
+
+<p>
+  N Developer Preview のテスト中や開発中は、以下の方法で不具合の報告やフィードバックの送信を行ってください。
+
+</p>
+
+<ul>
+  <li> <strong>主なフィードバック手段</strong>は、<a href="https://code.google.com/p/android-developer-preview/">N Developer Preview Issure Tracker</a> です。これを使うと、バグやパフォーマンスの問題、一般的なフィードバックを報告できます。さらに<a href="{@docRoot}preview/bug">既知の問題</a>や、その回避方法もご確認いただけます。報告いただいた問題は常に最新の情報に更新されるので、重要度が判定されたり、問題が Android エンジニア チームに引き継がれたことを確認できます。
+
+
+
+
+ </li>
+  <li> <a href="{@docRoot}preview/dev-community">Android N デベロッパー コミュニティ</a>は、Android N に携わっている<strong>デベロッパー同士がつながる</strong> Google+ のコミュニティです。Android N について意見交換をしたり、疑問点を解消したりする場としてご活用ください。Google はこのコミュニティを管理し、必要に応じて回答やアドバイスをします。
+
+
+
+</li>
+</ul>
+
+<h3 id="targeting">ターゲット、プレビュー API、公開</h3>
+
+<p>
+  N Developer Preview では開発専用のシステムと、<strong>標準 API レベルを持たない</strong> Android ライブラリを提供します。アプリのテストで互換動作を除外する場合(強く推奨します)、アプリの <code><a href=
+  "{@docRoot}preview/setup-sdk.html#create-update">targetSdkVersion</a></code> を <code>“N”</code> に設定することで Android N の プレビュー版を対象にすることができます。
+
+
+
+
+
+</p>
+
+<p>
+  Android N Developer Preview では、<strong>プレビュー API</strong> を提供しています。この API は、2016 年の第 3 四半期に予定している最終版 SDK のリリースまで正式版ではありません。そのため、プログラム開始後の数週間は特に<strong>軽微な API 変更が発生することが予想されます</strong>。変更点の概要については、Android N Developer Preview がアップデートされるたびにお知らせします。
+
+
+
+
+
+</p>
+
+<p class="note">
+  <strong>注:</strong> プレビュー API は変更される可能性がありますが、システムの基幹にかかわる機能には変更はありませんので、すぐにテストしていただけます。
+
+
+</p>
+
+<p>
+  Google Play では <strong>N Developer Preview を対象としたアプリの配信を禁止</strong>しています。Android N の最終版 SDK がリリースされてからは、正式な Android N の API レベルを対象にして、アルファ版またはベータ版のリリース チャンネルでアプリを Google Play に公開できます。それまでは、Android N を対象とするアプリをテスターに配信する場合は、電子メールで送付するか、自身のサイトから直接ダウンロードしてもらうようにしてください。
+
+
+
+
+
+</p>
+
+<p>
+  AOSP と OEM 向けの Android N のフルリリースは 2016 年度の第 3 四半期を予定しています。その後は、Android N 向けのアプリを Google Play の公式リリース チャンネルで配信いただけます。
+
+
+</p>
+
+
+<h2 id="how_to_get_started">開始するには</h2>
+
+<p>
+  以下の手順で Android N を使用したアプリのテストを開始できます。
+</p>
+
+<ol>
+  <li> <a href="{@docRoot}preview/api-overview.html">API 概要</a>や<a href="{@docRoot}preview/behavior-changes.html">動作の変更点</a>を参照して、新機能や自身のアプリへの影響をご確認ください。特に新しい<a href="{@docRoot}preview/features/notification-updates.html">通知</a>機能と<a href="{@docRoot}preview/features/multi-window.html">マルチ ウィンドウ</a>機能について把握しておくことをお勧めします。
+
+
+
+</li>
+  <li> <a href="{@docRoot}preview/setup-sdk.html">Preview SDK のセットアップ</a>手順に従い、ご利用の環境をセットアップしてテスト用デバイスの設定をします。
+</li>
+  <li> <a href="https://developers.google.com/android/nexus/images">書き込み手順</a>に従い、最新の Android N のシステム イメージを 自身のデバイスに書き込みます。
+ </li>
+  <li> <a href="{@docRoot}preview/setup-sdk.html#docs-dl">API リファレンス</a>や <a href="{@docRoot}preview/samples.html">Android N のサンプル</a>を参考に API の新機能について理解を深め、それらを自身のアプリに利用する方法をご検討ください。
+
+
+  <li> <a href="{@docRoot}preview/dev-community">Android N デベロッパー コミュニティ</a>に参加すると、最新のニュースを入手でき、新しいプラットフォームを利用している開発者同士で交流ができます。
+
+</li>
+</ol>
+
+<p>
+  Android N Developer Preview プログラムへの参加をお待ちしています。
+</p>
diff --git a/docs/html-intl/intl/ja/preview/samples.jd b/docs/html-intl/intl/ja/preview/samples.jd
new file mode 100644
index 0000000..30c391e
--- /dev/null
+++ b/docs/html-intl/intl/ja/preview/samples.jd
@@ -0,0 +1,85 @@
+page.title=サンプル
+page.tags="preview", "samples", "android"
+page.image=images/cards/card-n-samples_2x.png
+@jd:body
+
+<p>
+  以下は Android N のサンプルコードです。サンプルを Android Studio でダウンロードするには、<b>[File] &gt; [Import Samples]</b> メニュー オプションを選択します。
+
+
+</p>
+
+<p class="note">
+  <strong>注:</strong> 以下のダウンロード可能なプロジェクトは、Gradle と Android Studio でご利用いただくために提供しています。
+
+</p>
+
+
+<h3 id="mw">マルチ ウィンドウ Playground</h3>
+<img src="{@docRoot}preview/images/sample-multiwindow.png" style="float: left; padding-right: 0.5em" height="250" width="156" />
+<p>
+  このサンプルでは、自身のアプリでマルチ ウィンドウのユーザー インターフェースを使用する方法をご確認いただけます。
+
+</p>
+<p>
+  <a href="https://github.com/googlesamples/android-MultiWindowPlayground">GitHub でサンプルを入手</a>
+
+</p>
+
+<div style="clear: both;"></div>
+<h3 id="an">アクティブ通知</h3>
+<img src="{@docRoot}preview/images/sample-activenotifications.png" style="float: left; padding-right: 0.5em" height="250" width="141" />
+<p>
+  NotificationCompat を用いて通知を送信するシンプルなサービスをご確認いただる既存のサンプルです。ユーザからの未読メッセージは、それぞれ別の通知として送信されます。
+
+
+</p>
+<p>
+  このサンプルは、Android N 向けの新たな通知機能を利用できるようにアップデートされています。
+
+</p>
+<p>
+  <a href="https://github.com/googlesamples/android-ActiveNotifications">GitHub でサンプルを入手</a>
+
+</p>
+
+<div style="clear: both;"></div>
+<h3 id="ms">メッセージ サービス</h3>
+<img src="{@docRoot}preview/images/sample-messagingservice.png" style="float: left; padding-right: 0.5em" height="250" width="150" />
+<p>
+  1 つのアプリで表示している通知の件数を NotificationManager で取得する方法をご確認いただける既存のサンプルです。
+
+
+</p>
+<p>
+  このサンプルは、Android N 向けの新たな通知機能を利用できるようにアップデートされています。
+
+</p>
+<p>
+  <a href="https://github.com/googlesamples/android-MessagingService">GitHub でサンプルを入手</a>
+
+</p>
+
+<div style="clear: both;"></div>
+<h3 id="fbe">ダイレクト ブート</h3>
+<img src="{@docRoot}preview/images/sample-directboot.png" style="float: left; padding-right: 0.5em" height="250" width="141" />
+<p>
+  このサンプルでは、デバイスの暗号化ストレージ内のデータにアクセスしたり、データを保存したりする方法をご確認いただけます。この機能はデバイスが起動している間は常に有効です。
+
+</p>
+<p>
+  <a href="https://github.com/googlesamples/android-DirectBoot">GitHub でサンプルを入手</a>
+
+</p>
+
+<div style="clear: both;"></div>
+<h3 id="sda">特定のディレクトリへのアクセス</h3>
+<img src="{@docRoot}preview/images/sample-scopeddirectoryaccess.png" style="float: left; padding-right: 0.5em" height="250" width="141" />
+<p>
+  このサンプルでは、より少ないパーミッションで、特定のディレクトリに対するデータの読み出しや書き込みを行う方法をご確認いただけます。
+
+</p>
+<p>
+  <a href="https://github.com/googlesamples/android-ScopedDirectoryAccess">GitHub でサンプルを入手</a>
+
+</p>
\ No newline at end of file
diff --git a/docs/html-intl/intl/ja/preview/setup-sdk.jd b/docs/html-intl/intl/ja/preview/setup-sdk.jd
new file mode 100644
index 0000000..8f3cd06
--- /dev/null
+++ b/docs/html-intl/intl/ja/preview/setup-sdk.jd
@@ -0,0 +1,226 @@
+page.title=プレビューのセットアップ
+meta.keywords="プレビュー"、"android"
+page.tags="preview", "developer preview"
+page.image=images/cards/card-n-sdk_2x.png
+
+@jd:body
+
+
+<div id="qv-wrapper">
+  <div id="qv">
+<ol>
+  <li><a href="#get-as13">Android Studio 2.1 を入手する</a></li>
+  <li><a href="#get-sdk">Android N SDK を入手する</a>
+    <ol>
+      <li><a href="#docs-dl">リファレンス ドキュメント</a>
+    </ol>
+  </li>
+  <li><a href="#java8">Java 8 JDK および JRE を入手する</a></li>
+  <li><a href="#create-update">プロジェクトをアップデートまたは作成する</a></li>
+  <li><a href="#next">次のステップ</a></li>
+</ol>
+  </div>
+</div>
+
+<p>このページで説明しているように、Android N Preview 向けのアプリを開発するには、デベロッパー環境をアップデートする必要があります。
+</p>
+
+<p>Android N システム イメージでアプリの互換性を簡単にテストするには、<a href="{@docRoot}preview/download.html">Android N デバイスでのテスト</a>に関するガイドに従ってください。
+</p>
+
+<img src="{@docRoot}preview/images/n-preview-setup.png" width="700" alt="" />
+
+
+<h2 id="get-as13">Android Studio 2.1(プレビュー)を入手する</h2>
+
+<p>Android N プラットフォームには、Jack と呼ばれる新しいコンパイラーが必要な <a href="{@docRoot}preview/j8-jack.html">Java 8 機能</a>のサポートが追加されています。現在、最新バージョンの Jack は、Android Studio 2.1 のみでサポートされています。したがって、Java 8 機能を使用する場合は、Android Studio 2.1 を使用してアプリをビルドする必要があります。Java 8 機能を使用しない場合は Jack コンパイラーを使用する必要はありません。ただし、以下に説明するように、Android N プラットフォームを対象にコンパイルを行うには、JDK 8 にアップデートする必要があります。
+
+
+
+
+
+
+</p>
+
+<iframe width="400" height="225" src="//www.youtube.com/embed/SBbWGxXCMqQ?autohide=1&amp;showinfo=0" frameborder="0" allowfullscreen="" style="float: right; margin: 0 0 20px 20px;"></iframe>
+
+<p>現在、Android Studio 2.1 は、先行リリース チャンネルでプレビューとして入手できます。Android Studio を既に入手していて、先行チャンネル版にアップデートしない場合は、Android Studio 2.1 を個別のインストールとしてダウンロードして、Android N での開発に使用することにより、Android Studio のプライマリ環境に影響を及ぼさないようにすることができます。
+
+
+
+
+</p>
+
+<p>Android Studio 2.1 を個別のインストールとしてダウンロードするには、次のステップを実行します(既存のインストールを Android Studio 2.1 にアップデートする場合は、ステップ 4 に進んでください)。
+
+</p>
+
+<ol>
+  <li>Android Studio の既存のインストールの名前を編集し、バージョン番号を末尾に追加します。このようにすると、新しいバージョンをインストールしたときに、新しいバージョンが既存のバージョンを上書きしません。
+
+</li>
+  <li><a href="http://tools.android.com/download/studio/canary/latest">先行チャンネルのダウンロード ページ</a>から、お使いのオペレーティング システムに対応した ZIP ファイルをダウンロードします。
+
+  </li>
+  <li>パッケージを解凍し、アプリケーションを配置するシステム上の適切な場所に Android Studio 2.1 の内容を移動してから起動します。
+</li>
+  <li>設定ダイアログを開きます(Windows、Linux では <strong>[File] &gt; [Settings]</strong>、Mac では <strong>[Android Studio] &gt; [Preferences]</strong>)。左側のパネルで、<strong>[Appearance &amp; Behavior] &gt; [System Settings] &gt; [Updates]</strong> を選択します。
+
+
+
+
+  </li>
+  <li>[Updates] パネルで、[<strong>Automatically check updates for</strong>] チェック ボックスを選択し、ドロップダウン リストから [<strong>Canary Channel</strong>] を選択します。
+
+
+  </li>
+</ol>
+
+<p>次のステップのために、この設定ウィンドウを開いたままにします。</p>
+
+
+<h2 id="get-sdk">N Preview SDK を入手する</h2>
+
+<p>Android N API を使用して開発を開始するには、次のステップに従って、Android Studio に Android N Preview SDK をインストールする必要があります。
+</p>
+
+<ol>
+  <li>開いたままにしている [Updates] パネル(上記のステップ 4)で、[<strong>Automatically check updates for Android SDK</strong>] チェック ボックスを選択し、ドロップダウン リストから [<strong>Preview Channel</strong>] を選択します。
+
+
+
+  </li>
+  <li>[<strong>Check Now</strong>] をクリックします。</li>
+
+  <li>左側のパネルで、<strong>[Appearance &amp; Behavior] &gt; [System Settings] &gt; [Android SDK]</strong> を選択します。
+
+
+  <li>[<strong>SDK Platforms</strong>] タブをクリックして、[<strong>Android N Preview</strong>] チェック ボックスを選択します。
+</li>
+
+  <li><strong>[SDK Tools]</strong> タブをクリックして <strong>[Android SDK Build Tools]</strong>、<strong>[Android SDK Platform-Tools]</strong>、<strong>[Android SDK Tools]</strong> のチェック ボックスを選択します。
+
+
+
+  </li>
+
+  <li>[<strong>OK</strong>] をクリックして、インストールするパッケージの使用許諾に同意します。
+
+  </li>
+</ol>
+
+<h3 id="docs-dl">N Preview のリファレンス ドキュメントを入手する</h3>
+
+<p>
+  Android N API に関する詳細は、N Preview のリファレンス ドキュメントに記載されています。このドキュメントは、次の表からダウンロードできます。このパッケージには、簡略化されたオフライン バージョンの Android デベロッパー ウェブサイト、Android N API のアップデートされた API リファレンス、API の比較レポートが含まれています。
+
+
+
+
+</p>
+
+<table>
+  <tr>
+    <th scope="col">ドキュメント</th>
+    <th scope="col">チェックサム</th>
+  </tr>
+  <tr>
+    <td style="white-space: nowrap">
+    <a href="{@docRoot}shareables/preview/n-preview-1-docs.zip">n-preview-1-docs.zip</a></td>
+    <td width="100%">
+      MD5: 4ab33ccbe698f46f125cc5b807cf9c2f<br>
+      SHA-1: 6a3880b3ccd19614daae5a4d0698ea6ae11c20a5
+    </td>
+  </tr>
+<table>
+
+
+
+<h2 id="java8">Java 8 JDK および JRE を入手する</h2>
+
+<p>Android N プラットフォームを対象にしたアプリをコンパイルするには、Java 8 Developer Kit(JDK 8)を使用する必要があります。また、Android Studio 2.1 でいくつかのツールを使用するには、Java 8 Runtime Environment(JRE 8)をインストールする必要があります。したがって、JDK 8 と JRE 8 の最新バージョンを持っていない場合は、すぐに JDK 8 と JRE 8 をダウンロードしてください。
+
+
+
+</p>
+
+<p>その後、次のステップに従って Android Studio で JDK のバージョンを設定します。</p>
+
+<ol>
+  <li>Android Studio で Android プロジェクトを開いてから、<strong>[File] &gt; [Project Structure]</strong> を選択して、[Project Structure] ダイアログを開きます(または、<strong>[File] &gt; [Other Settings] &gt; [Default Project Structure]</strong> を選択すると、すべてのプロジェクトのデフォルトを設定できます)。
+
+
+
+
+   </li>
+   <li>ダイアログの左側のパネルで、[<strong>SDK Location</strong>] をクリックします。
+   </li>
+   <li>[<strong>JDK Location</strong>] フィールドに Java 8 JDK の場所を入力し(ファイルを参照するには、右側のボタンをクリックします)、[<strong>OK</strong>] をクリックします。
+
+
+   </li>
+</ol>
+
+<img src="{@docRoot}preview/images/studio-jdk-location.jpg" width="700" alt="" />
+
+
+<h2 id="create-update">プロジェクトをアップデートまたは作成する</h2>
+
+<p>
+  Android N API を使用するには、プロジェクトが適切に構成されている必要があります。
+</p>
+
+<p>Java 8 機能の使用を計画している場合は、<a href="{@docRoot}preview/j8-jack.html">Java 8 機能</a>を読んで、サポートされる Java 8 機能に関する情報と、プロジェクトで Jack コンパイラーを構成する方法を確認してください。
+
+
+</p>
+
+
+<h3 id="update">既存のプロジェクトをアップデートする</h3>
+
+<p>モジュールの <code>build.gradle</code> ファイルを開き、次のように値をアップデートします。
+
+
+</p>
+
+<pre>
+android {
+  compileSdkVersion <strong>'android-N'</strong>
+  buildToolsVersion <strong>'24.0.0-rc1'</strong>
+  ...
+
+  defaultConfig {
+     minSdkVersion <strong>'N'</strong>
+     targetSdkVersion <strong>'N'</strong>
+     ...
+  }
+  ...
+}</pre>
+
+
+<h3 id="create">新しいプロジェクトを作成する</h3>
+
+
+<p>Android N Preview SDK を使って、開発のために新しいプロジェクトを作成するには、次のステップを実行します。</p>
+
+<ol>
+  <li><strong>[File] &gt; [New Project]</strong> をクリックし、対象とする Android 端末のページに到達するまでのステップを実行します。
+
+  </li>
+  <li>このページで、[<strong>Phone and Tablet</strong>] オプションを選択します。</li>
+  <li>[<strong>Phone and Tablet</strong>] オプションの下にある [<strong>Minimum SDK</strong>] オプション リストで、[<strong>N: Android API 23, N Preview (Preview)</strong>] を選択します。
+
+</li>
+</ol>
+
+
+<h2 id="next">次のステップ</h2>
+
+<ul>
+  <li><a href="{@docRoot}preview/download.html">Android N デバイスでのテスト</a>に関するガイドに従ってください。</li>
+  <li>Android N プラットフォームの詳細については、<a href="{@docRoot}preview/behavior-changes.html">動作の変更点</a>と <a href="{@docRoot}preview/api-overview.html">Android N API とその機能</a>をご覧ください。
+
+
+</li>
+</ul>
+
diff --git a/docs/html-intl/intl/ja/training/tv/start/hardware.jd b/docs/html-intl/intl/ja/training/tv/start/hardware.jd
index ccf20fa..76fb56f 100755
--- a/docs/html-intl/intl/ja/training/tv/start/hardware.jd
+++ b/docs/html-intl/intl/ja/training/tv/start/hardware.jd
@@ -105,16 +105,20 @@
 <pre>
 &lt;uses-feature android:name="android.hardware.touchscreen"
         android:required="false"/&gt;
+&lt;uses-feature android:name="android.hardware.faketouch"
+        android:required="false"/&gt;
 &lt;uses-feature android:name="android.hardware.telephony"
         android:required="false"/&gt;
 &lt;uses-feature android:name="android.hardware.camera"
         android:required="false"/&gt;
 &lt;uses-feature android:name="android.hardware.nfc"
         android:required="false"/&gt;
-&lt;uses-feature android:name="android.hardware.gps"
+&lt;uses-feature android:name="android.hardware.location.gps"
         android:required="false"/&gt;
 &lt;uses-feature android:name="android.hardware.microphone"
         android:required="false"/&gt;
+&lt;uses-feature android:name="android.hardware.sensor"
+        android:required="false"/&gt;
 </pre>
 
 <p>
diff --git a/docs/html-intl/intl/ko/preview/api-overview.jd b/docs/html-intl/intl/ko/preview/api-overview.jd
new file mode 100644
index 0000000..0e1a385
--- /dev/null
+++ b/docs/html-intl/intl/ko/preview/api-overview.jd
@@ -0,0 +1,676 @@
+page.title=개발자용 Android N
+meta.tags="프리뷰", "androidn"
+page.tags="preview", "developer preview"
+page.image=images/cards/card-n-apis_2x.png
+@jd:body
+
+
+
+
+<div id="qv-wrapper">
+<div id="qv">
+  <h2>주요 개발자 기능</h2>
+  <ol>
+      <ul style="list-style-type:none;">
+        <li><a href="#multi-window_support">다중 창 지원</a></li>
+        <li><a href="#notification_enhancements">알림</a></li>
+        <li><a href="#jit_aot">JIT/AOT 컴파일</a></li>
+        <li><a href="#quick_path_to_app_install">앱 설치를 위한 빠른 경로</a></li>
+        <li><a href="#doze_on_the_go">이동 중에 Doze</a></li>
+        <li><a href="#background_optimizations">백그라운드 최적화</a></li>
+        <li><a href="#data_saver">Data Saver</a></li>
+        <li><a href="#tile_api">빠른 설정 타일 API</a></li>
+        <li><a href="#number-blocking">번호 차단</a></li>
+        <li><a href="#call_screening">통화 스크리닝</a></li>
+        <li><a href="#multi-locale_languages">로케일 및 언어</a></li>
+        <li><a href="#icu4">Android의 ICU4J API</a></li>
+        <li><a href="#gles_32">OpenGL ES 3.2 API</a></li>
+        <li><a href="#android_tv_recording">Android TV 녹화</a></li>
+        <li><a href="#android_for_work">Android for Work</a></li>
+        <li><a href="#accessibility_enhancements">접근성</a></li>
+        <li><a href="#direct_boot">직접 부팅</a></li>
+        <li><a href="#key_attestation">Key Attestation</a></li>
+        <li><a href="#network_security_config">네트워크 보안 구성</a></li>
+        <li><a href="#default_trusted_ca">신뢰할 수 있는 기본 CA</a></li>
+        <li><a href="apk_signature_v2">APK 서명 구성표 v2</a></li>
+        <li><a href="#scoped_directory_access">범위가 지정된 디렉터리 액세스</a></li>
+      </ol>
+</div>
+</div>
+
+
+
+<p>Android N은 아직 한창 개발 중이지만, N Developer Preview를
+통해 지금 Android N을 일부 체험해 볼 수 있습니다. 아래 섹션에서는
+개발자를 위한 몇 가지 새로운 기능을 중점적으로 다룹니다. </p>
+
+<p>
+  플랫폼 변경사항이 앱에 영향을 미칠 수도 있는 부분에
+대해 알아보려면 <a href="{@docRoot}preview/behavior-changes.html">동작 변경사항</a>을 살펴보고,
+주요 기능에 대해 자세히 알아보려면 개발자 가이드를 참조하고, 새로운 API에 대한 자세한
+내용은 <a href="{@docRoot}preview/setup-sdk.html#docs-dl">API 참조</a>를 다운로드하세요.
+</p>
+
+<h2 id="multi-window_support">다중 창 지원</h2>
+
+
+<p>Android N에서 저희는 요청이 많은 새로운 멀티태스킹
+기능인 다중 창 지원을 플랫폼에 도입하고 있습니다. </p>
+
+  <p>이제 사용자가 화면에서 두 개의 앱을 동시에 열 수 있습니다. </p>
+  <ul>
+  <li>Android N이 실행되는
+전화와 태블릿에서 사용자가 화면 분할 모드에서 두 개의 앱을
+나란히 또는 상하로 실행할 수 있습니다. 또한 앱 사이의 디바이더를 끌어서 앱의 크기를
+조정할 수 있습니다. </li>
+
+<li>Android TV 기기에서, 앱이 <a href="{@docRoot}preview/features/picture-in-picture.html">화면 속 화면
+모드</a>로 배치될 수 있으므로, 사용자가 검색을 수행하거나 다른
+앱과 상호작용하는 중에도 앱이 계속해서 콘텐츠를 표시할 수 있습니다. 자세한 내용은 아래를 참조하세요. </li>
+  </ul>
+
+<div class="col-4of10">
+<img src="{@docRoot}preview/images/mw-portrait.png" alt="" style="height:460px;padding-left:1em;" id="img-split-screen" />
+<p class="img-caption">
+  <strong>그림 1.</strong> 화면 분할 모드에서 실행되는 앱.
+</p>
+  </div>
+
+<p>특히 태블릿이나 다른 대형 화면 기기에서 다중 창
+지원을 통해 새로운 방식으로 사용자를 참여시킬 수 있습니다. 또한
+앱에서 끌어서 놓기 기능을 활성화하여 사용자가 편리하게 앱에 콘텐츠를 끌어다 놓거나 앱에서 콘텐츠를 끌어와서 놓을 수 있으므로,
+사용자 경험이 크게 개선됩니다. </p>
+
+<p>다중 창 지원을 앱에 추가하고 다중 창이 표시되는 방식을
+구성하는 것은 매우 간단합니다. 예를 들어, 자신의 액티비티에 대해
+최소 허용 크기를 지정할 수 있으며 이 경우 사용자는 이 크기보다
+작은 액티비티의 크기를 조정할 수 없습니다. 또한 앱에
+대해 다중 창 표시를 비활성화할 수도 있으며 이 경우 시스템은 앱을 전체 화면 모드에서만 표시합니다.</p>
+
+<p>
+  자세한 내용은 <a href="{@docRoot}preview/features/multi-window.html">다중 창 지원</a>
+개발자 문서를 참조하세요.
+</p>
+
+<h2 id="notification_enhancements">알림 향상</h2>
+
+<p>Android N에서 저희는 알림을 더 쉽고 빠르게 사용할 수
+있도록 재설계했습니다. 몇 가지 변경사항은 다음과 같습니다.</p>
+
+<ul>
+  <li>
+    <strong>템플릿 업데이트</strong>: 영웅 이미지와 아바타를 새롭게
+강조하기 위해 알림 템플릿을 업데이트하는
+중입니다. 개발자가 최소한의 코드 조정만으로 새로운 템플릿을 활용할 수가 있습니다.
+  </li>
+
+  <li>
+    <strong>묶음 알림</strong>: 시스템이 메시지를 서로
+그룹화하고(예: 메시지 주제별로 그룹화) 이 그룹을 표시할 수 있습니다.
+사용자는 그룹에 대해 닫기 또는 아카이브 등의 작업을 적절히 수행할 수
+있습니다. Android Wear용 알림을 구현한 적이 있다면 이미 이 모델에 친숙할
+것입니다.
+  </li>
+
+  <li>
+    <strong>직접 회신</strong>: 실시간 통신 앱의 경우, Android 시스템은
+인라인 회신을 지원하므로, 사용자가 알림 인터페이스
+내에서 신속하게 SMS 또는 문자 메시지에 응답할 수 있습니다.
+  </li>
+
+  <li>
+    <strong>사용자 지정 뷰</strong>: 두 개의 새로운 API를 통해 사용자
+지정 뷰를 알림에 사용할 때 시스템 장식(예: 알림 헤더 및 작업)을
+활용할 수 있습니다.
+  </li>
+</ul>
+
+<div class="col-4of12">
+  <img src="{@docRoot}preview/images/notifications-1.png" alt="" style="padding:.5em;max-width:226px">
+</div>
+
+<div class="col-4of12">
+  <img src="{@docRoot}preview/images/notifications-3.png" alt="" style="padding:.5em;max-width:226px">
+</div>
+
+<div class="col-4of12">
+  <img src="{@docRoot}preview/images/notifications-2.png" alt="" style="padding:.5em;max-width:226px">
+</div>
+
+
+<p class="img-caption">
+  <strong>그림 2.</strong> 묶음 알림 및 직접 회신.
+</p>
+
+<p>새로운 기능을 구현하는 방법에 대해 알아보려면,
+<a href="{@docRoot}preview/features/notification-updates.html">알림</a>
+가이드를 참조하세요.</p>
+
+
+
+<h2 id="jit_aot">프로필 가이드 방식의 JIT/AOT 컴파일</h2>
+
+<p>Android N에서 코드 프로파일링을 포함한
+JIT(Just in Time) 컴파일러를 ART에 추가했으며, 실행 시에 Android 앱의
+성능이 계속해서 향상됩니다. JIT 컴파일러는 ART의 현재
+AOT(Ahead of Time) 컴파일러를 보완하고 런타임 성능을 개선하며,
+저장 공간을 절약하고, 앱 업데이트 및 시스템 업데이트 속도를 빠르게 해줍니다.</p>
+
+<p>프로필 가이드 방식의 컴파일을 통해 ART는 실제 사용량과 기기의
+조건에 따라 각 앱의 AOT/JIT 컴파일을 관리할 수 있습니다. 예를 들어,
+ART는 최적의 성능을 위해 각 앱의 핫 메서드에 대한 프로필을
+유지관리하고 이들 메서드를 프리컴파일하고
+캐싱할 수 있습니다. 이 경우 앱의 다른 부분들은 실제로 사용될 때까지 컴파일하지 않고 남겨둡니다.</p>
+
+<p>프로필 가이드 방식의
+컴파일은 앱의 주요 부분들에서 성능을 개선할
+뿐만 아니라 관련 바이너리를 비롯한 앱 전체의 RAM 공간을 줄이는 데 도움이 됩니다. 이 기능은 저용량 메모리 기기에 특히 중요합니다.</p>
+
+<p>ART는 기기 배터리에 미치는 영향이 최소화되는 방식으로
+프로필 가이드 방식의 컴파일을 관리합니다. ART는 기기가 유휴 상태이고
+충전 중일 때만 프리컴파일을 수행하며, 해당 작업을 미리 수행하여 시간과 배터리를 절약합니다.</p>
+
+<h2 id="quick_path_to_app_install">앱 설치를 위한 빠른 경로</h2>
+
+<p>ART의 JIT 컴파일러가 가진 가장 눈에 띄는 이점 중 하나는
+앱 설치 및 시스템 업데이트 속도가 빠르다는 것입니다.
+Android 6.0에서 최적화하고 설치하는 데 몇 분이 걸리는 대용량 앱조차도
+이제는 몇 초만에 설치가 가능합니다. 또한 최적화 단계가 없기 때문에 시스템 업데이트도 더 빠릅니다. </p>
+
+<h2 id="doze_on_the_go">이동 중에 Doze...</h2>
+
+<p>Android 6.0에서는 기기가 테이블 위나 서랍 안에
+있는 등 유휴 상태일 때 앱이 CPU와 네트워크를 사용하는 작업을 지연시키는 방식으로 배터리를
+절약하는 시스템 모드인 Doze를 도입했습니다. </p>
+
+<p>이제 Android N에서 Doze는 한걸음 더 나아가서 이동 중에도
+배터리를 절약합니다. 화면이 일정 시간 동안 꺼져있고 기기의 플러그가
+뽑혀있으면 Doze는 친숙한 일부 CPU 및 네트워크 제한을 앱에 적용합니다.
+즉, 사용자가 기기를 주머니에 휴대하고 다닐 때도 배터리를
+절약할 수 있습니다.</p>
+
+
+<img src="/preview/images/doze-diagram-1.png" alt="" id="figure1" />
+<p class="img-caption">
+  <strong>그림 3.</strong> 이제 Doze는 기기가 정지 상태가 아니더라도
+배터리 수명을 개선할 수 있도록 제한을 적용합니다.
+</p>
+
+
+<p>기기의 배터리가 켜져 있는 동안 화면이 꺼지면 잠시 후에
+Doze는 네트워크 액세스를 제한하고 작업과 동기화를 지연시킵니다.
+잠시 동안의 유지관리 기간 중에
+애플리케이션의 네트워크 액세스가 허용되고 지연된 작업/동기화가 실행됩니다.
+화면을 켜거나 기기의 플러그를 꽂으면 기기가 Doze 상태에서 벗어납니다.</p>
+
+<p>기기가 다시 일정 시간 동안 배터리가 켜져 있고 화면이 꺼진
+ 정지 상태가 되면, Doze는 {@link
+android.os.PowerManager.WakeLock}, {@link android.app.AlarmManager} 알람 및
+GPS/Wi-Fi 스캔에 대해 전체 CPU 및 네트워크 제한을 적용합니다.</p>
+
+<p>앱을 Doze에 맞게 적용하는 최선의 방법은 기기가 움직이든
+움직이지 않든 간에 동일합니다. 따라서 Doze를 효율적으로 처리하도록
+앱을 이미 업데이트했다면 모든 준비가 완료된 것입니다. 아직
+업데이트하지 않았다면 지금 <a href="{@docRoot}training/monitoring-device-state/doze-standby.html#assessing_your_app">앱을 Doze에 맞게 적용</a>해 보세요.</p>
+
+<h2 id="background_optimizations">Project Svelte: 백그라운드 최적화</h2>
+
+<p>Project Svelte는 에코시스템의 전체 Android 기기 범위에서 시스템 및 앱에
+의해 사용되는 RAM 크기를 최소화하기 위한 지속적인 노력입니다. Android N에서 Project
+Svelte는 앱이 백그라운드에서 실행되는 방식을 최적화하는 데 초점을 맞추고 있습니다. </p>
+
+<p>백그라운드 처리는 대부분의 앱에서 필수적인 부분입니다.
+백그라운드 처리가 올바로 수행된다면 신속하고, 빠르고, 상황에 맞는 멋진 사용자 경험을 제공하겠지만, 백그라운드
+처리가 올바로 수행되지 않는다면 불필요하게 RAM과 배터리를 소모하고
+다른 앱의 시스템 성능에 영향을 미칠 것입니다. </p>
+
+<p>Android 5.0 이후로, 사용자가 선호하는 백그라운드 작업
+수행 방식은 {@link android.app.job.JobScheduler}이었습니다. 메모리,
+전원 및 연결 조건에 따라 시스템을 최적화하면서도 앱으로
+작업을 예약할 수 있습니다. JobScheduler는 제어 기능과 간편성을 함께
+제공하므로, 저희는 모든 앱에서 이를 사용하기를 원합니다. </p>
+
+<p>
+  또 한가지의 좋은 옵션은 <a href="https://developers.google.com/android/reference/com/google/android/gms/gcm/GcmNetworkManager">
+<code>GCMNetworkManager</code></a>입니다. 이는 Google Play
+서비스의 일부분이며, 기존 Android 버전에서 호환성이
+있는 유사한 작업 예약 기능을 제공합니다.
+</p>
+
+<p>저희는 더 많은 사용 사례를 충족시키기 위해 <code>JobScheduler</code> 및
+<code>GCMNetworkManager</code>를 계속해서
+확장하고 있습니다. 예를 들어, 이제 Android N에서는 콘텐츠 제공자의 변화에 따라
+백그라운드 작업을 예약할 수 있습니다. 이와 동시에 저희는
+특히 저용량 메모리 기기에서 시스템 성능을 저하시킬
+수 있는 일부 오래된 패턴들을 없애기 시작했습니다.</p>
+
+<p>Android N에서 저희는 자주 사용되는 세 가지 암시적 브로드캐스트인
+{@link android.net.ConnectivityManager#CONNECTIVITY_ACTION}, {@link
+  android.hardware.Camera#ACTION_NEW_PICTURE} 및 {@link
+  android.hardware.Camera#ACTION_NEW_VIDEO}를
+제거하는 중입니다. 왜냐하면 이들은 여러 앱의 백그라운드 프로세스를 동시에 깨울 수 있으며 메모리와 배터리를 소모할 수 있기
+때문입니다. 자신의 앱이 이러한 브로드캐스트를 수신한다면, N Developer Preview를
+활용하여 <code>JobScheduler</code> 및 관련 API로 마이그레이션하세요. </p>
+
+<p>
+  자세한 내용은 <a href="{@docRoot}preview/features/background-optimization.html">백그라운드
+최적화</a> 문서를 참조하세요.
+</p>
+
+
+<h2 id="data_saver">Data Saver</h2>
+
+<div class="col-5of12" style="margin-right:1.5em;">
+<img src="{@docRoot}preview/images/datasaver.png" style="border:2px solid #ddd">
+
+<p class="img-caption" style="padding-right:2em;">
+  <strong>그림 4.</strong> 설정에서의 Data Saver.
+</p>
+  </div>
+
+<p>모바일 기기의 수명에 있어서, 셀룰러 데이터 플랜의 비용은
+일반적으로 기기 자체의 비용보다 더 많습니다.
+많은 사용자들에게 셀룰러 데이터는 아껴야 하는 값비싼 리소스입니다. </p>
+
+<p>Android N에서는 새로운 시스템 서비스인 Data Saver
+모드를 소개합니다. 이 모드는 로밍 시나 결제 주기가 끝날 무렵,
+또는 소액 선불 데이터 팩 사용 시에 앱이 소모하는 셀룰러
+데이터 사용량을 줄여줍니다. Data Saver를 통해 사용자는 앱이
+셀룰러 데이터를 사용하는 방식을 제어할 수 있으며, Data Saver가 켜져 있으면 개발자가 더 효율적인 서비스를 제공할 수 있습니다. </p>
+
+<p>사용자가 <strong>Settings</strong>에서 Data Saver를 활성화하고
+해당 기기가 데이터 통신 네트워크에 있는 경우, 시스템은 백그라운드
+데이터 사용을 차단하고, 가능하면 스트리밍의
+비트 속도를 제한하거나, 화질을 줄이거나, 낙관적 사전캐싱을
+지연시키는 등의 방식으로 포그라운드에서
+데이터를 더 적게 사용하도록 앱에게 신호를 보냅니다 . Data Saver가 켜진 경우에도 백그라운드 데이터 통신 연결을 허용하려면, 사용자가 특정 앱을 허용 목록에 추가할 수 있습니다.</p>
+
+<p>Android N은 {@link android.net.ConnectivityManager}를 확장하여 <a href="{@docRoot}preview/features/data-saver.html#status">사용자의
+Data Saver 기본 설정을 검색</a>하고 <a href="{@docRoot}preview/features/data-saver.html#monitor-changes">기본
+설정 변경을 모니터링</a>하는 방법을 앱에게 제공합니다.
+모든 앱은 사용자가 Data Saver를 활성화했는지 여부를 확인해야 하며
+포그라운드 및 백그라운드 데이터 사용을 제한하도록 노력해야 합니다.</p>
+
+
+<h2 id="tile_api">빠른 설정 타일 API</h2>
+
+
+<div style="float:right;max-width:320px">
+<img src="{@docRoot}preview/images/quicksettings.png" style="padding-left:1.5em;">
+
+<p class="img-caption" style="padding-left:2em;">
+  <strong>그림 5.</strong> 알림 창의 빠른 설정 타일.
+</p>
+
+
+  </div><p>빠른 설정은 알림 창에서 키 설정 및 작업을 직접 노출시키기
+위해 널리 사용되는 간단한 방법입니다. 더욱 유용하고 편리한 설정을
+위해 저희는 Android N에서 빠른 설정의 범위를 더욱 확장했습니다. </p>
+
+<p>저희는 빠른 설정 타일에 필요한 공간을 더 추가했으며,
+사용자가 페이지가 지정된 디스플레이 영역에서 왼쪽 또는 오른쪽으로 스와이프하여
+이들 타일에 액세스할 수 있습니다. 또한 빠른 설정 타일이
+어떻게 나타나는지와 어디에 표시되는지를 사용자가 제어할 수 있으며 사용자가 드래그 앤 드롭만으로 타일을 추가하거나 이동할 수 있습니다. </p>
+
+<p>또한 Android N은 개발자를 위해 새로운 API도 추가했습니다.
+이를 통해 자신만의 빠른 설정 타일을 정의할 수 있으며, 사용자가 앱에서 키 컨트롤 및 작업에 쉽게 액세스할 수 있습니다.</p>
+
+<p>
+  빠른 설정 타일은 긴급하게 필요하거나 자주 사용되는 컨트롤 또는
+작업을 위해 예약되어 있으며, 앱을 시작하기 위한 바로가기로
+사용되어서는 안됩니다.
+</p>
+
+<p>
+  타일을 정의한 후에는 사용자에게 표시할 수 있으며, 사용자가
+드래그 앤 드롭만으로 이 타일을 빠른 설정에 추가할 수 있습니다.
+</p>
+
+<p>
+  앱 타일 만들기에 대한 자세한 내용은,
+다운로드 가능한 <a href="{@docRoot}preview/setup-sdk.html#docs-dl">API 참조</a>에서 <code>android.service.quicksettings.Tile</code>을 참조하세요.
+</p>
+
+
+
+<h2 id="number-blocking">번호 차단</h2>
+
+<p>이제 Android N에서는 플랫폼에서 번호 차단을 지원하며,
+서비스 제공자가 차단된 번호 목록을 유지관리할 수 있도록 프레임워크
+API를 제공합니다. 기본 SMS 앱, 기본 전화 앱 및 제공자 앱은
+차단된 번호 목록에 쓰기와 읽기가 가능합니다. 이 목록은 다른 앱에서는 액세스할 수 없습니다.</p>
+
+<p>Android는 번호 차단을 플랫폼의 표준 기능으로 만들어
+광범위한 기기에서 번호를 차단하기 위한 일관된 방식을 앱에
+제공합니다. 앱에서 활용할 수 있는 기타 이점은 다음과 같습니다.</p>
+
+<ul>
+  <li> 통화에서 차단된 번호가 문자에서도 차단됩니다.
+  <li> 차단된 번호는 재설정 시에도 백업 및 복원 기능을 통해
+기기에서 유지될 수 있습니다.
+  <li> 여러 앱이 동일한 차단된 번호 목록을 사용할 수 있습니다.
+</ul>
+
+<p>또한 Android를 통한 통신사 앱 통합은 통신사들이 기기의
+차단된 번호 목록을 읽고 서비스측 차단을 수행할 수 있음을 의미하며,
+이를 통해 사용자들은 원치 않는 통화와 문자가
+특정 매체(예: VOIP 엔드포인트 또는 착신 전화)를 통해 자신들에게 도달하는 것을 차단할 수 있습니다.</p>
+
+<p>
+  자세한 내용은
+다운로드 가능한 <a href="{@docRoot}preview/setup-sdk.html#docs-dl">API
+참조</a>에서 <code>android.provider.BlockedNumberContract</code>를 참조하세요.
+</p>
+
+<h2 id="call_screening">통화 스크리닝</h2>
+
+<p>
+  Android N에서는 기본 전화 앱이 수신 통화를 스크리닝하도록
+허용합니다. 이를 위해 전화 앱에는 새로운 <code>CallScreeningService</code>가 구현되며 이를 통해 전화 앱은
+수신 통화의 {@link android.telecom.Call.Details Call.Details}에 따라
+다음과 같은 다양한 작업을 수행할 수 있습니다.
+</p>
+
+<ul>
+  <li> 수신 통화 거절
+  <li> 통화를 통화 기록에 허용하지 않음
+  <li> 통화 알림을 사용자에게 표시하지 않음
+</ul>
+
+<p>
+  자세한 내용은
+다운로드 가능한 <a href="{@docRoot}preview/setup-sdk.html#docs-dl">API
+참조</a>에서 <code>android.telecom.CallScreeningService</code>를 참조하세요.
+</p>
+
+
+<h2 id="multi-locale_languages">다중 로케일 지원, 더 많은 언어</h2>
+
+
+<p>두 가지 언어로 된 사용 사례를 지원하기 위해 이제
+Android N에서는 사용자가 설정에서 <strong>다중 로케일</strong>을 선택할 수
+있습니다. 앱은 새로운 API를 사용하여 사용자의 로케일을 가져온
+다음, 검색 결과를 여러 언어로 표시하거나 사용자가 이미 알고있는
+언어로는 웹페이지를 번역하지 않는 등 다중 로케일 사용자를 위한 더욱 정교한 사용자 경험을
+제공합니다.</p>
+
+<p>다중 로케일 지원과 함께 Android N에서는 또한 사용자가
+사용 가능한 언어의 범위를 더욱 넓혔습니다.
+영어, 스페인어, 프랑스어, 아랍어 등 자주 사용되는 언어에 대해 각각 25가지
+이상의 변형을 제공하며, 또한 100가지 이상의 새로운 언어에 대해 부분적인 지원도 추가했습니다.</p>
+
+<p>앱은 사용자가 설정한 로케일 목록을 가져오기 위해
+<code>LocaleList.GetDefault()</code>를 호출할 수 있습니다. 더 많은
+수의 로케일을 지원하기 위해 Android N에서는 리소스 확인 방식이 바뀌고 있습니다. 새로운 리소스 확인 로직에서 앱이 예상대로 작동하는지 테스트하고 확인하세요.</p>
+
+<p>새로운 리소스 확인 동작과 따라야 하는 모범 사례에 대해
+알아보려면, <a href="{@docRoot}preview/features/multilingual-support.html">다국어 지원</a>을 참조하세요.</p>
+
+<h2 id="icu4">Android의 ICU4J API</h2>
+
+<p>
+  이제 Android N에서는 <code>android.icu</code> 패키지 아래 Android 프레임워크에 있는 <a href="http://site.icu-project.org/">ICU4J</a> API의
+일부를 제공합니다. 마이그레이션이
+용이하며, 대개는 <code>com.java.icu</code> 네임스페이스를
+<code>android.icu</code>로 변경하는 것이 간단합니다. 앱에서 ICU4J 번들을
+이미 사용 중인 경우, Android 프레임워크에서 제공되는 <code>android.icu</code>
+API로 전환하면 APK 크기를 상당히 절약할 수 있습니다.
+</p>
+
+<p>
+  Android ICU4J API에 대해 자세히 알아보려면, <a href="{@docRoot}preview/features/icu4j-framework.html">ICU4J 지원</a>을 참조하세요.
+</p>
+
+
+
+<h2 id="gles_32">OpenGL&trade; ES 3.2 API</h2>
+
+<p>Android N에서는 OpenGL ES 3.2용 프레임워크 인터페이스와 플랫폼 지원을 추가했습니다.</p>
+
+<ul>
+  <li> <code>EXT_texture_sRGB_decode</code>를 제외한 <a class="external-link" href="https://www.khronos.org/registry/gles/extensions/ANDROID/ANDROID_extension_pack_es31a.txt">Android 확장 프로그램 팩</a></a>(AEP)의 모든 확장 프로그램.
+  <li> HDR 및 지연 셰이딩을 위한 부동 소수점 프레임 버퍼.
+  <li> 일괄처리 및 스트리밍 성능을 향상시키는 BaseVertex 그리기 호출.
+  <li> WebGL 오버헤드를 줄여주는 강력한 버퍼 액세스 제어.
+</ul>
+
+<p>Android N의 OpenGL ES 3.2용 프레임워크 API에는
+<code>GLES32</code> 클래스가 제공됩니다. OpenGL ES 3.2를 사용 중인
+경우, 반드시 <code>&lt;uses-feature&gt;</code> 태그와 <code>android:glEsVersion</code>
+특성을 사용하여 요구사항을 매니페스트 파일에 선언하세요. </p>
+
+<p>런타임에 기기의 지원 OpenGL ES 버전을 확인하는
+방법을 비롯하여 OpenGL ES 사용에 대한 자세한 내용은, <a href="{@docRoot}guide/topics/graphics/opengl.html">OpenGL ES API 가이드</a>를 참조하세요.</p>
+
+
+<h2 id="android_tv_recording">Android TV 녹화</h2>
+
+<p>Android N에서는 새로운 녹화 API를 통해 Android TV 입력
+서비스로부터 콘텐츠를 녹화하고 재생하는 기능을
+추가했습니다. 기존의 타임 시프트 API를 기반으로 구축된 TV 입력
+서비스는 녹화 가능한 채널 데이터 및 녹화된 세션의 저장 방식을 제어할 수 있으며, 녹화된 콘텐츠와의 사용자 상호작용을 관리할 수 있습니다. </p>
+
+<p>자세한 내용은 <a href="{@docRoot}preview/features/tv-recording-api.html">Android TV Recording API</a>를 참조하세요.</p>
+
+
+<h2 id="android_for_work">Android for Work</h2>
+
+<p>Android for Work에서는 Android N이 실행되는 기기를
+위해 여러 가지 새로운 기능과 API를 추가했습니다. 몇 가지 특징이
+아래에 나와 있으며, Android N과 관련된 Android for Work 업데이트의 전체 목록에 대해서는 Android for Work 변경사항을 참조하세요.</p>
+
+<h3 id="work_profile_security_challenge">작업 프로필 보안 과제 </h3>
+
+<p>
+  프로필 소유자는 작업 프로필에서 실행 중인 앱에 대해
+별도의 보안 과제를 지정할 수 있습니다. 작업 과제는 사용자가 작업
+앱을 열려고 시도할 때 나타납니다. 보안 과제를 성공적으로 완료하면
+작업 프로필의 잠금이 해제되고 필요한 경우 암호가 풀립니다.
+프로필 소유자의 경우, <code>ACTION_SET_NEW_PASSWORD</code>는
+작업 과제를 설정하라는 메시지를 사용자에게 표시하고, <code>ACTION_SET_NEW_PARENT_PROFILE_PASSWORD</code>는 기기
+잠금을 설정하라는 메시지를 사용자에게 표시합니다.
+</p>
+
+<p>
+  프로필 소유자는 <code>setPasswordQuality()</code>, <code>setPasswordMinimumLength()</code> 및 관련 메서드를 사용하여
+작업 과제에 대해 별개의 암호 정책을 설정할 수 있습니다. 프로필
+소유자는 또한 새로운 <code>getParentProfileInstance()</code>에 의해
+반환되는 <code>DevicePolicyManager</code> 인스턴스를 사용하여 기기
+잠금을 설정할 수도 있습니다. 뿐만 아니라, 프로필 소유자는
+새로운 <code>setOrganizationColor()</code> 및 <code>setOrganizationName()</code>
+메서드를 사용하여
+작업 과제에 대해 자격 증명 화면을
+사용자 지정할 수 있습니다.
+</p>
+<h3 id="turn_off_work">작업 끄기 </h3>
+
+<p>작업 프로필이 있는 기기에서, 사용자가 작업 모드를
+전환할 수 있습니다. 작업 모드가 꺼진 경우, 관리되는 사용자가
+일시적으로 종료되며 이 경우 작업 프로필 앱, 백그라운드
+동기화 및 알림이 비활성화됩니다. 여기에는 프로필 소유자 애플리케이션이
+포함됩니다. 작업 모드가 꺼진 경우, 작업 앱을 시작할 수 없음을 사용자에게 알려주는 상태 아이콘이 표시됩니다.
+시작 관리자는 작업 앱과 위젯에 액세스할 수 없음을 나타냅니다. </p>
+
+<h3 id="always_on_vpn">항상 켜진 VPN </h3>
+
+<p>기기 소유자와 프로필 소유자는 지정된 VPN을 통해 작업 앱이
+항상 연결되도록 보장할 수 있습니다. 시스템은 기기가 부팅된
+후에 자동으로 VPN을 시작합니다.</p>
+
+<p>
+  새로운 <code>DevicePolicyManager</code> 메서드는
+ <code>setAlwaysOnVpnPackage()</code> 및
+ <code>getAlwaysOnVpnPackage()</code>입니다.
+</p>
+
+<p>VPN 서비스는 앱 상호작용 없이 시스템에 의해 직접 바인드될
+수 있으므로, VPN 클라이언트는 '항상 켜진 VPN'에 대해
+새로운 진입점을 처리해야 합니다. 이전과 마찬가지로, 인텐트 필터
+일치 작업 <code>android.net.VpnService</code>에 의해 서비스가 시스템에 나타납니다. </p>
+
+<p>
+  사용자는 또한 <strong>Settings&gt;More&gt;Vpn</strong>을 사용하여 기본 사용자에서
+ <code>VPNService</code> 메서드를
+구현하는 '항상 켜진 VPN' 클라이언트를 수동으로 설정할 수도 있습니다.
+</p>
+
+<h2 id="accessibility_enhancements">접근성 향상</h2>
+
+<p>이제 Android N에서는 새로운 기기 설치 시 Welcome 화면에서
+바로 Vision Settings를 제공합니다. 이렇게 하면 사용자가 자신의
+기기에서 휠씬 더 쉽게 확대 제스처, 글꼴 크기,
+디스플레이 크기 및 TalkBack 등과 같은 접근성 기능을 검색하고 구성할 수 있습니다. </p>
+
+<p>이렇게 눈에 띄는 위치에 접근성 기능을 배치하면, 사용자가 이
+기능을 활성화하여 앱을 사용할 가능성이 더욱 커집니다. 먼저 이들
+설정을 활성화하고 앱을 테스트하도록 하세요. Settings &gt;
+Accessibility에서 설정을 활성화할 수 있습니다.</p>
+
+<p>Android N에서도 마찬가지로, 이제 운동 장애가 있는 사용자가
+접근성 서비스를 통해 스크린을 터치할 수 있습니다. 새로운 API는 얼굴 추적, 시각 추적,
+지점 스캐닝 등의 기능으로 서비스를 구축하여 이러한 사용자의
+요구를 충족시킬 수 있습니다.</p>
+
+<p>자세한 내용은
+	다운로드 가능한 <a href="{@docRoot}preview/setup-sdk.html#docs-dl">API 참조</a>에서 <code>android.accessibilityservice.GestureDescription</code>을 참조하세요.</p>
+
+
+<h2 id="direct_boot">직접 부팅</h2>
+
+<p>직접 부팅은 기기 시동 시간을 개선해주며, 예상치 못한 재부팅
+후에도 등록된 앱이 제한된 기능을 유지하도록 해줍니다. 예를 들어,
+사용자가 취침하는 동안에 암호화된 기기가 재부팅되는 경우,
+이제는 등록되어 있는 알람, 메시지 및 수신 통화로 사용자에게 알려줄
+수 있습니다. 즉, 재시작 직후에도 접근성 서비스를 바로
+사용할 수 있습니다.</p>
+
+<p>직접 부팅은 Android N의 파일 기반 암호화를 활용하여 시스템
+및 앱 데이터에 대해 정밀한 암호화 정책을 활성화합니다. 이 시스템은
+선택된 시스템 데이터와 명시적으로 등록된 앱
+데이터에 대해 기기 암호화 스토어를 사용합니다. 기본적으로, 다른 모든
+시스템 데이터, 사용자 데이터, 앱 및 앱 데이터에는 자격 증명 암호화 스토어가 사용됩니다. </p>
+
+<p>부팅 시에 시스템은 제한된 모드에서 시작되며, 기기 암호화
+데이터에만 액세스가 가능하고 앱 또는 데이터에는 액세스하지
+못합니다. 이 모드에서 구성 요소를 실행하려는 경우,
+매니페스트에 플래그를 설정하여 구성 요소를 등록할 수 있습니다.
+재시작 후에는 시스템이 <code>LOCKED_BOOT_COMPLETED</code> 인텐트를
+ 브로드캐스트하여 등록된 구성 요소를 활성화합니다. 잠금을 해제하기 전에, 시스템은 등록된 기기 암호화
+앱 데이터가 있는지를 확인합니다. 사용자가 잠금 화면 자격 증명을 확인하여
+암호화를 풀기 전까지는 다른 모든 데이터를 사용할 수 없습니다. </p>
+
+자세한 내용은 <a href="{@docRoot}preview/features/direct-boot.html">직접 부팅</a>을 참조하세요.</p>
+</p>
+
+
+<h2 id="key_attestation">Key Attestation</h2>
+
+<p>하드웨어 기반 키스토어는 Android 기기에서 암호화 키를
+만들고 저장하고 사용하기 위한 훨씬 더 안전한 방법입니다. 이
+키스토어는 Linux 커널, 잠재적 Android 취약점, 루팅된 기기의
+공격으로부터 키를 보호해 줍니다.</p>
+
+<p>하드웨어 기반 키스토어를 더욱 쉽고 안전하게 사용하도록
+Android N에서는 Key Attestation을 도입합니다. Key Attestation을 사용하여 앱
+및 기기는 RSA 또는 EC 키 쌍이 하드웨어 기반인지 여부를 결정할 수
+있으며, 키 쌍의 속성에는 어떤 것이 있으며 어떠한 제약 조건이 사용
+및 유효성에 적용되는지 결정할 수 있습니다. </p>
+
+<p>앱 및 기기 서비스는 X.509 증명 인증서를 통해 키 쌍에 대한
+정보를 요청할 수 있으며 이 인증서는 유효한 증명 키로 서명되어야
+합니다. 증명 키는 공장에서 기기의 하드웨어 기반
+키스토어에 주입되는 ECDSA 서명 키입니다. 따라서 올바른 증명서 키로
+서명된 증명 인증서는 키스토어에 있는 키 쌍의
+세부정보와 함께 하드웨어 기반 키스토어가 존재함을
+확인해 줍니다.</p>
+
+<p>안전한 공식 Android 공장 이미지가 기기에 사용 중인지
+확인하기 위해, Key Attestation은
+기기 <a class="external-link" href="https://source.android.com/security/verifiedboot/verified-boot.html#bootloader_requirements">부팅 로더</a>가 다음의 정보를 <a class="external-link" href="https://source.android.com/security/trusty/index.html">TEE(Trusted Execution Environment)</a>에
+제공하도록 요구합니다.</p>
+
+<ul>
+<li>기기에 설치된 OS 버전 및 패치 수준</li>
+<li><a href="https://source.android.com/security/verifiedboot/index.html" class="external-link">확인된 부팅</a> 공개 키 및 잠금 상태</li>
+  </ul>
+
+<p>하드웨어 기반 키스토어 기능에 대한 자세한
+내용은 <a href="https://source.android.com/security/keystore/" class="external-link">하드웨어 기반 키스토어</a> 가이드를 참조하세요.</p>
+
+<p>Key Attestation 이외에도 Android N에서는 또한 지문 등록
+시에 취소되지 않는 지문 바인드 키를 소개합니다.</p>
+
+<h2 id="network_security_config">네트워크 보안 구성</h2>
+
+<p>Android N에서 앱은 오류가 발생하기 쉬운 기존의 프로그래밍 방식
+API(예: X509TrustManager)를 사용하는 대신 선언적
+<em>네트워크 보안 구성</em>을 사용하여 보안(HTTPS, TLS) 연결의 동작을 코드
+수정 없이 안전하게 사용자 지정할 수 있습니다.</p>
+
+  <p>지원되는 기능:</p>
+<ul>
+<li><b>트러스트 앵커 사용자 지정.</b> 보안 연결을 위해 어떤
+인증 기관(CA)이 신뢰받는지를 애플리케이션이 사용자 지정할 수
+있습니다(예: 자가 서명된 특정 인증서나 제한된 공개 CA 세트 신뢰).
+</li>
+<li><b>디버그 전용 재정의.</b> 설치된 베이스에 위험을 더하지
+않고도, 애플리케이션 개발자가 애플리케이션의 보안 연결을 안전하게
+디버그할 수 있습니다.
+</li>
+<li><b>일반 텍스트 트래픽 옵트아웃.</b> 일반 텍스트 트래픽을 실수로 사용하지
+않도록 애플리케이션이 스스로를 보호합니다.</li>
+<li><b>인증서 고정.</b> 보안 연결을 위해 어떤 서버 키가
+신뢰받는지를 애플리케이션이 제한할 수 있는 고급 기능.</li>
+</ul>
+
+<p>자세한 내용은 <a href="{@docRoot}preview/features/security-config.html">네트워크 보안 구성</a>을
+참조하세요.</p>
+
+<h2 id="default_trusted_ca">신뢰받는 기본 인증 기관</h2>
+
+<p>기본적으로, Android N을 대상으로 하는 앱은 시스템이
+제공한 인증서만을 신뢰하며 사용자가 추가한 인증 기관(CA)은
+더 이상 신뢰하지 않습니다. Android N을 대상으로 하는 앱이 사용자가
+추가한 CA를 신뢰하려는 경우에는 <a href="{@docRoot}preview/features/security-config.html">네트워크 보안 구성</a>을 사용하여 어떤
+사용자 CA를 신뢰할지 지정해야 합니다.</p>
+
+<h2 id="apk_signature_v2">APK 서명 구성표 v2</h2>
+
+<p>이제 PackageManager 클래스는 APK 서명 구성표 v2를
+사용하는 앱 검사를 지원합니다. APK 서명 구성표 v2는 전체 파일의
+서명 구성표이며, APK 파일의 불법적인 변경을 감지하여
+검사 속도를 상당히 개선하고 무결성을 보장해 줍니다.</p>
+
+<p>이전 버전과의 호환성을 유지하기 위해, APK는 v2 서명
+구성표로 서명되기 전에 v1 서명 구성표(JAR 서명 구성표)로
+서명되어야 합니다. v2 서명 구성표의 경우, v2 구성표로 서명한 후에 추가적인
+인증서로 APK를 서명하는 경우 검사가 실패합니다. </p>
+
+<p>APK 서명 구성표 v2 지원은 나중에 N Developer Preview에서
+사용할 수 있습니다.</p>
+
+<h2 id="scoped_directory_access">범위가 지정된 디렉터리 액세스</h2>
+
+<p>Android N에서 앱은 새로운 API를 사용하여 특정한
+<a href="{@docRoot}guide/topics/data/data-storage.html#filesExternal">외부 저장소</a> 디렉터리(SD 카드와 같은 이동식 미디어에 있는 디렉터리 포함)에
+대한 액세스를 요청할 수 있습니다. 새로운 API는 애플리케이션이
+표준 외부 저장소 디렉터리(예: <code>Pictures</code> 디렉터리)에
+액세스하는 방식을 훨씬 단순화합니다.
+사진 앱과 같은 앱은 모든 저장소 디렉터리에 대해 액세스 권한을 부여하는 <code>READ_EXTERNAL_STORAGE</code>를 사용하거나 사용자가
+디렉터리를 탐색하도록 하는 SAF(Storage Access Framework)를
+사용하는 대신 이들 API를 사용할 수 있습니다.</p>
+
+<p>또한 새로운 API는 사용자가 앱에 외부 저장소 액세스 권한을
+부여하는 단계를 단순화합니다. 새로운 API를 사용하는 경우,시스템이
+어떤 디렉터리에 대한 액세스 권한을 애플리케이션이
+요청하는지를 명확하게 설명하기 위해 단순 권한 UI를 사용합니다.</p>
+
+<p>자세한 내용은
+<a href="{@docRoot}preview/features/scoped-folder-access.html">범위가 지정된
+디렉터리 액세스</a> 개발자 문서를 참조하세요.</p>
+
+
+
+
+
+
diff --git a/docs/html-intl/intl/ko/preview/behavior-changes.jd b/docs/html-intl/intl/ko/preview/behavior-changes.jd
new file mode 100644
index 0000000..56dca32
--- /dev/null
+++ b/docs/html-intl/intl/ko/preview/behavior-changes.jd
@@ -0,0 +1,480 @@
+page.title=동작 변경
+page.keywords=preview,sdk,compatibility
+meta.tags="프리뷰", "호환성"
+page.tags="preview", "developer preview"
+page.image=images/cards/card-n-changes_2x.png
+@jd:body
+
+
+<div id="qv-wrapper">
+<div id="qv">
+
+<h2>이 문서의 내용</h2>
+
+<ol>
+  <li><a href="#perf">성능 향상</a>
+    <ol>
+      <li><a href="#doze">Doze</a></li>
+      <li><a href="#bg-opt">백그라운드 최적화</a></li>
+    </ol>
+  </li>
+  <li><a href="#perm">권한 변경</a></li>
+  <li><a href="#accessibility">접근성 향상</a>
+    <ol>
+      <li><a href="#screen-zoom">화면 확대/축소</a></li>
+      <li><a href="#vision-settings">설정 마법사에서의 비전 설정</a></li>
+    </ol>
+  </li>
+  <li><a href="#ndk">플랫폼 라이브러리에 연결되는 NDK 앱</a></li>
+  <li><a href="#afw">Android for Work</a></li>
+</ol>
+
+<h2>참고 항목</h2>
+<ol>
+  <li><a href="{@docRoot}preview/api-overview.html">
+    Android N API 개요</a></li>
+</ol>
+
+</div>
+</div>
+
+
+<p>
+  Android N에는 새로운 기능 및 성능과 함께
+시스템 및 API 동작의 다양한 변경사항이 포함되어 있습니다. 이 문서에서는
+개발자 여러분이 숙지해야 하고 앱을 개발할 때 감안해야 하는 몇 가지
+주요 변경 내용을 소개하겠습니다.
+</p>
+
+<p>
+  이전에 Android용 앱을 게시한 적이 있는 경우, 이와 같은
+플랫폼 변경으로 인해 앱이 영향을 받을 수 있다는 점을 유의하세요.
+</p>
+
+
+<h2 id="perf">성능 향상</h2>
+
+<p>
+  Android N에는 기기의 배터리 수명, RAM 사용량 및 앱 성능을
+개선하기 위한 시스템 동작 변경이 포함됩니다. 이러한 변경은 시스템 리소스의
+가용성과 앱에 대한 시스템 알림에 영향을 미칠 수 있습니다.
+이러한 변경을 검토하고 이 변경에 맞게 앱을 조정하는 방법을
+평가해야 합니다.
+</p>
+
+<h3 id="doze">Doze</h3>
+
+<p>
+  Android 6.0(API 레벨 23)에서 소개된 Doze 기능은 사용자가 기기의
+플러그를 뽑고 정지 상태에서 화면이 꺼져있을 때 CPU 및
+네트워크 액티비티를 지연시켜서 배터리 수명을 개선해 줍니다.
+Android N에서는 기기의 플러그를 뽑고 화면이 꺼져있는 동안
+CPU 및 네트워크 제한의 일부를 적용하여 Doze의 기능을 더욱
+향상시켜 주지만 반드시 정지 상태일 필요는 없습니다(예: 핸드셋을 사용자의 주머니에 넣고 다니는 경우).
+</p>
+
+
+<img src="{@docRoot}preview/images/doze-diagram-1.png" alt="" height="251px" id="figure1" />
+<p class="img-caption">
+  <strong>그림 1.</strong> Doze가 첫 번째 레벨의 시스템 액티비티 제한을
+적용하여 배터리 수명을 개선하는 방법에 대한 그림.
+</p>
+
+<p>
+  기기가 배터리 전원에 연결되고 일정 시간 동안 화면이 꺼져있는 경우,
+기기가 Doze로 진입하고 첫 번째 하위 세트의 제한을 적용합니다. 기기는 앱
+네트워크 액세스를 차단하고, 작업 및 동기화를
+지연시킵니다. 기기가 Doze로 진입한 후 일정 시간 동안 정지 상태에
+있으면, 시스템은 Doze 제한의 나머지를 {@link android.os.PowerManager.WakeLock},
+{@link android.app.AlarmManager} 알람, GPS 및 Wi-Fi 스캔에 적용합니다.
+일부 Doze 제한이 적용되든 모든 Doze 제한이 적용되든 간에
+시스템은 잠시 동안의 유지관리 기간 중에 기기를 깨우며, 이 기간 중에
+애플리케이션의 네트워크 액세스가 허용되고 지연된 작업/동기화가 실행됩니다.
+</p>
+
+
+<img src="{@docRoot}preview/images/doze-diagram-2.png" alt="" id="figure2" />
+<p class="img-caption">
+  <strong>그림 2.</strong> 기기가 일정 시간 동안 정지 상태에 있은 후에
+Doze가 두 번째 레벨의 시스템 액티비티 제한을 적용하는 방법에 대한 그림.
+</p>
+
+<p>
+  참고로, 화면을 활성화하거나 기기의 플러그를 꽂으면 Doze 모드가
+종료되고 이러한 처리 제한이 제거됩니다. <a href="{@docRoot}training/monitoring-device-state/doze-standby.html">Doze 및 앱 대기
+모드 최적화</a>에서 설명한 대로, Android 6.0(API 레벨 23)에서 소개된
+이전 버전의 Doze에 앱을 적용시킬 때는, 이러한 추가적인 동작이
+권장사항과 모범
+사례에 영향을 미치지 않습니다.
+하지만 여전히 해당 권장사항을 따라야 합니다. 예를 들어, GCM(Google Cloud Messaging)을 사용하여 메시지를
+송수신하고, 추가적인 Doze 동작을 수용하기 위한 업데이트 계획을
+시작해야 합니다.
+</p>
+
+
+<h3 id="bg-opt">Project Svelte: 백그라운드 최적화</h3>
+
+<p>
+  Android N에서는 메모리 사용량 및 전원 소비량을 최적화하기 위해
+세 가지 암시적 브로드캐스트를 제거합니다. 이러한 변경이 필요한
+이유는 암시적 브로드캐스트는 백그라운드에서 브로드캐스트를
+수신하도록 등록된 앱을 자주 시작하기 때문입니다. 이 브로드캐스트를
+제거하면 기기 성능과 사용자 경험이 상당히 향상될 수 있습니다.
+</p>
+
+<p>
+  모바일 기기의 경우 연결 변경이 빈번하게 나타납니다(예: Wi-Fi와
+모바일 데이터 간의 이동 시). 현재는 매니페스트에서
+암시적 {@link
+  android.net.ConnectivityManager#CONNECTIVITY_ACTION} 브로드캐스트의 수신기를
+등록하는 방식으로 앱이 이러한 연결 변경을 모니터링할 수 있습니다. 많은 앱들이 이 브로드캐스트를 수신하도록
+등록하기 때문에, 단일 네트워크 스위치가 모든 앱들을 깨울 수 있으며 브로드캐스트를
+동시에 처리할 수 있습니다.
+</p>
+
+<p>
+  마찬가지로, 앱은 다른 앱(예: 카메라)에서 암시적 {@link
+  android.hardware.Camera#ACTION_NEW_PICTURE} 및 {@link
+  android.hardware.Camera#ACTION_NEW_VIDEO} 브로드캐스트를 수신하도록 등록할 수 있습니다. 사용자가
+카메라 앱으로 사진을 찍으면, 이들 앱이 깨어나고 브로드캐스트를
+처리합니다.
+</p>
+
+<p>
+  이러한 문제를 완화하기 위해, Android N은 다음과 같은 최적화를
+적용합니다.
+</p>
+
+<ul>
+  <li>Android N을 대상으로 하는 앱은 해당 이벤트의 알림을 요청하는 매니페스트 항목이 있더라도 {@link
+  android.net.ConnectivityManager#CONNECTIVITY_ACTION} 브로드캐스트를 수신하지 않습니다. 포그라운드에서 실행되는 앱은 {@link
+  android.content.BroadcastReceiver}로
+알림을 요청하면
+여전히 메인 스레드에서 {@code CONNECTIVITY_CHANGE}를
+수신할 수 있습니다.
+  </li>
+
+  <li>앱은 {@link
+  android.hardware.Camera#ACTION_NEW_PICTURE} 또는 {@link
+  android.hardware.Camera#ACTION_NEW_VIDEO}
+브로드캐스트를 송수신할 수 없습니다. 이 최적화는 Android N을 대상으로 하는 앱 뿐만 아니라 모든 앱에 영향을 미칩니다.
+  </li>
+</ul>
+
+<p>
+  차기 Android 릴리스에서는 바인딩이 해제된 백그라운드 서비스
+뿐만 아니라 추가적인 암시적 브로드캐스트가 사용 중단될 수도 있습니다.
+이러한 이유로, 백그라운드 서비스에 대한 종속성 뿐만
+아니라 암시적 브로드캐스트의 매니페스트-선언 수신기에 대한 종속성을 피하거나 제거해야 합니다.
+</p>
+
+<p>
+  Android 프레임워크는 암시적 브로드캐스트 또는 백그라운드
+서비스의 필요성을 줄이기 위한 여러 가지 해결책을 제공합니다. 예를 들어, {@link
+  android.app.job.JobScheduler} API는 지정된 조건(예: 비 데이터 통신 네트워크에 연결)이 충족될 경우 네트워크 운영을 예약할 수 있는 강력한 메커니즘을 제공합니다. 심지어는 {@link
+  android.app.job.JobScheduler}를
+사용하여 콘텐츠 제공자의
+변경에 대응할 수도 있습니다.
+</p>
+
+<p>
+  이러한 동작 변경과 앱을 적용하는 방법에 대한 자세한 내용은
+<a href="{@docRoot}preview/features/background-optimization.html">백그라운드  최적화</a>를
+참조하세요.
+</p>
+
+
+<h2 id="perm">권한 변경</h2>
+
+<p>
+  Android N에는 사용자 계정 권한 및 외부 저장소에 쓰기 위한 새 권한을 비롯하여
+앱에 영향을 미칠 수도 있는 권한 변경이 포함되어 있습니다.
+다음은 프리뷰에서 변경된 권한의
+간추린 내용입니다.
+</p>
+
+<ul>
+  <li>{@code GET_ACCOUNTS} (사용 중단)
+    <p>
+      GET_ACCOUNTS 권한은 이제 사용 중단되었습니다. 시스템은 Android
+N을 대상으로 하는 앱에서 이 권한을 무시합니다.
+    </p>
+  </li>
+
+</ul>
+
+
+
+<h2 id="accessibility">접근성 향상</h2>
+
+<p>
+  Android N에는 시력이 안좋거나 손상된 사용자를 위해 플랫폼의
+가용성을 개선하려는 변경이 포함됩니다. 이러한 변경은 일반적으로
+앱의 코드 변경을 요구하지는 않지만, 사용자 경험에
+미치는 잠재적인 영향을 평가하기 위해 이러한 기능을 검토하고
+앱으로 테스트해야 합니다.
+</p>
+
+
+<h3 id="screen-zoom">화면 확대/축소</h3>
+
+<p>
+  Android N에서는 사용자가 <strong>Display size</strong>를 설정할 수
+있습니다. 이 설정은 화면의 모든 요소를 확대하거나 축소하므로, 시력이
+안좋은 사용자의 기기 접근성이 향상됩니다. 최소 화면 너비가 <a href="http://developer.android.com/guide/topics/resources/providing-resources.html">sw320dp</a>를 초과하는 화면은 사용자가 확대/축소할
+수 없으며, 이는 일반적인 중간 사이즈 전화기인 Nexus 4의
+너비입니다.
+</p>
+
+<div class="cols">
+
+<div class="col-6">
+  <img src="{@docRoot}preview/images/screen-zoom-1.png" alt="" height="XXX" id="figure1" />
+</div>
+<div class="col-6">
+  <img src="{@docRoot}preview/images/screen-zoom-2.png" alt="" height="XXX" id="figure1" />
+</div>
+
+</div> <!-- end cols -->
+<p class="img-caption">
+  <strong>그림 3.</strong> 오른쪽 화면은 Android N 시스템 이미지가
+실행 중인 기기의 Display size를 늘릴 때의 효과를 보여줍니다.
+</p>
+
+
+<p>
+  기기 밀도가 변경되면, 시스템은 다음과 같은 방식으로 실행 중인
+앱에게 알립니다.
+</p>
+
+<ul>
+  <li>앱이 API 레벨 23 이하를 대상으로 하는 경우, 시스템은 모든
+백그라운드 프로세스를 자동으로 종료합니다. 즉, 사용자가 이러한
+앱으로부터 전환하여 <em>Settings</em> 화면을
+열고 <strong>Display size</strong> 설정을 변경하면, 시스템은 저용량 메모리
+상황에서와 동일한 방식으로 앱을 종료합니다. 앱에 포그라운드 프로세스가
+있는 경우, <a href="{@docRoot}guide/topics/resources/runtime-changes.html">런타임 변경 처리</a>에 설명된 대로, 시스템은
+마치 기기의 방향이 변경된
+것처럼 구성 변경을 해당 프로세스에게 알립니다.
+  </li>
+
+  <li>앱이 Android N을 대상으로 하는 경우,
+<a href="{@docRoot}guide/topics/resources/runtime-changes.html">런타임 변경 처리</a>에 설명된
+대로 모든 프로세스(포그라운드 및 백그라운드)에게
+구성 변경을 알립니다.
+  </li>
+</ul>
+
+<p>
+  앱이 Android 모범 사례를 따르기만 한다면, 대부분의 앱은 이 기능을
+지원하기 위해 어떠한 변경도 할 필요가 없습니다. 확인할 사항:
+</p>
+
+<ul>
+  <li>화면 너비가 <code><a href=
+  "{@docRoot}guide/topics/resources/providing-resources.html">sw320dp</a></code>인 기기에서 앱을 테스트하고 적절하게 작동하는지
+확인합니다.
+  </li>
+
+  <li>기기 구성이 변경되는 경우, 모든 밀도 종속형 캐시된
+정보(예: 캐시된 비트맵 또는 네트워크에서 로드된 리소스)를 업데이트합니다.
+앱이 일시 정지 상태에서 다시 시작하는 경우 구성
+변경을 확인합니다.
+    <p class="note">
+      <strong>참고:</strong> 구성 종속형 데이터를 캐시하는 경우,
+해당 데이터의 적절한 화면 크기 또는 픽셀 밀도와 같은 관련 메타데이터를
+포함시키는 것이 좋습니다. 이 메타데이터를 저장해 놓으면,
+구성이 변경된 후에 캐시된 데이터의 새로 고침 여부를
+결정할 수 있습니다.
+    </p>
+  </li>
+
+  <li>픽셀 단위로 치수를 지정하지 마세요. 이 단위는 화면 밀도에 따라
+변하지 않습니다. 그 대신, <a href="{@docRoot}guide/practices/screens_support.html">밀도 독립형 픽셀</a> (<code>dp</code>) 단위로
+치수를 지정하세요.
+  </li>
+</ul>
+
+<h3 id="vision-settings">설정 마법사에서의 비전 설정</h3>
+
+<p>
+  Android N에는 Welcome 화면에 Vision Settings가 포함되어 있으며, 여기서 사용자가 새 기기에 다음과 같은 접근성 설정을 구성할 수 있습니다:
+<strong>Magnification gesture</strong>, <strong>Font size</strong>,
+<strong>Display size</strong>
+및 <strong>TalkBack</strong>. 이 변경은 다른 화면 설정에서 발생하는 버그의 가시성을 높여줍니다. 이 기능이
+미치는 영향을 평가하려면, 이
+설정을 활성화하여 앱을 테스트해야 합니다. 이 설정은 <strong>Settings &gt;
+Accessibility</strong> 아래에
+있습니다.
+</p>
+
+<h2 id="ndk">플랫폼 라이브러리에 연결되는 NDK 앱</h2>
+
+<p>
+  비공개 API가 로드되는 것을 막기 위해 Android N에는 네임스페이스
+변경이 포함되어 있습니다. NDK를 사용하는 경우에는, Android 플랫폼에서
+공개 API를 사용해야만 합니다. 차기 Android 공식 릴리스에서 비공개 API를 사용하면 앱 작동이 중단될 수
+있습니다.
+</p>
+
+<p>
+  비공개 API의 사용을 경고하기 위해, Android N 기기에서 실행
+중인 앱은 어떤 앱이 비공개 API를 호출하면 logcat 출력에 오류를 생성합니다.
+또한 이러한 상황을 인식할 수 있도록
+이 오류가 메시지로 기기 화면에 표시됩니다. 그러면 앱 코드를 검토하여
+비공개 플랫폼 API의 사용을 제거해야 하며 프리뷰 기기 또는
+에뮬레이터를 사용하여 앱을 철저히 테스트해야 합니다.
+</p>
+
+<p>
+  앱이 플랫폼 라이브러리에 종속된 경우, 개인 API를 동등한
+공개 API로 교체하기 위한 일반적인 수정사항은 NDK 문서를 참조하세요.
+또한 자신도 모르는 사이에 플랫폼 라이브러리에
+연결되어 있을 수가 있습니다(특히 앱이 사용하는 라이브러리가 플랫폼의
+일부(예: <code>libpng</code>)이지만 NDK의 일부는 아닌 경우). 이 경우에는
+연결에 필요한 모든 .so 파일이 APK에 포함되어 있는지 확인하세요.
+</p>
+
+<p class="caution">
+  <strong>주의:</strong> 일부 타사 라이브러리는 비공개 API에
+연결될 수도 있습니다. 앱이 이러한 라이브러리를 사용하는 경우 차기 Android
+ 공식 릴리스에서 실행할 때 앱 작동이 중단될 수 있습니다.
+</p>
+
+<p>
+  앱은 NDK에 포함되지 않은 고유 라이브러리를 사용하거나
+이에 종속되어서는 안 됩니다. 왜냐하면 이 라이브러리는 특정
+Android 릴리스에서 다른 릴리스로 변경되거나 제거될 수 있기 때문입니다.
+OpenSSL에서 BoringSSL로의 전환은 이러한 변경의 한 예입니다. 또한 NDK에 포함되지 않은 플랫폼 라이브러리에는 호환성 요구사항이 없기
+때문에 다른 장치에서 호환성 레벨이 다를 수도 있습니다.
+구형 기기에 있는 비-NDK 라이브러리에 액세스해야 하는 경우,
+Android API 레벨에 따라 로드하세요.
+</p>
+
+<p>
+  이러한 유형의 문제를 진단하는 데 도움을 주기 위해, 여기서는
+Android N으로 앱을 작성할 때 발생할 수 있는 Java 및 NDK 오류의 몇 가지 예를 보여줍니다.
+</p>
+
+<p>Java 오류의 예:</p>
+<pre class="no-pretty-print">
+java.lang.UnsatisfiedLinkError: dlopen failed: library "/system/lib/libcutils.so"
+    is not accessible for the namespace "classloader-namespace"
+</pre>
+
+<p>NDK 오류의 예:</p>
+<pre class="no-pretty-print">
+dlopen failed: cannot locate symbol "__system_property_get" referenced by ...
+</pre>
+
+
+<p>
+  다음은 이러한 유형의 오류가 발생한 앱의 몇 가지 일반적인 수정사항입니다.
+</p>
+
+<ul>
+  <li>libandroid_runtime.so에서 getJavaVM 및 getJNIEnv 사용은 표준
+JNI 함수로 교체될 수 있습니다.
+<pre class="no-pretty-print">
+AndroidRuntime::getJavaVM -&gt; GetJavaVM from &lt;jni.h&gt;
+AndroidRuntime::getJNIEnv -&gt; JavaVM::GetEnv or
+JavaVM::AttachCurrentThread from &lt;jni.h&gt;.
+</pre>
+  </li>
+
+  <li>{@code libcutils.so}에서 {@code property_get} 기호 사용은 공개 대체
+{@code __system_property_get}으로 교체될 수 있습니다.
+이렇게 하려면, include와 함께 {@code __system_property_get}을 사용합니다.
+<pre>
+#include &lt;sys/system_properties.h&gt;
+</pre>
+  </li>
+
+  <li>{@code libcrypto.so}에서 {@code SSL_ctrl} 기호 사용은 앱 로컬
+버전으로 교체되어야 합니다. 예를 들어, {@code .so} 파일에서
+{@code libcyrpto.a}를 정적으로 링크하거나 BoringSSL 또는 OpenSSL에서
+{@code libcrypto.so}를 동적으로 앱에 포함시켜야 합니다.
+  </li>
+</ul>
+
+<h2 id="afw">Android for Work</h2>
+<p>
+  Android N에는 Android for Work를 대상으로 하는 앱에 대한 변경이
+포함됩니다. 이러한 변경으로는 인증서 설치, 암호 재설정,
+보조 사용자 관리, 기기 식별자 액세스 등에 대한
+변경이 있습니다. Android for Work 환경용 앱을 작성하는 경우에는 이러한
+변경을 검토하고 그에 따라 앱을 수정해야 합니다.
+</p>
+
+<ul>
+  <li>DPC가 인증서를 설정하기 전에, 위임된 인증서 설치 관리자를 먼저
+설치하셔야 합니다. N SDK를 대상으로 하는 프로필 소유자
+앱 및 기기 소유자 앱의 경우, 기기 정책 컨트롤러(DPC)가 <code>DevicePolicyManager.setCertInstallerPackage()</code>를 호출하기
+전에, 위임된 인증서 설치 관리자를 설치해야 합니다. 아직 설치 관리자가
+설치되지
+않은 경우, 시스템이 <code>IllegalArgumentException</code>을
+발생시킵니다.
+  </li>
+
+  <li>이제 기기 관리자의 암호 재설정 제한이 프로필 소유자에게도
+적용됩니다. 기기 관리자는 이미 설정된 암호를 변경하거나 암호를
+지우기 위해 <code>DevicePolicyManager.resetPassword()</code>를 더 이상 사용할
+수 없습니다. 기기 관리자가 여전히 암호를 설정할 수 있지만
+기기에 암호, PIN 또는 패턴이 없는 경우에만 암호를 설정할 수 있습니다.
+  </li>
+
+  <li>제한이 설정되어 있더라도 기기 소유자와 프로필 소유자는
+계정을 관리할 수 있습니다. <code>DISALLOW_MODIFY_ACCOUNTS</code> 사용자
+제한이 있더라도 기기 소유자와 프로필 소유자가 계정 관리 API를 호출할 수 있습니다.
+  </li>
+
+  <li>기기 소유자는 보다 쉽게 보조 사용자를 관리할 수 있습니다.
+기기가 기기 소유자 모드에서 실행 중인 경우 <code>DISALLOW_ADD_USER</code>
+제한이 자동으로 설정됩니다. 이렇게 하면 사용자는
+비관리 보조 사용자를 생성할 수가 없습니다. 또한 <code>CreateUser()</code>
+및 <code>createAndInitial()</code> 메서드가 사용 중단되었으며, 
+새로운 <code>DevicePolicyManager.createAndManageUser()</code> 메서드로 대체되었습니다.
+  </li>
+
+  <li>기기 소유자는 기기 식별자에 액세스할 수 있습니다. 기기
+소유자는 <code>DevicePolicyManagewr.getWifiMacAddress()</code>를 사용하여 기기의
+Wi-Fi MAC 주소에 액세스할 수 있습니다.
+기기에서 Wi-Fi가 활성화되지 않은 경우 이 메서드는 {@code null} 값을 반환합니다.
+  </li>
+</ul>
+
+<p>
+  Android N에서 Android for Work의 변경에 대한 자세한 내용은,
+<a href="{@docRoot}preview/features/afw.html">Android for Work 업데이트</a>를 참조하세요.
+</p>
+
+<h2 id="other">기타 중요한 사항</h2>
+
+<ul>
+<li>앱이 Android N에서 실행 중일 때 API 레벨이 낮고 사용자가 디스플레이
+크기를 변경한 경우, 해당 앱 프로세스가 종료됩니다. 앱은 이
+시나리오를 매끄럽게 처리할 수 있어야 합니다. 그렇지 않으면
+사용자가 Recents에서 앱을 복원할 때 앱 작동이 중단됩니다.
+
+<p>
+이러한 동작이 발생하지 않도록 앱을 테스트해야 합니다.
+DDMS를 통해 수동으로 앱을 종료할 때
+동일한 작동 중단을 유발시키는 방식으로 테스트할
+수 있습니다.
+</p>
+
+<p>
+N 이상을 대상으로 하는 앱은 밀도 변경 시에 자동으로 종료되지 않지만
+구성 변경에는 제대로 응답하지 못할 수도 있습니다.
+</p>
+</li>
+
+<li>
+Android N에서 앱은 구성 변경을 매끄럽게 처리할 수 있어야 하며,
+이후의 시작 시에도 작동이 중단되어서는 안 됩니다. 글꼴 크기(<strong>Setting</strong> &gt;
+<strong>Display</strong> &gt;
+<strong>Font size</strong>)를 변경하여 앱 동작을 검사한 다음, Recents에서
+앱을 복원할 수 있습니다.
+</li>
+</ul>
+
diff --git a/docs/html-intl/intl/ko/preview/download.jd b/docs/html-intl/intl/ko/preview/download.jd
new file mode 100644
index 0000000..cfd0497
--- /dev/null
+++ b/docs/html-intl/intl/ko/preview/download.jd
@@ -0,0 +1,541 @@
+page.title=기기에서 테스트
+meta.tags="프리뷰", "nexus","시스템 이미지"
+page.tags="preview", "androidn"
+page.image=images/cards/card-n-downloads_2x.png
+
+@jd:body
+
+<div style="position:relative; min-height:600px">
+
+  <div class="wrap" id="tos" style="position:absolute;display:none;width:inherit;">
+
+    <p class="sdk-terms-intro">Android Preview SDK의 구성 요소를
+다운로드하고 설치하기 전에 우선 다음과 같은
+사용 약관에 동의해야 합니다.</p>
+
+    <h2 class="norule">사용 약관</h2>
+
+    <div class="sdk-terms" onfocus="this.blur()" style="width:678px">
+이것은 Android SDK Preview 라이선스 계약서입니다(이하 "라이선스 계약").
+
+1. 개요 
+
+1.1 Android SDK Preview(본 라이선스 계약에서는 "Preview"라고 칭하며, 구체적으로 Android 시스템 파일, 패키지 API 및 Preview 라이브러리 파일이 이용 가능한 경우 및 이용 가능하게 전환된 경우 이를 포함한 것을 가리킴)는 본 라이선스 계약 조건에 따라 계약자에게 사용을 허여합니다. 본 라이선스 계약은 Preview 사용과 관련하여 계약자와 Google 간에 법적 구속력이 있는 계약을 체결합니다.
+
+1.2 "Android"는 기기를 위한 Android 소프트웨어 스택을 의미합니다. 이는 http://source.android.com/ URL에 위치하며 수시로 업데이트되는 Android 오픈 소스 프로젝트에서 제공됩니다.
+
+1.3 “Android 호환”은 (i) Android 호환성 웹사이트(http://source.android.com/compatibility)에서 찾을 수 있고 간혹 업데이트되는 Android 호환성 정의 문서를 준수하며; (ii) Android CTS(Compatibility Test Suite)를 성공적으로 통과한 모든 Android 구현을 의미합니다.
+
+1.4 "Google"은 미국 1600 Amphitheatre Parkway, Mountain View, CA 94043에 본사를 두고 있는 델라웨어주 법인인 Google Inc.를 의미합니다.
+
+2. 라이선스 계약에 동의 
+
+2.1 이 Preview를 사용하려면, 먼저 라이선스 계약에 동의해야 합니다. 이 라이선스 계약에 동의하지 않고 Preview를 사용해서는 안 됩니다. 
+
+2.2 수락을 클릭하고/거나 Preview를 사용하면 본 라이선스 계약 조건에 동의하는 것으로 간주됩니다.
+
+2.3 미국법 또는 현재 거주 중이거나 Preview를 사용하는 국가를 포함하여 다른 국가의 법에 따라 Preview를 받는 것이 금지된 경우, Preview를 사용할 수 없으며 본 라이선스 계약을 수락할 수 없습니다.
+
+2.4 회사 또는 단체 내에서 내부적으로 Preview를 사용하며 고용주 또는 기타 단체를 대신하여 본 라이선스 계약 준수에 동의하는 경우, 계약자의 고용주나 그 단체에 본 라이선스 계약에 대한 구속력을 부여할 수 있는 모든 법적 권한을 계약자가 갖고 있음을 진술하고 보증합니다. 구속력을 부여할 수 있는 법적 권한이 없을 경우, 고용주 또는 기타 단체를 대신하여 본 라이선스 계약에 동의하거나 Preview를 사용할 수 없습니다.
+
+3. Google의 Preview 라이선스
+
+3.1 본 라이선스 계약의 조건에 따라 Google은 계약자에게 한정적이며 전 세계적으로 무료로 사용이 가능하고 양도할 수 없고 비독점적이며 2차 라이선스를 불허하는 Preview 사용 라이선스를 부여합니다. 이 라이선스 하에서 계약자는 Android 플랫폼에서 실행되는 애플리케이션을 개발하는 경우에만 Preview를 사용할 수 있습니다.
+
+3.2 이 Preview를 사용하여 다른 플랫폼용 애플리케이션을 개발하거나(Android 비호환 구현 포함) 다른 SDK를 개발할 수 없습니다. 물론 이 Preview가 이러한 목적에 사용되지 않는 경우 Android의 비호환 구현을 포함한 다른 플랫폼용 애플리케이션을 자유롭게 개발할 수 있습니다.
+
+3.3 계약자는 Preview에 존재하는 지적 재산권을 포함하여 Preview에 대한 모든 법적인 권리, 소유권 및 이익이 Google 또는 제3자에게 있음에 동의합니다. "지적 재산권"은 모든 특허법, 저작권법, 영업비밀법, 상표법 하의 모든 권리 및 기타 모든 소유권을 의미합니다. Google은 계약자에게 명시적으로 부여하지 않은 모든 권리를 보유합니다.
+
+3.4 본 라이선스 계약에 명시적으로 허용된 용도 외에는 Preview를 사용할 수 없습니다. 해당 제3자 라이선스 요건이 허용하는 범위를 제외하고 계약자는 Preview의 파생 제품이나 Preview의 일부분을 (a) 복사(백업 목적 제외), 수정, 개작, 재배포, 역컴파일, 리버스 엔지니어링, 분해하거나 이를 통해 파생물을 생성하거나 (b) 개인 컴퓨터를 제외한 모바일 단말기 또는 기타 모든 하드웨어 기기에 Preview의 일부를 로드하거나, Preview의 일부를 다른 소프트웨어와 결합하거나 Preview의 일부가 통합된 일체의 소프트웨어나 기기를 배포해서는 안 됩니다.
+
+3.5 오픈 소스 소프트웨어 라이선스에 의거한 Preview 구성요소의 사용, 재생산, 배포에는 본 라이선스 계약이 아닌, 해당 오픈 소스 소프트웨어 라이선스의 조건이 적용됩니다. 계약자는 허용된 모든 권한 하에서 그러한 오픈 소스 소프트웨어 라이선스에 관해 충실한 피허가자로서의 자세를 견지할 것이며 그러한 권한을 종료, 일시 중단 또는 침해하는 행위를 삼갈 것을 동의합니다. 
+
+3.6 계약자는 Google이 제공하는 SDK의 형태 및 특성이 사전 통지 없이 변경될 수 있음에 동의하며, 이전 버전의 Preview에서 개발된 애플리케이션이 이후 버전의 SDK와 호환되지 않을 수 있음에 동의합니다. 계약자는 계약자 또는 사용자에게 사전 통지 없이 SDK(또는 SDK에 포함된 기능) 제공을(영구적 또는 일시적으로) 중단할 수 있는 권한이 Google에게 있음에 동의합니다.
+
+3.7 본 라이선스 계약은 계약자에게 Google의 상표명, 상표, 서비스 표시, 로고, 도메인 이름, 기타 독특한 브랜드 특징에 대한 사용 권한을 부여하지 않습니다.
+
+3.8 계약자는 SDK에 부착되어 있거나 포함되어 있는 모든 소유권 고지 사항(저작권 및 상표 고지 사항 포함)을 제거, 변경 또는 불분명하게 만들지 않을 것에 동의합니다.
+
+4. 계약자의 Preview 사용 
+
+4.1 Google은 본 라이선스 계약의 어떤 조항도 계약자(또는 계약자의 사용 허가자)가 Preview를 사용하여 개발한 소프트웨어 애플리케이션에 대한 권리, 소유권 또는 이익, 그리고 해당 애플리케이션에 존재하는 모든 지적 재산권을 부여하지 않는다는 점에 동의합니다.
+
+4.2 계약자는 (a) 본 라이선스 계약 그리고 (b) 모든 준거법, 규정 또는 관련 관할권 내에서 일반적으로 수용되는 관행 또는 지침(미국 또는 기타 관련 국가로/에서의 데이터 또는 소프트웨어 수출과 관련된 모든 법률 포함)에서 허용하는 용도에 한하여 Preview를 사용하고 애플리케이션을 작성하는 것에 동의합니다.
+
+4.3 계약자는 일반 대중 사용자를 대상으로 Preview를 사용하여 애플리케이션을 개발하는 경우, 해당 사용자의 프라이버시 및 법적 권리를 보호하는 것에 동의합니다. 사용자가 계약자에게 사용자 이름, 비밀번호 또는 기타 로그인 정보나 개인 정보를 제공하는 경우, 계약자는 제공된 정보가 자신의 애플리케이션에 제공된다는 사실을 사용자에게 알려야 하며, 반드시 법적으로 적절한 개인정보 보호정책 고지 및 보호를 해당 사용자에게 제공해야 합니다. 애플리케이션에서 사용자가 제공한 개인 정보나 민감한 정보를 저장하는 경우, 이를 안전하게 처리해야 합니다. 사용자들이 애플리케이션에 Google 계정 정보를 제공하는 경우, 애플리케이션은 해당 사용자의 Google 계정에 액세스하는 목적으로만, 그리고 각 사용자가 허용한 범위 내의 한정된 목적으로만 이러한 정보를 사용해야 합니다.
+
+4.4 계약자는 Google 또는 기타 모든 타사의 서버, 네트워크 또는 기타 모든 재산 또는 서비스를 허가 없이 방해, 교란, 손상 또는 액세스하는 애플리케이션의 개발 또는 배포를 포함한 하등의 행위에 Preview를 이용하지 않을 것임을 동의합니다.
+
+4.5 계약자는 자신이 Android 및/또는 Android용 애플리케이션을 통해 생성, 전송 또는 표시하는 모든 데이터, 콘텐츠 또는 리소스 그리고 그로 인한 결과(Google이 입을 수 있는 모든 피해나 손실 포함)에 대해 전적으로 책임이 있다는 것(그리고 Google은 계약자 또는 모든 제3자에 대한 책임이 없다는 것)에 동의합니다.
+
+4.6 계약자는 본 라이선스 계약, 모든 해당 제3자 계약 또는 서비스 약관, 또는 모든 준거법 또는 규정에 의거한 계약자 의무 위반, 그리고 그로 인한 결과(Google 또는 제3자가 입을 수 있는 모든 피해나 손실 포함)에 전적으로 책임이 있다는 것(그리고 Google은 계약자 또는 모든 제3자에 대한 책임이 없다는 것)에 동의합니다.
+
+4.7 이 Preview는 현재 개발 단계에 있으며, 계약자의 테스트와 피드백은 그러한 개발 과정에 중요한 부분을 차지합니다. Preview를 사용함으로써 계약자는 일부 기능의 구현은 아직 개발 중인 상태이며 Preview가 안정된 릴리스처럼 완벽하게 기능할 것이라 믿고 사용해서는 안 된다는 점을 인지하는 것으로 간주합니다. 계약자는 이 Preview를 사용한 애플리케이션을 공개적으로 배포 또는 배송하지 않기로 동의합니다. 이 Preview는 공식 Android SDK가 출시된 이후에는 더 이상 지원되지 않기 때문입니다.
+
+5. 계약자의 개발자 자격 증명
+
+5.1 계약자는 Google이 발급했거나 자신이 선택한 모든 개발자 자격 증명에 대한 기밀성을 유지할 책임이 있으며 계약자의 개발자 자격 증명 하에 개발된 모든 애플리케이션에 대한 전적인 책임이 있음에 동의합니다.
+
+6. 개인정보 보호정책 및 정보
+
+6.1 Preview를 지속적으로 혁신하고 개선하기 위해, Google은 고유 식별자, 관련 IP 주소, 소프트웨어 버전 번호, Preview에서 사용 중인 도구 및/또는 서비스와 도구의 사용법에 대한 정보를 포함하되 이에 국한되지 않고 소프트웨어에서 특정 사용량 통계 정보를 수집할 수 있습니다. 그러한 정보를 수집하기 전에 Preview는 계약자에게 이를 통지하고 동의를 구할 것입니다. 계약자가 동의하지 않을 경우 정보를 수집하지 않습니다.
+
+6.2 수집된 데이터는 모두 취합된 형태로 Preview 개선을 위해 검토되며, Google의 개인정보 보호정책에 따라 유지 관리됩니다. 이 정보는 http://www.google.com/policies/privacy/를 참조하십시오.
+
+7. 제3자 애플리케이션
+
+7.1 제3자가 개발한 애플리케이션을 실행하거나 제3자가 제공한 데이터, 콘텐츠 또는 리소스에 액세스하기 위해 Preview를 사용하는 경우, 계약자는 Google이 그러한 애플리케이션, 데이터, 콘텐츠 또는 리소스에 대한 책임이 없음에 동의합니다. 계약자는 그러한 제3자 애플리케이션을 통해 자신이 액세스한 모든 데이터, 콘텐츠 또는 리소스에 대한 책임은 그것을 만든 사람에게 있음에 동의합니다. 또한 계약자가 그러한 모든 제3자 애플리케이션, 데이터, 콘텐츠 또는 리소스를 사용하거나 액세스함으로써 비롯된 모든 피해나 손실에 대한 책임이 Google에게 없음에 동의합니다.
+
+7.2 그러한 제3자 애플리케이션을 통해 계약자에게 제공된 데이터, 콘텐츠 그리고 리소스는 그것을 제공한 제공자(또는 제공자를 대신하는 기타 개인 또는 기업)가 소유한 지적 재산권에 의해 보호될 수 있음을 유의해야 합니다. 그러한 데이터, 콘텐츠 또는 리소스(전부 또는 일부)를 수정, 임대, 리스, 대여, 판매, 배포하거나 이를 기반으로 파생물을 생성해서는 안 됩니다. 단, 관련 소유자로부터 그러한 작업을 수행해도 좋다는 허락을 받은 경우에는 예외입니다.
+
+7.3 계약자는 그러한 제3자 애플리케이션, 데이터, 콘텐츠 또는 리소스의 사용은 계약자와 관련 제3자 간에 체결하는 별도의 계약 조건의 적용을 받는다는 것을 인정합니다.
+
+8. Google API 사용
+
+8.1 Google Data API
+
+8.1.1 Google에서 데이터를 검색하기 위해 API를 사용하는 경우, 그러한 데이터가 Google 또는 데이터를 제공하는 당사자(또는 당사자를 대신하는 기타 개인 또는 기업)가 소유한 지적 재산권에 의해 보호될 수 있음을 인정합니다. 그러한 API를 사용하는 경우, 추가적인 서비스 약관의 적용을 받을 수 있습니다. 관련 서비스 약관에 허용되지 않은 한, 그러한 데이터(전부 또는 일부)를 변경, 임대, 리스, 대여, 판매, 배포하거나 이를 기반으로 파생물을 생성해서는 안 됩니다.
+
+8.1.2 Google에서 사용자 데이터를 검색하기 위해 API를 사용하는 경우, 계약자는 사용자로부터 명시적인 동의를 얻은 경우에 한하여, 그리고 해당 사용자가 허용한 범위 내의 한정된 목적으로만 데이터를 검색해야 합니다.
+
+9. 라이선스 계약 종료
+
+9.1 본 라이선스 계약은 계약자 또는 Google에 의해 아래와 같은 조건 하에 종료될 때까지 계속 적용됩니다.
+
+9.2 계약자가 라이선스 계약을 종료하고자 하는 경우, Preview 및 관련 개발자 자격 증명 일체의 사용을 중단하는 것으로 그러한 의사를 피력할 수 있습니다.
+
+9.3 Google은 언제든 이유 여하를 불문하고 계약자에게 통고하여 라이선스 계약을 종료할 수 있습니다.
+
+9.4 본 라이선스 계약은 통보 또는 여타의 행위 없이도 자동으로 종료됩니다. 이에 해당되려면 다음과 같은 조건이 수반되어야 합니다.
+(A) Google이 계약자가 거주하는 국가 또는 계약자가 서비스를 사용하는 지역에서 Preview 또는 Preview의 특정 부분 제공을 중지하는 경우 및
+(B) Google이 Android SDK의 최종 릴리스 버전을 발행하는 경우.
+
+9.5 본 라이선스 계약이 종료되면 라이선스 계약으로 계약자에게 허용한 라이선스가 취소되며, 이에 따라 계약자는 Preview 사용을 즉시 모두 중단해야 하고 제 10, 11, 12 및 14절의 조항이 기한 없이 유지됩니다.
+
+10. 면책 조항
+
+10.1 계약자는 Preview 이용에 대한 위험 부담이 전적으로 본인에게 있으며, Google이 일체의 보증 없이 Preview를 "있는 그대로" 그리고 "이용 가능한" 상태로 제공한다는 것을 분명히 이해하고 동의합니다.
+
+10.2 Preview 이용 및 이용 과정에서 다운로드하거나 얻게 되는 모든 자료를 사용하는 것은 본인의 재량에 따르며 이에 대한 위험 부담이 전적으로 본인에게 있으며, 그러한 사용으로 인해 발생하는 컴퓨터 시스템 또는 다른 기기의 손상 또는 데이터 손실에 대한 책임은 전적으로 본인에게 있습니다. 전술한 조항을 제한하지 않는 범위 내에서 계약자는 Preview가 안정된 릴리스가 아니며 오류, 결함 및 보안 취약성이 포함되어 있을 수 있어 그 결과로 중대한 손상을 유발할 수 있다는 점을 이해하는 것으로 간주합니다. 여기에는 계약자의 컴퓨터 시스템 또는 기타 기기의 완전하고 돌이킬 수 없는 손실도 포함됩니다.
+
+10.3 더 나아가, Google은 상품성, 특정 목적에 대한 적합성 및 비침해의 묵시적 보증 등을 포함하되 이에 국한되지 않고 명시적이든 묵시적이든 모든 종류의 보증 및 조건을 명시적으로 부인합니다.
+
+11. 책임 한계
+
+11.1 계약자는 계약자에게 발생할 수 있는 직접, 간접, 부수적, 특별, 결과적 또는 징벌적 손해에 대해 그 어떤 책임 이론에 근거해서도 Google, 해당 자회사, 계열사 및 사용 허가자가 어떠한 책임도 지지 아니함을 분명히 이해하고 동의합니다. 이러한 손해에는 Google 또는 해당 대리자가 이러한 손실 발생 가능성에 대해 통지를 받았거나 이러한 사항을 인식했는지에 상관없이 모든 데이터 손실이 포함됩니다.
+
+12. 면책
+
+12.1 법률에 의해 허용되는 최대한의 범위 안에서 계약자는 (a) Preview 사용, (b) 계약자가 Preview에서 개발한 일체의 애플리케이션에서 초래된 모든 사람의 저작권, 상표, 영업비밀, 트레이드 드레스, 특허 또는 기타 지적 재산권의 침해, 또는 어떤 사람의 명예를 훼손하거나 초상권 또는 개인정보 보호정책을 침해함 또는 (C)계약자 본인이 본 라이선스 계약을 위반함으로써 발생하거나 생기는 모든 청구, 조치, 소송 또는 절차, 그리고 모든 손실, 책임, 손해, 경비(합리적인 변호사 비용 포함)로부터 Google을 옹호하고, 면책시키고, Google이 손해를 입지 않도록 하는 데 동의합니다.
+
+13. 라이선스 계약 변경
+
+13.1 Preview의 새로운 버전을 배포할 때, Google은 본 라이선스 계약의 내용을 변경할 수 있습니다. 그러한 변경이 이뤄진 경우, Google은 Preview가 제공되는 웹사이트에 새로운 라이선스 계약 버전을 게재할 것입니다.
+
+14. 일반 법적 조건
+
+14.1 본 라이선스 계약은 계약자와 Google 간의 모든 법적 계약을 구성하며, 계약자의 Preview 사용을 규제하고(별도의 서면 계약을 통해 Google이 계약자에게 제공하는 모든 서비스는 제외), Preview와 관련하여 이전에 계약자와 Google이 맺은 모든 계약을 완전히 대체합니다.
+
+14.2 계약자는 Google이 라이선스 계약에 포함된(또는 관련 법률에 의해 Google이 향유하는) 법적 권리 또는 구제수단을 행사하거나 집행하지 않더라도, Google이 권리를 공식적으로 포기한 것으로 간주하지 않으며, Google이 계속해서 그러한 권리 또는 구제수단을 이용할 수 있음에 동의합니다.
+
+14.3 본 라이선스 계약의 조항이 무효라고 이 사안에 관한 판결을 할 수 있는 관할권을 가진 법원이 판결할 경우, 그 조항은 라이선스 계약의 나머지 조항에 영향을 미치지 않는 형태로 라이선스 계약에서 제거됩니다. 본 라이선스 계약의 나머지 조항은 여전히 유효하며 집행 가능합니다.
+
+14.4 계약자는 Google이 모회사가 되는 회사 그룹에 속한 각 회사가 본 라이선스 계약의 제3수익자이며, 그러한 다른 회사들이 그들에게 이익(또는 유리한 권리)을 부여하는 본 라이선스 계약의 모든 조항을 직접 행사하고 적용할 수 있는 권리를 가진다는 데 동의합니다. 그 외에는 다른 어떤 개인이나 회사도 본 라이선스 계약의 제3수익자가 될 수 없습니다.
+
+14.5 수출 규제. Preview는 미국의 수출법과 규정의 적용을 받습니다. 계약자는 Preview에 적용되는 모든 국내 및 국제 수출법과 규정을 준수해야 합니다. 그러한 법에는 수출 대상국, 최종 사용자 및 최종 용도에 대한 제한이 포함됩니다.
+
+14.6 계약자 또는 Google은 상대 당사자의 사전 서면 승인 없이 본 라이선스 계약에서 부여된 권리를 제3자에게 양도하거나 이전할 수 없으며, 그러한 승인 없이 이루어진 양도 시도는 모두 무효입니다. 계약자는 Google의 사전 승인 없이 본 라이선스 계약 상의 책임 또는 의무를 위임할 수 없습니다. 
+
+14.7 본 라이선스 계약, 그리고 본 라이선스 계약 상의 계약자와 Google의 관계는 법률 조항 간의 충돌과는 무관하게 캘리포니아주법에 의한 규제를 받습니다. 계약자와 Google은 본 라이선스 계약으로부터 발생하는 모든 법적 문제 해결을 캘리포니아주 산타 클라라(Santa Clara) 카운티 내에 소재한 전속 관할 법원에 의뢰하는 것에 동의합니다. 위 규정에도 불구하고, 계약자는 Google이 여전히 모든 관할권에서 강제 구제책(또는 동등한 유형의 긴급 법적 구제)을 신청할 수 있음에 동의합니다.
+  </div><!-- sdk terms -->
+
+
+
+    <div id="sdk-terms-form">
+      <p>
+        <input id="agree" type="checkbox" name="agree" value="1" onclick="onAgreeChecked()" />
+        <label id="agreeLabel" for="agree">본인은 상기 사용 약관을 읽었으며 이에 동의합니다.</label>
+      </p>
+      <p><a href="" class="button disabled" id="downloadForRealz" onclick="return onDownloadForRealz(this);"></a></p>
+    </div>
+
+
+  </div><!-- end TOS -->
+
+
+  <div id="landing">
+
+<div id="qv-wrapper">
+  <div id="qv">
+    <h2>이 문서의 내용</h2>
+      <ol>
+        <li><a href="#device-preview">하드웨어 기기 설정</a>
+          <ol>
+            <li><a href="#ota">OTA 업데이트</a></li>
+            <li><a href="#flash">수동 기기 플래시</a></li>
+            <li><a href="#revertDevice">제거</a></li>
+          </ol>
+        </li>
+        <li><a href="#setupAVD">에뮬레이터 설정</a></li>
+      </ol>
+  </div>
+</div>
+
+<p>
+  새로운 플랫폼에서 앱을 테스트하려면 Android N
+런타임 환경을 설정해야 합니다. 다음 두 가지 방법 중 하나를 사용할 수 있습니다.
+</p>
+
+<ul>
+  <li>지원되는 하드웨어 기기에서 Android N 설치</li>
+  <li>Android N을 실행하는 Android 에뮬레이터 설정</li>
+</ul>
+
+<p>
+  새로운 플래폼에서 앱의 기본적 호환성을 테스트할 환경을 원할 경우
+현재 APK와 하드웨어 기기 또는
+에뮬레이터만 있으면 됩니다. 기본 테스트를 위해 전체 개발 환경을
+업데이트할 필요가 없습니다.
+</p>
+
+<p>
+  Android N을 대상으로 하도록 앱을 수정하거나 새로운 Android N API를 사용하고 싶다면,
+Android N을 지원하도록
+업데이트된 개발 환경을 설정해야 합니다. 자세한 내용은 <a href="{@docRoot}preview/setup-sdk.html">Android N용 개발
+설정</a>을 참조하세요.
+</p>
+
+
+<h2 id="device-preview">하드웨어 기기 설정</h2>
+
+<p>
+  N Developer Preview는 전화에서 태블릿, TV에 이르기까지 앱을 테스트하는 데 사용할 수 있는
+다양한 하드웨어 기기의 시스템 업데이트를 제공합니다.
+</p>
+
+<p>
+  지원되는 기기에 액세스할 수 있다면 다음 방법 중 하나를 사용하여 Developer Preview 마일스톤 빌드로
+업데이트할 수 있습니다.
+</p>
+
+<ul>
+  <li>
+<a href="https://g.co/androidbeta">Android 베타 프로그램</a>을 통해 <strong>자동 OTA 시스템 업데이트에 기기를 등록</strong>합니다. 기기를 등록하면 N Developer Preview에서 
+모든 마일스톤 빌드에 대해 정기적으로 OTA 업데이트를 받을 수 있습니다.
+현재 환경을 다양한 N Developer Preview 릴리스로 매끄럽게 전환할 수 있으므로
+이 방법을 권장합니다.</li>
+  <li><strong>Developer Preview 시스템 이미지를 다운로드하고 기기를 플래시합니다</strong>.
+수동으로 플래시하는 기기에는 OTA 업데이트가 자동으로 제공되지 않지만
+Android 베타 프로그램에 기기를 등록하면 OTA 업데이트를 받을 수 있습니다. </li>
+</ul>
+
+<h3 id="ota">자동 OTA 업데이트에 기기 등록</h3>
+
+<p>
+  지원되는 기기에 액세스할 수 있다면(아래 다운로드 표
+참조),
+<a href="https://g.co/androidbeta">Android 베타 프로그램</a>에 등록해서 Android 프리뷰 버전에 대해 OTA 업데이트를 받을 수 있습니다. 이 업데이트는
+자동으로 다운로드되고 공식 시스템 업데이트처럼
+기기를 업데이트합니다.
+</p>
+
+<p>
+  기기는 언제든 등록을 해제할 수 있습니다. 기기는
+해당 기기에 제공되는 가장 최신 Android 프로덕션 버전으로 OTA 업데이트를 받게 됩니다
+(예: Android 6.0 Marshmallow). 업데이트 시 기기가 완전히 초기화되므로
+기기의 사용자 데이터는 삭제됩니다. 기기 등록을 해제하기 전에 <strong>
+중요한 데이터는 백업</strong>하세요.
+</p>
+
+<p>
+  자세한 정보를 확인하고 기기를 등록하려면
+<a href="https://g.co/androidbeta">Android 베타 프로그램</a> 웹사이트를 참조하세요.
+</p>
+
+<p class="note"><strong>참고:</strong>
+등록을 해제하면 기기가 완전히 초기화됩니다. 중요한 데이터를
+먼저 백업하세요.
+</p>
+
+<h3 id="flash">기기 수동 플래시</h3>
+
+<p>
+  언제든 최신 Developer Preview 시스템 이미지를 다운로드하고
+기기에 수동으로 플래시할 수 있습니다. 아래 표를 참조하여 기기 테스트용 시스템 이미지를
+다운로드하세요. 기기 수동 플래시는
+테스트 환경을 정확히 제어해야 하거나 자동 테스트 등을 위해 자주 플래시해야 할 경우
+유용합니다. 
+</p>
+
+<!-- You can flash by ota or system image --><p>
+  기기에 시스템 이미지를 설치하면 <strong>기기에서 모든 데이터가
+삭제</strong>되므로 데이터를 먼저 백업하는 것이 좋습니다.
+</p>
+
+<p>
+  기기 데이터를 백업하고 기기에 맞는 아래의 시스템 이미지를 다운로드한 뒤,
+<a href="https://developers.google.com/android/nexus/images#instructions">developers.google.com/android</a>
+의 지침에 따라 기기에 이미지를 플래시합니다.
+</p>
+
+<p>
+  수동으로 플래시한 시스템 이미지는 최신 Developer Preview 마일스톤 빌드에 대한 <strong>
+OTA 업데이트를 자동으로 수신하지 않습니다</strong>.
+각 Developer Preview 마일스톤에서 환경을 최신으로 유지하고 새 시스템 이미지를
+플래시하세요.
+</p>
+
+<p>
+  기기를 수동으로 플래시한 후 OTA 업데이트를 받으려면
+<a href="https://g.co/androidbeta">Android
+베타 프로그램</a>에 기기를 등록하기만 하면 됩니다. 언제든 기기를 등록하고 다음 Preview
+업데이트를 무선으로 받을 수 있습니다. 
+</p>
+
+<table>
+  <tr>
+    <th scope="col">기기</th>
+    <th scope="col">다운로드/체크섬</th>
+  </tr>
+
+  <tr id="bullhead">
+    <td>Nexus 5X <br>"bullhead"</td>
+    <td><a href="#top" onclick="onDownload(this)">bullhead-npc56p-preview-6c877a3d.tgz</a><br>
+      MD5: b5cf874021023b398f5b983b24913f5d<br>
+      SHA-1: 6c877a3d9fae7ec8a1678448e325b77b7a7b143a
+    </td>
+  </tr>
+
+  <tr id="shamu">
+    <td>Nexus 6 <br>"shamu"</td>
+    <td><a href="#top" onclick="onDownload(this)">shamu-npc56p-preview-54b13c67.tgz</a><br>
+      MD5: af183638cf34e0eb944a1957d7696f60<br>
+      SHA-1: 54b13c6703d369cc79a8fd8728fe4103c6343973
+    </td>
+  </tr>
+
+  <tr id="angler">
+    <td>Nexus 6P <br>"angler"</td>
+    <td><a href="#top" onclick="onDownload(this)">angler-npc56p-preview-85ffc1b1.tgz</a><br>
+      MD5: bc4934ea7bd325753eee1606d3725a24<br>
+      SHA-1: 85ffc1b1be402b1b96f9ba10929e86bba6c6c588
+    </td>
+  </tr>
+
+  <tr id="volantis">
+    <td>Nexus 9 <br>"volantis"</td>
+    <td><a href="#top" onclick="onDownload(this)">volantis-npc56p-preview-0e8ec8ef.tgz</a><br>
+      MD5: c901334c6158351e945f188167ae56f4<br>
+      SHA-1: 0e8ec8ef98c7a8d4f58d15f90afc5176303efca4
+    </td>
+  </tr>
+
+  <tr id="volantisg">
+    <td>Nexus 9G <br>"volantisg"</td>
+    <td><a href="#top" onclick="onDownload(this)">volantisg-npc56p-preview-1bafdbfb.tgz</a><br>
+      MD5: 7bb95bebc478d7257cccb4652899d1b4<br>
+      SHA-1: 1bafdbfb502e979a9fe4c257a379c4c7af8a3ae6
+    </td>
+  </tr>
+
+  <tr id="fugu">
+    <td>Nexus Player <br>"fugu"</td>
+    <td><a href="#top" onclick="onDownload(this)">fugu-npc56r-preview-7027d5b6.tgz</a><br>
+      MD5: f5d3d8f75836ccfe4c70e8162e498be4<br>
+      SHA-1: 7027d5b662bceda4c80a91a0a14ef0e5a7ba795b
+    </td>
+  </tr>
+
+  <tr id="ryu">
+    <td>Pixel C <br>"ryu"</td>
+    <td><a href="#top" onclick="onDownload(this)">ryu-npc56p-preview-335a86a4.tgz</a><br>
+      MD5: 4e21fb183bbbf467bee91598d587fd2e<br>
+      SHA-1: 335a86a435ee51f18464de343ad2e071c38f0e92
+    </td>
+  </tr>
+  <tr id="seed">
+    <td>General Mobile 4G (Android One) <br>"seed"</td>
+    <td><a href="#top" onclick="onDownload(this)">seed_l8150-npc56p-preview-82472ebc.tgz</a><br>
+      MD5: 983e083bc7cd0c4a2d39d6ebaa20202a<br>
+      SHA-1: 82472ebc9a6054a103f53cb400a1351913c95127
+    </td>
+  </tr>
+
+</table>
+
+<h3 id="revertDevice">기기에서 Preview 제거</h3>
+
+<p>
+  기기에서 Preview를 제거하려면
+다음 중 한 가지 방법을 사용할 수 있습니다. </p>
+  <ul>
+    <li><strong>공장 사양 시스템 이미지</strong>를 획득한 다음 기기에 수동으로
+플래시합니다.
+      <ul>
+          <li><strong>Nexus 기기와 Pixel C 기기</strong>의 경우, 
+<a href="http://developers.google.com/android/nexus/images">Nexus 기기용
+공장 이미지</a> 페이지에서 다운로드하세요. </li>
+        <li><strong>다른 기기</strong>의 경우, 기기 제조업체에 직접
+문의하세요. 또는, Android 베타 프로그램에서 지원되는
+기기라면
+프로그램에 기기를 등록한 다음 등록을 해제할 수 있습니다(아래 참조).</li>
+      </ul>
+    </li>
+    <li><strong>Android 베타 프로그램에서 기기 등록을 해제합니다</strong>.
+기기가 <a href="https://g.co/androidbeta">Android 베타
+프로그램</a>에 등록되었다면 기기와 관계없이 프로그램에서 등록을 해제하기만 하면 됩니다.
+  <p>
+    기기는해당 기기에 제공되는 가장 최신 Android 프로덕션 버전으로
+OTA 업데이트를 받게 됩니다(예: Android 6.0 Marshmallow).
+업데이트 시 기기가 완전히 초기화되므로 기기의 사용자 데이터는 삭제됩니다
+ 기기 등록을 해제하기
+전에 <strong>중요한 데이터는 백업</strong>하세요.
+  </p>
+  </li>
+</ul>
+
+<p class="note"><strong>참고:</strong>
+프로그램이 끝나기 전에 Developer Preview 시스템 이미지를 삭제하려면
+기기를 완전히 초기화하고 기기에서 모든 사용자 데이터를
+삭제해야 합니다.
+</p>
+
+
+<h2 id="setupAVD">에뮬레이터 설정</h2>
+
+<p>Android 에뮬레이터를 사용하여 Android N Preview를 실행하려면
+Android N Preview SDK를 다운로드하고 에뮬레이터용 가상 기기를
+생성해야 합니다.</p>
+
+<p>먼저 다음과 같이 Android N Preview SDK를 다운로드합니다(
+<a href="{@docRoot}preview/setup-sdk.html">Android N용 개발 설정
+</a> 시 이미 다운로드했다면 이 부분은 건너뛸 수 있습니다).
+
+<ol>
+  <li>Android Studio에서 Settings 대화 상자를 엽니다
+(Windows/Linux에서 <strong>File &gt; Settings</strong>, Mac에서는 
+<strong>Android Studio &gt; Preferences</strong>). 왼쪽 창에서
+<strong>Appearance &amp; Behavior &gt;
+System Settings &gt; Android SDK</strong>를 선택합니다.
+
+  <li><strong>SDK Platforms</strong> 탭을 클릭한 다음,
+<strong>Android N Preview</strong> 확인란을 선택합니다.</li>
+
+  <li><strong>SDK Tools</strong> 탭을 클릭한 다음,
+<strong>Android SDK Build Tools</strong>, <strong>Android SDK
+Platform-Tools</strong>, <strong>Android SDK Tools</strong> 확인란을
+선택합니다.
+  </li>
+
+  <li><strong>OK</strong>를 클릭하고 설치할 패키지의
+사용권 계약에 동의합니다.
+  </li>
+</ol>
+
+<p>이제 <strong>Android SDK Built-Tools 24.0 0 rc1</strong>,
+<strong>Platform-Tools 24.0.0 rc1</strong> 및 <strong>SDK Tools
+25.0.9</strong>를 다운로드했습니다. SDK 도구를 25.0.9로 업데이트하지 않으면
+Android N에서 x86_64 시스템 이미지를 실행할 수 없습니다.</p>
+
+
+<p>Android N 시스템 이미지로 가상 기기 생성:</p>
+
+<ol>
+  <li><strong>Tools &gt; Android &gt;
+AVD Manager</strong>를 선택하여 AVD Manager를 엽니다.</li>
+  <li><strong>Create Virtual Device</strong>를 클릭합니다.</li>
+  <li>Nexus 5X, Nexus 6P, Nexus 9, Android TV 등의 기기를 선택하고
+<strong>Next</strong>를 클릭합니다.</li>
+  <li><strong>N</strong> 시스템 이미지(
+<strong>x86</strong> ABI)를 선택하고 <strong>Next</strong>를 클릭합니다.
+(현재 x86 시스템 이미지만 Android N Preview용 Android 에뮬레이터에서
+지원됩니다.)
+  <li>나머지 AVD 구성을 완료하고
+<strong>Finish</strong>를 클릭합니다.</li>
+</ol>
+
+<p>이제 Android N Preview AVD로 Android 에뮬레이터를 시작할 수 있습니다.</p>
+
+<p>
+Android 에뮬레이터에서 최상의 경험을 얻으려면
+Android Studio 2.1 Preview를 설치하세요. Android Studio 1.5의 에뮬레이터에 비해 더욱 빠른 성능을 제공하는 <a href="http://tools.android.com/tech-docs/emulator">Android Emulator 2.0 Beta</a>가
+지원됩니다.
+</p>
+
+<p class="note"><strong>참고:</strong>
+현재 Android Studio 2.0 Beta를 사용하는 경우
+N Preview 시스템 이미지로 AVD를 생성할 수 없는 문제가 보고되었습니다.
+따라서 지금은 Android Studio 2.1 Preview를 사용하여 AVD를 생성해야 합니다.
+</p>
+
+<p>가상 기기 생성에 대한 자세한 내용은 <a href="{@docRoot}tools/devices/index.html">가상 기기 관리</a>를 참조하세요.
+</p>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+  </div><!-- landing -->
+
+</div><!-- relative wrapper -->
+
+
+
+<script>
+  var urlRoot = "http://storage.googleapis.com/androiddevelopers/shareables/preview/";
+  function onDownload(link) {
+
+    $("#downloadForRealz").html("Download " + $(link).text());
+    $("#downloadForRealz").attr('href', urlRoot + $(link).text());
+
+    $("#tos").fadeIn('fast');
+    $("#landing").fadeOut('fast');
+
+    return true;
+  }
+
+
+  function onAgreeChecked() {
+    /* verify that the TOS is agreed */
+    if ($("input#agree").is(":checked")) {
+      /* reveal the download button */
+      $("a#downloadForRealz").removeClass('disabled');
+    } else {
+      $("a#downloadForRealz").addClass('disabled');
+    }
+  }
+
+  function onDownloadForRealz(link) {
+    if ($("input#agree").is(':checked')) {
+    /*
+      $("#tos").fadeOut('fast');
+      $("#landing").fadeIn('fast');
+    */
+
+      ga('send', 'event', 'M Preview', 'System Image', $("#downloadForRealz").html());
+
+    /*
+      location.hash = "";
+    */
+      return true;
+    } else {
+      return false;
+    }
+  }
+
+  $(window).hashchange( function(){
+    if (location.hash == "") {
+      location.reload();
+    }
+  });
+
+</script>
diff --git a/docs/html-intl/intl/ko/preview/features/background-optimization.jd b/docs/html-intl/intl/ko/preview/features/background-optimization.jd
new file mode 100644
index 0000000..817d216
--- /dev/null
+++ b/docs/html-intl/intl/ko/preview/features/background-optimization.jd
@@ -0,0 +1,388 @@
+page.title=백그라운드 최적화
+page.metaDescription=암시적 브로드캐스트에 대한 새로운 제한.
+page.keywords="android N", "implicit broadcasts", "job scheduler"
+@jd:body
+
+<div id="qv-wrapper">
+  <div id="qv">
+    <h2>
+      이 문서의 내용
+    </h2>
+
+    <ol>
+      <li>
+        <a href="#connectivity-action">CONNECTIVITY_ACTION에 대한 제한</a>
+      </li>
+
+      <li>
+        <a href="#sched-jobs">비 데이터 통신 연결에서 네트워크 작업
+예약</a>
+      </li>
+
+      <li>
+        <a href="#monitor-conn">앱이 실행되는 중에 네트워크
+연결 모니터링</a>
+      </li>
+
+      <li>
+<a href="#media-broadcasts">NEW_PICTURE 및
+NEW_VIDEO에 대한 제한</a>
+      </li>
+
+      <li>
+        <a href="#new-jobinfo">새로운 JobInfo 메서드</a>
+      </li>
+
+      <li>
+        <a href="#new-jobparam">새로운 JobParameter 메서드</a>
+      </li>
+
+      <li>
+        <a href="#further-optimization">추가적인 앱 최적화</a>
+      </li>
+    </ol>
+  </div>
+</div>
+
+<p>
+  백그라운드 프로세스는 메모리와 배터리를 많이 소모할 수 있습니다. 예를 들어, 암시적 브로드캐스트는
+이 브로드캐스트를 수신하도록 등록된 많은 백그라운드 프로세스를 시작할 수 있지만
+해당 프로세스가 많은 작업을 수행하지 못할 경우가 있습니다. 이로 인해 기기 성능과
+사용자 경험에 상당한 영향을 미칠 수 있습니다.
+</p>
+
+<p>
+  이 문제를 완화하기 위해, N Developer Preview
+는 다음과 같은 제한을 적용합니다.
+</p>
+
+<ul>
+  <li>브로드캐스트를 수신하도록 매니페스트에 등록되어 있더라도, Preview를 대상으로 하는 앱은 {@link
+  android.net.ConnectivityManager#CONNECTIVITY_ACTION}
+브로드캐스트를 수신하지 않습니다. 포그라운드에서 실행되는 앱은 {@link
+  android.content.Context#registerReceiver Context.registerReceiver()}로 {@link android.content.BroadcastReceiver}를
+등록하여 여전히 메인 스레드에서 {@code CONNECTIVITY_CHANGE}를 수신할
+수 있습니다.
+  </li>
+
+  <li>앱은 {@link
+  android.hardware.Camera#ACTION_NEW_PICTURE} 또는 {@link
+  android.hardware.Camera#ACTION_NEW_VIDEO} 브로드캐스트를 송수신할 수 없습니다. 이 최적화는 Preview를 대상으로
+하는 앱 뿐만 아니라 모든 앱에 영향을 미칩니다.
+  </li>
+</ul>
+
+<p>
+  Android 프레임워크는 이러한 암시적 브로드캐스트의
+필요성을 줄이기 위한 여러 가지 해결책을 제공합니다. 예를 들어, {@link android.app.job.JobScheduler}
+및 <a href="https://developers.google.com/android/reference/com/google/android/gms/gcm/GcmNetworkManager">
+  {@code GcmNetworkManager}</a>는 지정된
+조건(예: 비 데이터 통신 네트워크에 연결)이 충족될 경우 네트워크 작업을
+예약할 수 있는 강력한 메커니즘을 제공합니다. 이제 {@link android.app.job.JobScheduler}를
+사용하여 콘텐츠 제공자의 변경에 대응할 수도 있습니다. {@link android.app.job.JobInfo}
+객체는 {@link android.app.job.JobScheduler}가
+작업 예약에 사용하는 매개변수를 캡슐화합니다. 작업 조건이 충족되면 시스템은
+이 작업을 앱의 {@link android.app.job.JobService}에서 실행합니다.
+</p>
+
+<p>
+  이 문서에서는 대체 메서드(예: {@link android.app.job.JobScheduler})를
+사용하여 이러한 새로운 제한에 맞게 앱을 적용하는 방법에 대해
+배워보겠습니다.
+</p>
+
+<h2 id="connectivity-action">
+  CONNECTIVITY_ACTION에 대한 제한
+</h2>
+
+<p>
+  브로드캐스트를 수신하도록 매니페스트에 등록되어
+있더라도, N Developer Preview를 대상으로 하는 앱은 {@link
+  android.net.ConnectivityManager#CONNECTIVITY_ACTION} 브로드캐스트를 수신하지 않으며, 이 브로드캐스트에 종속되는 프로세스는
+시작되지 않습니다. 이 경우 네트워크 변경을 수신하려는 앱이나,
+기기가 비 데이터 통신 네트워크에 연결될 때 대량 네트워크 액티비티를
+수행하려는 앱에서 문제가 발생할 수 있습니다. 이 제한을 해결하기 위한 여러 가지
+해결책이 Android 프레임워크에 이미 있지만, 올바른 해결책을 선택하는 것은
+앱의 용도에 따라 다릅니다.
+</p>
+
+<p class="note">
+  <strong>참고:</strong> {@link android.content.Context#registerReceiver Context.registerReceiver()}로
+등록된 {@link android.content.BroadcastReceiver}는 앱이
+포그라운드에 있는 동안 계속해서 이 브로드캐스트를 수신합니다.
+</p>
+
+<h3 id="sched-jobs">
+  비 데이터 통신 연결에서 네트워크 작업 예약
+</h3>
+
+<p>
+  {@link android.app.job.JobInfo.Builder JobInfo.Builder} 클래스를
+사용하여 {@link android.app.job.JobInfo} 객체를 빌드하는 경우, {@link
+  android.app.job.JobInfo.Builder#setRequiredNetworkType
+  setRequiredNetworkType()} 메서드를 적용하고 {@link android.app.job.JobInfo
+  JobInfo.NETWORK_TYPE_UNMETERED}를 작업 매개변수로 전달합니다. 다음의 코드 샘플에서는 기기가 비 데이터 통신
+네트워크에 연결되어 충전 중일 때 실행할 서비스를
+예약합니다.
+</p>
+
+<pre>
+public static final int MY_BACKGROUND_JOB = 0;
+...
+public static void scheduleJob(Context context) {
+  JobScheduler js =
+      (JobScheduler) context.getSystemService(Context.JOB_SCHEDULER_SERVICE);
+  JobInfo job = new JobInfo.Builder(
+    MY_BACKGROUND_JOB,
+    new ComponentName(context, MyJobService.class))
+      .setRequiredNetworkType(JobInfo.NETWORK_TYPE_UNMETERED)
+      .setRequiresCharging(true)
+      .build();
+  js.schedule(job);
+}
+</pre>
+
+<p>
+  작업의 조건이 충족되면, 앱은
+{@link android.app.job.JobService#onStartJob onStartJob()} 메서드를 지정된 {@code JobService.class}에서 실행하기 위한 콜백을
+수신합니다. {@link
+  android.app.job.JobScheduler} 구현의 더 많은 예를 보려면, <a href="{@docRoot}samples/JobScheduler/index.html">JobScheduler 샘플 앱</a>을 참조하세요.
+</p>
+
+<p>
+  GMSCore 서비스를 사용하고 Android 5.0(API 레벨 21) 이하를 대상으로 하는 앱은 <a href="https://developers.google.com/android/reference/com/google/android/gms/gcm/GcmNetworkManager">
+{@code GcmNetworkManager}</a>를 사용하고 {@code Task.NETWORK_STATE_UNMETERED}를
+지정할 수 있습니다.
+</p>
+
+<h3 id="monitor-conn">
+  앱이 실행되는 중에 네트워크 연결 모니터링
+</h3>
+
+<p>
+  포그라운드에서 실행되는 앱은 여전히 등록된 {@link
+  android.content.BroadcastReceiver}로 {@code
+  CONNECTIVITY_CHANGE}를 수신할 수 있습니다. 그러나, {@link
+  android.net.ConnectivityManager} API는 지정된 네트워크 조건이 충족될 경우에만 콜백을 요청하는
+더욱 강력한 메서드를 제공합니다.
+</p>
+
+<p>
+  {@link android.net.NetworkRequest} 객체는 {@link android.net.NetworkCapabilities}의
+관점에서 네트워크 콜백의 매개변수를 정의합니다. {@link
+  android.net.NetworkRequest.Builder NetworkRequest.Builder} 클래스로 {@link android.net.NetworkRequest} 객체를
+생성합니다. 이어서 {@link
+  android.net.ConnectivityManager#registerNetworkCallback(android.net.NetworkRequest,
+  android.net.ConnectivityManager.NetworkCallback) registerNetworkCallback()}
+이 {@link android.net.NetworkRequest} 객체를 시스템에 전달합니다. 네트워크 조건이 충족되면, 앱은 {@link
+  android.net.ConnectivityManager.NetworkCallback} 클래스에 정의된 {@link android.net.ConnectivityManager.NetworkCallback#onAvailable
+  onAvailable()} 메서드를
+실행하기 위한 콜백을
+수신합니다.
+</p>
+
+<p>
+  앱이 종료되거나 앱이 {@link android.net.ConnectivityManager#unregisterNetworkCallback
+  unregisterNetworkCallback()}을 호출할 때까지 계속해서
+콜백을 수신합니다.
+</p>
+
+<h2 id="media-broadcasts">
+  NEW_PICTURE 및 NEW_VIDEO에 대한 제한
+</h2>
+
+<p>
+  N Developer Preview에서 앱은 {@link
+  android.hardware.Camera#ACTION_NEW_PICTURE} 또는 {@link
+  android.hardware.Camera#ACTION_NEW_VIDEO} 브로드캐스트를 송수신할 수 없습니다. 이 제한은 새로운 이미지나
+동영상을 처리하기 위해 여러 앱을 깨워야 하는 경우, 성능 및 사용자 경험에
+미치는 영향을 줄여줍니다. N Developer Preview는
+{@link android.app.job.JobInfo} 및 {@link
+  android.app.job.JobParameters}를 확장하여 대체 해결책을 제공합니다.
+</p>
+
+<h3 id="new-jobinfo">
+  새로운 JobInfo 메서드
+</h3>
+
+<p>
+  콘텐츠 URI 변경에 대한 작업을 트리거하기 위해, N Developer Preview
+는 다음과 같은 메서드로 {@link android.app.job.JobInfo} API를 확장합니다.
+</p>
+
+<dl>
+  <dt>
+    {@code JobInfo.TriggerContentUri()}
+  </dt>
+
+  <dd>
+    콘텐츠 URI 변경에 대한 작업을 트리거하는 데 필요한 매개변수를 캡슐화합니다.
+  </dd>
+
+  <dt>
+    {@code JobInfo.Builder.addTriggerContentUri()}
+  </dt>
+
+  <dd>
+    {@code TriggerContentUri} 객체를 {@link
+    android.app.job.JobInfo}에 전달합니다. {@link android.database.ContentObserver}는
+캡슐화된 콘텐츠 URI를 모니터링합니다. 하나의 작업과 연관된 여러 {@code
+    TriggerContentUri} 객체가 있는 경우, 콘텐츠 URI 중 하나에서만 변경이 보고되더라도 시스템이
+콜백을 제공합니다.
+  </dd>
+
+  <dd>
+    지정된 URI의 하위 항목이 하나라도 변경되면, {@code TriggerContentUri.FLAG_NOTIFY_FOR_DESCENDANTS} 플래그를
+추가하여 작업을 트리거합니다. 이 플래그는
+{@link
+    android.content.ContentResolver#registerContentObserver
+    registerContentObserver()}로 전달된 {@code notifyForDescendants} 매개변수에 해당합니다.
+  </dd>
+</dl>
+
+<p class="note">
+  <strong>참고:</strong> {@code TriggerContentUri()}는 {@link android.app.job.JobInfo.Builder#setPeriodic
+  setPeriodic()} 또는 {@link android.app.job.JobInfo.Builder#setPersisted
+  setPersisted()}와
+조합으로 사용될 수 없습니다. 콘텐츠 변경을 계속해서 모니터링하려면, 앱의 {@link
+  android.app.job.JobService}가 가장 최근 콜백의 처리를 완료하기 전에 새로운
+{@link android.app.job.JobInfo}를 예약하세요.
+</p>
+
+<p>
+  다음 샘플 코드에서는 콘텐츠 URI, {@code MEDIA_URI}의
+변경을 시스템이 보고할 때 트리거할 작업을 예약합니다.
+</p>
+
+<pre>
+public static final int MY_BACKGROUND_JOB = 0;
+...
+public static void scheduleJob(Context context) {
+  JobScheduler js =
+          (JobScheduler) context.getSystemService(Context.JOB_SCHEDULER_SERVICE);
+  JobInfo.Builder builder = new JobInfo.Builder(
+          MY_BACKGROUND_JOB,
+          new ComponentName(context, MediaContentJob.class));
+  builder.addTriggerContentUri(
+          new JobInfo.TriggerContentUri(MEDIA_URI,
+          JobInfo.TriggerContentUri.FLAG_NOTIFY_FOR_DESCENDANTS));
+  js.schedule(builder.build());
+}
+</pre>
+<p>
+  지정된 콘텐츠 URI에서의 변경을 시스템이 보고할 때,
+앱이 콜백을 수신하고 {@link android.app.job.JobParameters} 객체가
+{@code MediaContentJob.class}의 {@link android.app.job.JobService#onStartJob onStartJob()}메서드에
+전달됩니다.
+</p>
+
+<h3 id="new-jobparam">
+  새로운 JobParameter 메서드
+</h3>
+
+<p>
+  N Developer Preview에서는 또한 어떤 콘텐츠 기관과
+URI가 작업을 트리거했는지에 대한 유용한 정보를 앱이
+수신할 수 있도록 {@link android.app.job.JobParameters}를 확장합니다.
+</p>
+
+<dl>
+  <dt>
+    {@code Uri[] getTriggeredContentUris()}
+  </dt>
+
+  <dd>
+    작업을 트리거한 URI의 배열을 반환합니다. 작업을 트리거한
+URI가 없거나(예: 시한 또는 기타 이유로 인해 작업이 트리거된 경우) 또는
+변경된 URI의 수가 50보다 크면 {@code
+    null}이 됩니다.
+  </dd>
+
+  <dt>
+    {@code String[] getTriggeredContentAuthorities()}
+  </dt>
+
+  <dd>
+    작업을 트리거한 콘텐츠 기관의 문자열 배열을 반환합니다.
+    반환된 배열이 {@code null}이 아닌 경우, {@code getTriggeredContentUris()}를
+사용하여 변경된 URI의 세부정보를 검색합니다.
+  </dd>
+</dl>
+
+<p>
+  다음 샘플 코드에서는 {@link
+  android.app.job.JobService#onStartJob JobService.onStartJob()} 메서드를 재정의하고
+, 작업을 트리거한 콘텐츠 기관과 URI를 기록합니다.
+</p>
+
+<pre>
+&#64;Override
+public boolean onStartJob(JobParameters params) {
+  StringBuilder sb = new StringBuilder();
+  sb.append("Media content has changed:\n");
+  if (params.getTriggeredContentAuthorities() != null) {
+      sb.append("Authorities: ");
+      boolean first = true;
+      for (String auth :
+          params.getTriggeredContentAuthorities()) {
+          if (first) {
+              first = false;
+          } else {
+             sb.append(", ");
+          }
+           sb.append(auth);
+      }
+      if (params.getTriggeredContentUris() != null) {
+          for (Uri uri : params.getTriggeredContentUris()) {
+              sb.append("\n");
+              sb.append(uri);
+          }
+      }
+  } else {
+      sb.append("(No content)");
+  }
+  Log.i(TAG, sb.toString());
+  return true;
+}
+</pre>
+
+<h2 id="further-optimization">
+  추가적인 앱 최적화
+</h2>
+
+<p>
+  저용량 메모리 기기나 저용량 메모리 조건에서
+앱이 실행되도록 최적화하면 성능과 사용자 경험을 개선할 수 있습니다. 백그라운드 서비스에 대한 종속성과 정적으로 등록된
+암시적 브로드캐스트 수신기에 대한 종속성을 제거하면 기기에서 앱을
+더욱 빨리 실행할 수 있습니다. N Developer Preview는 이러한 문제 중 일부를 줄이기 위한
+조치를 취하고 있지만, 백그라운드
+프로세스를 전혀 사용하지 않고 앱이 실행되도록
+최적화하는 것이 좋습니다.
+</p>
+
+<p>
+  N Developer Preview에서는 백그라운드 프로세스를
+비활성화하고 앱 동작을 테스트하는 데 사용할 수 있는 몇 가지 추가적인 <a href="{@docRoot}tools/help/adb.html">ADB(Android Debug Bridge)</a> 명령을 소개합니다.
+</p>
+
+<ul>
+  <li>암시적 브로드캐스트와 백그라운드 서비스를 사용할
+수 없는 조건을 시뮬레이션하려면, 다음 명령을 입력합니다.
+  </li>
+
+  <li style="list-style: none; display: inline">
+<pre class="no-pretty-print">
+{@code $ adb shell cmd appops set RUN_IN_BACKGROUND ignore}
+</pre>
+  </li>
+
+  <li>암시적 브로드캐스트와 백그라운드 서비스를 다시 활성화하려면,
+다음 명령을 입력합니다.
+  </li>
+
+  <li style="list-style: none; display: inline">
+<pre class="no-pretty-print">
+{@code $ adb shell cmd appops set RUN_IN_BACKGROUND allow}
+</pre>
+  </li>
+</ul>
\ No newline at end of file
diff --git a/docs/html-intl/intl/ko/preview/features/direct-boot.jd b/docs/html-intl/intl/ko/preview/features/direct-boot.jd
new file mode 100644
index 0000000..6ffb387
--- /dev/null
+++ b/docs/html-intl/intl/ko/preview/features/direct-boot.jd
@@ -0,0 +1,180 @@
+page.title=직접 부팅
+page.keywords=preview,sdk,direct boot
+page.tags=androidn
+
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+  <h2>이 문서의 내용</h2>
+  <ol>
+    <li><a href="#run">직접 부팅 시 실행하기 위한 액세스 요청</a></li>
+    <li><a href="#access">기기 암호화 저장소 액세스</a></li>
+    <li><a href="#notification">사용자 잠금 해제 알림 수신</a></li>
+    <li><a href="#migrating">기존 데이터 마이그레이션</a></li>
+    <li><a href="#testing">암호화 인식 앱 테스트</a></li>
+  </ol>
+</div>
+</div>
+
+<p>Android N은 기기에 전원이 들어와 있지만<i>사용자가 잠금을 해제하지 않았을 때</i>안전한 
+직접 부팅
+ 모드에서 실행됩니다. 이를 지원하기 위해 시스템에서 두 가지 데이터 저장소 위치를 제공합니다.</p>
+
+<ul>
+<li><i>자격증명 암호화 저장소:</i>기본 저장소 위치이며, 사용자가 기기의 잠금을 해제한 후에만
+사용할 수 있습니다.</li>
+<li><i>기기 암호화 저장소:</i>직접 부팅 모드와 사용자가 기기의 잠금을 해제한 후에
+모두 사용할 수 있는 저장소 위치입니다.</li>
+</ul>
+
+<p>기본적으로 직접 부팅 모드 시 앱이 실행되지 않습니다.
+직접 부팅 모드에서 조치가 필요한 경우,
+이 모드에서 실행되어야 하는 앱 구성 요소를 등록할 수 있습니다. 직접 부팅 모드 시 실행되어야 하는 앱의
+몇 가지 공통 사용 사례:</p>
+
+<ul>
+<li>알람 시계 앱과 같이 예약된 알림이 있는
+앱.</li>
+<li>SMS 앱처럼 중요한 사용자 알림을 제공하는 앱.</li>
+<li>Talkback처럼 접근성 서비스를 제공하는 앱.</li>
+</ul>
+
+<p>앱이 직접 부팅 모드에서 실행되는 동안 데이터에 액세스해야 하는 경우
+기기 암호화 저장소를 사용합니다. 기기 암호화 저장소에는
+기기가 성공적으로 확인된 부팅을 수행한 후에만
+사용할 수 있는 키로 암호화된 데이터가 포함됩니다.</p>
+
+<p>PIN이나 암호와 같이 사용자 자격증명과 연관된 키로 암호화해야 하는 데이터는
+자격증명 암호화 저장소를 사용합니다.
+자격증명 암호화 저장소는 사용자가 기기의 잠금을 해제한 뒤부터
+기기를 다시 시작할 때까지 사용할 수 있습니다. 사용자가
+기기의 잠금을 해제한 뒤 잠금 화면을 활성화해도
+자격증명 암호화 저장소가 잠기지 않습니다.</p>
+
+<h2 id="run">직접 부팅 시 실행하기 위한 액세스 요청</h2>
+
+<p>앱은 직접 부팅 모드에서 실행되거나
+기기 암호화 저장소에 액세스하기 전까지
+시스템에 구성 요소를 등록해야 합니다. 앱은 구성 요소를
+<i>암호화 인식</i>으로 표시하여 시스템에 등록합니다. 구성 요소를 암호화 인식으로 표시하려면 매니페스트에서 
+<code>android:encryptionAware</code> 특성을 true로 설정합니다.<p>
+
+<p>암호화 인식 구성 요소로 등록하면 기기가 다시 시작되었을 때 시스템에서
+<code>LOCKED_BOOT_COMPLETED</code> 브로드캐스트 메시지를
+수신할 수 있습니다. 이 시점에서 기기 암호화 저장소를
+사용할 수 있고, 여러분의 구성 요소는
+예약된 알람 트리거 등과 같이 직접 부팅 모드에서 실행해야 하는 작업을 실행할 수 있습니다.</p>
+
+<p>다음 코드 조각은
+{@link android.content.BroadcastReceiver}를 암호화 인식으로 등록하고 앱 매니페스트에
+<code>LOCKED_BOOT_COMPLETED</code>의 인텐트 필터를 추가하는 예시입니다.</p>
+
+<pre>
+&lt;receiever
+  android:encryptionAware="true" &gt;
+  ...
+  &lt;intent-filter&gt;
+    &lt;action android:name="android.intent.action.LOCKED_BOOT_COMPLETED" /&gt;
+  &lt;/intent-filter&gt;
+&lt;/receiver&gt;
+</pre>
+
+<p>사용자가 기기의 잠금을 해제하면 모든 구성 요소가
+기기 암호화 저장소와 자격증명 암호화 저장소에 액세스할 수 있습니다.</p>
+
+<h2 id="access">기기 암호화 저장소 액세스</h2>
+
+<p>기기 암호화 저장소에 액세스하려면
+<code>Context.createDeviceEncryptedStorageContext()</code>를 호출하여 두 번째
+{@link android.content.Context} 인스턴스를 생성합니다. 이 컨텍스트를 사용하여 호출한 모든 저장소 API는
+기기 암호화 저장소에 액세스합니다. 다음은
+기기 암호화 저장소에 액세스하고 기존
+앱 데이터 파일을 여는 예시입니다.</p>
+
+<pre>
+Context directBootContext = Context.createDeviceEncryptedStorageContext();
+// Access appDataFilename that lives in device encrypted storage
+FileInputStream inStream = directBootContext.openFileInput(appDataFilename);
+// Use inStream to read content...
+</pre>
+
+<p>직접 부팅 모드에서 액세스해야 하는 정보에만
+기기 암호화 저장소를 사용합니다.
+기기 암호화 저장소를 범용 암호화 저장소로 사용하지 마십시오.
+개인적인 사용자 정보 또는 직접 부팅 모드에서 필요하지 않은 암호화 데이터는
+자격증명 암호화 저장소를 사용합니다.</p>
+
+<h2 id="notification">사용자 잠금 해제 알림 수신</h2>
+
+<p>사용자가 재시작 후 기기의 잠금을 해제하면
+앱이 자격증명 암호화 저장소 액세스로 전환하고,
+사용자 자격증명을 따르는 일반 시스템 서비스를 사용할 수 있습니다.</p>
+
+<p>사용자가 재부팅 후 기기의 잠금을 해제할 때 알림을 받으려면
+실행 중인 구성 요소에서 {@link android.content.BroadcastReceiver}를 등록하고
+<code>ACTION_USER_UNLOCKED</code> 메시지를 수신합니다. 또는,
+기존 {@link android.content.Intent#ACTION_BOOT_COMPLETED
+ACTION_BOOT_COMPLETED} 메시지를 수신할 수 있습니다. 이 메시지는 기기가 부팅되었으며 사용자가 기기의 잠금을
+해제했음을 나타냅니다.</p>
+
+<p>사용자가
+<code>UserManager.isUserUnlocked()</code>를 호출하여 기기 잠금을 해제했는지 직접 쿼리할 수 있습니다.</p>
+
+<h2 id="migrating">기존 데이터 마이그레이션</h2>
+
+<p>사용자가 기기를 직접 부팅 모드를 사용하도록 업데이트하면
+기존 데이터를 기기 암호화 저장소로 마이그레이션해야 할 수도 있습니다. 
+<code>Context.migrateSharedPreferencesFrom()</code>와
+<code>Context.migrateDatabaseFrom()</code>를 사용하여 자격증명 암호화 저장소와 기기 암호화 저장소 간에
+기본 설정과 데이터베이스 데이터를 마이그레이션합니다.</p>
+
+<p>자격증명
+암호화 저장소에서 기기 암호화 저장소로 마이그레이션할 데이터는 신중히 결정하세요. 암호나 인증 토큰 등의
+개인 사용자 정보는 기기 암호화 저장소로
+마이그레이션해서는 안됩니다. 일부 시나리오에서
+두 가지 암호화 저장소에 있는 별도의 데이터 세트를 관리해야 할 수 있습니다.</p>
+
+<h2 id="testing">암호화 인식 앱 테스트</h2>
+
+<p>새로운 직접 부팅 모드로 암호화 인식 앱을 테스트하세요. 직접 부팅을
+활성화하는 방법은 두 가지가 있습니다.</p>
+
+<p class="caution"><strong>주의:</strong> 직접 부팅을 활성화하면
+기기에서 모든 사용자 데이터가 삭제됩니다.</p>
+
+<p>Android N이 설치된 지원 기기에서
+직접 부팅을 활성화하는 방법:</p>
+
+<ul>
+<li><b>Developer options</b>가 활성화되어 있지 않으면 기기에서
+<b>Settings &gt; About phone</b>으로 이동하여 <b>Build number</b>를
+7번 탭하여 활성화합니다. 개발자 옵션 화면이 나오면
+<b>Settings &gt; Developer options</b>로 이동해서
+<b>Convert to file encryption</b>을 선택합니다.</li>
+<li>다음 adb shell 명령을 사용하여 직접 부팅 모드를 활성화합니다.
+<pre class="no-pretty-print">
+$ adb reboot-bootloader
+$ fastboot --wipe-and-use-fbe
+</pre>
+</li>
+</ul>
+
+<p>테스트 기기에서 모드를 전환해야 할 경우
+에뮬레이션된 직접 부팅 모드도 사용할 수 있습니다. 에뮬레이션된 모드는 개발 시에만 사용해야 하며
+데이터가 손실될 수 있습니다. 에뮬레이션된 직접 부팅 모드를 활성화하려면
+기기에서 잠금 패턴을 설정합니다. 잠금 패턴을 설정할 때 안전 모드 화면으로 시작할지 묻는 메시지가 나오면 "No thanks"를
+선택한 뒤 다음
+adb shell 명령을 사용합니다.</p>
+
+<pre class="no-pretty-print">
+$ adb shell sm set-emulate-fbe true
+</pre>
+
+<p>에뮬레이션된 직접 부팅 모드를 끄려면 다음 명령을 사용합니다.</p>
+
+<pre class="no-pretty-print">
+$ adb shell sm set-emulate-fbe false
+</pre>
+
+<p>이 명령을 사용하면 기기가 재부팅됩니다.</p>
diff --git a/docs/html-intl/intl/ko/preview/features/icu4j-framework.jd b/docs/html-intl/intl/ko/preview/features/icu4j-framework.jd
new file mode 100644
index 0000000..77f1feb
--- /dev/null
+++ b/docs/html-intl/intl/ko/preview/features/icu4j-framework.jd
@@ -0,0 +1,158 @@
+page.title=ICU4J Android 프레임워크 API
+
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+<h2>이 문서의 내용</h2>
+<ol>
+    <li><a href="#relation">ICU4J와의 관계</a></li>
+    <li><a href="#migration">android.icu API에서 ICU4J로 마이그레이션</a></li>
+    <li><a href="#licence">라이선스</a></li>
+</ol>
+
+<h2>참고 항목</h2>
+<ol>
+  <li>
+    <a class="external-link" href="http://userguide.icu-project.org">ICU4J 문서</a>
+  </li>
+
+  <li>
+    <a class="external-link" href="http://site.icu-project.org/#TOC-What-is-ICU-">
+ICU4J가 지원하는 최신 표준</a>
+  </li>
+</ol>
+</div>
+</div>
+
+<p>
+  ICU4J는 오픈 소스이며 널리 사용되는 Java 라이브러리 세트로, 소프트웨어 애플리케이션에 유니코드와
+세계화 지원을 제공합니다. Android N은
+Android 프레임워크에서 앱 개발자가 
+{@code android.icu} 패키지에서 사용할 수 있는 ICU4J API의 하위 세트를 노출합니다. 이 API는
+기기의 현지화 데이터를 사용합니다. 따라서 ICU4J 라이브러리를 APK로 컴파일하지 않고
+프레임워크에서 호출하여APK
+풋프린트를 줄일 수 있습니다. (이 경우, Android N 이하 버전의 Android를
+실행하는 사용자가 ICU4J 라이브러리를 포함한 앱 버전을 다운로드할 수 있도록
+<a href="{@docRoot}google/play/publishing/multiple-apks.html">여러 버전의
+APK</a>를 제공해야 할 수도 있습니다.)
+</p>
+
+<p>
+  이 문서에서는 먼저 이 라이브러리 지원에 필요한 최소
+Android API 레벨과 관련된 몇 가지 기본 정보를 제공합니다. 그 후,
+각 Android에서 ICU4J를 구현하는 데 무엇이 필요한지 설명합니다. 마지막으로,
+Android 프레임워크에서 ICU4J API를 사용하는 방법을 설명합니다.
+</p>
+
+<h2 id="relation">ICU4J와의 관계</h2>
+
+<p>
+  Android N은
+<code>com.ibm.icu</code>가 아니라 <code>android.icu</code> 패키지를 통해 ICU4J API의 하위 세트를 노출합니다. 
+Android 프레임워크는 여러 가지 이유로
+ICU4J API를 노출하지 않을 수 있습니다. 예컨대 Android N은
+일부 사용 중단된 API나 ICU팀에서 안정적이라고 선언하지 않은 API를
+노출하지 않습니다. ICU팀이 이후 API의 사용을 중단하면, Android도
+이를 사용 중단됨으로 표시하지만 계속 포함합니다.
+</p>
+
+<p class="table-caption"><strong>표 1.</strong>
+Android N에서 사용된 ICU 및 CLDR 버전.</p>
+<table>
+<tr>
+<th>Android API 레벨</th>
+<th>ICU 버전</th>
+<th>CLDR 버전</th>
+</tr>
+<tr>
+<td>Android N</td>
+<td>56</td>
+<td>28</td>
+</tr>
+</table>
+
+<p>중요한 참고 사항:</p>
+
+<ul>
+<li>ICU4J Android 프레임워크 API에는 모든 ICU4J API가 포함되지 않습니다.</li>
+<li>NDK 개발자는 Android ICU4C가 지원되지 않는다는 것을 알아야 합니다.</li>
+<li>Android 프레임워크의 API는 Android의
+<a href="{@docRoot}guide/topics/resources/localization.html">리소스로
+현지화</a> 지원을 대체하지 못합니다.</li>
+</ul>
+
+<h2 id="migration">com.ibm.icu에서 android.icu 패키지로 마이그레이션</h2>
+
+<p>
+  앱에서 이미 ICU4J API를 사용하고 있고
+<code>android.icu</code> API가 요구사항을 충족한다면
+프레임워크 API로 마이그레이션할 때 Java 가져오기를
+<code>com.ibm.icu</code>에서 <code>android.icu</code>로 변경해야 합니다. 그러면 APK에서
+ICU4J 파일 사본을 삭제할 수 있습니다.
+</p>
+
+<p class="note">
+  <b>참고</b>: ICU4J 프레임워크 API는 {@code com.ibm.icu} 대신 {@code android.icu}
+네임스페이스를 사용합니다. 이는 자체 {@code com.ibm.icu} 라이브러리가 포함된 APK에서
+네임스페이스 충돌을 피하기 위해서입니다.
+</p>
+
+<h3 id="migrate-from-android">
+  다른 Android SDK API에서 android.icu API로 마이그레이션
+</h3>
+
+<p>
+  <code>java</code>와 <code>android</code> 패키지의 일부 클래스는
+ICU4J의 클래스와 같습니다. 그러나 ICU4J는 종종 더욱 폭넓은
+표준과 언어를 지원합니다.
+</p>
+<p>시작하기 위한 몇 가지 예시:</p>
+<table>
+<tr>
+<th>클래스</th>
+<th>대체</th>
+</tr>
+<tr>
+<td><code>java.lang.Character</code> </td>
+<td><code>android.icu.lang.UCharacter</code> </td>
+</tr>
+<tr>
+<td><code>java.text.BreakIterator</code> </td>
+<td><code>android.icu.text.BreakIterator</code> </td>
+</tr>
+<tr>
+<td><code>java.text.DecimalFormat</code> </td>
+<td><code>android.icu.text.DecimalFormat</code> </td>
+</tr>
+<tr>
+<td><code>java.util.Calendar</code></td>
+<td>
+<code>android.icu.util.Calendar</code></td>
+</tr>
+<tr>
+<td><code>android.text.BidiFormatter</code>
+ </td>
+<td><code>android.icu.text.Bidi</code>
+ </td>
+</tr>
+<tr>
+<td><code>android.text.format.DateFormat</code>
+ </td>
+<td><code>android.icu.text.DateFormat</code>
+ </td>
+</tr>
+<tr>
+<td><code>android.text.format.DateUtils</code> </td>
+<td><code>android.icu.text.DateFormat</code>
+<code>android.icu.text.RelativeDateTimeFormatter</code>
+</td>
+</tr>
+</table>
+
+<h2 id="licence">라이선스</h2>
+
+<p>
+  ICU4J는 ICU 라이선스에 따라 배포됩니다. 자세한 내용은 <a class="external-link" href="http://userguide.icu-project.org/icufaq#TOC-How-is-the-ICU-licensed-">ICU
+ 사용자 가이드</a>를 참조하세요.
+</p>
diff --git a/docs/html-intl/intl/ko/preview/features/multi-window.jd b/docs/html-intl/intl/ko/preview/features/multi-window.jd
new file mode 100644
index 0000000..78abcd1
--- /dev/null
+++ b/docs/html-intl/intl/ko/preview/features/multi-window.jd
@@ -0,0 +1,582 @@
+page.title=다중 창 지원
+page.metaDescription=Android N에서 한 번에 둘 이상의 앱을 표시하도록 지원.
+page.keywords="multi-window", "android N", "split screen", "free-form"
+
+@jd:body
+
+<div id="qv-wrapper">
+  <div id="qv">
+    <h2>이 문서의 내용</h2>
+      <ol>
+        <li><a href="#overview">개요</a></li>
+        <li><a href="#lifecycle">다중 창 수명 주기</a></li>
+        <li><a href="#configuring">앱을 다중 창
+모드로 구성</a></li>
+        <li><a href="#running">앱을 다중 창 모드에서 실행</a></li>
+        <li><a href="#testing">앱의 다중 창 지원 테스트</a></li>
+      </ol>
+    <h2>참고 항목</h2>
+      <ol>
+        <li><a class="external-link" href="https://github.com/googlesamples/android-MultiWindowPlayground">다중 창
+플레이그라운드 샘플 앱</a></li>
+      </ol>
+  </div>
+</div>
+
+<p>
+  Android N에서는 동시에 둘 이상의 앱을 표시하도록
+지원합니다. 핸드헬드 기기에서 두 개의 앱을 <em>화면 분할</em> 모드에서
+나란히 또는 상하로 실행할 수 있습니다. TV 기기에서 앱이
+<em>PIP</em> 모드를 사용하는 경우 사용자가 다른 앱과 상호작용하는
+동안에 계속 동영상을 재생할 수 있습니다.
+</p>
+
+<p>
+  N Preview SDK로 앱을 빌드하는 경우, 앱이 다중 창
+표시를 처리하는 방식을 구성할 수 있습니다. 예를 들어, 액티비티의
+최소 허용 치수를 지정할 수 있습니다. 또한 앱에
+대해 다중 창 표시를 비활성화할 수도 있으며, 이 경우 시스템은 앱을 전체 화면 모드에서만
+표시합니다.
+</p>
+
+<h2 id="overview">개요</h2>
+
+<p>
+  Android N에서는 여러 앱이 동시에 화면을 공유할 수 있습니다. 예를 들어, 사용자가 화면을 분할하여 왼쪽에서는 웹페이지를
+보면서 오른쪽에서는 이메일을 작성할
+수 있습니다. 사용자 경험은 기기에 따라
+달라집니다.
+</p>
+
+<ul>
+  <li>Android N에서 실행되는 핸드헬드 기기는 화면 분할
+모드를 제공합니다. 이 모드에서 시스템은 화면을 두 개의 앱으로 채우고, 이
+앱을 나란히 또는 상하로 표시합니다. 사용자가 두 앱을 구분하는 분할선을 끌어서 한 앱을 다른 앱보다
+더 크게 만들 수 있습니다.
+  </li>
+
+  <li>Android N을 실행하는 Nexus Player에서, 앱이
+<a href="picture-in-picture.html">PIP 모드</a>로 배치될 수 있으므로, 사용자가 검색을
+수행하거나 다른 앱과 상호작용하는 중에도 앱이 계속해서 콘텐츠를
+표시할 수 있습니다.
+  </li>
+
+  <li>더 큰 기기를 제조하는 업체는 자유형식
+모드를 선택할 수 있으며, 이 경우 사용자가 각 액티비티의 크기를 자유롭게 조정할 수 있습니다. 제조업체가 이 기능을 활성화하면, 기기는 화면 분할 모드 뿐만
+아니라 자유형식 모드를
+제공합니다.
+  </li>
+</ul>
+
+<img src="{@docRoot}preview/images/mw-splitscreen.png" alt="" width="650" srcset="{@docRoot}preview/images/mw-splitscreen.png 1x,
+    {@docRoot}preview/images/mw-splitscreen_2x.png 2x," id="img-split-screen" />
+<p class="img-caption">
+  <strong>그림 1.</strong> 화면 분할 모드에서 나란히 실행 중인 두 앱.
+</p>
+
+<p>
+  사용자가 다음과 같이 다중 창 모드로 전환할 수 있습니다.
+</p>
+
+<ul>
+  <li>사용자가 <a href="{@docRoot}guide/components/recents.html">Overview
+화면</a>을 열고 액티비티 제목을 길게 누르면,
+이 액티비티를 화면의 강조 표시된 부분으로 끌어서 
+다중 창 모드에 둘 수 있습니다.
+  </li>
+
+  <li>사용자가 Overview 버튼을 길게 누르면, 기기가 현재 액티비티를
+다중 창 모드에 두고 Overview 화면을 열며, 이 화면에서 사용자는 화면을
+공유하기 위한 또 다른 액티비티를 선택할 수 있습니다.
+  </li>
+</ul>
+
+<p>
+  사용자는 여러 액티비티가 화면을 공유하는 동안 한 액티비티에서
+또 다른 액티비티로 데이터를 <a href="{@docRoot}guide/topics/ui/drag-drop.html">끌어서 놓을</a>
+수 있습니다. (이전에는, 사용자가 단일 액티비티 내에서만
+데이터를 끌어서 놓을 수 있었습니다.)
+</p>
+
+<h2 id="lifecycle">다중 창 수명 주기</h2>
+
+<p>
+  다중 창 모드는 <a href="{@docRoot}training/basics/activity-lifecycle/index.html">액티비티
+수명 주기</a>를 변경하지 않습니다.
+</p>
+
+<p>
+  다중 창 모드에서는, 사용자가 가장 최근에 상호작용했던 액티비티만
+지정된 시간에 활성화됩니다. 이 액티비티는 <em>최상위</em>로 간주됩니다.
+  다른 모든 액티비티는 표시되어 있더라도 일시 정지된 상태입니다.
+  그러나 시스템은 이러한 일시 정지되었지만 표시된 액티비티에게 표시되지
+않은 액티비티보다 더 높은 우선 순위를 부여합니다. 사용자가 일시 정지된 액티비티 중 하나와 상호작용하면, 해당
+액티비티가 재개되고 이전의 최상위 액티비티가 일시
+정지됩니다.
+</p>
+
+<p class="note">
+  <strong>참고:</strong> 다중 창 모드에서는 앱이 일시 정지된 상태에서도 여전히
+사용자에게 표시될 수 있습니다. 앱이 일시 정지된 동안에도 액티비티를
+계속해야 하는 경우도 있습니다. 예를 들어, 일시 정지 모드이지만 표시된
+동영상 재생 앱은 계속해서 동영상을 보여줘야 합니다. 이러한 이유로, 동영상을
+재생하는 액티비티는 {@link android.app.Activity#onPause onPause()} 핸들러에서
+동영상을 일시 정지하지 <em>않는</em> 것이 좋습니다.
+  그 대신, {@link android.app.Activity#onStop
+  onStop()}에서 동영상을 일시 정지하고, {@link android.app.Activity#onStart
+  onStart()}에서 재생을 재개해야 합니다.
+</p>
+
+<p>
+  사용자가 앱을 다중 창 모드에 놓으면,
+시스템은 <a href="{@docRoot}guide/topics/resources/runtime-changes.html">런타임 변경 처리</a>에 지정된 대로, 구성 변경을 액티비티에게
+알려줍니다. 기본적으로, 이 변경의 액티비티-수명 주기 관계는 기기의 모드가
+세로 모드에서 가로 모드로 전환되었음을
+시스템이 앱에 알려줄 때와 동일합니다(단순 스왑 대신
+기기 치수가 변경되는 경우는 제외). <a href="{@docRoot}guide/topics/resources/runtime-changes.html">런타임 변경 처리</a>에서 설명한
+대로, 액티비티 스스로 구성 변경을 처리하거나, 시스템이 액티비티를 소멸시키고
+새 치수로 다시 액티비티를 생성하도록 할 수
+있습니다.
+</p>
+
+<p>
+  사용자가 창의 크기를 조정하여 한쪽 치수를 더 크게 만드는
+경우, 시스템은 사용자 작업에 맞게 액티비티의 크기를 조정하고 필요한
+경우 <a href="{@docRoot}guide/topics/resources/runtime-changes.html">런타임 변경</a>을 수행합니다. 앱이 새로 노출되는 영역에 그릴 때 지연이 발생하는 경우, 시스템은 {@link
+  android.R.attr#windowBackground windowBackground} 특성 또는 기본
+<code>windowBackgroundFallback</code> 스타일 특성에 의해
+지정된 색으로 이 영역을 임시로 채웁니다.
+</p>
+
+<h2 id="configuring">앱을 다중 창 모드로 구성</h2>
+
+<p>
+  앱이 Android N을 대상으로 하는 경우, 앱의 액티비티가 다중
+창 표시를 지원하는지 여부와 지원 방법을 구성할 수 있습니다. 매니페스트에서 특성을 설정하여 크기와 레이아웃을 제어할
+수 있습니다.
+  루트 액티비티의 특성 설정은 작업 스택 내의 모든
+액티비티에 적용됩니다.
+</p>
+
+<p class="note">
+  <strong>참고:</strong> Android N보다 더 낮은 버전의 SDK로 다중 방향 앱을 작성하는 경우
+사용자가 앱을 다중 창 모드에서 사용하면, 시스템이
+이 앱의 크기를 강제로 조정합니다. 앱이 예상치 못하게 동작할 수 있음을 사용자에게 경고하는
+대화 상자가 표시됩니다. 시스템은 고정
+방향 앱의 크기는 조정하지 <em>않습니다</em>. 사용자가
+다중 창 모드 하에서 고정 방향 앱을 열려고 시도하면,
+앱이 전체 화면을 차지합니다.
+</p>
+
+<h4 id="resizeableActivity">android:resizeableActivity</h4>
+<p>
+  매니페스트의 <code>&lt;activity&gt;</code> 또는
+<code>&lt;application&gt;</code> 노드에서 이 특성을 설정하여 다중 창
+표시를 활성화하거나 비활성화합니다.
+</p>
+
+<pre>
+android:resizeableActivity=["true" | "false"]
+</pre>
+
+<p>
+  이 특성을 true로 설정하면, 액티비티를 분할 화면 모드와 자유형식
+모드로 시작할 수 있습니다. 이 특성을 false로 설정하면, 액티비티가 다중 창 모드를 지원하지
+않습니다. 이 값이 false이고 사용자가
+다중 창 모드에서 액티비티를 시작하려고 시도하면, 액티비티가 전체 화면을
+차지합니다.
+</p>
+
+<p>
+  앱이 Android N을 대상으로 하지만 이 특성에 값을 지정하지
+않은 경우, 이 특성의 기본값은 true가 됩니다.
+</p>
+
+<h4 id="supportsPictureInPicture">android:supportsPictureInPicture</h4>
+
+<p>
+  이 특성을 매니페스트의 <code>&lt;activity&gt;</code> 노드에 설정하여
+액티비티가 PIP 표시를 지원하는지 여부를 나타냅니다. <code>android:resizeableActivity</code>가 false인 경우 이 특성이
+무시됩니다.
+</p>
+
+<pre>
+android:supportsPictureInPicture=["true" | "false"]
+</pre>
+
+<h3 id="layout">레이아웃 특성</h3>
+
+<p>
+  Android N에서 <code>&lt;layout&gt;</code> 매니페스트 요소는
+다중 창 모드에서 액티비티가 동작하는 방식에 영향을 미치는
+여러 특성을 지원합니다.
+</p>
+
+<dl>
+  <dt>
+    <code>android:defaultWidth</code>
+  </dt>
+
+  <dd>
+    자유형식 모드에서 시작될 때 액티비티의 기본 너비.
+  </dd>
+
+  <dt>
+    <code>android:defaultHeight</code>
+  </dt>
+
+  <dd>
+    자유형식 모드에서 시작될 때 액티비티의 기본 높이.
+  </dd>
+
+  <dt>
+    <code>android:gravity</code>
+  </dt>
+
+  <dd>
+    자유형식 모드에서 시작될 때 액티비티의 초기 배치. 적합한 값은
+{@link android.view.Gravity} 참조를 참조하세요.
+  </dd>
+
+  <dt>
+    <code>android:minimalSize</code>
+  </dt>
+
+  <dd>
+    화면 분할
+및 자유형식 모드에서 액티비티의 최소 높이 및 최소 너비. 사용자가 화면 분할 모드에서 디바이더를 이동하여 액티비티를
+지정된 최소값보다 더 작게 만드는 경우, 시스템은
+이 액티비티를 사용자가 요청한 크기로 자릅니다.
+  </dd>
+</dl>
+
+<p>
+  예를 들어, 다음 코드는 액티비티가 자유형식 모드로 표시될
+때 이 액티비티의 기본 크기와 위치 및 최소 크기를
+지정하는 방법을 보여줍니다.
+</p>
+
+<pre>
+&lt;activity android:name=".MyActivity"&gt;
+    &lt;layout android:defaultHeight="500dp"
+          android:defaultWidth="600dp"
+          android:gravity="top|end"
+          android:minimalSize="450dp" /&gt;
+&lt;/activity&gt;
+</pre>
+
+<h2 id="running">앱을 다중 창 모드에서 실행</h2>
+
+<p>
+  Android N에서는 다중 창 모드에서 실행 가능한 앱을 지원하는 새로운
+기능을 제공합니다.
+</p>
+
+<h3 id="disabled-features">다중 창 모드에서 비활성화되는 기능</h3>
+
+<p>
+  기기가 다중 창 모드에 있는 경우 일부 기능이 비활성화되거나
+무시되는데, 그 이유는 이들 기능은 기기 화면을 다른 액티비티
+또는 앱과 공유하는 액티비티에는 적합하지 않기 때문입니다. 이러한 기능에는 다음이 포함됩니다.
+
+<ul>
+  <li>일부 <a href="{@docRoot}training/system-ui/index.html">시스템 UI</a>
+사용자 지정 옵션이 비활성화됩니다. 예를 들어, 앱이 전체 화면 모드에서 실행되지
+않을 경우에는 상태 표시줄을 숨길 수 없습니다.
+  </li>
+
+  <li>시스템이 <code><a href=
+  "{@docRoot}guide/topics/manifest/activity-element.html#screen"
+  >android:screenOrientation</a></code> 특성의 변경을 무시합니다.
+  </li>
+</ul>
+
+<h3 id="change-notification">다중 창 변경 알림 및 쿼리</h3>
+
+<p>
+  다중 창 표시를 지원하기 위해 다음과 같은 새 메서드가 {@link android.app.Activity}
+클래스에 추가되었습니다. 각 메서드에 대한 자세한 내용은,
+<a href="{@docRoot}preview/setup-sdk.html#docs-dl">N Preview SDK 참조</a>를 참조하세요.
+</p>
+
+<dl>
+  <dt>
+    <code>Activity.inMultiWindow()</code>
+  </dt>
+
+  <dd>
+    액티비티가 다중 창 모드에 있는지를 알아내려면 호출합니다.
+  </dd>
+
+  <dt>
+    <code>Activity.inPictureInPicture()</code>
+  </dt>
+
+  <dd>
+    액티비티가 PIP 모드에 있는지를 알아내려면 호출합니다.
+
+    <p class="note">
+      <strong>참고:</strong> PIP 모드는 다중 창 모드의 특별한
+케이스입니다. <code>myActivity.inPictureInPicture()</code>가
+true를 반환하면, <code>myActivity.inMultiWindow()</code>도 또한
+true를 반환합니다.
+    </p>
+  </dd>
+
+  <dt>
+    <code>Activity.onMultiWindowChanged()</code>
+  </dt>
+
+  <dd>
+    시스템은 액티비티가 다중 창 모드로 들어가거나
+이 모드에서 나올 때마다 이 메서드를 호출합니다. 시스템은 액티비티가 다중 창 모드로
+들어갈 때는 true 값을 메서드에 전달하고, 액티비티가 다중 창 모드에서
+나올 때는 false를 전달합니다.
+  </dd>
+
+  <dt>
+    <code>Activity.onPictureInPictureChanged()</code>
+  </dt>
+
+  <dd>
+    시스템은 액티비티가 PIP 모드로 들어가거나
+이 모드에서 나올 때마다 이 메서드를 호출합니다. 시스템은 액티비티가 PIP 모드로 들어갈 때는
+true 값을 메서드에 전달하고, 액티비티가 PIP에서 나올 때는
+false를 전달합니다.
+  </dd>
+</dl>
+
+<p>
+  또한 이들 각 메서드의 {@link android.app.Fragment} 버전이
+있습니다(예: <code>Fragment.inMultiWindow()</code>).
+</p>
+
+<h3 id="entering-pip">PIP 모드로 들어가기</h3>
+
+<p>
+  액티비티를 PIP 모드에 두려면, 새로운 메서드인
+<code>Activity.enterPictureInPicture()</code>를 호출합니다. 기기가 PIP 모드를 지원하지 않으면 이 메서드는
+영향이 없습니다. 자세한 내용은
+<a href="picture-in-picture.html">PIP</a> 문서를 참조하세요.
+</p>
+
+<h3 id="launch">다중 창 모드에서 새 액티비티 시작</h3>
+
+<p>
+  새 액티비티를 시작하는 경우, 가능하면 이 새 액티비티가 현재
+액티비티에 인접하여 표시되어야 함을 시스템에게 알려줄 수 있습니다. 이를 위해
+, 플래그
+<code>Intent.FLAG_ACTIVITY_LAUNCH_TO_ADJACENT</code>를 사용합니다. 이 플래그를 전달하면
+다음과 같은 동작이 요청됩니다.
+</p>
+
+<ul>
+  <li>기기가 화면 분할 모드에 있는 경우,
+시스템은 시작한 액티비티 옆에 새 액티비티를 만들려고 시도하므로, 두 액티비티가
+화면을 공유합니다. 시스템이 이 작업을 수행할 수 있다고
+보장되지는 않지만, 가능하면 액티비티를 인접하게 만듭니다.
+  </li>
+
+  <li>기기가 화면 분할 모드에 있으면, 이 플래그가 영향을 미치지 않습니다.
+  </li>
+</ul>
+
+<p>
+  기기가 자유형식 모드에 있고 새 액티비티를 시작 중인 경우,
+<code>ActivityOptions.setLaunchBounds()</code>를 호출하여 이 새 액티비티의 치수와 화면 위치를
+지정할 수 있습니다. 기기가 다중 창 모드에 있지 않으면, 이 메서드가 영향을
+미치지 않습니다.
+</p>
+
+<p class="note">
+  <strong>참고:</strong> 작업 스택 내에서 액티비티를 시작하는 경우,
+이 액티비티는 화면상의 액티비티를 대체하여, 모든 다중 창 속성을
+상속합니다. 새 액티비티를 다중 창 모드에서 별도 창으로 시작하려면,
+새 작업 스택에서 액티비티를 시작해야 합니다.
+</p>
+
+<h3 id="dnd">끌어서 놓기 지원</h3>
+
+<p>
+  사용자는 두
+액티비티가 화면을 공유하는 동안 한 액티비티에서 다른 액티비티로 데이터를 <a href="{@docRoot}guide/topics/ui/drag-drop.html">끌어서 놓을</a>
+수 있습니다. (이전에는, 사용자가 단일 액티비티 내에서만 데이터를 끌어서
+놓을 수 있었습니다.) 이러한 이유로, 앱이 현재 지원하지 않는 경우에는 끌어서 놓기
+기능을 앱에 추가하는 것이 좋습니다.
+</p>
+
+<p>
+  N Preview SDK는 앱 간의 끌어서 놓기를 지원하기 위해 <a href="{@docRoot}reference/android/view/package-summary.html"><code>android.view</code></a>
+패키지를 확장합니다. 다음과 같은 클래스와 메서드에 대한 자세한
+내용은, <a href="{@docRoot}preview/setup-sdk.html#docs-dl">N Preview
+SDK 참조</a>를 참조하세요.
+</p>
+
+<dl>
+  <dt>
+    <code>android.view.DropPermissions</code>
+  </dt>
+
+  <dd>
+    놓기를 수신하는 앱에 부여되는 권한을 지정하기
+위한 토큰 객체.
+  </dd>
+
+  <dt>
+    <code>View.startDragAndDrop()</code>
+  </dt>
+
+  <dd>
+    {@link android.view.View#startDrag View.startDrag()}의 새 별칭. 액티비티 간의 끌어서 놓기를 활성화하려면, 새 플래그
+<code>View.DRAG_FLAG_GLOBAL</code>을
+전달합니다. 수신자 액티비티에게 URI 권한을
+부여해야 하는 경우, 새 플래그
+<code>View.DRAG_FLAG_GLOBAL_URI_READ</code> 또는
+<code>View.DRAG_FLAG_GLOBAL_URI_WRITE</code>를 적절하게 전달합니다.
+  </dd>
+
+  <dt>
+    <code>View.cancelDragAndDrop()</code>
+  </dt>
+
+  <dd>
+    현재 진행 중인 끌기 작업을 취소합니다. 끌기 작업을 발생시킨
+앱에 의해서만 호출될 수 있습니다.
+  </dd>
+
+  <dt>
+    <code>View.updateDragShadow()</code>
+  </dt>
+
+  <dd>
+    현재 진행 중인 끌기 작업의 끌기 그림자를 대체합니다. 끌기 작업을 발생시킨
+앱에 의해서만 호출될 수 있습니다.
+  </dd>
+
+  <dt>
+    <code>Activity.requestDropPermissions()</code>
+  </dt>
+
+  <dd>
+    {@link android.view.DragEvent}에 포함된 {@link
+android.content.ClipData}로 전달되는 콘텐츠 URI의 권한을 요청합니다.
+  </dd>
+</dl>
+
+<h2 id="testing">앱의 다중 창 지원 테스트</h2>
+
+<p>
+  앱을 Android N용으로 업데이트하든 안하든 간에,
+Android N이 실행 중인 기기에서 사용자가 앱을 다중 창 모드로
+시작하려고 시도하는 경우, 앱이 다중 창 모드에서 어떻게 작동하는지 확인해야 합니다.
+</p>
+
+<h3 id="configuring">테스트 기기 구성</h3>
+
+<p>
+  기기에 Android N을 설치하면, 화면 분할 모드가
+자동으로 지원됩니다.
+</p>
+
+<h3 id="test-non-n">앱이 N Preview SDK로 작성되지 않은 경우</h3>
+
+<p>
+  앱을 N Preview SDK로 작성하지 않았는데 사용자가
+앱을 다중 창 모드에서 사용하려고 시도하는 경우, 이 앱이 고정 방향을 선언하지
+않으면 시스템이 앱의 크기를 강제로 조정합니다.
+</p>
+
+<p>
+  앱이 고정 방향을 선언하지 않은 경우, Android N이
+실행 중인 기기에서 앱을 시작해야 하며, 앱을 화면 분할 모드에
+두도록 시도해야 합니다. 앱의 크기를 강제로 조정하는 경우 사용자 경험이
+적절한지 확인하세요.
+</p>
+
+<p>
+  앱이 고정 방향을 선언하는 경우, 앱을 다중 창 모드에
+두도록 시도해야 합니다. 이 때 앱이 전체 화면 모드에 남아있는지
+확인하세요.
+</p>
+
+<h3 id="test-mw">다중 창 모드를 지원하는 경우</h3>
+
+<p>
+  N Preview SDK로 앱을 작성했는데 다중 창 지원을 비활성화하지
+않은 경우, 화면 분할 및 자유형식 모드에서 다음과
+같은 동작을 확인하세요.
+</p>
+
+<ul>
+  <li>앱을 전체 화면 모드에서 시작한 다음, Overview 버튼을 길게 눌러서
+다중 창 모드로 전환합니다. 앱이 적절히 전환되는지 확인합니다.
+  </li>
+
+  <li>앱을 다중 창 모드에서 직접 시작하고, 이 앱이 적절히
+시작되는지 확인합니다. 다중 창 모드에서 앱을 시작하려면, Overview 버튼을
+누르고 앱의 제목 표시줄을 길게 누른 다음 화면의 강조 표시된 영역 중
+하나로 제목 표시줄을 끌어서 놓습니다.
+  </li>
+
+  <li>분할선을 끌어서 화면 분할 모드에서 앱의 크기를 조정합니다.
+  작동 중단 없이 앱 크기가 조정되는지 확인하고, 필요한
+UI 요소가 표시되는지 확인합니다.
+  </li>
+
+  <li>앱에 최소 치수를 지정한 경우, 이 치수 아래로 앱 크기를
+조정해 봅니다. 지정된 최소값보다 더 작게 앱 크기를 조정할 수
+없는지 확인합니다.
+  </li>
+
+  <li>모든 테스트를 통해 앱의 성능이 적절한지 확인합니다. 예를 들어,
+앱 크기를 조정한 후에, 업데이트하기에 지연이
+너무 길지 않은지 확인합니다.
+  </li>
+</ul>
+
+<h4 id="test-checklist">테스트 검사 목록</h4>
+
+<p>
+  다중 창 모드에서 앱의 성능을 확인하려면, 다음
+작업을 시도해 보세요. 별다른 설명이 없는 한, 화면 분할 및 다중 창 모드
+에서 모두 이들 작업을 시도해야 합니다.
+</p>
+
+<ul>
+  <li>다중 창 모드에 들어갔다 나갑니다.
+  </li>
+
+  <li>자신의 앱에서 다른 앱으로 전환하고, 앱이 표시는 되지만
+활성화되지 않은 동안에 적절히 동작하는지 확인합니다. 예를 들어, 앱이 동영상을 재생 중인 경우, 사용자가
+다른 앱과 상호작용하는 동안에 이 동영상이 계속 재생되는지
+확인합니다.
+  </li>
+
+  <li>화면 분할 모드에서, 분할선을 이동하여 앱을 더 크거나
+작게 만들어 봅니다. 앱을 나란히 또는 상하로 놓은 구성에서 이러한
+작업을 시도해 봅니다. 앱의 작동이 중단되지 않는지, 필수 기능이
+표시되는지, 그리고 크기 조정 작업이 너무 오래 걸리지 않는지
+확인합니다.
+  </li>
+
+  <li>빠르게 연속해서 여러 가지 크기 조정 작업을 수행합니다. 앱의 작동이 중단되거나 메모리가 누수되지
+않는지 확인합니다. 앱의 메모리 사용량을 확인하는
+방법에 대해서는 <a href="{@docRoot}tools/debugging/debugging-memory.html">RAM 사용량
+검사</a>를 참조하세요.
+  </li>
+
+  <li>여러 가지 다른 창 구성에서 앱을 정상적으로
+사용하고, 이 앱이 제대로 작동하는지 확인합니다. 텍스트를 읽을 수 있는지 확인하고, 해당
+UI 요소가 상호작용하기에 너무 작지 않은지 확인합니다.
+  </li>
+</ul>
+
+<h3 id="test-disabled-mw">다중 창 지원을 비활성화한 경우</h3>
+
+<p>
+  <code>android:resizableActivity="false"</code>를 설정하여
+다중 창 지원을 비활성화한 경우, Android N을 실행 중인 기기에서
+앱을 시작해야 하며, 앱을 자유형식 및 화면
+분할 모드로 둬야 합니다. 이 때 앱이 전체 화면 모드에 남아있는지
+확인하세요.
+</p>
diff --git a/docs/html-intl/intl/ko/preview/features/multilingual-support.jd b/docs/html-intl/intl/ko/preview/features/multilingual-support.jd
new file mode 100644
index 0000000..eb8e8a7
--- /dev/null
+++ b/docs/html-intl/intl/ko/preview/features/multilingual-support.jd
@@ -0,0 +1,214 @@
+page.title=언어 및 로케일
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+<h2>이 문서의 내용</h2>
+<ol>
+	  <li><a href="#preN">언어 리소스 결정에서의 과제</a></li>
+    <li><a href="#postN">리소스 결정 전략 개선</a></li>
+    <li><a href="#design">추가 로케일 지원을 위한
+앱 설계</a></li>
+
+</ol>
+
+</div>
+</div>
+
+<p>Android N은 다국어 사용자를 위한 지원을 개선해서
+설정에서 여러 로케일을 선택할 수 있습니다. Android N은
+지원되는 로케일 수를 대폭 확대하고
+시스템이 리소스를 결정하는 방식을 변경하여 이 기능을 제공합니다. 새로 도입된 리소스 결정 방법은
+더욱 안정적이고 기존 APK와 호환되도록 설계되어 있지만
+예상치 못한 동작이 없는지 신중히 살펴봐야 합니다. 예를 들어,
+앱이 예상 언어로 기본 설정되어 있는지 테스트해야 합니다. 또한,
+앱이 여러 언어를 지원한다면
+원하는 대로 작동하는지 확인해야 합니다. 마지막으로
+앱이 지원하도록 명시하지 않은 언어를 무리 없이 처리하는지 확인해야 합니다.</p>
+
+<p>이 문서에서는
+Android N 이전의 리소스 결정 전략을 설명한 뒤에, Android N의 개선된
+리소스 결정 전략을 설명합니다. 마지막으로
+더 많은 다국어 사용자를 지원하기 위해 확장된 로케일을 활용하는 방법을 설명합니다.</p>
+
+<h2 id="preN">언어 리소스 결정에서의 과제</h2>
+
+<p>Android N 이전의 Android는
+앱과 시스템 로케일을 매칭하지 못하는 경우도 있었습니다. 예를 들어, 앱의 기본 언어가
+미국 영어지만 {@code es_ES}
+ 리소스 파일에 스페인어 문자열도 현지화되어 있습니다.</p>
+<p>Java 코드가 문자열을 참조할 때 다음과 같이 문자열 언어를
+결정합니다.</p>
+<ul>
+<li>기기가 {@code es_MX}(멕시코 스페인어)로 설정되어 있으면 Android는
+{@code es_ES} 리소스 파일에서 문자열을 로드합니다.</li>
+<li>기기가 {@code en_AU}로 설정되어 있으면 Android는 {@code
+en_US}로 돌아갑니다. 또한, 사용자가 앱에서 전혀 지원하지 않는 언어(예: 프랑스어)를 선택하면 시스템이 기본값을 {@code en_US}로
+설정합니다.</li>
+</ul>
+
+
+<p>시스템이 정확한 일치를 찾지 못하면
+로케일의 국가 코드를 삭제하기 때문에 이러한 결정 문제가 발생합니다.  예:</p>
+<p class="table-caption" id="t-resource-res">
+<strong>표 1.</strong> 정확한 로케일 일치가 없는 경우 리소스 결정.
+</p>
+<table>
+<tbody>
+<tr>
+<th>사용자 설정</th>
+<th>앱 리소스</th>
+<th>리소스 결정</th>
+</tr>
+<tr>
+<td>fr_CH</td>
+<td>
+기본값(en)<br>
+de_DE<br>
+es_ES<br>
+fr_FR<br>
+it_IT<br>
+</td>
+ <td>
+fr_CH 시도 =&gt; 실패<br>
+fr 시도 =&gt; 실패<br>
+기본값(en) 사용
+</td>
+ </tr>
+ </tbody>
+</table>
+
+
+<p>이 예시에서 시스템은
+사용자가 영어를 이해할 수 있는지 여부와 관계없이 영어 문자열을 표시합니다. 현재 이러한 동작이 상당히
+일반적입니다. Android N은 이런
+결과가 나타나는 빈도를 상당히 낮추었습니다.</p>
+
+<h2 id="postN">리소스 결정 전략 개선</h2>
+<p>Android N은 더욱 안정적인 리소스 결정을 사용하고
+자동으로 더욱 알맞은 대안책을 찾습니다. 그러나 결정 속도를 높이고
+관리성을 개선하려면 가장 일반적인 상위 방언에 리소스를 저장해야 합니다.
+ 예를 들어, 전에 {@code es-US} 디렉터리에
+스페인어 리소스를 저장했다면 남미 스페인어가 있는 {@code es-419} 디렉터리로 이동합니다.
+ 마찬가지로 {@code en-GB}란 폴더에 리소스 문자열이 있다면
+폴더 이름을 {@code en-001}(국제 영어)로 변경합니다.
+<code>en-GB</code> 문자열의 가장 일반적인 상위 리소스는 {@code en-001}이기 때문입니다.
+ 다음은 이러한 방법이
+성능과 리소스 결정의 신뢰성을 개선하는 이유를 설명하는 예시입니다.</p>
+
+<h3>리소스 결정 예시</h3>
+
+<p>Android N의 경우, <strong>표 1</strong>의 사례는
+다르게 결정됩니다.</p>
+
+<p class="table-caption" id="t-improved-res">
+<strong>표 2.</strong> 정확한 로케일 일치가 없을 경우
+개선된 결정 전략.</p>
+<table>
+<tr>
+<th>사용자 설정</th>
+<th>앱 리소스</th>
+<th>리소스 결정</th>
+</tr>
+<tr>
+<td><ol>
+<li> fr_CH</li>
+</ol>
+</td>
+<td>
+기본값(en)<br>
+de_DE<br>
+es_ES<br>
+fr_FR<br>
+it_IT<br>
+</td>
+<td>
+fr_CH 시도 =&gt; 실패<br>
+fr 시도 =&gt; 실패<br>
+Fr의 하위 리소스 시도 =&gt; fr_FR<br>
+fr_FR 사용
+</td>
+</tr>
+
+</table>
+
+
+<p>이제 사용자는 영어 대신 프랑스어 리소스를 보게 됩니다. 이 예시는
+Android N에서 프랑스어 문자열을 {@code fr_FR}
+이 아니라 {@code fr}에 저장해야 하는 이유를 알 수 있습니다. 이러한 동작을 통해 가장 가까운 상위 방언과 일치시켜서
+더욱 빠르고 예측 가능하게 결정합니다.</p>
+
+<p>Android는 이러한 결정 논리를 개선했을 뿐만 아니라
+선택 가능한 언어를 더 많이 제공합니다. 위의 예시에 이탈리아어가 추가 사용자 언어로 지정되었지만
+앱에서 프랑스어를 지정하지 않는 경우를 적용해 보겠습니다.  </p>
+
+<p class="table-caption" id="t-2d-choice">
+<strong>표 3.</strong> 앱이 사용자의 두 번째 선호 로케일 설정에만 일치할 때
+리소스 결정.</p>
+<table>
+<tr>
+<th>사용자 설정</th>
+<th>앱 리소스</th>
+<th>리소스 결정</th>
+
+</tr>
+<tr>
+<td><ol>
+<li> fr_CH</li>
+<li> it_CH</li>
+</ol>
+</td>
+<td>
+기본값(en)<br>
+de_DE<br>
+es_ES<br>
+it_IT<br>
+</td>
+<td>
+fr_CH 시도 =&gt; 실패<br>
+fr 시도 =&gt; 실패<br>
+fr의 하위 리소스 시도 =&gt; 실패<br>
+it_CH 시도 =&gt; 실패<br>
+it 시도 =&gt; 실패<br>
+it의 하위 리소스 시도 =&gt; it_IT<br>
+it_IT 사용
+</td>
+
+</tr>
+
+</table>
+<p>앱이 프랑스어를 지원하지 않지만
+사용자는 여전히 자신이 이해하는 언어를 볼 수 있습니다.</p>
+
+
+<h2 id="design">추가 로케일 지원을 위한 앱 설계</h2>
+<h3>LocaleList API</h3>
+
+<p>Android N에서는 앱이 사용자가 지정한 언어 목록을 직접 쿼리할 수 있는 새로운 API {@code LocaleList.GetDefault()}
+가 추가되었습니다. 이 API는
+앱 동작을 더욱 정교하게 해주고
+콘텐츠 표시 최적화를 개선합니다. 예를 들어, 검색 시
+사용자 설정에 따라 여러 언어로 결과를 표시할 수 있습니다.  브라우저 앱은
+사용자가 이미 알고 있는 언어로
+번역 페이지를 제공하지 않고, 키보드 앱은 모든 적절한 레이아웃을 자동 활성화할 수 있습니다. </p>
+
+<h3>포맷터</h3>
+
+<p>Android 6.0(API 레벨 23)까지 Android는 많은 공통 언어(en, es, ar, fr, ru)에 대해
+1~2개의 로케일만
+지원했습니다. 각 언어의 변종은 몇 개뿐이기 때문에
+리소스 파일에 하드코딩된 문자열로 몇 개의 숫자와 날짜를 저장하는 것만으로
+충분했습니다.  그러나 Android에서 지원되는 로케일 세트가 확장되면서
+단일 로케일 내에서조차
+날짜, 시간, 통화 및 유사 정보에
+큰 차이가 생길 수 있게 되었습니다. 형식 하드코딩은
+최종 사용자에게 혼란을 줄 수 있습니다.  그러므로 Android N을 개발할 때는
+숫자와 날짜 문자열을 하드코딩하는 대신 포맷터를 사용하도록 하세요.</p>
+
+<p>가장 좋은 예시로는 아랍어가 있습니다. Android N에서 아랍어 지원이
+{@code ar_EG} 1개에서 27개 아랍어 로케일로 확장되었습니다. 이러한 로케일은 대부분의 리소스를 공유할 수 있지만
+어떤 로케일은 ASCII 숫자를 선호하고 어떤 로케일은 네이티브 숫자를 선호합니다. 예를 들어,
+"4자리 핀 선택"과 같은 숫자 변수가 포함된 문장을 생성하려면
+아래와 같이 포맷터를 사용합니다.</p>
+
+<pre> format(locale, "Choose a %d-digit PIN", 4)</pre>
diff --git a/docs/html-intl/intl/ko/preview/features/notification-updates.jd b/docs/html-intl/intl/ko/preview/features/notification-updates.jd
new file mode 100644
index 0000000..16f4dad
--- /dev/null
+++ b/docs/html-intl/intl/ko/preview/features/notification-updates.jd
@@ -0,0 +1,328 @@
+page.title=알림
+page.tags=notifications
+helpoutsWidget=true
+page.image=/preview/images/notifications-card.png
+
+trainingnavtop=true
+
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+
+<!-- table of contents -->
+<h2>이 문서의 내용</h2>
+<ol>
+  <li><a href="#direct">직접 회신</a></li>
+  <li><a href="#bundle">묶음 알림</a></li>
+  <li><a href="#custom">사용자 지정 뷰</a></li>
+</ol>
+
+</div>
+</div>
+
+<p>Android N에서는 앱이 가시성과 상호작용이 뛰어난 알림을
+게시할 수 있도록 여러 새로운 API를 소개합니다.</p>
+
+<p>Android N에서는 핸드셋에서 인라인 회신을 지원하기 위해 기존의 {@link android.support.v4.app.RemoteInput}
+알림 API를 확장합니다. 이 기능을 사용하면 앱을 방문하지 않고도 알림 창에서
+신속하게 응답할 수 있습니다.</p>
+
+<p>
+  Android N에서는 또한 비슷한 알림을 묶어서 단일 알림으로
+표시할 수도 있습니다. 이것이 가능하도록, Android N에서는 기존의 {@link
+  android.support.v4.app.NotificationCompat.Builder#setGroup
+  NotificationCompat.Builder.setGroup()} 메서드를 사용합니다. 사용자가 각 알림을 확장할 수 있으며, 각 알림에 대해 회신 및
+닫기와 같은 동작을 알림 창에서 개별적으로 수행할
+수 있습니다.
+</p>
+
+<p>마지막으로, Android N에서는 또한 앱의 사용자 지정된 알림
+뷰에서 시스템 장식을 활용할 수 있는 새 API를 추가합니다. 이들 API는 표준 템플릿을 통해 알림 뷰가
+일관된 프레젠테이션을 공유하도록 보장해
+줍니다.</p>
+
+<p>이 문서에서는 새 알림 기능을 앱에서 사용할 때 고려해야
+하는 몇 가지 주요 변경 사항을 중점적으로 다룹니다.</p>
+
+<h2 id="direct">직접 회신</h2>
+
+<p>Android N에 있는 직접 회신 기능을 사용하여, 사용자가 문자
+메시지에 신속하게 응답하거나 알림 인터페이스 내에서 직접
+작업 목록을 업데이트할 수 있습니다. 핸드헬드에서 인라인 회신 동작은 알림에 연결된 추가적인
+버튼으로 나타납니다. 사용자가 키보드를 통해 회신하면,
+시스템은 여러분이 알림 동작에 지정했던
+인텐트에 텍스트 응답을 첨부하고 이 인텐트를
+핸드헬드 앱으로 보냅니다.
+
+
+<img id="fig-reply-button" src="{@docRoot}preview/images/inline-reply.png" srcset="{@docRoot}preview/images/inline-reply.png 1x,
+  {@docRoot}preview/images/inline-reply_2x.png 2x" width="400">
+<p class="img-caption">
+  <strong>그림 1.</strong> Android N이 <strong>회신</strong>
+동작 버튼을 추가합니다.
+</p>
+
+<h3>인라인 회신 동작 추가</h3>
+
+<p>직접 회신을 지원하는 알림 동작을 만들려면:
+</p>
+
+<ol>
+<li>알림 동작에 추가할 수 있는 {@link android.support.v4.app.RemoteInput.Builder}의
+인스턴스를
+만듭니다. 이 클래스의 생성자는 시스템이 문자 입력의 키로
+사용하는 문자열을 수락합니다. 나중에 핸드헬드 앱은 이 키를 사용하여 입력 텍스트를
+검색합니다.
+
+<pre>
+// Key for the string that's delivered in the action's intent
+private static final String KEY_TEXT_REPLY = "key_text_reply";
+String replyLabel = getResources().getString(R.string.reply_label);
+RemoteInput remoteInput = new RemoteInput.Builder(KEY_TEXT_REPLY)
+        .setLabel(replyLabel)
+        .build();
+</pre>
+</li>
+<li><code>addRemoteInput()</code>을 사용하여 {@link android.support.v4.app.RemoteInput}
+객체를 동작에 첨부합니다.
+
+<pre>
+// Create the reply action and add the remote input
+Notification.Action action =
+        new Notification.Action.Builder(R.drawable.ic_reply_icon,
+                getString(R.string.label), replyPendingIntent)
+                .addRemoteInput(remoteInput)
+                .build();
+</pre>
+</li>
+
+<li>동작을 알림에 적용하고 알림을 발생합니다.
+
+<pre>
+// Build the notification and add the action
+Notification notification =
+        new Notification.Builder(mContext)
+                .setSmallIcon(R.drawable.ic_message)
+                .setContentTitle(getString(R.string.title))
+                .setContentText(getString(R.string.content))
+                .addAction(action))
+                .build();
+
+// Issue the notification
+NotificationManager notificationManager =
+        NotificationManager.from(mContext);
+notificationManager.notify(notificationId, notification);
+
+</pre>
+</li>
+
+</ol>
+
+
+<p> 시스템이 사용자에게 알림 동작이 트리거될 때 응답을 입력하라는
+메시지를 표시합니다. </p>
+
+<img id="fig-user-input" src="{@docRoot}preview/images/inline-type-reply.png" srcset="{@docRoot}preview/images/inline-type-reply.png 1x,
+    {@docRoot}preview/images/inline-type-reply_2x.png 2x" width="300">
+<p class="img-caption">
+  <strong>그림 2.</strong> 사용자가 알림 창에서 텍스트를 입력합니다.
+</p>
+
+<h3>인라인 회신에서 사용자 입력 검색</h3>
+
+<p>회신 동작의 인텐트에 선언한 액티비티에 대해 알림
+인터페이스로부터 사용자 입력을 수신하려면:</p>
+<ol>
+<li> 알림 동작의 인텐트를 입력 매개변수로서 전달하여 {@link android.support.v4.app.RemoteInput#getResultsFromIntent
+  getResultsFromIntent()}를
+호출합니다. 이 메서드는 텍스트 응답이 포함된 {@link android.os.Bundle}을
+반환합니다.
+</li>
+
+<pre>
+Bundle remoteInput = RemoteInput.getResultsFromIntent(intent);
+</pre>
+
+<li>({@link
+  android.support.v4.app.RemoteInput.Builder} 생성자에 제공된) 결과 키를 사용하여 번들을 쿼리합니다.
+</li>
+</ol>
+
+<p>다음 코드 조각에서는 메서드가 번들로부터 입력 텍스트를
+검색하는 방법을 보여줍니다.</p>
+
+<pre>
+// Obtain the intent that started this activity by calling
+// Activity.getIntent() and pass it into this method to
+// get the associated string.
+
+private CharSequence getMessageText(Intent intent) {
+    Bundle remoteInput = RemoteInput.getResultsFromIntent(intent);
+    if (remoteInput != null) {
+            return remoteInput.getCharSequence(KEY_TEXT_REPLY);
+            }
+    return null;
+ }
+</pre>
+
+<p>검색된 텍스트에 어떤 동작을 취할지를 결정하기 위해
+앱이 로직을 적용할 수 있습니다.
+채팅과 같은 대화형 앱은 알림 자체에서 더 많은 컨텍스트를
+제공하므로(예: 사용자 자신의 메시지를 포함한 여러 줄의 채팅 기록)
+사용자가 적절하게 응답할 수 있습니다.
+사용자가 {@link android.support.v4.app.RemoteInput}을 통해 응답하는 경우, {@code setRemoteInputHistory()}
+메서드로 텍스트를 회신 기록에
+포함시킵니다.</p>
+
+<h2 id="bundle">묶음 알림</h2>
+
+<p>Android N에서는 일련의 알림을 표시하기 위한 새로운 방식을
+개발자에게 제공합니다. <i>묶음 알림</i>. 이것은
+Android Wear의 <a href="{@docRoot}training/wearables/notifications/stacks.html">알림
+스택</a> 기능과 유사합니다. 예를 들어, 수신된 메시지에 대해 앱이 알림을 생성하는 경우,
+둘 이상의 메시지가 수신되면 그 알림을 하나의
+단일 그룹으로 묶습니다. 기존의
+{@link android.support.v4.app.NotificationCompat.Builder#setGroup
+Builder.setGroup()} 메서드를 사용하여 유사한 알림을 묶을 수 있습니다.</p>
+
+<p>
+  알림 그룹은 이 그룹을 구성하는 알림을 계층 구조로 만듭니다 .
+  계층 구조의 맨 위는 그룹의 요약 정보가 표시되는 상위
+알림입니다. 사용자는 알림 그룹을 점진적으로 확장할 수 있으며, 시스템은
+사용자가 더 깊이 파고들수록 더 많은 정보를
+표시합니다. 사용자가 번들을 확장하면 시스템은 모든 하위 알림에 대해
+더 많은 정보를 표시하며, 사용자가 이들 알림 중 하나를 확장하면
+시스템은 알림의 전체 콘텐츠를 표시합니다.
+</p>
+
+<img id="fig-bundles" src="{@docRoot}preview/images/bundles.png" srcset="{@docRoot}preview/images/bundles.png 1x,
+          {@docRoot}preview/images/bundles_2x.png 2x" width="300">
+<p class="img-caption">
+  <strong>그림 3.</strong> 사용자는 알림 그룹을 점진적으로 확장할 수
+있습니다.
+</p>
+
+<p>알림을 그룹에 추가하는 방법을 알아보려면,
+<a href="{@docRoot}training/wearables/notifications/stacks.html#AddGroup">각
+알림을 그룹에 추가</a>를 참조하세요.</p>
+
+
+<h3 id="best-practices">묶음 알림의 모범 사례</h3>
+<p>이 섹션에서는 이전 버전의 Android 플랫폼에서
+사용되었던 {@link android.app.Notification.InboxStyle InboxStyle} 알림 대신에
+알림 그룹을 사용할 때의 지침을
+제공합니다.</p>
+
+<h3>묶음 알림을 사용하는 경우</h3>
+
+<p>자신의 사용 사례에서 다음의 모든 조건이 충족되는 경우에만
+알림 그룹을 사용해야 합니다.</p>
+
+<ul>
+  <li>하위 알림은 완전한 알림이며 그룹 요약이 필요 없이
+개별적으로 표시될 수 있습니다.</li>
+  <li>다음은 하위 알림을 개별적으로 표시할 때의 이점입니다. 예:
+
+  </li>
+  <ul>
+    <li>알림이 실행 가능하며, 각 하위 알림에 맞는 동작이 있습니다.</li>
+    <li>사용자가 읽고 싶어하는 하위 알림에 더 많은 정보가 있습니다.</li>
+  </ul>
+</ul>
+
+<p>알림 그룹의 사용 사례에 대한 좋은 예로는, 수신 메시지의
+목록을 표시하는 메시징 앱이나 수신된 이메일의 목록을 표시하는
+이메일 앱이 있습니다.</p>
+
+<p>
+단일 알림이 바람직한 사례의 예로는, 한 사람이 보낸
+개별 메시지나 1줄 텍스트 항목의 목록 표시가
+있습니다. 이를 수행하기 위해
+({@link android.app.Notification.InboxStyle InboxStyle} 또는
+{@link android.app.Notification.BigTextStyle BigTextStyle})을 사용할
+수 있습니다.
+</p>
+
+<h3 id ="post">묶음 알림 표시</h3>
+
+<p>
+  그룹에 하나의 하위 항목만 포함되어 있더라도 앱은
+항상 그룹 요약을 게시해야 합니다. 하나의 알림만 포함된 경우에는 시스템이 요약을
+억제하고 하위 알림을 직접 표시합니다. 이렇게 하면 사용자가 그룹의
+하위 항목을 스와이프할 때 시스템이 일관된 경험을 제공할 수
+있습니다.
+</p>
+
+<p class="note">
+  <strong>참고:</strong> 이 버전의 Android N에서는 아직 단일 하위
+항목이 포함된 알림 그룹에 대해 요약을 억제하지 않습니다. 이
+기능은 이후 버전의 Android N에 추가될 것입니다.
+</p>
+
+<h3>피킹 알림</h3>
+
+<p>시스템은
+일반적으로 하위 알림을 그룹으로 표시하지만,
+이 알림이 일시적으로 <a href="{@docRoot}guide/topics/ui/notifiers/notifications.html#Heads-up">헤드업 알림</a>으로
+나타나도록 설정할 수 있습니다. 이 기능을 사용하면 가장 최근의 하위 항목과 이에
+관련된 동작에 즉시 액세스할 수 있으므로 특히 유용합니다.
+</p>
+
+
+<h3>이전 버전과의 호환성</h3>
+
+<p>
+  Android 5.0 (API 레벨 21) 이후로, 알림 그룹과
+원격 입력은 Android Wear 기기를 지원하기 위한 {@link
+  android.app.Notification} API의 일부였습니다. 이미 이들 API로 알림을 작성한 경우 수행할 조치는,
+앱 동작이 위에 설명된 지침과 일치하는지 확인하고 {@code
+  setRemoteInputHistory()} 구현을
+고려하는 것입니다.
+</p>
+
+<p>
+  이전 버전과의 호환성을 지원하기 위해,
+지원 라이브러리의 {@link android.support.v4.app.NotificationCompat} 클래스로 동일한
+API를 사용할 수 있으며, 이전 Android 버전에서 작동하는 알림을 작성할
+수 있습니다. 핸드헬드와 태블릿에서는 요약 알림만 사용자에게 보이므로,
+앱은 해당 그룹의 전체 정보 콘텐츠에 대해 받은편지함
+스타일이나 이와 동등한 알림 표시를 계속 가져야 합니다. Android
+Wear 기기에서는 구형 플랫폼 레벨에서도
+사용자가 모든 하위 알림을 볼 수 있으므로, API 레벨에 상관없이 하위 알림을
+작성해야 합니다.
+</p>
+
+<h2 id="custom"> 사용자 지정 뷰</h2>
+<p>Android N부터는 알림 뷰를 사용자 지정할 수 있으며
+알림 헤더, 동작 및 확장 가능한 레이아웃과 같은 시스템 장식을 계속
+획득할 수 있습니다.</p>
+
+<p>이 기능을 활성화하기 위해, Android N에서는 다음과
+같은 API를 추가하여 사용자 지정 뷰의 스타일을 지정합니다.</p>
+
+<dl>
+<dt>
+{@code DecoratedCustomViewStyle()}</dt>
+<dd> 미디어 알림 이외의 스타일
+알림.</dd>
+<dt>
+{@code DecoratedMediaCustomViewStyle()}</dt>
+<dd> 스타일 미디어 알림.</dd>
+</dl>
+
+<p>이 새로운 API를 사용하려면, {@code setStyle()} 메서드를 호출하여,
+원하는 사용자 지정 뷰 스타일에 전달합니다.</p>
+
+<p>이 코드 조각은
+{@code DecoratedCustomViewStyle()} 메서드로 사용자 지정 알림 객체를 구성하는 방법을 보여줍니다.</p>
+
+<pre>
+Notification noti = new Notification.Builder()
+           .setSmallIcon(R.drawable.ic_stat_player)
+           .setLargeIcon(albumArtBitmap))
+           .setCustomContentView(contentView);
+           .setStyle(new Notification.DecoratedCustomViewStyle())
+           .build();
+
+</pre>
diff --git a/docs/html-intl/intl/ko/preview/features/picture-in-picture.jd b/docs/html-intl/intl/ko/preview/features/picture-in-picture.jd
new file mode 100644
index 0000000..74472b5
--- /dev/null
+++ b/docs/html-intl/intl/ko/preview/features/picture-in-picture.jd
@@ -0,0 +1,186 @@
+page.title=PIP
+page.keywords=preview,sdk,PIP,Picture-in-picture
+page.tags=androidn
+
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+
+<h2>이 문서의 내용</h2>
+<ol>
+  <li><a href="#declaring">액티비티의
+PIP 지원 선언</a></li>
+  <li><a href="#pip_button">액티비티를 PIP로 전환</a>
+</li>
+  <li><a href="#handling_ui">PIP에서 UI 처리</a>
+</li>
+  <li><a href="#continuing_playback">
+PIP에서 동영상 재생 지속</a></li>
+  <li><a href="#best">모범 사례</a></li>
+</ol>
+
+<h2>참고 항목</h2>
+<ol>
+  <li><a href="{@docRoot}preview/features/multi-window.html">다중 창
+지원</a></li>
+</ol>
+
+</div>
+</div>
+
+<p>Android N에서 Android TV 사용자는
+앱 안에서 탐색할 때 화면 모서리의 고정 창에서
+동영상을 볼 수 있습니다. PIP(Picture-in-picture) 모드를 사용하면
+앱의 백그라운드에서 다른 액티비티를 계속하면서
+고정 창에서 동영상 액티비티를 실행할 수 있습니다. PIP 창에서 사용자는 앱을 사용하는 동안 멀티태스킹이 가능하므로
+생산성이 향상됩니다.</p>
+
+<p>앱이 PIP 모드를 실행할 시기를 결정할 수 있습니다. PIP 모드로 진입하는 시기와 관련된 몇 가지
+예시:</p>
+
+<ul>
+<li>사용자가 동영상에서 다른 콘텐츠를 탐색하러 이동할 때 앱이
+동영상을 PIP 모드로 이동할 수 있습니다.</li>
+<li>사용자가 콘텐츠 에피소드의 끝부분을 볼 때 앱이
+동영상을 PIP 모드로 전환할 수 있습니다. 메인 화면은 시리즈 다음 에피소드의
+홍보 또는 요약 정보를 표시합니다.</li>
+<li>사용자가 동영상을 보는 동안 앱이
+추가 콘텐츠를 대기열에 올릴 수 있는 방법을 제공할 수 있습니다. 메인 화면에 콘텐츠 선택 액티비티가 표시되는 동안
+동영상이 PIP 모드에서 계속 재생됩니다.</li>
+</ul>
+
+<p>PIP 창은 240x135dp이고 
+화면 모서리 4개 중 하나에서 가장 위쪽 레이어에 표시되며, 시스템이 선택합니다. 사용자는
+리모컨의 <b>Home</b> 버튼을 눌러
+PIP 창을 전체 화면으로 전환하거나 PIP를 닫는 PIP 메뉴를 불러올 수 있습니다. 다른 동영상이
+메인 화면에서 재생되기 시작하면 PIP 창이
+자동으로 닫힙니다. 사용자가 Recents를 통해서 PIP 창을 닫을 수도 있습니다.</p>
+
+<img src="{@docRoot}preview/images/pip-active.png" />
+<p class="img-caption"><strong>그림 1.</strong> 사용자가 메인 화면에서 콘텐츠를 탐색하는 동안
+화면 모서리에 표시되는 PIP 동영상.
+</p>
+
+<p>PIP는 Android N에서 사용할 수 있는 다중 창 API를 사용하여
+고정된 동영상 오버레이 창을 제공합니다. 앱에 PIP를 추가하려면
+PIP를 지원하는 액티비티를 등록하고 필요한 경우 액티비티를 PIP 모드로 전환해야 합니다. 또한
+액티비티가 PIP 모드에 있을 때 UI 요소가 숨겨지고 동영상 재생이
+계속되는지 확인해야 합니다.</p>
+
+<h2 id="declaring">액티비티의 PIP 지원 선언</h2>
+
+<p>기본적으로 시스템은 앱에 대해 PIP를 자동으로 지원하지 않습니다.
+앱에서 PIP를 지원하려면
+<code>android:supportsPictureInPicture</code>와
+<code>android:resizeableActivity</code>를 <code>true</code>로 설정하여 매니페스트에서 동영상 액티비티를
+등록합니다. 또한,
+PIP 모드 전환 시 레이아웃 변경이 일어날 때 액티비티가 다시 시작되지 않도록
+액티비티가 레이아웃 구성 변화를 처리하게 지정합니다.</p>
+
+<pre>
+&lt;activity android:name="VideoActivity"
+    android:resizeableActivity="true"
+    android:supportsPictureInPicture="true"
+    android:configChanges=
+        "screenSize|smallestScreenSize|screenLayout|orientation"
+    ...
+</pre>
+
+<p>액티비티를 등록할 때는 PIP 모드에서
+액티비티가 TV 화면의 작은 오버레이 창에 표시된다는 것을 기억하세요. 최소 UI를 포함한
+동영상 재생 액티비티가 가장 좋은 사용자 경험을 제공합니다. 작은 UI 요소를 포함한
+액티비티는 PIP 모드로 전환할 때
+사용자가 PIP 창의 UI 요소를 상세히 볼 수 없으므로
+좋은 사용자 경험을 제공하지 못할 수 있습니다.</p>
+
+<h2 id="pip_button">액티비티를 PIP로 전환</h2>
+
+액티비티를 PIP 모드로 전환해야 하는 경우
+<code>Activity.enterPictureInPicture()</code>를 호출합니다. 다음은 사용자가 미디어 컨트롤 막대에서 전용 PIP 버튼을 선택했을 때
+PIP 모드로 전환하는 예시입니다.
+</p>
+
+<pre>
+&#64;Override
+public void onActionClicked(Action action) {
+    if (action.getId() == R.id.lb_control_picture_in_picture) {
+        getActivity().enterPictureInPicture();
+        return;
+    }
+    ...
+</pre>
+
+<p>미디어 제어 막대에 PIP 버튼을 추가하면
+사용자가 동영상 재생을 제어하면서 PIP 모드로 쉽게 전환할 수 있습니다.</p>
+
+<img src="{@docRoot}preview/images/pip-button.png" />
+<p class="img-caption"><strong>그림 1.</strong> 미디어 컨트롤 막대의 PIP
+버튼.</p>
+
+<p>Android N에는 컨트롤 막대 PIP 동작을 정의하고 PIP 아이콘을 사용하는 새로운
+<code>PlaybackControlsRow.PictureInPictureAction</code> 클래스가 포함되어 있습니다.
+</p>
+
+<h2 id="handling_ui">PIP에서 UI 처리</h2>
+
+<p>액티비티가 PIP 모드로 들어가면
+동영상 재생만 표시됩니다. 액티비티가 PIP 모드로 들어가기 전에 UI 요소를 제거하고
+액티비티가 다시 전체 화면이 되었을 때 이 요소를 복원합니다.
+필요에 따라 <code>Activity.onPictureInPictureChanged()</code> 또는
+<code>Fragment.onPictureInPictureChanged()</code>을 재정의하고
+UI 요소를 활성화/비활성화합니다. 예:</p>
+
+<pre>
+&#64;Override
+public void onPictureInPictureChanged(boolean inPictureInPicture) {
+    if (inPictureInPicture) {
+        // Hide the controls in picture-in-picture mode.
+        ...
+    } else {
+        // Restore the playback UI based on the playback status.
+        ...
+    }
+}
+</pre>
+
+<h2 id="continuing_playback">
+PIP에서 동영상 재생 지속</h2>
+
+<p>액티비티가 PIP 모드로 전환되면 시스템은
+액티비티가 일시 정지된 상태에 있다고 간주하고 액티비티의 <code>onPause()</code> 메서드를 호출합니다. 동영상
+재생은 일시 정지되어서는 안되며 PIP 모드로 인해 액티비티가 일시 정지되었다면
+계속 재생되어야 합니다. 액티비티의
+<code>onPause()</code> 메서드에서 PIP를 확인하고 적절히 재생을 처리합니다. 예:
+</p>
+
+<pre>
+&#64;Override
+public void onPause() {
+    // If called due to PIP, do not pause playback
+    if (inPictureInPicture()) {
+        // Continue playback
+        ...
+    }
+    // If paused but not in PIP, pause playback if necessary
+    ...
+}
+</pre>
+
+<p>액티비티가 PIP 모드에서 전체 화면 모드로 전환되면,
+시스템이 액티비티를 재시작하고 <code>onResume()</code> 메서드를 호출합니다.</p>
+
+<h2 id="best">모범 사례</h2>
+
+<p>PIP는 전체 화면 동영상을 재생하는 액티비티용입니다. 액티비티를
+PIP 모드로 전환할 때는 동영상 콘텐츠만 표시하세요.
+<a href="#handling_ui">PIP에서 UI 처리</a>에서 설명한 바와 같이 액티비티가 PIP 모드로 들어갈 때
+추적하고 UI 요소를 숨깁니다.</p>
+
+<p>PIP 창이 화면 모서리에 떠 있는 창으로 표시되므로
+PIP 창으로 가려질 수 있는 영역에는 메인 화면에서
+중요한 정보를 표시하지 말아야 합니다.</p>
+
+<p>액티비티가 PIP 모드일 때는 기본적으로 입력 포커스를 받지 않습니다. PIP 모드에서
+입력 이벤트를 수신하려면
+<code>MediaSession.setMediaButtonReceiver()</code>를 사용합니다.</p>
diff --git a/docs/html-intl/intl/ko/preview/features/scoped-folder-access.jd b/docs/html-intl/intl/ko/preview/features/scoped-folder-access.jd
new file mode 100644
index 0000000..8eaf4c9
--- /dev/null
+++ b/docs/html-intl/intl/ko/preview/features/scoped-folder-access.jd
@@ -0,0 +1,124 @@
+page.title=범위가 지정된 디렉터리 액세스
+page.keywords=preview,sdk,scoped directory access
+page.tags=androidn
+
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+  <h2>이 문서의 내용</h2>
+  <ol>
+    <li><a href="#accessing">외부 저장소 디렉터리 액세스</a></li>
+    <li><a href="#removable">이동식 미디어의 디렉터리 액세스</a></li>
+    <li><a href="#best">모범 사례</a></li>
+  </ol>
+</div>
+</div>
+
+<p>일반적으로 사진 앱과 같은 앱은
+<code>Pictures</code> 디렉터리 등 외부 저장소의 특정 디렉터리에만 액세스하면 됩니다. 기존 외부 저장소 액세스 방식은
+이런 유형의 앱에 대상화된 디렉터리 액세스를 쉽게
+제공하지 못합니다. 예:</p>
+
+<ul>
+<li>매니페스트에서 {@link android.Manifest.permission#READ_EXTERNAL_STORAGE}
+또는 {@link android.Manifest.permission#WRITE_EXTERNAL_STORAGE}를 요청하면
+외부 저장소의 모든 공개 디렉터리에 액세스할 수 있습니다.
+이는 앱에 필요한 것보다 과도한 액세스를 제공할 수 있습니다.</li>
+<li>일반적으로,
+<a href="{@docRoot}guide/topics/providers/document-provider.html">저장소
+액세스 프레임워크</a>를 사용하면 시스템 UI를 통해 사용자가 디렉터리를
+선택할 수 있습니다. 앱이 항상 동일한 외부 디렉터리에 액세스한다면
+필요 없는 동작입니다.</li>
+</ul>
+
+<p>Android N은 일반 외부 저장소 디렉터리에 액세스하기 위한
+단순화된 새로운 API를 제공합니다. </p>
+
+<h2 id="accessing">외부 저장소 디렉터리 액세스</h2>
+
+<p><code>StorageManager</code> 클래스를 사용하여 적절한
+<code>StorageVolume</code> 인스턴스를 가져옵니다. 그 후, 해당 인스턴스의
+<code>StorageVolume.createAccessIntent()</code> 메서드를 호출하여 인텐트를 생성합니다.
+이 인텐트로 외부 저장소 디렉터리에 액세스합니다. 이동식 미디어 볼륨을 포함한
+모든 이용 가능한 볼륨 목록을 가져오려면
+<code>StorageManager.getVolumesList()</code>를 사용합니다.</p>
+
+<p>다음 코드 조각은 기본 공유 저장소의
+<code>Pictures</code> 디렉터리를 여는 방법에 대한 예시입니다.</p>
+
+<pre>
+StorageManager sm = (StorageManager)getSystemService(Context.STORAGE_SERVICE);
+StorageVolume volume = sm.getPrimaryVolume();
+Intent intent = volume.createAccessIntent(Environment.DIRECTORY_PICTURES);
+startActivityForResult(intent, request_code);
+</pre>
+
+<p>시스템이 외부 디렉터리에 액세스 권한을 부여하고자 시도하고,
+필요에 따라 단순화된 UI를 사용하는 사용자의 액세스를 확인합니다.</p>
+
+<img src="{@docRoot}preview/images/scoped-folder-access-framed.png" srcset="{@docRoot}preview/images/scoped-folder-access-framed.png 1x,
+{@docRoot}preview/images/scoped-folder-access-framed_2x.png 2x" />
+<p class="img-caption"><strong>그림 1.</strong> Pictures 디렉터리에
+액세스를 요청하는 애플리케이션.</p>
+
+<p>사용자가 액세스 권한을 부여하면, 시스템이
+<code>Activity.RESULT_OK</code>의 결과 코드가 포함된
+<code>onActivityResult()</code> 재정의와 URI가 포함된 인텐트 데이터를 호출합니다. 제공된
+URI를 사용하여 디렉터리 정보에 액세스합니다.
+<a href="{@docRoot}guide/topics/providers/document-provider.html">저장소
+액세스 프레임워크</a>가
+반환한 URI를 사용하는 것과 유사합니다.</p>
+
+<p>사용자가 액세스 권한을 부여하지 않으면 시스템이
+<code>Activity.RESULT_CANCELED</code>의 결과 코드가 포함된
+<code>onActivityResult()</code> 재정의와 null 인텐트 데이터를 호출합니다.</p>
+
+<p class="note"><b>참고</b>: 특정 외부 디렉터리에 대한 액세스 권한을 얻으면
+해당 디렉터리의 하위 디렉터리에 대한 액세스 권한도 얻게 됩니다.</p>
+
+<h2 id="removable">이동식 미디어의 디렉터리 액세스</h2>
+
+<p>범위가 지정된 디렉터리 액세스를 사용하여 이동식 미디어의 디렉터리에 액세스하려면
+먼저 다음과 같은
+{@link android.os.Environment#MEDIA_MOUNTED} 알림을 수신하는 {@link android.content.BroadcastReceiver}를 추가합니다.</p>
+
+<pre>
+&lt;receiver
+    android:name=".MediaMountedReceiver"
+    android:enabled="true"
+    android:exported="true" &gt;
+    &lt;intent-filter&gt;
+        &lt;action android:name="android.intent.action.MEDIA_MOUNTED" /&gt;
+        &lt;data android:scheme="file" /&gt;
+    &lt;/intent-filter&gt;
+&lt;/receiver&gt;
+</pre>
+
+<p>사용자가 SD 카드 등의 이동식 미디어를 장착하면 시스템이
+{@link android.os.Environment#MEDIA_MOUNTED} 알림을 보냅니다. 이 알림은
+이동식 미디어 디렉터리에 액세스하는 데 사용할 수 있는 인텐트 데이터의 <code>StorageVolume</code> 객체를
+제공합니다. 다음은 
+이동식 미디어의 <code>Pictures</code> 디렉터리에 액세스하는 예시입니다.</p>
+
+<pre>
+// BroadcastReceiver has already cached the MEDIA_MOUNTED
+// notification Intent in mediaMountedIntent
+StorageVolume volume = (StorageVolume)
+    mediaMountedIntent.getParcelableExtra(StorageVolume.EXTRA_STORAGE_VOLUME);
+volume.createAccessIntent(Environment.DIRECTORY_PICTURES);
+startActivityForResult(intent, request_code);
+</pre>
+
+<h2 id="best">모범 사례</h2>
+
+<p>가능하면, 사용자에게 액세스 권한을 반복적으로 요청하지 않도록 외부 디렉터리 액세스 URI를
+변경하지 마세요. 사용자가 액세스 권한을 부여하면 디렉터리 액세스 URI로
+<code>getContentResolver().takePersistableUriPermssion()</code>를
+호출합니다. 시스템이 URI를 유지하고 이후 액세스 요청에서는
+<code>RESULT_OK</code>를 반환하고 사용자에게 확인 UI를
+표시하지 않습니다.</p>
+
+<p>사용자가 외부 디렉터리 액세스를 거부하면
+다시 즉시 액세스를 요청하지 마세요. 액세스를 반복적으로 요청하는 것은
+나쁜 사용자 경험을 제공하게 됩니다.</p>
diff --git a/docs/html-intl/intl/ko/preview/features/security-config.jd b/docs/html-intl/intl/ko/preview/features/security-config.jd
new file mode 100644
index 0000000..505df81
--- /dev/null
+++ b/docs/html-intl/intl/ko/preview/features/security-config.jd
@@ -0,0 +1,744 @@
+page.title=네트워크 보안 구성
+page.keywords=preview,security,network
+
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+
+<h2>이 문서의 내용</h2>
+<ol>
+  <li><a href="#manifest">보안 구성 파일 추가</a></li>
+  <li><a href="#CustomTrust">신뢰할 수 있는 CA 사용자 지정</a>
+      <ol>
+      <li><a href="#ConfigCustom">신뢰할 수 있는 사용자 지정 CA 구성</a></li>
+      <li><a href="#LimitingCas">신뢰할 수 있는 CA 세트 제한</a></li>
+      <li><a href="#TrustingAdditionalCas">추가 CA 신뢰</a></li>
+      </ol>
+  </li>
+  <li><a href="#TrustingDebugCa">디버그 전용 CA</a></li>
+  <li><a href="#UsesCleartextTraffic">일반 텍스트 트래픽 옵트아웃</a></li>
+  <li><a href="#CertificatePinning">인증서 고정</a></li>
+  <li><a href="#ConfigInheritance">구성 상속 동작</a></li>
+  <li><a href="#FileFormat">구성 파일 형식</a></li>
+</ol>
+</div>
+</div>
+
+
+<p>
+  Android N에는 앱 코드를 수정하지 않고 앱이 안전한 선언
+구성 파일에서 네트워크 보안 설정을 사용자 지정할 수 있는
+네트워크 보안 구성 기능이 포함되어 있습니다. 이 설정은
+특정 도메인과 특정 앱에 대해 구성할 수 있습니다. 이 기능의
+핵심 기능:
+</p>
+
+<ul>
+  <li>
+    <b>사용자 지정 신뢰 앵커:</b> 앱의 보안 연결에 대해 신뢰할 수 있는 인증 기관(CA)을
+사용자 지정합니다. 예를 들어,
+특정한 자체 서명 인증서를 신뢰하거나
+앱이 신뢰하는 공개 CA 세트를 제한합니다.
+  </li>
+
+  <li>
+    <b>디버그 전용 재정의:</b> 설치된 기반에 위험을 더하지 않고도, 앱의 보안 연결을 안전하게
+디버그할 수 있습니다.
+  </li>
+
+  <li>
+    <b>일반 텍스트 트래픽 옵트아웃:</b> 일반 텍스트 트래픽을 실수로 사용하지
+않도록 앱을 보호합니다.
+  </li>
+
+  <li>
+    <b>인증서 고정:</b> 앱의 안전한 연결을 특정 인증서로
+제한합니다.
+  </li>
+</ul>
+
+
+<h2 id="manifest">보안 구성 파일 추가</h2>
+
+<p>
+  네트워크 보안 구성 기능은 XML 파일을 사용해서
+앱의 설정을 지정합니다. 앱 매니페스트에 이 파일을 가리키는 항목을
+포함해야 합니다. 매니페스트에서 발췌한 다음 코드는
+이 항목을 생성하는 방법을 보여줍니다.
+</p>
+
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?&gt;
+...
+&lt;app ...&gt;
+    &lt;meta-data android:name="android.security.net.config"
+               android:resource="@xml/network_security_config" /&gt;
+    ...
+&lt;/app&gt;
+</pre>
+
+<h2 id="CustomTrust">신뢰할 수 있는 CA 사용자 지정</h2>
+
+<p>
+  앱에서 플랫폼 기본값 대신 사용자 지정 CA 세트를
+신뢰하고자 할 수 있습니다. 가장 일반적인 이유는 다음과 같습니다.
+</p>
+
+<ul>
+  <li>사용자 지정 인증 기관(자체 서명한 인증서,
+국제 기업 CA에서 발급한 인증서 등)을 포함한 호스트에 연결.
+  </li>
+
+  <li>모든 사전 설치된 CA 대신 신뢰할 수 있는 CA로만
+CA 세트를 제한.
+  </li>
+
+  <li>시스템에 포함되지 않은 추가 CA 신뢰.
+  </li>
+</ul>
+
+<p>
+  기본적으로 모든 앱으로부터 안전한(예: TLS, HTTPS) 연결은 사전 설치된 시스템 CA를 신뢰하고,
+API 레벨 23(Android M)
+이하를 대상으로 하는 앱도 사용자가 추가한 CA 스토어를 기본적으로 신뢰합니다. 앱은
+{@code base-config}(앱
+전체 사용자 지정) 또는 {@code domain-config}(도메인별
+사용자 지정)를 사용하여 연결을 사용자 지정할 수 있습니다.
+</p>
+
+
+<h3 id="ConfigCustom">사용자 지정 CA 구성</h3>
+
+<p>
+  자체 서명된
+인증서를 사용하는 호스트나 신뢰할 수 있는 비공개 CA(예: 사내 CA)에서 발급한 SSL 인증서를 사용하는 호스트에
+연결할 경우를 가정합시다.
+</p>
+
+<p>
+  <code>res/xml/network_security_config.xml</code>:
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?&gt;
+&lt;network-security-config&gt;
+    &lt;domain-config&gt;
+        &lt;domain includeSubdomains="true"&gt;example.com&lt;/domain&gt;
+        &lt;trust-anchors&gt;
+            &lt;certificates src="@raw/my_ca"/&gt;
+        &lt;/trust-anchors&gt;
+    &lt;/domain-config&gt;
+&lt;/network-security-config&gt;
+</pre>
+</p>
+
+<p>
+  자체 서명된 인증서 또는 비공개 CA 인증서를 PEM 또는 DER 형식으로
+{@code res/raw/my_ca}에 추가합니다.
+</p>
+
+
+<h3 id="LimitingCas">신뢰할 수 있는 CA 세트 제한</h3>
+
+<p>
+  앱에서 시스템이 신뢰하는 CA 중 일부를 신뢰하지 않으려면, 대신
+신뢰할 CA 세트를 줄여서 지정할 수 있습니다. 이 방법은
+다른 CA에서 발급된 허위 인증서로부터 앱을 보호해줍니다.
+</p>
+
+<p>
+  신뢰할 수 있는 CA 세트를 제한하는 구성은 특정 도메인에서 <a href="#TrustingACustomCa">사용자 지정 CA를 신뢰</a>하는 것과 비슷하지만
+여러 CA가 리소스에서 제공된다는 점이 다릅니다.
+</p>
+
+<p>
+<code>res/xml/network_security_config.xml</code>:
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?&gt;
+&lt;network-security-config&gt;
+    &lt;domain-config&gt;
+        &lt;domain includeSubdomains="true"&gt;secure.example.com&lt;/domain&gt;
+        &lt;domain includeSubdomains="true"&gt;cdn.example.com&lt;/domain&gt;
+        &lt;trust-anchors&gt;
+            &lt;certificates src="@raw/trusted_roots"/&gt;
+        &lt;/trust-anchors&gt;
+    &lt;/domain-config&gt;
+&lt;/network-security-config&gt;
+</pre>
+</p>
+
+<p>
+  신뢰할 수 있는 CA를 PEM 또는 DER 형식으로 {@code res/raw/trusted_roots}에 추가합니다.
+  PEM 형식을 사용할 경우 파일에 PEM 데이터<em>만</em> 포함되고
+다른 추가 텍스트가 포함되어서는 안 됩니다. 또한 한 개가 아니라 여러 개의
+<a href="#certificates"><code>&lt;certificates&gt;</code></a>
+요소를 제공할 수 있습니다.
+</p>
+
+
+<h3 id="TrustingAdditionalCas">
+  추가 CA 신뢰
+</h3>
+
+<p>
+  앱에서 시스템이 신뢰하지 않는 CA를 신뢰하고자 한다면,
+이는 시스템에 해당 CA가 아직 포함되지 않았거나 CA가 Android 시스템에 포함되기 위한
+요구사항을 충족하지 못했기 때문일 수 있습니다. 
+구성에 대해 여러 개의 인증서 소스를 지정하면
+신뢰할 수 있는 CA를 추가할 수 있습니다.
+</p>
+<p>
+<code>res/xml/network_security_config.xml</code>:
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?&gt;
+&lt;network-security-config&gt;
+    &lt;base-config&gt;
+        &lt;trust-anchors&gt;
+            &lt;certificates src="@raw/extracas"/&gt;
+            &lt;certificates src="system"/&gt;
+        &lt;/trust-anchors&gt;
+    &lt;/base-config&gt;
+&lt;/network-security-config&gt;
+</pre>
+</p>
+
+
+<h2 id="TrustingDebugCa">디버그용 CA 구성</h2>
+
+<p>
+  HTTPS로 연결되는 앱을 디버그할 때
+프로덕션 서버에 대해 SSL 인증서가 없는 로컬 개발 서버에
+연결하고자 할 수도 있습니다. 앱 코드를 수정하지 않고
+이 기능을 지원하려면
+{@code debug-overrides}를 사용하여<i><a href="{@docRoot}guide/topics/manifest/application-element.html#debug"></i>android:debuggable</a>
+이 {@code true}일 때만 신뢰할 수 있는 디버그 전용 CA를
+지정할 수 있습니다. 일반적으로 IDE와 빌드 도구는 비 릴리스 빌드에 대해
+이 플래그를 자동으로 설정합니다.
+</p>
+
+<p>
+  보안 예방 조치로 앱 스토어에서
+디버그 가능으로 표시된 앱은 허용하지 않기 때문에
+일반적인 조건 코드보다 안전합니다.
+</p>
+
+<p>
+<code>res/xml/network_security_config.xml</code>:
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?&gt;
+&lt;network-security-config&gt;
+    &lt;debug-overrides&gt;
+        &lt;trust-anchors&gt;
+            &lt;certificates src="@raw/debug_cas"/&gt;
+        &lt;/trust-anchors&gt;
+    &lt;/debug-overrides&gt;
+&lt;/network-security-config&gt;
+</pre>
+</p>
+
+
+<h2 id="UsesCleartextTraffic">일반 텍스트 트래픽 옵트아웃</h2>
+
+<p>
+  보안 연결만 사용하여 대상에 연결하는 애플리케이션은 해당
+대상에 대해 일반 텍스트를 지원하는 기능(HTTPS 대신 암호화되지 않은 HTTP
+사용)을 옵트아웃할 수 있습니다. 이 옵션은
+백엔드 서버 등의 외부 소스가 제공하는 URL의 변경 사항으로 인해
+앱에서 우연히 회귀가 일어나지 않도록 예방합니다.
+  자세한 내용은 {@link android.security.NetworkSecurityPolicy#isCleartextTrafficPermitted
+  NetworkSecurityPolicy.isCleartextTrafficPermitted()}를 참조하세요.
+</p>
+
+<p>
+  예를 들어, 앱에서 적대적 네트워크로부터 민감한 트래픽을 보호하기 위해 {@code
+  secure.example.com}에 대한 연결은 항상 HTTPS를 통해서만 수행되도록
+할 수 있습니다.
+</p>
+
+<p>
+<code>res/xml/network_security_config.xml</code>:
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?&gt;
+&lt;network-security-config&gt;
+    &lt;domain-config usesCleartextTraffic="false"&gt;
+        &lt;domain includeSubdomains="true"&gt;secure.example.com&lt;/domain&gt;
+    &lt;/domain-config&gt;
+&lt;/network-security-config&gt;
+</pre>
+</p>
+
+
+<h2 id="CertificatePinning">인증서 고정</h2>
+
+<p>
+  일반적으로 앱은 모든 사전 설치된 CA를 신뢰합니다. 이러한 CA에서
+허위 인증서를 발급한다면 앱이 MiTM
+공격에 노출될 위험이 있습니다. 일부 앱은 신뢰하는 CA 세트를 제한하거나
+인증서를 고정하는 방식으로 허용하는 인증서 세트를 제한합니다.
+</p>
+
+<p>
+  인증서 고정은
+공개 키 해시(X.509인증서의 SubjectPublicKeyInfo)로 인증서 세트를 제공하는 방식으로 수행됩니다. 그러면 인증서 체인에
+하나 이상의 고정된 공개 키가 있어야만
+인증서 체인이 유효합니다.
+</p>
+
+<p>
+  인증서 고정을 사용할 때는 언제나 백업 키를 포함해야
+새로운 키로 강제 전환하거나 CA를 변경할 경우(
+CA 인증서 또는 해당 CA의 중간 CA에 고정할 경우)
+앱 연결이 영향을 받지 않습니다. 그렇지 않으면
+연결을 복구하기 위해 앱에 업데이트를 내보내야 합니다.
+</p>
+
+<p>
+  또한, 고정을 수행하지 않게 되면 핀 만료 시간을
+설정할 수 있습니다. 이는 업데이트되지 않은 앱에서
+연결 문제를 예방해 줍니다. 그러나 핀에 만료 시간을 설정하면
+고정 우회가 가능할 수도 있습니다.
+</p>
+
+<p>
+<code>res/xml/network_security_config.xml</code>:
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?&gt;
+&lt;network-security-config&gt;
+    &lt;domain-config&gt;
+        &lt;domain includeSubdomains="true"&gt;example.com&lt;/domain&gt;
+        &lt;pin-set expiration="2018-01-01"&gt;
+            &lt;pin digest="SHA-256"&gt;7HIpactkIAq2Y49orFOOQKurWxmmSFZhBCoQYcRhJ3Y=&lt;/pin&gt;
+            &lt;!-- backup pin --&gt
+            &lt;pin digest="SHA-256"&gt;fwza0LRMXouZHRC8Ei+4PyuldPDcf3UKgO/04cDM1oE=&lt;/pin&gt;
+    &lt;/domain-config&gt;
+&lt;/network-security-config&gt;
+</pre>
+</p>
+
+
+<h2 id="ConfigInheritance">구성 상속 동작</h2>
+
+<p>
+  특정 구성에서 설정되지 않은 값을 상속합니다. 이 동작은 구성 파일을 읽을 수 있게 유지하면서도
+더욱 복잡한 구성이 가능합니다.
+</p>
+
+<p>
+  특정 항목에 값이 설정되지 않았다면
+그 다음으로 일반적인 항목의 값이 사용됩니다. {@code domain-config}에서 설정되지 않은 값은
+중첩될 경우 상위 {@code domain-config}에서 가져오고 그렇지 않을 경우 {@code
+  base-config}에서 가져옵니다. {@code base-config}에서 설정되지 않은 값은
+플랫폼 기본 값을 사용합니다.
+</p>
+
+<p>
+  예를 들어, {@code
+  example.com}의 하위 도메인에 대한 모든 연결은 사용자 지정 CA 세트를 사용해야 합니다. 또한, 이러한 도메인에 대한 일반 텍스트 트래픽은
+{@code
+  secure.example.com}에 연결할 때를 <em>제외</em>하고 허용됩니다. {@code example.com} 구성 내부에 {@code
+  secure.example.com} 구성을 중첩하면
+{@code trust-anchors}를 복제하지 않아도 됩니다.
+</p>
+
+<p>
+<code>res/xml/network_security_config.xml</code>:
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?&gt;
+&lt;network-security-config&gt;
+    &lt;domain-config&gt;
+        &lt;domain includeSubdomains="true"&gt;example.com&lt;/domain&gt;
+        &lt;trust-anchors&gt;
+            &lt;certificates src="@raw/my_ca"/&gt;
+        &lt;/trust-anchors&gt;
+        &lt;domain-config cleartextTrafficPermitted="false"&gt;
+            &lt;domain includeSubdomains="true"&gt;secure.example.com&lt;/domain&gt;
+        &lt;/domain-config&gt;
+    &lt;/domain-config&gt;
+&lt;/network-security-config&gt;
+</pre>
+</p>
+
+
+<h2 id="FileFormat">구성 파일 형식</h2>
+
+<p>
+  네트워크 보안 구성 기능은 XML 파일 형식을 사용합니다.
+  파일의 전반적 구조는 다음 코드 샘플에 나타나 있습니다.
+</p>
+
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?&gt;
+&lt;network-security-config&gt;
+    &lt;base-config&gt;
+        &lt;trust-anchors&gt;
+            &lt;certificates src="..."/&gt;
+            ...
+        &lt;/trust-anchors&gt;
+    &lt;/base-config&gt;
+
+    &lt;domain-config&gt;
+        &lt;domain&gt;android.com&lt;/domain&gt;
+        ...
+        &lt;trust-anchors&gt;
+            &lt;certificates src="..."/&gt;
+            ...
+        &lt;/trust-anchors&gt;
+        &lt;pin-set&gt;
+            &lt;pin digest="..."&gt;...&lt;/pin&gt;
+            ...
+        &lt;/pin-set&gt;
+    &lt;/domain-config&gt;
+    ...
+    &lt;debug-overrides&gt;
+        &lt;trust-anchors&gt;
+            &lt;certificates src="..."/&gt;
+            ...
+        &lt;/trust-anchors&gt;
+    &lt;/debug-overrides&gt;
+&lt;/network-security-config&gt;
+</pre>
+
+<p>
+  다음 섹션에서는 이 파일 형식의 구문과
+기타 세부 정보를 설명합니다.
+</p>
+
+<h3 id="network-security-config">
+  &lt;network-security-config&gt;
+</h3>
+
+<dl class="xml">
+  <dt>
+    다음을 포함할 수 있습니다.
+  </dt>
+
+  <dd>
+    <code><a href="#base-config">&lt;base-config&gt;</a></code> 0 또는 1개<br>
+    <code><a href=
+    "#domain-config">&lt;domain-config&gt;</a></code> 임의의 개수<br>
+    <code><a href="#debug-overrides">&lt;debug-overrides&gt;</a></code> 0 또는 1개
+  </dd>
+</dl>
+
+<h3 id="base-config">
+  &lt;base-config&gt;
+</h3>
+
+<dl class="xml">
+  <dt>
+    구문:
+  </dt>
+</dl>
+
+<pre class="stx">
+&lt;base-config <a href=
+"#usesCleartextTraffic">usesCleartextTraffic</a>=["true" | "false"]&gt;
+    ...
+&lt;/base-config&gt;
+</pre>
+<dl class="xml">
+  <dt>
+    다음을 포함할 수 있습니다.
+  </dt>
+
+  <dd>
+    <code><a href="#trust-anchors">&lt;trust-anchors&gt;</a></code>
+  </dd>
+
+  <dt>
+    설명:
+  </dt>
+
+  <dd>
+    대상이
+<a href="#domain-config"><code>domain-config</code></a>에 포함되지 않는 모든 연결에서 사용하는 기본 구성.
+
+<p>
+  설정되지 않은 값은 플랫폼 기본값을 사용합니다. API 레벨 24 이상을 대상으로 하는
+앱의 기본 구성:
+</p>
+
+<pre>
+&lt;base-config usesCleartextTraffic="true"&gt;
+    &lt;trust-anchors&gt;
+        &lt;certificates src="system" /&gt;
+    &lt;/trust-anchors&gt;
+&lt;/base-config&gt;
+</pre>
+API 레벨 23 이하를 대상으로 하는 앱의 기본 구성:
+<pre>
+&lt;base-config usesCleartextTraffic="true"&gt;
+    &lt;trust-anchors&gt;
+        &lt;certificates src="system" /&gt;
+        &lt;certificates src="user" /&gt;
+    &lt;/trust-anchors&gt;
+&lt;/base-config&gt;
+</pre>
+
+  </dd>
+</dl>
+
+<h3 id="domain-config">&lt;domain-config&gt;</h3>
+<dl class="xml">
+<dt>구문:</dt>
+<dd>
+<pre class="stx">&lt;domain-config <a href="#usesCleartextTraffic">usesCleartextTraffic</a>=["true" | "false"]&gt;
+    ...
+&lt;/domain-config&gt;</pre>
+</dd>
+
+<dt>다음을 포함할 수 있습니다.</dt>
+
+<dd>
+<code><a href="#domain">&lt;domain&gt;</a></code> 1개 이상
+<br/><code><a href="#trust-anchors">&lt;trust-anchors&gt;</a></code> 0 또는 1개
+<br/><code><a href="#pin-set">&lt;pin-set&gt;</code></a> 0 또는 1개
+<br/>중첩된 <code>&lt;domain-config&gt;</code> 임의의 개수</dd>
+
+<dt>설명</dt>
+<dd>{@code domain} 요소에서 정의한 특정 대상에 대한 연결에 사용되는 구성.
+
+<p>여러 {@code domain-config} 요소에서 대상을 포함하는 경우 가장 구체적인(긴)
+일치 도메인이 포함된 구성이 사용됩니다.</p></dd>
+</dl>
+
+
+<h3 id="domain">&lt;domain&gt;</h3>
+
+<dl class="xml">
+  <dt>
+    구문:
+  </dt>
+
+  <dd>
+    <pre class="stx">
+&lt;domain includeSubdomains=["true" | "false"]&gt;example.com&lt;/domain&gt;
+</pre>
+  </dd>
+
+  <dt>
+    특성:
+  </dt>
+
+  <dd>
+    <dl class="attr">
+      <dt>
+        {@code includeSubdomains}
+      </dt>
+
+      <dd>
+        {@code "true"}인 경우 이 도메인 규칙이 도메인 및 모든 하위 도메인(하위 도메인의 하위 도메인 포함)과
+일치합니다. 그렇지 않을 경우 이 규칙은
+정확한 일치에만 적용됩니다.
+      </dd>
+    </dl>
+  </dd>
+
+  <dt>
+    설명:
+  </dt>
+</dl>
+
+<h3 id="debug-overrides">&lt;debug-overrides&gt;</h3>
+
+<dl class="xml">
+  <dt>
+    구문:
+  </dt>
+
+  <dd>
+    <pre class="stx">
+&lt;debug-overrides&gt;
+    ...
+&lt;/debug-overrides&gt;
+</pre>
+  </dd>
+
+  <dt>
+    다음을 포함할 수 있습니다.
+  </dt>
+
+  <dd>
+    <code><a href="#trust-anchors">&lt;trust-anchors&gt;</a></code> 0 또는 1개
+  </dd>
+
+  <dt>
+    설명:
+  </dt>
+
+  <dd>
+    <a href="{@docRoot}guide/topics/manifest/application-element.html#debug">android:debuggable</a>
+가 {@code "true"}일 때 재정의를 적용합니다. 일반적으로
+IDE와 빌드 도구에서 생성한 비 릴리스 빌드에 해당합니다. {@code
+    debug-overrides}에서 지정된 신뢰 앵커를 모든 다른 구성에 추가하고,
+서버의 인증서 체인이 이러한
+디버그 전용 신뢰 앵커 중 하나를 사용하면 고정을 수행하지 않습니다. <a href="{@docRoot}guide/topics/manifest/application-element.html#debug">android:debuggable</a>
+이 {@code "false"}이면 이 섹션은 완전히 무시합니다.
+  </dd>
+</dl>
+
+<h3 id="trust-anchors">&lt;trust-anchors&gt;</h3>
+<dl class="xml">
+  <dt>
+    구문:
+  </dt>
+
+  <dd>
+    <pre class="stx">
+&lt;trust-anchors&gt;
+...
+&lt;/trust-anchors&gt;
+</pre>
+  </dd>
+
+  <dt>
+    다음을 포함할 수 있습니다.
+  </dt>
+
+  <dd>
+    <code><a href="#certificates">&lt;certificates&gt;</a></code> 임의의 개수
+  </dd>
+
+  <dt>
+    설명:
+  </dt>
+
+  <dd>
+    보안 연결에 대한 신뢰 앵커 세트.
+  </dd>
+</dl>
+
+
+<h3 id="certificates">&lt;certificates&gt;</h3>
+<dl class="xml">
+<dt>구문:</dt>
+<dd><pre class="stx">&lt;certificates src=["system" | "user" | "<i>raw resource</i>"]
+              overridePins=["true" | "false"] /&gt;
+</pre></dd>
+<dt>설명:</dt>
+<dd>{@code trust-anchors} 요소에 대한 X.509 인증서 세트.</dd>
+
+<dt>특성:</dt>
+<dd><dl class="attr">
+<dt>{@code src}</dt>
+<dd>
+CA 인증서 소스는 다음 중 하나가 될 수 있습니다.
+<ul>
+  <li>X.509 인증서를 포함한 파일을 가리키는 원시 리소스 ID.
+  인증서는 DER 또는 PEM 형식으로 암호화해야 합니다. PEM 인증서의 경우,
+파일에는 코멘트와 같은 PEM이 아닌 추가 데이터가
+포함되어서는 <em>안 됩니다</em>.
+  </li>
+
+  <li>사전 설치된 시스템 CA 인증서의 {@code "system"}
+  </li>
+
+  <li>사용자가 추가한 CA 인증서의 {@code "user"}
+  </li>
+</ul>
+</dd>
+
+<dt>{@code overridePins}</dt>
+<dd>
+  <p>
+    이 소스의 CA가 인증서 고정을 우회할지 지정합니다. {@code
+    "true"}이고 인증서 체인이 이 소스의 CA 중 하나를 통해 묶일 경우
+고정을 수행하지 않습니다. 디버그 CA 또는
+사용자가 앱의 보안 트래픽을 MiTM하도록 지원할 때 유용합니다.
+  </p>
+
+  <p>
+    {@code debug-overrides}
+요소에서 지정되지 않은 경우 기본값은 {@code "false"}입니다. 지정된 경우 기본값은 {@code "true"}입니다.
+  </p>
+</dd>
+</dl>
+</dd>
+
+
+<h3 id="pin-set">&lt;pin-set&gt;</h3>
+
+<dl class="xml">
+  <dt>
+    구문:
+  </dt>
+
+  <dd>
+<pre class="stx">
+&lt;pin-set expiration="date"&gt;
+...
+&lt;/pin-set&gt;
+</pre>
+  </dd>
+
+  <dt>
+    다음을 포함할 수 있습니다.
+  </dt>
+
+  <dd>
+    <code><a href="#pin">&lt;pin&gt;</a></code> 임의의 개수
+  </dd>
+
+  <dt>
+    설명:
+  </dt>
+
+  <dd>
+    공개 키 핀 세트. 신뢰할 수 있는 보안 연결은
+신뢰 체인의 공개 키 중 하나가 핀 세트에 포함되어야 합니다. 핀 형식은
+<code><a href="#pin">&lt;pin&gt;</a></code>를 참조하세요.
+  </dd>
+
+  <dt>
+    특성:
+  </dt>
+
+  <dd>
+    <dl class="attr">
+      <dt>
+        {@code expiration}
+      </dt>
+
+      <dd>
+        핀 만료 당일과 그 이후의 {@code yyyy-MM-dd} 형식 날짜로,
+핀이 비활성화됩니다. 이 특성이 설정되지 않으면
+핀이 만료되지 않습니다.
+        <p>
+          만료는 사용자가 앱 업데이트를 비활성화하는 등과 같이
+핀 세트가 업데이트되지 않는 앱에서
+연결 문제를 예방하는 데 유용합니다.
+        </p>
+      </dd>
+    </dl>
+  </dd>
+</dl>
+
+<h3 id="pin">&lt;pin&gt;</h3>
+<dl class="xml">
+  <dt>
+    구문:
+  </dt>
+
+  <dd>
+<pre class="stx">
+&lt;pin digest=["SHA-256"]&gt;base64 encoded digest of X.509
+    SubjectPublicKeyInfo (SPKI)&lt;/pin&gt;
+</pre>
+  </dd>
+
+  <dt>
+    특성:
+  </dt>
+
+  <dd>
+    <dl class="attr">
+      <dt>
+        {@code digest}
+      </dt>
+
+      <dd>
+        핀을 생성하는 데 사용된 다이제스트 알고리즘. 현재
+{@code "SHA-256"}만 지원됩니다.
+      </dd>
+    </dl>
+  </dd>
+</dl>
diff --git a/docs/html-intl/intl/ko/preview/features/tv-recording-api.jd b/docs/html-intl/intl/ko/preview/features/tv-recording-api.jd
new file mode 100644
index 0000000..73bba1f
--- /dev/null
+++ b/docs/html-intl/intl/ko/preview/features/tv-recording-api.jd
@@ -0,0 +1,120 @@
+page.title=TV 녹화
+page.keywords=preview,sdk,tv,recording
+page.tags=androidn
+
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+  <h2>이 문서의 내용</h2>
+  <ol>
+    <li><a href="#supporting">녹화 지원 나타내기</a></li>
+    <li><a href="#recording">세션 녹화</a></li>
+    <li><a href="#errors">녹화 오류 처리</a></li>
+    <li><a href="#sessions">녹화된 세션 관리</a></li>
+    <li><a href="#best">모범 사례</a></li>
+  </ol>
+</div>
+</div>
+
+<p>TV 입력 서비스를 이용하면 
+타임 시프팅 API를 통해 채널 재생을 일시 정지했다가 다시 시작할 수 있습니다. Android N에서는 사용자가 여러 개의 녹화된 세션을 저장할 수 있도록 함으로써
+타임 시프팅을 확장합니다.</p>
+
+<p>사용자는 미리 녹화를 예약하거나 프로그램을 보면서 녹화를
+시작할 수 있습니다. 시스템이 녹화물을 저장하면 사용자는 시스템 TV 앱을 사용하여
+녹화물을 탐색, 관리, 재생할 수 있습니다.</p>
+
+<p>TV 입력 서비스에 녹화 기능을 제공하고 싶다면
+앱이 녹화를 지원한다는 것을 시스템에 나타내고
+프로그램을 녹화하는 기능을 구현하고, 녹화 중 발생하는 오류를 처리 및 전달하고,
+녹화된 세션을 관리해야 합니다.</p>
+
+<h2 id="supporting">녹화 지원 나타내기</h2>
+
+<p>TV 입력 서비스가 녹화를 지원한다는 것을 시스템에 알리려면
+다음 절차를 따르세요.</p>
+
+<ol>
+<li><code>TvInputService.onCreate()</code> 메서드에서 <code>TvInputInfo.Builder</code>
+클래스를 사용하여 
+<code>TvInputInfo</code> 객체를 생성합니다.</li>
+<li>새로운 <code>TvInputInfo</code> 객체를 생성할 때 <code>build()</code> 를 호출하기 전에
+<code>setCanRecord(true)</code>를 호출하여
+서비스가 녹화를 지원한다는 것을 나타냅니다.</li>
+<li>
+<code>TvInputService.updateTvInputInfo()</code>를 호출하여 시스템에 <code>TvInputInfo</code> 객체를 등록합니다.</li>
+</ol>
+
+<h2 id="recording">세션 녹화</h2>
+
+<p>TV 입력 서비스가 녹화 기능을 지원하도록 등록한 후,
+시스템은 앱의 녹화 구현에 액세스해야 할 때
+<code>TvInputService.onCreateRecordingSession()</code>을 호출합니다.
+ 자체적인 
+<code>TvInputService.RecordingSession</code> 서브클래스를 구현하고
+<code>onCreateRecordingSession()</code> 콜백이
+실행되면 이를 반환합니다. 이 서브클래스는 정확한 채널 데이터로 전환하고,
+요청된 데이터를 녹화하고, 녹화 상태와 오류를 시스템에
+전송하는 역할을 담당합니다.</p>
+
+<p>시스템이 <code>RecordingSession.onTune()</code>을 호출하면
+채널 URI에 전달되고, URI가 지정하는 채널에 맞춰 조정됩니다. 
+<code>notifyTuned()</code>를 호출해서 앱이 원하는 채널에 맞춰졌음을 시스템에 알리거나
+앱이 적절한 채널에 맞출 수 없으면
+<code>notifyError()</code>를 호출합니다.</p>
+
+<p>이어서 시스템이 <code>RecordingSession.onStartRecording()</code>
+콜백을 호출합니다. 앱이 즉시 녹화를 시작해야 합니다. 시스템이 이 콜백을 호출하면,
+녹화될 프로그램에 관한 정보가 포함된 URI를 제공할 수 있습니다.
+ 녹화가 완료되면 이
+데이터를 <code>RecordedPrograms</code> 데이터 테이블에 복사해야 합니다.</p>
+
+<p>마지막으로 시스템이 <code>RecordingSession.onStopRecording()</code>을 호출합니다.
+이 시점에서 앱이 즉시 녹화를 중단해야 합니다. 또한,
+<code>RecordedPrograms</code> 테이블에서 항목을 생성해야 합니다. 이 항목에는
+<code>RecordedPrograms.COLUMN_RECORDING_DATA_URI</code> 열의 녹화된 세션 데이터 URI,
+최초 
+<code>onStartRecording()</code> 호출에서 시스템이 제공한 프로그램 정보가 포함됩니다.
+</p>
+
+<p><code>RecordedPrograms</code> 테이블에 액세스하는 자세한 방법은
+<a href="#sessions">녹화된 세션 관리</a>를 참조하세요.</p>
+
+<h2 id="errors">녹화 오류 처리</h2>
+
+<p>녹화 중에 오류가 발생해서 녹화된 데이터 렌더링을 사용할 수 없을 경우,
+<code>RecordingSession.notifyError()</code>를 호출하여 시스템에 알립니다.
+마찬가지로 녹화 세션이 생성된 이후 <code>notifyError()</code>를 호출하여
+앱이 더 이상 세션을 녹화하지 못한다는 것을 시스템에 알릴 수 있습니다.</p>
+
+<p>녹화 중에 오류가 발생했지만
+사용자에게 재생 가능한 부분 녹화물을 제공하고 싶다면
+<code>RecordingSession.notifyRecordingStopped()</code>를 호출하여 시스템이
+부분 세션을 사용할 수 있게 합니다.</p>
+
+<h2 id="sessions">녹화된 세션 관리</h2>
+
+<p>시스템은 <code>TvContract.RecordedPrograms</code>
+콘텐츠 제공자 테이블에 모든 녹화 가능한 채널 앱에서 녹화된
+모든 세션에 관한 정보를 보관합니다. 이 정보는
+<code>RecordedPrograms.Uri</code> 콘텐츠 URI를 통해 액세스할 수 있습니다. 콘텐츠 제공자 API를 사용하여
+이 테이블의 항목을 읽고, 추가하고, 삭제합니다.</p>
+
+<p>콘텐츠 제공자 데이터에 관한 자세한 정보는
+<a href="{@docRoot}guide/topics/providers/content-provider-basics.html">
+콘텐츠 제공자 기본 정보</a>를 참조하세요.</p>
+
+<h2 id="best">모범 사례</h2>
+
+<p>TV 기기는 저장소가 제한될 수 있으므로
+녹화된 세션을 저장할 저장소를 할당할 때는 신중히 판단하세요. 녹화된 세션을 저장할 공간이 부족할 때는
+<code>RecordingCallback.onError(RECORDING_ERROR_INSUFFICIENT_SPACE)</code>를 사용하세요.
+</p>
+
+<p>사용자가 녹화를 시작하면 최대한 빨리 데이터 녹화를
+시작해야 합니다. 이를 용이하게 하려면
+시스템이
+<code>onCreateRecordingSession()</code> 콜백을 호출할 때 저장소 액세스 및 할당 등과 같이 선행 시간이 많이 걸리는 작업을 완료합니다. 이렇게 하면
+<code>onStartRecording()</code> 콜백이
+실행될 때 즉시 녹화를 시작할 수 있습니다.</p>
diff --git a/docs/html-intl/intl/ko/preview/index.jd b/docs/html-intl/intl/ko/preview/index.jd
new file mode 100644
index 0000000..eaecb5b
--- /dev/null
+++ b/docs/html-intl/intl/ko/preview/index.jd
@@ -0,0 +1,120 @@
+page.title=Android N Developer Preview
+page.tags="preview","developer"
+meta.tags="프리뷰", "android"
+fullpage=true
+forcelocalnav=true
+header.hide=1
+footer.hide=1
+@jd:body
+
+<script>
+  $(document).ready(function() {
+    if (useUpdatedTemplates) {
+      $("#useUpdatedTemplates").css("display","block");
+    } else {
+      $("#useOldTemplates").css("display","block");
+    }
+  })
+</script>
+
+<section class="dac-expand dac-hero dac-light" style="background-color:#B2DFDB">
+  <div class="wrap" style="max-width:1100px;margin-top:0">
+    <div class="cols dac-hero-content" style="padding-bottom:1em;">
+
+      <div class="col-7of16 col-push-9of16" style="padding-left:2em">
+        <h1 class="dac-hero-title">Android N Developer Preview</h1>
+        <p class="dac-hero-description">
+          Android N을 맞이할 준비를 하세요!
+          Nexus와 다른 기기에서 <strong>앱을 테스트</strong>하세요. 새로운 시스템
+          동작을 지원하여 <strong>전력과 메모리를 절약</strong>하세요.
+          <strong>다중 창 UI</strong>,
+          <strong>직접 회신 알림</strong> 등으로 앱을 확장하세요.
+        </p>
+
+        <a class="dac-hero-cta" href="{@docRoot}preview/overview.html">
+          <span class="dac-sprite dac-auto-chevron"></span>
+          시작하기
+        </a><!--<br>
+        <a class="dac-hero-cta" href="{@docRoot}preview/support.html">
+          <span class="dac-sprite dac-auto-chevron"></span>
+          Update to Android N (final SDK)
+        </a><br>-->
+      </div>
+      <div class="col-9of16 col-pull-7of16 dac-hero-figure" style="margin-top:1.5em;padding-right:1.5em;">
+        <img class="dac-hero-image" src="{@docRoot}images/home/n-preview-hero.png" srcset="{@docRoot}images/home/n-preview-hero.png 1x,
+             {@docRoot}images/home/n-preview-hero_2x.png 2x">
+      </div>
+    </div>
+    <div class="dac-section dac-small">
+      <div class="resource-widget resource-flow-layout col-16"
+           data-query="collection:preview/landing/resources"
+           data-cardSizes="6x2"
+           data-maxResults="6"></div>
+    </div>
+  </div>
+</section>
+
+<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="#build-apps">
+      <i class="dac-sprite dac-arrow-down-gray"></i>
+    </a>
+    <ul class="dac-actions">
+      <li class="dac-action">
+        <a class="dac-action-link" href="https://developer.android.com/preview/bug">
+          <i class="dac-action-sprite dac-sprite dac-auto-chevron-large"></i>
+          문제 보고
+        </a>
+      </li>
+      <li class="dac-action">
+        <a class="dac-action-link" href="{@docRoot}preview/support.html">
+          <i class="dac-action-sprite dac-sprite dac-auto-chevron-large"></i>
+          릴리스 노트 보기
+        </a>
+      </li>
+      <li class="dac-action">
+        <a class="dac-action-link" href="{@docRoot}preview/dev-community">
+          <i class="dac-action-sprite dac-sprite dac-auto-chevron-large"></i>
+          개발자 커뮤니티 가입
+        </a>
+      </li>
+    </ul>
+  </div><!-- end .wrap -->
+</div><!-- end .dac-actions -->
+
+<div id="useOldTemplates" style="display:none;color:black" class="actions-bar dac-expand dac-invert">
+  <div class="wrap dac-offset-parent">
+
+    <div class="actions">
+      <div><a href="https://developer.android.com/preview/bug">
+        <span class="dac-sprite dac-auto-chevron-large"></span>
+        문제 보고
+      </a></div>
+      <div><a href="{@docRoot}preview/support.html">
+        <span class="dac-sprite dac-auto-chevron-large"></span>
+        릴리스 노트 보기
+        </a></div>
+      <div><a href="{@docRoot}preview/dev-community">
+        <span class="dac-sprite dac-auto-chevron-large"></span>
+        개발자 커뮤니티 가입
+        </a></div>
+    </div><!-- end .actions -->
+  </div><!-- end .wrap -->
+</div>
+
+<section class="dac-section dac-light"><div class="wrap">
+  <h1 class="dac-section-title">리소스</h1>
+  <div class="dac-section-subtitle">
+    앱을 Android N에서 사용할 수 있도록 준비하는 데 유용한 중요 정보입니다.
+  </div>
+
+  <div class="resource-widget resource-flow-layout col-16"
+       data-query="collection:preview/landing/more"
+       data-cardSizes="6x6"
+       data-items-per-page="6"
+       data-maxResults="15"
+       data-initial-results="6"></div>
+
+  </div>
+</section>
+
diff --git a/docs/html-intl/intl/ko/preview/j8-jack.jd b/docs/html-intl/intl/ko/preview/j8-jack.jd
new file mode 100644
index 0000000..67738b8
--- /dev/null
+++ b/docs/html-intl/intl/ko/preview/j8-jack.jd
@@ -0,0 +1,183 @@
+page.title=Java 8 언어 기능
+page.keywords="android N", "Java 8", "Jack"
+@jd:body
+
+<div id="qv-wrapper">
+  <div id="qv">
+    <ol>
+      <li>
+        <a href="#supported-features">지원되는 Java 8 언어 기능 및 API</a>
+      </li>
+      <li>
+        <a href="#configuration">Java 8 기능 및 Jack 툴체인 활성화</a>
+      </li>
+    </ol>
+  </div>
+</div>
+
+<p>Android N은 Java 8 언어 기능을 지원합니다.
+Java 8 언어 기능은 Android N을 대상으로 하는 앱을 개발할 때 사용할 수 있습니다.
+이 페이지에서는 Android N Preview에서 지원되는 새로운 언어 기능과,
+프로젝트를 적절히 설정하여 언어 기능을 사용하는 방법,
+발생할 수도 있는 알려진 문제를 설명합니다.
+</p>
+
+<p>이 기능을 사용하려면 Android
+Studio 2.1(프리뷰)와 Android N Preview SDK를 다운로드하고 설정해야 합니다. 여기에는 필수
+Jack 툴체인과 업데이트된 Gradle용 Android 플러그인이 포함됩니다. 아직
+Android N Preview SDK를 설치하지 않았다면 <a href="{@docRoot}preview/setup-sdk.html">Android N용 개발 설정</a>을 참조하세요.</p>
+
+
+
+<p class="note">
+  <strong>참고:</strong> 새로운 Java 8 언어 기능은
+Android N 플랫폼을 대상으로 하는 앱 개발에 필요한 요구 사항은 아닙니다.
+Java 8 언어 기능으로 코드를 작성하고 싶지 않다면,
+프로젝트의 소스와 대상 호환성 값을 Java 7로 설정할 수 있지만
+Android N 플랫폼용으로 구축하려면 JDK 8로 컴파일해야 합니다.
+</p>
+
+<h2 id="supported-features">
+  지원되는 Java 8 언어 기능 및 API
+</h2>
+
+<p>
+  Android는 현재 모든 Java 8 언어 기능을 지원하지 않습니다. 그러나 현재 다음 기능은
+Android N Preview를 대상으로 하는
+앱을 개발할 때 이용할 수 있습니다.
+</p>
+
+<ul>
+  <li>
+    <a class="external-link" href="https://docs.oracle.com/javase/tutorial/java/IandI/defaultmethods.html">기본
+및 정적 인터페이스 메서드</a>
+  </li>
+
+  <li>
+    <a class="external-link" href="https://docs.oracle.com/javase/tutorial/java/javaOO/lambdaexpressions.html">
+    람다 식</a>
+  </li>
+
+  <li>
+    <a class="external-link" href="https://docs.oracle.com/javase/tutorial/java/annotations/repeating.html">반복 가능한
+    주석</a>
+  </li>
+</ul>
+
+
+<p>
+  또한, 다음 Java 8 언어 기능 API를 사용할 수 있습니다.
+</p>
+
+<ul>
+  <li>Reflection 및 언어 관련 API:
+  </li>
+
+  <li style="list-style: none; display: inline">
+    <ul>
+      <li>{@code java.lang.FunctionalInterface}
+      </li>
+
+      <li>{@code java.lang.annotation.Repeatable}
+      </li>
+
+      <li>{@code java.lang.reflect.Method.isDefault()}
+      </li>
+
+      <li>반복 가능한 주석과 관련된 Reflection API
+      예: {@code AnnotatedElement.getAnnotationsByType(Class)}
+      </li>
+    </ul>
+  </li>
+  <li>Utility API:
+  </li>
+
+  <li style="list-style: none; display: inline">
+    <ul>
+      <li>{@code java.util.function}
+      </li>
+    </ul>
+  </li>
+</ul>
+
+<p class="note">
+  <strong>참고:</strong> Android N은 익명 클래스에 대한 람다 식의 구현을
+기반으로 합니다. 이 방식을 사용하면
+이전 버전과 호환되고 이전 버전의 Android에서 실행할 수 있습니다.
+이전 버전에서 람다 식을 테스트하려면 {@code
+  build.gradle} 파일에서 {@code compileSdkVersion}과 {@code
+  targetSdkVersion}을 23 이하로 설정하십시오.
+</p>
+
+<h2 id="configuration">
+  Java 8 기능 및 Jack 툴체인 활성화
+</h2>
+
+<p>
+  새로운 Java 8 언어 기능을 사용하려면
+새로운 <a class="external-link" href="https://source.android.com/source/jack.html">Jack 툴체인</a>을 사용해야 합니다. 이 새로운
+Android 툴체인은 Java 언어 소스를 Android에서 읽을 수 있는 Dex
+바이트코드로 컴파일하고, 자체 {@code .jack} 라이브러리 형식이 있으며, 단일 도구로는 가장 많은 툴체인
+기능(리패키징, 축소, 난독화, 멀티덱스)을
+제공합니다.
+</p>
+
+<p>다음은 Android DEX 파일을 빌드하는 데 사용하는 2개의 툴체인을 비교한 것입니다.</p>
+<ul>
+  <li>레거시 javac 툴체인:<br>
+  <b>javac</b> ({@code .java} --&gt; {@code .class}) --&gt; <b>dx</b> ({@code
+  .class} --&gt; {@code .dex})
+  </li>
+
+  <li>새로운 Jack 툴체인:<br>
+  <b>Jack</b> ({@code .java} --&gt; {@code .jack} --&gt; {@code .dex})
+  </li>
+</ul>
+
+<h3>
+  Gradle 구성
+</h3>
+
+<p>
+  프로젝트에서 Java 8 언어 기능과 Jack을 활성화하려면
+모듈별 {@code build.gradle} 파일에 다음을 입력합니다.
+</p>
+
+<pre>
+android {
+  ...
+  defaultConfig {
+    ...
+    jackOptions {
+      enabled true
+    }
+  }
+  compileOptions {
+    sourceCompatibility JavaVersion.VERSION_1_8
+    targetCompatibility JavaVersion.VERSION_1_8
+  }
+}
+</pre>
+
+<h3>
+  알려진 문제
+</h3>
+
+<p>
+  Android Studio 2.0(베타)에 도입된 Instant Run은
+현재 Jack과 호환되며 새로운 툴체인을 사용하는 동안 비활성화됩니다.
+</p>
+
+<p>Jack이 앱을 컴파일할 때 중간 클래스 파일을 생성하지 않으므로
+이런 파일에 의존하는 도구는 현재 Jack과 호환되지 않습니다. 이러한 도구의 예시는
+다음과 같습니다.</p>
+
+<ul>
+  <li>클래스 파일에 적용되는 Lint 탐지기
+  </li>
+
+  <li>앱의 클래스 파일이 필요한 도구와 라이브러리(예: JaCoCo
+ 및 Mockito)</li>
+</ul>
+
+<p>Jack을 사용하는 동안 다른 문제를 발견하면 <a href="http://tools.android.com/filing-bugs">버그를 보고해주세요</a>.</p>
\ No newline at end of file
diff --git a/docs/html-intl/intl/ko/preview/overview.jd b/docs/html-intl/intl/ko/preview/overview.jd
new file mode 100644
index 0000000..a7ee3d3
--- /dev/null
+++ b/docs/html-intl/intl/ko/preview/overview.jd
@@ -0,0 +1,440 @@
+page.title=프로그램 개요
+page.metaDescription=앱에서 차기 버전의 Android를 사용할 수 있도록 준비하세요.
+page.image=images/cards/card-n-overview_2x.png
+meta.tags="프리뷰", "developer", "android"
+page.tags="preview", "developer", "android"
+
+@jd:body
+<!--
+<div class="cols" style=
+"background-color:#f2daf5; padding: 5px 0;margin-bottom:1em; text-align:center;">
+<h3>
+    Developer Preview 3 is now available
+  </h3>
+  <p>Includes final SDK and near-final system images</p>
+   <div style="margin:auto 1em">
+ <ul class="dac-section-links">
+    <li class="dac-section-link">
+      <a href="{@docRoot}preview/support.html#preview3-notes">
+      <span class="dac-sprite dac-auto-chevron"></span>
+      Read the Notes</a>
+    </li>
+
+    <li class="dac-section-link">
+      <a href="{@docRoot}preview/support.html#preview3-get">
+      <span class="dac-sprite dac-auto-chevron"></span>
+      Get the Update</a>
+    </li>
+
+    <li class="dac-section-link">
+      <a href="https://code.google.com/p/android-developer-preview/">
+      <span class="dac-sprite dac-auto-chevron"></span>
+      Report Issues</a>
+    </li>
+  </ul>
+  </div>
+</div>
+-->
+
+<p>
+  <strong>Android N Developer Preview</strong>에 오신 것을 환영합니다. 이 프로그램은
+차기 버전의 Android에 대해 앱을 테스트하고 최적화하는 데 필요한
+모든 것을 제공합니다. 이 프로그램은 무료이고,
+N Developer Preview 도구를 다운로드하면 바로 시작할 수 있습니다.
+</p>
+
+
+
+
+
+
+
+<div style="background-color:#eceff1;padding:1em;">
+<div class="wrap">
+  <div class="cols">
+    <div class="col-4of12">
+      <h5>
+        하드웨어 및 에뮬레이터 이미지
+      </h5>
+
+      <p>
+        다양한 기기 또는 에뮬레이터에서 앱을 실행하고 테스트하세요.
+
+      </p>
+    </div>
+
+    <div class="col-4of12">
+      <h5>
+        최신 플랫폼 코드
+      </h5>
+
+      <p>
+        Preview 동안 월별 업데이트를 제공할 예정이며 따라서 여러분은 항상 최신 플랫폼 변경에 대해 테스트할 수 있습니다.
+      </p>
+    </div>
+
+    <div class="col-4of12">
+      <h5>
+        개발자 문제의 우선순위
+      </h5>
+
+      <p>
+        Google에서는 처음 몇 주 동안 개발자가 보고한 문제에 우선 순위를 부여할 예정이므로,
+가능한 빨리 테스트하고 피드백을 보내 주세요.
+      </p>
+    </div>
+
+  </div>
+
+  <div class="cols">
+
+
+    <div class="col-4of12">
+      <h5>
+        새로운 동작 및 기능
+      </h5>
+
+      <p>
+        새로운 플랫폼 동작을 지원하고 새로운 기능으로 개발하려면 작업을 일찍 시작하세요.
+      </p>
+    </div>
+
+    <div class="col-4of12">
+        <h5>
+        업데이트를 OTA로 전달
+      </h5>
+
+      <p>
+        Android 베타 프로그램을 통해 모든 지원되는 기기에서 매끄럽게 무선으로 업데이트합니다
+. 플래시가 필요없습니다.
+      </p>
+    </div>
+
+    <div class="col-4of12">
+      <h5>
+        피드백 및 지원
+      </h5>
+
+      <p>
+        
+<a href="{@docRoot}preview/bug">Issue Tracker</a>를 사용하여 문제를 보고하고 피드백을 보내 주세요.
+<a href="{@docRoot}preview/dev-community">N&nbsp;개발자 커뮤니티</a>에서
+다른 개발자와 연락하세요.
+      </p>
+    </div>
+  </div>
+</div>
+</div>
+
+<!--
+<p>New in the Android N Developer Preview: </p>
+
+<ul>
+  <li> Accompanying Android Beta Program for consumers, starting later in the preview</li>
+  <li> More supported devices, including devices from OEM partners</li>
+  <li> Seamless OTAs for your devices, from initial release to final N release without flashing</li>
+</ul>
+-->
+
+<h2 id="timeline">일정 및 업데이트</h2>
+<img src="{@docRoot}images/n-preview-updates_2x.png">
+
+<p>
+  N Developer Preview는 2016년 3월 9일부터 2016년 3분기로 예정된
+AOSP 및 OEM에 Android N 최종 공개 릴리스까지 진행됩니다.
+</p>
+
+<p>
+  중요 개발 마일스톤에서 여러분의 개발과 테스트 환경에 대한
+업데이트를 제공합니다. 일반적으로는 매월(4~6주
+간격) 업데이트를 제공할 예정입니다. 마일스톤은 다음과 같습니다.
+</p>
+
+<ul>
+  <li><strong><a href="{@docRoot}preview/support.html">Preview 1</a></strong>(최초 릴리스, 알파)</li>
+  <li><strong>Preview 2</strong>(증분 업데이트, 베타)</li>
+  <li><strong>Preview 3</strong>(증분 업데이트, 베타)</li>
+  <li><strong>Preview 4</strong>(최종 API 및 공식 SDK, Play 게시)</li>
+  <li><strong>Preview 5</strong>(최종 테스트를 위한 거의 최종 시스템 이미지)</li>
+  <li>AOSP 및 에코시스템에 <strong>최종 릴리스</strong></li>
+</ul>
+
+<p>
+  각 업데이트에는 SDK 도구, 프리뷰 시스템, 이미지, 에뮬레이터, 참조 문서,
+API 차이 등이 포함됩니다.
+</p>
+
+<p>
+  <strong>첫 3단계 프리뷰 마일스톤</strong>은 현재 앱의 호환성 문제를 파악하고
+새 플랫폼에 필요한 마이그레이션이나 주요 작업을
+계획하는 데 도움이 되는<strong>조기 테스트 및 개발 환경</strong>을 제공합니다.
+이는 기능과 API, 파일 호환성 문제에 대한 피드백을 제공하는
+우선순위 기간입니다.
+&mdash;이러한 모든 경우에 <a href="{@docRoot}preview/bug">Issue
+Tracker</a>를 사용하세요. 업데이트 과정에서 일부 API가 변경될 수 있습니다.
+</p>
+
+<p>
+  <strong>프리뷰 4 및 5</strong>에서 개발에 사용할 <strong>최종
+ N API 및 SDK</strong>와 최종 버전에 가까운 시스템 이미지에 대한 액세스를 제공하고,
+시스템 동작과 기능을 테스트할 수 있습니다. 이번에 Android N은 표준 API
+레벨을 제공합니다. 레거시 앱의 최종 호환성 테스트를 시작하고
+N API 또는 기능을 사용하는 새 코드를 개선할 수 있습니다.
+</p>
+
+<p>
+  또한 프리뷰 4에서 시작하면 Android 베타 프로그램에 옵트인된 소비자 기기와 같이
+공식 API 레벨에서 Android N을 실행하는 <strong>기기에 앱을
+게시</strong>할 수 있습니다.
+Google Play 알파 및 베타 채널에 먼저 게시할 수 있으므로,
+Play 스토어에 광범위하게 배포하기 전에 Android 베타 소비자를 통해 앱을 테스트할 수 있습니다.
+
+</p>
+
+<p>
+  Android N에서 테스트 및 개발하는 동안 프리뷰 업데이트가 릴리스되면 <strong>
+개발 환경을 최신으로 유지</strong>하는 것이 좋습니다.
+이 과정을 손쉽게 진행하려면 테스트 기기를
+Android 베타 프로그램에 등록하고 각 마일스톤에서 <strong>OTA 업데이트</strong>를
+받을 수 있습니다. 또는 업데이트된 프리뷰 이미지를 직접 다운로드하고
+플래시할 수 있습니다.
+</p>
+
+<p>
+  프리뷰 업데이트가 제공될 때마다 <a href="http://android-developers.blogspot.com/">Android 개발자 블로그</a>,
+해당 사이트 및 <a href="{@docRoot}preview/dev-community">Android
+N 개발자 커뮤니티</a>를 통해서 알려드릴 것입니다.
+</p>
+
+
+<h2 id="preview_tools">N Developer Preview에 포함된 내용</h2>
+
+<p>
+  N Developer Preview에는
+기존 앱을 다양한 화면 크기, 네트워크 기술, CPU/GPU 칩셋
+및 하드웨어 아키텍처에서 테스트하는 데 필요한 모든 것이 포함되어 있습니다.
+</p>
+
+<h3 id="sdk_tools">SDK 도구</h3>
+
+<p>이러한 구성 요소는 <a href="{@docRoot}sdk/installing/adding-packages.html">Android Studio</a>에서 SDK Manager를 통해 다운로드할 수 있습니다.</p>
+
+<ul>
+  <li> N Developer Preview <strong>SDK 및 도구</strong>
+  <li> N Developer Preview <strong>에뮬레이터 시스템 이미지</strong>(32비트 및 64비트)
+  <li> N Developer Preview <strong>Android TV용 에뮬레이터 시스템 이미지</strong>(32비트)
+  <li> N Developer Preview 지원 라이브러리(새로운 앱 템플릿용)
+</ul>
+
+<p>
+  필요에 따라 각 마일스톤에서 이러한 개발 도구를 업데이트할 것입니다.
+</p>
+
+<h3 id="hardware_system_images">하드웨어 시스템 이미지</h3>
+
+<p>
+  N Developer Preview에는 Nexus와 물리적 기기를 테스트하고 개발할 때 사용할 수 있는 다른 하드웨어 시스템 이미지가 포함되어 있습니다.
+하드웨어 이미지의 전체 목록을 보려면 <a href="{@docRoot}preview/download.html">기기 이미지</a> 페이지를
+참조하세요.
+</p>
+
+<p>
+  각 마일스톤에서 업데이트된 시스템 이미지를 제공합니다.
+업데이트된 시스템 이미지를 다운로드 및 플래시하고 필요한 만큼 자주
+직접 기기를 테스트할 수 있습니다. 이 방법은
+기기를 여러 번 다시 플래시해야 하는 자동화된 테스트 환경에
+특히 유용합니다.
+</p>
+
+<p class="note"><strong>참고</strong>:
+<strong>수동으로 플래시된 기기는 지난 해 프리뷰와 달리 OTA 업데이트를 받지 못합니다</strong>
+. 올해에는 Android 베타 프로그램에 기기를 등록해야 OTA 업데이트를 받을 수 있습니다.
+&mdash;자세한 내용은 다음 섹션을 참조하세요.
+</p>
+
+<h3 id="android_beta">Android 베타 프로그램을 통한 OTA 업데이트</h3>
+
+<p>
+  Android N에서는 프로그램에 등록한 기기에 Android N의 최신 프리뷰 업데이트를 자동으로 전송하는
+OTA(Over-the-Air) 업데이트 프로그램이 새로 도입되었습니다.
+이 프로그램은 무료이고 Google 계정에 등록된 지원 기기를 가지고 있는 사람이라면
+누구나 사용할 수 있습니다.
+</p>
+
+<p>
+  프로그램에 등록하려면 <a href="https://g.co/androidbeta">Android
+Beta 프로그램</a> 사이트를 방문하세요.
+계정에 등록된 기기 중 Android 베타에 등록할 수 있는 기기를
+모두 확인할 수 있습니다.
+</p>
+
+<ol>
+  <li> Android N 업데이트를 받을 기기를 선택합니다.
+  <li> Enroll을 클릭하고 사용 약관을 읽고 동의한 후, OK를 클릭합니다.
+</ol>
+
+<p>
+  등록을 마치면 곧 기기에서 업데이트를 수신합니다. 대부분의 경우,
+Android N으로 이동하기 위해 데이터를 완전히 초기화할 필요는 없지만,
+잃고 싶지 않은 데이터가 있다면 기기를 등록하기 전에 백업하는 것이
+좋습니다.
+</p>
+
+<p>
+  업데이트가 기기에 전송되면,
+가급적 빨리 다운로드하고 설치하는 것이 좋습니다. 시스템 UI, 동작, API 및 기능의 최신 변경 사항에 맞춰
+기기를 최신으로 유지할 수 있습니다.
+</p>
+
+<p>
+  Developer Preview가 마무리될 때, 등록된 기기는
+공식 Android N 릴리스 업데이트를 받게 됩니다.
+</p>
+
+<p>
+  Android 베타 사이트에서 언제든 Android 베타 프로그램에서 기기 등록을 해제할 수 있습니다.
+등록을 해제하기 전에 기기에서 데이터를
+백업하세요.
+</p>
+
+  <p class="note"><strong>참고</strong>:
+ 등록을 해제하면 Android 6.0 Marshmallow
+최신 버전으로 <strong>기기가 공장 초기화됩니다</strong>
+(기기 등록 전에 설치했던 버전이
+아닐 수도 있습니다). 클린 설치를 위해서
+연락처, 메시지, 사진 등의 데이터가
+기기에서 삭제됩니다.
+</p>
+
+<h3 id="documentation_and_sample_code">문서 및 샘플 코드</h3>
+
+<p>
+  Developer Preview 사이트에서 다음과 같은 문서 리소스를 이용할 수 있으며,
+Android&nbsp;N에 대해 익히는 데 유용합니다.
+</p>
+
+<ul>
+  <li> <a href="{@docRoot}preview/setup-sdk.html">
+Android N용 개발 설정</a>에는 
+시작하는 데 필요한 단계별 지침이 포함되어 있습니다.</li>
+  <li> <a href="{@docRoot}preview/behavior-changes.html">동작
+변경</a>에서는 테스트해야 할 주요 영역을 알려줍니다.</li>
+  <li> 새 API 관련 문서 중에 <a href="{@docRoot}preview/api-overview.html">API 개요</a>, 다운로드 가능한
+<a href="{@docRoot}preview/setup-sdk.html#docs-dl">API
+참조</a> 및
+다중 창 지원, 묶음 알림, 다중 로케일 지원 등과 같은 주요 기능에 대한 상세한 개발자 가이드도 포함되어 있습니다.
+  <li> <a href="{@docRoot}preview/samples.html">샘플 코드</a>는
+권한과 기타 새로운 기능을 지원하는 방법을 보여줍니다.
+  <li> <a href="{@docRoot}preview/support.html#release-notes">릴리스 노트</a>를
+보면 N Developer Preview의 현재 버전에 대한 변경 사항과 차이점 보고서 등 관련 정보를
+확인할 수 있습니다.
+</ul>
+
+<h4 id="reference">다운로드 가능한 API 참조</h4>
+
+<p>
+  초기 프리뷰 업데이트 동안
+최신 <a href="{@docRoot}preview/setup-sdk.html#docs-dl">Android N 플랫폼용
+API 참조</a>를 별도의 zip 아카이브로 다운로드할 수 있습니다. 참조
+다운로드에는
+API 23 및 이전 업데이트에서 API 변경 사항을 확인하는 데 유용한 차이점 보고서도 포함되어 있습니다.
+</p>
+
+<p>
+  Android N API가 최종 버전이 되고 공식 API 레벨이 할당되면,
+<a href="https://developer.android.com">https://developer.android.com</a>에서 온라인으로 API 참조를 제공할 것입니다.
+</p>
+
+<h3 id="support_resources">
+  지원 리소스
+</h3>
+
+<p>
+  N Developer Preview에서 테스트하고 개발하면서 다음 채널을 활용하여
+문제를 보고하고 피드백을 제공해 주세요.
+</p>
+
+<ul>
+  <li> <a href="https://code.google.com/p/android-developer-preview/">N Developer Preview Issue
+Tracker</a>는 <strong>기본 피드백 채널</strong>입니다. Issue Tracker를 통해 버그, 성능 문제,
+전반적 피드백을 보고할 수 있습니다. 또한,
+<a href="{@docRoot}preview/bug">알려진 문제</a>를 확인하고
+해결 방법을 찾을 수 있습니다. 여러분의 문제는 분류되어 Android 엔지니어링 팀에게 검토하도록 보내는 과정을 통해
+지속적으로 업데이트될 것입니다. </li>
+  <li> <a href="{@docRoot}preview/dev-community">Android N 개발자 커뮤니티</a>는
+일종의 Google+ 커뮤니티로,
+여기에서 여러분은 Android N으로 작업하는 <strong>다른 개발자들과 소통</strong>할 수 있습니다. 서로의 의견이나 아이디어를 나누고 Android N 관련 질문에 대한 대답을 찾을 수도 있습니다.
+저희는 커뮤니티를 진행하고 필요에 따라 답변과 지침을
+제공할 것입니다.</li>
+</ul>
+
+<h3 id="targeting">대상 지정, 프리뷰 API 및 게시</h3>
+
+<p>
+  N Developer Preview는 <strong>표준 API 레벨이 없는</strong> 개발 전용 시스템과 Android
+라이브러리를 제공합니다.
+앱을 테스트하기 위해 호환성 동작에서 옵트아웃하고자 하는 경우(강력히
+권장함), 앱의 <code><a href=
+  "{@docRoot}preview/setup-sdk.html#create-update">targetSdkVersion</a></code>
+를 <code>“N”</code>으로 설정하여 N Developer 프리뷰 버전을
+대상으로 지정하면 됩니다.
+</p>
+
+<p>
+  Android N Developer Preview에서는 <strong>프리뷰 API</strong>
+를 제공합니다. &mdash;이 API는 최종 SDK가 출시될 때까지
+공식적인 버전으로 인정되지 않습니다. 최종 SDK 릴리스는 현재 2016년 3분기로 예정되어 있습니다. 즉, 시간이 지나면서 특히 프로그램을 시작한 초기 몇 주 동안에는
+<strong>사소한 API 변경이 있을 수 있습니다</strong>.
+Android N Developer Preview를 업데이트할 때마다
+변경 사항을 요약하여 제공할 것입니다.
+</p>
+
+<p class="note">
+  <strong>참고</strong>: 프리뷰 API는 변경될 수 있지만, 기본 시스템
+동작은 안정적이며 지금 바로 테스트 가능한 상태입니다.
+
+</p>
+
+<p>
+  Google Play는 <strong>N Developer
+Preview를 대상으로 하는 앱의 게시를 금지합니다</strong>. Android N 최종 SDK를 사용할 수 있게 되면
+공식 Android N API 레벨을 대상으로 지정하고 알파 및 베타 릴리스 채널을 통해 Google
+Play에 게시할 수 있습니다. 그때까지는
+Android N을 대상으로 하는 앱을 테스터들에게 배포하고자 하는 경우, 이메일이나 본인의 사이트에서 직접
+다운로드를 통해 하시면 됩니다.
+</p>
+
+<p>
+  AOSP와 OEM에 대한 Android N 전체 릴리스는 2016년 3분기로 예정되어 있습니다.
+이때 Google Play에서 공개 릴리스 채널에 Android N을 대상으로 하는 앱을
+게시할 수 있을 것입니다.
+</p>
+
+
+<h2 id="how_to_get_started">시작 방법</h2>
+
+<p>
+  Android N으로 앱 테스트를 시작하려면:
+</p>
+
+<ol>
+  <li> <a href="{@docRoot}preview/api-overview.html">API 개요</a>와
+<a href="{@docRoot}preview/behavior-changes.html">동작 변경</a>을 검토하고
+새로운 사항과 이것이 본인의 앱에 미치는 영향에 대해 파악해야 합니다. 특히,
+새로운 <a href="{@docRoot}preview/features/notification-updates.html">알림</a> 기능과
+<a href="{@docRoot}preview/features/multi-window.html">다중 창 지원</a>에 대해 알아보세요.</li>
+  <li> <a href="{@docRoot}preview/setup-sdk.html">Preview SDK 설정</a>
+및 테스트 기기 구성 지침에 따라 환경을 설정하세요.</li>
+  <li> <a href="https://developers.google.com/android/nexus/images">플래시
+지침</a>에 따라 자신의 기기용 최신 Android N Developer Preview 시스템 이미지를 플래시하세요. </li>
+  <li> <a href="{@docRoot}preview/setup-sdk.html#docs-dl">API 참조</a>와
+<a href="{@docRoot}preview/samples.html">Android N 샘플</a>을 검토하면 새로운 API 기능과 앱에서
+그러한 기능을 사용하는 방법에 대해 좀 더 자세히 파악할 수 있습니다.
+  <li> <a href="{@docRoot}preview/dev-community">Android N 개발자
+커뮤니티</a>에 가입하여 최신 소식을 알아보고, 새 플랫폼으로 작업하는
+다른 개발자들과 이야기를 나눠보세요.</li>
+</ol>
+
+<p>
+  Android N Developer Preview 프로그램에 참가해 주셔서 대단히 감사합니다!
+</p>
diff --git a/docs/html-intl/intl/ko/preview/samples.jd b/docs/html-intl/intl/ko/preview/samples.jd
new file mode 100644
index 0000000..634133b
--- /dev/null
+++ b/docs/html-intl/intl/ko/preview/samples.jd
@@ -0,0 +1,85 @@
+page.title=샘플
+page.tags="preview", "samples", "android"
+page.image=images/cards/card-n-samples_2x.png
+@jd:body
+
+<p>
+  Android N용으로 다음 코드 샘플이 제공됩니다. Android Studio에서 샘플을
+다운로드하려면 <b>File &gt; Import
+  Samples</b> 메뉴 옵션을 선택합니다.
+</p>
+
+<p class="note">
+  <strong>참고:</strong> 이러한 다운로드 가능한 프로젝트는 Gradle 및 Android Studio와 함께 사용하도록
+고안되었습니다.
+</p>
+
+
+<h3 id="mw">다중 창 플레이그라운드</h3>
+<img src="{@docRoot}preview/images/sample-multiwindow.png" style="float: left; padding-right: 0.5em" height="250" width="156" />
+<p>
+  이 샘플은 앱으로 다중 창 사용자 인터페이스를 활용하는
+방법을 보여줍니다.
+</p>
+<p>
+  <a href="https://github.com/googlesamples/android-MultiWindowPlayground">
+GitHub에서 가져오기</a>
+</p>
+
+<div style="clear: both;"></div>
+<h3 id="an">활성 알림</h3>
+<img src="{@docRoot}preview/images/sample-activenotifications.png" style="float: left; padding-right: 0.5em" height="250" width="141" />
+<p>
+  NotificationCompat를 사용하여
+알림을 발송하는 간단한 서비스를 보여주는 기존 샘플입니다. 각각의 읽지 않은 사용자 대화는
+고유한 알림으로 발송됩니다.
+</p>
+<p>
+  이 샘플은 Android N에서 사용할 수 있는 새로운 알림 기능을
+활용하도록 업데이트되었습니다.
+</p>
+<p>
+  <a href="https://github.com/googlesamples/android-ActiveNotifications">
+GitHub에서 가져오기</a>
+</p>
+
+<div style="clear: both;"></div>
+<h3 id="ms">메시징 서비스</h3>
+<img src="{@docRoot}preview/images/sample-messagingservice.png" style="float: left; padding-right: 0.5em" height="250" width="150" />
+<p>
+  NotificationManager를
+사용하여 현재 애플리케이션이 표시할 알림 개수를 지시하는
+방법을 보여주는 기존 샘플입니다.
+</p>
+<p>
+  이 샘플은 Android N에서 사용할 수 있는 새로운 알림 기능을
+활용하도록 업데이트되었습니다.
+</p>
+<p>
+  <a href="https://github.com/googlesamples/android-MessagingService">
+GitHub에서 가져오기</a>
+</p>
+
+<div style="clear: both;"></div>
+<h3 id="fbe">직접 부팅</h3>
+<img src="{@docRoot}preview/images/sample-directboot.png" style="float: left; padding-right: 0.5em" height="250" width="141" />
+<p>
+  이 샘플은 기기 암호화된 저장소에 데이터를 저장하고 액세스하는 방법을 보여줍니다.
+이 저장소는 기기가 부팅된 동안 항상 사용할 수 있습니다.
+</p>
+<p>
+  <a href="https://github.com/googlesamples/android-DirectBoot">
+GitHub에서 가져오기</a>
+</p>
+
+<div style="clear: both;"></div>
+<h3 id="sda">범위가 지정된 디렉터리 액세스</h3>
+<img src="{@docRoot}preview/images/sample-scopeddirectoryaccess.png" style="float: left; padding-right: 0.5em" height="250" width="141" />
+<p>
+  이 샘플은 적은 권한을 요구하면서도
+특정 디렉터리에서 데이터를 읽고 쓰는 방법을 보여줍니다.
+</p>
+<p>
+  <a href="https://github.com/googlesamples/android-ScopedDirectoryAccess">
+GitHub에서 가져오기</a>
+</p>
\ No newline at end of file
diff --git a/docs/html-intl/intl/ko/preview/setup-sdk.jd b/docs/html-intl/intl/ko/preview/setup-sdk.jd
new file mode 100644
index 0000000..91c68a6
--- /dev/null
+++ b/docs/html-intl/intl/ko/preview/setup-sdk.jd
@@ -0,0 +1,226 @@
+page.title=Preview 설정
+meta.keywords="프리뷰", "android"
+page.tags="preview", "developer preview"
+page.image=images/cards/card-n-sdk_2x.png
+
+@jd:body
+
+
+<div id="qv-wrapper">
+  <div id="qv">
+<ol>
+  <li><a href="#get-as13">Android Studio 2.1 가져오기</a></li>
+  <li><a href="#get-sdk">Android N SDK 가져오기</a>
+    <ol>
+      <li><a href="#docs-dl">참조 문서</a>
+    </ol>
+  </li>
+  <li><a href="#java8">Java 8 JDK 및 JRE 가져오기</a></li>
+  <li><a href="#create-update">프로젝트 업데이트 또는 생성</a></li>
+  <li><a href="#next">다음 단계</a></li>
+</ol>
+  </div>
+</div>
+
+<p>Android N Preview용 앱을 개발하려면, 이 페이지의 설명에 따라
+개발자 환경을 약간 업데이트해야 합니다.</p>
+
+<p>Android N 시스템 이미지에서 앱의 호환성을 간단히
+테스트하려면, 가이드에 따라 <a href="{@docRoot}preview/download.html">Android N 기기에서 테스트</a>를 수행하세요.</p>
+
+<img src="{@docRoot}preview/images/n-preview-setup.png" width="700" alt="" />
+
+
+<h2 id="get-as13">Android Studio 2.1 가져오기(프리뷰)</h2>
+
+<p>Android N 플랫폼에서는 <a href="{@docRoot}preview/j8-jack.html">Java 8 언어 기능</a>을 지원하며
+여기에는 Jack이라는 새로운 컴파일러가 필요합니다. 현재는
+Android Studio 2.1에서만 최신 버전의 Jack이 지원됩니다. 따라서 Java 8 언어 기능을
+사용하려면, Android Studio 2.1을 사용하여 앱을 빌드해야 합니다. 그렇지 않은 경우,
+Jack 컴파일러를 사용할 필요가 없지만 Android N 플랫폼에
+대해 컴파일하려면 아래의 설명에 따라 JDK 8로
+업데이트해야 합니다.
+</p>
+
+<iframe width="400" height="225" src="//www.youtube.com/embed/SBbWGxXCMqQ?autohide=1&amp;showinfo=0" frameborder="0" allowfullscreen="" style="float: right; margin: 0 0 20px 20px;"></iframe>
+
+<p>현재 Android Studio 2.1은 Canary 릴리스 채널에서 프리뷰로
+제공됩니다.
+Android Studio가 이미 있고 Canary Channel로 업데이트하지 않으려면,
+Android Studio 2.1을 별도의 설치로 다운로드한 후, Android N을
+사용한 개발에 이것을 사용할 수 있습니다.
+이 경우 기본 Android Studio 환경은 영향을 받지 않습니다.</p>
+
+<p>Android Studio 2.1을 별도의 설치로 다운로드하려면 다음
+단계를 따르세요(또는 기존 설치의 업데이트로 Android Studio 2.1을
+받으려면 4단계로 건너뛰세요).</p>
+
+<ol>
+  <li>기존 Android Studio 설치의 이름을 수정하고 버전 번호를 붙입니다.
+이런 방식으로 새 버전을 설치하면
+기존 버전을 덮어쓰지 않습니다.</li>
+  <li><a href="http://tools.android.com/download/studio/canary/latest">Canary Channel
+다운로드 페이지</a>에서 자신의 운영 체제에 맞는 ZIP 파일을 다운로드합니다.
+  </li>
+  <li>패키지의 압축을 풀고 Android Studio 2.1의 콘텐츠를
+    시스템상의 적절한 애플리케이션 위치로 이동한 다음 실행합니다.</li>
+  <li>Settings 대화 상자를
+엽니다(Windows/Linux에서 <strong>File &gt; Settings</strong> 또는
+Mac에서 <strong>Android Studio &gt; Preferences</strong>). 왼쪽 패널에서 <strong>Appearance &amp; Behavior &gt; System Settings &gt;
+Updates</strong>를
+선택합니다.
+  </li>
+  <li>Updates 패널에서 <strong>Automatically
+check updates for</strong> 확인란을 선택하고
+드롭다운 목록에서 <strong>Canary Channel</strong>을 선택합니다.
+  </li>
+</ol>
+
+<p>다음 단계를 위해 이 설정 창을 열어둡니다.</p>
+
+
+<h2 id="get-sdk">N Preview SDK 가져오기</h2>
+
+<p>Android N API를 사용한 개발을 시작하려면,
+다음과 같이 Android N Preview SDK를 Android Studio에 설치해야 합니다.</p>
+
+<ol>
+  <li>Updates 패널이 여전히 표시된 상태에서(위의 4단계), <strong>Automatically
+check updates for Android SDK</strong> 확인란을 선택하고
+드롭다운 목록에서 <strong>Preview Channel</strong>을
+선택합니다.
+  </li>
+  <li><strong>Check Now</strong>를 클릭합니다.</li>
+
+  <li>왼쪽 패널에서 <strong>Appearance &amp; Behavior &gt;
+ System Settings &gt; Android SDK</strong>를 선택합니다.
+
+  <li><strong>SDK Platforms</strong> 탭을 클릭한 다음,
+<strong>Android N Preview</strong> 확인란을 선택합니다.</li>
+
+  <li><strong>SDK Tools</strong> 탭을 클릭한 다음,
+<strong>Android SDK Build Tools</strong>, <strong>Android SDK
+Platform-Tools</strong>, <strong>Android SDK Tools</strong> 확인란을
+선택합니다.
+  </li>
+
+  <li><strong>OK</strong>를 클릭한 다음, 설치해야 하는 패키지의
+사용권 계약에 동의합니다.
+  </li>
+</ol>
+
+<h3 id="docs-dl">N Preview 참조 문서 가져오기</h3>
+
+<p>
+  Android N API에 대한 자세한 내용은 N Preview
+참조 문서에서 볼 수 있으며, 이 문서는 다음 표에서 다운로드할 수 있습니다.
+이 패키지에는 요약된 오프라인 버전의 Android 개발자
+웹사이트가 있고 Android N API용의 업데이트된
+API 참조와 API 차이점 보고서가 포함되어 있습니다.
+</p>
+
+<table>
+  <tr>
+    <th scope="col">문서</th>
+    <th scope="col">체크섬</th>
+  </tr>
+  <tr>
+    <td style="white-space: nowrap">
+    <a href="{@docRoot}shareables/preview/n-preview-1-docs.zip">n-preview-1-docs.zip</a></td>
+    <td width="100%">
+      MD5: 4ab33ccbe698f46f125cc5b807cf9c2f<br>
+      SHA-1: 6a3880b3ccd19614daae5a4d0698ea6ae11c20a5
+    </td>
+  </tr>
+<table>
+
+
+
+<h2 id="java8">Java 8 JDK 및 JRE 가져오기</h2>
+
+<p>Android N 플랫폼에 대해 앱을 컴파일하려면 
+Java 8 개발자 키트(JDK 8)를 사용해야 하며, Android
+Studio 2.1의 일부 도구를 사용하려면 Java 8 런타임 환경(JRE 8)을 설치해야
+합니다. 따라서 각각 최신 버전이 없는 경우, 지금 JDK 8 및 JRE 8를
+다운로드하세요.</p>
+
+<p>그런 다음 Android Studio에서 다음과 같이 JDK 버전을 설정합니다.</p>
+
+<ol>
+  <li>Android Studio에서 Android 프로젝트를 열고 <strong>File &gt;
+Project Structure</strong>를 선택하여
+Project Structure 대화 상자를 엽니다. (또는, <strong>File &gt; Other Settings &gt;
+Default Project Structure</strong>를 선택하여 모든 프로젝트에 대해
+기본값을 설정할 수 있습니다.)
+   </li>
+   <li>대화 상자의 왼쪽 패널에서 <strong>SDK Location</strong>을 클릭합니다.
+   </li>
+   <li><strong>JDK Location</strong> 필드에,
+Java 8 JDK의 위치를 입력한 다음(오른쪽의 버튼을 클릭하여
+파일 탐색), <strong>OK</strong>를 클릭합니다.
+   </li>
+</ol>
+
+<img src="{@docRoot}preview/images/studio-jdk-location.jpg" width="700" alt="" />
+
+
+<h2 id="create-update">프로젝트 업데이트 또는 생성</h2>
+
+<p>
+  Android N API를 사용하려면, 프로젝트를 적절하게 구성해야 합니다.
+</p>
+
+<p>Java 8 언어 기능을 사용할 계획인 경우에는,
+<a href="{@docRoot}preview/j8-jack.html">Java 8 언어 기능</a>에서 지원되는 Java 8 기능과
+Jack 컴파일러로 프로젝트를 구성하는 방법에 대해서도
+읽어봐야 합니다.</p>
+
+
+<h3 id="update">기존 프로젝트 업데이트</h3>
+
+<p>자신의 모듈에 대한
+<code>build.gradle</code>파일을 열고 다음과 같이 값을
+업데이트합니다.
+</p>
+
+<pre>
+android {
+  compileSdkVersion <strong>'android-N'</strong>
+  buildToolsVersion <strong>'24.0.0-rc1'</strong>
+  ...
+
+  defaultConfig {
+     minSdkVersion <strong>'N'</strong>
+     targetSdkVersion <strong>'N'</strong>
+     ...
+  }
+  ...
+}</pre>
+
+
+<h3 id="create">새 프로젝트 생성</h3>
+
+
+<p>Android N Preview SDK를 사용한 개발에서 새 프로젝트를 만들려면:</p>
+
+<ol>
+  <li><strong>File &gt; New Project</strong>를 클릭하고
+Target Android Devices 페이지가 나올 때까지 단계를 따릅니다.
+  </li>
+  <li>이 페이지에서 <strong>Phone and Tablet</strong> 옵션을 선택합니다.</li>
+  <li><strong>Phone and Tablet</strong> 옵션 아래의 <strong>Minimum
+SDK</strong> 옵션 목록에서
+<strong>N: Android API 23, N Preview (Preview)</strong>를 선택합니다.</li>
+</ol>
+
+
+<h2 id="next">다음 단계</h2>
+
+<ul>
+  <li>가이드에 따라 <a href="{@docRoot}preview/download.html">Android N 기기에서 테스트</a>를 수행합니다.</li>
+  <li><a href="{@docRoot}preview/behavior-changes.html">동작 변경</a>
+및 <a href="{@docRoot}preview/api-overview.html">Android N API
+및 기능</a>에서 Android N 플랫폼에
+대해 자세히 알아봅니다.</li>
+</ul>
+
diff --git a/docs/html-intl/intl/pt-br/preview/api-overview.jd b/docs/html-intl/intl/pt-br/preview/api-overview.jd
new file mode 100644
index 0000000..87fa593
--- /dev/null
+++ b/docs/html-intl/intl/pt-br/preview/api-overview.jd
@@ -0,0 +1,676 @@
+page.title=Android N for Developers
+meta.tags="preview", "androidn"
+page.tags="preview", "developer preview"
+page.image=images/cards/card-n-apis_2x.png
+@jd:body
+
+
+
+
+<div id="qv-wrapper">
+<div id="qv">
+  <h2>Principais recursos para desenvolvedores</h2>
+  <ol>
+      <ul style="list-style-type:none;">
+        <li><a href="#multi-window_support">Suporte a várias janelas</a></li>
+        <li><a href="#notification_enhancements">Notificações</a></li>
+        <li><a href="#jit_aot">Compilação JIT/AOT</a></li>
+        <li><a href="#quick_path_to_app_install">Caminho rápido para a instalação de aplicativos</a></li>
+        <li><a href="#doze_on_the_go">Modo soneca em movimento</a></li>
+        <li><a href="#background_optimizations">Otimizações em segundo plano</a></li>
+        <li><a href="#data_saver">Economizador de dados</a></li>
+        <li><a href="#tile_api">Quick Settings Tile API</a></li>
+        <li><a href="#number-blocking">Bloqueio de números</a></li>
+        <li><a href="#call_screening">Triagem de chamadas</a></li>
+        <li><a href="#multi-locale_languages">Localidades e idiomas</a></li>
+        <li><a href="#icu4">APIs ICU4J no Android</a></li>
+        <li><a href="#gles_32">OpenGL ES 3.2 API</a></li>
+        <li><a href="#android_tv_recording">Gravação do Android TV</a></li>
+        <li><a href="#android_for_work">Android for Work</a></li>
+        <li><a href="#accessibility_enhancements">Acessibilidade</a></li>
+        <li><a href="#direct_boot">Inicialização direta</a></li>
+        <li><a href="#key_attestation">Confirmação de chaves</a></li>
+        <li><a href="#network_security_config">Configuração de segurança de rede</a></li>
+        <li><a href="#default_trusted_ca">CA confiável padrão</a></li>
+        <li><a href="apk_signature_v2">Esquema de assinatura de APK v2</a></li>
+        <li><a href="#scoped_directory_access">Acessos a diretório com escopo</a></li>
+      </ol>
+</div>
+</div>
+
+
+
+<p>O Android N ainda está em desenvolvimento ativo. Mas agora é possível experimentá-lo 
+como parte do N Developer Preview. As sessões a seguir destacam alguns 
+novos recursos para desenvolvedores. </p>
+
+<p>
+  Não deixe de conferir as <a href="{@docRoot}preview/behavior-changes.html">Mudanças de comportamento</a> para saber mais sobre as
+ áreas onde as alterações de plataforma podem afetar os aplicativos, examine os
+ guias para desenvolvedores para saber mais sobre os principais recursos e faça o download da <a href="{@docRoot}preview/setup-sdk.html#docs-dl">Referência da API</a> para obter detalhes sobre as
+ novas APIs.
+</p>
+
+<h2 id="multi-window_support">Suporte a várias janelas</h2>
+
+
+<p>No Android N, introduzimos um recurso de multitarefa novo e muito solicitado 
+na plataforma &mdash; o suporte a várias janelas. </p>
+
+  <p>Agora os usuários podem abrir dois aplicativos na tela ao mesmo tempo. </p>
+  <ul>
+  <li>Em celulares e tablets 
+executando o Android N, os usuários agora podem executar dois aplicativos lado a lado ou 
+um acima do outro em modo de tela dividida. Os usuários podem redimensionar os aplicativos arrastando 
+o divisor entre eles. </li>
+
+<li>Em dispositivos Android TV, os aplicativos podem assumir o <a href="{@docRoot}preview/features/picture-in-picture.html">modo imagem em 
+imagem</a>, o que permite que continuem a exibir conteúdo enquanto o usuário navega ou 
+interage com outros aplicativos. Veja abaixo para obter mais informações. </li>
+  </ul>
+
+<div class="col-4of10">
+<img src="{@docRoot}preview/images/mw-portrait.png" alt="" style="height:460px;padding-left:1em;" id="img-split-screen" />
+<p class="img-caption">
+  <strong>Figura 1.</strong> Aplicativos executando em modo de tela dividida.
+</p>
+  </div>
+
+<p>O suporte a várias janelas oferece novas formas de envolver os usuários, 
+particularmente em tablets e outros dispositivos com telas maiores. Você pode até ativar o recurso de arrastar e soltar 
+no aplicativo para permitir que os usuários arrastem conteúdo de ou para o aplicativo &mdash; uma ótima 
+maneira de aprimorar a experiência do usuário. </p>
+
+<p>É simples adicionar suporte a várias janelas ao aplicativo e configurar a forma com ele 
+processa a exibição em várias janelas. Por exemplo, você pode especificar as dimensões 
+mínimas permitidas para a atividade, evitando que os usuários a redimensionem para tamanhos 
+menores. Também é possível desativar a exibição em várias janelas no aplicativo, o que
+ garante que o sistema mostrará o aplicativo exclusivamente em modo de tela cheia.</p>
+
+<p>
+  Para obter mais informações, consulte a documentação para desenvolvedores de 
+<a href="{@docRoot}preview/features/multi-window.html">Suporte a várias janelas</a>.
+</p>
+
+<h2 id="notification_enhancements">Aprimoramentos de notificações</h2>
+
+<p>Reformulamos as notificações no Android N para facilitar e agilizar o seu 
+uso. Algumas modificações são:</p>
+
+<ul>
+  <li>
+    <strong>Atualizações de modelos</strong>: estamos atualizando os modelos de notificação para
+ colocar mais ênfase na imagem do herói e do avatar. Os desenvolvedores poderão
+ aproveitar os novos modelos com ajustes mínimos no código.
+  </li>
+
+  <li>
+    <strong>Notificações empacotadas</strong>: o sistema pode agrupar mensagens
+ por tópico de mensagem, por exemplo, e exibir o grupo. Um usuário pode
+ executar ações, como Dismiss ou Archive, nessa exibição de grupo. Se você
+ já implementou notificações para Android Wear, está familiarizado com
+ esse modelo.
+  </li>
+
+  <li>
+    <strong>Resposta direta</strong>: para aplicativos de comunicação em tempo real, o
+ sistema Android oferece suporte a respostas em linha para que os usuários possam responder rapidamente a
+ mensagens SMS ou de texto diretamente dentro da interface de notificação.
+  </li>
+
+  <li>
+    <strong>Visualizações personalizadas</strong>: duas APIs novas permitem utilizar decorações
+ do sistema, como cabeçalhos e ações de notificação, durante o uso de visualizações
+ personalizadas em notificações.
+  </li>
+</ul>
+
+<div class="col-4of12">
+  <img src="{@docRoot}preview/images/notifications-1.png" alt="" style="padding:.5em;max-width:226px">
+</div>
+
+<div class="col-4of12">
+  <img src="{@docRoot}preview/images/notifications-3.png" alt="" style="padding:.5em;max-width:226px">
+</div>
+
+<div class="col-4of12">
+  <img src="{@docRoot}preview/images/notifications-2.png" alt="" style="padding:.5em;max-width:226px">
+</div>
+
+
+<p class="img-caption">
+  <strong>Figura 2.</strong> Notificações empacotadas e resposta direta.
+</p>
+
+<p>Para saber como implementar os novos recursos, consulte o 
+guia 
+ <a href="{@docRoot}preview/features/notification-updates.html">Notificações</a>.</p>
+
+
+
+<h2 id="jit_aot">Compilação JIT/AOT orientada a perfil</h2>
+
+<p>No Android N, adicionamos um compilador Just in Time (JIT) com perfis de código para 
+ART, o que permite aprimorar constantemente o desempenho de aplicativos Android durante a 
+execução. O compilador JIT complementa o compilador atual Ahead of Time (AOT) do ART 
+e ajuda a aprimorar o desempenho em tempo de execução, economizar espaço de armazenamento e acelerar 
+atualizações de aplicativos e de sistema.</p>
+
+<p>A compilação orientada a perfil permite que o ART gerencie a compilação AOT/JIT de cada aplicativo 
+de acordo com o uso real e com as condições no dispositivo. Por 
+exemplo, o ART mantém um perfil dos principais métodos do aplicativo e pode pré-compilar 
+e armazenar esses métodos em cache para obter o melhor desempenho. As outras partes do aplicativo 
+não são compiladas até que sejam realmente utilizadas.</p>
+
+<p>Além de aprimorar o desempenho para as principais partes do aplicativo, a compilação 
+ajuda a reduzir o uso geral de recursos de RAM, incluindo os binários 
+associados. Esse recurso é particularmente importante em dispositivos com pouca memória.</p>
+
+<p>O ART gerencia a compilação orientada a perfil de forma a minimizar o impacto sobre a 
+bateria do dispositivo. A pré-compilação é executada apenas quando o dispositivo está ocioso e 
+com a bateria sendo carregada, economizando tempo e bateria com a execução antecipada dessa tarefa.</p>
+
+<h2 id="quick_path_to_app_install">Caminho rápido para a instalação de aplicativos</h2>
+
+<p>Um dos benefícios mais tangíveis do compilador JIT do ART é a velocidade de instalação dos 
+aplicativos e das atualizações do sistema. Até mesmo aplicativos grandes, que exigiam diversos minutos para 
+otimização e instalação no Android 6.0, podem agora ser instalados em 
+segundos. As atualizações de sistema também ficaram mais rápidas, pois não existe mais a etapa de otimização. </p>
+
+<h2 id="doze_on_the_go">Modo soneca em movimento...</h2>
+
+<p>O Android 6.0 introduziu o modo soneca, um modo de sistema que economiza bateria adiando 
+atividades de CPU e rede dos aplicativos quando o dispositivo está ocioso, como 
+quando está em uma mesa ou gaveta. </p>
+
+<p>Agora, no Android N, o modo soneca foi aprimorado e economiza bateria quando em movimento. 
+Sempre que a tela ficar desativada por um período e o dispositivo ficar desativado, 
+o modo soneca aplicará um subconjunto das restrições familiares de CPU e rede aos aplicativos. 
+Isso significa que os usuários podem economizar bateria transportando os dispositivos no
+bolso.</p>
+
+
+<img src="/preview/images/doze-diagram-1.png" alt="" id="figure1" />
+<p class="img-caption">
+  <strong>Figura 3.</strong> O modo soneca agora aplica
+ restrições para aumentar a vida útil da bateria mesmo quando o dispositivo não está estacionário.
+</p>
+
+
+<p>Pouco depois de a tela ser desativada com o dispositivo alimentado pela bateria, o modo soneca 
+restringe o acesso de rede e adia trabalhos e sincronizações. Durante breves janelas de 
+manutenção, os aplicativos podem acessar a rede e todos os 
+trabalhos/sincronizações adiados são executados. A ativação da tela ou do dispositivo encerra 
+o modo soneca.</p>
+
+<p>Quando o dispositivo voltar a ficar estacionário, com a tela desativada e alimentado por bateria por um 
+período, o modo soneca aplicará as restrições completas de CPU e rede em {@link
+android.os.PowerManager.WakeLock}, alarmes {@link android.app.AlarmManager} e 
+verificações de GPS/Wi-Fi.</p>
+
+<p>As práticas recomendadas para adaptar o aplicativo ao modo soneca são as mesmas para 
+dispositivos estacionários ou em movimento. Portanto, se você já atualizou o aplicativo para 
+processar o modo soneca corretamente, está pronto. Caso contrário, comece a <a href="{@docRoot}training/monitoring-device-state/doze-standby.html#assessing_your_app">adaptar 
+o aplicativo para o modo soneca</a> agora.</p>
+
+<h2 id="background_optimizations">Project Svelte: otimizações em segundo plano</h2>
+
+<p>O Project Svelte é um esforço contínuo para minimizar o uso de RAM pelo sistema e pelos aplicativos 
+nos dispositivos Android existentes no ecossistema. No Android N, o Project 
+Svelte se concentra em otimizar a forma de execução dos aplicativos em segundo plano. </p>
+
+<p>O processamento em segundo plano é uma parte essencial da maioria dos aplicativos. Quando executado corretamente, a experiência 
+do usuário pode ficar incrível &mdash; imediata, rápida e sensível ao contexto. 
+Quando executado incorretamente, o processamento em segundo plano pode consumir desnecessariamente RAM (e 
+bateria) e afetar o desempenho do sistema para os outros aplicativos. </p>
+
+<p>Desde o Android 5.0, {@link android.app.job.JobScheduler} é a forma 
+preferencial para execução de trabalho em segundo plano de uma maneira que beneficia 
+os usuários. Os aplicativos podem agendar trabalhos e permitir que o sistema execute otimizações com base em 
+condições de memória, energia e conectividade. O JobScheduler oferece controle 
+e simplicidade, e queremos que seja usado por todos os aplicativos. </p>
+
+<p>
+  Outra boa opção é o <a href="https://developers.google.com/android/reference/com/google/android/gms/gcm/GcmNetworkManager">
+  <code>GCMNetworkManager</code></a>, parte do Google Play Services, que
+ oferece um agendamento de trabalhos similar, compatível com versões legadas do
+ Android.
+</p>
+
+<p>Continuamos a expandir o <code>JobScheduler</code> e o 
+<code>GCMNetworkManager</code> para atender a mais 
+casos de uso &mdash; por exemplo, no Android N, você já pode agendar trabalhos 
+em segundo plano de acordo com mudanças nos provedores de conteúdo. Ao mesmo tempo, começamos a 
+substituir alguns padrões mais antigos que podem reduzir o desempenho do sistema, 
+particularmente em dispositivos com pouca memória.</p>
+
+<p>No Android N, estamos removendo três transmissões implícitas de uso comum &mdash;
+ {@link android.net.ConnectivityManager#CONNECTIVITY_ACTION}, {@link
+  android.hardware.Camera#ACTION_NEW_PICTURE} e {@link
+  android.hardware.Camera#ACTION_NEW_VIDEO} &mdash;, pois podem despertar simultaneamente 
+processos em segundo plano de vários aplicativos, aumentando o consumo de memória e bateria. Se 
+o seu aplicativo receber essas transmissões, aproveite o N Developer Preview para
+ migrar para o <code>JobScheduler</code> e as APIs relacionadas. </p>
+
+<p>
+  Consulte a documentação de <a href="{@docRoot}preview/features/background-optimization.html">Otimizações 
+em segundo plano</a> para obter mais detalhes.
+</p>
+
+
+<h2 id="data_saver">Economizador de dados</h2>
+
+<div class="col-5of12" style="margin-right:1.5em;">
+<img src="{@docRoot}preview/images/datasaver.png" style="border:2px solid #ddd">
+
+<p class="img-caption" style="padding-right:2em;">
+  <strong>Figura 4.</strong> O Economizador de dados em Settings.
+</p>
+  </div>
+
+<p>Normalmente, o custo de um plano de dados de celular ao longo da vida útil do dispositivo móvel 
+excede o custo do próprio dispositivo. Para muitos usuários, os dados de celular 
+são um recurso caro que querem economizar. </p>
+
+<p>O Android N introduz o modo Economizador de dados, um novo serviço do sistema que ajuda a reduzir 
+o uso de dados de celular pelos aplicativos em situações de roaming, perto do final do ciclo de cobrança 
+ou em pacotes de dados pré-pagos pequenos. O Economizador de dados permite que os usuários controlem o 
+uso de dados de celular e possibilita que os desenvolvedores ofereçam serviços mais eficientes quando o modo Economizador 
+de dados estiver ativado. </p>
+
+<p>Quando um usuário ativa o Economizador de dados em <strong>Settings</strong> e o dispositivo está 
+em uma rede tarifada, o sistema bloqueia o uso de dados em segundo plano e avisa aos aplicativos 
+para reduzir o uso de dados no primeiro plano sempre que possível &mdash; como, por exemplo, limitar a 
+taxa de bits de streaming, reduzir a qualidade de imagens, adiar o armazenamento prévio otimista em cache 
+e assim por diante. Os usuários podem autorizar aplicativos específicos a usar dados tarifados em segundo plano, 
+mesmo com o Economizador de dados ativado.</p>
+
+<p>O Android N estende o {@link android.net.ConnectivityManager} para oferecer aos aplicativos uma 
+forma de <a href="{@docRoot}preview/features/data-saver.html#status">recuperar as 
+preferências do usuário para o Economizador de dados</a> e <a href="{@docRoot}preview/features/data-saver.html#monitor-changes">monitorar 
+as mudanças de preferências</a>. Todos os aplicativos devem verificar se o usuário ativou o Economizador 
+de dados e tentar limitar o uso de dados em primeiro e segundo plano.</p>
+
+
+<h2 id="tile_api">Quick Settings Tile API</h2>
+
+
+<div style="float:right;max-width:320px">
+<img src="{@docRoot}preview/images/quicksettings.png" style="padding-left:1.5em;">
+
+<p class="img-caption" style="padding-left:2em;">
+  <strong>Figura 5.</strong> Blocos de Configurações rápidas na aba de notificações.
+</p>
+
+
+  </div><p>As Configurações rápidas são uma forma popular e simples de expor as principais configurações e ações 
+diretamente na aba de notificações. No Android N, ampliamos o escopo das 
+Configurações rápidas para aumentar ainda mais a utilidade e a conveniência. </p>
+
+<p>Adicionamos mais espaço para os blocos de Configurações rápidas, que os usuários podem 
+acessar em uma área de exibição paginada deslizando à direita ou à esquerda. Além disso, 
+permitimos que os usuários controlem quais blocos de Configurações rápidas são exibidos, bem como o local 
+em que são exibidos &mdash; para adicionar ou mover blocos, os usuários simplesmente arrastam e largam os blocos. </p>
+
+<p>Para desenvolvedores, o Android N também adiciona uma API nova que permite definir os próprios 
+blocos de Configurações rápidas para que os usuários possam acessar facilmente os principais controles e ações do seu aplicativo.</p>
+
+<p>
+  Os blocos de Configurações rápidas estão reservados para controles ou ações que são
+ urgentemente necessários ou frequentemente usados e não devem ser usados como atalhos para
+ iniciar aplicativos.
+</p>
+
+<p>
+  Após definir os blocos, você pode disponibilizá-los aos usuários, que por sua vez podem adicioná-los
+ às Configurações rápidas usando o recurso de arrastar e soltar.
+</p>
+
+<p>
+  Para obter informações sobre a criação de um bloco de aplicativo, consulte
+ <code>android.service.quicksettings.Tile</code> na <a href="{@docRoot}preview/setup-sdk.html#docs-dl">Referência da API</a>, disponível para download.
+</p>
+
+
+
+<h2 id="number-blocking">Bloqueio de números</h2>
+
+<p>O Android N agora oferece suporte a bloqueio de números na plataforma e disponibiliza uma 
+API de estrutura para permitir que provedores de serviço mantenham uma lista de números bloqueados. O 
+aplicativo padrão de SMS, o aplicativo padrão de telefone e os aplicativos de provedor podem ler e gravar 
+a lista de números bloqueados. A lista não pode ser acessada por outros aplicativos.</p>
+
+<p>Ao oferecer o bloqueio de número como recurso padrão da plataforma, o Android oferece 
+uma forma consistente de bloqueio de números em uma grande variedade de 
+dispositivos. Alguns benefícios que podem ser aproveitados pelos aplicativos são:</p>
+
+<ul>
+  <li> Números bloqueados nas chamadas também são bloqueados nos textos
+  <li> Números bloqueados podem persistir entre várias redefinições e dispositivos por meio do 
+recurso Backup e restauração
+  <li> Vários aplicativos podem usar a mesma lista de números bloqueados
+</ul>
+
+<p>Além disso, a integração de aplicativos da operadora por meio do Android significa que as operadoras podem 
+ler a lista de números bloqueados no dispositivo e executar um bloqueio do lado do servidor 
+para o usuário, impedindo que chamadas e textos indesejados cheguem a ele 
+por qualquer meio, como pontos finais de VOIP ou encaminhamento de telefones.</p>
+
+<p>
+  Para obter mais informações, consulte <code>android.provider.BlockedNumberContract</code>
+ na <a href="{@docRoot}preview/setup-sdk.html#docs-dl">Referência da API</a>, 
+disponível para download.
+</p>
+
+<h2 id="call_screening">Triagem de chamadas</h2>
+
+<p>
+  O Android N permite que o aplicativo de telefone padrão faça triagem das chamadas recebidas. O aplicativo
+ de telefone faz isso implementando o novo <code>CallScreeningService</code>,
+ que permite que a execução de diversas ações com base nos
+ {@link android.telecom.Call.Details Call.Details} da chamada recebida, como:
+</p>
+
+<ul>
+  <li> Rejeitar a chamada recebida
+  <li> Não incluir a chamada no registro de chamadas
+  <li> Não mostrar ao usuário a notificação da chamada
+</ul>
+
+<p>
+  Para obter mais informações, consulte <code>android.telecom.CallScreeningService</code>
+ na <a href="{@docRoot}preview/setup-sdk.html#docs-dl">Referência da API</a>, 
+disponível para download.
+</p>
+
+
+<h2 id="multi-locale_languages">Suporte a diversas localidades, mais idiomas</h2>
+
+
+<p>O Android N agora permite que os usuários selecionem <strong>diversas localidades</strong> em Settings 
+para oferecer melhor suporte a casos de uso bilíngues. Os aplicativos podem usar 
+uma API nova para obter as localidades selecionadas pelo usuário e oferecer 
+experiências de usuário mais sofisticadas para usuários com diversas localidades &mdash; como, por exemplo, mostrar resultados de pesquisa em 
+diversos idiomas e não oferecer a tradução de páginas da web que usam 
+um idioma conhecido pelo usuário.</p>
+
+<p>Juntamente com o suporte a várias localidades, o Android N também amplia o número de idiomas 
+disponíveis aos usuários. Ele oferece mais de 25 variantes para cada um dos idiomas 
+mais comuns, como inglês, espanhol, francês e árabe. Além disso, ele adiciona suporte 
+parcial a mais de 100 novos idiomas.</p>
+
+<p>Os aplicativos podem obter a lista de localidades definida pelo usuário chamando <code>LocaleList.GetDefault()</code>. Para oferecer suporte ao maior número de localidades, o Android N está alterando a forma 
+como resolve recursos. Não deixe de testar e verificar se seus aplicativos 
+funcionam da forma esperada com a nova lógica de resolução de recursos.</p>
+
+<p>Para saber mais sobre o novo comportamento de resolução de recursos e sobre as práticas recomendadas que você deve 
+seguir, consulte <a href="{@docRoot}preview/features/multilingual-support.html">Suporte a vários idiomas</a>.</p>
+
+<h2 id="icu4">APIs ICU4J no Android</h2>
+
+<p>
+  O Android N oferece agora um subconjunto das APIs <a href="http://site.icu-project.org/">ICU4J</a> na estrutura do Android no
+ pacote <code>android.icu</code>. A migração é simples e consiste principalmente em
+ alterar o espaço de nome <code>com.java.icu</code> para
+ <code>android.icu</code>. Se você já usa um pacote ICU4J nos seus
+ aplicativos, a mudança para as APIs do <code>android.icu</code> disponibilizadas na estrutura do
+ Android pode reduzir substancialmente o tamanho do APK.
+</p>
+
+<p>
+  Para saber mais sobre as APIs ICU4J no Android, consulte <a href="{@docRoot}preview/features/icu4j-framework.html">Suporte ao ICU4J</a>.
+</p>
+
+
+
+<h2 id="gles_32">OpenGL&trade; ES 3.2 API</h2>
+
+<p>O Android N adiciona interfaces de estrutura e suporte de plataforma ao OpenGL ES 3.2, incluindo:</p>
+
+<ul>
+  <li> Todas as extensões do <a class="external-link" href="https://www.khronos.org/registry/gles/extensions/ANDROID/ANDROID_extension_pack_es31a.txt">Pacote de extensão Android</a></a> (AEP), exceto <code>EXT_texture_sRGB_decode</code>.
+  <li> Framebuffers de ponto flutuante para HDR e sombreamento adiado.
+  <li> Chamadas de desenho a BaseVertex para possibilitar melhor organização em lotes e transmissão.
+  <li> Controle robusto de acesso a buffers para reduzir a sobrecarga do WebGL.
+</ul>
+
+<p>A API da estrutura do OpenGL ES 3.2 no Android N é fornecida pela classe
+ <code>GLES32</code>. Ao usar o OpenGL ES 3.2, não deixe de declarar o 
+requisito no arquivo manifesto usando a tag <code>&lt;uses-feature&gt;</code> e o 
+atributo <code>android:glEsVersion</code>. </p>
+
+<p>Para obter mais informações sobre como usar o OpenGL ES, incluindo como verificar a versão do 
+OpenGL ES compatível do dispositivo no tempo de execução, consulte o <a href="{@docRoot}guide/topics/graphics/opengl.html">guia da OpenGL ES API</a>.</p>
+
+
+<h2 id="android_tv_recording">Gravação do Android TV</h2>
+
+<p>O Android N adiciona a capacidade de gravar e reproduzir conteúdo de serviços de entrada 
+do Android TV por meio de novas APIs de gravação. Criados usando as APIs atuais de time-shifting, 
+os serviços de entrada de TV podem controlar quais dados de canal são gravados e como 
+as sessões gravadas são salvas, bem como gerenciar a interação do usuário com o conteúdo gravado. </p>
+
+<p>Para obter mais informações, consulte <a href="{@docRoot}preview/features/tv-recording-api.html">APIs de gravação do Android TV</a>.</p>
+
+
+<h2 id="android_for_work">Android for Work</h2>
+
+<p>O Android for Work adiciona vários recursos e APIs para dispositivos que executam o Android N. 
+Veja a seguir alguns destaques &mdash; para obter uma lista completa das atualizações do Android for Work 
+relacionadas ao Android N, consulte Mudanças no Android for Work.</p>
+
+<h3 id="work_profile_security_challenge">Desafio de segurança de perfil de trabalho </h3>
+
+<p>
+  Os donos de perfil podem especificar um desafio de segurança separado para os aplicativos executados no
+ perfil de trabalho. O desafio de trabalho será mostrado quando o usuário tentar abrir
+ qualquer aplicativo de trabalho. A resolução bem-sucedida do desafio de segurança desbloqueia e, 
+se necessário, descriptografa o perfil de trabalho. Para donos de perfil,
+ <code>ACTION_SET_NEW_PASSWORD</code> solicita que o usuário defina um desafio
+ de trabalho e <code>ACTION_SET_NEW_PARENT_PROFILE_PASSWORD</code> um
+ bloqueio de dispositivo.
+</p>
+
+<p>
+  Os donos de perfil podem definir políticas de senha distintas para o desafio de trabalho
+ (como o comprimento mínimo do PIN ou se é permitido usar uma impressão digital
+ para desbloquear o perfil) usando <code>setPasswordQuality()</code>,
+ <code>setPasswordMinimumLength()</code> e métodos relacionados. O dono
+ de perfil também pode definir o bloqueio de dispositivo usando a instância de <code>DevicePolicyManager</code>
+ retornada pelo novo método <code>getParentProfileInstance()</code>.
+ Além disso, donos de perfil podem personalizar a tela de credenciais do
+ desafio de trabalho usando os novos métodos <code>setOrganizationColor()</code> e
+ <code>setOrganizationName()</code>.
+</p>
+<h3 id="turn_off_work">Desativar o trabalho </h3>
+
+<p>Os usuários podem alternar o modo de trabalho em dispositivos com um perfil de trabalho. Quando o modo de trabalho está 
+desativado, o usuário gerenciado é encerrado temporariamente, o que desativa 
+os aplicativos, a sincronização em segundo plano e as notificações do perfil de trabalho, inclusive o aplicativo 
+do dono do perfil. Quando o modo de trabalho está desativado, o sistema exibe um ícone de status 
+persistente para lembrar ao usuário que não é possível iniciar aplicativos de trabalho. A tela de início 
+indica que os aplicativos e widgets de trabalho não podem ser acessados. </p>
+
+<h3 id="always_on_vpn">Always on VPN </h3>
+
+<p>Os donos de dispositivo e perfil podem garantir que os aplicativos de trabalho se conectem sempre 
+por meio de uma VPN especificada. O sistema inicia automaticamente a VPN após a 
+inicialização do dispositivo.</p>
+
+<p>
+  Os novos métodos <code>DevicePolicyManager</code> são
+ <code>setAlwaysOnVpnPackage()</code> e
+ <code>getAlwaysOnVpnPackage()</code>.
+</p>
+
+<p>Como os serviços de VPN podem ser vinculados diretamente pelo sistema sem interação com 
+aplicativos, os clientes de VPN precisam processar novos pontos de entrada para o Always on VPN. Da 
+mesma forma que antes, os serviços são indicados ao sistema por um filtro de intenção correspondente 
+à ação <code>android.net.VpnService</code>. </p>
+
+<p>
+  Além disso, os usuários podem definir manualmente clientes do Always on VPN que implementam
+ métodos <code>VPNService</code> no usuário principal usando
+ <strong>Settings&gt;More&gt;Vpn</strong>.
+</p>
+
+<h2 id="accessibility_enhancements">Aprimoramentos na acessibilidade</h2>
+
+<p>O Android N agora oferece Configurações de visão diretamente na tela de boas-vindas na instalação 
+de novos dispositivos. Isso permite que os usuários descubram e configurem recursos de acessibilidade 
+em seus dispositivos de forma muito mais fácil, incluindo gesto de ampliação, tamanho 
+da fonte, tamanho da tela e TalkBack. </p>
+
+<p>Com o posicionamento mais proeminente desses recursos de acessibilidade, os usuários 
+ficarão mais propensos a experimentar o aplicativo com os recursos ativados. Não deixe de testar antecipadamente os aplicativos 
+com essas configurações ativadas. Você pode ativá-las em Settings &gt;
+Accessibility.</p>
+
+<p>Além disso, os serviços de acessibilidade no Android N podem ajudar usuários com deficiências 
+motoras a tocar na tela. A nova API permite criar serviços com 
+recursos como acompanhamento de face, acompanhamento de olho e varredura de pontos, entre outros, para 
+atender às necessidades desses usuários.</p>
+
+<p>Para obter mais informações, consulte <code>android.accessibilityservice.GestureDescription</code>
+	 na <a href="{@docRoot}preview/setup-sdk.html#docs-dl">Referência da API</a>, disponível para download.</p>
+
+
+<h2 id="direct_boot">Inicialização direta</h2>
+
+<p>A inicialização direta reduz os tempos de inicialização dos dispositivos e permite que aplicativos 
+registrados tenham funcionalidade limitada, mesmo após uma reinicialização inesperada. 
+Por exemplo, se um dispositivo criptografado reinicializar durante o sono do usuário, 
+alarmes registrados, mensagens e chamadas recebidas podem agora continuar notificando 
+o usuário normalmente. Isso também significa que serviços de acessibilidade podem ser
+ disponibilizados imediatamente após um reinício.</p>
+
+<p>A inicialização direita aproveita a criptografia baseada em arquivo do Android N 
+para ativar políticas de criptografia detalhadas para dados de sistema e aplicativos. 
+O sistema usa um armazenamento criptografado pelo dispositivo para determinados dados de sistema e dados 
+de aplicativos registrados explicitamente. Por padrão, um armazenamento criptografado por credencial é usado para todos
+ os outros dados de sistema, dados de usuário, aplicativos e dados de aplicativos. </p>
+
+<p>Na inicialização, o sistema inicia em um modo restrito que permite 
+acessar apenas dados criptografados pelo dispositivo, sem acesso geral a aplicativos ou dados. 
+Se você deseja executar componentes nesse modo, pode registrá-los 
+definindo um sinalizador no manifesto. Após a reinicialização, o sistema ativa 
+componentes registrados transmitindo a intenção 
+<code>LOCKED_BOOT_COMPLETED</code>. O sistema garante que dados de aplicativos registrados criptografados pelos dispositivos sejam disponibilizados 
+antes do destravamento. Todos os outros dados ficarão indisponíveis até que o usuário confirme suas
+ credenciais de tela de bloqueio para descriptografá-los. </p>
+
+Para obter mais informações, consulte <a href="{@docRoot}preview/features/direct-boot.html">Inicialização direta</a>.</p>
+</p>
+
+
+<h2 id="key_attestation">Confirmação de chaves</h2>
+
+<p>Os armazenamentos de chaves protegidos por hardware oferecem um método muito mais seguro para criar, armazenar 
+e usar chaves de criptografia em dispositivos Android. Eles protegem chaves contra o 
+kernel do Linux, possíveis vulnerabilidades do Android e extração em 
+dispositivos com acesso root.</p>
+
+<p>Para permitir o uso de armazenamento de chaves protegido por hardware com maior facilidade e segurança, 
+o Android N introduziu a confirmação de chaves. Aplicativos em dispositivos móveis e fora deles podem usar a confirmação 
+de chaves para determinar com precisão se um par de chaves RSA ou EC está 
+protegido por hardware, quais as propriedades do par de chaves e quais 
+as restrições aplicadas ao uso e à validação. </p>
+
+<p>Aplicativos e serviços externos aos dispositivos móveis podem solicitar informações sobre um par de chaves 
+por meio de um certificado de confirmação X.509, que deve estar assinado por uma 
+chave de confirmação válida. A chave de confirmação é uma chave de assinatura ECDSA, 
+injetada no armazenamento de chaves protegido por hardware do dispositivo na fábrica. 
+Portanto, um certificado de confirmação assinado com uma chave de confirmação 
+válida confirma a existência de um armazenamento de chaves protegido por hardware, além de 
+detalhes dos pares de chaves desse armazenamento de chaves.</p>
+
+<p>Para garantir que o dispositivo esteja usando uma imagem Android oficial de fábrica 
+e segura, a confirmação de chaves exige que o <a class="external-link" href="https://source.android.com/security/verifiedboot/verified-boot.html#bootloader_requirements">bootloader</a>
+ do dispositivo forneça as seguintes informações ao <a class="external-link" href="https://source.android.com/security/trusty/index.html">Ambiente
+ de execução confiável (TEE)</a>:</p>
+
+<ul>
+<li>A versão do sistema operacional e o nível de correção instalado no dispositivo</li>
+<li>A chave pública <a href="https://source.android.com/security/verifiedboot/index.html" class="external-link">Verified Boot</a> e seu status de bloqueio</li>
+  </ul>
+
+<p>Para obter mais informações sobre o recurso de armazenamento de chaves protegido por hardware, 
+consulte o guia <a href="https://source.android.com/security/keystore/" class="external-link">Armazenamento de chaves protegido por hardware</a>.</p>
+
+<p>Além da confirmação de chaves, o Android N também introduziu
+ chaves associadas a impressões digitais que não são revogadas no cadastramento de impressões digitais.</p>
+
+<h2 id="network_security_config">Configuração de segurança de rede</h2>
+
+<p>No Android N, os aplicativos podem personalizar o comportamento de conexões seguras (HTTPS, TLS) 
+de forma segura, sem modificação no código, usando a 
+<em>Configuração de segurança de rede</em> declarativa em vez das 
+APIs programáticas propensas a erro (por exemplo, X509TrustManager).</p>
+
+  <p>Recursos compatíveis:</p>
+<ul>
+<li><b>Âncoras confiáveis personalizadas.</b> Permitem que um aplicativo personalize quais 
+Autoridades de certificado (CA) são confiáveis para suas conexões seguras. Por 
+exemplo, confiar em determinados certificados autoassinados ou em um conjunto restrito de CAs públicas.
+</li>
+<li><b>Substituições apenas em depuração.</b> Permite que um desenvolvedor de aplicativos depure 
+conexões seguras do aplicativo com segurança, sem adicionar riscos à base 
+instalada.
+</li>
+<li><b>Cancelamento do uso de tráfego de texto simples.</b> Permite que um aplicativo seja proteja contra 
+o uso acidental de tráfego de texto simples.</li>
+<li><b>Fixação de certificados.</b> Um recurso avançado que permite que os aplicativos
+ limitem quais chaves de servidor são confiáveis para conexões seguras.</li>
+</ul>
+
+<p>Para obter mais configurações, consulte <a href="{@docRoot}preview/features/security-config.html">Configuração de segurança 
+de rede</a>.</p>
+
+<h2 id="default_trusted_ca">Autoridade de certificado confiável padrão</h2>
+
+<p>Por padrão, os aplicativos direcionados ao Android N confiam apenas em certificados fornecidos pelo sistema 
+e não confiam mais em Autoridades de certificado (CA) adicionadas pelo usuário. Os aplicativos direcionados ao Android 
+N que querem confiar em CAs adicionadas pelo usuário devem usar a 
+<a href="{@docRoot}preview/features/security-config.html">Configuração de segurança de rede</a> para 
+especificar como confiar nas CAs de usuário.</p>
+
+<h2 id="apk_signature_v2">Esquema de assinatura de APK v2</h2>
+
+<p>A classe PackageManager agora permite a verificação de aplicativos usando o 
+esquema de assinatura de APK v2. O esquema de assinatura APK v2 é um esquema de assinatura integral de arquivos 
+que acelera consideravelmente a verificação e fortalece as garantias
+ de integridade, detectando qualquer alteração não autorizada em arquivos APK.</p>
+
+<p>Para manter a compatibilidade com versões anteriores, o APK deve ser assinado com o esquema de assinatura 
+v1 (esquema de assinatura JAR) antes de ser assinado com o esquema de assinatura v2. 
+Com o esquema de assinatura v2, a verificação falhará se você assinar o APK com um
+ certificado adicional após assiná-lo com o esquema v2. </p>
+
+<p>O suporte ao esquema de assinatura de APK v2 será disponibilizado posteriormente no N Developer 
+Preview.</p>
+
+<h2 id="scoped_directory_access">Acessos a diretório com escopo</h2>
+
+<p>No Android N, os aplicativos podem usar novas APIs para solicitar acesso a diretórios de <a href="{@docRoot}guide/topics/data/data-storage.html#filesExternal">armazenamento 
+externo</a>, incluindo diretórios em mídia removível como cartões 
+SD. As novas APIs simplificam substancialmente o acesso de aplicativos a diretórios de 
+armazenamento externo padrão, como o diretório <code>Pictures</code>. Os aplicativos, 
+como aplicativos de fotografia, podem usar essas APIs em vez de 
+<code>READ_EXTERNAL_STORAGE</code>, que concede acesso a todos os diretórios de 
+armazenamento, ou da Estrutura de acesso ao armazenamento, que faz o usuário navegar até 
+o diretório.</p>
+
+<p>Além disso, as novas APIs simplificam as etapas executadas pelo usuário para conceder ao aplicativo 
+acesso ao armazenamento externo. Quando você usa as novas APIs, o sistema usa uma IU
+ de permissões simples que detalha claramente a qual diretório o aplicativo 
+está solicitando acesso.</p>
+
+<p>Para obter mais informações, consulte a documentação para desenvolvedores 
+<a href="{@docRoot}preview/features/scoped-folder-access.html">Acessos
+ a diretório com escopo</a>.</p>
+
+
+
+
+
+
diff --git a/docs/html-intl/intl/pt-br/preview/behavior-changes.jd b/docs/html-intl/intl/pt-br/preview/behavior-changes.jd
new file mode 100644
index 0000000..b7f0f38
--- /dev/null
+++ b/docs/html-intl/intl/pt-br/preview/behavior-changes.jd
@@ -0,0 +1,480 @@
+page.title=Mudanças de comportamento
+page.keywords=preview,sdk,compatibility
+meta.tags="preview", "compatibilidade"
+page.tags="preview", "developer preview"
+page.image=images/cards/card-n-changes_2x.png
+@jd:body
+
+
+<div id="qv-wrapper">
+<div id="qv">
+
+<h2>Neste documento</h2>
+
+<ol>
+  <li><a href="#perf">Melhorias no desempenho</a>
+    <ol>
+      <li><a href="#doze">Soneca</a></li>
+      <li><a href="#bg-opt">Otimizações em segundo plano</a></li>
+    </ol>
+  </li>
+  <li><a href="#perm">Alterações nas permissões</a></li>
+  <li><a href="#accessibility">Melhorias na acessibilidade</a>
+    <ol>
+      <li><a href="#screen-zoom">Zoom de tela</a></li>
+      <li><a href="#vision-settings">Configurações de visão no assistente de configuração</a></li>
+    </ol>
+  </li>
+  <li><a href="#ndk">Aplicativos NDK vinculados a bibliotecas de plataforma</a></li>
+  <li><a href="#afw">Android for Work</a></li>
+</ol>
+
+<h2>Veja também</h2>
+<ol>
+  <li><a href="{@docRoot}preview/api-overview.html">
+ Visão geral da API do Android N</a></li>
+</ol>
+
+</div>
+</div>
+
+
+<p>
+  Além de novos recursos e funcionalidades, o Android N
+ inclui diversas mudanças de comportamento de sistema e APIs. Este documento
+ destaca algumas principais mudanças que você deve entender e considerar
+ nos aplicativos.
+</p>
+
+<p>
+  Caso tenha publicado anteriormente um aplicativo para Android, saiba que ele pode ser afetado
+ pelas alterações na plataforma.
+</p>
+
+
+<h2 id="perf">Melhorias no desempenho</h2>
+
+<p>
+  O Android N contém mudanças de comportamento com a finalidade de aprimorar a vida útil
+ da bateria dos dispositivos, o uso de RAM e o desempenho de aplicativos. Essas alterações podem afetar a
+ disponibilidade de recursos de sistema e notificações de sistema no aplicativo. Analise
+ essas mudanças e avalie os ajustes que podem ser necessários no
+ aplicativo.
+</p>
+
+<h3 id="doze">Soneca</h3>
+
+<p>
+  Introduzido no Android 6.0 (nível da API 23), o modo soneca aumenta a vida útil da bateria
+ adiando atividades de CPU e rede quando um usuário deixa um dispositivo desconectado,
+ estacionário e com a tela desativada. O Android N aprimora
+ ainda mais o modo soneca aplicando um subconjunto de restrições de CPU e rede
+ quando o dispositivo está desconectado e com a tela desativada, mas não necessariamente
+ estacionário como, por exemplo, quando o celular está no bolso do usuário.
+</p>
+
+
+<img src="{@docRoot}preview/images/doze-diagram-1.png" alt="" height="251px" id="figure1" />
+<p class="img-caption">
+  <strong>Figura 1.</strong> Ilustração de como o modo soneca aplica um primeiro nível de
+ restrições de atividades de sistema para aumentar a vida útil da bateria.
+</p>
+
+<p>
+  Quando o dispositivo estiver sendo alimentado pela bateria e a tela estiver desativada por um determinado
+ período, o dispositivo entrará no modo de soneca e aplicará o primeiro subconjunto de restrições: o
+ acesso do aplicativo à rede será desativado e os trabalhos e sincronizações serão adiados. Se o dispositivo permanecer
+ estacionário por um determinado período após entrar no modo soneca, o sistema aplicará as
+ demais restrições de soneca a {@link android.os.PowerManager.WakeLock},
+ aos alarmes {@link android.app.AlarmManager} e às verificações de GPS e Wi-Fi. Independentemente
+ de as restrições de soneca serem aplicadas parcial ou totalmente, o sistema despertará o
+ dispositivo para breves janelas de manutenção, quando os aplicativos
+ poderão acessar a rede e executar todos os trabalhos/sincronizações adiados.
+</p>
+
+
+<img src="{@docRoot}preview/images/doze-diagram-2.png" alt="" id="figure2" />
+<p class="img-caption">
+  <strong>Figura 2.</strong> Ilustração de como o modo soneca aplica um segundo nível de
+ restrições de atividades de sistema após o dispositivo permanecer estacionário por um determinado período.
+</p>
+
+<p>
+  Note que a ativação da tela ou do dispositivo encerra o modo soneca e
+ remove essas restrições de processamento. O comportamento adicional não
+ afeta as recomendações e práticas recomendadas para a adaptação do aplicativo à versão
+ anterior do modo soneca, introduzida no Android 6.0 (nível da API 23), como discutido em
+ <a href="{@docRoot}training/monitoring-device-state/doze-standby.html">
+  Otimização para soneca e aplicativo em espera</a>. Você deve continuar
+ a seguir essas recomendações, como o uso do Google Cloud Messaging (GCM) para
+ enviar e receber mensagens, e começar a planejar atualizações para acomodar o
+ comportamento adicional do modo soneca.
+</p>
+
+
+<h3 id="bg-opt">Project Svelte: otimizações em segundo plano</h3>
+
+<p>
+  O Android N remove três transmissões implícitas para ajudar a otimizar o
+ uso de memória e o consumo de energia. Essa alteração é necessária porque transmissões
+ implícitas iniciam frequentemente em segundo plano aplicativos
+ registrados para escutá-las. A remoção dessas transmissões pode beneficiar consideravelmente o
+ desempenho do dispositivo e a experiência do usuário.
+</p>
+
+<p>
+  Os dispositivos móveis experimentam frequentes alterações de conectividade, como ao mudar
+ entre dados de Wi-Fi e móveis. No momento, os aplicativos podem monitorar alterações de
+ conectividade registrando um receptor para a transmissão implícita {@link
+  android.net.ConnectivityManager#CONNECTIVITY_ACTION} em seu
+ manifesto. Como vários aplicativos se registram para receber essa transmissão, uma única
+ mudança de rede pode fazer com que todos despertem e processem a transmissão
+ ao mesmo tempo.
+</p>
+
+<p>
+  De forma semelhante, os aplicativos podem se registrar para receber transmissões implícitas {@link
+  android.hardware.Camera#ACTION_NEW_PICTURE} e {@link
+  android.hardware.Camera#ACTION_NEW_VIDEO} de outros aplicativos, como
+ Câmera. Quando um usuário tira uma fotografia com o aplicativo Câmera, esses aplicativos são despertados
+ para processar a transmissão.
+</p>
+
+<p>
+  Para aliviar esses problemas, o Android N aplica a seguintes
+ otimizações:
+</p>
+
+<ul>
+  <li>Os aplicativos direcionados ao Android N não receberão transmissões {@link
+  android.net.ConnectivityManager#CONNECTIVITY_ACTION}, mesmo
+ se tiverem entradas no manifesto solicitando notificação desses eventos. Aplicativos em execução
+ em primeiro plano ainda poderão escutar {@code CONNECTIVITY_CHANGE} no
+ encadeamento principal se solicitarem notificação com um {@link
+  android.content.BroadcastReceiver}.
+  </li>
+
+  <li>Os aplicativos não poderão enviar nem receber transmissões {@link
+  android.hardware.Camera#ACTION_NEW_PICTURE} ou {@link
+  android.hardware.Camera#ACTION_NEW_VIDEO}. Essa otimização
+ afeta todos os aplicativos e não apenas os direcionados ao Android N.
+  </li>
+</ul>
+
+<p>
+  Versão futuras do Android poderão substituir mais transmissões implícitas, bem
+ como desvincular serviços em segundo plano. Por esse motivo, evite ou
+ remova dependências de receptores declarados no manifesto para transmissões implícitas
+ e de serviços em segundo plano.
+</p>
+
+<p>
+  A estrutura do Android oferece diversas soluções para reduzir a necessidade
+ dessas transmissões implícitas ou de serviços em segundo plano. Por exemplo, a API {@link
+  android.app.job.JobScheduler} oferece um mecanismo robusto para agendar
+ operações de rede quando ocorrem condições especificadas, como conexão a uma rede
+ ilimitada. Você pode até usar {@link
+  android.app.job.JobScheduler} para reagir a mudanças em provedores de conteúdo.
+</p>
+
+<p>
+  Para obter mais informações sobre essa mudança de comportamento e sobre como adaptar seus aplicativos,
+ consulte <a href="{@docRoot}preview/features/background-optimization.html">Otimizações 
+em segundo plano</a>.
+</p>
+
+
+<h2 id="perm">Alterações nas permissões</h2>
+
+<p>
+  O Android N inclui alterações em permissões que podem afetar seu aplicativo,
+ incluindo permissões de contas de usuário e uma nova permissão para gravar em
+ armazenamento externo. Veja a seguir um resumo das permissões que mudaram
+ no Preview:
+</p>
+
+<ul>
+  <li>{@code GET_ACCOUNTS} (obsoleto)
+    <p>
+      A permissão GET_ACCOUNTS passou a ser obsoleta. O sistema ignora essa
+ permissão em aplicativos direcionados ao Android N.
+    </p>
+  </li>
+
+</ul>
+
+
+
+<h2 id="accessibility">Melhorias na acessibilidade</h2>
+
+<p>
+  O Android N inclui mudanças criadas para aprimorar a facilidade de uso da
+ plataforma para usuários com visão reduzida ou deficiente. Normalmente, essas mudanças
+ não exigirão alterações de código no aplicativo. No entanto, analise
+ esse recurso e teste-o em seu aplicativo para avaliar possíveis impactos na experiência
+ do usuário.
+</p>
+
+
+<h3 id="screen-zoom">Zoom de tela</h3>
+
+<p>
+  O Android N permite que os usuários definam <strong>Display size</strong>, que amplia
+ ou reduz todos os elementos na tela, melhorando a acessibilidade do dispositivo
+ para usuários com visão deficiente. Os usuários não podem alterar o zoom da tela além da largura mínima de
+ tela de <a href="http://developer.android.com/guide/topics/resources/providing-resources.html">
+  sw320dp</a>, que é a largura do Nexus 4, um telefone comum de tamanho médio.
+</p>
+
+<div class="cols">
+
+<div class="col-6">
+  <img src="{@docRoot}preview/images/screen-zoom-1.png" alt="" height="XXX" id="figure1" />
+</div>
+<div class="col-6">
+  <img src="{@docRoot}preview/images/screen-zoom-2.png" alt="" height="XXX" id="figure1" />
+</div>
+
+</div> <!-- end cols -->
+<p class="img-caption">
+  <strong>Figura 3.</strong> A tela à direita mostra o efeito de
+ reduzir o Display size de um dispositivo executando uma imagem do sistema Android N.
+</p>
+
+
+<p>
+  Quando a densidade do dispositivo mudar, o sistema notificará os aplicativos em execução das
+ seguintes formas:
+</p>
+
+<ul>
+  <li>Se um aplicativo for direcionado ao nível da API 23 ou anterior, o sistema eliminará
+ todos os processos em segundo plano. Isso significa que, se um usuário alternar
+ desse aplicativo para abrir a tela <em>Settings</em> e alterar a
+ configuração <strong>Display size</strong>, o sistema eliminará o aplicativo da mesma
+ forma que faria em uma situação de pouca memória. Se o aplicativo tiver processos
+ em primeiro plano, o sistema notificará esses processos sobre a mudança de configuração, como
+ descrito em <a href="{@docRoot}guide/topics/resources/runtime-changes.html">Processamento
+ de alterações no tempo de execução</a>, como se a orientação do dispositivo tivesse mudado.
+  </li>
+
+  <li>Se um aplicativo for direcionado ao Android N, todos os seus processos
+ (em primeiro e segundo plano) serão notificados da mudança de configuração, como
+ descrito em <a href="{@docRoot}guide/topics/resources/runtime-changes.html">Processamento
+ de alterações no tempo de execução</a>.
+  </li>
+</ul>
+
+<p>
+  A maioria dos aplicativos não precisa ser alterada para ser compatível com esse recurso, desde que
+ os aplicativos sigam as práticas recomendadas do Android. Os itens específicos a serem verificados são:
+</p>
+
+<ul>
+  <li>Teste o aplicativo em um dispositivo com largura de tela <code><a href=
+  "{@docRoot}guide/topics/resources/providing-resources.html">sw320dp</a></code>
+ e verifique se ele funciona adequadamente.
+  </li>
+
+  <li>Quando a configuração do dispositivo mudar, atualize todas as informações
+ dependentes de densidade armazenadas no cache, como bitmaps no cache ou recursos carregados da
+ rede. Verifique a ocorrência de alterações de configuração quando o aplicativo sair do estado pausado e retomar
+ a execução.
+    <p class="note">
+      <strong>Observação:</strong> se você armazenar em cache dados dependentes de configuração, 
+recomendamos incluir metadados relevantes, como o tamanho de tela
+ adequado ou a densidade de pixels desses dados. Salvar esses dados permitirá que você
+ decida se será necessário atualizar os dados armazenados em cache após uma mudança
+ de configuração.
+    </p>
+  </li>
+
+  <li>Evite especificar dimensões com unidades px, pois elas não são redimensionadas de
+ acordo com a densidade de tela. Em vez disso, especifique dimensões com unidades de <a href="{@docRoot}guide/practices/screens_support.html">pixel independente de
+ densidade</a> (<code>dp</code>).
+  </li>
+</ul>
+
+<h3 id="vision-settings">Configurações de visão no assistente de configuração</h3>
+
+<p>
+  Agora, o Android N inclui Configurações de visão na tela de boas-vindas, onde os usuários podem
+ definir as configurações de acessibilidade a seguir em um novo dispositivo:
+ <strong>Magnification gesture</strong>, <strong>Font size</strong>,
+ <strong>Display size</strong> e <strong>TalkBack</strong>. Essa mudança
+ aumenta a visibilidade de erros relacionados a configurações de tela diferentes. Para
+ avaliar o impacto desse recurso, teste os aplicativos com essas
+ configurações ativadas. Você encontrará as configurações em <strong>Settings &gt;
+ Accessibility</strong>.
+</p>
+
+<h2 id="ndk">Aplicativos NDK vinculados a bibliotecas de plataforma</h2>
+
+<p>
+  O Android N inclui mudanças de espaço de nome para evitar o carregamento de APIs não públicas.
+ Se você usar o NDK, use apenas APIs públicas da plataforma Android.
+ O uso de APIs não públicas na próxima versão oficial do Android
+ poderá causar problemas no seu aplicativo.
+</p>
+
+<p>
+  Para alertar sobre o uso de APIs não públicas, os aplicativos executados em um dispositivo
+ Android N geram um erro na saída logcat quando um aplicativo chama uma API não pública.
+ Esse erro também é exibido na tela do dispositivo como mensagem para
+ que o usuário fique ciente da situação. Revise o código do seu aplicativo para
+ remover o uso de APIs de plataformas não públicas e faça testes completos do aplicativo usando
+ um dispositivo de visualização ou um emulador.
+</p>
+
+<p>
+  Se o seu aplicativo depender de bibliotecas de plataforma, consulte a documentação do NDK
+ para obter soluções usuais de substituição de APIs privadas comuns por APIs públicas equivalentes.
+ Também é possível que você esteja vinculando bibliotecas de plataforma sem perceber,
+ particularmente se o aplicativo usar uma biblioteca que faz parte da plataforma (como
+ <code>libpng</code>), mas não faz parte do NDK. Nesse caso, verifique se
+ o APK contém todos os arquivos .so que você pretende vincular.
+</p>
+
+<p class="caution">
+  <strong>Cuidado:</strong> algumas bibliotecas de terceiros podem conter links para APIs
+ não públicas. Se o aplicativo usar essas bibliotecas, poderá falhar quando executado
+ na próxima versão oficial do Android.
+</p>
+
+<p>
+  Os aplicativos não devem depender de nem usar bibliotecas nativas não incluídas
+ no NDK, pois elas podem ser alteradas ou removidas entre uma versão do Android
+ e outra. A mudança de OpenSSL para BoringSSL é um exemplo dessas alterações.
+ Além disso, dispositivos diferentes podem oferecer níveis distintos de compatibilidade, porque
+ não há requisitos de compatibilidade para bibliotecas de plataforma não incluídas
+ no NDK. Se você precisar acessar bibliotecas que não são do NDK em dispositivos mais antigos, torne o
+ carregamento dependente do nível do Android API.
+</p>
+
+<p>
+  Para ajudar a diagnosticar esses tipos de problemas, veja a seguir alguns exemplos de erros
+ de Java e NDK que podem ocorrer durante a compilação do aplicativo com o Android N:
+</p>
+
+<p>Exemplo de erro de Java:</p>
+<pre class="no-pretty-print">
+java.lang.UnsatisfiedLinkError: dlopen failed: library "/system/lib/libcutils.so"
+    is not accessible for the namespace "classloader-namespace"
+</pre>
+
+<p>Exemplo de erro de NDK:</p>
+<pre class="no-pretty-print">
+dlopen failed: cannot locate symbol "__system_property_get" referenced by ...
+</pre>
+
+
+<p>
+  Veja a seguir algumas correções comuns para aplicativos que encontram esses tipos de erro:
+</p>
+
+<ul>
+  <li>O uso de getJavaVM e getJNIEnv do libandroid_runtime.so pode ser substituído
+ por funções JNI padrão:
+<pre class="no-pretty-print">
+AndroidRuntime::getJavaVM -&gt; GetJavaVM from &lt;jni.h&gt;
+AndroidRuntime::getJNIEnv -&gt; JavaVM::GetEnv or
+JavaVM::AttachCurrentThread from &lt;jni.h&gt;.
+</pre>
+  </li>
+
+  <li>O uso do símbolo {@code property_get} de {@code libcutils.so} pode ser
+ substituído pelo {@code __system_property_get} alternativo público.
+ Para fazer isso, use {@code __system_property_get} com o include abaixo:
+<pre>
+#include &lt;sys/system_properties.h&gt;
+</pre>
+  </li>
+
+  <li>O uso do símbolo {@code SSL_ctrl} de {@code libcrypto.so} deve ser
+ substituído por uma versão local do aplicativo. Por exemplo, vincule estaticamente
+ {@code libcyrpto.a} no arquivo {@code .so} ou inclua dinamicamente o seu próprio
+ {@code libcrypto.so} do BoringSSL ou OpenSSL no aplicativo.
+  </li>
+</ul>
+
+<h2 id="afw">Android for Work</h2>
+<p>
+  O Android N contém mudanças para aplicativos direcionados ao Android for Work, incluindo
+ mudanças em instalação de certificados, redefinição de senhas, gerenciamento de
+ usuários secundários e acesso a identificadores de dispositivos. Se você estiver criando aplicativos para
+ ambientes do Android for Work, examine essas mudanças e modifique
+ o aplicativo conforme necessário.
+</p>
+
+<ul>
+  <li>Você precisa instalar um instalador de certificado delegado antes que o DPC possa
+ configurá-lo. Para aplicativos de donos de perfil e dispositivo direcionados ao N SDK, você deve
+ instalar o instalador de certificado delegado antes de chamar o
+ controlador de políticas de dispositivo (DPC)
+ <code>DevicePolicyManager.setCertInstallerPackage()</code>. Se o instalador
+ não estiver instalado, o sistema gerará uma
+ <code>IllegalArgumentException</code>.
+  </li>
+
+  <li>As restrições de redefinição de senha de administradores do dispositivo agora se aplicam também a
+ donos de perfil. Os administradores de dispositivo não podem mais usar
+ <code>DevicePolicyManager.resetPassword()</code> para limpar senhas nem para alterar
+ as já definidas. Os administradores de dispositivo ainda poderão definir uma senha, mas apenas
+ em dispositivos sem senha, PIN ou padrão.
+  </li>
+
+  <li>Donos de dispositivo e perfil poderão gerenciar contas, mesmo se restrições forem
+ definidas. Eles podem chamar as APIs de gerenciamento de contas,
+ mesmo se restrições de usuário <code>DISALLOW_MODIFY_ACCOUNTS</code> forem implementadas.
+  </li>
+
+  <li>Os donos de dispositivo podem gerenciar usuários secundários com maior facilidade. Quando um dispositivo
+ executar no modo de dono do dispositivo, a restrição <code>DISALLOW_ADD_USER</code>
+ será definida automaticamente. Isso evita que os usuários criem usuários secundários
+ não gerenciados. Além disso, os métodos <code>CreateUser()</code> e
+ <code>createAndInitial()</code> ficaram obsoletos e foram substituídos
+ pelo novo método <code>DevicePolicyManager.createAndManageUser()</code>.
+  </li>
+
+  <li>Os donos de dispositivo podem acessar identificadores de dispositivo. O dono do dispositivo pode acessar o
+ endereço MAC Wi-Fi de um dispositivo usando
+ <code>DevicePolicyManagewr.getWifiMacAddress()</code>. Se o Wi-Fi nunca
+ foi ativado no dispositivo, esse método retorna o valor {@code null}.
+  </li>
+</ul>
+
+<p>
+  Para obter mais informações sobre as mudanças no Android for Work no Android N, consulte
+ <a href="{@docRoot}preview/features/afw.html">Atualizações no Android for Work</a>.
+</p>
+
+<h2 id="other">Outros pontos importantes</h2>
+
+<ul>
+<li>Quando um aplicativo for executado no Android N, mas for direcionado a um nível da API menor
+ e o usuário alterar o tamanho da tela, o processo do aplicativo será eliminado. O aplicativo
+ deverá ser capaz de processar corretamente esse cenário. Caso contrário, falhará
+ quando o usuário restaurá-lo usando Recents.
+
+<p>
+Você deve testar o aplicativo para verificar 
+se esse comportamento não ocorre. 
+Isso pode ser feito causando uma falha idêntica 
+eliminando o aplicativo manualmente usando o DDMS.
+</p>
+
+<p>
+Aplicativos direcionados ao Android N e versões posteriores não serão eliminados automaticamente em mudanças de densidade. 
+No entanto, podem continuar a responder a alterações de configurações de forma não ideal.
+</p>
+</li>
+
+<li>
+Os aplicativos no Android N devem ser capazes de processar corretamente mudanças de configuração 
+e não devem falhar em inicializações subsequentes. Você pode verificar o comportamento do aplicativo 
+alterando o tamanho da fonte (<strong>Setting</strong> &gt;
+<strong>Display</strong> &gt; <strong>Font size</strong>) e depois restaurando 
+o aplicativo em Recents.
+</li>
+</ul>
+
diff --git a/docs/html-intl/intl/pt-br/preview/download.jd b/docs/html-intl/intl/pt-br/preview/download.jd
new file mode 100644
index 0000000..432967e
--- /dev/null
+++ b/docs/html-intl/intl/pt-br/preview/download.jd
@@ -0,0 +1,541 @@
+page.title=Testar em um dispositivo
+meta.tags="preview", "nexus","system image"
+page.tags="preview", "androidn"
+page.image=images/cards/card-n-downloads_2x.png
+
+@jd:body
+
+<div style="position:relative; min-height:600px">
+
+  <div class="wrap" id="tos" style="position:absolute;display:none;width:inherit;">
+
+    <p class="sdk-terms-intro">Antes de fazer o download ou instalar componentes do
+ Android Preview SDK, você deve concordar com os seguintes termos e
+ condições.</p>
+
+    <h2 class="norule">Termos e condições</h2>
+
+    <div class="sdk-terms" onfocus="this.blur()" style="width:678px">
+Este é o contrato de licença do Android SDK Preview (o “Contrato de Licença”).
+
+1. Introdução
+
+1.1 O Android SDK Preview (que este Contrato de licença chama de "Preview", incluindo especificamente os arquivos de sistema do Android, APIs integradas e arquivos da biblioteca Preview, se e quando estiverem disponíveis) é licenciado por meio da concordância com os termos deste contrato. O Contrato de licença forma um vínculo contratual legal entre o contratado e a Google em relação ao uso do Preview.
+
+1.2 “Android” se refere à pilha de software do Android para dispositivos, conforme disponibilizado no Projeto de código aberto do Android, localizado no URL a seguir: http://source.android.com/, atualizado periodicamente.
+
+1.3 “Compatível com Android” significa qualquer implementação do Android que (i) obedece ao documento Definição de Compatibilidade com Android, que pode ser encontrado no site de compatibilidade do Android (http://source.android.com/compatibility) que pode ser atualizado de tempos em tempos; e (ii) seja aprovado no Android Compatibility Test Suite (CTS).
+
+1.4 “Google” se refere à Google Inc, uma corporação de Delaware, com sede em 1600 Amphitheatre Parkway, Mountain View, CA 94043, Estados Unidos.
+
+2. Aceitação do Contrato de Licença
+
+2.1 A fim de usar o Preview, é necessário concordar com este Contrato de licença. O uso do Preview é proibido àqueles que não concordam com este Contrato de licença.
+
+2.2 Ao clicar em aceitar e/ou usar o Preview, você concorda com os termos do Contrato de licença
+
+2.3 É proibido o uso do Preview e a aceitação deste contrato pelo indivíduo que tenha impedimento legal sobre o recebimento do Preview sob as leis dos Estados Unidos ou de outros países, incluindo o país de residência ou no qual usa o Preview.
+
+2.4 Se for usar o Preview internamente na empresa ou organização, você deverá concordar com o vínculo com este contrato em nome do empregador ou de outra entidade e declarar e garantir que tem total autoridade legal para tanto. Se você não tem a autoridade necessária, não deve concordar com este contrato nem usar o Preview em nome do empregador ou de outra entidade.
+
+3. Licença do Preview da Google
+
+3.1 Sujeito aos termos deste Contrato de licença, a Google confere uma licença limitada, mundial, sem royalties, intransmissível, não exclusiva e não sublicenciável unicamente para o uso do Preview exclusivamente para o desenvolvimento de aplicativos executados para implementações compatíveis do Android.
+
+3.2 Você não poderá usar este Preview para desenvolver aplicativos para outras plataformas (incluindo implementações não compatíveis do Android) nem para deselvolver outro SDK. Você tem a liberdade para desenvolver aplicativos para outras plataformas, incluindo implementações não compatíveis do Android, desde que este Preview não seja usado para essa finalidade.
+
+3.3 Você concorda que a Google ou terceiros detêm todos os direitos legais, títulos e interesses relativos ao Preview, incluindo quaisquer direitos de propriedade intelectual que subsistam no Preview. "Direitos de propriedade intelectual" se referem a todo e qualquer direito sob as leis de patentes, de direitos autorais, de segredo comercial, de marca registrada e todos os outros direitos de propriedade. A Google se reserva todos os direitos não conferidos expressamente a você.
+
+3.4 O uso do Preview não é autorizado para qualquer finalidade não expressamente permitida por este Contrato de licença. Salvo na extensão exigida por licenças aplicáveis de terceiros, é proibido: (a) copiar (exceto para fins de cópia de segurança), modificar, adaptar, redistribuir, descompilar, fazer engenharia reversa, desmontar ou criar trabalhos derivados do Preview ou qualquer parte dele; ou (b) carregar qualquer parte do Preview em um aparelho celular ou outro dispositivo de hardware, exceto um computador pessoal, combinar qualquer parte do Preview com outros softwares ou distribuir qualquer software ou dispositivo que contenha uma parte do Preview.
+
+3.5 O uso, a reprodução e a distribuição de componentes do Preview licenciado sob uma licença de software de código aberto são regidos exclusivamente pelos termos daquela licença de software de código aberto, e não por este Contrato de licença. Você concorda em manter uma licença em bom estado para as licenças de software de código aberto sob todos os direitos concedidos e deter quaisquer ações que possam limitar, suspender ou romper tais direitos.
+
+3.6 Você concorda que a forma e a natureza do SDK que a Google fornece podem mudar sem aviso prévio e que as versões futuras do SDK podem ser incompatíveis com aplicativos desenvolvidos em versões anteriores do SDK. Você concorda que a Google pode cessar (permanente ou temporariamente) o fornecimento do Preview (ou quaisquer recursos dentro dele) a você ou a usuários em geral sob critério exclusivo da Google, sem aviso prévio.
+
+3.7 Nada neste Contrato de licença confere o direito de uso de quaisquer nomes comerciais, marcas comerciais, marcas de serviço, logomarcas, nomes de domínios e outros recursos de marcas especiais da Google.
+
+3.8 Você concorda que não removerá, ocultará nem alterará quaisquer notificações de direitos de propriedade (incluindo notificações de direitos autorais e de marcas registradas) que possam estar afixadas ou contidas no Preview.
+
+4. O uso do Preview
+
+4.1 A Google entende que nada no Contrato de Licença dá a ela direitos, título nem interesse sobre o usuário (ou sobre os seus licenciadores) sob o presente Contrato de licença nem sobre quaisquer aplicativos de software que o usuário desenvolver usando o Preview, incluindo quaisquer direitos de propriedade intelectual que subsistem nos referidos aplicativos.
+
+4.2 Você concorda em usar o Preview e desenvolver aplicativos somente para as finalidades permitidas por (a) este Contrato de licença e (b) quaisquer leis, normas, diretrizes geralmente aceitas ou orientações aplicáveis nas jurisdições relevantes (incluindo quaisquer leis acerca da exportação de dados ou softwares dos e para os Estados Unidos ou outros países relevantes).
+
+4.3 Você concorda que, se usar o Preview para o desenvolvimento de aplicativos, deverá proteger a privacidade e os direitos legais dos usuários. Se nomes de usuário, senhas ou outras informações de acesso ou informações pessoais forem fornecidos ao aplicativo, deve-se informá-los de que tais dados estarão disponíveis para o aplicativo, além de fornecer observações de privacidade e proteção legalmente adequadas a esses usuários. Se o aplicativo armazenar informações pessoais ou confidenciais fornecidas pelos usuários, deve fazê-lo com segurança. Se o usuário fornecer a você informações da conta do Google, o aplicativo poderá usar essas informações exclusivamente para acessar a conta da Google do usuário quando houver autorização de cada usuário para fazê-lo e para os fins limitados da autorização.
+
+4.4 Você concorda que não se envolverá em qualquer atividade com o Preview, incluindo o desenvolvimento e a distribuição de um aplicativo que interfira, perturba, danifique ou acesse, de modo não autorizado, servidores, redes ou outras propriedades de serviço da Google ou de qualquer terceiro.
+
+4.5 Você concorda que é exclusivamente responsável por (e que a Google não tem qualquer responsabilidade com você ou qualquer outra parte) quaisquer dados, conteúdo ou recursos que criar, transmitir ou exibir por meio do Android e/ou de aplicativos do Android e pelas consequências que suas ações (incluindo qualquer perda ou dano que a Google possa sofrer) podem gerar.
+
+4.6 Você concorda que é exclusivamente responsável por (e que a Google não tem qualquer responsabilidade com você ou qualquer outra parte) qualquer violação das obrigações exigidas neste Contrato de licença, qualquer contrato ou termos de serviço aplicáveis de terceiros, qualquer lei ou norma aplicáveis e pelas consequências (incluindo a perda ou dano que a Google ou qualquer terceiro possa sofrer) por quaisquer violações.
+
+4.7 O Preview está em desenvolvimento e seus testes e comentários são uma parte importante do processo de desenvolvimento. Ao usar o Preview, você está ciente de que a implementação de alguns recursos ainda estão em desenvolvimento e que não se deve confiar que o Preview tem a funcionalidade completa de uma versão estável. Você concorda em não distribuir nem enviar publicamente quaisquer aplicativos usando este Preview, pois ele não será mais suportado após o lançamento oficial do Android SDK.
+
+5. Suas credenciais de desenvolvedor
+
+5.1 Você é responsável pela manutenção da confidencialidade de quaisquer credenciais de desenvolvedor que possam ser emitidas pela Google ou escolhidas por você e será o único responsável por todos os aplicativos que forem desenvolvidos sob suas credenciais de desenvolvedor.
+
+6. Privacidade e informações
+
+6.1 A fim de inovar e aprimorar continuamente o Preview, a Google pode coletar certas estatísticas de uso do software, incluindo, sem limitar-se, um identificador exclusivo, endereço IP associado, número de versão do software e informações sobre quais ferramentas e/ou serviços no Preview estão sendo usados e como estão sendo usados. Antes de coletar quaisquer dessas informações, o Preview o notificará e buscará seu consentimento. Se você recusar, as informações não serão coletadas.
+
+6.2 Os dados coletados são examinados coletivamente para aprimorar o Preview e são mantidos em conformidade com a Política de privacidade da Google, localizada em http://www.google.com/policies/privacy/.
+
+7. Aplicativos de terceiros
+
+7.1 Ao usar o Preview para executar aplicativos desenvolvidos por terceiros ou que acessam dados, conteúdo ou recursos fornecidos por terceiros, você concorda que a Google não é responsável por tais aplicativos, dados, conteúdo ou recursos. Você compreende que quaisquer dados, conteúdo ou recursos que você possa acessar por meio de tais aplicativos de terceiros imputam responsabilidade exclusiva ao indivíduo que os originou. A Google não é responsável por qualquer perda ou dano que possa ocorrer como resultado do uso ou acesso de quaisquer aplicativos, dados, conteúdo ou recursos de terceiros.
+
+7.2 Você deve estar ciente de que os dados, conteúdo e recursos apresentados a você por aplicativos de terceiros podem ser protegidos pelos direitos de propriedade intelectual que são de posse dos fornecedores (ou de outras pessoas ou empresas em seus nomes). Não é permitido modificar, alugar, arrendar, emprestar, vender, distribuir nem criar trabalhos derivados baseados nesses dados, conteúdo ou recursos (na totalidade ou em parte), salvo se houver permissão explícita especificada pelos respectivos detentores de direitos.
+
+7.3 Você reconhece que o uso de tais aplicativos, dados, conteúdo ou recursos de terceiros pode estar sujeito a termos separados entre você e o terceiro em questão.
+
+8. Uso das Google APIs
+
+8.1 Google APIs
+
+8.1.1 Ao usar qualquer API para recuperar dados da Google, você reconhece que eles podem ser protegidos por direitos de propriedade intelectual de posse da Google ou dos terceiros que fornecem os dados (ou de pessoas ou empresas em nomes deles). O uso de tal API pode estar sujeito a termos de serviço adicionais. Não é permitido modificar, alugar, arrendar, emprestar, vender, distribuir nem criar trabalhos derivados baseados nesses dados (na totalidade ou em parte), salvo se permitido pelos termos de serviço pertinentes.
+
+8.1.2 Se você usar qualquer API para recuperar dados de um usuário a partir da Google, você reconhece e concorda que deve recuperar dados somente com consentimento explícito do usuário e somente quando, e para os fins limitados para tal, o usuário conceder permissão para fazê-lo.
+
+9. Rescisão do Contrato de licença
+
+9.1 O Contrato de licença continuará a se aplicar até que ocorra uma rescisão sua ou da Google, como definido abaixo.
+
+9.2 Caso queira rescindir o Contrato de licença, você pode fazer isto cessando o uso do Preview e de qualquer credencial de desenvolvedor relevante.
+
+9.3 A Google pode, a qualquer momento, rescindir o Contrato de licença, com ou sem causa, com uma notificação.
+
+9.4 O Contrato de licença será encerrado automaticamente sem aviso ou outras ações na ocorrência de:
+(A) a Google interromper o fornecimento do Preview ou de determinadas partes do Preview aos usuários no país em que você reside ou de onde o serviço é usado; e
+(B) a Google emitir uma versão de lançamento final do Android SDK.
+
+9.5 Quando o Contrato de licença é rescindido, a licença concedida a você no Contrato de licença é finalizada, todo o uso do Preview será interrompido e as provisões dos parágrafos 10, 11, 12 e 14 deverão permanecer indefinidamente.
+
+10. EXCLUSÕES
+
+10.1 VOCÊ COMPREENDE E CONCORDA EXPRESSAMENTE QUE O RISCO DO USO DO PREVIEW É EXCLUSIVAMENTE SEU E QUE O PREVIEW É FORNECIDO NA FORMA EM QUE SE ENCONTRA E COMO DISPONIBILIZADO, SEM GARANTIA DE QUALQUER TIPO DA GOOGLE.
+
+10.2 O USO DO PREVIEW E DE QUALQUER MATERIAL BAIXADO OU OBTIDO DE OUTRO MODO PELO USO DO PREVIEW ESTÁ A SEU CRITÉRIO E RISCO E VOCÊ É O ÚNICO RESPONSÁVEL POR QUALQUER DANO AO SEU SISTEMA OPERACIONAL OU OUTRO DISPOSITIVO OU PELA PERDA DE DADOS QUE RESULTEM DE TAL USO. SEM LIMITAR OS PRECEDENTES, VOCÊ ENTENDE QUE O PREVIEW NÃO É UMA VERSÃO ESTÁVEL E QUE PODE CONTER ERROS, DEFEITOS E VULNERABILIDADES DE SEGURANÇA QUE PODEM RESULTAR EM DANOS SIGNIFICANTES, INCLUINDO A PERDA IRRECUPERÁVEL OU COMPLETA DO USO DO SISTEMA DO COMPUTADOR OU DE OUTROS DISPOSITIVOS.
+
+10.3 A GOOGLE EXCLUI EXPRESSAMENTE TODAS AS GARANTIAS E CONDIÇOES DE QUALQUER TIPO, EXPRESSAS OU IMPLÍCITAS, INCLUINDO, MAS NÃO LIMITADO A, GARANTIAS E CONDIÇÕES DE COMERCIALIZAÇÃO IMPLÍCITAS, ADEQUAÇÃO A UMA FINALIDADE PARTICULAR E A NÃO VIOLAÇÃO.
+
+11. LIMITAÇÃO DE RESPONSABILIDADE
+
+11.1 VOCÊ COMPREENDE E CONCORDA EXPRESSAMENTE QUE A GOOGLE, SUAS SUBSIDIÁRIAS, AFILIADAS E SEUS LICENCIADORES NÃO SERÃO RESPONSABILIZADOS POR VOCÊ SOB QUALQUER TEORIA DE RESPONSABILIDADE POR QUAISQUER DANOS, SEJAM ELES DIRETOS, INDIRETOS, INCIDENTAIS, ESPECIAIS, CONSEQUENCIAIS OU DE EXEMPLO QUE POSSAM INCORRER, INCLUINDO QUALQUER PERDA DE DADOS, INDEPENDENTE DE AVISO À GOOGLE OU A SEUS REPRESENTANTES OU DA NECESSIDADE DE AVISO SOBRE A POSSIBILIDADE DA INCORRÊNCIA DE TAIS PERDAS.
+
+12. Indenização
+
+12.1 Ao limite máximo permitido por lei, você concorda em defender, indenizar e isentar a Google, suas afiliadas e respectivos conselheiros, diretores, empregados e agentes com relação a todas e quaisquer reivindicações, ações, processos ou procedimentos, bem como todas e quaisquer perdas, responsabilidades, danos, custos e despesas (incluindo honorários advocatícios) decorrentes ou provenientes de: (a) seu uso do Preview, (b) qualquer aplicativo desenvolvido no Preview que infrinja direitos de propriedade intelectual de qualquer pessoa, difame qualquer pessoa ou viole seus direitos de publicidade ou privacidade e (c) qualquer não cumprimento deste Contrato de licença.
+
+13. Mudanças no Contrato de licença
+
+13.1 A Google pode realizar mudanças no Contrato de licença à medida que distribui novas versões do Preview. Quando essas mudanças forem realizadas, a Google fará uma nova versão do Contrato de licença disponível no site em que o Preview for disponibilizado.
+
+14. Termos legais gerais
+
+14.1 Esse Contrato de licença constitui o contrato legal integral entre você e a Google e rege o uso do Preview (excluindo quaisquer serviços que a Google possa fornecer a você sob um contrato escrito em separado), e substitui inteiramente quaisquer contratos anteriores entre você e a Google em relação ao Preview.
+
+14.2 Você concorda que, se a Google não exercer nem impetrar qualquer direito ou recurso legal que esteja contido no Contrato de licença (ou que a Google detenha direitos nos termos de qualquer lei aplicável), não se considerará esse fato como uma renúncia formal aos direitos da Google e esses direitos ou recursos continuarão disponíveis à Google.
+
+14.3 Se qualquer tribunal de justiça que tiver a competência para decidir sobre esse tema determinar que qualquer cláusula do Contrato de licença é inválida, tal cláusula será removida do contrato sem afetar as cláusulas restantes ou sua vigência. As cláusulas restantes do Contrato de licença continuarão válidas e obrigatórias.
+
+14.4 Você reconhece e concorda que cada membro do grupo de empresas das quais a Google é a empresa controladora deve ser beneficiário terceiro do Contrato de licença e que essas outras empresas terão o poder de aplicar diretamente, e apoiar-se em, qualquer cláusula do Contrato de licença que confira um direito (ou direitos em favor) deles. Além disso, nenhuma outra pessoa nem empresa deve ser beneficiário terceiro do Contrato de licença.
+
+14.5 RESTRIÇÕES DE EXPORTAÇÃO. O PREVIEW ESTÁ SUJEITO ÀS LEIS E NORMAS DE EXPORTAÇÃO DOS ESTADOS UNIDOS. VOCÊ DEVE CUMPRIR TODAS AS LEIS E NORMAS DOMÉSTICAS E INTERNACIONAIS QUE SE APLICAREM AO PREVIEW. ESSAS LEIS INCLUEM RESTRIÇÕES SOBRE DESTINOS, USUÁRIOS FINAIS E USO FINAL.
+
+14.6 O Contrato de licença não pode ser atribuído nem transferido por você sem a aprovação prévia por escrito da Google. Qualquer tentativa de atribuição sem a aprovação será inválida. Você não deve delegar as próprias responsabilidades ou obrigações nos termos do Contrato de licença sem aprovação prévia por escrito da Google.
+
+14.7 O Contrato de licença e sua relação com a Google nos termos do contrato serão regidos pelas leis do estado da Califórnia sem considerar conflitos de disposições legais. Você e a Google concordam em se submeter à competência exclusiva dos tribunais localizados na comarca de Santa Clara, Califórnia, para dirimir quaisquer questões legais decorrentes do Contrato de licença. Não obstante a isso, você concorda que a Google continua habilitada a impetrar medidas cautelares (ou mecanismo legal urgente equivalente) em qualquer jurisdição.
+  </div><!-- sdk terms -->
+
+
+
+    <div id="sdk-terms-form">
+      <p>
+        <input id="agree" type="checkbox" name="agree" value="1" onclick="onAgreeChecked()" />
+        <label id="agreeLabel" for="agree">Eu li e concordo com os termos e condições acima</label>
+      </p>
+      <p><a href="" class="button disabled" id="downloadForRealz" onclick="return onDownloadForRealz(this);"></a></p>
+    </div>
+
+
+  </div><!-- end TOS -->
+
+
+  <div id="landing">
+
+<div id="qv-wrapper">
+  <div id="qv">
+    <h2>Neste documento</h2>
+      <ol>
+        <li><a href="#device-preview">Configurar um dispositivo de hardware</a>
+          <ol>
+            <li><a href="#ota">Obter atualizações OTA</a></li>
+            <li><a href="#flash">Atualizar um dispositivo manualmente</a></li>
+            <li><a href="#revertDevice">Desinstalar</a></li>
+          </ol>
+        </li>
+        <li><a href="#setupAVD">Configurar um emulador</a></li>
+      </ol>
+  </div>
+</div>
+
+<p>
+  Para executar e testar o aplicativo na nova plataforma, você deve configurar um ambiente de tempo de execução do
+ Android N. Isso pode ser feito das seguintes maneiras:
+</p>
+
+<ul>
+  <li>Instale o Android N em um dispositivo de hardware compatível ou</li>
+  <li>Configure um emulador do Android que execute o Android N</li>
+</ul>
+
+<p>
+  Se quiser um ambiente para fazer testes básicos de compatibilidade do seu aplicativo na
+ nova plataforma, você só precisará do seu APK atual e de um dispositivo de hardware ou
+ emulador. Não é necessário atualizar o ambiente de desenvolvimento completo
+ para fazer testes básicos.
+</p>
+
+<p>
+  Se quiser modificar seu aplicativo para direcioná-lo ao Android N ou usar as novas APIs do Android N,
+ você deverá configurar um ambiente de desenvolvimento atualizado para oferecer suporte ao
+ Android N. O documento <a href="{@docRoot}preview/setup-sdk.html">Preparação para desenvolver para o
+ Android N</a> oferece os detalhes.
+</p>
+
+
+<h2 id="device-preview">Configurar um dispositivo de hardware</h2>
+
+<p>
+  O N Developer Preview oferece atualizações de sistema para diversos dispositivos de hardware
+ que podem ser usados para testar o aplicativo, de celulares a tablets e televisões.
+</p>
+
+<p>
+  Se você tiver acesso a um dispositivo compatível, poderá atualizá-lo para uma versão de marco do Developer
+ Preview de uma das seguintes maneiras:
+</p>
+
+<ul>
+  <li><strong>Inscreva o dispositivo nas atualizações de sistema automáticas por OTA</strong> usando o 
+ <a href="https://g.co/androidbeta">programa beta do Android</a>. Após a inscrição, seu dispositivo receberá atualizações regulares
+ por OTA de todas as versões de marco do N Developer Preview. Essa
+ abordagem é recomendada porque ela permite que você faça uma transição tranquila do seu ambiente
+ atual para as várias versões do N Developer Preview.</li>
+  <li><strong>Faça o download de uma imagem de sistema do Developer Preview e atualize o dispositivo manualmente</strong>.
+ Atualizações por OTA não são fornecidas automaticamente para dispositivos que são atualizados manualmente, mas
+ é possível inscrever esses dispositivos no programa beta do Android para receber atualizações por OTA. </li>
+</ul>
+
+<h3 id="ota">Inscrever o dispositivo para receber atualizações automáticas por OTA</h3>
+
+<p>
+  Se você tiver acesso a um dispositivo compatível (veja a lista na tabela de
+ downloads), poderá receber atualizações por OTA de versões do Preview do Android
+ ao inscrever esse dispositivo no <a href="https://g.co/androidbeta">programa beta do Android</a>. Essas atualizações são
+ baixadas automaticamente e serão aplicadas em seu dispositivo da mesma maneira que
+ atualizações de sistema oficiais.
+</p>
+
+<p>
+  Você pode cancelar a inscrição de um dispositivo a qualquer momento. O dispositivo receberá uma atualização por OTA
+ para a versão de produção mais recente disponível do Android para o dispositivo em questão
+ (por exemplo, o Android 6.0 Marshmallow). Essa atualização exige que o dispositivo seja
+ totalmente redefinido, portanto, os dados do usuário serão removidos. Não deixe de <strong>fazer o backup
+ de dados importantes</strong> antes de cancelar a inscrição de um dispositivo.
+</p>
+
+<p>
+  Para saber mais e para inscrever seu dispositivo, consulte
+ o site do <a href="https://g.co/androidbeta">programa beta do Android</a>.
+</p>
+
+<p class="note"><strong>Observação:</strong>
+ cancelar um dispositivo exige uma redefinição total. Faça primeiro o backup
+ de dados importantes.
+</p>
+
+<h3 id="flash">Atualizar um dispositivo manualmente</h3>
+
+<p>
+  A qualquer momento, você pode fazer o download da imagem de sistema mais recente do Developer Preview e
+ aplicá-la manualmente ao seu dispositivo. Consulte a tabela abaixo para fazer o download da imagem de sistema
+ para o dispositivo de teste. A atualização manual de um dispositivo é útil se você precisa de um
+ controle preciso sobre o ambiente de teste ou se precisa reinstalar com frequência,
+ como em testes automatizados. 
+</p>
+
+<!-- You can flash by ota or system image --><p>
+  Instalar uma imagem de sistema em um dispositivo <strong>remove todos os dados
+ do dispositivo</strong>, portanto, faça primeiro o backup dos dados.
+</p>
+
+<p>
+  Após fazer o backup dos dados do dispositivo e baixar a imagem de sistema abaixo que
+ corresponda ao seu dispositivo, siga as instruções em<a href="https://developers.google.com/android/nexus/images#instructions"> developers.google.com/android</a>
+ para aplicar a imagem no dispositivo.
+</p>
+
+<p>
+  Imagens de sistema atualizadas manualmente <strong>não recebem
+ atualizações por OTA automaticamente</strong> para versões de marco posteriores do
+ Developer Preview. Mantenha seu ambiente atualizado e aplique
+ uma nova imagem de sistema a cada marco do Developer Preview.
+</p>
+
+<p>
+  Se decidir que deseja obter atualizações por OTA após atualizar um dispositivo manualmente, 
+basta inscrevê-lo no <a href="https://g.co/androidbeta">programa beta do
+ Android</a>. É possível inscrever dispositivos a qualquer momento para receber a próxima atualização do Preview
+ por OTA. 
+</p>
+
+<table>
+  <tr>
+    <th scope="col">Dispositivo</th>
+    <th scope="col">Download / Checksums</th>
+  </tr>
+
+  <tr id="bullhead">
+    <td>Nexus 5X <br>"bullhead"</td>
+    <td><a href="#top" onclick="onDownload(this)">bullhead-npc56p-preview-6c877a3d.tgz</a><br>
+      MD5: b5cf874021023b398f5b983b24913f5d<br>
+      SHA-1: 6c877a3d9fae7ec8a1678448e325b77b7a7b143a
+    </td>
+  </tr>
+
+  <tr id="shamu">
+    <td>Nexus 6 <br>"shamu"</td>
+    <td><a href="#top" onclick="onDownload(this)">shamu-npc56p-preview-54b13c67.tgz</a><br>
+      MD5: af183638cf34e0eb944a1957d7696f60<br>
+      SHA-1: 54b13c6703d369cc79a8fd8728fe4103c6343973
+    </td>
+  </tr>
+
+  <tr id="angler">
+    <td>Nexus 6P <br>"angler"</td>
+    <td><a href="#top" onclick="onDownload(this)">angler-npc56p-preview-85ffc1b1.tgz</a><br>
+      MD5: bc4934ea7bd325753eee1606d3725a24<br>
+      SHA-1: 85ffc1b1be402b1b96f9ba10929e86bba6c6c588
+    </td>
+  </tr>
+
+  <tr id="volantis">
+    <td>Nexus 9 <br>"volantis"</td>
+    <td><a href="#top" onclick="onDownload(this)">volantis-npc56p-preview-0e8ec8ef.tgz</a><br>
+      MD5: c901334c6158351e945f188167ae56f4<br>
+      SHA-1: 0e8ec8ef98c7a8d4f58d15f90afc5176303efca4
+    </td>
+  </tr>
+
+  <tr id="volantisg">
+    <td>Nexus 9G <br>"volantisg"</td>
+    <td><a href="#top" onclick="onDownload(this)">volantisg-npc56p-preview-1bafdbfb.tgz</a><br>
+      MD5: 7bb95bebc478d7257cccb4652899d1b4<br>
+      SHA-1: 1bafdbfb502e979a9fe4c257a379c4c7af8a3ae6
+    </td>
+  </tr>
+
+  <tr id="fugu">
+    <td>Nexus Player <br>"fugu"</td>
+    <td><a href="#top" onclick="onDownload(this)">fugu-npc56r-preview-7027d5b6.tgz</a><br>
+      MD5: f5d3d8f75836ccfe4c70e8162e498be4<br>
+      SHA-1: 7027d5b662bceda4c80a91a0a14ef0e5a7ba795b
+    </td>
+  </tr>
+
+  <tr id="ryu">
+    <td>Pixel C <br>"ryu"</td>
+    <td><a href="#top" onclick="onDownload(this)">ryu-npc56p-preview-335a86a4.tgz</a><br>
+      MD5: 4e21fb183bbbf467bee91598d587fd2e<br>
+      SHA-1: 335a86a435ee51f18464de343ad2e071c38f0e92
+    </td>
+  </tr>
+  <tr id="seed">
+    <td>General Mobile 4G (Android One) <br>"seed"</td>
+    <td><a href="#top" onclick="onDownload(this)">seed_l8150-npc56p-preview-82472ebc.tgz</a><br>
+      MD5: 983e083bc7cd0c4a2d39d6ebaa20202a<br>
+      SHA-1: 82472ebc9a6054a103f53cb400a1351913c95127
+    </td>
+  </tr>
+
+</table>
+
+<h3 id="revertDevice">Desinstalar o Preview de um dispositivo</h3>
+
+<p>
+  O Preview pode ser desinstalado de um dispositivo de uma das
+ seguintes maneiras: </p>
+  <ul>
+    <li><strong>Obtenha uma imagem de sistema com especificações de fábrica</strong> e aplique-a
+ manualmente no dispositivo.
+      <ul>
+          <li>Para <strong>dispositivos Nexus e Pixel C</strong>, consulte
+ a página de downloads de <a href="http://developers.google.com/android/nexus/images">Imagens de fábrica
+ para dispositivos Nexus</a>. </li>
+        <li>Para <strong>outros dispositivos</strong>, entre em contato diretamente com 
+o fabricante. Como alternativa, se o dispositivo tiver suporte
+ no programa beta do Android, será possível inscrevê-lo no
+ programa e cancelar a inscrição (veja abaixo).</li>
+      </ul>
+    </li>
+    <li><strong>Cancele a inscrição do dispositivo no programa Beta do Android</strong>. Se o
+ dispositivo estiver inscrito no <a href="https://g.co/androidbeta">programa beta do
+ Android</a>, independentemente de qual ele seja, você poderá simplesmente cancelar a inscrição.
+  <p>
+    O dispositivo receberá uma atualização por OTA para a versão de produção mais recente
+ disponível do Android para o dispositivo em questão (por exemplo, o Android 6.0 Marshmallow).
+ Essa atualização exige que o dispositivo seja totalmente redefinido, portanto, os dados do usuário serão
+ removidos. Não deixe de <strong>fazer o backup de dados importantes</strong> antes
+ de cancelar a inscrição de um dispositivo.
+  </p>
+  </li>
+</ul>
+
+<p class="note"><strong>Observação:</strong>
+ para desinstalar uma imagem de sistema do Developer Preview antes do
+ fim do programa, é preciso redefinir o dispositivo por completo e remover todos os dados
+ do usuário no dispositivo.
+</p>
+
+
+<h2 id="setupAVD">Configurar um emulador</h2>
+
+<p>Para usar o emulador do Android para executar o Android N Preview, você deve
+fazer o download do Android N Preview SDK e criar um dispositivo virtual para o
+emulador.</p>
+
+<p>Primeiro, faça o download do Android N Preview SDK da seguinte maneira (se você
+já adquiriu esse recurso ao <a href="{@docRoot}preview/setup-sdk.html">se preparar
+para desenvolver para o Android N</a>, pule esta etapa):
+
+<ol>
+  <li>No Android Studio, abra a caixa de diálogo Settings
+ (<strong>File &gt; Settings</strong> no Windows/Linux ou
+ <strong>Android Studio &gt; Preferences</strong> no Mac). No painel à
+ esquerda, selecione <strong>Appearance &amp; Behavior &gt;
+ System Settings &gt; Android SDK</strong>.
+
+  <li>Clique na guia <strong>SDK Platforms</strong> e marque a caixa de seleção
+ <strong>Android N Preview</strong>.</li>
+
+  <li>Clique na guia <strong>SDK Tools</strong> e marque as caixas de seleção
+ <strong>Android SDK Build Tools</strong>, <strong>Android SDK
+ Platform-Tools</strong> e <strong>Android SDK Tools</strong>
+.
+  </li>
+
+  <li>Clique em <strong>OK</strong> e aceite os termos de licença
+ de qualquer pacote que precise ser instalado.
+  </li>
+</ol>
+
+<p>Agora, você deve ter o <strong>Android SDK Built-Tools 24.0 0 rc1</strong>,
+o <strong>Platform-Tools 24.0.0 rc1</strong> e o <strong>SDK Tools
+25.0.9</strong>. Se você não atualizar o SDK Tools para a versão 25.0.9, não será
+possível executar as imagens de sistema x86_64 para o Android N.</p>
+
+
+<p>Agora, crie um dispositivo virtual com a imagem de sistema do Android N:</p>
+
+<ol>
+  <li>Abra o AVD Manager selecionando <strong>Tools &gt; Android &gt;
+ AVD Manager</strong>.</li>
+  <li>Clique em <strong>Create Virtual Device</strong>.</li>
+  <li>Selecione um dispositivo como Nexus 5X, Nexus 6P, Nexus 9 ou Android TV
+ e clique em <strong>Next</strong>.</li>
+  <li>Selecione a imagem de sistema <strong>N</strong> (com ABI
+ <strong>x86</strong>) e clique em <strong>Next</strong>.
+ (Apenas imagens de sistema x86 atualmente são compatíveis com o emulador do Android
+para o Android N Preview.)
+  <li>Conclua a configuração do AVD e clique em
+ <strong>Finish</strong>.</li>
+</ol>
+
+<p>Agora, é possível iniciar o emulador do Android com o AVD Android N Preview.</p>
+
+<p>
+Para ter a melhor experiência possível com o emulador do Android, instale o 
+Android Studio 2.1 Preview, que oferece suporte ao <a href="http://tools.android.com/tech-docs/emulator">Android Emulator 2.0 Beta</a>,
+cujo desempenho é muito superior ao do emulador no
+Android Studio 1.5.</p>
+
+<p class="note"><strong>Observação:</strong>
+ se você está usando o Android Studio 2.0 Beta, há um problema conhecido
+ que impede a criação de AVDs com imagens de sistema do N Preview, portanto,
+ é preciso usar o Android Studio 2.1 Preview para criar AVDs.
+</p>
+
+<p>Para saber mais sobre como criar dispositivos virtuais para teste, consulte <a href="{@docRoot}tools/devices/index.html">Gerenciamento de dispositivos virtuais</a>.
+</p>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+  </div><!-- landing -->
+
+</div><!-- relative wrapper -->
+
+
+
+<script>
+  var urlRoot = "http://storage.googleapis.com/androiddevelopers/shareables/preview/";
+  function onDownload(link) {
+
+    $("#downloadForRealz").html("Download " + $(link).text());
+    $("#downloadForRealz").attr('href', urlRoot + $(link).text());
+
+    $("#tos").fadeIn('fast');
+    $("#landing").fadeOut('fast');
+
+    return true;
+  }
+
+
+  function onAgreeChecked() {
+    /* verify that the TOS is agreed */
+    if ($("input#agree").is(":checked")) {
+      /* reveal the download button */
+      $("a#downloadForRealz").removeClass('disabled');
+    } else {
+      $("a#downloadForRealz").addClass('disabled');
+    }
+  }
+
+  function onDownloadForRealz(link) {
+    if ($("input#agree").is(':checked')) {
+    /*
+      $("#tos").fadeOut('fast');
+      $("#landing").fadeIn('fast');
+    */
+
+      ga('send', 'event', 'M Preview', 'System Image', $("#downloadForRealz").html());
+
+    /*
+      location.hash = "";
+    */
+      return true;
+    } else {
+      return false;
+    }
+  }
+
+  $(window).hashchange( function(){
+    if (location.hash == "") {
+      location.reload();
+    }
+  });
+
+</script>
diff --git a/docs/html-intl/intl/pt-br/preview/features/background-optimization.jd b/docs/html-intl/intl/pt-br/preview/features/background-optimization.jd
new file mode 100644
index 0000000..a328d89
--- /dev/null
+++ b/docs/html-intl/intl/pt-br/preview/features/background-optimization.jd
@@ -0,0 +1,388 @@
+page.title=Otimizações em segundo plano
+page.metaDescription=Novas restrições a transmissões implícitas.
+page.keywords="android N", "implicit broadcasts", "job scheduler"
+@jd:body
+
+<div id="qv-wrapper">
+  <div id="qv">
+    <h2>
+      Neste documento
+    </h2>
+
+    <ol>
+      <li>
+        <a href="#connectivity-action">Restrições sobre CONNECTIVITY_ACTION</a>
+      </li>
+
+      <li>
+        <a href="#sched-jobs">Agendamento de trabalhos de rede em conexões
+ ilimitadas</a>
+      </li>
+
+      <li>
+        <a href="#monitor-conn">Monitoramento de conectividade de rede durante a execução
+ do aplicativo</a>
+      </li>
+
+      <li>
+        <a href="#media-broadcasts">Restrições sobre NEW_PICTURE e
+ NEW_VIDEO</a>
+      </li>
+
+      <li>
+        <a href="#new-jobinfo">Novos métodos JobInfo</a>
+      </li>
+
+      <li>
+        <a href="#new-jobparam">Novos métodos JobParameter</a>
+      </li>
+
+      <li>
+        <a href="#further-optimization">Otimização adicional do aplicativo</a>
+      </li>
+    </ol>
+  </div>
+</div>
+
+<p>
+  Os processos em segundo plano podem fazer uso intensivo de memória e bateria. Por exemplo, uma
+ transmissão implícita poderá iniciar diversos processos em segundo plano registrados
+ para escutá-la, mesmo se esses processos não forem muito usados. Isso pode afetar
+ substancialmente o desempenho do dispositivo e a experiência de usuário.
+</p>
+
+<p>
+  Para aliviar esse problema, o N Developer Preview aplica as seguintes
+ restrições:
+</p>
+
+<ul>
+  <li>Os aplicativos direcionados ao Preview não receberão transmissões {@link
+  android.net.ConnectivityManager#CONNECTIVITY_ACTION} se estiverem
+ registrados para recebê-las no seu manifesto. Aplicativos executados em primeiro plano
+ ainda poderão escutar {@code CONNECTIVITY_CHANGE} no encadeamento principal
+ registrando um {@link android.content.BroadcastReceiver} em {@link
+  android.content.Context#registerReceiver Context.registerReceiver()}.
+  </li>
+
+  <li>Os aplicativos não podem enviar nem receber transmissões {@link
+  android.hardware.Camera#ACTION_NEW_PICTURE} ou {@link
+  android.hardware.Camera#ACTION_NEW_VIDEO}. Essa otimização
+ afeta todos os aplicativos e não apenas os direcionados ao Preview.
+  </li>
+</ul>
+
+<p>
+  A estrutura do Android oferece diversas soluções para reduzir a necessidade dessas
+ transmissões implícitas. Por exemplo, {@link android.app.job.JobScheduler}
+ e <a href="https://developers.google.com/android/reference/com/google/android/gms/gcm/GcmNetworkManager">
+{@code GcmNetworkManager}</a> oferecem mecanismos robustos para agendar operações
+ de rede quando ocorrem condições especificadas, como conexão a uma
+ rede ilimitada. Agora, você também pode usar {@link android.app.job.JobScheduler}
+ para reagir a mudanças em provedores de conteúdo. Os objetos {@link android.app.job.JobInfo}
+ encapsulam os parâmetros usados por {@link android.app.job.JobScheduler}
+ para agendar o seu trabalho. Quando as condições do trabalho forem atendidas, o sistema
+ executará o trabalho no {@link android.app.job.JobService} do seu aplicativo.
+</p>
+
+<p>
+  Neste documento, veremos como usar métodos alternativos, como
+ {@link android.app.job.JobScheduler}, para adaptar seu aplicativo a essas novas
+ restrições.
+</p>
+
+<h2 id="connectivity-action">
+  Restrições sobre CONNECTIVITY_ACTION
+</h2>
+
+<p>
+  Os aplicativos direcionados ao N Developer Preview não receberão transmissões {@link
+  android.net.ConnectivityManager#CONNECTIVITY_ACTION} se estiverem
+ registrados para recebê-las no seu manifesto e os processos que dependerem dessas
+ transmissões não serão iniciados. Isso pode ser um problema para aplicativos que quiserem
+ escutar mudanças de rede ou executar atividades de rede em massa quando o
+ dispositivo se conectar a uma rede ilimitada. Já existem várias soluções para contornar essa
+ restrição na estrutura do Android, mas a escolha da solução correta
+ depende do que o aplicativo pretende realizar.
+</p>
+
+<p class="note">
+  <strong>Observação:</strong> um {@link android.content.BroadcastReceiver} registrado em 
+  {@link android.content.Context#registerReceiver Context.registerReceiver()}
+ continuará a receber essas transmissões enquanto o aplicativo estiver em primeiro plano.
+</p>
+
+<h3 id="sched-jobs">
+  Agendamento de trabalhos de rede em conexões ilimitadas
+</h3>
+
+<p>
+  Ao usar a classe {@link android.app.job.JobInfo.Builder JobInfo.Builder}
+ para compilar o objeto {@link android.app.job.JobInfo}, aplique o método {@link
+  android.app.job.JobInfo.Builder#setRequiredNetworkType
+  setRequiredNetworkType()} e passe {@link android.app.job.JobInfo
+  JobInfo.NETWORK_TYPE_UNMETERED} como parâmetro do trabalho. O código a seguir
+ agendará a execução de um serviço quando o dispositivo se conectar a uma rede
+ ilimitada e estiver carregando:
+</p>
+
+<pre>
+public static final int MY_BACKGROUND_JOB = 0;
+...
+public static void scheduleJob(Context context) {
+  JobScheduler js =
+      (JobScheduler) context.getSystemService(Context.JOB_SCHEDULER_SERVICE);
+  JobInfo job = new JobInfo.Builder(
+    MY_BACKGROUND_JOB,
+    new ComponentName(context, MyJobService.class))
+      .setRequiredNetworkType(JobInfo.NETWORK_TYPE_UNMETERED)
+      .setRequiresCharging(true)
+      .build();
+  js.schedule(job);
+}
+</pre>
+
+<p>
+  Quando as condições para o trabalho forem atendidas, o aplicativo receberá um retorno de chamada para executar
+ o método {@link android.app.job.JobService#onStartJob onStartJob()} na
+ {@code JobService.class} especificada. Para ver mais exemplos da implementação de {@link
+  android.app.job.JobScheduler}, consulte o <a href="{@docRoot}samples/JobScheduler/index.html">aplicativo de exemplo do JobScheduler</a>.
+</p>
+
+<p>
+  Os aplicativos que usarem serviços do GMSCore e forem direcionados ao Android 5.0 (nível da API 21)
+ ou anterior poderão usar <a href="https://developers.google.com/android/reference/com/google/android/gms/gcm/GcmNetworkManager">
+  {@code GcmNetworkManager}</a> e especificar {@code Task.NETWORK_STATE_UNMETERED}.
+</p>
+
+<h3 id="monitor-conn">
+  Monitoramento de conectividade de rede durante a execução do aplicativo
+</h3>
+
+<p>
+  Aplicativos executados em primeiro plano ainda poderão escutar {@code
+  CONNECTIVITY_CHANGE} com um {@link
+  android.content.BroadcastReceiver} registrado. No entanto, a API {@link
+  android.net.ConnectivityManager} oferece um método mais robusto para solicitar
+ um retorno de chamada apenas quando condições de rede especificadas são atendidas.
+</p>
+
+<p>
+  Os objetos {@link android.net.NetworkRequest} definem os parâmetros do
+ retorno de chamada de rede em termos de {@link android.net.NetworkCapabilities}. Objetos
+ {@link android.net.NetworkRequest} são criados com a classe {@link
+  android.net.NetworkRequest.Builder NetworkRequest.Builder}. Em seguida, {@link
+  android.net.ConnectivityManager#registerNetworkCallback(android.net.NetworkRequest,
+  android.net.ConnectivityManager.NetworkCallback) registerNetworkCallback()}
+ passa o objeto {@link android.net.NetworkRequest} ao sistema. Quando
+ as condições de rede forem atendidas, o aplicativo receberá um retorno de chamada para executar o
+ método {@link android.net.ConnectivityManager.NetworkCallback#onAvailable
+  onAvailable()} definido em sua classe {@link
+  android.net.ConnectivityManager.NetworkCallback}.
+</p>
+
+<p>
+  O aplicativo continuará a receber retornos de chamada até que o aplicativo encerre ou chame 
+  {@link android.net.ConnectivityManager#unregisterNetworkCallback
+  unregisterNetworkCallback()}.
+</p>
+
+<h2 id="media-broadcasts">
+  Restrições sobre NEW_PICTURE e NEW_VIDEO
+</h2>
+
+<p>
+  No N Developer Preview, os aplicativos não conseguem enviar nem receber transmissões {@link
+  android.hardware.Camera#ACTION_NEW_PICTURE} ou {@link
+  android.hardware.Camera#ACTION_NEW_VIDEO}. Essa restrição ajuda a
+ aliviar os impactos no desempenho e na experiência de usuário quando vários aplicativos devem
+ despertar para processar uma nova imagem ou vídeo. O N Developer Preview
+ estende {@link android.app.job.JobInfo} e {@link
+  android.app.job.JobParameters} para oferecer uma solução alternativa.
+</p>
+
+<h3 id="new-jobinfo">
+  Novos métodos JobInfo
+</h3>
+
+<p>
+  Para acionar trabalhos em mudanças de URI de conteúdo, o N Developer Preview estende
+ a API {@link android.app.job.JobInfo} com os seguintes métodos:
+</p>
+
+<dl>
+  <dt>
+    {@code JobInfo.TriggerContentUri()}
+  </dt>
+
+  <dd>
+    Encapsula os parâmetros necessários para acionar um trabalho quando ocorrem mudanças de URI de conteúdo.
+  </dd>
+
+  <dt>
+    {@code JobInfo.Builder.addTriggerContentUri()}
+  </dt>
+
+  <dd>
+    Passa um objeto {@code TriggerContentUri} para {@link
+    android.app.job.JobInfo}. Um {@link android.database.ContentObserver}
+ monitora o URI de conteúdo encapsulado. Se houver vários objetos {@code
+    TriggerContentUri} associados a um trabalho, o sistema fornecerá um
+ retorno de chamada, mesmo se indicar uma mudança em apenas um dos URIs de conteúdo.
+  </dd>
+
+  <dd>
+    Adicione o sinalizador {@code TriggerContentUri.FLAG_NOTIFY_FOR_DESCENDANTS} para
+ acionar o trabalho em caso de mudança em qualquer um dos descendentes do URI especificado. Esse indicador
+ corresponde ao parâmetro {@code notifyForDescendants} passado para {@link
+    android.content.ContentResolver#registerContentObserver
+    registerContentObserver()}.
+  </dd>
+</dl>
+
+<p class="note">
+  <strong>Observação:</strong> não é possível usar {@code TriggerContentUri()}
+ juntamente com {@link android.app.job.JobInfo.Builder#setPeriodic
+  setPeriodic()} ou {@link android.app.job.JobInfo.Builder#setPersisted
+  setPersisted()}. Para monitorar continuamente mudanças de conteúdo, agende um novo
+ {@link android.app.job.JobInfo} antes que o {@link
+  android.app.job.JobService} do aplicativo encerre o processamento do retorno de chamada mais recente.
+</p>
+
+<p>
+  O exemplo de código a seguir agenda um trabalho que será acionado quando o sistema indicar
+ uma mudança no URI de conteúdo {@code MEDIA_URI}:
+</p>
+
+<pre>
+public static final int MY_BACKGROUND_JOB = 0;
+...
+public static void scheduleJob(Context context) {
+  JobScheduler js =
+          (JobScheduler) context.getSystemService(Context.JOB_SCHEDULER_SERVICE);
+  JobInfo.Builder builder = new JobInfo.Builder(
+          MY_BACKGROUND_JOB,
+          new ComponentName(context, MediaContentJob.class));
+  builder.addTriggerContentUri(
+          new JobInfo.TriggerContentUri(MEDIA_URI,
+          JobInfo.TriggerContentUri.FLAG_NOTIFY_FOR_DESCENDANTS));
+  js.schedule(builder.build());
+}
+</pre>
+<p>
+  Quando o sistema indicar uma mudança nos URIs de conteúdo especificados, o aplicativo
+ receberá um retorno de chamada e um objeto {@link android.app.job.JobParameters} será
+ passado para o método {@link android.app.job.JobService#onStartJob onStartJob()}
+ na {@code MediaContentJob.class}.
+</p>
+
+<h3 id="new-jobparam">
+  Novos métodos JobParameter
+</h3>
+
+<p>
+  O N Developer Preview também estende {@link android.app.job.JobParameters} para
+ permitir que o aplicativo receba informações úteis sobre quais autoridades de conteúdo
+ e URIs acionaram o trabalho:
+</p>
+
+<dl>
+  <dt>
+    {@code Uri[] getTriggeredContentUris()}
+  </dt>
+
+  <dd>
+    Retorna uma matriz de URIs que acionaram o trabalho. O retorno será {@code
+    null} se o trabalho não foi acionado por URIs (por exemplo, o trabalho foi
+ acionado devido a um prazo ou por outro motivo) ou o número de URIs modificados
+ for maior que 50.
+  </dd>
+
+  <dt>
+    {@code String[] getTriggeredContentAuthorities()}
+  </dt>
+
+  <dd>
+    Retorna uma matriz de strings de autoridades de conteúdo que acionaram o trabalho.
+    Se a matriz retornada não for {@code null}, use {@code getTriggeredContentUris()}
+ para recuperar os detalhes sobre quais URIs foram modificados.
+  </dd>
+</dl>
+
+<p>
+  O exemplo de código a seguir substitui o método {@link
+  android.app.job.JobService#onStartJob JobService.onStartJob()} e
+ registra as autoridades de conteúdo e URIs que acionaram o trabalho:
+</p>
+
+<pre>
+&#64;Override
+public boolean onStartJob(JobParameters params) {
+  StringBuilder sb = new StringBuilder();
+  sb.append("Media content has changed:\n");
+  if (params.getTriggeredContentAuthorities() != null) {
+      sb.append("Authorities: ");
+      boolean first = true;
+      for (String auth :
+          params.getTriggeredContentAuthorities()) {
+          if (first) {
+              first = false;
+          } else {
+             sb.append(", ");
+          }
+           sb.append(auth);
+      }
+      if (params.getTriggeredContentUris() != null) {
+          for (Uri uri : params.getTriggeredContentUris()) {
+              sb.append("\n");
+              sb.append(uri);
+          }
+      }
+  } else {
+      sb.append("(No content)");
+  }
+  Log.i(TAG, sb.toString());
+  return true;
+}
+</pre>
+
+<h2 id="further-optimization">
+  Otimização adicional do aplicativo
+</h2>
+
+<p>
+  A otimização dos aplicativos para execução em dispositivos com pouca memória ou em
+ condições de pouca memória pode melhorar o desempenho e a experiência do usuário. A remoção de
+ dependências de serviços em segundo plano e receptores de transmissão
+ implícita registrados estatisticamente podem aprimorar a execução do aplicativo nesses dispositivos. Embora
+ o N Developer Preview avance na redução de alguns desses problemas,
+ recomendamos que você otimize os aplicativos para execução sem o uso desses
+ processos em segundo plano.
+</p>
+
+<p>
+  O N Developer Preview introduz alguns comandos adicionais do <a href="{@docRoot}tools/help/adb.html">Bridge de Debug Android (ADB)</a> que
+ podem ser usados para testar o comportamento do aplicativo de teste com esses processos em segundo plano desativados:
+</p>
+
+<ul>
+  <li>Para simular condições em que transmissões implícitas e serviços em segundo plano
+ não estão disponíveis, insira o seguinte comando:
+  </li>
+
+  <li style="list-style: none; display: inline">
+<pre class="no-pretty-print">
+{@code $ adb shell cmd appops set RUN_IN_BACKGROUND ignore}
+</pre>
+  </li>
+
+  <li>Para reativar transmissões implícitas e serviços em segundo plano, insira o
+ seguinte comando:
+  </li>
+
+  <li style="list-style: none; display: inline">
+<pre class="no-pretty-print">
+{@code $ adb shell cmd appops set RUN_IN_BACKGROUND allow}
+</pre>
+  </li>
+</ul>
\ No newline at end of file
diff --git a/docs/html-intl/intl/pt-br/preview/features/direct-boot.jd b/docs/html-intl/intl/pt-br/preview/features/direct-boot.jd
new file mode 100644
index 0000000..a462b23
--- /dev/null
+++ b/docs/html-intl/intl/pt-br/preview/features/direct-boot.jd
@@ -0,0 +1,180 @@
+page.title=Inicialização direta
+page.keywords=preview,sdk,direct boot
+page.tags=androidn
+
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+  <h2>Neste documento</h2>
+  <ol>
+    <li><a href="#run">Solicitar acesso para executar durante a inicialização direta</a></li>
+    <li><a href="#access">Acessar armazenamento criptografado do dispositivo</a></li>
+    <li><a href="#notification">Receber notificação quando o usuário desbloquear</a></li>
+    <li><a href="#migrating">Migrar dados existentes</a></li>
+    <li><a href="#testing">Testar seu aplicativo com reconhecimento de criptografia</a></li>
+  </ol>
+</div>
+</div>
+
+<p>O Android N é executado em um modo seguro de <i>inicialização direta</i> 
+quando o dispositivo é ligado, mas o usuário não o
+desbloqueia. Para isso, o sistema oferece dois locais de armazenamento para dados:</p>
+
+<ul>
+<li><i>O armazenamento criptografado de credenciais</i>, que é o local de armazenamento padrão
+e é disponibilizado apenas depois que o usuário desbloqueia o dispositivo.</li>
+<li><i>O armazenamento criptografado do dispositivo</i>, que é um local de armazenamento disponibilizado
+durante o modo de inicialização direta e depois que o usuário desbloqueia o dispositivo.</li>
+</ul>
+
+<p>Por padrão, aplicativos não são executados no modo de inicialização direta.
+Se seu aplicativo precisa executar ações durante esse modo, você pode registrar os
+componentes que devem ser executados. Alguns casos comuns
+para aplicativos que precisam ser executados no modo de inicialização direta:</p>
+
+<ul>
+<li>Aplicativos com notificações programadas, como aplicativos de
+relógio.</li>
+<li>Aplicativos que fornecem notificações importantes ao usuário, como aplicativos de SMS.</li>
+<li>Aplicativos que fornecem serviços de acessibilidade, como o Talkback.</li>
+</ul>
+
+<p>Se seu aplicativo precisar acessar dados enquanto estiver no modo de inicialização direta, use
+o armazenamento criptografado do dispositivo. O armazenamento criptografado do dispositivo contém dados
+criptografados com uma chave que só é disponibilizada depois que o dispositivo realizou
+uma inicialização verificada com sucesso.</p>
+
+<p>Para dados que devem ser criptografados com uma chave associada às credenciais
+do usuário, como um PIN ou uma chave, use o armazenamento criptografado de credenciais.
+Esse armazenamento só é disponibilizado depois que o usuário
+desbloquear o dispositivo com sucesso e até que ele reinicie o dispositivo novamente. Se o
+usuário ativar a tela de bloqueio após desbloquear o dispositivo, isso não bloqueará
+o armazenamento criptografado de credenciais.</p>
+
+<h2 id="run">Solicitar acesso para executar durante a inicialização direta</h2>
+
+<p>Aplicativos devem registrar seus componentes com o sistema antes de
+poderem ser executados no modo de inicialização direta ou acessar o armazenamento criptografado
+do dispositivo. Os aplicativos são registrados com o sistema ao marcar os componentes como
+<i>tendo reconhecimento de criptografia</i>. Para marcar seu componente como tendo reconhecimento de criptografia, defina o atributo
+<code>android:encryptionAware</code> como true no manifesto.<p>
+
+<p>Componentes com reconhecimento de criptografia podem se registrar para receber uma mensagem de transmissão
+<code>LOCKED_BOOT_COMPLETED</code> do
+sistema quando o dispositivo for reiniciado. Nesse momento, o armazenamento criptografado do
+dispositivo é disponibilizado e pode executar tarefas
+necessárias durante o modo de inicialização, como o acionamento de um alarme programado.</p>
+
+<p>O fragmento de código a seguir é um exemplo de como registrar um
+{@link android.content.BroadcastReceiver} como tendo reconhecimento de criptografia e adicionar um
+filtro de intenção para <code>LOCKED_BOOT_COMPLETED</code> no manifesto do aplicativo:</p>
+
+<pre>
+&lt;receiever
+  android:encryptionAware="true" &gt;
+  ...
+  &lt;intent-filter&gt;
+    &lt;action android:name="android.intent.action.LOCKED_BOOT_COMPLETED" /&gt;
+  &lt;/intent-filter&gt;
+&lt;/receiver&gt;
+</pre>
+
+<p>Quando o usuário desbloquear o dispositivo, todos os componentes poderão acessar o armazenamento
+criptografado do dispositivo e o armazenamento criptografado de credenciais.</p>
+
+<h2 id="access">Acessar armazenamento criptografado do dispositivo</h2>
+
+<p>Para acessar o armazenamento criptografado do dispositivo, crie uma segunda instância de
+{@link android.content.Context} chamando
+<code>Context.createDeviceEncryptedStorageContext()</code>. Todas as chamadas da API
+de armazenamento que usam esse contexto acessam o armazenamento criptografado do dispositivo. O
+exemplo a seguir acessa o armazenamento criptografado do dispositivo e abre um
+arquivo de dados existente do aplicativo:</p>
+
+<pre>
+Context directBootContext = Context.createDeviceEncryptedStorageContext();
+// Access appDataFilename that lives in device encrypted storage
+FileInputStream inStream = directBootContext.openFileInput(appDataFilename);
+// Use inStream to read content...
+</pre>
+
+<p>Use o armazenamento criptografado do dispositivo somente para
+informações que precisem ser acessadas durante o modo de inicialização direta.
+Não use o armazenamento criptografado do dispositivo como um repositório criptografado para fins gerais.
+Para informações particulares do usuário ou dados criptografados que não são necessários durante
+o modo de inicialização direta, use o armazenamento criptografado de credenciais.</p>
+
+<h2 id="notification">Receber notificação quando o usuário desbloquear</h2>
+
+<p>Quando o usuário desbloquear o dispositivo após a reinicialização, seu aplicativo poderá voltar
+a acessar o armazenamento criptografado de credenciais e usar serviços regulares do sistema que
+dependem das credenciais do usuário.</p>
+
+<p>Para receber uma notificação quando o usuário desbloquear o dispositivo após uma reinicialização,
+registre um {@link android.content.BroadcastReceiver} do componente em execução
+para ouvir a mensagem <code>ACTION_USER_UNLOCKED</code>. Você também pode
+receber a mensagem {@link android.content.Intent#ACTION_BOOT_COMPLETED
+ACTION_BOOT_COMPLETED} existente, que agora indica que o dispositivo foi inicializado e que
+o usuário o desbloqueou.</p>
+
+<p>Você pode enviar uma consulta diretamente se o usuário desbloquear o dispositivo chamando
+<code>UserManager.isUserUnlocked()</code>.</p>
+
+<h2 id="migrating">Migrar dados existentes</h2>
+
+<p>Se um usuário atualizar o dispositivo para usar o modo de inicialização direta, você poderá ter dados
+existentes que precisem ser migrados para o armazenamento criptografado do dispositivo. Use
+<code>Context.migrateSharedPreferencesFrom()</code> e
+<code>Context.migrateDatabaseFrom()</code> para migrar dados de preferências e do banco de
+dados entre o armazenamento criptografado de credenciais e o armazenamento criptografado do dispositivo.</p>
+
+<p>Tenha bom senso ao decidir quais dados migrar do armazenamento
+criptografado de credenciais para o armazenamento criptografado do dispositivo. Não migre
+informações particulares do usuário, como senhas ou tokens de autorização, para o
+armazenamento criptografado do dispositivo. Em alguns casos, pode ser necessário gerenciar
+conjuntos separados de dados nos dois repositórios criptografados.</p>
+
+<h2 id="testing">Testar seu aplicativo com reconhecimento de criptografia</h2>
+
+<p>Teste seu aplicativo com reconhecimento de criptografia usando o novo modo de inicialização direta. Existem duas
+maneiras de ativar a inicialização direta.</p>
+
+<p class="caution"><strong>Cuidado:</strong> ao ativar a inicialização direta,
+você apaga todos os dados do usuário no dispositivo.</p>
+
+<p>Em dispositivos compatíveis com o Android N instalado, ative a
+inicialização direta seguindo um destes procedimentos:</p>
+
+<ul>
+<li>No dispositivo, ative <b>Developer options</b>, se ainda não tiver feito isso,
+acessando <b>Settings &gt; About phone</b> e tocando em <b>Build number</b>
+sete vezes. Quando a tela de opções do desenvolvedor for disponibilizada, acesse
+<b>Settings &gt; Developer options</b> e selecione
+<b>Convert to file encryption</b>.</li>
+<li>Use os seguintes comandos de shell adb para ativar o modo de inicialização direta:
+<pre class="no-pretty-print">
+$ adb reboot-bootloader
+$ fastboot --wipe-and-use-fbe
+</pre>
+</li>
+</ul>
+
+<p>Um modo de inicialização direta emulado também está disponível, caso você precise trocar
+de modo nos dispositivos de teste. O modo emulado só deve ser usado durante
+o desenvolvimento e pode causar perda de dados. Para ativar o modo de inicialização direta,
+defina um padrão de bloqueio no dispositivo, escolha "No thanks", caso seja solicitada
+uma tela de inicialização segura ao definir esse padrão, e, em seguida, use o
+seguinte comando de shell adb:</p>
+
+<pre class="no-pretty-print">
+$ adb shell sm set-emulate-fbe true
+</pre>
+
+<p>Para desativar o modo de inicialização direta emulado, use o seguinte comando:</p>
+
+<pre class="no-pretty-print">
+$ adb shell sm set-emulate-fbe false
+</pre>
+
+<p>O uso desses comandos faz com que o dispositivo seja reinicializado.</p>
diff --git a/docs/html-intl/intl/pt-br/preview/features/icu4j-framework.jd b/docs/html-intl/intl/pt-br/preview/features/icu4j-framework.jd
new file mode 100644
index 0000000..290ea0d
--- /dev/null
+++ b/docs/html-intl/intl/pt-br/preview/features/icu4j-framework.jd
@@ -0,0 +1,158 @@
+page.title=APIs de estrutura do Android para ICU4J
+
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+<h2>Neste documento:</h2>
+<ol>
+    <li><a href="#relation">Relação com o ICU4J</a></li>
+    <li><a href="#migration">Migrar para APIs android.icu do ICU4J </a></li>
+    <li><a href="#licence">Licenciamento</a></li>
+</ol>
+
+<h2>Veja também</h2>
+<ol>
+  <li>
+    <a class="external-link" href="http://userguide.icu-project.org">Documentação para ICU4J</a>
+  </li>
+
+  <li>
+    <a class="external-link" href="http://site.icu-project.org/#TOC-What-is-ICU-">Últimos padrões com suporte
+ do ICU4J</a>
+  </li>
+</ol>
+</div>
+</div>
+
+<p>
+  O ICU4J é um conjunto de bibliotecas Java de código aberto e amplamente usadas que fornecem suporte para Unicode
+ e globalização para aplicativos de software. O Android N
+ expõe um subconjunto de APIs do ICU4J na estrutura do Android para uso dos desenvolvedores de aplicativos
+ no pacote {@code android.icu}. Essas APIs usam
+ dados de localização presentes no dispositivo. Consequentemente, você pode reduzir o uso de APK
+ ao não compilar as bibliotecas do ICU4J no seu APK. Em vez disso, pode
+ simplesmente chamá-las na estrutura. (Neste caso, pode ser conveniente fornecer
+ <a href="{@docRoot}google/play/publishing/multiple-apks.html">várias versões
+ do seu APK</a> para que os usuários que tenham versões inferiores ao Android N
+ possam fazer o download de uma versão do aplicativo que contenha as bibliotecas do ICU4J.)
+</p>
+
+<p>
+  Este documento começa fornecendo informações básicas sobre os níveis mínimos da
+ Android API necessários para oferecer suporte a essas bibliotecas. Em seguida, ele explica o que
+ você deve saber sobre a implementação do ICU4J específica do Android. Por fim,
+ ele informa como usar as APIs do ICU4J na estrutura do Android.
+</p>
+
+<h2 id="relation">Relação com o ICU4J</h2>
+
+<p>
+  O Android N expõe um subconjunto de APIs do ICU4J por meio do pacote
+ <code>android.icu</code>, não do <code>com.ibm.icu</code>. A
+ estrutura do Android pode optar por não
+ expor as APIs do ICU4J por diversos motivos. Por exemplo, o Android N não expõe
+ algumas APIs obsoletas ou APIs que a equipe do ICU ainda não declarou como
+ estáveis. Conforme a equipe do ICU torna APIs obsoletas, o Android também as marcará
+ como obsoletas, mas continuará incluindo-as.
+</p>
+
+<p class="table-caption"><strong>Tabela 1.</strong> Versões ICU e CLDR usadas
+ no Android N.</p>
+<table>
+<tr>
+<th>Nível da Android API</th>
+<th>Versão ICU</th>
+<th>Versão CLDR</th>
+</tr>
+<tr>
+<td>Android N</td>
+<td>56</td>
+<td>28</td>
+</tr>
+</table>
+
+<p>Algumas observações importantes:</p>
+
+<ul>
+<li>As APIs de estrutura do Android para ICU4J não incluem todas as APIs do ICU4J.</li>
+<li>Desenvolvedores de NDK devem saber que o Android ICU4C não é compatível.</li>
+<li>As APIs da estrutura do Android não substituem o suporte do Android para a
+<a href="{@docRoot}guide/topics/resources/localization.html">localização com
+recursos</a>.</li>
+</ul>
+
+<h2 id="migration">Migrar do pacote com.ibm.icu para o android.icu</h2>
+
+<p>
+  Se você já estiver usando as APIs do ICU4J no seu aplicativo e as APIs
+ <code>android.icu</code> atenderem aos seus requisitos, a migração para
+ as APIs de estrutura exigirão que você altere as importações Java
+ de <code>com.ibm.icu</code> para <code>android.icu</code>. Você, então, poderá
+ remover sua própria cópia dos arquivos do ICU4J do APK.
+</p>
+
+<p class="note">
+  <b>Observação</b>: As APIs de estrutura do ICU4J usam o espaço de nome {@code android.icu}
+ em vez de {@code com.ibm.icu}. Isso ocorre para evitar conflitos
+ de espaço de nome em APKs que contêm as próprias bibliotecas {@code com.ibm.icu}.
+</p>
+
+<h3 id="migrate-from-android">
+  Migrar para APIs android.icu de outras APIs do Android SDK
+</h3>
+
+<p>
+  Algumas classes dos pacotes <code>java</code> e <code>android</code> têm
+ equivalentes para as encontradas no ICU4J. No entanto, o ICU4J frequentemente fornece um suporte
+ mais amplo para padrões e linguagens.
+</p>
+<p>Alguns exemplos para você começar:</p>
+<table>
+<tr>
+<th>Classe</th>
+<th>Alternativas</th>
+</tr>
+<tr>
+<td><code>java.lang.Character</code> </td>
+<td><code>android.icu.lang.UCharacter</code> </td>
+</tr>
+<tr>
+<td><code>java.text.BreakIterator</code> </td>
+<td><code>android.icu.text.BreakIterator</code> </td>
+</tr>
+<tr>
+<td><code>java.text.DecimalFormat</code> </td>
+<td><code>android.icu.text.DecimalFormat</code> </td>
+</tr>
+<tr>
+<td><code>java.util.Calendar</code></td>
+<td>
+<code>android.icu.util.Calendar</code></td>
+</tr>
+<tr>
+<td><code>android.text.BidiFormatter</code>
+ </td>
+<td><code>android.icu.text.Bidi</code>
+ </td>
+</tr>
+<tr>
+<td><code>android.text.format.DateFormat</code>
+ </td>
+<td><code>android.icu.text.DateFormat</code>
+ </td>
+</tr>
+<tr>
+<td><code>android.text.format.DateUtils</code> </td>
+<td><code>android.icu.text.DateFormat</code>
+<code>android.icu.text.RelativeDateTimeFormatter</code>
+</td>
+</tr>
+</table>
+
+<h2 id="licence">Licenciamento</h2>
+
+<p>
+  O ICU4J é liberado sob a licença do ICU. Para saber mais, consulte o <a class="external-link" href="http://userguide.icu-project.org/icufaq#TOC-How-is-the-ICU-licensed-">Guia do usuário do
+ ICU.</a>
+</p>
diff --git a/docs/html-intl/intl/pt-br/preview/features/multi-window.jd b/docs/html-intl/intl/pt-br/preview/features/multi-window.jd
new file mode 100644
index 0000000..31fa012
--- /dev/null
+++ b/docs/html-intl/intl/pt-br/preview/features/multi-window.jd
@@ -0,0 +1,582 @@
+page.title=Suporte a várias janelas
+page.metaDescription=Novo suporte à exibição de mais de um aplicativo ao mesmo tempo no Android N.
+page.keywords="multi-window", "android N", "split screen", "free-form"
+
+@jd:body
+
+<div id="qv-wrapper">
+  <div id="qv">
+    <h2>Neste documento</h2>
+      <ol>
+        <li><a href="#overview">Visão geral</a></li>
+        <li><a href="#lifecycle">Ciclo de vida do modo de várias janelas</a></li>
+        <li><a href="#configuring">Configuração do aplicativo para o modo
+ de várias janelas</a></li>
+        <li><a href="#running">Execução do aplicativo no modo de várias janelas</a></li>
+        <li><a href="#testing">Teste do suporte a várias janelas em seu aplicativo</a></li>
+      </ol>
+    <h2>Veja também</h2>
+      <ol>
+        <li><a class="external-link" href="https://github.com/googlesamples/android-MultiWindowPlayground">Playground - aplicativo de exemplo
+ do modo de várias janelas</a></li>
+      </ol>
+  </div>
+</div>
+
+<p>
+  O Android N adiciona suporte à exibição de mais de um aplicativo ao
+ mesmo tempo. Em dispositivos portáteis, dois aplicativos podem ser executados lado a lado ou
+ um acima do outro no modo de <em>tela dividida</em>. Em dispositivos de TV, os aplicativos podem
+ usar o modo de <em>imagem em imagem</em> para continuar a reprodução do vídeo enquanto os usuários
+ interagem com outro aplicativo.
+</p>
+
+<p>
+  Se você compilar o aplicativo com o N Preview SDK, poderá configurar como o aplicativo
+ processa a exibição de várias janelas. Por exemplo, você pode especificar as dimensões 
+mínimas permitidas para a atividade. Você também pode desativar a exibição de várias janelas para
+ o aplicativo, garantindo que o sistema mostre o aplicativo apenas 
+em modo de tela inteira.
+</p>
+
+<h2 id="overview">Visão geral</h2>
+
+<p>
+  O Android N permite que diversos aplicativos compartilhem a tela ao mesmo tempo. Por
+ exemplo, um usuário pode dividir a tela para visualizar uma página da web no lado esquerdo
+ e compor um e-mail no lado direito. A experiência do usuário depende do
+ dispositivo:
+</p>
+
+<ul>
+  <li>Os dispositivos portáteis que executam o Android N oferecem o
+ modo de tela dividida. Nesse modo, o sistema preenche a tela com dois aplicativos, exibindo-os
+ lado a lado ou um acima do outro. O usuário pode arrastar a linha divisória
+ que separa os dois para que um aplicativo fique maior e o outro menor.
+  </li>
+
+  <li>No Nexus Player executando Android N, os aplicativos podem entrar
+ no <a href="picture-in-picture.html">modo de imagem em imagem</a>, o que permite
+ que continuem a exibir conteúdo enquanto o usuário navega ou interage com
+ outros aplicativos.
+  </li>
+
+  <li>Fabricantes de dispositivos maiores podem optar pelo modo de
+ forma livre, em que o usuário pode redimensionar livremente cada atividade. Se o
+ fabricante ativar esse recurso, o dispositivo oferecerá o modo de forma livre
+ e o modo de tela dividida.
+  </li>
+</ul>
+
+<img src="{@docRoot}preview/images/mw-splitscreen.png" alt="" width="650" srcset="{@docRoot}preview/images/mw-splitscreen.png 1x,
+    {@docRoot}preview/images/mw-splitscreen_2x.png 2x," id="img-split-screen" />
+<p class="img-caption">
+  <strong>Figura 1.</strong> Dois aplicativos executando lado a lado em modo de tela dividida.
+</p>
+
+<p>
+  O usuário pode mudar para o modo de várias janelas das seguintes maneiras:
+</p>
+
+<ul>
+  <li>Se o usuário abrir a <a href="{@docRoot}guide/components/recents.html">tela
+ Overview</a> e pressionar longamente um
+ título de atividade, poderá arrastá-la para uma parte destacada da
+ tela para colocá-la no modo de várias janelas.
+  </li>
+
+  <li>Se o usuário pressionar longamente o botão Overview, o dispositivo colocará
+ a atividade atual no modo de várias janelas e abrirá a tela Overview para
+ permitir que o usuário escolha outra atividade para compartilhar a tela.
+  </li>
+</ul>
+
+<p>
+  Os usuários podem <a href="{@docRoot}guide/topics/ui/drag-drop.html">arrastar e
+ soltar</a> dados de uma atividade para outra enquanto as atividades compartilham
+ a tela. (Anteriormente, os usuários podiam apenas arrastar e soltar dados em uma única
+ atividade.)
+</p>
+
+<h2 id="lifecycle">Ciclo de vida do modo de várias janelas</h2>
+
+<p>
+  O modo de várias janelas não altera o <a href="{@docRoot}training/basics/activity-lifecycle/index.html">ciclo de vida
+ da atividade</a>.
+</p>
+
+<p>
+  No modo de várias janelas, somente a atividade com a qual o usuário interagiu mais recentemente
+ fica ativa em um determinado momento. Essa atividade é considerada a atividade <em>superior</em>.
+  Todas as outras atividades ficam no estado pausado, mesmo se visíveis.
+  No entanto, o sistema atribui a essas atividades pausadas, mas visíveis, uma prioridade maior
+ que a das atividades não visíveis. Se o usuário interagir com uma das
+ atividades pausadas, ela será retomada e a atividade previamente superior
+ será pausada.
+</p>
+
+<p class="note">
+  <strong>Observação:</strong> em modo de suporte a várias janelas, um aplicativo pode estar no estado
+ pausado e continuar visível ao usuário. Pode ser necessário que um aplicativo continue com suas
+ atividades, mesmo se pausado. Por exemplo, um aplicativo que reproduz vídeo e que está no
+ modo pausado, mas visível, deve continuar a exibir o vídeo. Por esse
+ motivo, recomendamos que atividades que reproduzem vídeo <em>não</em> pausem o
+ vídeo nos manipuladores {@link android.app.Activity#onPause onPause()}.
+  Em vez disso, o vídeo deve ser pausado em {@link android.app.Activity#onStop
+  onStop()} e a reprodução retomada em {@link android.app.Activity#onStart
+  onStart()}.
+</p>
+
+<p>
+  Quando o usuário coloca um aplicativo no modo de várias janelas, o sistema notifica a
+ atividade sobre a mudança de configuração, como especificado em <a href="{@docRoot}guide/topics/resources/runtime-changes.html">Processamento de alterações
+ no tempo de execução</a>. Essencialmente, essa alteração afeta
+ o ciclo de vida da atividade da mesma forma que quando o sistema notifica o aplicativo de que o dispositivo mudou
+ do modo de retrato para paisagem, exceto que as dimensões do dispositivo são
+ alteradas, em vez de simplesmente permutadas. Como discutido em <a href="{@docRoot}guide/topics/resources/runtime-changes.html">Processamento de alterações
+ no tempo de execução</a>, a sua atividade pode processar ela mesma a mudança de configuração ou
+ permitir que o sistema destrua a atividade e recrie-a com as novas
+ dimensões.
+</p>
+
+<p>
+  Se o usuário redimensionar uma janela e aumentar uma de suas dimensões, o
+ sistema redimensionará a atividade para corresponder à ação do usuário e emitirá <a href="{@docRoot}guide/topics/resources/runtime-changes.html">mudanças de tempo de execução</a>
+ conforme necessário. Se o aplicativo demorar a desenhar nas áreas recém-expostas, o
+ sistema preencherá temporariamente essas áreas com a cor especificada pelo atributo {@link
+  android.R.attr#windowBackground windowBackground} ou pelo atributo de estilo padrão
+ <code>windowBackgroundFallback</code>.
+</p>
+
+<h2 id="configuring">Configuração do aplicativo para o modo de várias janelas</h2>
+
+<p>
+  Se o seu aplicativo for direcionado ao Android N, você poderá configurar como
+ e se as atividades do aplicativo suportam a exibição em várias janelas. Você pode definir
+ atributos no manifesto para controlar o tamanho e o layout.
+  As definições de atributos de uma atividade raiz se aplicam a todas as atividades
+ em sua pilha de tarefas.
+</p>
+
+<p class="note">
+  <strong>Observação:</strong> se você compilar um aplicativo com várias orientações usando uma versão
+ do SDK anterior ao Android N e o usuário usar o aplicativo em
+ modo de suporte a várias janelas, o sistema redimensionará forçosamente o aplicativo. O sistema apresenta uma
+ caixa de diálogo avisando o usuário de que o aplicativo pode se comportar de forma inesperada. O sistema
+ <em>não</em> redimensiona aplicativos de orientação fixa; se
+ o usuário tentar abrir um aplicativo de orientação fixa no modo de várias janelas,
+ o aplicativo ocupará toda a tela.
+</p>
+
+<h4 id="resizeableActivity">android:resizeableActivity</h4>
+<p>
+  Defina esse atributo no nó <code>&lt;activity&gt;</code> ou
+ <code>&lt;application&gt;</code> em seu manifesto para ativar ou desativar a exibição em
+ várias telas:
+</p>
+
+<pre>
+android:resizeableActivity=["true" | "false"]
+</pre>
+
+<p>
+  Se esse atributo for definido como verdadeiro, a atividade poderá ser inicializada nos
+ modos de tela dividida e forma livre. Se o atributo for definido como falso, a
+ atividade não oferecerá suporte ao modo de várias janelas. Se esse valor for falso e o
+ usuário tentar iniciar a atividade no modo de várias janelas, a atividade ocupará
+ a tela inteira.
+</p>
+
+<p>
+  Se o aplicativo for direcionado ao Android N, mas o valor desse atributo não for
+ especificado, o atributo assumirá o valor padrão de verdadeiro.
+</p>
+
+<h4 id="supportsPictureInPicture">android:supportsPictureInPicture</h4>
+
+<p>
+  Defina esse atributo no nó <code>&lt;activity&gt;</code> ou no seu manifesto para
+ indicar se a atividade oferece suporte à exibição no modo de imagem em imagem. Esse
+ atributo será ignorado se <code>android:resizeableActivity</code> for falso.
+</p>
+
+<pre>
+android:supportsPictureInPicture=["true" | "false"]
+</pre>
+
+<h3 id="layout">Atributos de layout</h3>
+
+<p>
+  No Android N, o elemento de manifesto <code>&lt;layout&gt;</code>
+ oferece suporte a diversos atributos que afetam o comportamento da atividade no
+ modo de várias janelas:
+</p>
+
+<dl>
+  <dt>
+    <code>android:defaultWidth</code>
+  </dt>
+
+  <dd>
+    Largura padrão da atividade quando iniciada no modo de forma livre.
+  </dd>
+
+  <dt>
+    <code>android:defaultHeight</code>
+  </dt>
+
+  <dd>
+    Altura padrão da atividade quando iniciada no modo de forma livre.
+  </dd>
+
+  <dt>
+    <code>android:gravity</code>
+  </dt>
+
+  <dd>
+    Posicionamento inicial da atividade quando iniciada no modo de forma livre. Consulte a
+ referência de {@link android.view.Gravity} para obter os valores adequados.
+  </dd>
+
+  <dt>
+    <code>android:minimalSize</code>
+  </dt>
+
+  <dd>
+    Altura mínima e largura mínima para a atividade nos modos de tela dividida
+ e forma livre. Se o usuário mover o divisor no modo de tela dividida
+ para tornar uma atividade menor que o mínimo especificado, o sistema recortará
+ a atividade para o tamanho solicitado pelo usuário.
+  </dd>
+</dl>
+
+<p>
+  Por exemplo, o código a seguir mostra como especificar um tamanho e uma localização
+ padrão para a atividade, bem como o tamanho mínimo, quando a atividade é exibida no
+ modo de forma livre:
+</p>
+
+<pre>
+&lt;activity android:name=".MyActivity"&gt;
+    &lt;layout android:defaultHeight="500dp"
+          android:defaultWidth="600dp"
+          android:gravity="top|end"
+          android:minimalSize="450dp" /&gt;
+&lt;/activity&gt;
+</pre>
+
+<h2 id="running">Execução do aplicativo no modo de várias janelas</h2>
+
+<p>
+  O Android N oferece nova funcionalidade para dar suporte a aplicativos que podem ser executados
+ no modo de várias janelas.
+</p>
+
+<h3 id="disabled-features">Recursos desativados no modo de várias janelas</h3>
+
+<p>
+  Alguns recursos são desativados ou ignorados quando um dispositivo está no modo de
+ várias janelas, pois não fazem sentido para uma atividade que pode estar compartilhando a
+ tela do dispositivo com outras atividades ou aplicativos. Esses recursos incluem:
+
+<ul>
+  <li>Algumas opções de personalização de <a href="{@docRoot}training/system-ui/index.html">IU do sistema</a>
+ são desativadas. Por exemplo, os aplicativos não podem ocultar a barra de status
+ se não estiverem executando no modo de tela cheia.
+  </li>
+
+  <li>O sistema ignora as alterações no atributo <code><a href=
+  "{@docRoot}guide/topics/manifest/activity-element.html#screen"
+  >android:screenOrientation</a></code>.
+  </li>
+</ul>
+
+<h3 id="change-notification">Notificações e consultas de mudança no modo de várias janelas</h3>
+
+<p>
+  Os novos métodos a seguir foram adicionados à classe {@link android.app.Activity}
+ para oferecer suporte à exibição em várias janelas. Para obter detalhes sobre cada método, consulte a
+ <a href="{@docRoot}preview/setup-sdk.html#docs-dl">Referência do N Preview SDK</a>.
+</p>
+
+<dl>
+  <dt>
+    <code>Activity.inMultiWindow()</code>
+  </dt>
+
+  <dd>
+    Chame para descobrir se a atividade está no modo de várias janelas.
+  </dd>
+
+  <dt>
+    <code>Activity.inPictureInPicture()</code>
+  </dt>
+
+  <dd>
+    Chame para descobrir se a atividade está no modo de imagem em imagem.
+
+    <p class="note">
+      <strong>Observação:</strong> o modo de imagem em imagem é um caso especial do
+ modo de várias janelas. Se <code>myActivity.inPictureInPicture()</code>
+ retornar verdadeiro, <code>myActivity.inMultiWindow()</code> também retornará
+ verdadeiro.
+    </p>
+  </dd>
+
+  <dt>
+    <code>Activity.onMultiWindowChanged()</code>
+  </dt>
+
+  <dd>
+    O sistema chama esse método sempre que a atividade entra ou sai do
+ modo de várias janelas. O sistema passará ao método o valor verdadeiro se a
+ atividade entrar no modo de várias janelas e falso se a atividade
+ sair do modo de várias janelas.
+  </dd>
+
+  <dt>
+    <code>Activity.onPictureInPictureChanged()</code>
+  </dt>
+
+  <dd>
+    O sistema chama esse método sempre que a atividade entra ou sai do
+ modo de imagem em imagem. O sistema passará ao método o valor verdadeiro se
+ a atividade entrar no modo de várias janelas e falso se a atividade
+ sair do modo de várias janelas.
+  </dd>
+</dl>
+
+<p>
+  Existem também versões de {@link android.app.Fragment} para cada um desses
+ métodos como, por exemplo, <code>Fragment.inMultiWindow()</code>.
+</p>
+
+<h3 id="entering-pip">Entrar no modo de imagem em imagem</h3>
+
+<p>
+  Para colocar uma atividade no modo de imagem em imagem, chame o novo método
+ <code>Activity.enterPictureInPicture()</code>. Esse método não terá efeito se
+ o dispositivo não oferecer suporte ao modo de imagem em imagem. Para obter mais informações,
+ consulte a documentação do modo <a href="picture-in-picture.html">imagem em imagem</a>.
+</p>
+
+<h3 id="launch">Iniciar novas atividades no modo de várias janelas</h3>
+
+<p>
+  Quando você iniciar uma nova atividade, poderá indicar ao sistema que a
+ a nova atividade deverá ser exibida adjacente à atual, se possível. Para fazer
+ isso, use o sinalizador
+ <code>Intent.FLAG_ACTIVITY_LAUNCH_TO_ADJACENT</code>. A passagem
+ desse sinalizador solicita o seguinte comportamento:
+</p>
+
+<ul>
+  <li>Se o dispositivo estiver no modo de tela dividida, o sistema tentará criar a
+ nova atividade ao lado da atividade que a iniciou para que as duas atividades
+ compartilhem a tela. Nem sempre o sistema conseguirá fazer isso, mas as
+ atividades ficarão adjacentes, se possível.
+  </li>
+
+  <li>Se o dispositivo não estiver no modo de tela dividida, esse sinalizador não terá efeito.
+  </li>
+</ul>
+
+<p>
+  Se um dispositivo estiver no modo de forma livre e você iniciar uma nova atividade, poderá
+ especificar as dimensões e a posição na tela da nova atividade chamando
+ <code>ActivityOptions.setLaunchBounds()</code>. Esse método não terá efeito se
+ o dispositivo não estiver no modo de várias janelas.
+</p>
+
+<p class="note">
+  <strong>Observação:</strong> se você iniciar uma atividade em uma pilha de tarefas, essa
+ atividade substituirá a atividade na tela, herdando todas as
+ propriedades de suporte a várias janelas. Se você quiser iniciar a nova atividade como janela
+ separada no modo de várias janelas, inicie essa atividade em uma nova pilha de tarefas.
+</p>
+
+<h3 id="dnd">Suporte a arrastar e soltar</h3>
+
+<p>
+  Os usuários podem <a href="{@docRoot}guide/topics/ui/drag-drop.html">arrastar e
+ soltar</a> dados de uma atividade para outra enquanto as duas atividades
+ compartilham a tela. (Anteriormente, os usuários podiam apenas arrastar e soltar dados em uma
+ única atividade.) Por esse motivo, se o aplicativo não tem a funcionalidade de arrastar e soltar,
+ pode ser uma boa ideia adicioná-la.
+</p>
+
+<p>
+  O N Preview SDK estende o pacote <a href="{@docRoot}reference/android/view/package-summary.html"><code>android.view</code></a>
+ para oferecer suporte ao recurso arrastar e soltar entre aplicativos. Para obter detalhes sobre os seguintes
+ métodos e classes, consulte a <a href="{@docRoot}preview/setup-sdk.html#docs-dl">Referência
+ do Preview SDK</a>.
+</p>
+
+<dl>
+  <dt>
+    <code>android.view.DropPermissions</code>
+  </dt>
+
+  <dd>
+    Objeto token responsável por especificar as permissões concedidas ao aplicativo
+ que recebe uma ação de soltar.
+  </dd>
+
+  <dt>
+    <code>View.startDragAndDrop()</code>
+  </dt>
+
+  <dd>
+    Novo alias de {@link android.view.View#startDrag View.startDrag()}. Para
+ ativar o recurso de arrastar e soltar entre atividades, passe o novo sinalizador
+ <code>View.DRAG_FLAG_GLOBAL</code>. Se você precisar conceder permissões de URI à
+ atividade de destino, passe os novos sinalizadores,
+ <code>View.DRAG_FLAG_GLOBAL_URI_READ</code> ou
+ <code>View.DRAG_FLAG_GLOBAL_URI_WRITE</code>, conforme o caso.
+  </dd>
+
+  <dt>
+    <code>View.cancelDragAndDrop()</code>
+  </dt>
+
+  <dd>
+    Cancela uma operação de arrastar em andamento. Somente pode ser chamado
+ pelo aplicativo que originou a operação de arrastar.
+  </dd>
+
+  <dt>
+    <code>View.updateDragShadow()</code>
+  </dt>
+
+  <dd>
+    Substitui a sombra de arrastar para uma operação de arrastar em andamento. Somente
+ pode ser chamado pelo aplicativo que originou a operação de arrastar.
+  </dd>
+
+  <dt>
+    <code>Activity.requestDropPermissions()</code>
+  </dt>
+
+  <dd>
+    Solicita as permissões dos URIs de conteúdo passados com {@link
+    android.content.ClipData} contidos em {@link android.view.DragEvent}.
+  </dd>
+</dl>
+
+<h2 id="testing">Teste do suporte a várias janelas em seu aplicativo</h2>
+
+<p>
+  Atualizando ou não o seu aplicativo para o Android N, você deve
+ verificar como ele se comporta no modo de várias janelas, pois um usuário pode tentar iniciá-lo
+ no modo de várias janelas em um dispositivo executando o Android N.
+</p>
+
+<h3 id="configuring">Configuração de um dispositivo de teste</h3>
+
+<p>
+  Se você instalar o Android N em um dispositivo, o modo de tela dividida
+ será instalado automaticamente.
+</p>
+
+<h3 id="test-non-n">Se o aplicativo não foi compilado com o N Preview SDK</h3>
+
+<p>
+  Se você não compilou o aplicativo com o N Preview SDK e o usuário tentar usar
+ o aplicativo no modo de várias janelas, o sistema redimensionará obrigatoriamente o aplicativo, a menos que este
+ declare uma orientação fixa.
+</p>
+
+<p>
+  Se o aplicativo não declarar uma orientação fixa, inicie o aplicativo
+ em um dispositivo executando Android N e tente colocar o aplicativo no modo
+ de tela dividida. Verifique se a experiência de usuário é
+ aceitável quando o aplicativo é redimensionado obrigatoriamente.
+</p>
+
+<p>
+  Se o aplicativo declarar uma orientação fixa, você deverá tentar colocá-lo no
+ modo de várias janelas. Verifique se, ao fazê-lo, o aplicativo continua
+ no modo de tela cheia.
+</p>
+
+<h3 id="test-mw">Se você oferecer suporte ao modo de várias janelas</h3>
+
+<p>
+  Se você compilar o aplicativo com o N Preview SDK e não tiver desativado o
+ suporte a várias janelas, verifique o comportamento a seguir nos modos de tela dividida
+ e forma livre.
+</p>
+
+<ul>
+  <li>Inicie o aplicativo em modo de tela inteira e mude para o modo de várias janelas
+ pressionando longamente o botão Overview. Verifique se o aplicativo alterna corretamente.
+  </li>
+
+  <li>Inicie o aplicativo diretamente no modo de várias janelas e verifique se o aplicativo
+ é iniciado corretamente. Você pode iniciar um aplicativo no modo de várias telas pressionando o
+ botão Overview, pressionando longamente a barra de título do aplicativo e arrastando-o
+ para uma das áreas destacadas na tela.
+  </li>
+
+  <li>Redimensione o aplicativo no modo de tela dividida, arrastando a linha divisora.
+  Verifique se o aplicativo é redimensionado sem falhar e se os elementos de IU necessários
+ estão visíveis.
+  </li>
+
+  <li>Se você especificou dimensões mínimas para o aplicativo, tente redimensionar
+ o aplicativo abaixo dessas dimensões. Verifique se não é possível redimensionar o aplicativo
+ para um tamanho menor que o mínimo especificado.
+  </li>
+
+  <li>Em todos os testes, verifique se o desempenho do aplicativo é aceitável. Por
+ exemplo, verifique se há uma demora muito grande para atualizar a IU após o
+ redimensionamento do aplicativo.
+  </li>
+</ul>
+
+<h4 id="test-checklist">Lista de verificação de teste</h4>
+
+<p>
+  Para verificar o desempenho do aplicativo no modo de várias janelas, experimente as operações
+ a seguir. Você deve tentar essas operações nos modos de tela dividida e
+ várias telas, exceto onde houver instruções diferentes.
+</p>
+
+<ul>
+  <li>Entre e saia do modo de várias janelas.
+  </li>
+
+  <li>Alterne do seu aplicativo para outro e verifique se o seu aplicativo se comporta
+ corretamente enquanto visível, mas não ativo. Por exemplo, se o seu aplicativo estiver
+ reproduzindo vídeo, verifique se a reprodução não é interrompida quando o usuário
+ interage com outro aplicativo.
+  </li>
+
+  <li>No modo de tela dividida, tente mover a barra divisora para aumentar e reduzir
+ o tamanho do aplicativo. Tente essas operações nas configurações lado a lado
+ e um acima do outro. Verifique se o aplicativo não falha,
+ se a funcionalidade essencial fica visível e se a operação de redimensionamento não demora
+ demais.
+  </li>
+
+  <li>Execute várias operações de redimensionamento em rápida sucessão. Verifique se o
+ aplicativo não falha nem apresenta vazamento de memória. Para obter informações sobre como verificar o uso de memória
+ do aplicativo, consulte <a href="{@docRoot}tools/debugging/debugging-memory.html">
+  Investigação do uso de RAM</a>.
+  </li>
+
+  <li>Use o aplicativo normalmente em diversas configurações diferentes de janela e
+ verifique se o aplicativo se comporta corretamente. Verifique se o texto é legível e se os
+ elementos de IU não ficam pequenos demais para a interação.
+  </li>
+</ul>
+
+<h3 id="test-disabled-mw">Se você desativou o suporte a várias janelas</h3>
+
+<p>
+  Se você desativou o suporte a várias janelas definindo
+ <code>android:resizableActivity="false"</code>, inicie o aplicativo em
+ um dispositivo executando Android N e tente colocá-lo nos modos
+ de forma livre e tela dividida. Verifique se, ao fazê-lo, o aplicativo continua
+ no modo de tela cheia.
+</p>
diff --git a/docs/html-intl/intl/pt-br/preview/features/multilingual-support.jd b/docs/html-intl/intl/pt-br/preview/features/multilingual-support.jd
new file mode 100644
index 0000000..77ad4b7
--- /dev/null
+++ b/docs/html-intl/intl/pt-br/preview/features/multilingual-support.jd
@@ -0,0 +1,214 @@
+page.title=Idioma e localidade
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+<h2>Neste documento:</h2>
+<ol>
+	  <li><a href="#preN">Desafios ao resolver recursos de idioma</a></li>
+    <li><a href="#postN">Melhorias na estratégia de resolução de recursos</a></li>
+    <li><a href="#design">Projetar seu aplicativo para oferecer suporte a
+ localidades adicionais</a></li>
+
+</ol>
+
+</div>
+</div>
+
+<p>O Android N oferece suporte avançado para usuários multilíngues,
+permitindo que eles selecionem várias localidades nas configurações. O Android N
+fornece esse recurso ao expandir significativamente a quantidade de localidades com suporte
+e mudando a forma como o sistema resolve recursos. O novo método para resolver
+recursos é mais robusto e foi projetado para ser compatível com APKs existentes, mas
+tenha cuidado adicional para identificar comportamentos inesperados. Por exemplo, você
+deve testar para garantir que seu aplicativo assuma o idioma esperado por padrão. Além disso,
+se seu aplicativo oferecer suporte a vários idiomas, você deverá garantir que esse suporte funcione da maneira
+esperada. Por fim, garanta que seu aplicativo possa lidar corretamente
+com idiomas que ele não tenha sido explicitamente projetado para suportar.</p>
+
+<p>Este documento começa explicando a estratégia de resolução de recursos anterior ao 
+Android N. Em seguida, ele descreve a estratégia
+de resolução de recursos aprimorada do Android N. Por fim, ele explica como aproveitar as vantagens
+do maior número de localidades para oferecer suporte a usuários multilíngues.</p>
+
+<h2 id="preN">Desafios ao resolver recursos de idioma</h2>
+
+<p>Antes do Android N, o Android nem sempre conseguia
+ corresponder aplicativos e localidades de sistema corretamente. Por exemplo, supondo que o idioma padrão do seu aplicativo
+ seja o inglês americano, mas que ele também tenha strings em espanhol em arquivos de recurso {@code es_ES}
+.</p>
+<p>Quando seu código Java fizesse referência a strings, ele resolveria os idiomas das strings da
+seguinte maneira:</p>
+<ul>
+<li>Se um dispositivo fosse definido como {@code es_MX} (espanhol do México), o Android carregaria
+strings dos arquivos de recurso {@code es_ES}.</li>
+<li>Se um dispositivo fosse definido como {@code en_AU}, o Android assumiria {@code
+en_US}. O sistema também assumiria {@code en_US} como padrão se um usuário escolhesse um
+idioma não suportado pelo aplicativo, como o francês.</li>
+</ul>
+
+
+<p>Esses problemas de resolução surgiram porque o sistema removia o código de país
+ da localidade se não encontrasse uma correspondência exata.  Por exemplo:</p>
+<p class="table-caption" id="t-resource-res">
+<strong>Tabela 1.</strong> Resolução de recurso sem uma correspondência exata de localidade.
+</p>
+<table>
+<tbody>
+<tr>
+<th>Configurações do usuário</th>
+<th>Recursos do aplicativo</th>
+<th>Resolução do recurso</th>
+</tr>
+<tr>
+<td>fr_CH</td>
+<td>
+padrão (en)<br>
+de_DE<br>
+es_ES<br>
+fr_FR<br>
+it_IT<br>
+</td>
+ <td>
+Tentativa de fr_CH =&gt; Falha<br>
+Tentativa de fr =&gt; Falha<br>
+Usar o padrão (en)
+</td>
+ </tr>
+ </tbody>
+</table>
+
+
+<p>Neste exemplo, o sistema exibe strings em inglês sem saber
+se o usuário entende inglês. Esse comportamento é bastante comum
+hoje em dia. O Android N deverá reduzir de forma significativa a frequência de
+resultados como esse.</p>
+
+<h2 id="postN">Melhorias na estratégia de resolução de recursos</h2>
+<p>O Android N proporciona uma resolução de recurso mais robusta e
+encontra soluções alternativas melhores. No entanto, para agilizar a resolução e melhorar
+ a capacidade de manutenção, você deve armazenar os recursos no dialeto pai mais comum.
+ Por exemplo, se você estava armazenando recursos em espanhol no diretório {@code es-US}
+ antes, mova-os para o diretório {@code es-419}, que contém o espanhol latino-americano.
+ Da mesma maneira, se você tiver strings de recurso em uma pasta {@code en-GB}, renomeie
+ essa pasta para {@code en-001} (inglês internacional), pois o pai mais comum
+ para strings <code>en-GB</code> é {@code en-001}.
+ O exemplo a seguir explica por que essas práticas melhoram o desempenho e
+a confiabilidade da resolução de recursos.</p>
+
+<h3>Exemplos de resolução de recursos</h3>
+
+<p>Com o Android N, o caso descrito na <strong>Tabela 1</strong> é resolvido
+de forma diferente:</p>
+
+<p class="table-caption" id="t-improved-res">
+<strong>Tabela 2.</strong> Uma estratégia de resolução melhorada para quando não há
+uma correspondência exata para a localidade.</p>
+<table>
+<tr>
+<th>Configurações do usuário</th>
+<th>Recursos do aplicativo</th>
+<th>Resolução do recurso</th>
+</tr>
+<tr>
+<td><ol>
+<li> fr_CH</li>
+</ol>
+</td>
+<td>
+padrão (en)<br>
+de_DE<br>
+es_ES<br>
+fr_FR<br>
+it_IT<br>
+</td>
+<td>
+Tentativa de fr_CH =&gt; Falha<br>
+Tentativa de fr =&gt; Falha<br>
+Tentativa de filhos de fr =&gt; fr_FR<br>
+Usar fr_FR
+</td>
+</tr>
+
+</table>
+
+
+<p>Agora o usuário obtém recursos em francês em vez de inglês. Esse exemplo também mostra
+ por que você deve armazenar strings em francês em {@code fr} em vez de em {@code fr_FR}
+ para o Android N. Nesse caso, a ação necessária é fazer a correspondência com o dialeto pai mais próximo,
+ tornando a resolução mais rápida e mais previsível.</p>
+
+<p>Além dessa lógica de resolução melhorada, agora o Android oferece mais
+ idiomas de usuário dentre os quais escolher. Vamos experimentar o exemplo acima novamente com o italiano
+ especificado como um idioma de usuário adicional, mas sem suporte para francês no aplicativo.  </p>
+
+<p class="table-caption" id="t-2d-choice">
+<strong>Tabela 3.</strong> Resolução de recurso quando o aplicativo faz a correspondência apenas da
+segunda configuração de localidade preferencial do usuário.</p>
+<table>
+<tr>
+<th>Configurações do usuário</th>
+<th>Recursos do aplicativo</th>
+<th>Resolução do recurso</th>
+
+</tr>
+<tr>
+<td><ol>
+<li> fr_CH</li>
+<li> it_CH</li>
+</ol>
+</td>
+<td>
+padrão (en)<br>
+de_DE<br>
+es_ES<br>
+it_IT<br>
+</td>
+<td>
+Tentativa de fr_CH =&gt; Falha<br>
+Tentativa de fr =&gt; Falha<br>
+Tentativa de filhos de fr =&gt; Falha<br>
+Tentativa de it_CH =&gt; Falha<br>
+Tentativa de it =&gt; Falha<br>
+Tentativa de filhos de it =&gt; it_IT<br>
+Usar it_IT
+</td>
+
+</tr>
+
+</table>
+<p>O usuário obtém um idioma que ele compreende, mesmo que o aplicativo não tenha suporte para
+o francês.</p>
+
+
+<h2 id="design">Projetar seu aplicativo para oferecer suporte a localidades adicionais</h2>
+<h3>LocaleList API</h3>
+
+<p>O Android N adiciona uma nova API {@code LocaleList.GetDefault()}
+que permite que os aplicativos façam uma consulta direta na lista de idiomas especificados por um usuário. Essa API
+permite que você crie um comportamento mais sofisticado
+ para o aplicativo e uma exibição de conteúdo mais otimizada. Por exemplo, uma pesquisa
+ pode mostrar resultados em vários idiomas com base nas configurações do usuário.  Aplicativos de navegador
+ podem evitar ofertas de tradução de páginas em um idioma que o usuário conhece
+ e os aplicativos de teclado também podem ativar todos os layouts apropriados automaticamente. </p>
+
+<h3>Formatadores</h3>
+
+<p>Até o Android 6.0 (nível da API 23), o Android oferecia suporte para apenas uma ou duas localidades
+ para muitos idiomas comuns
+(en, es, ar, fr, ru). Como só existiam poucas variantes de cada idioma,
+os aplicativos podiam armazenar alguns números e datas como strings no código
+nos arquivos de recurso.  No entanto, com o conjunto mais amplo de localidades suportadas do Android,
+podem existir
+diferenças significativas nos formatos de data, hora, moeda e informações
+similares dentro da mesma localidade. Colocar formatos no código podem produzir uma
+experiência confusa para os usuários.  Portanto, ao desenvolver para o Android N,
+não deixe de usar formatadores em vez de strings no código para números e datas.</p>
+
+<p>Um bom exemplo é o árabe, cujo suporte no Android N foi expandido de
+uma {@code ar_EG} para 27 localidades de árabe. Essas localidades podem compartilhar a maioria dos recursos,
+mas algumas preferem dígitos ASCII, enquanto outras preferem dígitos nativos. Por exemplo,
+quando você quer criar uma frase com uma variável em dígito, como 
+“Choose a 4 digit pin”, use formatadores como mostrado abaixo:</p>
+
+<pre> format(locale, "Choose a %d-digit PIN", 4)</pre>
diff --git a/docs/html-intl/intl/pt-br/preview/features/notification-updates.jd b/docs/html-intl/intl/pt-br/preview/features/notification-updates.jd
new file mode 100644
index 0000000..a714abb
--- /dev/null
+++ b/docs/html-intl/intl/pt-br/preview/features/notification-updates.jd
@@ -0,0 +1,328 @@
+page.title=Notificações
+page.tags=notifications
+helpoutsWidget=true
+page.image=/preview/images/notifications-card.png
+
+trainingnavtop=true
+
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+
+<!-- table of contents -->
+<h2>Este documento inclui</h2>
+<ol>
+  <li><a href="#direct">Resposta direta</a></li>
+  <li><a href="#bundle">Notificações empacotadas</a></li>
+  <li><a href="#custom">Visualizações personalizadas</a></li>
+</ol>
+
+</div>
+</div>
+
+<p>O Android N introduz diversas APIs novas que permitem que aplicativos publiquem
+ notificações altamente visíveis e interativas.</p>
+
+<p>O Android N estende a API de notificação {@link android.support.v4.app.RemoteInput}
+ atual para permitir respostas em linha em celulares. Esse recurso permite que os usuários
+ respondam rapidamente na aba de notificações sem acessar o aplicativo.</p>
+
+<p>
+  O Android N permite empacotar notificações semelhantes para
+ exibição como única notificação. Para que isso seja possível, o Android N usa o método {@link
+  android.support.v4.app.NotificationCompat.Builder#setGroup
+  NotificationCompat.Builder.setGroup()} existente. Os usuários podem expandir todas as
+ notificações, executando ações como responder e descartar em cada uma
+ delas individualmente na aba de notificações.
+</p>
+
+<p>Por fim, o Android N também adiciona várias APIs que permitem usar decorações
+ do sistema nas visualizações de notificação personalizadas do aplicativo. Essas APIs ajudam
+ a garantir que as visualizações de notificação compartilhem uma apresentação consistente com os
+ modelos padrão.</p>
+
+<p>Este documento destaca algumas principais mudanças que você deve considerar
+ ao usar os novos recursos de notificação em aplicativos.</p>
+
+<h2 id="direct">Resposta direta</h2>
+
+<p>Com o recurso de resposta direta no Android N, os usuários podem responder
+ rapidamente a mensagens de texto ou atualizar listas de tarefas diretamente na interface de
+ notificação. Em um dispositivo portátil, a ação de resposta em linha aparece como botão adicional
+ anexado à notificação. Quando um usuário responde pelo teclado, o sistema anexa
+ a resposta de texto à intenção
+ especificada como ação de notificação e envia a intenção ao
+ aplicativo no dispositivo.
+
+
+<img id="fig-reply-button" src="{@docRoot}preview/images/inline-reply.png" srcset="{@docRoot}preview/images/inline-reply.png 1x,
+  {@docRoot}preview/images/inline-reply_2x.png 2x" width="400">
+<p class="img-caption">
+  <strong>Figura 1.</strong> O Android N adiciona o botão de ação
+ <strong>Reply</strong>.
+</p>
+
+<h3>Adição de ações de resposta em linha</h3>
+
+<p>Para criar uma ação de notificação com suporte à resposta direta:
+</p>
+
+<ol>
+<li>Crie uma instância de {@link android.support.v4.app.RemoteInput.Builder}
+ que possa ser adicionada à ação de
+ notificação. O construtor dessa classe aceita uma string, usada pelo sistema como chave
+ da entrada de texto. Posteriormente, o aplicativo no dispositivo usará essa chave para recuperar o texto
+ da entrada.
+
+<pre>
+// Key for the string that's delivered in the action's intent
+private static final String KEY_TEXT_REPLY = "key_text_reply";
+String replyLabel = getResources().getString(R.string.reply_label);
+RemoteInput remoteInput = new RemoteInput.Builder(KEY_TEXT_REPLY)
+        .setLabel(replyLabel)
+        .build();
+</pre>
+</li>
+<li>Anexe o objeto {@link android.support.v4.app.RemoteInput}
+ a uma ação usando <code>addRemoteInput()</code>.
+
+<pre>
+// Create the reply action and add the remote input
+Notification.Action action =
+        new Notification.Action.Builder(R.drawable.ic_reply_icon,
+                getString(R.string.label), replyPendingIntent)
+                .addRemoteInput(remoteInput)
+                .build();
+</pre>
+</li>
+
+<li>Aplique a ação a uma notificação e emita a notificação.
+
+<pre>
+// Build the notification and add the action
+Notification notification =
+        new Notification.Builder(mContext)
+                .setSmallIcon(R.drawable.ic_message)
+                .setContentTitle(getString(R.string.title))
+                .setContentText(getString(R.string.content))
+                .addAction(action))
+                .build();
+
+// Issue the notification
+NotificationManager notificationManager =
+        NotificationManager.from(mContext);
+notificationManager.notify(notificationId, notification);
+
+</pre>
+</li>
+
+</ol>
+
+
+<p> O sistema solicita que o usuário informe uma resposta quando acionar a
+ ação de notificação. </p>
+
+<img id="fig-user-input" src="{@docRoot}preview/images/inline-type-reply.png" srcset="{@docRoot}preview/images/inline-type-reply.png 1x,
+    {@docRoot}preview/images/inline-type-reply_2x.png 2x" width="300">
+<p class="img-caption">
+  <strong>Figura 2.</strong> O usuário insere texto na aba de notificações.
+</p>
+
+<h3>Recuperação da entrada do usuário na resposta em linha</h3>
+
+<p>Para receber a entrada do usuário da interface de notificação para a atividade
+ declarada na intenção de ação de resposta:</p>
+<ol>
+<li> Chame {@link android.support.v4.app.RemoteInput#getResultsFromIntent
+  getResultsFromIntent()} passando a intenção da ação de notificação como
+ parâmetro de entrada. Esse método retorna um {@link android.os.Bundle} que
+ contém a resposta de texto.
+</li>
+
+<pre>
+Bundle remoteInput = RemoteInput.getResultsFromIntent(intent);
+</pre>
+
+<li>Consulte a resposta usando a chave de resultado (fornecida ao construtor {@link
+  android.support.v4.app.RemoteInput.Builder}).
+</li>
+</ol>
+
+<p>O fragmento de código a seguir mostra como um método recupera o texto de entrada
+ de um pacote:</p>
+
+<pre>
+// Obtain the intent that started this activity by calling
+// Activity.getIntent() and pass it into this method to
+// get the associated string.
+
+private CharSequence getMessageText(Intent intent) {
+    Bundle remoteInput = RemoteInput.getResultsFromIntent(intent);
+    if (remoteInput != null) {
+            return remoteInput.getCharSequence(KEY_TEXT_REPLY);
+            }
+    return null;
+ }
+</pre>
+
+<p>Os aplicativos podem aplicar lógica para decidir as ações a serem executadas para o texto
+ recuperado.
+ Para aplicativos interativos (como bate-papos), forneça mais contexto na própria notificação
+ (por exemplo, várias linhas de histórico de bate-papo, incluindo as mensagens do próprio usuário)
+ para que o usuário possa responder de forma adequada.
+ Quando o usuário responde via {@link android.support.v4.app.RemoteInput},
+ inclua o texto no histórico de resposta com o método 
+{@code setRemoteInputHistory()}.</p>
+
+<h2 id="bundle">Notificações empacotadas</h2>
+
+<p>O Android N oferece aos desenvolvedores uma nova forma de representar
+ uma fila de notificações: <i>notificações empacotadas</i>. Essa forma é semelhante ao recurso 
+  <a href="{@docRoot}training/wearables/notifications/stacks.html">Pilhas
+ de Notificações</a> no Android Wear. Por exemplo, se o aplicativo criar notificações
+ para mensagens recebidas, quando mais de uma mensagem for recebida, empacote as
+ notificações como um único grupo. Você pode
+ usar o método existente {@link android.support.v4.app.NotificationCompat.Builder#setGroup
+Builder.setGroup()} para empacotar notificações semelhantes.</p>
+
+<p>
+  Um grupo de notificações impõe uma hierarquia nas notificações que o compõe.
+  Na parte superior dessa hierarquia, está a notificação pai, que exibe informações
+ resumidas para o grupo. O usuário pode expandir
+ progressivamente o grupo de notificações e o sistema mostra mais informações à medida que o
+ usuário aumenta o detalhamento. Quando o usuário expande o pacote, o sistema revela
+ mais informações para todas as notificações filhas. Quando o usuário
+ expande uma das notificações, o sistema revela todo o seu conteúdo.
+</p>
+
+<img id="fig-bundles" src="{@docRoot}preview/images/bundles.png" srcset="{@docRoot}preview/images/bundles.png 1x,
+          {@docRoot}preview/images/bundles_2x.png 2x" width="300">
+<p class="img-caption">
+  <strong>Figura 3.</strong> O usuário pode expandir progressivamente o grupo
+ de notificações.
+</p>
+
+<p>Para saber como adicionar notificações a um grupo, consulte 
+<a href="{@docRoot}training/wearables/notifications/stacks.html#AddGroup">Adicionar 
+cada notificação a um grupo</a>.</p>
+
+
+<h3 id="best-practices">Práticas recomendadas para notificações empacotadas</h3>
+<p>Esta seção oferece diretrizes sobre quando usar grupos de notificações em vez
+ de notificações {@link android.app.Notification.InboxStyle InboxStyle}
+ que foram disponibilizadas em versões anteriores da
+ plataforma Android.</p>
+
+<h3>Quando usar notificações empacotadas</h3>
+
+<p>Você deve usar grupos de notificações apenas quando todas as condições a seguir forem
+ verdadeiras para o seu caso de uso:</p>
+
+<ul>
+  <li>As notificações filhas são notificações completas e podem ser exibidas
+ individualmente sem necessidade de um resumo do grupo.</li>
+  <li>A exibição individual de notificações filhas pode ser vantajosa. Por
+ exemplo:
+  </li>
+  <ul>
+    <li>Elas são acionáveis, sem ações específicas para cada filha.</li>
+    <li>Há mais informações na filha que as que o usuário quer ler.</li>
+  </ul>
+</ul>
+
+<p>Os exemplos de bons casos de uso para grupos de notificações incluem: um aplicativo de mensagens
+ exibindo uma lista de mensagens recebidas ou um aplicativo de e-mail exibindo uma lista de
+ e-mails recebidos.</p>
+
+<p>
+Os exemplos de casos em que uma única notificação é preferível
+ incluem mensagens individuais de uma única pessoa ou uma representação em lista
+ de itens de texto com uma única linha. Você pode usar 
+({@link android.app.Notification.InboxStyle InboxStyle} ou
+ {@link android.app.Notification.BigTextStyle BigTextStyle}) para
+ isso.
+</p>
+
+<h3 id ="post">Exibição de notificações empacotadas</h3>
+
+<p>
+  O aplicativo deve sempre publicar um resumo do grupo, mesmo se o grupo tiver apenas uma
+ única filha. O sistema suprimirá o resumo e exibirá diretamente a
+ notificação filha se ela contiver apenas uma única notificação. Isso garante
+ que o sistema possa oferecer uma experiência consistente quando o usuário deslizar por
+ filhas de um grupo.
+</p>
+
+<p class="note">
+  <strong>Observação:</strong> esta versão do Android N ainda não
+ elimina o resumo de grupos de notificações contendo uma única filha. Essa
+ funcionalidade será adicionada em uma versão posterior do Android N.
+</p>
+
+<h3>Observação de notificações</h3>
+
+<p>Embora o sistema normalmente exiba notificações filhas como grupo, você pode
+ configurá-las para exibição temporária como
+ <a href="{@docRoot}guide/topics/ui/notifiers/notifications.html#Heads-up">
+ notificações heads-up</a>. Esse recurso é particularmente útil porque permite
+ acesso imediato à filha mais recente e a suas ações associadas.
+</p>
+
+
+<h3>Compatibilidade com versões anteriores</h3>
+
+<p>
+  Os grupos de notificações e as entradas remotas fazem parte da API {@link
+  android.app.Notification} desde o Android 5.0 (nível da API 21) para oferecer suporte a
+ dispositivos Android Wear. Se você já criou notificações com essas APIs,
+ a única ação necessária é verificar se o comportamento do aplicativo corresponde
+ às diretrizes descritas acima e considerar a implementação de {@code
+  setRemoteInputHistory()}.
+</p>
+
+<p>
+  Para compatibilidade com versões anteriores, as mesmas APIs estão disponíveis com
+ a classe {@link android.support.v4.app.NotificationCompat} da biblioteca de suporte
+, permitindo criar notificações que funcionem em versões anteriores do
+ Android. Em celulares e tablets, os usuários somente visualizam as notificações resumidas.
+ Portanto, um aplicativo deve ter uma notificação no estilo de caixa de entrada ou equivalente,
+ representativa de todo o conteúdo de informações do grupo. Como dispositivos Android
+ Wear permite que os usuários vejam todos as notificações filhas, mesmo em níveis
+ de plataforma antigos, você deve criar notificações filhas independentemente do nível
+ da API.
+</p>
+
+<h2 id="custom"> Visualizações personalizadas</h2>
+<p>Começando com o Android N, é possível personalizar visualizações de notificação e
+ continuar obtendo decorações de sistema, como cabeçalhos de notificação, ações e layouts
+ expansíveis.</p>
+
+<p>Para ativar esses recursos, o Android N adiciona as seguintes APIs para aplicar estilo à
+ visualização personalizada:</p>
+
+<dl>
+<dt>
+{@code DecoratedCustomViewStyle()}</dt>
+<dd> Aplica estilo a notificações que não sejam notificações
+ de mídia.</dd>
+<dt>
+{@code DecoratedMediaCustomViewStyle()}</dt>
+<dd> Aplica estilo a notificações de mídia.</dd>
+</dl>
+
+<p>Para usar essa nova API, chame o método {@code setStyle()}, passando o
+ estilo de visualização personalizada desejado.</p>
+
+<p>Este fragmento mostra como construir um objeto de notificação personalizada com o método
+ {@code DecoratedCustomViewStyle()}.</p>
+
+<pre>
+Notification noti = new Notification.Builder()
+           .setSmallIcon(R.drawable.ic_stat_player)
+           .setLargeIcon(albumArtBitmap))
+           .setCustomContentView(contentView);
+           .setStyle(new Notification.DecoratedCustomViewStyle())
+           .build();
+
+</pre>
diff --git a/docs/html-intl/intl/pt-br/preview/features/picture-in-picture.jd b/docs/html-intl/intl/pt-br/preview/features/picture-in-picture.jd
new file mode 100644
index 0000000..ec75fa3
--- /dev/null
+++ b/docs/html-intl/intl/pt-br/preview/features/picture-in-picture.jd
@@ -0,0 +1,186 @@
+page.title=Imagem em imagem
+page.keywords=preview,sdk,PIP,Picture-in-picture
+page.tags=androidn
+
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+
+<h2>Neste documento</h2>
+<ol>
+  <li><a href="#declaring">Declarar que sua atividade oferece suporte ao modo de 
+imagem em imagem</a></li>
+  <li><a href="#pip_button">Alternar sua atividade para o modo de imagem em imagem</a>
+</li>
+  <li><a href="#handling_ui">Lidar com a interface durante o modo de imagem em imagem</a>
+</li>
+  <li><a href="#continuing_playback">Continuar a reprodução de vídeos no modo de 
+imagem em imagem</a></li>
+  <li><a href="#best">Práticas recomendadas</a></li>
+</ol>
+
+<h2>Veja também</h2>
+<ol>
+  <li><a href="{@docRoot}preview/features/multi-window.html">Suporte a
+várias janelas</a></li>
+</ol>
+
+</div>
+</div>
+
+<p>No Android N, os usuários do Android TV agora podem assistir a um vídeo
+em uma janela fixada em um canto da tela enquanto navegam em
+aplicativos. O modo de imagem em imagem (PIP) permite que os aplicativos executem uma atividade de vídeo
+na janela fixada enquanto outra atividade continua em
+segundo plano. A janela do PIP permite que os usuários realizem várias tarefas enquanto usam seu aplicativo, o que os
+ajuda a ser mais produtivos.</p>
+
+<p>Seu aplicativo pode decidir quando acionar o modo de PIP. Veja alguns exemplos de
+quando entrar no modo de PIP:</p>
+
+<ul>
+<li>Seu aplicativo pode passar um vídeo para o modo de PIP quando o usuário
+sai do vídeo para navegar por outro conteúdo.</li>
+<li>Seu aplicativo pode passar um vídeo para o modo de PIP quando um usuário assiste ao final
+de um episódio de conteúdo. A janela principal exibe informações promocionais ou de resumo
+sobre o próximo episódio da série.</li>
+<li>Seu aplicativo pode fornecer uma maneira de os usuários colocarem conteúdo adicional em uma fila enquanto
+assistem a um vídeo. O vídeo continua a ser reproduzido no modo de PIP enquanto a tela principal
+exibe uma atividade de seleção de conteúdo.</li>
+</ul>
+
+<p>A janela do modo de PIP tem 240x135 dp e é mostrada na camada superior de um dos
+quatro cantos da tela, escolhido pelo sistema. O usuário pode exibir um
+menu de PIP que permite que coloque a janela do PIP em tela inteira ou feche-a
+ao pressionar o botão <b>Home</b> do controle remoto. Se outro
+vídeo começar a ser reproduzido na tela principal, a janela do PIP será fechada
+automaticamente. Os usuários também podem fechar a janela do PIP em Recents.</p>
+
+<img src="{@docRoot}preview/images/pip-active.png" />
+<p class="img-caption"><strong>Figura 1.</strong> Um vídeo no modo de imagem em imagem
+visível no canto da tela enquanto o usuário navega por conteúdo
+na janela principal.</p>
+
+<p>O PIP utiliza as APIs de várias janelas disponíveis no Android N para
+fornecer a janela sobreposta de vídeo fixo. Para adicionar o modo de PIP ao seu aplicativo, você deve
+registrar as atividades que oferecem suporte a PIP, alternar a atividade para o modo de PIP conforme
+a necessidade e garantir que os elementos de interface sejam ocultados e que a reprodução do vídeo continue quando
+a atividade estiver no modo de PIP.</p>
+
+<h2 id="declaring">Declarar que sua atividade oferece suporte ao modo de imagem em imagem</h2>
+
+<p>Por padrão, o sistema não oferece suporte ao modo de PIP automaticamente para seus aplicativos.
+Se quiser esse suporte para seu aplicativo, registre a atividade
+de vídeo no manifesto definindo
+<code>android:supportsPictureInPicture</code> e
+<code>android:resizeableActivity</code> como <code>true</code>. Além disso, especifique
+que a atividade processa alterações na configuração de layout de forma que a atividade
+não seja reiniciada quando ocorrem essas alterações durante as transições do modo de PIP.</p>
+
+<pre>
+&lt;activity android:name="VideoActivity"
+    android:resizeableActivity="true"
+    android:supportsPictureInPicture="true"
+    android:configChanges=
+        "screenSize|smallestScreenSize|screenLayout|orientation"
+    ...
+</pre>
+
+<p>Ao registrar a atividade, lembre-se de que, no modo de PIP, ela
+é mostrada em uma pequena janela sobreposta em uma tela de TV. Atividades de reprodução de
+vídeo com uma quantidade mínima de itens de interface oferecem a melhor experiência para o usuário. Atividades que contêm
+pequenos elementos de interface podem não oferecer uma boa experiência para o usuário
+no modo de PIP, pois ele não conseguirá enxergar os detalhes desses elementos
+na janela do PIP.</p>
+
+<h2 id="pip_button">Alternar sua atividade para o modo de imagem em imagem</h2>
+
+Quando precisar colocar a atividade no modo de PIP, chame
+<code>Activity.enterPictureInPicture()</code>. Os exemplos a seguir entram
+no modo de PIP quando o usuário seleciona um botão dedicado ao PIP em uma barra de controle
+de mídia:</p>
+
+<pre>
+&#64;Override
+public void onActionClicked(Action action) {
+    if (action.getId() == R.id.lb_control_picture_in_picture) {
+        getActivity().enterPictureInPicture();
+        return;
+    }
+    ...
+</pre>
+
+<p>Adicionar um botão de PIP à sua barra de controle de mídia permite que o usuário entre no
+modo de PIP com facilidade ao controlar a reprodução de um vídeo.</p>
+
+<img src="{@docRoot}preview/images/pip-button.png" />
+<p class="img-caption"><strong>Figura 1.</strong> Um botão do
+modo de imagem em imagem em uma barra de controle de mídia.</p>
+
+<p>O Android N inclui uma nova classe
+<code>PlaybackControlsRow.PictureInPictureAction</code> que define ações do PIP
+para a barra de controle e usa o ícone do PIP.</p>
+
+<h2 id="handling_ui">Lidar com a interface durante o modo de imagem em imagem</h2>
+
+<p>Quando a atividade entra no modo de PIP, ela deve mostrar apenas a reprodução do
+vídeo. Remova elementos de interface antes que a atividade entre no modo de PIP
+e restaure esses elementos quando a atividade voltar ao modo de tela inteira.
+Substitua <code>Activity.onPictureInPictureChanged()</code> ou
+<code>Fragment.onPictureInPictureChanged()</code> e ative ou
+desative os elementos de interface conforme for necessário. Por exemplo:</p>
+
+<pre>
+&#64;Override
+public void onPictureInPictureChanged(boolean inPictureInPicture) {
+    if (inPictureInPicture) {
+        // Hide the controls in picture-in-picture mode.
+        ...
+    } else {
+        // Restore the playback UI based on the playback status.
+        ...
+    }
+}
+</pre>
+
+<h2 id="continuing_playback">Continuar a reprodução de vídeos no modo de 
+imagem em imagem</h2>
+
+<p>Quando a atividade entra no modo de PIP, o sistema a considera
+pausada e chama o método <code>onPause()</code> da atividade. A reprodução
+de vídeos não deverá ser pausada se a atividade
+for pausada devido ao modo de PIP. Verifique o PIP no método
+<code>onPause()</code> da atividade e realize a reprodução da forma apropriada. Por
+exemplo:</p>
+
+<pre>
+&#64;Override
+public void onPause() {
+    // If called due to PIP, do not pause playback
+    if (inPictureInPicture()) {
+        // Continue playback
+        ...
+    }
+    // If paused but not in PIP, pause playback if necessary
+    ...
+}
+</pre>
+
+<p>Quando a atividade sai do modo de PIP e volta à tela inteira, o
+sistema retoma a atividade e chama o método <code>onResume()</code>.</p>
+
+<h2 id="best">Práticas recomendadas</h2>
+
+<p>O PIP é destinado a atividades que reproduzem vídeos em tela inteira. Ao passar
+a atividade para o modo de PIP, evite mostrar qualquer coisa que não seja o conteúdo do vídeo.
+Rastreie quando a atividade entrar no modo de PIP e oculte os elementos de interface, conforme descrito
+em <a href="#handling_ui">Lidar com a interface durante o modo de imagem em imagem</a>.</p>
+
+<p>Como a janela do PIP é mostrada como uma janela flutuante no canto da
+tela, você deve evitar exibir informações essenciais em qualquer área
+da janela principal que possa ser ocultada pela janela do PIP.</p>
+
+<p>Quando uma atividade está no modo de PIP, ela não recebe foco de entrada por padrão. Para
+receber eventos de entrada no modo de PIP, use
+<code>MediaSession.setMediaButtonReceiver()</code>.</p>
diff --git a/docs/html-intl/intl/pt-br/preview/features/scoped-folder-access.jd b/docs/html-intl/intl/pt-br/preview/features/scoped-folder-access.jd
new file mode 100644
index 0000000..277a37c
--- /dev/null
+++ b/docs/html-intl/intl/pt-br/preview/features/scoped-folder-access.jd
@@ -0,0 +1,124 @@
+page.title=Acesso a diretórios com escopo
+page.keywords=preview,sdk,scoped directory access
+page.tags=androidn
+
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+  <h2>Neste documento</h2>
+  <ol>
+    <li><a href="#accessing">Acessar um diretório de armazenamento externo</a></li>
+    <li><a href="#removable">Acessar um diretório em uma mídia removível</a></li>
+    <li><a href="#best">Práticas recomendadas</a></li>
+  </ol>
+</div>
+</div>
+
+<p>Aplicativos, como aplicativos de fotos, normalmente só precisam acessar diretórios específicos de um
+armazenamento externo, como o diretório <code>Pictures</code>. As abordagens
+existentes para o acesso de armazenamentos externos não foram desenvolvidas para fornecer com facilidade
+acesso direcionado a diretórios para esses tipos de aplicativos. Por exemplo:</p>
+
+<ul>
+<li>Solicitar {@link android.Manifest.permission#READ_EXTERNAL_STORAGE}
+ou {@link android.Manifest.permission#WRITE_EXTERNAL_STORAGE} em seu manifesto
+permite o acesso a todos os diretórios públicos no armazenamento externo, o que pode ser mais do
+que o aplicativo precisa.</li>
+<li>Usar a 
+<a href="{@docRoot}guide/topics/providers/document-provider.html">Estrutura de
+acesso ao armazenamento</a> geralmente faz com que o usuário selecione diretórios
+por meio de uma interface de sistema, o que é desnecessário se seu aplicativo sempre acessa o mesmo
+diretório externo.</li>
+</ul>
+
+<p>O Android N fornece uma nova API simplificada para acessar
+diretórios de armazenamento externo comuns. </p>
+
+<h2 id="accessing">Acessar um diretório de armazenamento externo</h2>
+
+<p>Use a classe <code>StorageManager</code> para obter a instância
+<code>StorageVolume</code> apropriada. Em seguida, crie uma intenção chamando o método
+<code>StorageVolume.createAccessIntent()</code> dessa instância.
+Use essa intenção para acessar os diretórios de armazenamento externo. Para obter uma lista de
+todos os volumes disponíveis, incluindo volumes de mídias removíveis, use
+<code>StorageManager.getVolumesList()</code>.</p>
+
+<p>O fragmento de código a seguir é um exemplo de como abrir o diretório
+<code>Pictures</code> no armazenamento compartilhado principal:</p>
+
+<pre>
+StorageManager sm = (StorageManager)getSystemService(Context.STORAGE_SERVICE);
+StorageVolume volume = sm.getPrimaryVolume();
+Intent intent = volume.createAccessIntent(Environment.DIRECTORY_PICTURES);
+startActivityForResult(intent, request_code);
+</pre>
+
+<p>O sistema tenta conceder acesso ao diretório externo e,
+se necessário, confirma o acesso com o usuário usando uma interface simplificada:</p>
+
+<img src="{@docRoot}preview/images/scoped-folder-access-framed.png" srcset="{@docRoot}preview/images/scoped-folder-access-framed.png 1x,
+{@docRoot}preview/images/scoped-folder-access-framed_2x.png 2x" />
+<p class="img-caption"><strong>Figura 1.</strong> Um aplicativo solicitando
+acesso ao diretório Pictures.</p>
+
+<p>Se o usuário conceder o acesso, o sistema chamará sua substituição de
+<code>onActivityResult()</code> com um código de resultado de
+<code>Activity.RESULT_OK</code> e os dados de intenção que contêm o URI. Use
+o URI fornecido para acessar as informações do diretório, o que é semelhante a usar URIs
+retornados pela 
+<a href="{@docRoot}guide/topics/providers/document-provider.html">Estrutura de
+acesso ao armazenamento</a>.</p>
+
+<p>Se o usuário não conceder o acesso, o sistema chamará sua substituição de
+<code>onActivityResult()</code> com um código de resultado de
+<code>Activity.RESULT_CANCELED</code> e dados de intenção nulos.</p>
+
+<p class="note"><b>Observação</b>: Ao obter acesso a um diretório externo específico,
+você também obtém acesso aos subdiretórios dentro do diretório em questão.</p>
+
+<h2 id="removable">Acessar um diretório em uma mídia removível</h2>
+
+<p>Para usar o Acesso a diretórios com escopo para acessar diretórios em uma mídia removível,
+primeiro adicione um {@link android.content.BroadcastReceiver} que escute a notificação
+{@link android.os.Environment#MEDIA_MOUNTED}. Por exemplo:</p>
+
+<pre>
+&lt;receiver
+    android:name=".MediaMountedReceiver"
+    android:enabled="true"
+    android:exported="true" &gt;
+    &lt;intent-filter&gt;
+        &lt;action android:name="android.intent.action.MEDIA_MOUNTED" /&gt;
+        &lt;data android:scheme="file" /&gt;
+    &lt;/intent-filter&gt;
+&lt;/receiver&gt;
+</pre>
+
+<p>Quando o usuário monta uma mídia removível, como um cartão SD, o sistema envia uma notificação
+{@link android.os.Environment#MEDIA_MOUNTED}. Essa notificação
+fornece um objeto <code>StorageVolume</code> nos dados de intenção que
+você pode usar para acessar os diretórios na mídia removível. O exemplo a seguir
+acessa o diretório <code>Pictures</code> na mídia removível:</p>
+
+<pre>
+// BroadcastReceiver has already cached the MEDIA_MOUNTED
+// notification Intent in mediaMountedIntent
+StorageVolume volume = (StorageVolume)
+    mediaMountedIntent.getParcelableExtra(StorageVolume.EXTRA_STORAGE_VOLUME);
+volume.createAccessIntent(Environment.DIRECTORY_PICTURES);
+startActivityForResult(intent, request_code);
+</pre>
+
+<h2 id="best">Práticas recomendadas</h2>
+
+<p>Quando possível, mantenha o URI de acesso a diretórios externos para que você não precise
+solicitar acesso ao usuário várias vezes. Quando o usuário conceder o acesso, chame
+<code>getContentResolver().takePersistableUriPermssion()</code> com o
+URI de acesso ao diretório. O sistema manterá o URI e as solicitações de acesso
+subsequentes retornarão <code>RESULT_OK</code> e não mostrarão a mensagem de confirmação para o
+usuário.</p>
+
+<p>Se o usuário negar acesso a um diretório externo, não repita a
+solicitação imediatamente. Insistir em solicitações de acesso repetidas vezes gera uma experiência
+negativa para o usuário.</p>
diff --git a/docs/html-intl/intl/pt-br/preview/features/security-config.jd b/docs/html-intl/intl/pt-br/preview/features/security-config.jd
new file mode 100644
index 0000000..673de0f
--- /dev/null
+++ b/docs/html-intl/intl/pt-br/preview/features/security-config.jd
@@ -0,0 +1,744 @@
+page.title=Configurações de segurança de rede
+page.keywords=preview,security,network
+
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+
+<h2>Neste documento</h2>
+<ol>
+  <li><a href="#manifest">Adicionar um arquivo de configurações de segurança</a></li>
+  <li><a href="#CustomTrust">Personalizar CAs confiáveis</a>
+      <ol>
+      <li><a href="#ConfigCustom">Configurar uma CA personalizada confiável</a></li>
+      <li><a href="#LimitingCas">Limitar o conjunto de CAs confiáveis</a></li>
+      <li><a href="#TrustingAdditionalCas">Confiar em CAs adicionais</a></li>
+      </ol>
+  </li>
+  <li><a href="#TrustingDebugCa">CAs somente de depuração</a></li>
+  <li><a href="#UsesCleartextTraffic">Cancelar uso de tráfego de texto simples</a></li>
+  <li><a href="#CertificatePinning">Fixar certificados</a></li>
+  <li><a href="#ConfigInheritance">Comportamento de herança de configuração</a></li>
+  <li><a href="#FileFormat">Formato do arquivo de configurações</a></li>
+</ol>
+</div>
+</div>
+
+
+<p>
+  O Android N inclui um recurso de configurações de segurança de rede
+ que permite que os aplicativos personalizem as configurações de segurança de rede em um arquivo de configurações declarativo e seguro
+ sem modificar o código do aplicativo. Essas configurações podem
+ ser definidas para domínios específicos e para um aplicativo específico. Os principais
+ recursos são:
+</p>
+
+<ul>
+  <li>
+    <b>Âncoras de confiança personalizadas:</b> personalize quais autoridades de certificado (CA)
+ são confiáveis para as conexões seguras de um aplicativo. Por
+ exemplo, confiar em certificados autoassinados privados ou restringir
+ o conjunto de CAs públicas nas quais o aplicativo confia.
+  </li>
+
+  <li>
+    <b>Substituições somente depuração:</b> depure conexões seguras do aplicativo com segurança,
+ sem adicionar riscos à base instalada.
+  </li>
+
+  <li>
+    <b>Cancelar uso de tráfego de texto simples:</b> proteja aplicativos contra
+ o uso acidental de tráfego de texto simples.
+  </li>
+
+  <li>
+    <b>Fixar certificados:</b> restrinja a conexão segura de um aplicativo
+ a certificados específicos.
+  </li>
+</ul>
+
+
+<h2 id="manifest">Adicionar um arquivo de configurações de segurança</h2>
+
+<p>
+  O recurso de configurações de segurança de rede usa um arquivo XML no qual você especifica
+ as configurações do seu aplicativo. Inclua uma entrada no manifesto do seu
+ aplicativo para apontar para esse arquivo. Este trecho de código de um manifesto
+ demonstra como criar essa entrada:
+</p>
+
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?&gt;
+...
+&lt;app ...&gt;
+    &lt;meta-data android:name="android.security.net.config"
+               android:resource="@xml/network_security_config" /&gt;
+    ...
+&lt;/app&gt;
+</pre>
+
+<h2 id="CustomTrust">Personalizar CAs confiáveis</h2>
+
+<p>
+  Um aplicativo pode querer confiar em um conjunto personalizado de CAs em vez de no padrão
+ da plataforma. Os motivos mais comuns para isso são:
+</p>
+
+<ul>
+  <li>Conectar-se a um host com uma autoridade de certificado personalizada (autoassinada,
+ emitida por uma CA corporativa interna etc.).
+  </li>
+
+  <li>Limitar o conjunto de CAs para apenas aquelas nas quais você confia em vez de todas
+ as CAs pré-instaladas.
+  </li>
+
+  <li>Confiar em CAs adicionais não incluídas no sistema.
+  </li>
+</ul>
+
+<p>
+  Por padrão, conexões seguras (por exemplo, TLS, HTTPS) de todos os aplicativos confiam
+ nas CAs pré-instaladas do sistema e os aplicativos direcionados ao nível da API 23
+ (Android M) e inferior também confiam no repositório de CAs adicionadas pelo usuário por padrão. Um
+ aplicativo pode personalizar as próprias conexões usando {@code base-config} (para
+ personalização em todo o aplicativo) ou {@code domain-config} (para personalização
+ por domínio).
+</p>
+
+
+<h3 id="ConfigCustom">Configurar uma CA personalizada</h3>
+
+<p>
+  Suponhamos que você queira se conectar a um host que use um certificado SSL autoassinado
+ ou a um host cujo certificado SSL foi emitido por uma CA não pública
+ na qual confia, como a CA interna da sua empresa.
+</p>
+
+<p>
+  <code>res/xml/network_security_config.xml</code>:
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?&gt;
+&lt;network-security-config&gt;
+    &lt;domain-config&gt;
+        &lt;domain includeSubdomains="true"&gt;example.com&lt;/domain&gt;
+        &lt;trust-anchors&gt;
+            &lt;certificates src="@raw/my_ca"/&gt;
+        &lt;/trust-anchors&gt;
+    &lt;/domain-config&gt;
+&lt;/network-security-config&gt;
+</pre>
+</p>
+
+<p>
+  Adicione o certificado da CA autoassinada ou não pública em formato PEM ou DER em
+ {@code res/raw/my_ca}.
+</p>
+
+
+<h3 id="LimitingCas">Limitar o conjunto de CAs confiáveis</h3>
+
+<p>
+  Um aplicativo que não queira confiar em todas as CAs nas quais o sistema confia
+ pode especificar o próprio conjunto limitado de CAs confiáveis. Isso protege o
+ aplicativo contra certificados fraudulentos emitidos por qualquer outra CA.
+</p>
+
+<p>
+  A configuração para limitar o conjunto de CAs confiáveis é semelhante a <a href="#TrustingACustomCa">confiar em uma CA personalizada</a> para um domínio específico, mas
+ fornecendo várias CAs no recurso.
+</p>
+
+<p>
+<code>res/xml/network_security_config.xml</code>:
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?&gt;
+&lt;network-security-config&gt;
+    &lt;domain-config&gt;
+        &lt;domain includeSubdomains="true"&gt;secure.example.com&lt;/domain&gt;
+        &lt;domain includeSubdomains="true"&gt;cdn.example.com&lt;/domain&gt;
+        &lt;trust-anchors&gt;
+            &lt;certificates src="@raw/trusted_roots"/&gt;
+        &lt;/trust-anchors&gt;
+    &lt;/domain-config&gt;
+&lt;/network-security-config&gt;
+</pre>
+</p>
+
+<p>
+  Adicione as CAs confiáveis em formato PEM ou DER em {@code res/raw/trusted_roots}.
+  Observe que, ao usar o formato PEM, o arquivo deve conter <em>somente</em> dados PEM,
+ sem texto adicional. Você também pode fornecer vários elementos
+ <a href="#certificates"><code>&lt;certificates&gt;</code></a>
+em vez de um.
+</p>
+
+
+<h3 id="TrustingAdditionalCas">
+  Confiar em CAs adicionais
+</h3>
+
+<p>
+  Um aplicativo pode querer confiar em CAs adicionais nas quais o sistema não confia.
+ Isso pode ocorrer se o sistema ainda não incluiu a CA ou se a CA
+ não atender aos requisitos de inclusão no sistema Android. O
+ aplicativo pode fazer isso ao especificar várias fontes de certificados para uma
+ configuração.
+</p>
+<p>
+<code>res/xml/network_security_config.xml</code>:
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?&gt;
+&lt;network-security-config&gt;
+    &lt;base-config&gt;
+        &lt;trust-anchors&gt;
+            &lt;certificates src="@raw/extracas"/&gt;
+            &lt;certificates src="system"/&gt;
+        &lt;/trust-anchors&gt;
+    &lt;/base-config&gt;
+&lt;/network-security-config&gt;
+</pre>
+</p>
+
+
+<h2 id="TrustingDebugCa">Configurar CAs para depuração</h2>
+
+<p>
+  Ao depurar um aplicativo conectado por HTTPS, você pode querer
+ se conectar a um servidor de desenvolvimento local que não tenha o certificado SSL
+ do seu servidor de produção. Para fazer isso sem
+ modificar o código do aplicativo, você pode especificar CAs somente de depuração que
+ sejam confiáveis <i>apenas</i> quando <a href="{@docRoot}guide/topics/manifest/application-element.html#debug">
+android:debuggable</a>
+ for {@code true} ao usar {@code debug-overrides}. Normalmente, IDEs e ferramentas de compilação
+ definem esse sinalizador automaticamente para compilações de não lançamento.
+</p>
+
+<p>
+  Isso é mais seguro do que o código condicional normal, pois, como medida
+ de segurança, os repositórios do aplicativo não aceitam aplicativos marcados como
+ depuráveis.
+</p>
+
+<p>
+<code>res/xml/network_security_config.xml</code>:
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?&gt;
+&lt;network-security-config&gt;
+    &lt;debug-overrides&gt;
+        &lt;trust-anchors&gt;
+            &lt;certificates src="@raw/debug_cas"/&gt;
+        &lt;/trust-anchors&gt;
+    &lt;/debug-overrides&gt;
+&lt;/network-security-config&gt;
+</pre>
+</p>
+
+
+<h2 id="UsesCleartextTraffic">Cancelar uso de tráfego de texto simples</h2>
+
+<p>
+  Aplicativos que pretendem se conectar a destinos usando apenas conexões
+ seguras podem cancelar o uso de texto simples de suporte (usando o protocolo HTTP não criptografado
+ em vez de HTTPS) para esses destinos. Essa opção ajuda a evitar
+ regressões acidentais em aplicativos devido a alterações nos URLs fornecidos por fontes externas,
+ como servidores de back-end.
+  Consulte {@link android.security.NetworkSecurityPolicy#isCleartextTrafficPermitted
+  NetworkSecurityPolicy.isCleartextTrafficPermitted()} para saber mais.
+</p>
+
+<p>
+  Por exemplo, um aplicativo pode querer garantir que todas as conexões com {@code
+  secure.example.com} sejam sempre realizadas por HTTPS para proteger o tráfego confidencial
+ de redes hostis.
+</p>
+
+<p>
+<code>res/xml/network_security_config.xml</code>:
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?&gt;
+&lt;network-security-config&gt;
+    &lt;domain-config usesCleartextTraffic="false"&gt;
+        &lt;domain includeSubdomains="true"&gt;secure.example.com&lt;/domain&gt;
+    &lt;/domain-config&gt;
+&lt;/network-security-config&gt;
+</pre>
+</p>
+
+
+<h2 id="CertificatePinning">Fixar certificados</h2>
+
+<p>
+  Normalmente, um aplicativo confia em todas as CAs pré-instaladas. Se qualquer uma dessas CAs
+ emitir um certificado fraudulento, o aplicativo estará em risco de ataques
+ MiTM. Alguns aplicativos optam por limitar o conjunto de certificados que aceitam
+ restringindo o conjunto de CAs ou fixando certificados.
+</p>
+
+<p>
+  A fixação de certificados é realizada ao fornecer um conjunto de certificados pelo hash da
+ chave pública (SubjectPublicKeyInfo do certificado X.509). Uma cadeia de certificados
+ é válida somente se contiver pelo menos uma
+ das chaves públicas fixadas.
+</p>
+
+<p>
+  Observe que, ao usar a fixação de certificados, você deve sempre incluir uma chave de backup
+ para que, se você for forçado a alternar para novas chaves ou alterar as CAs (ao
+ fixar um certificado de CA ou um intermediário dessa CA), a
+ conectividade do seu aplicativo não seja afetada. Caso contrário, você precisará enviar
+ uma atualização ao aplicativo para restaurar a conectividade.
+</p>
+
+<p>
+  Além disso, é possível definir um tempo de expiração para as fixações, após o qual
+ elas não sejam mais realizadas. Isso ajuda a evitar problemas de conectividade
+ em aplicativos que não foram atualizados. No entanto, definir um tempo de expiração
+ para fixações pode permitir que as fixações sejam ignoradas.
+</p>
+
+<p>
+<code>res/xml/network_security_config.xml</code>:
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?&gt;
+&lt;network-security-config&gt;
+    &lt;domain-config&gt;
+        &lt;domain includeSubdomains="true"&gt;example.com&lt;/domain&gt;
+        &lt;pin-set expiration="2018-01-01"&gt;
+            &lt;pin digest="SHA-256"&gt;7HIpactkIAq2Y49orFOOQKurWxmmSFZhBCoQYcRhJ3Y=&lt;/pin&gt;
+            &lt;!-- backup pin --&gt
+            &lt;pin digest="SHA-256"&gt;fwza0LRMXouZHRC8Ei+4PyuldPDcf3UKgO/04cDM1oE=&lt;/pin&gt;
+    &lt;/domain-config&gt;
+&lt;/network-security-config&gt;
+</pre>
+</p>
+
+
+<h2 id="ConfigInheritance">Comportamento de herança de configuração</h2>
+
+<p>
+  Valores não definidos em uma configuração específica são herdados. Esse comportamento permite
+ configurações mais complexas, mantendo o arquivo de configuração legível.
+</p>
+
+<p>
+  Se um valor não for definido em uma entrada específica, o valor da próxima entrada
+ mais genérica será usado. Valores não definidos em um {@code domain-config} são
+ obtidos pelo {@code domain-config} pai, se aninhados, ou, caso contrário, pelo {@code
+  base-config}. Valores não definidos no {@code base-config} usam os
+ valores padrão da plataforma.
+</p>
+
+<p>
+  Por exemplo, considere um caso no qual todas as conexões para subdomínios de {@code
+  example.com} devem usar um conjunto personalizado de CAs. Além disso, o tráfego de texto simples para esses
+ domínios é permitido <em>exceto</em> ao se conectar com {@code
+  secure.example.com}. Ao aninhar a configuração para {@code
+  secure.example.com} dentro da configuração para {@code example.com}, o
+ {@code trust-anchors} não precisa ser duplicado.
+</p>
+
+<p>
+<code>res/xml/network_security_config.xml</code>:
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?&gt;
+&lt;network-security-config&gt;
+    &lt;domain-config&gt;
+        &lt;domain includeSubdomains="true"&gt;example.com&lt;/domain&gt;
+        &lt;trust-anchors&gt;
+            &lt;certificates src="@raw/my_ca"/&gt;
+        &lt;/trust-anchors&gt;
+        &lt;domain-config cleartextTrafficPermitted="false"&gt;
+            &lt;domain includeSubdomains="true"&gt;secure.example.com&lt;/domain&gt;
+        &lt;/domain-config&gt;
+    &lt;/domain-config&gt;
+&lt;/network-security-config&gt;
+</pre>
+</p>
+
+
+<h2 id="FileFormat">Formato do arquivo de configurações</h2>
+
+<p>
+  O recurso de configurações de segurança de rede usa um arquivo no formato XML.
+  A estrutura geral desse arquivo é mostrada no seguinte exemplo de código:
+</p>
+
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?&gt;
+&lt;network-security-config&gt;
+    &lt;base-config&gt;
+        &lt;trust-anchors&gt;
+            &lt;certificates src="..."/&gt;
+            ...
+        &lt;/trust-anchors&gt;
+    &lt;/base-config&gt;
+
+    &lt;domain-config&gt;
+        &lt;domain&gt;android.com&lt;/domain&gt;
+        ...
+        &lt;trust-anchors&gt;
+            &lt;certificates src="..."/&gt;
+            ...
+        &lt;/trust-anchors&gt;
+        &lt;pin-set&gt;
+            &lt;pin digest="..."&gt;...&lt;/pin&gt;
+            ...
+        &lt;/pin-set&gt;
+    &lt;/domain-config&gt;
+    ...
+    &lt;debug-overrides&gt;
+        &lt;trust-anchors&gt;
+            &lt;certificates src="..."/&gt;
+            ...
+        &lt;/trust-anchors&gt;
+    &lt;/debug-overrides&gt;
+&lt;/network-security-config&gt;
+</pre>
+
+<p>
+  As seções a seguir descrevem a sintaxe e outros detalhes do formato do
+ arquivo.
+</p>
+
+<h3 id="network-security-config">
+  &lt;network-security-config&gt;
+</h3>
+
+<dl class="xml">
+  <dt>
+    pode conter:
+  </dt>
+
+  <dd>
+    0 ou 1 de <code><a href="#base-config">&lt;base-config&gt;</a></code><br>
+    Qualquer número de <code><a href=
+    "#domain-config">&lt;domain-config&gt;</a></code><br>
+    0 ou 1 de <code><a href="#debug-overrides">&lt;debug-overrides&gt;</a></code>
+  </dd>
+</dl>
+
+<h3 id="base-config">
+  &lt;base-config&gt;
+</h3>
+
+<dl class="xml">
+  <dt>
+    sintaxe:
+  </dt>
+</dl>
+
+<pre class="stx">
+&lt;base-config <a href=
+"#usesCleartextTraffic">usesCleartextTraffic</a>=["true" | "false"]&gt;
+    ...
+&lt;/base-config&gt;
+</pre>
+<dl class="xml">
+  <dt>
+    pode conter:
+  </dt>
+
+  <dd>
+    <code><a href="#trust-anchors">&lt;trust-anchors&gt;</a></code>
+  </dd>
+
+  <dt>
+    descrição:
+  </dt>
+
+  <dd>
+    A configuração padrão usada por todas as conexões cujo destino não é
+ coberto por um <a href="#domain-config"><code>domain-config</code></a>.
+
+<p>
+  Qualquer valor não definido usa os valores padrão da plataforma. A configuração padrão
+ para aplicativos direcionados a níveis de API acima do 24:
+</p>
+
+<pre>
+&lt;base-config usesCleartextTraffic="true"&gt;
+    &lt;trust-anchors&gt;
+        &lt;certificates src="system" /&gt;
+    &lt;/trust-anchors&gt;
+&lt;/base-config&gt;
+</pre>
+A configuração padrão para aplicativos direcionados a níveis de API 23 e inferiores:
+<pre>
+&lt;base-config usesCleartextTraffic="true"&gt;
+    &lt;trust-anchors&gt;
+        &lt;certificates src="system" /&gt;
+        &lt;certificates src="user" /&gt;
+    &lt;/trust-anchors&gt;
+&lt;/base-config&gt;
+</pre>
+
+  </dd>
+</dl>
+
+<h3 id="domain-config">&lt;domain-config&gt;</h3>
+<dl class="xml">
+<dt>sintaxe:</dt>
+<dd>
+<pre class="stx">&lt;domain-config <a href="#usesCleartextTraffic">usesCleartextTraffic</a>=["true" | "false"]&gt;
+    ...
+&lt;/domain-config&gt;</pre>
+</dd>
+
+<dt>Pode conter:</dt>
+
+<dd>
+1 ou mais <code><a href="#domain">&lt;domain&gt;</a></code>
+<br/>0 ou 1 <code><a href="#trust-anchors">&lt;trust-anchors&gt;</a></code>
+<br/>0 ou 1 <code><a href="#pin-set">&lt;pin-set&gt;</code></a>
+<br/>Qualquer número de <code>&lt;domain-config&gt;</code> aninhados</dd>
+
+<dt>Descrição</dt>
+<dd>A configuração usada para conexões com destinos específicos, conforme é definido pelos elementos {@code domain}.
+
+<p>Observe que, se vários elementos {@code domain-config} cobrirem um destino, a configuração com a regra de domínio correspondente
+mais específica (mais longa) será usada.</p></dd>
+</dl>
+
+
+<h3 id="domain">&lt;domain&gt;</h3>
+
+<dl class="xml">
+  <dt>
+    sintaxe:
+  </dt>
+
+  <dd>
+    <pre class="stx">
+&lt;domain includeSubdomains=["true" | "false"]&gt;example.com&lt;/domain&gt;
+</pre>
+  </dd>
+
+  <dt>
+    Atributos:
+  </dt>
+
+  <dd>
+    <dl class="attr">
+      <dt>
+        {@code includeSubdomains}
+      </dt>
+
+      <dd>
+        Se {@code "true"}, a regra de domínio corresponderá ao domínio e a todos os
+ subdomínios, incluindo subdomínios de subdomínios. Caso contrário, a regra
+ se aplica apenas a correspondências exatas.
+      </dd>
+    </dl>
+  </dd>
+
+  <dt>
+    Descrição:
+  </dt>
+</dl>
+
+<h3 id="debug-overrides">&lt;debug-overrides&gt;</h3>
+
+<dl class="xml">
+  <dt>
+    sintaxe:
+  </dt>
+
+  <dd>
+    <pre class="stx">
+&lt;debug-overrides&gt;
+    ...
+&lt;/debug-overrides&gt;
+</pre>
+  </dd>
+
+  <dt>
+    Pode conter:
+  </dt>
+
+  <dd>
+    0 ou 1 <code><a href="#trust-anchors">&lt;trust-anchors&gt;</a></code>
+  </dd>
+
+  <dt>
+    Descrição:
+  </dt>
+
+  <dd>
+    Substituições a serem aplicadas quando <a href="{@docRoot}guide/topics/manifest/application-element.html#debug">android:debuggable</a>
+ for {@code "true"}, o que normalmente ocorre em compilações de não lançamento
+ geradas por IDEs e ferramentas de compilação. Âncoras de confiança especificadas em {@code
+    debug-overrides} são adicionadas a todas as demais configurações e a fixação
+ de certificados não é realizada quando a cadeia de certificados do servidor usar uma
+ dessas âncoras de confiança de somente depuração. Se <a href="{@docRoot}guide/topics/manifest/application-element.html#debug">android:debuggable</a>
+ for {@code "false"}, esta seção será ignorada por completo.
+  </dd>
+</dl>
+
+<h3 id="trust-anchors">&lt;trust-anchors&gt;</h3>
+<dl class="xml">
+  <dt>
+    sintaxe:
+  </dt>
+
+  <dd>
+    <pre class="stx">
+&lt;trust-anchors&gt;
+...
+&lt;/trust-anchors&gt;
+</pre>
+  </dd>
+
+  <dt>
+    Pode conter:
+  </dt>
+
+  <dd>
+    Qualquer número de <code><a href="#certificates">&lt;certificates&gt;</a></code>
+  </dd>
+
+  <dt>
+    Descrição:
+  </dt>
+
+  <dd>
+    Conjunto de âncoras de confiança para conexões seguras.
+  </dd>
+</dl>
+
+
+<h3 id="certificates">&lt;certificates&gt;</h3>
+<dl class="xml">
+<dt>sintaxe:</dt>
+<dd><pre class="stx">&lt;certificates src=["system" | "user" | "<i>raw resource</i>"]
+              overridePins=["true" | "false"] /&gt;
+</pre></dd>
+<dt>descrição:</dt>
+<dd>Conjunto de certificados X.509 para elementos {@code trust-anchors}.</dd>
+
+<dt>atributos:</dt>
+<dd><dl class="attr">
+<dt>{@code src}</dt>
+<dd>
+A fonte de certificados de CA, que pode ser um dos
+<ul>
+  <li>IDs de recursos brutos que apontam para um arquivo que contém certificados X.509.
+  Os certificados devem ser codificados em formato DER ou PEM. No caso de certificados PEM,
+ o arquivo <em>não deve</em> conter dados não PEM adicionais, como
+ comentários.
+  </li>
+
+  <li>{@code "system"} para os certificados de CA pré-instalados do sistema
+  </li>
+
+  <li>{@code "user"} para certificados de CA adicionados pelo usuário
+  </li>
+</ul>
+</dd>
+
+<dt>{@code overridePins}</dt>
+<dd>
+  <p>
+    Especifica se as CAs dessa fonte ignoram a fixação de certificados. Se {@code
+    “true”} e forem certificadas cadeias de certificados que incluam uma das CAs dessa
+ fonte, a fixação não será realizada. Isso pode ser útil para depurar CAs
+ ou permitir que o usuário execute ataques MiTM no tráfego seguro do seu aplicativo.
+  </p>
+
+  <p>
+    O padrão é {@code "false"} a não ser que seja especificado em um elemento {@code debug-overrides}
+. Nesse caso, o padrão será {@code "true"}.
+  </p>
+</dd>
+</dl>
+</dd>
+
+
+<h3 id="pin-set">&lt;pin-set&gt;</h3>
+
+<dl class="xml">
+  <dt>
+    sintaxe:
+  </dt>
+
+  <dd>
+<pre class="stx">
+&lt;pin-set expiration="date"&gt;
+...
+&lt;/pin-set&gt;
+</pre>
+  </dd>
+
+  <dt>
+    Pode conter:
+  </dt>
+
+  <dd>
+    Qualquer número de <code><a href="#pin">&lt;pin&gt;</a></code>
+  </dd>
+
+  <dt>
+    Descrição:
+  </dt>
+
+  <dd>
+    Um conjunto de fixações de chave pública. Para que uma conexão segura seja confiável, uma das
+ chaves públicas na cadeia de confiança deve estar presente no conjunto de fixações. Consulte
+ <code><a href="#pin">&lt;pin&gt;</a></code> para saber mais sobre o formato das fixações.
+  </dd>
+
+  <dt>
+    Atributos:
+  </dt>
+
+  <dd>
+    <dl class="attr">
+      <dt>
+        {@code expiration}
+      </dt>
+
+      <dd>
+        A data, no formato {@code yyyy-MM-dd}, após a qual as fixações
+ expiram e são desativadas. Se o atributo não for definido, as fixações
+ não expirarão.
+        <p>
+          A expiração ajuda a evitar problemas de conectividade em aplicativos que não
+ recebem atualizações para o conjunto de fixações, por exemplo, porque o usuário
+ desativou as atualizações do aplicativo.
+        </p>
+      </dd>
+    </dl>
+  </dd>
+</dl>
+
+<h3 id="pin">&lt;pin&gt;</h3>
+<dl class="xml">
+  <dt>
+    sintaxe:
+  </dt>
+
+  <dd>
+<pre class="stx">
+&lt;pin digest=["SHA-256"]&gt;base64 encoded digest of X.509
+    SubjectPublicKeyInfo (SPKI)&lt;/pin&gt;
+</pre>
+  </dd>
+
+  <dt>
+    Atributos:
+  </dt>
+
+  <dd>
+    <dl class="attr">
+      <dt>
+        {@code digest}
+      </dt>
+
+      <dd>
+        O algoritmo de resumo usado para gerar a fixação. No momento, apenas
+ {@code "SHA-256"} é permitido.
+      </dd>
+    </dl>
+  </dd>
+</dl>
diff --git a/docs/html-intl/intl/pt-br/preview/features/tv-recording-api.jd b/docs/html-intl/intl/pt-br/preview/features/tv-recording-api.jd
new file mode 100644
index 0000000..95b5787
--- /dev/null
+++ b/docs/html-intl/intl/pt-br/preview/features/tv-recording-api.jd
@@ -0,0 +1,120 @@
+page.title=Gravação para TV
+page.keywords=preview,sdk,tv,recording
+page.tags=androidn
+
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+  <h2>Neste documento</h2>
+  <ol>
+    <li><a href="#supporting">Indicar suporte para gravação</a></li>
+    <li><a href="#recording">Gravar uma sessão</a></li>
+    <li><a href="#errors">Solucionar erros de gravação</a></li>
+    <li><a href="#sessions">Gerenciar sessões gravadas</a></li>
+    <li><a href="#best">Práticas recomendadas</a></li>
+  </ol>
+</div>
+</div>
+
+<p>Serviços de entrada de TV permitem que o usuário pause e retome a reprodução do canal por meio de
+APIs de time-shifting. O Android N expande o time-shifting
+ao permitir que o usuário salve várias sessões gravadas.</p>
+
+<p>Os usuários podem programar gravações antecipadamente ou iniciar uma gravação enquanto assistem a
+um programa. Quando o sistema salvar a gravação, o usuário poderá navegar, gerenciar
+e reproduzir a gravação usando o aplicativo de TV do sistema.</p>
+
+<p>Se quiser fornecer recursos de gravação para seu serviço de entrada de TV,
+indique para o sistema que seu aplicativo oferece suporte a gravação, implemente
+a capacidade de gravar programas, solucione e comunique erros ocorridos
+durante a gravação e gerencie as sessões gravadas.</p>
+
+<h2 id="supporting">Indicar suporte para gravação</h2>
+
+<p>Para informar ao sistema que seu serviço de entrada de TV oferece suporte a gravação, siga
+estas etapas:</p>
+
+<ol>
+<li>No método <code>TvInputService.onCreate()</code>, crie um novo objeto
+<code>TvInputInfo</code> usando a classe <code>TvInputInfo.Builder</code>
+.</li>
+<li>Ao criar o novo objeto <code>TvInputInfo</code>, chame
+<code>setCanRecord(true)</code> antes de chamar <code>build()</code> para
+indicar que seu serviço oferece suporte a gravação.</li>
+<li>Registre seu objeto <code>TvInputInfo</code> com o sistema chamando
+<code>TvInputService.updateTvInputInfo()</code>.</li>
+</ol>
+
+<h2 id="recording">Gravar uma sessão</h2>
+
+<p>Depois que o serviço de entrada de TV registrar que oferece suporte ao recurso
+de gravação, o sistema chamará seu
+<code>TvInputService.onCreateRecordingSession()</code> quando precisar acessar
+a implementação de gravação do seu aplicativo. Implemente sua própria subclasse
+<code>TvInputService.RecordingSession</code> e retorne-a
+quando o retorno de chamada <code>onCreateRecordingSession()</code>
+for acionado. Essa subclasse é responsável por alternar para os dados de canal corretos,
+gravando os dados solicitados e comunicando o status de gravação e os erros ao
+sistema.</p>
+
+<p>Quando o sistema chamar <code>RecordingSession.onTune()</code>, passando um
+URI de canal, acesse o canal especificado pelo URI. Notifique o sistema de que
+seu aplicativo acessou o canal desejado ao chamar <code>notifyTuned()</code>
+ou, se o aplicativo não conseguiu acessar o canal correto, chame
+<code>notifyError()</code>.</p>
+
+<p>Em seguida, o sistema invoca o retorno de chamada <code>RecordingSession.onStartRecording()</code>
+. O aplicativo deve iniciar a gravação imediatamente. Quando o sistema invoca
+esse retorno de chamada, ele pode fornecer um URI que contenha informações sobre o programa
+que será gravado. Quando a gravação for concluída, você deverá copiar esses
+dados para a tabela de dados <code>RecordedPrograms</code>.</p>
+
+<p>Por fim, o sistema chama <code>RecordingSession.onStopRecording()</code>.
+Nesse momento, o aplicativo deve interromper a gravação imediatamente. Também é preciso
+criar uma entrada na tabela <code>RecordedPrograms</code>. Essa entrada deve
+incluir o URI dos dados da sessão gravada na coluna
+<code>RecordedPrograms.COLUMN_RECORDING_DATA_URI</code> e qualquer informação
+sobre o programa fornecida pelo sistema na chamada inicial em
+<code>onStartRecording()</code>.</p>
+
+<p>Para saber mais sobre como acessar a tabela <code>RecordedPrograms</code>,
+consulte <a href="#sessions">Gerenciar sessões gravadas</a>.</p>
+
+<h2 id="errors">Solucionar erros de gravação</h2>
+
+<p>Se um erro ocorrer durante a gravação, inutilizando os dados gravados,
+notifique o sistema chamando <code>RecordingSession.notifyError()</code>.
+Também é possível chamar <code>notifyError()</code> depois que uma sessão de gravação é
+criada para informar ao sistema que seu aplicativo não pode mais gravar sessões.</p>
+
+<p>Se um erro ocorrer durante a gravação, mas você quiser fornecer uma gravação
+parcial que pode ser usada pelos usuários para reprodução, chame
+<code>RecordingSession.notifyRecordingStopped()</code> para permitir que o sistema
+use a sessão parcial.</p>
+
+<h2 id="sessions">Gerenciar sessões gravadas</h2>
+
+<p>O sistema mantém as informações de todas as sessões gravadas de todos
+os aplicativos de canais com recursos de gravação na tabela de provedor de conteúdo <code>TvContract.RecordedPrograms</code>
+. Essas informações podem ser acessadas pelo URI de conteúdo
+<code>RecordedPrograms.Uri</code>. Use APIs de provedores de conteúdos para
+ler, adicionar e excluir entradas dessa tabela.</p>
+
+<p>Para saber mais sobre como trabalhar com dados de provedores de conteúdo, consulte 
+<a href="{@docRoot}guide/topics/providers/content-provider-basics.html">
+Fundamentos do provedor de conteúdo</a> .</p>
+
+<h2 id="best">Práticas recomendadas</h2>
+
+<p>Dispositivos de TV podem ter armazenamento limitado, então tenha bom senso ao
+alocar armazenamento para salvar sessões gravadas. Use
+<code>RecordingCallback.onError(RECORDING_ERROR_INSUFFICIENT_SPACE)</code> quando
+não houver espaço suficiente para salvar uma sessão gravada.</p>
+
+<p>Quando o usuário iniciar a gravação, comece a gravar os dados assim
+que possível. Para facilitar esse processo, realize qualquer tarefa demorada imediatamente,
+como acessar e alocar o espaço de armazenamento, quando o sistema invocar o retorno de chamada
+<code>onCreateRecordingSession()</code>. Isso permite que você comece
+a gravar imediatamente após o acionamento do retorno de chamada <code>onStartRecording()</code>
+.</p>
diff --git a/docs/html-intl/intl/pt-br/preview/index.jd b/docs/html-intl/intl/pt-br/preview/index.jd
new file mode 100644
index 0000000..54531f5
--- /dev/null
+++ b/docs/html-intl/intl/pt-br/preview/index.jd
@@ -0,0 +1,120 @@
+page.title=Android N Developer Preview
+page.tags="preview","developer"
+meta.tags="preview", "android"
+fullpage=true
+forcelocalnav=true
+header.hide=1
+footer.hide=1
+@jd:body
+
+<script>
+  $(document).ready(function() {
+    if (useUpdatedTemplates) {
+      $("#useUpdatedTemplates").css("display","block");
+    } else {
+      $("#useOldTemplates").css("display","block");
+    }
+  })
+</script>
+
+<section class="dac-expand dac-hero dac-light" style="background-color:#B2DFDB">
+  <div class="wrap" style="max-width:1100px;margin-top:0">
+    <div class="cols dac-hero-content" style="padding-bottom:1em;">
+
+      <div class="col-7of16 col-push-9of16" style="padding-left:2em">
+        <h1 class="dac-hero-title">Android N Developer Preview</h1>
+        <p class="dac-hero-description">
+          Prepare-se para o Android N!
+ <strong>Teste seus aplicativos</strong> no Nexus e em outros dispositivos. Ofereça suporte a novos
+ comportamentos de sistema para <strong>economizar energia e memória</strong>.
+ Estenda seus aplicativos com a <strong>interface de várias janelas</strong>,
+ <strong>direcione notificações de resposta</strong> e muito mais.
+        </p>
+
+        <a class="dac-hero-cta" href="{@docRoot}preview/overview.html">
+          <span class="dac-sprite dac-auto-chevron"></span>
+          Primeiros passos
+        </a><!--<br>
+        <a class="dac-hero-cta" href="{@docRoot}preview/support.html">
+          <span class="dac-sprite dac-auto-chevron"></span>
+          Update to Android N (final SDK)
+        </a><br>-->
+      </div>
+      <div class="col-9of16 col-pull-7of16 dac-hero-figure" style="margin-top:1.5em;padding-right:1.5em;">
+        <img class="dac-hero-image" src="{@docRoot}images/home/n-preview-hero.png" srcset="{@docRoot}images/home/n-preview-hero.png 1x,
+             {@docRoot}images/home/n-preview-hero_2x.png 2x">
+      </div>
+    </div>
+    <div class="dac-section dac-small">
+      <div class="resource-widget resource-flow-layout col-16"
+           data-query="collection:preview/landing/resources"
+           data-cardSizes="6x2"
+           data-maxResults="6"></div>
+    </div>
+  </div>
+</section>
+
+<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="#build-apps">
+      <i class="dac-sprite dac-arrow-down-gray"></i>
+    </a>
+    <ul class="dac-actions">
+      <li class="dac-action">
+        <a class="dac-action-link" href="https://developer.android.com/preview/bug">
+          <i class="dac-action-sprite dac-sprite dac-auto-chevron-large"></i>
+          Informe um problema
+        </a>
+      </li>
+      <li class="dac-action">
+        <a class="dac-action-link" href="{@docRoot}preview/support.html">
+          <i class="dac-action-sprite dac-sprite dac-auto-chevron-large"></i>
+          Veja as notas de versão
+        </a>
+      </li>
+      <li class="dac-action">
+        <a class="dac-action-link" href="{@docRoot}preview/dev-community">
+          <i class="dac-action-sprite dac-sprite dac-auto-chevron-large"></i>
+          Participe da comunidade de desenvolvedores
+        </a>
+      </li>
+    </ul>
+  </div><!-- end .wrap -->
+</div><!-- end .dac-actions -->
+
+<div id="useOldTemplates" style="display:none;color:black" class="actions-bar dac-expand dac-invert">
+  <div class="wrap dac-offset-parent">
+
+    <div class="actions">
+      <div><a href="https://developer.android.com/preview/bug">
+        <span class="dac-sprite dac-auto-chevron-large"></span>
+        Informe um problema
+      </a></div>
+      <div><a href="{@docRoot}preview/support.html">
+        <span class="dac-sprite dac-auto-chevron-large"></span>
+        Veja as notas de versão
+      </a></div>
+      <div><a href="{@docRoot}preview/dev-community">
+        <span class="dac-sprite dac-auto-chevron-large"></span>
+        Participe da comunidade de desenvolvedores
+      </a></div>
+    </div><!-- end .actions -->
+  </div><!-- end .wrap -->
+</div>
+
+<section class="dac-section dac-light"><div class="wrap">
+  <h1 class="dac-section-title">Recursos</h1>
+  <div class="dac-section-subtitle">
+    Informações essenciais para ajudar você a preparar seus aplicativos para o Android N.
+  </div>
+
+  <div class="resource-widget resource-flow-layout col-16"
+       data-query="collection:preview/landing/more"
+       data-cardSizes="6x6"
+       data-items-per-page="6"
+       data-maxResults="15"
+       data-initial-results="6"></div>
+
+  </div>
+</section>
+
diff --git a/docs/html-intl/intl/pt-br/preview/j8-jack.jd b/docs/html-intl/intl/pt-br/preview/j8-jack.jd
new file mode 100644
index 0000000..601a20b
--- /dev/null
+++ b/docs/html-intl/intl/pt-br/preview/j8-jack.jd
@@ -0,0 +1,183 @@
+page.title=Recursos de linguagem do Java 8
+page.keywords="android N", "Java 8", "Jack"
+@jd:body
+
+<div id="qv-wrapper">
+  <div id="qv">
+    <ol>
+      <li>
+        <a href="#supported-features">Recursos de linguagem e APIs do Java 8 com suporte</a>
+      </li>
+      <li>
+        <a href="#configuration">Como ativar os recursos do Java 8 e a cadeia de ferramentas Jack</a>
+      </li>
+    </ol>
+  </div>
+</div>
+
+<p>O Android N introduz o suporte aos recursos de linguagem do Java 8
+ que podem ser usados ao desenvolver aplicativos direcionados ao Android N.
+  Esta página descreve os novos recursos de linguagem com suporte no Android N
+ Preview, como configurar seu projeto para usá-los e os
+ problemas conhecidos que você poderá encontrar.
+</p>
+
+<p>Para começar a usar esses recursos, primeiro faça o download e instale o Android
+Studio 2.1 (preview) e o Android N Preview SDK, que inclui a 
+cadeia de ferramentas Jack obrigatória e o Android Plugin for Gradle atualizado. Se você ainda não
+instalou o Android N Preview SDK, consulte <a href="{@docRoot}preview/setup-sdk.html">Preparação para desenvolver para o Android N</a>.</p>
+
+
+
+<p class="note">
+  <strong>Observação:</strong> o uso dos novos recursos de linguagem do Java 8 não é
+ obrigatório para desenvolver aplicativos direcionados à plataforma Android N. Se
+ não quiser escrever código com os recursos de linguagem do Java 8, você poderá manter
+ os valores de compatibilidade de origem e destino do seu projeto definidos para o Java 7, mas ainda
+ será necessário compilar com o JDK 8 para desenvolver para a plataforma Android N.
+</p>
+
+<h2 id="supported-features">
+  Recursos de linguagem e APIs do Java 8 com suporte
+</h2>
+
+<p>
+  Atualmente, o Android não oferece suporte a todos os recursos de linguagem do Java 8. No entanto, os
+ recursos a seguir agora estão disponíveis para o desenvolvimento de aplicativos direcionados ao
+ Android N Preview:
+</p>
+
+<ul>
+  <li>
+    <a class="external-link" href="https://docs.oracle.com/javase/tutorial/java/IandI/defaultmethods.html">Métodos
+ de interface padrão e estáticos</a>
+  </li>
+
+  <li>
+    <a class="external-link" href="https://docs.oracle.com/javase/tutorial/java/javaOO/lambdaexpressions.html">
+ Expressões Lambda</a>
+  </li>
+
+  <li>
+    <a class="external-link" href="https://docs.oracle.com/javase/tutorial/java/annotations/repeating.html">Anotações
+ repetíveis</a>
+  </li>
+</ul>
+
+
+<p>
+  Além disso, as seguintes APIs de recursos de linguagem do Java 8 agora estão disponíveis:
+</p>
+
+<ul>
+  <li>APIs relacionadas a reflexo e linguagem:
+  </li>
+
+  <li style="list-style: none; display: inline">
+    <ul>
+      <li>{@code java.lang.FunctionalInterface}
+      </li>
+
+      <li>{@code java.lang.annotation.Repeatable}
+      </li>
+
+      <li>{@code java.lang.reflect.Method.isDefault()}
+      </li>
+
+      <li>e APIs de reflexo associadas a anotações repetíveis, como
+ {@code AnnotatedElement.getAnnotationsByType(Class)}
+      </li>
+    </ul>
+  </li>
+  <li>APIs utilitárias:
+  </li>
+
+  <li style="list-style: none; display: inline">
+    <ul>
+      <li>{@code java.util.function}
+      </li>
+    </ul>
+  </li>
+</ul>
+
+<p class="note">
+  <strong>Observação:</strong> o Android N baseia a implementação de
+ expressões lambda em classes anônimas. Essa abordagem permite que elas
+ sejam compatíveis e possam ser executadas em versões anteriores do Android. Para testar as
+ expressões lambda em versões mais antigas, lembre-se de acessar o arquivo {@code
+build.gradle} e definir{@code compileSdkVersion} e {@code
+targetSdkVersion} como 23 ou menos.
+</p>
+
+<h2 id="configuration">
+  Como ativar os recursos do Java 8 e a cadeia de ferramentas Jack
+</h2>
+
+<p>
+  Para usar os novos recursos de linguagem do Java 8, você também deve usar a
+ nova <a class="external-link" href="https://source.android.com/source/jack.html">cadeia de ferramentas Jack</a>. Essa nova
+ cadeia de ferramentas Android compila o código-fonte de linguagem Java em um código de bytes dex que pode ser lido no Android
+, tem o próprio formato de biblioteca {@code .jack} e fornece a maioria dos recursos
+ de uma cadeia de ferramentas em uma só ferramenta: reempacotamento, redução, ofuscação e
+ multidex.
+</p>
+
+<p>Veja uma comparação entre duas cadeias de ferramentas usadas para compilar arquivos DEX Android:</p>
+<ul>
+  <li>Cadeia de ferramentas legada javac:<br>
+  <b>javac</b> ({@code .java} --&gt; {@code .class}) --&gt; <b>dx</b> ({@code
+  .class} --&gt; {@code .dex})
+  </li>
+
+  <li>Nova cadeia de ferramentas Jack:<br>
+  <b>Jack</b> ({@code .java} --&gt; {@code .jack} --&gt; {@code .dex})
+  </li>
+</ul>
+
+<h3>
+  Configuração do Gradle
+</h3>
+
+<p>
+  Para ativar os recursos de linguagem do Java 8 e o Jack para seu projeto, insira
+ o seguinte no arquivo {@code build.gradle} específico do módulo:
+</p>
+
+<pre>
+android {
+  ...
+  defaultConfig {
+    ...
+    jackOptions {
+      enabled true
+    }
+  }
+  compileOptions {
+    sourceCompatibility JavaVersion.VERSION_1_8
+    targetCompatibility JavaVersion.VERSION_1_8
+  }
+}
+</pre>
+
+<h3>
+  Problemas conhecidos
+</h3>
+
+<p>
+  O Instant Run, introduzido no Android Studio 2.0 (Beta), não funciona com o
+ Jack e será desativado enquanto a nova cadeia de ferramentas estiver em uso.
+</p>
+
+<p>Como o Jack não gera arquivos de classe intermediária ao compilar um
+aplicativo, ferramentas que dependem desses arquivos não funcionam com o Jack. Alguns
+exemplos dessas ferramentas:</p>
+
+<ul>
+  <li>Detectores de códigos suspeitos que operam em arquivos de classe
+  </li>
+
+  <li>Ferramentas e bibliotecas que exigem os arquivos de classe do aplicativo (como JaCoCo
+ e Mockito)</li>
+</ul>
+
+<p>Se encontrar outros problemas ao usar o Jack, <a href="http://tools.android.com/filing-bugs">envie um relatório de erros</a>.</p>
\ No newline at end of file
diff --git a/docs/html-intl/intl/pt-br/preview/overview.jd b/docs/html-intl/intl/pt-br/preview/overview.jd
new file mode 100644
index 0000000..be4e43f
--- /dev/null
+++ b/docs/html-intl/intl/pt-br/preview/overview.jd
@@ -0,0 +1,440 @@
+page.title=Visão geral do programa
+page.metaDescription=Prepare seus aplicativos para a próxima versão do Android.
+page.image=images/cards/card-n-overview_2x.png
+meta.tags="preview", "developer", "android"
+page.tags="preview", "developer", "android"
+
+@jd:body
+<!--
+<div class="cols" style=
+"background-color:#f2daf5; padding: 5px 0;margin-bottom:1em; text-align:center;">
+<h3>
+    Developer Preview 3 is now available
+  </h3>
+  <p>Includes final SDK and near-final system images</p>
+   <div style="margin:auto 1em">
+ <ul class="dac-section-links">
+    <li class="dac-section-link">
+      <a href="{@docRoot}preview/support.html#preview3-notes">
+      <span class="dac-sprite dac-auto-chevron"></span>
+      Read the Notes</a>
+    </li>
+
+    <li class="dac-section-link">
+      <a href="{@docRoot}preview/support.html#preview3-get">
+      <span class="dac-sprite dac-auto-chevron"></span>
+      Get the Update</a>
+    </li>
+
+    <li class="dac-section-link">
+      <a href="https://code.google.com/p/android-developer-preview/">
+      <span class="dac-sprite dac-auto-chevron"></span>
+      Report Issues</a>
+    </li>
+  </ul>
+  </div>
+</div>
+-->
+
+<p>
+  Bem-vindo ao <strong>Android N Developer Preview</strong>, um programa que
+ oferece tudo de que você precisa para testar e otimizar seus aplicativos para a próxima
+ versão do Android. Ele é gratuito e você pode começar imediatamente ao
+ fazer o download das ferramentas do N Developer Preview.
+</p>
+
+
+
+
+
+
+
+<div style="background-color:#eceff1;padding:1em;">
+<div class="wrap">
+  <div class="cols">
+    <div class="col-4of12">
+      <h5>
+        Imagens de emulador e hardware
+      </h5>
+
+      <p>
+        Execute e teste seus aplicativos em diversos dispositivos ou em um emulador.
+
+      </p>
+    </div>
+
+    <div class="col-4of12">
+      <h5>
+        Código de plataforma mais recente
+      </h5>
+
+      <p>
+        Forneceremos atualizações mensais durante o Preview. Portanto, você testará de acordo com as alterações mais recentes da plataforma.
+      </p>
+    </div>
+
+    <div class="col-4of12">
+      <h5>
+        Prioridade para problemas de desenvolvimento
+      </h5>
+
+      <p>
+        Durante as primeiras semanas, nós daremos prioridade aos problemas informados
+ por desenvolvedores. Portanto, teste e forneça-nos feedback o quanto antes.
+      </p>
+    </div>
+
+  </div>
+
+  <div class="cols">
+
+
+    <div class="col-4of12">
+      <h5>
+        Novos comportamentos e recursos
+      </h5>
+
+      <p>
+        Comece a trabalhar mais cedo para oferecer suporte aos novos comportamentos da plataforma e desenvolver seus aplicativos com novos recursos.
+      </p>
+    </div>
+
+    <div class="col-4of12">
+        <h5>
+        Atualizações entregues por OTA
+      </h5>
+
+      <p>
+        Atualizações OTA eficientes para qualquer dispositivo compatível por meio do
+ programa beta do Android. Não é preciso atualizar manualmente.
+      </p>
+    </div>
+
+    <div class="col-4of12">
+      <h5>
+        Feedback e suporte
+      </h5>
+
+      <p>
+        Informe problemas e envie feedback usando nosso 
+<a href="{@docRoot}preview/bug">issue tracker</a>. Conecte-se com outros
+ desenvolvedores na
+ <a href="{@docRoot}preview/dev-community">Comunidade N&nbsp;Developer</a>.
+      </p>
+    </div>
+  </div>
+</div>
+</div>
+
+<!--
+<p>New in the Android N Developer Preview: </p>
+
+<ul>
+  <li> Accompanying Android Beta Program for consumers, starting later in the preview</li>
+  <li> More supported devices, including devices from OEM partners</li>
+  <li> Seamless OTAs for your devices, from initial release to final N release without flashing</li>
+</ul>
+-->
+
+<h2 id="timeline">Cronograma e atualizações</h2>
+<img src="{@docRoot}images/n-preview-updates_2x.png">
+
+<p>
+  O N Developer Preview será executado a partir de 3 de março de 2016 até o último lançamento público do Android N
+ para AOSP e OEMs, planejado para o terceiro trimestre de 2016.
+</p>
+
+<p>
+  Nos marcos mais importantes do desenvolvimento, fornecedores atualizações para seu ambiente de teste e
+ desenvolvimento. De modo geral, você pode esperar atualizações mensais (intervalo de
+ 4 a 6 semanas). Os marcos estão listados abaixo.
+</p>
+
+<ul>
+  <li><strong><a href="{@docRoot}preview/support.html">Preview 1</a></strong> (versão inicial, alpha)</li>
+  <li><strong>Preview 2</strong> (atualização incremental, beta)</li>
+  <li><strong>Preview 3</strong> (atualização incremental, beta)</li>
+  <li><strong>Preview 4</strong> (APIs finais e SDK oficial, publicação no Play)</li>
+  <li><strong>Preview 5</strong> (imagens de sistema quase finalizadas para o teste final)</li>
+  <li><strong>Versão final</strong> para AOSP e ecossistema</li>
+</ul>
+
+<p>
+  Cada atualização inclui ferramentas do SDK, imagens de sistema do Preview, emuladores, documentação de
+ referência e diferenças entre as APIs.
+</p>
+
+<p>
+  Os <strong>três primeiros marcos do Preview</strong> oferecem um <strong>ambiente
+ de teste e desenvolvimento antecipado</strong> para ajudar você a identificar
+ problemas de compatibilidade em seus aplicativos atuais e planejar a migração ou o trabalho em recursos
+ necessários para desenvolver para a nova plataforma. Esse é o período prioritário no qual você deve
+ fornecer feedback sobre os recursos e as APIs e informar problemas de compatibilidade
+ &mdash; para isso, use o <a href="{@docRoot}preview/bug">issue
+ tracker</a>. As APIs sofrerão algumas alterações nessas atualizações.
+</p>
+
+<p>
+  Nos <strong>Previews 4 e 5</strong>, você terá acesso às <strong>versões finais
+ das APIs e do SDK do N</strong>, com as quais poderá desenvolver, além de imagens de sistema quase finalizadas
+ para testar comportamentos e recursos do sistema. O Android N fornecerá uma API de nível
+ padrão no momento. Você poderá iniciar os testes finais de compatibilidade dos seus aplicativos
+ legados e refinar códigos novos que usem as APIs ou os recursos do N.
+</p>
+
+<p>
+  Também a partir do Preview 4, você poderá <strong>publicar aplicativos
+ para dispositivos</strong> que executem o Android N no nível da API oficial, como
+ dispositivos de consumidor que optaram pelo programa beta do Android. Será possível
+ publicar nos canais alfa e beta do Google Play primeiro para testar
+ seus aplicativos com clientes beta do Android antes de distribuir para os demais clientes
+ da loja.
+</p>
+
+<p>
+  Ao testar e desenvolver no Android N, recomendamos que você <strong>mantenha
+ o ambiente de desenvolvimento atualizado</strong> à medida que atualizações do Preview são
+ lançadas. Para facilitar o processo, você pode inscrever seus dispositivos de teste no
+ programa beta do Android e receber <strong>atualizações por OTA</strong> durante
+ cada marco. Como alternativa, imagens atualizadas do Preview estão disponíveis para
+ download e atualização manual.
+</p>
+
+<p>
+  Notificaremos você quando as atualizações do Preview estiverem disponíveis por meio do <a href="http://android-developers.blogspot.com/">Android Developers Blog</a>, além
+ deste site e da <a href="{@docRoot}preview/dev-community">Comunidade
+ Android N Developer</a>.
+</p>
+
+
+<h2 id="preview_tools">O que o N Developer Preview inclui?</h2>
+
+<p>
+  O N Developer Preview inclui tudo o que é necessário para testar seus aplicativos existentes
+ em uma variedade de tamanhos de tela, tecnologias de rede, chipsets de CPU/GPU
+ e arquiteturas de hardware.
+</p>
+
+<h3 id="sdk_tools">Ferramentas do SDK</h3>
+
+<p>É possível fazer o download desses componentes pelo SDK Manager no <a href="{@docRoot}sdk/installing/adding-packages.html">Android Studio</a>:</p>
+
+<ul>
+  <li> <strong>SDK e ferramentas</strong> do N Developer Preview
+  <li> <strong>Imagem do sistema de emulador</strong> (32 bits e 64 bits) do N Developer Preview
+  <li> <strong>Imagem do sistema de emulador para Android TV</strong> (32 bits) do N Developer Preview
+  <li> Bibliotecas de suporte do N Developer Preview (para novos modelos de aplicativos)
+</ul>
+
+<p>
+  Forneceremos atualizações para essas ferramentas de desenvolvimento em cada marco, conforme a necessidade.
+</p>
+
+<h3 id="hardware_system_images">Imagens do sistema de hardware</h3>
+
+<p>
+  O N Developer Preview inclui imagens do Nexus e de outros sistemas de hardware que podem ser usadas ao
+ testar e desenvolver em dispositivos físicos. Consulte a página <a href="{@docRoot}preview/download.html">Imagens de dispositivo</a> para ver a lista completa
+ de imagens de hardware.
+</p>
+
+<p>
+  Forneceremos imagens de sistema atualizadas para esses dispositivos em cada marco. Você
+ pode fazer o download e atualizar as imagens de sistema manualmente
+ em seus dispositivos de teste com a frequência necessária. Isso é especialmente útil para ambientes
+ de teste automatizados nos quais seja preciso atualizar o dispositivo várias
+ vezes.
+</p>
+
+<p class="note"><strong>Observação</strong>:
+ <strong>dispositivos atualizados manualmente não receberão atualizações por OTA</strong> como no
+ Preview do ano anterior. Neste ano, você recebe OTAs ao inscrever os dispositivos no
+ programa beta do Android &mdash; veja detalhes na próxima seção.
+</p>
+
+<h3 id="android_beta">Atualizações por OTA no programa beta do Android</h3>
+
+<p>
+  Uma novidade do Android N é um programa de atualização por OTA que automaticamente
+ fornece as últimas atualizações do Preview do Android N diretamente para os dispositivos inscritos
+ no programa. O programa é gratuito e está aberto a todos que tenham
+ um dispositivo compatível registrado na conta do Google.
+</p>
+
+<p>
+  Para se inscrever no programa, acesse o site do <a href="https://g.co/androidbeta">programa beta do Android
+</a>. Você
+ verá uma lista de todos os dispositivos registrados em sua conta que estejam qualificados para inscrição no
+ programa beta do Android.
+</p>
+
+<ol>
+  <li> Escolha os dispositivos nos quais deseja receber atualizações do Android N
+  <li> Clique em Enroll, leia e concorde com os termos de serviço e clique em OK
+</ol>
+
+<p>
+  Seu dispositivo receberá uma atualização pouco tempo depois da inscrição. Na maioria dos casos,
+ não é necessário fazer uma redefinição completa para migrar para o Android N, mas
+ é recomendável fazer o backup de qualquer dado que você não queira perder antes de
+ inscrever o dispositivo.
+</p>
+
+<p>
+  Conforme as atualizações são enviadas ao seu dispositivo, recomendamos que elas sejam baixadas e
+ instaladas assim que possível. Mantenha-se atualizado com as
+ últimas mudanças na interface, no comportamento, nas APIs e nos recursos do sistema.
+</p>
+
+<p>
+  Quando o Developer Preview for concluído, os dispositivos inscritos
+ receberão uma atualização para a versão oficial do Android N.
+</p>
+
+<p>
+  É possível cancelar a inscrição dos seus dispositivos no programa beta do Android a qualquer momento no
+ site do programa. Antes de cancelar a inscrição, não deixe de fazer o backup dos dados
+ no dispositivo.
+</p>
+
+  <p class="note"><strong>Observação</strong>:
+ ao cancelar a inscrição, <strong>seu dispositivo será redefinido para as configurações de fábrica</strong>
+, recebendo a última versão
+ do Android 6.0 Marshmallow (não necessariamente a versão instalada
+ antes da inscrição do dispositivo). Para garantir uma instalação limpa,
+ seus dados serão apagados do dispositivo, incluindo contatos, mensagens,
+ fotos etc.
+</p>
+
+<h3 id="documentation_and_sample_code">Exemplo de código e documentação</h3>
+
+<p>
+  Estes recursos de documentação estão disponíveis no site do Developer Preview para
+ ajudar você a saber mais sobre o Android&nbsp;N:
+</p>
+
+<ul>
+  <li> <a href="{@docRoot}preview/setup-sdk.html">Preparação para desenvolver para o 
+Android N</a> tem
+ instruções passo a passo para você iniciar o trabalho.</li>
+  <li> <a href="{@docRoot}preview/behavior-changes.html">Mudanças
+ de comportamento</a> indicam as principais áreas a serem testadas.</li>
+  <li> Documentação de novas APIs, incluindo uma <a href="{@docRoot}preview/api-overview.html">visão geral das APIs</a>, a 
+<a href="{@docRoot}preview/setup-sdk.html#docs-dl">referência da 
+API</a> disponível para download e guias de desenvolvedor detalhados sobre os recursos principais, como
+suporte para várias janelas, notificações agrupadas, suporte para vários idiomas e outros.
+  <li> <a href="{@docRoot}preview/samples.html">Exemplo de código</a> que
+ demonstra como oferecer suporte a permissões e outros novos recursos.
+  <li> <a href="{@docRoot}preview/support.html#release-notes">Notas de versão</a>
+ para a versão atual do N Developer Preview, incluindo notas de mudanças e
+ relatórios de diferenças.
+</ul>
+
+<h4 id="reference">Referência da API para download</h4>
+
+<p>
+  Durante as primeiras atualizações do Preview, você pode fazer o download da 
+ <a href="{@docRoot}preview/setup-sdk.html#docs-dl">referência da API
+ mais recente para a plataforma Android N</a> como um arquivo zip separado. Esse download
+ também inclui um relatório de diferenças que ajuda você a identificar as mudanças da API em relação à
+ API 23 e à atualização anterior.
+</p>
+
+<p>
+  Quando as APIs do Android N forem finalizadas e um nível de API oficial for atribuído,
+ forneceremos a referência da API on-line em <a href="https://developer.android.com">https://developer.android.com</a>.
+</p>
+
+<h3 id="support_resources">
+  Recursos de suporte
+</h3>
+
+<p>
+  Ao testar e desenvolver no N Developer Preview, use estes canais para
+ informar problemas e enviar feedback.
+</p>
+
+<ul>
+  <li> O <a href="https://code.google.com/p/android-developer-preview/">issue tracker do N Developer Preview 
+</a> é seu <strong>principal canal de feedback.</strong> Você pode informar erros, problemas de
+ desempenho e enviar feedback geral pelo issue tracker. Também é possível consultar 
+<a href="{@docRoot}preview/bug">problemas conhecidos</a> e
+ encontrar etapas de soluções alternativas. Manteremos você atualizado sobre seu problema conforme ele for avaliado e
+ enviado para a equipe de engenharia do Android para análise. </li>
+  <li> A <a href="{@docRoot}preview/dev-community">Comunidade Android N Developer</a> é
+ uma comunidade do Google+ onde é possível <strong>se conectar a outros desenvolvedores</strong> que trabalham com o
+ Android N. É possível compartilhar observações ou ideias, além de encontrar respostas
+ para as dúvidas sobre o Android N. Moderaremos a comunidade e fornecemos respostas e
+ orientações conforme for necessário.</li>
+</ul>
+
+<h3 id="targeting">Direcionamento, APIs do Preview e publicação</h3>
+
+<p>
+  O N Developer Preview fornece um sistema apenas para desenvolvimento e uma biblioteca Android
+ que <strong>não tem um nível de API padrão</strong>. Se desejar
+ optar por não utilizar comportamentos de compatibilidade para testar seu aplicativo (o que é altamente
+ recomendável), será possível direcionar seus esforços para a versão Preview do Android N ao definir
+ o <code><a href=
+  "{@docRoot}preview/setup-sdk.html#create-update">targetSdkVersion</a></code>
+ do seu aplicativo para <code>“N”</code>.
+</p>
+
+<p>
+  O Android N Developer Preview fornece <strong>APIs do Preview</strong>
+ &mdash; as APIs não serão oficiais até o lançamento do SDK final,
+ atualmente planejado para o terceiro trimestre de 2016. Isso significa que você pode
+ <strong>esperar pequenas mudanças na API</strong> ao longo do tempo, especialmente durante
+ as semanas iniciais do programa. Forneceremos um resumo das alterações com
+ cada atualização do Android N Developer Preview.
+</p>
+
+<p class="note">
+  <strong>Observação</strong>: apesar de as APIs do Preview poderem ser alteradas, os
+ comportamentos essenciais do sistema são estáveis e estão prontos para
+ serem testados.
+</p>
+
+<p>
+  O Google Play <strong>impede a publicação de aplicativos direcionados ao N Developer
+ Preview</strong>. Quando o SDK final do Android N estiver disponível, você poderá
+ direcionar seus esforços para o nível de API oficial do Android N e publicar seu aplicativo no Google
+ Play pelos canais de lançamento alfa e beta. Enquanto isso, caso queira
+ distribuir um aplicativo direcionado ao Android N para testadores, poderá fazê-lo por e-mail ou
+ por download direto pelo seu site.
+</p>
+
+<p>
+  No lançamento completo do Android N para AOSP e OEMs, planejado para o terceiro trimestre de 2016,
+ você poderá publicar seus aplicativos direcionados ao Android N no canal de lançamento
+ público do Google Play.
+</p>
+
+
+<h2 id="how_to_get_started">Como começar</h2>
+
+<p>
+  Para começar o teste do seu aplicativo com o Android N:
+</p>
+
+<ol>
+  <li> Consulte a <a href="{@docRoot}preview/api-overview.html">Visão geral da API</a>
+ e as <a href="{@docRoot}preview/behavior-changes.html">Mudanças de comportamento</a> para
+ ter uma ideia das novidades e de como elas afetam seus aplicativos. Especificamente,
+ obtenha informações sobre os novos recursos de <a href="{@docRoot}preview/features/notification-updates.html">notificações</a> e
+ o <a href="{@docRoot}preview/features/multi-window.html">suporte a várias janelas</a>.</li>
+  <li> Configure seu ambiente seguindo as instruções para <a href="{@docRoot}preview/setup-sdk.html">Configurar o Preview SDK</a>
+ e configurar os dispositivos de teste.</li>
+  <li> Siga as instruções de <a href="https://developers.google.com/android/nexus/images">atualização
+ manual</a> para instalar a última imagem de sistema do Android N no seu dispositivo. </li>
+  <li> Consulte a <a href="{@docRoot}preview/setup-sdk.html#docs-dl">referência da API</a>
+ e os <a href="{@docRoot}preview/samples.html">exemplos do Android N</a> para obter mais
+ informações sobre os novos recursos de API e como usá-los no seu aplicativo.
+  <li> Participe da <a href="{@docRoot}preview/dev-community">Comunidade Android N
+ Developer</a> para obter as notícias mais recentes e conectar-se a outros
+ desenvolvedores que trabalham com a nova plataforma.</li>
+</ol>
+
+<p>
+  Agradecemos sua participação no programa Android N Developer Preview!
+</p>
diff --git a/docs/html-intl/intl/pt-br/preview/samples.jd b/docs/html-intl/intl/pt-br/preview/samples.jd
new file mode 100644
index 0000000..c4c421f
--- /dev/null
+++ b/docs/html-intl/intl/pt-br/preview/samples.jd
@@ -0,0 +1,85 @@
+page.title=Exemplos
+page.tags="preview", "samples", "android"
+page.image=images/cards/card-n-samples_2x.png
+@jd:body
+
+<p>
+  Os exemplos de código a seguir são fornecidos para o Android N. Para
+ fazer o download dos exemplos no Android Studio, selecione a opção de menu <b>File &gt; Import
+ Samples</b>.
+</p>
+
+<p class="note">
+  <strong>Observação:</strong> estes projetos disponíveis para download foram criados
+ para uso com o Gradle e o Android Studio.
+</p>
+
+
+<h3 id="mw">Interface com várias janelas</h3>
+<img src="{@docRoot}preview/images/sample-multiwindow.png" style="float: left; padding-right: 0.5em" height="250" width="156" />
+<p>
+  Este exemplo demonstra como aproveitar as vantagens de interfaces de usuário com várias janelas
+ com seu aplicativo.
+</p>
+<p>
+  <a href="https://github.com/googlesamples/android-MultiWindowPlayground">
+Obter no GitHub</a>
+</p>
+
+<div style="clear: both;"></div>
+<h3 id="an">Notificações ativas</h3>
+<img src="{@docRoot}preview/images/sample-activenotifications.png" style="float: left; padding-right: 0.5em" height="250" width="141" />
+<p>
+  Este é um exemplo pré-existente que mostra um serviço simples que envia
+ notificações usando NotificationCompat. Cada conversa não lida de um usuário
+ é enviada como uma notificação distinta.
+</p>
+<p>
+  Este exemplo foi atualizado para utilizar os novos recursos de notificação
+ disponíveis no Android N.
+</p>
+<p>
+  <a href="https://github.com/googlesamples/android-ActiveNotifications">
+Obter no GitHub</a>
+</p>
+
+<div style="clear: both;"></div>
+<h3 id="ms">Serviço de mensagens</h3>
+<img src="{@docRoot}preview/images/sample-messagingservice.png" style="float: left; padding-right: 0.5em" height="250" width="150" />
+<p>
+  Este é um exemplo pré-existente que demonstra como usar o
+ NotificationManager para identificar quantas notificações um aplicativo está mostrando
+ no momento.
+</p>
+<p>
+  Este exemplo foi atualizado para utilizar os novos recursos de notificação
+ disponíveis no Android N.
+</p>
+<p>
+  <a href="https://github.com/googlesamples/android-MessagingService">
+Obter no GitHub</a>
+</p>
+
+<div style="clear: both;"></div>
+<h3 id="fbe">Inicialização direta</h3>
+<img src="{@docRoot}preview/images/sample-directboot.png" style="float: left; padding-right: 0.5em" height="250" width="141" />
+<p>
+  Este exemplo demonstra como armazenar e acessar dados no armazenamento criptografado de um dispositivo
+ que está sempre disponível enquanto o dispositivo é inicializado.
+</p>
+<p>
+  <a href="https://github.com/googlesamples/android-DirectBoot">
+Obter no GitHub</a>
+</p>
+
+<div style="clear: both;"></div>
+<h3 id="sda">Acessos a diretório com escopo</h3>
+<img src="{@docRoot}preview/images/sample-scopeddirectoryaccess.png" style="float: left; padding-right: 0.5em" height="250" width="141" />
+<p>
+  Este exemplo demonstra como ler e gravar dados de diretórios
+ específicos exigindo menos permissões.
+</p>
+<p>
+  <a href="https://github.com/googlesamples/android-ScopedDirectoryAccess">
+Obter no GitHub</a>
+</p>
\ No newline at end of file
diff --git a/docs/html-intl/intl/pt-br/preview/setup-sdk.jd b/docs/html-intl/intl/pt-br/preview/setup-sdk.jd
new file mode 100644
index 0000000..4766a88
--- /dev/null
+++ b/docs/html-intl/intl/pt-br/preview/setup-sdk.jd
@@ -0,0 +1,226 @@
+page.title=Configurar o Preview
+meta.keywords="preview", "android"
+page.tags="preview", "developer preview"
+page.image=images/cards/card-n-sdk_2x.png
+
+@jd:body
+
+
+<div id="qv-wrapper">
+  <div id="qv">
+<ol>
+  <li><a href="#get-as13">Obter o Android Studio 2.1</a></li>
+  <li><a href="#get-sdk">Obter o Android N SDK</a>
+    <ol>
+      <li><a href="#docs-dl">Documentação de referência</a>
+    </ol>
+  </li>
+  <li><a href="#java8">Obter o Java 8 JDK e JRE</a></li>
+  <li><a href="#create-update">Atualizar ou criar um projeto</a></li>
+  <li><a href="#next">Próximas etapas</a></li>
+</ol>
+  </div>
+</div>
+
+<p>Para desenvolver aplicativos para o Android N Preview, você precisa fazer algumas atualizações
+no ambiente de desenvolvedor, conforme é descrito nesta página.</p>
+
+<p>Para simplesmente testar a compatibilidade do seu aplicativo na imagem do sistema
+Android N, siga o guia para <a href="{@docRoot}preview/download.html">Testar em um dispositivo Android N</a>.</p>
+
+<img src="{@docRoot}preview/images/n-preview-setup.png" width="700" alt="" />
+
+
+<h2 id="get-as13">Obter o Android Studio 2.1 (preview)</h2>
+
+<p>A plataforma Android N adiciona suporte para os <a href="{@docRoot}preview/j8-jack.html">recursos de linguagem do Java 8</a>,
+que exigem um novo compilador chamado Jack. A versão mais recente do Jack
+só é compatível com o Android Studio 2.1 no momento. Portanto, se quiser
+usar os recursos de linguagem do Java 8, será preciso usar o Android Studio 2.1 para
+compilar seu aplicativo. Caso contrário, não será preciso usar o Jack, mas ainda será
+necessário atualizar para o JDK 8 para desenvolver para a plataforma Android N,
+conforme é descrito abaixo.
+</p>
+
+<iframe width="400" height="225" src="//www.youtube.com/embed/SBbWGxXCMqQ?autohide=1&amp;showinfo=0" frameborder="0" allowfullscreen="" style="float: right; margin: 0 0 20px 20px;"></iframe>
+
+<p>No momento, o Android Studio 2.1 está disponível como prévia no canal da versão canary
+. Se já tiver
+o Android Studio e não quiser atualizar para o canal canary, poderá
+fazer o download do Android Studio 2.1 como uma instalação separada e usá-lo
+para desenvolvimento com o Android N, não afetando o ambiente principal do Android Studio
+.</p>
+
+<p>Para fazer o download do Android Studio 2.1 como uma instalação separada, siga as etapas
+abaixo (ou, se quiser receber o Android Studio 2.1 como uma atualização da sua
+instalação existente, pule para a etapa 4):</p>
+
+<ol>
+  <li>Edite o nome da sua
+ instalação existente do Android Studio e altere o número da versão. Assim,
+ quando você instalar a nova versão, ela não substituirá a existente.</li>
+  <li>Faça o download do arquivo ZIP apropriado para seu sistema operacional na
+ <a href="http://tools.android.com/download/studio/canary/latest">página de downloads do canal canary</a>.
+  </li>
+  <li>Descompacte o pacote e mova o conteúdo do Android Studio 2.1 para o
+ local apropriado para aplicativos no seu sistema. Em seguida, inicie-o.</li>
+  <li>Abra a caixa de diálogo Settings
+ (<strong>File &gt; Settings</strong> no Windows/Linux ou
+ <strong>Android Studio &gt; Preferences</strong> no Mac). No painel à
+ esquerda, selecione <strong>Appearance &amp; Behavior &gt; System Settings &gt;
+ Updates</strong>.
+  </li>
+  <li>No painel Updates, marque a caixa de seleção <strong>Automatically
+ check updates for</strong> e selecione
+ <strong>Canary Channel</strong> na lista suspensa.
+  </li>
+</ol>
+
+<p>Mantenha essa janela aberta para a próxima etapa.</p>
+
+
+<h2 id="get-sdk">Obter o N Preview SDK</h2>
+
+<p>Para começar a desenvolver com as APIs do Android N, instale o 
+Android N Preview SDK no Android Studio da seguinte maneira:</p>
+
+<ol>
+  <li>Ainda no painel Updates (etapa 4 dos procedimentos acima),
+ marque a caixa de seleção <strong>Automatically
+ check updates for Android SDK</strong> e selecione
+ <strong>Preview Channel</strong> na lista suspensa.
+  </li>
+  <li>Clique em <strong>Check Now</strong>.</li>
+
+  <li>No painel à esquerda, selecione <strong>Appearance &amp; Behavior &gt;
+ System Settings &gt; Android SDK</strong>.
+
+  <li>Clique na guia <strong>SDK Platforms</strong> e marque a caixa de seleção
+ <strong>Android N Preview</strong>.</li>
+
+  <li>Clique na guia <strong>SDK Tools</strong> e marque as caixas de seleção
+ <strong>Android SDK Build Tools</strong>, <strong>Android SDK
+ Platform-Tools</strong> e <strong>Android SDK Tools</strong>
+.
+  </li>
+
+  <li>Clique em <strong>OK</strong> e aceite os termos de licença
+ de qualquer pacote que precise ser instalado.
+  </li>
+</ol>
+
+<h3 id="docs-dl">Obter a documentação de referência do N Preview SDK</h3>
+
+<p>
+  Informações detalhadas sobre as APIs do Android N são disponibilizadas na documentação de referência do N Preview
+, que pode ser baixada pela tabela a seguir.
+ Este pacote contém uma versão off-line resumida do site de desenvolvedores do Android 
+ e inclui uma referência atualizada para as APIs do Android N, além de um relatório
+ das diferenças entre as APIs.
+</p>
+
+<table>
+  <tr>
+    <th scope="col">Documentação</th>
+    <th scope="col">Checksums</th>
+  </tr>
+  <tr>
+    <td style="white-space: nowrap">
+    <a href="{@docRoot}shareables/preview/n-preview-1-docs.zip">n-preview-1-docs.zip</a></td>
+    <td width="100%">
+      MD5: 4ab33ccbe698f46f125cc5b807cf9c2f<br>
+      SHA-1: 6a3880b3ccd19614daae5a4d0698ea6ae11c20a5
+    </td>
+  </tr>
+<table>
+
+
+
+<h2 id="java8">Obter o Java 8 JDK e JRE</h2>
+
+<p>Para compilar seu aplicativo para a plataforma Android N, você deve usar
+o Java 8 Developer Kit (JDK 8) e, para usar algumas ferramentas com o Android
+Studio 2.1, é preciso instalar o Java 8 Runtime Environment (JRE 8). Portanto, se
+não tiver as versões mais recentes desses recursos, faça o download do JDK 8 e do JRE 8
+agora mesmo.</p>
+
+<p>Em seguida, defina a versão do JDK no Android Studio da seguinte maneira:</p>
+
+<ol>
+  <li>Abra um projeto Android no Android Studio e, em seguida, abra a caixa de diálogo
+ Project Structure selecionando <strong>File &gt;
+ Project Structure</strong>. (Como alternativa, é possível definir o padrão
+ para todos os projetos selecionando <strong>File &gt; Other Settings &gt;
+ Default Project Structure</strong>.)
+   </li>
+   <li>No painel à esquerda da caixa de diálogo, clique em <strong>SDK Location</strong>.
+   </li>
+   <li>No campo <strong>JDK Location</strong>, insira o local do
+ Java 8 JDK (clique no botão à direita
+ para procurar em seus arquivos) e clique em <strong>OK</strong>.
+   </li>
+</ol>
+
+<img src="{@docRoot}preview/images/studio-jdk-location.jpg" width="700" alt="" />
+
+
+<h2 id="create-update">Atualizar ou criar um projeto</h2>
+
+<p>
+  Para usar as APIs do Android N, seu projeto deve ser configurado da maneira apropriada.
+</p>
+
+<p>Se planeja usar os recursos de linguagem do Java 8, consulte 
+<a href="{@docRoot}preview/j8-jack.html">Recursos de linguagem do Java 8</a>
+para saber mais sobre os recursos do Java 8 com suporte e
+como configurar seu projeto com o compilador Jack.</p>
+
+
+<h3 id="update">Atualizar um projeto existente</h3>
+
+<p>Abra o arquivo
+ <code>build.gradle</code> de seu módulo e atualize os valores da seguinte
+ forma:
+</p>
+
+<pre>
+android {
+  compileSdkVersion <strong>'android-N'</strong>
+  buildToolsVersion <strong>'24.0.0-rc1'</strong>
+  ...
+
+  defaultConfig {
+     minSdkVersion <strong>'N'</strong>
+     targetSdkVersion <strong>'N'</strong>
+     ...
+  }
+  ...
+}</pre>
+
+
+<h3 id="create">Criar um novo projeto</h3>
+
+
+<p>Para criar um novo projeto para desenvolvimento com o Android N Preview SDK:</p>
+
+<ol>
+  <li>Clique em <strong>File &gt; New Project</strong> e siga as etapas
+ até chegar na página Target Android Devices.
+  </li>
+  <li>Nela, selecione a opção <strong>Phone and Tablet</strong>.</li>
+  <li>Na opção <strong>Phone and Tablet</strong>, na lista <strong>Minimum
+ SDK</strong>, selecione
+ <strong>N: Android API 23, N Preview (Preview)</strong>.</li>
+</ol>
+
+
+<h2 id="next">Próximas etapas</h2>
+
+<ul>
+  <li>Siga o guia para <a href="{@docRoot}preview/download.html">Testar em um dispositivo Android N</a>.</li>
+  <li>Saiba mais sobre a plataforma Android N com 
+<a href="{@docRoot}preview/behavior-changes.html">Mudanças de comportamento</a>
+e <a href="{@docRoot}preview/api-overview.html">Recursos de APIs do
+Android N</a>.</li>
+</ul>
+
diff --git a/docs/html-intl/intl/ru/preview/api-overview.jd b/docs/html-intl/intl/ru/preview/api-overview.jd
new file mode 100644
index 0000000..d4e6042
--- /dev/null
+++ b/docs/html-intl/intl/ru/preview/api-overview.jd
@@ -0,0 +1,676 @@
+page.title=Android N для разработчиков
+meta.tags="предварительная версия", "androidn"
+page.tags="preview", "developer preview"
+page.image=images/cards/card-n-apis_2x.png
+@jd:body
+
+
+
+
+<div id="qv-wrapper">
+<div id="qv">
+  <h2>Основные возможности для разработчиков</h2>
+  <ol>
+      <ul style="list-style-type:none;">
+        <li><a href="#multi-window_support">Поддержка многооконного режима</a></li>
+        <li><a href="#notification_enhancements">Уведомления</a></li>
+        <li><a href="#jit_aot">Динамическая/предварительная компиляция</a></li>
+        <li><a href="#quick_path_to_app_install">Быстрый способ установки приложения</a></li>
+        <li><a href="#doze_on_the_go">Сон на ходу: режим Doze</a></li>
+        <li><a href="#background_optimizations">Оптимизация фоновых процессов</a></li>
+        <li><a href="#data_saver">Экономия трафика</a></li>
+        <li><a href="#tile_api">API панели быстрых настроек</a></li>
+        <li><a href="#number-blocking">Блокировка номеров</a></li>
+        <li><a href="#call_screening">Фильтрация вызовов</a></li>
+        <li><a href="#multi-locale_languages">Языки и языковые настройки</a></li>
+        <li><a href="#icu4">API-интерфейсы ICU4J в Android</a></li>
+        <li><a href="#gles_32">API OpenGL ES 3.2</a></li>
+        <li><a href="#android_tv_recording">Запись Android TV</a></li>
+        <li><a href="#android_for_work">Android for Work</a></li>
+        <li><a href="#accessibility_enhancements">Специальные возможности</a></li>
+        <li><a href="#direct_boot">Режим Direct Boot</a></li>
+        <li><a href="#key_attestation">Аттестация ключей</a></li>
+        <li><a href="#network_security_config">Конфигурация сетевой безопасности</a></li>
+        <li><a href="#default_trusted_ca">Доверенный центр сертификации по умолчанию</a></li>
+        <li><a href="apk_signature_v2">Схема получения подписи APK, версия 2</a></li>
+        <li><a href="#scoped_directory_access">Доступ к выделенным каталогам</a></li>
+      </ol>
+</div>
+</div>
+
+
+
+<p>Система Android N еще находится в активной стадии разработки, но ее уже можно опробовать в виде предварительной версии
+N Developer Preview. В следующих разделах рассматриваются некоторые из
+ ее новых возможностей для разработчиков. </p>
+
+<p>
+  Обязательно изучите раздел <a href="{@docRoot}preview/behavior-changes.html">Изменения в работе</a>, в котором описаны
+изменения платформы, способные повлиять на работу приложений, ознакомьтесь более подробно с основными возможностями
+в руководствах для разработчиков и загрузите <a href="{@docRoot}preview/setup-sdk.html#docs-dl">справочник по API</a> с подробным описанием новых
+API-интерфейсов.
+</p>
+
+<h2 id="multi-window_support">Поддержка многооконного режима</h2>
+
+
+<p>В Android N представлена новая долгожданная функция многозадачности
+– многооконный режим. </p>
+
+  <p>Теперь пользователи смогут открывать на экране два приложения одновременно. </p>
+  <ul>
+  <li>На телефонах и планшетах под управлением
+Android N пользователи могут запустить два приложения рядом или друг над другом
+в режиме разделенного экрана. Размеры окон приложений можно изменить с помощью
+разделителя между ними. </li>
+
+<li>На устройствах Android TV для приложений будет доступен <a href="{@docRoot}preview/features/picture-in-picture.html">режим
+"картинка в картинке"</a>, который позволит приложению отображать контент, пока пользователь просматривает другие приложения или
+взаимодействует с ними. Более подробная информация приведена ниже. </li>
+  </ul>
+
+<div class="col-4of10">
+<img src="{@docRoot}preview/images/mw-portrait.png" alt="" style="height:460px;padding-left:1em;" id="img-split-screen" />
+<p class="img-caption">
+  <strong>Рис. 1.</strong> Приложения в режиме разделенного экрана.
+</p>
+  </div>
+
+<p>Поддержка многооконного режима открывает новые возможности привлечения пользователей,
+особенно на планшетах и других устройствах с большим размером экрана. Вы можете даже включить в своем приложении функцию перетаскивания
+для удобного перемещения контента между приложениями – отличный
+способ улучшить пользовательский интерфейс. </p>
+
+<p>Вы можете легко добавить поддержку многооконного режима в свое приложение и настроить его
+работу с окнами экрана. Например, вы можете определить минимальные допустимые размеры,
+до которых пользователи могут уменьшить окно приложения.
+Вы можете также отключить многооконный режим для своего приложения, чтобы
+система отображала его только в полноэкранном режиме.</p>
+
+<p>
+  Дополнительная информация содержится в документе для разработчиков <a href="{@docRoot}preview/features/multi-window.html">Поддержка многооконного режима</a>.
+
+</p>
+
+<h2 id="notification_enhancements">Новые возможности уведомлений</h2>
+
+<p>В Android N изменен дизайн уведомлений, которые стали проще и удобнее.
+Ниже приведены некоторые изменения.</p>
+
+<ul>
+  <li>
+    <strong>Обновления шаблонов</strong>. В новых шаблонах уведомлений
+сделан акцент на изображении и аватаре контакта. Разработчики смогут
+использовать новые шаблоны с минимальными изменениями своего кода.
+  </li>
+
+  <li>
+    <strong>Группы уведомлений</strong>. Система может группировать уведомления,
+например по теме сообщений, и отображать группу. Пользователь может применять к группам
+действия, например, закрывать их или архивировать. Если вы ранее выполняли реализацию
+уведомлений для Android Wear, то вам уже должна быть знакома эта
+модель.
+  </li>
+
+  <li>
+    <strong>Непосредственный ответ в уведомлении</strong>.
+Android теперь поддерживает функцию внутренних ответов в приложениях для общения в режиме реального времени. Это позволяет быстро ответить на
+СМС или текстовое сообщение непосредственно в интерфейсе уведомления.
+  </li>
+
+  <li>
+    <strong>Собственные представления</strong>. Два новых API-интерфейса позволяют применять системные элементы,
+такие как заголовки и действия уведомлений, при использовании собственных представлений в
+уведомлениях.
+  </li>
+</ul>
+
+<div class="col-4of12">
+  <img src="{@docRoot}preview/images/notifications-1.png" alt="" style="padding:.5em;max-width:226px">
+</div>
+
+<div class="col-4of12">
+  <img src="{@docRoot}preview/images/notifications-3.png" alt="" style="padding:.5em;max-width:226px">
+</div>
+
+<div class="col-4of12">
+  <img src="{@docRoot}preview/images/notifications-2.png" alt="" style="padding:.5em;max-width:226px">
+</div>
+
+
+<p class="img-caption">
+  <strong>Рис. 2.</strong> Группы уведомлений и непосредственный ответ.
+</p>
+
+<p>Способы реализации новых возможностей описаны в руководстве
+<a href="{@docRoot}preview/features/notification-updates.html">Уведомления</a>.
+</p>
+
+
+
+<h2 id="jit_aot">Профильная динамическая/предварительная компиляция</h2>
+
+<p>В Android N добавлен динамический (JIT) компилятор с профилированием кода для среды
+ART, который позволяет постоянно улучшать производительность приложений Android во время их работы.
+JIT-компилятор дополняет текущий предварительный (AOT) компилятор ART
+и помогает повысить производительность, сократить потребление памяти, а также ускорить обновления приложений и системы.
+</p>
+
+<p>Профильная компиляция позволяет ART управлять AOT/JIT-компиляцией каждого приложения
+в соответствии с его фактическим использованием и характеристиками устройства. Например,
+ART ведет профиль часто используемых методов каждого приложения, которые она может предварительно скомпилировать
+и кэшировать для оптимальной производительности. Компиляция остальных частей приложения откладывается до того момента,
+когда они действительно понадобятся.</p>
+
+<p>Кроме повышения производительности основных частей приложения профильная
+компиляция помогает сократить общее использование оперативной памяти приложением, в том числе связанными двоичными файлами.
+Эта возможность особенно важна для устройств с небольшим объемом памяти.</p>
+
+<p>ART управляет профильной компиляцией с минимальным потреблением заряда
+аккумулятора. Предварительная компиляция выполняется только тогда, когда устройство неактивно
+и находится на зарядке, поэтому заблаговременное выполнение этой работы экономит время и энергию.</p>
+
+<h2 id="quick_path_to_app_install">Быстрый способ установки приложения</h2>
+
+<p>Одним из наиболее ощутимых преимуществ JIT-компилятора ART является скорость установки приложений
+и обновлений системы. Даже большие приложения, требовавшие нескольких минут для своей оптимизации и установки на
+Android 6.0 , теперь могут быть установлены за секунды.
+ Обновления системы также выполняются быстрее, поскольку стадия оптимизации теперь отсутствует. </p>
+
+<h2 id="doze_on_the_go">Сон на ходу: режим Doze</h2>
+
+<p>В Android 6.0 был введен системный режим Doze для экономии заряда аккумулятора. В этом режиме
+выполнение процессорных и сетевых операций приложений откладывается, когда устройство не используется и неподвижно – например, лежит на столе или в ящике.
+ </p>
+
+<p>В Android N режим Doze сделал шаг вперед и экономит заряд аккумулятора на ходу.
+Каждый раз, когда экран выключается на определенный промежуток времени и устройство не заряжается,
+Doze применяет частичный набор знакомых ограничений процессорной и сетевой активности приложений.
+Это означает, что пользователи могут экономить заряд аккумулятора, даже когда их устройство лежит в кармане.
+</p>
+
+
+<img src="/preview/images/doze-diagram-1.png" alt="" id="figure1" />
+<p class="img-caption">
+  <strong>Рис. 3.</strong> Режим Doze теперь применяет
+энергосберегающие ограничения, даже когда устройство находится в движении.
+</p>
+
+
+<p>Вскоре после блокировки экрана, когда устройство питается от аккумулятора, режим Doze
+ограничивает сетевой доступ и откладывает выполнение заданий и синхронизации. В течение коротких периодов пробуждения
+для приложений открывается доступ к сети и разрешается выполнение отложенных
+заданий и операций синхронизации. Включение экрана или подключение к источнику питания выводит
+устройство из режима Doze.</p>
+
+<p>Если устройство снова остается неподвижным в течение определенного периода времени (с погашенным экраном и питанием от аккумулятора),
+Doze применяет полный набор процессорных и сетевых ограничений к {@link
+android.os.PowerManager.WakeLock}, {@link android.app.AlarmManager} оповещениям и сканированию
+GPS/Wi-Fi.</p>
+
+<p>Рекомендации по адаптации приложения для режима Doze не зависят от того, двигается устройство или нет,
+поэтому если вы уже обновили свое приложение для оптимальной работы
+в режиме Doze, то все уже готово. Если нет, начните <a href="{@docRoot}training/monitoring-device-state/doze-standby.html#assessing_your_app">адаптацию
+приложения для режима Doze</a> прямо сейчас.</p>
+
+<h2 id="background_optimizations">Проект Svelte: оптимизация фоновых процессов</h2>
+
+<p>Продолжено развитие проекта Svelte, нацеленного на сокращение использования оперативной памяти системой и приложениями
+в различных устройствах экосистемы Android. В Android N проект
+Svelte уделяет особое внимание оптимизации работы приложений в фоновом режиме. </p>
+
+<p>Работа в фоновом режиме является важной частью большинства приложений. Организация ее надлежащим образом
+может сделать интерфейс пользователя быстрым, отзывчивым и контекстно-зависимым.
+В противном случае фоновая обработка может напрасно потреблять оперативную память (и
+заряд аккумулятора) и негативно влиять на производительность других приложений. </p>
+
+<p>Начиная с Android 5.0, предпочтительным и оптимальным для пользователей способом выполнения фоновых операций стало использование планировщика {@link android.app.job.JobScheduler}.
+Приложения могут планировать свои задания, позволяя системе оптимизировать их на основе состояния памяти,
+питания и сетевого соединения. Планировщик JobScheduler прост в использовании и обеспечивает необходимый контроль,
+поэтому он рекомендуется для применения во всех приложениях.
+ </p>
+
+<p>
+  Другим хорошим вариантом является планировщик <a href="https://developers.google.com/android/reference/com/google/android/gms/gcm/GcmNetworkManager">
+<code>GCMNetworkManager</code></a> в составе служб Google Play, который
+предлагает аналогичные возможности планирования заданий и совместимость с прежними версиями
+Android.
+</p>
+
+<p>Мы продолжаем расширять область применения планировщиков <code>JobScheduler</code> и
+<code>GCMNetworkManager</code>.
+Например, в Android N теперь можно планировать фоновую обработку на основании
+изменений поставщиков контента. В то же время мы начинаем исключать некоторые
+устаревшие шаблоны, которые могут ухудшить производительность системы,
+особенно на устройствах с малым объемом памяти.</p>
+
+<p>В Android N удалены три часто используемые неявные рассылки &mdash;
+ {@link android.net.ConnectivityManager#CONNECTIVITY_ACTION}, {@link
+android.hardware.Camera#ACTION_NEW_PICTURE} и {@link
+android.hardware.Camera#ACTION_NEW_VIDEO}, &mdash; поскольку они могут пробудить
+фоновые процессы сразу нескольких приложений, повысив потребление памяти и заряда аккумулятора. Если
+ваше приложение получает эти рассылки, используйте преимущество N Developer Preview для миграции на
+<code>JobScheduler</code> и связанные с ним API-интерфейсы. </p>
+
+<p>
+  Дополнительная информация содержится в документе <a href="{@docRoot}preview/features/background-optimization.html">Оптимизация
+фоновых процессов</a>.
+</p>
+
+
+<h2 id="data_saver">Экономия трафика</h2>
+
+<div class="col-5of12" style="margin-right:1.5em;">
+<img src="{@docRoot}preview/images/datasaver.png" style="border:2px solid #ddd">
+
+<p class="img-caption" style="padding-right:2em;">
+  <strong>Рис. 4.</strong> Настройка экономии трафика.
+</p>
+  </div>
+
+<p>В течение срока эксплуатации мобильного устройства стоимость сотового трафика обычно
+превышает стоимость самого устройства. Для многих пользователей сотовый трафик является
+весьма дорогим ресурсом, который они хотели бы сэкономить. </p>
+
+<p>В Android N появился режим экономии трафика – новая системная служба, которая помогает сократить
+использование сотового трафика приложениями в роуминге, в конце периода тарификации
+или для небольших предоплаченных пакетов трафика. Режим экономии трафика дает пользователям возможность контроля использования сотового трафика приложениями
+и позволяет разработчикам повысить эффективность работы служб.
+ </p>
+
+<p>Когда пользователь включает экономию трафика в панели <strong>Settings</strong> и устройство подключено к тарифицируемой сети,
+ система блокирует использование фонового трафика и сигнализирует приложениям
+о необходимости сократить по возможности использование трафика в активном режиме, например: ограничить скорость передачи данных
+потокового вещания, уменьшить качество изображений, отложить оптимистичное предварительное кэширование
+и т.д. Пользователи могут поместить определенные приложения в белый список, разрешив им тарифицируемую фоновую передачу данных
+даже при включенном режиме экономии трафика.</p>
+
+<p>Android N расширяет применение класса {@link android.net.ConnectivityManager}, позволяя приложениям
+<a href="{@docRoot}preview/features/data-saver.html#status">выяснять пользовательские настройки
+экономии трафика</a> и <a href="{@docRoot}preview/features/data-saver.html#monitor-changes">отслеживать
+изменения этих настроек</a>. Все приложения должны проверять, был ли включен режим экономии трафика,
+и пытаться ограничить использование трафика в фоновом и активном режимах.</p>
+
+
+<h2 id="tile_api">API панели быстрых настроек</h2>
+
+
+<div style="float:right;max-width:320px">
+<img src="{@docRoot}preview/images/quicksettings.png" style="padding-left:1.5em;">
+
+<p class="img-caption" style="padding-left:2em;">
+  <strong>Рис. 5.</strong> Плитки быстрых настроек в панели уведомлений.
+</p>
+
+
+  </div><p>Быстрые настройки являются простым и популярным способом доступа к основным настройкам и действиям
+непосредственно из панели уведомлений. В Android N возможности быстрых настроек
+были расширены – они стали еще более полезными и удобными. </p>
+
+<p>Добавлено пространство для дополнительных плиток быстрых настроек, к которым можно
+обратиться с разбитой на страницы области экрана, проведя пальцем влево или вправо. Пользователи
+также могут контролировать состав и место отображения этих элементов – их можно добавлять или двигать обычным перетаскиванием.
+ </p>
+
+<p>Для разработчиков Android N также предлагает новый API, который позволяет определить собственные плитки
+быстрых настроек для удобного доступа пользователей к основным элементам управления и действиям вашего приложения.</p>
+
+<p>
+  Плитки быстрых настроек резервируются для элементов управления или действий, которые либо требуются срочно,
+ либо часто используются. Их не следует использовать в качестве ярлыков
+для запуска приложений.
+</p>
+
+<p>
+  После определения плитки можно показать пользователям, которые смогут добавить их на
+панель быстрых настроек обычным перетаскиванием.
+</p>
+
+<p>
+  Дополнительную информацию о создании плиток приложений можно найти в описании
+<code>android.service.quicksettings.Tile</code> в загружаемом <a href="{@docRoot}preview/setup-sdk.html#docs-dl">Справочнике по API</a>.
+</p>
+
+
+
+<h2 id="number-blocking">Блокировка номеров</h2>
+
+<p>Платформа Android N теперь поддерживает блокировку номеров и предоставляет
+API-интерфейс платформы, который позволяет поставщикам услуг вести список блокируемых номеров. Этот список доступен для чтения и записи стандартным приложениям
+для СМС, звонков и приложениям поставщика.
+Для других приложений это список недоступен.</p>
+
+<p>Сделав блокировку номеров стандартной функцией платформы, Android предоставляет приложениям
+единообразный способ поддержки блокировки номеров на разных устройствах.
+Приложения также получают следующие преимущества:</p>
+
+<ul>
+  <li> Номера, блокируемые при вызовах, также блокируются в текстовых сообщениях.
+  <li> Заблокированные номера могут быть сохранены при переустановках и переносах на другие устройства с помощью функции резервного копирования и восстановления.
+
+  <li> Разные приложения могут использовать один и тот же список блокируемых номеров.
+</ul>
+
+<p>Кроме того, возможность интеграции приложения оператора мобильной сети в Android означает, что операторы могут
+читать список блокируемых номеров на устройстве и выполнять блокировку для пользователя на своей стороне,
+предотвращая доставку пользователю нежелательных вызовов и текстовых сообщений через какого-либо посредника,
+например, через конечную точку VOIP или переадресацию звонков.</p>
+
+<p>
+  Дополнительную информацию можно найти в описании <code>android.provider.BlockedNumberContract</code>
+в загружаемом <a href="{@docRoot}preview/setup-sdk.html#docs-dl">Справочнике по API</a>.
+
+</p>
+
+<h2 id="call_screening">Фильтрация вызовов</h2>
+
+<p>
+  Android N дает возможность стандартному приложению для звонков фильтровать входящие вызовы. Для этого
+в приложении для звонков реализована новая служба <code>CallScreeningService</code>,
+которая позволяет приложению выполнять ряд действий на основании
+{@link android.telecom.Call.Details Call.Details} входящего вызова, например:
+</p>
+
+<ul>
+  <li> отклонить входящий вызов;
+  <li> не регистрировать вызов в журнале вызовов;
+  <li> не показывать пользователю уведомление о вызове.
+</ul>
+
+<p>
+  Дополнительную информацию можно найти в описании <code>android.telecom.CallScreeningService</code>
+в загружаемом <a href="{@docRoot}preview/setup-sdk.html#docs-dl">Справочнике по API</a>.
+
+</p>
+
+
+<h2 id="multi-locale_languages">Поддержка нескольких языковых настроек, дополнительные языки</h2>
+
+
+<p>Android N теперь позволяет пользователям выбрать <strong>несколько языковых настроек</strong>
+для улучшенной поддержки случаев двуязычного применения. Приложения могут использовать
+новый API для получения выбранных пользователем языковых настроек и затем предоставлять более сложные
+интерфейсы для многоязычных пользователей, например: показывать результаты поиска
+на нескольких языках; не предлагать перевод веб-страниц с того языка, который уже знаком пользователю.
+</p>
+
+<p>Вместе с поддержкой нескольких языковых настроек Android N также расширяет список доступных языков.
+Для каждого распространенного
+языка, такого как английский, испанский, французский и арабский, предлагается более 25 вариантов. Также добавлена частичная
+поддержка более 100 новых языков.</p>
+
+<p>Приложения могут получить список языковых настроек, установленных пользователем, вызвав метод <code>LocaleList.GetDefault()</code>. Для поддержки расширенного количества языковых настроек в Android N изменен способ
+разрешения ресурсов. Вам следует обязательно проверить и убедиться в том,
+что ваши приложения работают надлежащим образом с новой логикой разрешения ресурсов.</p>
+
+<p>Дополнительная информация о новом способе разрешения ресурсов и соответствующие рекомендации содержатся
+в документе <a href="{@docRoot}preview/features/multilingual-support.html">Поддержка нескольких языков</a>.</p>
+
+<h2 id="icu4">API-интерфейсы ICU4J в Android</h2>
+
+<p>
+  Платформа Android N теперь предлагает частичный набор API-интерфейсов <a href="http://site.icu-project.org/">ICU4J</a> в
+пакете <code>android.icu</code>. Миграция выполняется легко и в основном заключается
+в простом изменении пространства имен с <code>com.java.icu</code> на
+<code>android.icu</code>. Если вы уже используете пакет ICU4J в своих приложениях,
+переход на API-интерфейсы <code>android.icu</code>, предоставленные платформой Android,
+может существенно сократить размер пакетов APK.
+</p>
+
+<p>
+  Дополнительные сведения по Android ICU4J API содержатся в документе <a href="{@docRoot}preview/features/icu4j-framework.html">Поддержка ICU4J</a>.
+</p>
+
+
+
+<h2 id="gles_32">API OpenGL&trade; ES 3.2</h2>
+
+<p>В платформу Android N добавлены интерфейсы и поддержка OpenGL ES 3.2, включая следующие возможности.</p>
+
+<ul>
+  <li> Все расширения из <a class="external-link" href="https://www.khronos.org/registry/gles/extensions/ANDROID/ANDROID_extension_pack_es31a.txt">Android Extension Pack</a></a> (AEP) кроме <code>EXT_texture_sRGB_decode</code>.
+  <li> Кадровые буферы с плавающей запятой для HDR и отложенного затенения.
+  <li> Вызовы отрисовки BaseVertex для улучшения пакетной обработки и потоковой передачи данных.
+  <li> Эффективный контроль обращений к буферу для сокращения служебных операций WebGL.
+</ul>
+
+<p>API-интерфейс платформы для OpenGL ES 3.2 в Android N предоставляется классом
+<code>GLES32</code>. При использовании OpenGL ES 3.2 обязательно следует объявить требование
+в файле манифеста с помощью тега <code>&lt;uses-feature&gt;</code> и атрибута
+<code>android:glEsVersion</code>. </p>
+
+<p>Для получения дополнительных сведений об использовании OpenGL ES, включая
+определение версии, поддерживаемой устройством, см. <a href="{@docRoot}guide/topics/graphics/opengl.html">Руководство по API OpenGL ES</a>.</p>
+
+
+<h2 id="android_tv_recording">Запись Android TV</h2>
+
+<p>В Android N добавлена возможность записи и воспроизведения контента из служб Android TV
+через новые API-интерфейсы записи. Службы телевидения на основе существующих API
+с временным сдвигом могут контролировать выбор данных телеканала для записи, сохранение
+сеансов записи и управлять взаимодействием пользователя с записанным контентом. </p>
+
+<p>Дополнительная информация содержится в документе <a href="{@docRoot}preview/features/tv-recording-api.html">API-интерфейсы записи Android TV</a>.</p>
+
+
+<h2 id="android_for_work">Android for Work</h2>
+
+<p>В Android for Work добавлены много новых возможностей и API-интерфейсов для устройств под управлением Android N.
+Некоторые из них приведены ниже. Полный список обновлений Android for Work, касающихся 
+Android N, содержится в списке изменений Android for Work.</p>
+
+<h3 id="work_profile_security_challenge">Пароль безопасности для рабочего профиля </h3>
+
+<p>
+  Владельцы профиля могут установить отдельный пароль безопасности для приложений, запускаемых в рабочем профиле.
+Когда пользователь пытается открыть любые рабочие
+приложения, выводится запрос пароля. Успешный ввод пароля снимает блокировку рабочего профиля
+и, при необходимости, дешифрует его. Владельцы профиля
+могут отправить пользователю запрос <code>ACTION_SET_NEW_PASSWORD</code>, предлагающий установить рабочий пароль,
+ или запрос <code>ACTION_SET_NEW_PARENT_PROFILE_PASSWORD</code>, предлагающий установить пароль блокировки устройства.
+
+</p>
+
+<p>
+  Владельцы профиля могут устанавливать различные политики паролей для рабочей проверки безопасности
+(например, длину PIN-кода, возможность использования отпечатка пальца
+для разблокировки профиля) с помощью <code>setPasswordQuality()</code>,
+<code>setPasswordMinimumLength()</code> и других связанных методов. Владелец
+профиля может также установить блокировку устройства с помощью экземпляра <code>DevicePolicyManager</code>,
+возвращаемого новым методом <code>getParentProfileInstance()</code>.
+Кроме того, владельцы профиля могут настроить экран учетных данных для рабочей проверки безопасности
+с помощью новых методов <code>setOrganizationColor()</code> и
+<code>setOrganizationName()</code>.
+</p>
+<h3 id="turn_off_work">Выключение рабочего режима </h3>
+
+<p>Пользователи устройства с рабочим профилем могут переключать рабочий режим. Когда рабочий режим
+выключен, управляемый им пользователь временно выходит из системы, что отключает приложения рабочего профиля,
+фоновую синхронизацию и уведомления. Также отключается приложение владельца профиля.
+При выключенном рабочем режиме система отображает постоянный значок состояния,
+напоминая пользователю о том, что он не может запустить рабочие приложения. Средство запуска при этом указывает,
+что рабочие приложения и виджеты недоступны. </p>
+
+<h3 id="always_on_vpn">Постоянное подключение к VPN </h3>
+
+<p>Владельцы устройства и профиля могут обеспечить постоянное подключение рабочих приложений через указанную сеть
+VPN. Система автоматически подключается к этой VPN после загрузки устройства.
+</p>
+
+<p>
+  Для этого в интерфейсе <code>DevicePolicyManager</code> используются новые методы
+<code>setAlwaysOnVpnPackage()</code> и
+<code>getAlwaysOnVpnPackage()</code>.
+</p>
+
+<p>Поскольку привязка служб VPN может быть выполнена непосредственно системой без взаимодействия с приложениями,
+клиентам VPN требуется обрабатывать новые точки доступа для постоянного подключения к VPN. Как и раньше,
+службы для системы указываются фильтром намерений, соответствующим действию
+<code>android.net.VpnService</code>. </p>
+
+<p>
+  Пользователи могут вручную установить клиентов постоянного подключения к VPN, реализующих методы
+<code>VPNService</code>, на экране настроек основного пользователя
+<strong>Settings&gt;More&gt;Vpn</strong>.
+</p>
+
+<h2 id="accessibility_enhancements">Расширение специальных возможностей</h2>
+
+<p>Android N теперь предлагает настройки Vision Settings непосредственно на экране приветствия при начальной установке нового устройства.
+Это значительно упрощает пользователям обнаружение и настройку на своих устройствах
+специальных возможностей, включая жесты увеличения, размер шрифта, размер экрана и
+функцию TalkBack. </p>
+
+<p>Благодаря более приметному расположению этих настроек пользователи
+чаще будут пробовать ваше приложение с включенными специальными возможностями. Обязательно протестируйте ваше приложение с этими настройками,
+включив их на экране Settings &gt;
+Accessibility.</p>
+
+<p>Также в Android N предусмотрены службы специальных возможностей которые помогут пользователям с нарушениями двигательных функций
+касаться экрана. Новый API позволяет встроить в службы такие
+возможности, как отслеживание лица, отслеживание взгляда, сканирование точек и другой функционал, соответствующий потребностям
+этих пользователей.</p>
+
+<p>Дополнительную информацию можно найти в описании <code>android.accessibilityservice.GestureDescription</code>
+	в загружаемом <a href="{@docRoot}preview/setup-sdk.html#docs-dl">Справочнике по API</a>.</p>
+
+
+<h2 id="direct_boot">Режим Direct Boot</h2>
+
+<p>Режим Direct Boot ускоряет загрузку устройства и позволяет зарегистрированным приложениям
+сохранить ограниченную функциональность даже после непредвиденной перезагрузки.
+Например, если зашифрованное устройство перезагрузится, когда пользователь спит,
+уведомления о зарегистрированных предупреждениях, сообщениях и входящих вызовах будут поступать пользователю, как в обычном режиме.
+Это также означает, что специальные возможности могут быть доступны сразу после перезагрузки.
+</p>
+
+<p>Режим Direct Boot использует преимущество шифрования на уровне файлов в Android N
+для применения детализированных политик шифрования к данным системы и приложений.
+Система использует хранилище, зашифрованное на уровне устройства, для выбранных системных данных и данных из явным образом зарегистрированных приложений.
+По умолчанию для всех остальных системных данных, пользовательских данных, приложений и
+данных приложений используется хранилище, зашифрованное на уровне учетной записи. </p>
+
+<p>При загрузке система запускается в ограниченном режиме с доступом к данным, зашифрованным
+на уровне устройства, и без общего доступа к приложениям и данным.
+Если у вас есть компоненты, которые должны быть запущены в этом режиме, их можно зарегистрировать,
+установив соответствующий флаг в манифесте. После перезагрузки система активирует зарегистрированные
+компоненты с помощью рассылки намерения <code>LOCKED_BOOT_COMPLETED</code>.
+ Система обеспечивает доступность зарегистрированных данных приложений, зашифрованных на уровне устройства,
+до разблокировки экрана. Все остальные данные остаются недоступными, пока пользователь не подтвердит свои учетную информацию на экране блокировки,
+после чего данные будут расшифрованы. </p>
+
+Дополнительная информация приведена в документе <a href="{@docRoot}preview/features/direct-boot.html">Direct Boot</a>.</p>
+</p>
+
+
+<h2 id="key_attestation">Аттестация ключей</h2>
+
+<p>Аппаратные хранилища ключей обеспечивают безопасный метод создания, хранения,
+и использования криптографических ключей на устройствах Android. Они защищают ключи от
+ядра Linux, потенциальных уязвимостей Android и извлечения из устройств
+с корневым доступом.</p>
+
+<p>Чтобы упростить и повысить безопасность использования аппаратных хранилищ ключей
+в Android N введена возможность аттестации ключей. Приложения и внешние хранилища ключей могут использовать аттестацию,
+чтобы определить, является ли пара ключей RSA или EC
+аппаратной, какие свойства имеет эта пара ключей и какие ограничения применяются
+к ее использованию и сроку действия. </p>
+
+<p>Приложения и службы внешних хранилищ могут запросить информацию о паре ключей
+через сертификат аттестации X.509, который должен быть подписан действительным ключом
+аттестации. Ключ аттестации представляет собой ключ подписи ECDSA, который
+встраивается в аппаратное хранилище ключей устройства при его изготовлении на заводе.
+Поэтому сертификат аттестации, подписанный действительным ключом аттестации,
+подтверждает существование аппаратного хранилища ключей вместе со сведениями о парах ключей в таком хранилище.
+</p>
+
+<p>Чтобы убедиться в том, что устройство использует безопасный официальный заводской образ Android,
+для аттестации ключей требуется предоставление <a class="external-link" href="https://source.android.com/security/verifiedboot/verified-boot.html#bootloader_requirements">загрузчиком</a> устройства
+следующей информации о <a class="external-link" href="https://source.android.com/security/trusty/index.html">доверенной
+среде выполнения (TEE)</a>:</p>
+
+<ul>
+<li>версия ОС и исправлений, установленных на устройстве;</li>
+<li>открытый ключ <a href="https://source.android.com/security/verifiedboot/index.html" class="external-link">подтвержденной загрузки</a> и состояние блокировки.</li>
+  </ul>
+
+<p>Дополнительная информация об аппаратном хранилище ключей содержится
+в соответствующем <a href="https://source.android.com/security/keystore/" class="external-link">руководстве</a>.</p>
+
+<p>В дополнение к аттестации ключей в Android N также добавлены ключи,
+привязанные к отпечаткам пальцев, которые не отменяются при регистрации новых отпечатков.</p>
+
+<h2 id="network_security_config">Конфигурация сетевой безопасности</h2>
+
+<p>В Android N приложения могут безопасно настраивать поведение своих защищенных (HTTPS, TLS)
+подключений, без каких-либо изменений кода, используя декларативную
+<em>конфигурацию сетевой безопасности</em> вместо обычных ненадежных
+программных API-интерфейсов (например, X509TrustManager).</p>
+
+  <p>Поддерживаемые возможности:</p>
+<ul>
+<li><b>Пользовательские якоря доверия.</b> Позволяют приложению определить доверенные
+центры сертификации (ЦС) для его защищенных соединений. Например,
+приложение может доверять определенным самозаверенным сертификатам или ограниченному набору общих ЦС.
+</li>
+<li><b>Замена при отладке.</b> Позволяет разработчику безопасно отладить
+защищенные соединения своего приложения без дополнительного риска для установленной базы.
+
+</li>
+<li><b>Отказ от передачи данных открытым текстом.</b> Позволяет приложению защитить себя от
+случайной передачи данных открытым текстом.</li>
+<li><b>Прикрепление сертификатов.</b> Дополнительная возможность, позволяющая приложению
+ограничить доверенные ключи сервера для защищенных соединений.</li>
+</ul>
+
+<p>Дополнительная информация содержится в документе <a href="{@docRoot}preview/features/security-config.html">Конфигурация сетевой безопасности</a>.
+</p>
+
+<h2 id="default_trusted_ca">Доверенный центр сертификации по умолчанию</h2>
+
+<p>По умолчанию приложения для Android N могут доверять только системным сертификатам
+и не доверяют ЦС, добавленным пользователем. Если приложению для Android N
+требуется доверять пользовательским ЦС, ему следует указать в
+<a href="{@docRoot}preview/features/security-config.html">конфигурации сетевой безопасности</a> эти доверенные пользовательские ЦС.
+</p>
+
+<h2 id="apk_signature_v2">Схема получения подписи APK, версия 2</h2>
+
+<p>Класс PackageManager теперь поддерживает подтверждение приложений с использованием схемы подписи APK
+версии 2. Вторая версия схемы подписи APK применяется ко всему файлу,
+что существенно ускоряет подтверждение и повышает надежность, позволяя обнаруживать любые несанкционированные изменения файлов APK.
+</p>
+
+<p>Для поддержки обратной совместимости пакет APK должен быть подписан с помощью первой версии схемы
+(схема подписи JAR) до того, как он будет подписан по схеме версии 2.
+Подпись по схеме версии 2 не пройдет подтверждение, если APK будет подписан дополнительным сертификатом
+после добавления подписи по схеме версии 2. </p>
+
+<p>Поддержка подписи APK по схеме версии 2 будет доступна в последующих выпусках N Developer
+Preview.</p>
+
+<h2 id="scoped_directory_access">Доступ к выделенным каталогам</h2>
+
+<p>В Android N приложения могут использовать новые API-интерфейсы для запроса доступа к конкретным каталогам <a href="{@docRoot}guide/topics/data/data-storage.html#filesExternal">внешнего хранилища</a>,
+включая каталоги на съемных носителях, таких как SD-карты.
+Новые API-интерфейсы значительно упрощают доступ к стандартным каталогам
+внешнего хранилища, таким как <code>Pictures</code>. Например, приложения, работающие с фотографиями,
+могут использовать эти API-интерфейсы вместо
+<code>READ_EXTERNAL_STORAGE</code>, который разрешает доступ ко всем каталогам
+хранилища или платформы Storage Access Framework, благодаря чему выполняется переход к указанному каталогу.
+</p>
+
+<p>Кроме того, новые API-интерфейсы упрощают процедуру предоставления доступа к внешнему хранилищу для приложения.
+Если вы применяете новые API, система использует простой интерфейс разрешений,
+в котором четко указаны каталоги, к которым приложение запрашивает доступ.
+</p>
+
+<p>Дополнительная информация содержится в документации для разработчиков
+<a href="{@docRoot}preview/features/scoped-folder-access.html">Доступ к выделенным каталогам</a>.
+</p>
+
+
+
+
+
+
diff --git a/docs/html-intl/intl/ru/preview/behavior-changes.jd b/docs/html-intl/intl/ru/preview/behavior-changes.jd
new file mode 100644
index 0000000..a048660
--- /dev/null
+++ b/docs/html-intl/intl/ru/preview/behavior-changes.jd
@@ -0,0 +1,480 @@
+page.title=Изменения в работе
+page.keywords=preview,sdk,compatibility
+meta.tags="предварительная версия", "совместимость"
+page.tags="preview", "developer preview"
+page.image=images/cards/card-n-changes_2x.png
+@jd:body
+
+
+<div id="qv-wrapper">
+<div id="qv">
+
+<h2>Содержание документа</h2>
+
+<ol>
+  <li><a href="#perf">Повышение производительности</a>
+    <ol>
+      <li><a href="#doze">Режим Doze</a></li>
+      <li><a href="#bg-opt">Оптимизация фоновых процессов</a></li>
+    </ol>
+  </li>
+  <li><a href="#perm">Изменения разрешений</a></li>
+  <li><a href="#accessibility">Улучшенные специальные возможности</a>
+    <ol>
+      <li><a href="#screen-zoom">Масштабирование экрана</a></li>
+      <li><a href="#vision-settings">Vision Settings в мастере настройки</a></li>
+    </ol>
+  </li>
+  <li><a href="#ndk">Связь приложений NDK с библиотеками платформы</a></li>
+  <li><a href="#afw">Android for Work</a></li>
+</ol>
+
+<h2>Дополнительно</h2>
+<ol>
+  <li><a href="{@docRoot}preview/api-overview.html">Обзор API-интерфейсов Android N</a>
+</li>
+</ol>
+
+</div>
+</div>
+
+
+<p>
+  Наряду с новыми функциями и возможностями в Android N появились различные изменения
+работы системы и API. В этом документе рассматриваются некоторые наиболее важные
+изменения, которые следует понимать и учитывать при разработке приложений.
+
+</p>
+
+<p>
+  Если вы ранее публиковали приложения для Android, то примите во внимание,
+что эти изменения в платформе могут повлиять на работу ваших уже опубликованных приложений.
+</p>
+
+
+<h2 id="perf">Повышение производительности</h2>
+
+<p>
+  Изменения в работе системы Android N нацелены на более экономное использование заряда аккумулятора
+и оперативной памяти, а также на повышение производительности приложений. Эти изменения могут повлиять
+на системные уведомления и доступность системных ресурсов для вашего приложения. Вам следует
+ознакомиться с этими изменениями и оценить, какие исправления могут понадобиться вашему приложению для соответствия этим изменениям.
+
+</p>
+
+<h3 id="doze">Режим Doze</h3>
+
+<p>
+  Появившийся в Android 6.0 (уровень API 23), режим Doze экономит заряд аккумулятора,
+откладывая процессорные и сетевые операции, когда устройство находится не на зарядке,
+оно неподвижно, и его экран погашен. Android N расширяет возможности
+режима Doze, применяя частичный набор процессорных и сетевых ограничений
+в тех случаях, когда устройство находится не на зарядке, с погашенным экраном, но не обязательно неподвижно,
+например, когда оно находится в кармане пользователя.
+</p>
+
+
+<img src="{@docRoot}preview/images/doze-diagram-1.png" alt="" height="251px" id="figure1" />
+<p class="img-caption">
+  <strong>Рис. 1.</strong> Иллюстрация применения первого уровня ограничений активности системы в режиме Doze
+для экономии заряда аккумулятора.
+</p>
+
+<p>
+  Когда устройство питается от аккумулятора и его экран отключен в течение некоторого промежутка времени,
+устройство переходит в режим Doze и применяет первый частичный набор ограничений: закрывается доступ приложений
+к сети, откладывается выполнение заданий и синхронизации. Если устройство
+остается неподвижным в течение определенного времени после перехода в режим Doze, система применяет
+остальные ограничения Doze для {@link android.os.PowerManager.WakeLock},
+оповещений {@link android.app.AlarmManager}, сканирования GPS и Wi-Fi. Независимо от того, были применены
+все или только некоторые ограничения режима Doze, устройство периодически пробуждается на короткий промежуток времени,
+в течение которого приложениям разрешается сетевой доступ
+и выполнение отложенных заданий или синхронизации.
+</p>
+
+
+<img src="{@docRoot}preview/images/doze-diagram-2.png" alt="" id="figure2" />
+<p class="img-caption">
+  <strong>Рис. 2.</strong> Иллюстрация применения второго уровня ограничений активности системы в режиме Doze
+после того, как устройство неподвижно в течение определенного времени.
+</p>
+
+<p>
+  Следует отметить, что включение экрана или подключение к источнику питания приводит
+к выходу устройства из режима Doze и
+снимает эти ограничения обработки. Эти дополнительные особенности поведения
+не влияют на советы и рекомендации по адаптации приложений к предыдущей
+версии режима Doze из Android 6.0 (уровень API 23), которые были рассмотрены в документе
+<a href="{@docRoot}training/monitoring-device-state/doze-standby.html">Оптимизация для режима Doze и режима ожидания для приложений</a>.
+Вы должны следовать этим рекомендациям (например, использовать Google Cloud Messaging (GCM)
+для отправки и получения сообщений) и приступить к планированию обновлений для соответствия дополнительному поведению режима
+Doze.
+</p>
+
+
+<h3 id="bg-opt">Проект Svelte: оптимизация фоновых процессов</h3>
+
+<p>
+  В Android N удалены три неявных широковещательной рассылки с целью оптимизации
+потребления памяти и энергии. Причиной этого изменения стало то, что неявные
+широковещательные рассылки часто запускали приложения, которые прослушивали их в
+фоновом режиме. Удаление этих рассылок может существенно улучшить производительность устройства
+и работу интерфейса пользователя.
+</p>
+
+<p>
+  На мобильных устройствах часто могут происходить изменения подключения, например, при переключении
+между Wi-Fi и мобильным трафиком. Сейчас приложения могут следить за изменениями
+подключения, зарегистрировавшись в качестве получателя для неявных широковещательных рассылок {@link
+  android.net.ConnectivityManager#CONNECTIVITY_ACTION} в своем манифесте.
+Поскольку для получения этих рассылок регистрируются многие приложения, каждое
+переключение сети может вызвать их активацию и одновременную обработку рассылки.
+
+</p>
+
+<p>
+  Подобным образом приложения могут регистрироваться для получения неявных широковещательных рассылок {@link
+  android.hardware.Camera#ACTION_NEW_PICTURE} и {@link
+  android.hardware.Camera#ACTION_NEW_VIDEO} от других приложений, например от камеры.
+Когда пользователь делает снимок с помощью приложения камеры, эти приложения активируются
+для обработки широковещательной рассылки.
+</p>
+
+<p>
+  Для устранения этих проблем Android N применяет следующие
+способы оптимизации.
+</p>
+
+<ul>
+  <li>Приложения для Android N не получают широковещательные рассылки {@link
+  android.net.ConnectivityManager#CONNECTIVITY_ACTION}, даже если в их манифесте
+указаны требования получения уведомлений об этих событиях. Приложения в активном режиме
+могут следить за событиями {@code CONNECTIVITY_CHANGE} в своем
+основном потоке, если они запрашивают уведомление через {@link
+  android.content.BroadcastReceiver}.
+  </li>
+
+  <li>Приложения не могут отправлять или получать широковещательные рассылки {@link
+  android.hardware.Camera#ACTION_NEW_PICTURE} и {@link
+  android.hardware.Camera#ACTION_NEW_VIDEO}. Эта оптимизация влияет на все приложения, включая те, которые не предназначены для Android N.
+
+  </li>
+</ul>
+
+<p>
+  В будущих выпусках Android могут быть отменены другие неявные широковещательные рассылки,
+а также отменена привязка некоторых фоновых служб. Поэтому следует избегать зависимостей
+(или удалить их) в виде объявленных в манифесте получателей неявных широковещательных рассылок
+или фоновых служб.
+</p>
+
+<p>
+  Платформа Android предоставляет несколько решений, позволяющих отказаться от таких
+неявных широковещательных рассылок или фоновых служб. Например, в API {@link
+  android.app.job.JobScheduler} реализован надежный механизм планирования сетевых операций,
+который запускается при выполнении определенных условий, например при подключении к безлимитной сети. Вы можете даже использовать {@link
+  android.app.job.JobScheduler}, чтобы реагировать на изменения поставщиков контента.
+
+</p>
+
+<p>
+  Дополнительная информация об этом изменении в работе системы и соответствующей
+адаптации приложений содержится в документе <a href="{@docRoot}preview/features/background-optimization.html">Оптимизация фоновых процессов</a>.
+
+</p>
+
+
+<h2 id="perm">Изменения разрешений</h2>
+
+<p>
+  В Android N внесены изменения разрешений, которые могут повлиять на ваше приложение,
+включая разрешения учетных записей пользователей и новое разрешение на запись
+во внешнем хранилище. Ниже приводится краткое описание разрешений, измененных в
+предварительной версии.
+</p>
+
+<ul>
+  <li>{@code GET_ACCOUNTS} (устарело)
+    <p>
+      Разрешение GET_ACCOUNTS теперь считается устаревшим. Система игнорирует это разрешение
+для приложений, разработанных для Android N.
+    </p>
+  </li>
+
+</ul>
+
+
+
+<h2 id="accessibility">Улучшенные специальные возможности</h2>
+
+<p>
+  В Android N внесены изменения, которые должны сделать платформу более удобной для пользователей
+со слабым или нарушенным зрением. Эти изменения в целом
+не требуют исправления кода вашего приложения, однако вам следует проверить их
+и протестировать на своем приложении, чтобы оценить их возможное влияние на интерфейс
+пользователя.
+</p>
+
+
+<h3 id="screen-zoom">Масштабирование экрана</h3>
+
+<p>
+  Android N позволяет пользователям установить параметр <strong>Display size</strong>, который увеличивает или уменьшает
+все элементы на экране, делая таким образом устройство более удобным
+для пользователей со слабым зрением. Пользователи не могут масштабировать экран до ширины менее
+<a href="http://developer.android.com/guide/topics/resources/providing-resources.html">  sw320dp</a> (ширина экрана Nexus 4, обычного телефона среднего размера).
+
+</p>
+
+<div class="cols">
+
+<div class="col-6">
+  <img src="{@docRoot}preview/images/screen-zoom-1.png" alt="" height="XXX" id="figure1" />
+</div>
+<div class="col-6">
+  <img src="{@docRoot}preview/images/screen-zoom-2.png" alt="" height="XXX" id="figure1" />
+</div>
+
+</div> <!-- end cols -->
+<p class="img-caption">
+  <strong>Рис. 3.</strong> На экране справа показан эффект
+увеличения параметра Display size на устройстве под управлением Android N.
+</p>
+
+
+<p>
+  При изменении плотности экрана устройства система уведомляет запущенные приложения следующим способами.
+
+</p>
+
+<ul>
+  <li>Если приложение предназначено для API уровня 23 или ниже, система автоматически завершает
+все его фоновые процессы. Это означает, что если пользователь переходит из такого приложения
+на экран <em>Settings</em> и изменяет параметр
+<strong>Display size</strong>, то система завершает работу приложения таким же образом,
+как в случае нехватки памяти. Если у приложения имеются процессы, работающие в активном режиме,
+система уведомляет эти процессы об изменении конфигурации согласно описанию в документе
+<a href="{@docRoot}guide/topics/resources/runtime-changes.html">Обработка изменений
+в режиме выполнения</a>, как в случае изменения ориентации устройства.
+  </li>
+
+  <li>Если приложение разработано для Android N, все его процессы
+(активные и фоновые) уведомляются об изменении конфигурации, как это описано в документе
+<a href="{@docRoot}guide/topics/resources/runtime-changes.html">Обработка изменений в режиме выполнения</a>.
+
+  </li>
+</ul>
+
+<p>
+  Большинству приложений не требуются какие-либо изменения для поддержки этой возможности при условии,
+что эти приложения соответствуют рекомендациям по разработке для Android. Необходимо проверить следующие моменты.
+</p>
+
+<ul>
+  <li>Протестируйте свое приложение на устройстве с шириной экрана <code><a href=
+  "{@docRoot}guide/topics/resources/providing-resources.html">sw320dp</a></code>
+и убедитесь в его корректной работе.
+  </li>
+
+  <li>При изменении конфигурации устройства обновите в кэше все данные, зависящие от плотности экрана,
+такие как кэшированные растровые изображения или ресурсы, загруженные из сети.
+Проверьте изменения конфигурации, когда приложение возобновляет свою работу после паузы.
+
+    <p class="note">
+      <strong>Примечание.</strong> Если вы кэшируете данные, зависящие от конфигурации, рекомендуется
+добавить к ним релевантные метаданные, описывающие, например, подходящий размер экрана
+или плотность пикселей для этих данных. Эти метаданные помогут решить,
+нужно ли обновлять кэшированные данные после изменения конфигурации.
+
+    </p>
+  </li>
+
+  <li>Избегайте указания абсолютных размеров в пикселях, поскольку они не масштабируются вместе с изменением плотности экрана.
+Вместо этого указывайте размеры в <a href="{@docRoot}guide/practices/screens_support.html">независимых от плотности пикселях</a> (<code>dp</code>).
+
+  </li>
+</ul>
+
+<h3 id="vision-settings">Vision Settings в мастере настройки</h3>
+
+<p>
+  В Android N появились настройки Vision Settings на экране приветствия, где пользователи могут установить
+следующие параметры специальных возможностей на новом устройстве:
+<strong>Magnification gesture</strong>, <strong>Font size</strong>,
+<strong>Display size</strong> и <strong>TalkBack</strong>. В результате этого изменения
+становятся более заметными ошибки, связанные с различными настройками экрана. Чтобы
+оценить влияние этой функции, следует протестировать свое приложение, включив эти настройки
+на экране <strong>Settings &gt;
+Accessibility</strong>.
+</p>
+
+<h2 id="ndk">Связь приложений NDK с библиотеками платформы</h2>
+
+<p>
+  В Android N внесены изменения пространства имен, предотвращающие загрузку закрытых API-интерфейсов.
+Если вы используете NDK, то вы должны использовать только открытые API-интерфейсы платформы Android.
+Использование закрытых API в следующем официальном выпуске Android
+может привести к ошибке и завершению работы приложения.
+</p>
+
+<p>
+  Чтобы предупредить вас об использовании закрытых API, приложения, запущенные на устройстве с Android N,
+создают сообщение об ошибке в журнале устройства (logcat) при вызове закрытого API.
+Эта ошибка также отображается на экране устройства в виде сообщения, информирующего о ситуации.
+Вам следует проверить код приложения, отказаться от применения
+закрытых API и тщательно протестировать приложение на
+тестовом устройстве или эмуляторе.
+</p>
+
+<p>
+  Если ваше приложение зависит от библиотек платформы, ознакомьтесь в документации NDK
+со стандартными способами замены общих закрытых API их открытыми эквивалентами.
+Вы можете ссылаться на библиотеки платформы, не замечая этого,
+особенно если ваше приложение использует библиотеку, которая является частью платформы (например,
+<code>libpng</code>), но не входит в состав NDK. В этом случае убедитесь, что ваш
+пакет APK содержит все файлы .so, на которые вы намеревались ссылаться.
+</p>
+
+<p class="caution">
+  <strong>Внимание!</strong> Некоторые сторонние библиотеки могут ссылаться на закрытые
+API. Приложение, использующее такие библиотеки, может завершиться с ошибкой при запуске в следующем
+официальном выпуске Android.
+</p>
+
+<p>
+  Приложения не должны зависеть от библиотек платформы (или использовать их), которые не входят в состав
+NDK, поскольку эти библиотеки могут изменяться или отсутствовать в разных выпусках Android.
+Примером такого изменения может служить переход от OpenSSL к BoringSSL.
+Разные устройства также могут обладать разными уровнями совместимости, поскольку
+для библиотек платформы, не включенных в
+NDK, отсутствуют требования к совместимости. Если вам необходимо обратиться к библиотекам не из состава NDK на более старых устройствах, эту загрузку следует
+сделать зависимой от уровня Android API.
+</p>
+
+<p>
+  Для помощи в диагностике проблем подобного рода ниже приведены несколько примеров ошибок Java и NDK,
+с которым вы можете столкнуться при создании приложения для Android N.
+</p>
+
+<p>Пример ошибки Java:</p>
+<pre class="no-pretty-print">
+java.lang.UnsatisfiedLinkError: dlopen failed: library "/system/lib/libcutils.so"
+    is not accessible for the namespace "classloader-namespace"
+</pre>
+
+<p>Пример ошибки NDK:</p>
+<pre class="no-pretty-print">
+dlopen failed: cannot locate symbol "__system_property_get" referenced by ...
+</pre>
+
+
+<p>
+  Ниже приведены некоторые стандартные способы устранения подобных ошибок в приложениях.
+</p>
+
+<ul>
+  <li>Использование getJavaVM и getJNIEnv из libandroid_runtime.so может быть заменено
+стандартными функциями JNI:
+<pre class="no-pretty-print">
+AndroidRuntime::getJavaVM -&gt; GetJavaVM from &lt;jni.h&gt;
+AndroidRuntime::getJNIEnv -&gt; JavaVM::GetEnv or
+JavaVM::AttachCurrentThread from &lt;jni.h&gt;.
+</pre>
+  </li>
+
+  <li>Использование символа {@code property_get} из {@code libcutils.so} может быть
+заменено открытой альтернативой {@code __system_property_get}.
+Для этого используйте {@code __system_property_get} со следующим включением include:
+<pre>
+#include &lt;sys/system_properties.h&gt;
+</pre>
+  </li>
+
+  <li>Использование символа {@code SSL_ctrl} из {@code libcrypto.so} должно быть заменено локальной версией.
+Например, вы должны статически связать
+{@code libcyrpto.a} в своем файле {@code .so} или динамически включить в свое приложение собственную библиотеку
+{@code libcrypto.so} из BoringSSL или OpenSSL.
+  </li>
+</ul>
+
+<h2 id="afw">Android for Work</h2>
+<p>
+  Android N содержит изменения для приложений, предназначенных для Android for Work, включая изменения установки сертификата,
+сброса пароля, управления вторичным пользователем,
+и доступа к идентификаторам устройства. Если вы создаете приложение для среды
+Android for Work, вам следует ознакомиться с этими изменениями и откорректировать
+приложение соответствующим образом.
+</p>
+
+<ul>
+  <li>Вы должны установить делегированный установщик сертификатов, прежде чем DPC сможет его настроить.
+ Для приложений владельца профиля и устройства, разработанных под N SDK, необходимо установить
+ делегированный установщик сертификатов, прежде чем контроллер политик устройства
+(DPC) вызовет метод
+<code>DevicePolicyManager.setCertInstallerPackage()</code>. В случае отсутствия установщика
+система выдаст ошибку
+<code>IllegalArgumentException</code>.
+  </li>
+
+  <li>Ограничения сброса пароля для администраторов устройства теперь применяются для владельцев
+профиля. Администраторы устройства более не могут использовать
+<code>DevicePolicyManager.resetPassword()</code> для сброса или изменения
+установленных паролей. Администраторы по-прежнему могут установить пароль, но только тогда, когда для устройства не установлен
+пароль, PIN-код или графический шаблон.
+  </li>
+
+  <li>Владельцы устройства и профиля могут управлять учетными записями даже при наличии ограничений.
+Они могут вызывать API-интерфейсы управления учетными записями
+даже при установленных ограничениях пользователя <code>DISALLOW_MODIFY_ACCOUNTS</code>.
+  </li>
+
+  <li>Владельцам устройства стало проще управлять дополнительными пользователями. Когда устройство
+находится в режиме владельца устройства, автоматически включается ограничение <code>DISALLOW_ADD_USER</code>.
+Это предотвращает создание неуправляемых дополнительных пользователей.
+Кроме того, прекращено использование методов <code>CreateUser()</code> и
+<code>createAndInitial()</code>, которые заменены новым методом
+<code>DevicePolicyManager.createAndManageUser()</code>.
+  </li>
+
+  <li>Владельцы устройства получили доступ к идентификаторам устройства. Владелец устройства может получить MAC-адрес
+Wi-Fi для устройства, используя метод
+<code>DevicePolicyManagewr.getWifiMacAddress()</code>. Если интерфейс Wi-Fi никогда не включался
+на устройстве, этот метод возвращает значение {@code null}.
+  </li>
+</ul>
+
+<p>
+  Дополнительная информация об изменениях Android for Work в Android N содержится в документе
+<a href="{@docRoot}preview/features/afw.html">Обновления Android for Work</a>.
+</p>
+
+<h2 id="other">Другие важные моменты</h2>
+
+<ul>
+<li>Процесс приложения, запущенного под Android N, но разработанного для API более низкого уровня,
+завершается, если пользователь изменяет размер экрана. Приложение
+должно корректно обработать такой сценарий. В противном случае оно завершится с ошибкой, если пользователь
+запустит его с экрана последних задач.
+
+<p>
+Вы должны протестировать свое приложение и убедиться,
+что оно не будет работать подобным образом.
+Для этого можно вызвать аналогичную ошибку,
+принудительно завершив процесс приложения через DDMS.
+</p>
+
+<p>
+Приложения для N и последующих версий Android не завершаются автоматически при изменении плотности экрана,
+однако они могут плохо реагировать на изменения конфигурации.
+</p>
+</li>
+
+<li>
+Приложения для Android N должны уметь корректно обрабатывать изменения конфигурации
+и не должны завершаться с ошибкой при последующих запусках. Вы можете проверить поведение приложения,
+изменив размер шрифта (<strong>Setting</strong> &gt;
+<strong>Display</strong> &gt; <strong>Font size</strong>) и перезапустив затем приложение
+с экрана последних задач.
+</li>
+</ul>
+
diff --git a/docs/html-intl/intl/ru/preview/download.jd b/docs/html-intl/intl/ru/preview/download.jd
new file mode 100644
index 0000000..b286cad
--- /dev/null
+++ b/docs/html-intl/intl/ru/preview/download.jd
@@ -0,0 +1,541 @@
+page.title=Тестирование на устройстве
+meta.tags="предварительная версия", "nexus","образ системы"
+page.tags="preview", "androidn"
+page.image=images/cards/card-n-downloads_2x.png
+
+@jd:body
+
+<div style="position:relative; min-height:600px">
+
+  <div class="wrap" id="tos" style="position:absolute;display:none;width:inherit;">
+
+    <p class="sdk-terms-intro">Прежде чем приступить к загрузке и установке компонентов
+пакета SDK для Android Preview, примите следующие положения и
+условия.</p>
+
+    <h2 class="norule">Положения и условия</h2>
+
+    <div class="sdk-terms" onfocus="this.blur()" style="width:678px">
+Это лицензионное соглашение для пакета Android SDK Preview (далее "Лицензионное соглашение").
+
+1. Введение
+
+1.1. Лицензия на пакет Android SDK Preview (далее по тексту настоящего Лицензионного соглашения – "Preview", который включает системные файлы Android, пакеты API-интерфейсов и файлы библиотеки Preview, если такие доступны) передается в соответствии с положениями настоящего Лицензионного соглашения. Настоящее Лицензионное соглашение является юридически обязывающим договором между компанией Google и любым лицом, использующим Preview.
+
+1.2. В настоящем Лицензионном соглашении термин "Android" означает набор программного обеспечения Android для устройств, предлагаемый к использованию в рамках проекта Android Open Source Project, который доступен на веб-сайте http://source.android.com/ (сведения, размещенные на этом сайте, могут периодически обновляться).
+
+1.3 "Совместимость с Android" означает любую реализацию Android, которая (i) соответствует документу "Определение совместимости с Android", доступному на веб-сайте о совместимости Android (http://source.android.com/compatibility), где оно периодически обновляется; а также (ii) успешно прошедшему проверку с помощью пакета Android Compatibility Test Suite (CTS).
+
+1.4. Под термином "Google" понимается корпорация Google Inc., главный офис которой находится по адресу 1600 Amphitheatre Parkway, Mountain View, CA 94043, United States (США).
+
+2. Принятие лицензионного соглашения
+
+2.1. Использование Preview возможно только после принятия условий настоящего Лицензионного соглашения. Запрещается использовать Preview, если вы не согласны с указанными в настоящем документе условиями и положениями.
+
+2.2. Нажатие кнопки принятия условий и/или использование Preview означает, что вы согласны с положениями настоящего Лицензионного соглашения.
+
+2.3. Вы не вправе использовать Preview и принимать условия данного Лицензионного соглашения, если по законам США или иных стран, включая страну вашего проживания или использования Preview, запрещается передавать Preview в ваш адрес.
+
+2.4. Если вы используете Preview в рамках своей компании или организации, вы соглашаетесь взять на себя обязательства по соблюдению настоящего Лицензионного соглашения от имени своего работодателя или другого юридического лица, и вы тем самым подтверждаете и гарантируете, что обладаете полными юридическими полномочиями связать вашего работодателя или иное подобное юридическое лицо обязательствами по настоящему Лицензионному соглашению. Если вы не обладаете требуемыми полномочиями, вы не вправе принимать указанные в настоящем документе условия и положения или использовать Preview от имени вашего работодателя или другого юридического лица.
+
+3. Лицензия на Preview от Google
+
+3.1. В соответствии с условиями настоящего Лицензионного соглашения Google предоставляет вам ограниченную, бесплатную, неэксклюзивную лицензию, действующую во всем мире и не подлежащую сублицензированию, которая разрешает использовать Preview исключительно в целях разработки приложений для совместимых реализаций платформы Android.
+
+3.2 Вы не должны использовать Preview для разработки приложений для других платформ (включая несовместимые реализации Android) или для разработки других SDK. У вас есть право разрабатывать приложения для других платформ (включая несовместимые реализации Android) при условии, что Preview не используется для этих целей.
+
+3.3. Вы соглашаетесь с тем, что Google или третьим сторонам принадлежат все юридические и имущественные права, а также правовой интерес в отношении Preview, в том числе любые права на объекты интеллектуальной собственности, которые имеются в Preview. Термин "Права на интеллектуальную собственность" означает все возможные права в рамках патентного права, авторского права, закона о коммерческой тайне, закона о товарных знаках, а также иные возможные имущественные права. Google оставляет за собой все права, не предоставленные вам в явном виде.
+
+3.4. Вам запрещается использовать Preview в любых целях, которые однозначно не определены в настоящем Лицензионном соглашении. За исключением случаев, предусмотренных применимыми сторонними лицензиями, вам запрещается: (a) копировать (за исключением резервного копирования), изменять, адаптировать, повторно распространять, декомпилировать, осуществлять инженерный анализ, деассемблировать или создавать производные элементы Preview или иной его части; а также (b) загружать любую часть Preview в мобильные телефоны или иные устройства, помимо персонального компьютера, объединять любые части Preview с другим программным обеспечением, распространять любое программное обеспечение или устройства, содержащие части Preview.
+
+3.5. Использование, воспроизведение и распространение компонентов Preview, на которые распространяется лицензия на программное обеспечение с открытым исходным кодом, регулируются исключительно положениями и условиями такой лицензии на программное обеспечение с открытым исходным кодом, а не настоящим Лицензионным соглашением. Вы соглашаетесь обеспечивать хорошую репутацию получателя лицензии в отношении таких лицензии на программное обеспечение с открытым исходным кодом в рамках всех предоставленных ему прав, а также не допускать каких-либо действий, которые могут привести к аннулированию, приостановлению или нарушению таких прав
+
+3.6. Вы соглашаетесь с тем, что форма и содержание Preview , предоставляемого Google, могут быть изменены без предварительного уведомления, а также с тем, что будущие версии Preview могут оказаться несовместимыми с приложениями, разработанными в предыдущих версиях Preview. Вы соглашаетесь с тем, что Google вправе на свое собственное усмотрение и без предварительного уведомления прекратить (временно или навсегда) предоставление Preview (или любых функций в составе Preview) вам или пользователям.
+
+3.7. Ни одна из частей настоящего Лицензионного соглашения не предусматривает предоставления вам права использовать любые торговые наименования, товарные знаки, знаки обслуживания, логотипы, имена доменов или иные отличительные фирменные знаки, принадлежащие Google.
+
+3.8. Вы соглашаетесь с тем, что обязуетесь не удалять, не скрывать или не изменять любые уведомления об имущественных правах (включая уведомления об авторских правах и товарных знаках), которые могут сопровождать Preview или содержаться в нем.
+
+4. Использование Preview
+
+4.1. Компания Google выражает согласие с тем, что ни по какому положению настоящего Лицензионного соглашения не получает от вас (или ваших лицензиаров) каких-либо юридических и имущественных прав, а также правового интереса в отношении любых программных приложений, разработанных вами с помощью Preview, включая любые права на объекты интеллектуальной собственности, которые имеются в таких приложениях.
+
+4.2. Вы соглашаетесь использовать Preview и создавать приложения исключительно в целях, предусмотренных (a) настоящим Лицензионным соглашением и (b) любым применимым законом, нормативным актом или общепринятыми правилами или рекомендациями в соответствующей юрисдикции (включая любые законы, касающиеся экспорта данных или программного обеспечения из США или иных соответствующих стран, а также импорта в них).
+
+4.3. Вы соглашаетесь с тем, что при использовании Preview для разработки приложений вы обязуетесь обеспечивать конфиденциальность и защищать юридические права пользователей. В случае если пользователи предоставляют вам свои имена, пароли или иные данные для входа либо свои персональные сведения, вы обязуетесь уведомить пользователей о том, что такая информация будет присутствовать в вашем приложении, и вы также обязуетесь предоставить таким пользователям юридически соответствующее уведомление о конфиденциальности и средства правовой защиты. Если в вашем приложении хранится персональная или конфиденциальная информация, предоставленная пользователями, вы обязуетесь обеспечить ее надлежащую защиту. Если пользователь предоставляет вам сведения о своей учетной записи Google, то ваше приложение может использовать такую информацию для доступа к учетной записи Google пользователя только тогда, когда пользователь предоставил вам разрешение на это, и только в тех целях, которые обозначил пользователь.
+
+4.4. Вы соглашаетесь с тем, что обязуетесь не использовать Preview для любого рода деятельности, в том числе для разработки или распространения приложений, в целях нарушения работы и повреждения серверов, сетей или иной собственности или служб Google или любой третьей стороны.
+
+4.5. Вы соглашаетесь с тем, что несете единоличную ответственность (и признаете, что компания Google не несет ответственности ни перед вами, ни перед любой третьей стороной) за любые данные, содержимое или ресурсы, которые вы создаете, передаете или демонстрируете посредством Android и/или приложений для Android, а также за любые последствия ваших действий, связанных с этим (в том числе за любые убытки и любой ущерб, которые могут быть причинены Google).
+
+4.6. Вы соглашаетесь с тем, что несете единоличную ответственность (и признаете, что компания Google не несет ответственности ни перед вами, ни перед любой третьей стороной) за любое несоблюдение обязательств по настоящему Лицензионному соглашению, обязательств по любому применимому договору с третьей стороной или предусмотренных Условиями и положениями, за нарушение любых применимых законов или нормативных актов, а также за любые последствия ваших действий, связанных с таким нарушением (в том числе за любые убытки и любой ущерб, которые могут быть причинены Google).
+
+4.7 Preview находится на стадии разработки, поэтому ваши отзывы и результаты тестирования являются важной частью процесса разработки. Используя Preview, вы признаете, что реализация некоторых функций по-прежнему находится на этапе разработки и вам не следует рассчитывать на полную функциональность стабильной версии. Вы соглашаетесь не распространять или предоставлять любые приложения, использующие Preview, поскольку поддержка Preview будет прекращена после выпуска официальной версии пакета Android SDK.
+
+Ваши учетные данные разработчика
+
+5.1. Вы соглашаетесь с тем, что несете ответственность за обеспечение конфиденциальности любых учетных данных разработчика, которые компания Google может вам предоставить или которые вы можете самостоятельно выбрать, а также с тем, что вы несете единоличную ответственность за все приложения, разработанные с использованием ваших учетных данных разработчика.
+
+6. Конфиденциальность и личная информация
+
+6.1. В целях постоянного совершенствования и улучшения Preview компания Google вправе собирать определенные статистические данные об использовании программного обеспечения, включая уникальный идентификатор, связанный IP-адрес, номер версии программного обеспечения, а также сведения об используемых в Preview инструментах и/или службах и способах их применения. Перед тем как любые из таких данных будут отправлены в Google, в Preview отобразится соответствующее уведомление с просьбой дать свое согласие. В случае вашего отказа предоставить такие сведения соответствующие данные собираться не будут.
+
+6.2. Собранные данные изучаются в обобщенном виде с целью улучшения Preview и хранятся в соответствии с Политикой конфиденциальности Google, которая опубликована на веб-сайте по адресу http://www.google.com/policies/privacy/.
+
+7. Сторонние приложения
+
+7.1. Если вы используете Preview для запуска приложений, разработанных третьими сторонами или получающих доступ к данным, содержимому или ресурсам, предоставляемым третьей стороной, вы соглашаетесь с тем, что Google не несет ответственности за такие приложения, данные, содержимое или ресурсы. Вы осознаете, что единоличную ответственность за все данные, содержимое или ресурсы, доступ к которым вы можете получить посредством таких приложений третьих сторон, несет лицо, предоставившее их, а также то, что Google не несет ответственности за любые убытки или любой ущерб, которые могут возникнуть в результате использования вами любых таких сторонних приложений, данных, содержимого или ресурсов и в результате обращения к ним.
+
+7.2. Вы должны быть осведомлены о том, что данные, содержимое и ресурсы, предоставляемые вам посредством таких сторонних приложений, могут быть защищены правами на объекты интеллектуальной собственности, принадлежащие предоставляющим их лицам (или иным лицам либо компаниям от их имени). Вам запрещается изменять, сдавать в аренду, передавать, продавать, распространять такие данные, содержимое или ресурсы (полностью или частично), а также создавать на их основе производные элементы, если у вас нет на это разрешения от соответствующих владельцев.
+
+7.3. Вы осознаете, что использование вами таких сторонних приложений, данных или ресурсов может регулироваться отдельными условиями, заключенными между вами и соответствующей третьей стороной.
+
+8. Использование API-интерфейсов Google
+
+8.1. API-интерфейсы для получения данных Google.
+
+8.1.1. В случае использования вами любых API для получения данных из Google вы осознаете, что такие данные могут быть защищены правами на объекты интеллектуальной собственности, принадлежащие Google или предоставляющим их сторонам (или иным лицам либо компаниям от их имени). Использование вами подобных API может регулироваться дополнительными Условиями использования. Вам запрещается изменять, сдавать в аренду, передавать, продавать, распространять такие данные (полностью или частично), а также создавать на их основе производные элементы, если это не разрешено соответствующими Условиями использования.
+
+8.1.2. Если вы используете какие-либо API-интерфейсы для получения данных пользователя из Google, вы осознаете и соглашаетесь с тем, что вы обязуетесь получать такие данные исключительно с прямого согласия пользователя и только в тех целях, которые обозначил пользователь.
+
+9. Прекращение действия Лицензионного соглашения
+
+9.1 Настоящее Лицензионное соглашение остается в силе до тех пор, пока его действие не будет прекращено вами или Google, как указано ниже.
+
+9.2. Если вы желаете прекратить действие настоящего Лицензионного соглашения, вы вправе сделать это, прекратив использование Preview и любых соответствующих учетных данных разработчика.
+
+9.3. Google вправе в любое время прекратить действие настоящего Лицензионного соглашения, отправив предварительное уведомление или без него.
+
+9.4 Действие настоящего Лицензионного соглашения автоматически прекращается без предварительного уведомления или выполнения иных действий сразу после следующего:
+(A) компания Google прекращает предоставление Preview или определенных частей Preview пользователям в той стране, в которой вы проживаете или используете услуги компании; 
+(B) компания Google выпускает окончательную версию Android SDK.
+
+9.5 В случае прекращения действия настоящего Лицензионного соглашения прекращается действие лицензии, предоставленной в рамках Лицензионного соглашения, и вам следует незамедлительно прекратить любое использование Preview, тогда как положения, изложенные в разделах 10, 11, 12 и 14 продолжают действовать бессрочно.
+
+10. ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ
+
+10.1. ВЫ ЧЕТКО ОСОЗНАЕТЕ И БЕЗОГОВОРОЧНО СОГЛАШАЕТЕСЬ С ТЕМ, ЧТО ВЫ ИСПОЛЬЗУЕТЕ PREVIEW ИСКЛЮЧИТЕЛЬНО НА СВОЙ СТРАХ И РИСК И ЧТО PREVIEW ПРЕДОСТАВЛЯЕТСЯ ВАМ НА УСЛОВИЯХ "КАК ЕСТЬ" И "КАК ДОСТУПНО" БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ СО СТОРОНЫ КОМПАНИИ GOOGLE.
+
+10.2 ИСПОЛЬЗОВАНИЕ ВАМИ PREVIEW И ЗАГРУЗКА ЛЮБЫХ МАТЕРИАЛОВ И ИХ ПОЛУЧЕНИЕ ИНЫМ СПОСОБОМ С ПОМОЩЬЮ PREVIEW ВЫПОЛНЯЕТСЯ ПО ВАШЕМУ СОБСТВЕННОМУ УСМОТРЕНИЮ НА СВОЙ СТРАХ И РИСК. ВСЯ ОТВЕТСТВЕННОСТЬ ЗА ЛЮБОЙ УЩЕРБ, ПРИЧИНЕННЫЙ ВАШЕЙ ВЫЧИСЛИТЕЛЬНОЙ СИСТЕМЕ ИЛИ ДРУГОМУ ОБОРУДОВАНИЮ, А ТАКЖЕ ЗА ПОТЕРЮ ДАННЫХ, ВЫЗВАННУЮ ПОДОБНЫМ ИСПОЛЬЗОВАНИЕМ, ВОЗЛАГАЕТСЯ НА ВАС. НЕ ОГРАНИЧИВАЯ ВЫШЕСКАЗАННОЕ, ВЫ ПОНИМАЕТЕ, ЧТО PREVIEW НЕ ЯВЛЯЕТСЯ СТАБИЛЬНЫМ ВЫПУСКОМ И МОЖЕТ СОДЕРЖАТЬ ОШИБКИ, ДЕФЕКТЫ И УЯЗВИМОСТИ В СИСТЕМЕ БЕЗОПАСНОСТИ, КОТОРЫЕ МОГУТ ПРИВЕСТИ К СЕРЬЕЗНЫМ ПОВРЕЖДЕНИЯМ, ВКЛЮЧАЯ ПОЛНУЮ И БЕЗВОЗВРАТНУЮ ПОТЕРЮ РАБОТОСПОСОБНОСТИ ВАШЕГО КОМПЬЮТЕРА ИЛИ ИНОГО УСТРОЙСТВА.
+
+10.3. КОМПАНИЯ GOOGLE БЕЗОГОВОРОЧНО ОТКАЗЫВАЕТСЯ ОТ ЯВНЫХ И НЕЯВНЫХ ГАРАНТИЙ И УСЛОВИЙ ЛЮБОГО РОДА, ВКЛЮЧАЯ ПОМИМО ПРОЧЕГО НЕЯВНЫЕ ГАРАНТИИ И УСЛОВИЯ ТОВАРНОГО СОСТОЯНИЯ, ПРИГОДНОСТИ ДЛЯ ОПРЕДЕЛЕННОЙ ЦЕЛИ И ОТСУТСТВИЯ НАРУШЕНИЙ ПРАВ СОБСТВЕННОСТИ.
+
+11. ОГРАНИЧЕНИЕ ОТВЕТСТВЕННОСТИ
+
+11.1. ВЫ ЧЕТКО ОСОЗНАЕТЕ И БЕЗОГОВОРОЧНО СОГЛАШАЕТЕСЬ С ТЕМ, ЧТО КОМПАНИЯ GOOGLE, ЕЕ ДОЧЕРНИЕ И АФФИЛИРОВАННЫЕ КОМПАНИИ И ЛИЦЕНЗИАРЫ НЕ НЕСУТ ПЕРЕД ВАМИ ОТВЕТСТВЕННОСТИ, НЕЗАВИСИМО ОТ ЕЕ ПРИЧИНЫ И ВИДА, ЗА КАКИЕ-ЛИБО ПРЯМЫЕ, КОСВЕННЫЕ, СЛУЧАЙНЫЕ, СПЕЦИАЛЬНЫЕ, ОПОСРЕДОВАННЫЕ И ШТРАФНЫЕ УБЫТКИ, ПОНЕСЕННЫЕ ВАМИ, ВКЛЮЧАЯ ПОМИМО ПРОЧЕГО ПОТЕРЮ ДАННЫХ, ВНЕ ЗАВИСИМОСТИ ОТ ТОГО, БЫЛА ЛИ КОМПАНИЯ GOOGLE ИЛИ ЕЕ ПРЕДСТАВИТЕЛИ ИЗВЕЩЕНЫ О ВОЗМОЖНОСТИ ТАКОГО УЩЕРБА.
+
+12. Освобождение от ответственности
+
+12.1. В максимально допустимой законом степени вы соглашаетесь защищать, освобождать от ответственности и возможных претензий компанию Google, ее аффилированные компании и их соответствующих руководителей, служащих, сотрудников и агентов от всех возможных правовых требований, действий, судебных исков или разбирательств, а также от всех возможных убытков, обязательств, ущерба, издержек и расходов (включая обоснованные вознаграждения для адвокатов), возникающих (a) в связи с использованием вами Preview, (b) в связи с любыми приложениями, разрабатываемыми вами с помощью Preview и нарушающими любые права на объекты интеллектуальной собственности любого лица, а также порочащие любое лицо либо нарушающие права таких лиц на публичность и конфиденциальность, а также (c) в связи с любым несоблюдением вами положений настоящего Лицензионного соглашения.
+
+13. Изменения в Лицензионном соглашении
+
+13.1. Компания Google вправе вносить изменения в настоящее Лицензионное соглашение по мере выхода новых версий Preview. При внесении изменений Google создает новую версию Лицензионного соглашения и размещает ее на веб-сайте, на котором размещена Preview.
+
+14. Общие правовые условия
+
+14.1. Настоящее Лицензионное соглашение составляет полный текст юридического соглашения между вами и компанией Google, регулирует использование вами Preview (за исключением услуг, которые Google предоставляет на основании отдельного письменного соглашения) и полностью заменяет собой все предыдущие соглашения между вами и компанией Google в отношении Preview.
+
+14.2. Вы соглашаетесь с тем, что отсутствие каких-либо действий или судебных исков со стороны Google, направленных на соблюдение каких-либо правовых норм или исполнение средств правовой защиты, установленных настоящим Лицензионным соглашением (или которыми Google обладает в соответствии с каким-либо действующим законом), не означает отказ компании Google от своих прав и не препятствует компании Google использовать эти права или средства защиты.
+
+14.3. Если какой-либо судебный орган, уполномоченный рассматривать этот вопрос, признает недействительность какого-либо положения данного Лицензионного соглашения, то соответствующее положение будет исключено из Лицензионного соглашения с сохранением действия всех остальных его положений. Остальные положения Лицензионного соглашения по-прежнему будут действовать, и их соблюдение может обеспечиваться в судебном порядке.
+
+14.4. Вы признаете и соглашаетесь с тем, что все участники группы компаний, среди которых Google является материнской компанией, являются сторонними бенефициарами Лицензионного соглашения и что эти компании имеют право пользоваться привилегиями (или правами), предоставляемыми по настоящему Лицензионному соглашению, и напрямую требовать их соблюдения в судебном порядке. Все остальные физические и юридические лица не являются сторонними бенефициарами Лицензионного соглашения.
+
+14.5. ОГРАНИЧЕНИЯ НА ЭКСПОРТ. ИСПОЛЬЗОВАНИЕ PREVIEW РЕГУЛИРУЕТСЯ ЗАКОНАМИ И НОРМАТИВНЫМИ АКТАМИ США, КАСАЮЩИМИСЯ ЭКСПОРТА. ВЫ ОБЯЗУЕТЕСЬ СОБЛЮДАТЬ ВСЕ НАЦИОНАЛЬНЫЕ И МЕЖДУНАРОДНЫЕ ЗАКОНЫ ОБ ЭКСПОРТЕ, ПРИМЕНИМЫЕ К PREVIEW. ДАННЫЕ ЗАКОНЫ НАЛАГАЮТ ОГРАНИЧЕНИЯ НА РЕГИОНЫ, КРУГ ЛИЦ И СПОСОБ КОНЕЧНОГО ИСПОЛЬЗОВАНИЯ.
+
+14.6. Вы не вправе переуступать либо передавать права, предоставляемые по настоящему Лицензионному соглашению, без предварительного письменного согласия Google; любые попытки переуступки без такого согласия считаются недействительными. Вы обязуетесь не делегировать свои полномочия или обязательства по настоящему Лицензионному соглашению без предварительного письменного согласия Google.
+
+14.7. Лицензионное соглашение, а также взаимоотношения между вами и компанией Google в рамках настоящего Лицензионного соглашения регулируются законодательством штата Калифорния за исключением его норм коллизионного права. Вы и компания Google признаете, что урегулирование любых правовых вопросов, связанных с данным Лицензионным соглашением, относится исключительно к юрисдикции судов округа Санта-Клара, штат Калифорния. Несмотря на это, вы соглашаетесь с тем, что компания Google по-прежнему имеет право обращаться за наложением судебного запрета (или за получением аналогичного вида неотложной судебной защиты) в суды любой юрисдикции.
+  </div><!-- sdk terms -->
+
+
+
+    <div id="sdk-terms-form">
+      <p>
+        <input id="agree" type="checkbox" name="agree" value="1" onclick="onAgreeChecked()" />
+        <label id="agreeLabel" for="agree">Я ознакомился и принимаю указанные выше положения и условия.</label>
+      </p>
+      <p><a href="" class="button disabled" id="downloadForRealz" onclick="return onDownloadForRealz(this);"></a></p>
+    </div>
+
+
+  </div><!-- end TOS -->
+
+
+  <div id="landing">
+
+<div id="qv-wrapper">
+  <div id="qv">
+    <h2>Содержание документа</h2>
+      <ol>
+        <li><a href="#device-preview">Настройка устройства</a>
+          <ol>
+            <li><a href="#ota">Получение обновлений по беспроводной связи</a></li>
+            <li><a href="#flash">Запись во флэш-память устройства вручную</a></li>
+            <li><a href="#revertDevice">Удаление</a></li>
+          </ol>
+        </li>
+        <li><a href="#setupAVD">Настройка эмулятора</a></li>
+      </ol>
+  </div>
+</div>
+
+<p>
+  Для запуска и тестирования приложения на новой платформе необходимо настроить среду выполнения Android N
+. Это можно выполнить одним из следующих способов:
+</p>
+
+<ul>
+  <li>установить Android N на поддерживаемом устройстве;</li>
+  <li>настроить эмулятор Android с операционной системой Android N.</li>
+</ul>
+
+<p>
+  Если вы хотите выполнить просто тестирование совместимости приложения и
+новой платформы, вам нужен только текущий APK и устройство или
+эмулятор. Для простого тестирования не требуется обновлять всю среду
+разработки.
+</p>
+
+<p>
+  Если вы хотите изменить приложение, сделав Android N целевой ОС, или использовать новые API-интерфейсы Android N,
+необходимо настроить среду разработки, которая поддерживает
+Android N. <a href="{@docRoot}preview/setup-sdk.html">Настройка в целях разработки для
+Android N</a> имеет ряд особенностей.
+</p>
+
+
+<h2 id="device-preview">Настройка устройства</h2>
+
+<p>
+  Программа N Developer Preview предлагает системные обновления,
+которые можно использовать для тестирования приложений на различных устройствах: от телефонов до планшетов и телевизоров.
+</p>
+
+<p>
+  Если у вас есть поддерживаемое устройство, вы сможете обновить его до ключевой сборки Developer
+Preview одним из следующих способов.
+</p>
+
+<ul>
+  <li><strong>Зарегистрируйте устройство для получения автоматических обновлений системы по беспроводной связи</strong> в рамках
+<a href="https://g.co/androidbeta">программы бета-тестирования Android</a>. После регистрации ваше устройство будет регулярно получать
+по беспроводной связи обновления всех ключевых сборок в N Developer Preview. Такой
+способ рекомендуется потому, что он обеспечивает простой переход с текущей
+среды с помощью различных выпусков N Developer Preview.</li>
+  <li><strong>Загрузите системный образ Developer Preview и запишите его во флэш-память устройства</strong>.
+Обновления по беспроводной связи не предоставляются для устройств, запись во флэш-память которых выполнялась вручную, но такие
+устройства можно зарегистрировать в программе бета-тестирования Android для получения обновлений по беспроводной связи. </li>
+</ul>
+
+<h3 id="ota">Регистрация устройства для получения автоматических обновлений по беспроводной связи</h3>
+
+<p>
+  Если у вас есть поддерживаемое устройство (см. список в таблице "Загрузки"),
+вы можете получать обновления предварительных версий Android по беспроводной связи,
+зарегистрировав устройство в <a href="https://g.co/androidbeta">программе бета-тестирования Android</a>. Эти обновления автоматически
+загружаются и устанавливаются на устройство как официальные
+системные обновления.
+</p>
+
+<p>
+  Отменить регистрацию устройства можно в любое время. Устройство будет по беспроводной связи получать последнюю
+версию Android, доступную для него
+(например, Android 6.0 Marshmallow). Для обновления потребуется полный сброс
+настроек устройства в целях удаления с устройства всех данных пользователя. Перед отменой регистрации устройства <strong>выполните резервное копирование
+наиболее важных данных</strong>.
+</p>
+
+<p>
+  Для получения дополнительной информации по регистрации устройства см.
+веб-сайт <a href="https://g.co/androidbeta">программы бета-тестирование Android</a>.
+</p>
+
+<p class="note"><strong>Примечание.</strong>
+Для отмены регистрации требуется полный сброс настроек устройства. Выполните
+резервное копирование наиболее важных данных.
+</p>
+
+<h3 id="flash">Запись во флэш-память устройства вручную</h3>
+
+<p>
+  В любое время вы можете загрузить последний системный образ Developer Preview и
+вручную записать его во флэш-память устройства. См. информацию в следующей таблице, чтобы загрузить системный образ
+для своего тестового устройства. Запись вручную во флэш-память устройства удобна, если требуется
+точное управление средой тестирования или частая переустановка,
+например при автоматическом тестировании. 
+</p>
+
+<!-- You can flash by ota or system image --><p>
+  При установке системного образа <strong>с устройства будут удалены все
+данные</strong>, поэтому сначала необходимо выполнить резервное копирование данных.
+</p>
+
+<p>
+  После резервного копирования данных устройства и загрузки системного образа,
+ соответствующего этому устройству, выполните инструкции, которые приведены по адресу <a href="https://developers.google.com/android/nexus/images#instructions">developers.google.com/android</a>,
+чтобы записать этот образ во флэш-память устройства.
+</p>
+
+<p>
+  Записанные вручную системные образы <strong>не
+получают автоматические обновления</strong> ключевых сборок Developer Preview
+по беспроводной связи. Регулярно обновляйте свою среду и выполняйте запись
+нового системного образа во флэш-память устройства при каждом выпуске ключевой сборки Developer Preview.
+</p>
+
+<p>
+  Если вы захотите получить обновления по беспроводной связи после записи на устройство вручную,
+вам нужно просто зарегистрировать устройство в <a href="https://g.co/androidbeta">программе
+бета-тестировании Android</a>. Вы можете зарегистрировать устройство в любое время для получения следующего обновления предварительной версии
+по беспроводной связи. 
+</p>
+
+<table>
+  <tr>
+    <th scope="col">Устройство</th>
+    <th scope="col">Файлы для загрузки и контрольные суммы</th>
+  </tr>
+
+  <tr id="bullhead">
+    <td>Nexus 5X <br>"bullhead"</td>
+    <td><a href="#top" onclick="onDownload(this)">bullhead-npc56p-preview-6c877a3d.tgz</a><br>
+      MD5: b5cf874021023b398f5b983b24913f5d<br>
+      SHA-1: 6c877a3d9fae7ec8a1678448e325b77b7a7b143a
+    </td>
+  </tr>
+
+  <tr id="shamu">
+    <td>Nexus 6 <br>"shamu"</td>
+    <td><a href="#top" onclick="onDownload(this)">shamu-npc56p-preview-54b13c67.tgz</a><br>
+      MD5: af183638cf34e0eb944a1957d7696f60<br>
+      SHA-1: 54b13c6703d369cc79a8fd8728fe4103c6343973
+    </td>
+  </tr>
+
+  <tr id="angler">
+    <td>Nexus 6P <br>"angler"</td>
+    <td><a href="#top" onclick="onDownload(this)">angler-npc56p-preview-85ffc1b1.tgz</a><br>
+      MD5: bc4934ea7bd325753eee1606d3725a24<br>
+      SHA-1: 85ffc1b1be402b1b96f9ba10929e86bba6c6c588
+    </td>
+  </tr>
+
+  <tr id="volantis">
+    <td>Nexus 9 <br>"volantis"</td>
+    <td><a href="#top" onclick="onDownload(this)">volantis-npc56p-preview-0e8ec8ef.tgz</a><br>
+      MD5: c901334c6158351e945f188167ae56f4<br>
+      SHA-1: 0e8ec8ef98c7a8d4f58d15f90afc5176303efca4
+    </td>
+  </tr>
+
+  <tr id="volantisg">
+    <td>Nexus 9G <br>"volantisg"</td>
+    <td><a href="#top" onclick="onDownload(this)">volantisg-npc56p-preview-1bafdbfb.tgz</a><br>
+      MD5: 7bb95bebc478d7257cccb4652899d1b4<br>
+      SHA-1: 1bafdbfb502e979a9fe4c257a379c4c7af8a3ae6
+    </td>
+  </tr>
+
+  <tr id="fugu">
+    <td>Nexus Player <br>"fugu"</td>
+    <td><a href="#top" onclick="onDownload(this)">fugu-npc56r-preview-7027d5b6.tgz</a><br>
+      MD5: f5d3d8f75836ccfe4c70e8162e498be4<br>
+      SHA-1: 7027d5b662bceda4c80a91a0a14ef0e5a7ba795b
+    </td>
+  </tr>
+
+  <tr id="ryu">
+    <td>Pixel C <br>"ryu"</td>
+    <td><a href="#top" onclick="onDownload(this)">ryu-npc56p-preview-335a86a4.tgz</a><br>
+      MD5: 4e21fb183bbbf467bee91598d587fd2e<br>
+      SHA-1: 335a86a435ee51f18464de343ad2e071c38f0e92
+    </td>
+  </tr>
+  <tr id="seed">
+    <td>General Mobile 4G (Android One) <br>"seed"</td>
+    <td><a href="#top" onclick="onDownload(this)">seed_l8150-npc56p-preview-82472ebc.tgz</a><br>
+      MD5: 983e083bc7cd0c4a2d39d6ebaa20202a<br>
+      SHA-1: 82472ebc9a6054a103f53cb400a1351913c95127
+    </td>
+  </tr>
+
+</table>
+
+<h3 id="revertDevice">Удаление предварительной версии с устройства</h3>
+
+<p>
+  Удаление предварительной версии с устройства можно выполнить одним из
+следующих способов. </p>
+  <ul>
+    <li><strong>Получить заводской образ системы</strong> и вручную
+записать его во флэш-память устройства.
+      <ul>
+          <li>При использовании <strong>устройств Nexus и Pixel C</strong> ссылки для загрузки см. на странице
+<a href="http://developers.google.com/android/nexus/images">Заводские образы
+для устройств Nexus</a>. </li>
+        <li>Для <strong>других устройств</strong> обратитесь напрямую к производителю устройства.
+ Если устройство поддерживается
+программой бета-тестирования Android, вы можете зарегистрировать его для
+участия в программе, а затем, если потребуется, отменить регистрацию (см. ниже).</li>
+      </ul>
+    </li>
+    <li><strong>Отмена регистрации устройства в программе бета-тестировании Android</strong>. Если
+устройство зарегистрировано в <a href="https://g.co/androidbeta">программе бета-тестировании
+Android</a>, можно в любое время отменить регистрацию независимо от типа устройства.
+  <p>
+    Устройство будет получать по беспроводной связи последнюю версию
+Android, доступную для устройства (например, Android 6.0 Marshmallow).
+ Для обновления требуется полный сброс настроек устройства в целях удаления с устройства
+всех данных пользователя. Поэтому перед отменой регистрации устройства <strong>выполните резервное копирование наиболее важных данных</strong>.
+
+  </p>
+  </li>
+</ul>
+
+<p class="note"><strong>Примечание.</strong>
+Удаление системного образа Developer Preview до
+завершения программы требует полного сброса настроек устройства и приводит к удалению всех данных пользователя
+на этом устройстве.
+</p>
+
+
+<h2 id="setupAVD">Настройка эмулятора</h2>
+
+<p>Чтобы использовать эмулятор Android для запуска Android N Preview, необходимо
+загрузить Android N Preview SDK и создать виртуальное устройство для
+эмулятора.</p>
+
+<p>Сначала загрузите Android N Preview SDK, сделав это следующим образом (если вы получили его
+во время <a href="{@docRoot}preview/setup-sdk.html">настройки
+в целях разработки для Android N</a>, этот шаг можно пропустить).
+
+<ol>
+  <li>В Android Studio откройте окно "Settings"
+(<strong>File &gt; Settings</strong> в Windows/Linux или
+<strong>Android Studio &gt; Preferences</strong> для Mac). В левой
+панели выберите <strong>Appearance &amp; Behavior &gt;
+System Settings &gt; Android SDK</strong>.
+
+  <li>Перейдите на вкладку <strong>SDK Platforms</strong> и установите флажок
+<strong>Android N Preview</strong>.</li>
+
+  <li>Откройте вкладку <strong>SDK Tools</strong> и затем установите флажки
+<strong>Android SDK Build Tools</strong>, <strong>Android SDK
+Platform-Tools</strong>, <strong>Android SDK Tools</strong>.
+
+  </li>
+
+  <li>Нажмите <strong>OK</strong> и примите лицензионные
+соглашения для всех устанавливаемых пакетов.
+  </li>
+</ol>
+
+<p>У вас должны быть пакеты <strong>Android SDK Built-Tools 24.0 0 rc1</strong>,
+<strong>Platform-Tools 24.0.0 rc1</strong> и <strong>SDK Tools
+25.0.9</strong>. Если вы не обновите SDK Tools до версии 25.0.9, вы не сможете
+запустить системный образ x86_64 для Android N.</p>
+
+
+<p>Теперь необходимо создать виртуальное устройство с системным образом Android N.</p>
+
+<ol>
+  <li>Откройте AVD Manager, выбрав <strong>Tools &gt; Android &gt;
+AVD Manager</strong>.</li>
+  <li>Нажмите <strong>Create Virtual Device</strong>.</li>
+  <li>Выберите устройство, например: Nexus 5X, Nexus 6P, Nexus 9 или Android TV,
+затем нажмите <strong>Next</strong>.</li>
+  <li>Выберите системный образ <strong>N</strong> (с
+<strong>x86</strong> ABI), затем нажмите <strong>Next</strong>.
+(Эмулятором Android в настоящий момент поддерживаются только системные образы x86
+для Android N Preview.)
+  <li>Выполните остальные настройки конфигурации AVD и нажмите
+<strong>Finish</strong>.</li>
+</ol>
+
+<p>Теперь можно запустить эмулятор Android с Android N Preview AVD.</p>
+
+<p>
+Для обеспечения эффективной работы эмулятора Android установите
+Android Studio 2.1 Preview с поддержкой <a href="http://tools.android.com/tech-docs/emulator">Android Emulator 2.0 Beta</a>,
+который обеспечивает более высокую производительность по сравнению с эмулятором в
+Android Studio 1.5.</p>
+
+<p class="note"><strong>Примечание.</strong>
+Если вы используете Android Studio 2.0 Beta, в нем есть известная неисправность,
+которая не позволяет создавать AVD с системными образами N Preview, поэтому вам потребуется
+использовать Android Studio 2.1 Preview для создания AVD.
+</p>
+
+<p>Для получения дополнительной информации о создании виртуальных устройств см. страницу <a href="{@docRoot}tools/devices/index.html">Управление виртуальными устройствами</a>.
+</p>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+  </div><!-- landing -->
+
+</div><!-- relative wrapper -->
+
+
+
+<script>
+  var urlRoot = "http://storage.googleapis.com/androiddevelopers/shareables/preview/";
+  function onDownload(link) {
+
+    $("#downloadForRealz").html("Download " + $(link).text());
+    $("#downloadForRealz").attr('href', urlRoot + $(link).text());
+
+    $("#tos").fadeIn('fast');
+    $("#landing").fadeOut('fast');
+
+    return true;
+  }
+
+
+  function onAgreeChecked() {
+    /* verify that the TOS is agreed */
+    if ($("input#agree").is(":checked")) {
+      /* reveal the download button */
+      $("a#downloadForRealz").removeClass('disabled');
+    } else {
+      $("a#downloadForRealz").addClass('disabled');
+    }
+  }
+
+  function onDownloadForRealz(link) {
+    if ($("input#agree").is(':checked')) {
+    /*
+      $("#tos").fadeOut('fast');
+      $("#landing").fadeIn('fast');
+    */
+
+      ga('send', 'event', 'M Preview', 'System Image', $("#downloadForRealz").html());
+
+    /*
+      location.hash = "";
+    */
+      return true;
+    } else {
+      return false;
+    }
+  }
+
+  $(window).hashchange( function(){
+    if (location.hash == "") {
+      location.reload();
+    }
+  });
+
+</script>
diff --git a/docs/html-intl/intl/ru/preview/features/background-optimization.jd b/docs/html-intl/intl/ru/preview/features/background-optimization.jd
new file mode 100644
index 0000000..a222343
--- /dev/null
+++ b/docs/html-intl/intl/ru/preview/features/background-optimization.jd
@@ -0,0 +1,388 @@
+page.title=Оптимизация фоновых процессов
+page.metaDescription=Новые ограничения для неявных широковещательных сообщений.
+page.keywords="android N", "implicit broadcasts", "job scheduler"
+@jd:body
+
+<div id="qv-wrapper">
+  <div id="qv">
+    <h2>
+      Содержание документа
+    </h2>
+
+    <ol>
+      <li>
+        <a href="#connectivity-action">Ограничения для CONNECTIVITY_ACTION</a>
+      </li>
+
+      <li>
+        <a href="#sched-jobs">Планирование сетевых заданий для безлимитных
+подключений</a>
+      </li>
+
+      <li>
+        <a href="#monitor-conn">Отслеживание сетевого подключения во время работы
+приложения</a>
+      </li>
+
+      <li>
+        <a href="#media-broadcasts">Ограничения для NEW_PICTURE и
+NEW_VIDEO</a>
+      </li>
+
+      <li>
+        <a href="#new-jobinfo">Новые методы JobInfo</a>
+      </li>
+
+      <li>
+        <a href="#new-jobparam">Новые методы JobParameter</a>
+      </li>
+
+      <li>
+        <a href="#further-optimization">Дальнейшая оптимизация приложения</a>
+      </li>
+    </ol>
+  </div>
+</div>
+
+<p>
+  Фоновые процессы могут потреблять много памяти и заряда аккумулятора. Например,
+неявное широковещательное сообщение может запускать множество фоновых процессов,
+которые его прослушивают, даже если они сами не выполняют полезной работы. Это
+может значительно снизить производительность устройства и быстродействие пользовательского интерфейса.
+</p>
+
+<p>
+  Чтобы устранить подобные проблемы, в N Developer Preview применяются следующие
+ограничения.
+</p>
+
+<ul>
+  <li>Приложения для версии Preview не получают рассылок {@link
+  android.net.ConnectivityManager#CONNECTIVITY_ACTION}, если они
+зарегистрированы для их получения в манифесте. Приложения в активном режиме
+по-прежнему могут прослушивать {@code CONNECTIVITY_CHANGE} в главном потоке,
+зарегистрировав {@link android.content.BroadcastReceiver} с помощью метода {@link
+android.content.Context#registerReceiver Context.registerReceiver()}.
+  </li>
+
+  <li>Приложения не могут отправлять или получать широковещательные сообщения {@link
+  android.hardware.Camera#ACTION_NEW_PICTURE} и {@link
+  android.hardware.Camera#ACTION_NEW_VIDEO}. Эта оптимизация
+затрагивает все приложения, а не только предназначенные для версии Preview.
+  </li>
+</ul>
+
+<p>
+  Платформа Android предоставляет несколько решений, позволяющих отказаться
+от таких неявных рассылок. Например, в {@link android.app.job.JobScheduler}
+и <a href="https://developers.google.com/android/reference/com/google/android/gms/gcm/GcmNetworkManager">
+{@code GcmNetworkManager}</a> реализованы надежные механизмы для планирования сетевых
+операций, которые запускаются при выполнении определенных условий, таких как наличие безлимитной
+сети. Теперь вы также можете использовать {@link android.app.job.JobScheduler}
+, чтобы реагировать на изменения поставщиков контента. В объектах {@link android.app.job.JobInfo}
+инкапсулированы параметры, которые {@link android.app.job.JobScheduler}
+использует для планирования заданий. Если условия задания выполнены, система
+выполняет его через {@link android.app.job.JobService} вашего приложения.
+</p>
+
+<p>
+  Здесь мы рассмотрим, как использовать альтернативные методы, такие как
+{@link android.app.job.JobScheduler}, для адаптации приложения к новым
+ограничениям.
+</p>
+
+<h2 id="connectivity-action">
+  Ограничения для CONNECTIVITY_ACTION
+</h2>
+
+<p>
+  Приложения для N Developer Preview не получают широковещательные сообщения {@link
+  android.net.ConnectivityManager#CONNECTIVITY_ACTION}, если они
+зарегистрированы для их получения в своем манифесте. При этом процессы, которые зависят от этого
+широковещательного сообщения, не запускаются. Это может вызвать проблемы для приложений, которым необходимо
+прослушивать изменения сети или выполнять
+массовые сетевые операции, когда устройство подключается к безлимитной сети. Платформа Android уже предоставляет ряд способов обойти
+это ограничение, но выбор нужного метода
+зависит от того, чего вы хотите добиться от приложения.
+</p>
+
+<p class="note">
+  <strong>Примечание.</strong> Объект {@link android.content.BroadcastReceiver}, зарегистрированный с помощью метода
+{@link android.content.Context#registerReceiver Context.registerReceiver()},
+продолжает получать такие рассылки, если приложение работает в активном режиме.
+</p>
+
+<h3 id="sched-jobs">
+  Планирование сетевых заданий для безлимитных подключений
+</h3>
+
+<p>
+  При использовании класса {@link android.app.job.JobInfo.Builder JobInfo.Builder} для создания
+объекта {@link android.app.job.JobInfo} примените метод {@link
+  android.app.job.JobInfo.Builder#setRequiredNetworkType
+  setRequiredNetworkType()} и передайте {@link android.app.job.JobInfo
+  JobInfo.NETWORK_TYPE_UNMETERED} в качестве параметра задания. В следующем примере кода
+служба запускается, если устройство подключается к безлимитной
+сети и заряжается:
+</p>
+
+<pre>
+public static final int MY_BACKGROUND_JOB = 0;
+...
+public static void scheduleJob(Context context) {
+  JobScheduler js =
+      (JobScheduler) context.getSystemService(Context.JOB_SCHEDULER_SERVICE);
+  JobInfo job = new JobInfo.Builder(
+    MY_BACKGROUND_JOB,
+    new ComponentName(context, MyJobService.class))
+      .setRequiredNetworkType(JobInfo.NETWORK_TYPE_UNMETERED)
+      .setRequiresCharging(true)
+      .build();
+  js.schedule(job);
+}
+</pre>
+
+<p>
+  Если условия задания выполнены, приложение получает обратный вызов для запуска
+метода {@link android.app.job.JobService#onStartJob onStartJob()} в указанном
+классе {@code JobService.class}. Другие примеры реализации {@link
+  android.app.job.JobScheduler} см. в <a href="{@docRoot}samples/JobScheduler/index.html">примере приложения JobScheduler</a>.
+</p>
+
+<p>
+  В приложениях, использующих службы GMSCore и предназначенных для Android 5.0 (уровень API 21)
+или предыдущих версий, можно воспользоваться <a href="https://developers.google.com/android/reference/com/google/android/gms/gcm/GcmNetworkManager">
+  {@code GcmNetworkManager}</a> и указать {@code Task.NETWORK_STATE_UNMETERED}.
+</p>
+
+<h3 id="monitor-conn">
+  Отслеживание сетевого подключения во время работы приложения
+</h3>
+
+<p>
+  Приложения в активном режиме по-прежнему могут прослушивать {@code
+  CONNECTIVITY_CHANGE} с помощью зарегистрированного объекта {@link
+  android.content.BroadcastReceiver}. Однако в API-интерфейсе {@link
+  android.net.ConnectivityManager} есть более надежный метод для запроса
+обратного вызова только при выполнении указанных сетевых условий.
+</p>
+
+<p>
+  В объектах {@link android.net.NetworkRequest} параметры
+сетевого обратного вызова задаются с помощью {@link android.net.NetworkCapabilities}. Объекты {@link android.net.NetworkRequest} создаются
+с использованием класса {@link
+  android.net.NetworkRequest.Builder NetworkRequest.Builder}. Затем метод {@link
+  android.net.ConnectivityManager#registerNetworkCallback(android.net.NetworkRequest,
+  android.net.ConnectivityManager.NetworkCallback) registerNetworkCallback()}
+ передает объект {@link android.net.NetworkRequest} системе. Если
+сетевые условия выполнены, приложение получает обратный вызов для выполнения метода
+  {@link android.net.ConnectivityManager.NetworkCallback#onAvailable
+  onAvailable()}, определенного в своем классе {@link
+  android.net.ConnectivityManager.NetworkCallback}.
+</p>
+
+<p>
+  Приложение продолжает получать обратные вызовы, пока оно не будет закрыто или не будет вызван метод
+  {@link android.net.ConnectivityManager#unregisterNetworkCallback
+  unregisterNetworkCallback()}.
+</p>
+
+<h2 id="media-broadcasts">
+  Ограничения для NEW_PICTURE и NEW_VIDEO
+</h2>
+
+<p>
+  В N Developer Preview приложения не могут отправлять или получать широковещательные сообщения {@link
+  android.hardware.Camera#ACTION_NEW_PICTURE} и {@link
+  android.hardware.Camera#ACTION_NEW_VIDEO}. Это ограничение
+ позволяет улучшить производительность, если для обработки нового изображения или видео должны
+ активироваться несколько приложений. N Developer Preview
+ расширяет классы {@link android.app.job.JobInfo} и {@link
+  android.app.job.JobParameters}, что дает разработчикам альтернативное решение.
+</p>
+
+<h3 id="new-jobinfo">
+  Новые методы JobInfo
+</h3>
+
+<p>
+  Для активации заданий при изменении URI контента в N Developer Preview
+ были добавлены следующие методы для API-интерфейса {@link android.app.job.JobInfo}.
+</p>
+
+<dl>
+  <dt>
+    {@code JobInfo.TriggerContentUri()}
+  </dt>
+
+  <dd>
+    Инкапсулирует параметры, необходимые для активации задания при изменении URI контента.
+  </dd>
+
+  <dt>
+    {@code JobInfo.Builder.addTriggerContentUri()}
+  </dt>
+
+  <dd>
+    Передает объект {@code TriggerContentUri} в контейнер {@link
+    android.app.job.JobInfo}. Объект {@link android.database.ContentObserver}
+    отслеживает инкапсулированный URI контента. Если с заданием связано несколько объектов {@code
+    TriggerContentUri}, система предоставляет
+ обратный вызов, даже если изменился только один из URI контента.
+  </dd>
+
+  <dd>
+    Добавьте флаг {@code TriggerContentUri.FLAG_NOTIFY_FOR_DESCENDANTS}, чтобы
+ активировать задание при изменении любых потомков указанного URI. Этот флаг
+ соответствует параметру {@code notifyForDescendants}, переданному методу {@link
+    android.content.ContentResolver#registerContentObserver
+    registerContentObserver()}.
+  </dd>
+</dl>
+
+<p class="note">
+  <strong>Примечание.</strong> Метод {@code TriggerContentUri()} не может использоваться
+ вместе с {@link android.app.job.JobInfo.Builder#setPeriodic
+  setPeriodic()} или {@link android.app.job.JobInfo.Builder#setPersisted
+  setPersisted()}. Чтобы непрерывно отслеживать изменения контента, запланируйте новый объект задания
+  {@link android.app.job.JobInfo}, прежде чем {@link
+  android.app.job.JobService} завершит обработку последнего обратного вызова.
+</p>
+
+<p>
+  В следующем примере кода планируется задание, которое активируется, когда система сообщает
+ об изменении URI контента {@code MEDIA_URI}:
+</p>
+
+<pre>
+public static final int MY_BACKGROUND_JOB = 0;
+...
+public static void scheduleJob(Context context) {
+  JobScheduler js =
+          (JobScheduler) context.getSystemService(Context.JOB_SCHEDULER_SERVICE);
+  JobInfo.Builder builder = new JobInfo.Builder(
+          MY_BACKGROUND_JOB,
+          new ComponentName(context, MediaContentJob.class));
+  builder.addTriggerContentUri(
+          new JobInfo.TriggerContentUri(MEDIA_URI,
+          JobInfo.TriggerContentUri.FLAG_NOTIFY_FOR_DESCENDANTS));
+  js.schedule(builder.build());
+}
+</pre>
+<p>
+  Если система сообщает об изменении указанных URI контента, приложение
+ получает обратный вызов, а объект {@link android.app.job.JobParameters} передается
+ методу {@link android.app.job.JobService#onStartJob onStartJob()}
+ в {@code MediaContentJob.class}.
+</p>
+
+<h3 id="new-jobparam">
+  Новые методы JobParameter
+</h3>
+
+<p>
+  В N Developer Preview также расширен класс {@link android.app.job.JobParameters}, чтобы
+ приложения могли получать полезные сведения о том, какие источники контента
+ и URI инициировали задание.
+</p>
+
+<dl>
+  <dt>
+    {@code Uri[] getTriggeredContentUris()}
+  </dt>
+
+  <dd>
+    Возвращает массив URI, которые активировали задание. Возвращается значение {@code
+    null}, если ни один URI не инициировал задание (например, задание было
+    активировано по времени или из-за другой причины), или число измененных
+    URI больше 50.
+  </dd>
+
+  <dt>
+    {@code String[] getTriggeredContentAuthorities()}
+  </dt>
+
+  <dd>
+    Возвращает строковый массив источников контента, которые активировали задание.
+    Если возвращенный массив не равен {@code null}, используйте метод {@code getTriggeredContentUris()},
+    чтобы получить сведения об измененных URI.
+  </dd>
+</dl>
+
+<p>
+  В следующем примере кода перегружается метод {@link
+  android.app.job.JobService#onStartJob JobService.onStartJob()} и
+ записываются источники и URI контента, вызвавшие задание:
+</p>
+
+<pre>
+&#64;Override
+public boolean onStartJob(JobParameters params) {
+  StringBuilder sb = new StringBuilder();
+  sb.append("Media content has changed:\n");
+  if (params.getTriggeredContentAuthorities() != null) {
+      sb.append("Authorities: ");
+      boolean first = true;
+      for (String auth :
+          params.getTriggeredContentAuthorities()) {
+          if (first) {
+              first = false;
+          } else {
+             sb.append(", ");
+          }
+           sb.append(auth);
+      }
+      if (params.getTriggeredContentUris() != null) {
+          for (Uri uri : params.getTriggeredContentUris()) {
+              sb.append("\n");
+              sb.append(uri);
+          }
+      }
+  } else {
+      sb.append("(No content)");
+  }
+  Log.i(TAG, sb.toString());
+  return true;
+}
+</pre>
+
+<h2 id="further-optimization">
+  Дальнейшая оптимизация приложения
+</h2>
+
+<p>
+  Оптимизация приложений для устройств с малым объемом памяти
+ или для условий с ограниченным объемом памяти помогает улучшить производительность и удобство работы пользователей. Удаление
+ зависимостей от фоновых служб и статически зарегистрированных приемников неявных широковещательных сообщений
+ способно помочь приложению более эффективно работать на таких устройствах. Хотя
+ на платформе N Developer Preview приняты меры для устранения некоторых из этих проблем,
+ рекомендуется оптимизировать приложения, полностью отказавшись
+ от подобных фоновых процессов.
+</p>
+
+<p>
+  В N Developer Preview представлен ряд дополнительных команд <a href="{@docRoot}tools/help/adb.html">Android Debug Bridge (ADB)</a>, с помощью
+ которых можно тестировать поведение приложения с отключенными фоновыми процессами.
+</p>
+
+<ul>
+  <li>Для эмуляции условий, в которых неявные широковещательные сообщения и фоновые службы
+ недоступны, введите следующую команду:
+  </li>
+
+  <li style="list-style: none; display: inline">
+<pre class="no-pretty-print">
+{@code $ adb shell cmd appops set RUN_IN_BACKGROUND ignore}
+</pre>
+  </li>
+
+  <li>Чтобы снова включить неявные широковещательные сообщения и фоновые службы, введите
+ следующую команду:
+  </li>
+
+  <li style="list-style: none; display: inline">
+<pre class="no-pretty-print">
+{@code $ adb shell cmd appops set RUN_IN_BACKGROUND allow}
+</pre>
+  </li>
+</ul>
\ No newline at end of file
diff --git a/docs/html-intl/intl/ru/preview/features/direct-boot.jd b/docs/html-intl/intl/ru/preview/features/direct-boot.jd
new file mode 100644
index 0000000..2bf03f6
--- /dev/null
+++ b/docs/html-intl/intl/ru/preview/features/direct-boot.jd
@@ -0,0 +1,180 @@
+page.title=Режим Direct Boot
+page.keywords=preview,sdk,direct boot
+page.tags=androidn
+
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+  <h2>Содержание документа</h2>
+  <ol>
+    <li><a href="#run">Запрос доступа для запуска в режиме Direct Boot</a></li>
+    <li><a href="#access">Доступ к шифрованному хранилищу данных устройства</a></li>
+    <li><a href="#notification">Уведомление о разблокировке пользователем</a></li>
+    <li><a href="#migrating">Перенос имеющихся данных</a></li>
+    <li><a href="#testing">Тестирование приложения с поддержкой шифрования</a></li>
+  </ol>
+</div>
+</div>
+
+<p>Android N работает в защищенном режиме <i>Direct Boot,</i> когда
+устройство было включено, но не разблокировано пользователем.
+ Для поддержки такого режима работы в системе имеется два хранилища данных:</p>
+
+<ul>
+<li><i>Хранилище, зашифрованное на уровне учетных данных.</i>Это хранилище используется по умолчанию
+и доступно только тогда, когда пользователь разблокирует устройство.</li>
+<li><i>Хранилище, зашифрованное на уровне устройства.</i>Это хранилище доступно в режиме
+Direct Boot и тогда, когда пользователь разблокирует устройство.</li>
+</ul>
+
+<p>По умолчанию в режиме Direct Boot приложения не работают.
+Если вашему приложению требуется выполнять какие-то действия в режиме Direct Boot, вы можете зарегистрировать
+компоненты приложения, которые должны быть запущены в этом режиме. Некоторые распространенные примеры использования
+приложений, выполняющих операции в режиме Direct Boot:</p>
+
+<ul>
+<li>Приложения с уведомлениями по расписанию, например,
+будильники.</li>
+<li>Приложения, посылающие пользователю важные уведомления, например, приложения СМС.</li>
+<li>Приложения для лиц с ограниченными возможностями, например, Talkback.</li>
+</ul>
+
+<p>Если вашему приложению требуется доступ к данным в режиме Direct Boot, используйте
+шифрованное хранилище устройства. Шифрованное хранилище устройства содержит данные,
+зашифрованные с помощью ключа, доступного только после
+успешной подтвержденной загрузки устройства.</p>
+
+<p>Если данные следует шифровать с помощью ключа, связанного с учетными данными
+пользователя (например, с PIN-кодом или паролем), используйте хранилище, требующее ввода учетных данных.
+Такое хранилище доступно только после успешной
+разблокировки устройства пользователем и до тех пор, пока пользователь не перезапустит устройство. Если
+пользователь включает экран блокировки после разблокировки устройства, шифрованное хранилище,
+требующее ввода учетных данных, не блокируется.</p>
+
+<h2 id="run">Запрос доступа для запуска в режиме Direct Boot</h2>
+
+<p>Прежде
+чем работать в режиме Direct Boot или получать доступ к шифрованному
+хранилищу устройства, приложения должны зарегистрировать свои компоненты в системе. Приложения регистрируются в системе, помечая компоненты как
+<i>поддерживающие шифрование</i>. Чтобы пометить компонент как поддерживающий шифрование, нужно установить для атрибута
+<code>android:encryptionAware</code> в манифесте значение true.<p>
+
+<p>Компоненты, поддерживающие шифрование, можно регистрировать для получения
+<code>LOCKED_BOOT_COMPLETED</code> широковещательных сообщений от
+системы после перезапуска устройства. В этот момент шифрованное хранилище устройства
+доступно, и компонент может выполнять необходимые задачи в режиме
+Direct Boot, например, включать будильник по расписанию.</p>
+
+<p>В следующем фрагменте кода приведен пример регистрации компонента
+{@link android.content.BroadcastReceiver} как поддерживающего шифрование и добавления
+фильтра намерения <code>LOCKED_BOOT_COMPLETED</code> в манифест приложения:</p>
+
+<pre>
+&lt;receiever
+  android:encryptionAware="true" &gt;
+  ...
+  &lt;intent-filter&gt;
+    &lt;action android:name="android.intent.action.LOCKED_BOOT_COMPLETED" /&gt;
+  &lt;/intent-filter&gt;
+&lt;/receiver&gt;
+</pre>
+
+<p>После разблокировки устройства пользователем все компоненты имеют доступ к шифрованному хранилищу устройства
+и к шифрованному хранилищу, требующему ввода учетных данных.</p>
+
+<h2 id="access">Доступ к шифрованному хранилищу данных устройства</h2>
+
+<p>Для получения доступа к шифрованному хранилищу устройства следует создать второй экземпляр
+{@link android.content.Context} посредством вызова
+<code>Context.createDeviceEncryptedStorageContext()</code>. Все вызовы API
+системы хранения данных с использованием этого контекста получают доступ к шифрованному хранилищу устройства. В
+следующем примере показано, как получить доступ к шифрованному хранилищу устройства и открыть существующий
+файл данных приложения:</p>
+
+<pre>
+Context directBootContext = Context.createDeviceEncryptedStorageContext();
+// Access appDataFilename that lives in device encrypted storage
+FileInputStream inStream = directBootContext.openFileInput(appDataFilename);
+// Use inStream to read content...
+</pre>
+
+<p>Шифрованное хранилище устройства следует использовать только для
+информации, которая должна быть доступна в режиме Direct Boot.
+Шифрованное хранилище устройства не следует использовать в качестве шифрованного хранилища общего назначения.
+Для хранения данных пользователя или шифрованных данных, которые не требуются в режиме 
+Direct Boot, следует использовать шифрованное хранилище, требующее ввода учетных данных.</p>
+
+<h2 id="notification">Уведомление о разблокировке пользователем</h2>
+
+<p>Когда после перезагрузки устройства пользователь разблокирует его, ваше приложение может переключиться на
+шифрованное хранилище, требующее ввода учетных данных, и использовать обычные системные службы,
+зависящие от учетных данных пользователя.</p>
+
+<p>Чтобы приложение получало уведомления о разблокировке устройства пользователем после перезагрузки,
+необходимо зарегистрировать {@link android.content.BroadcastReceiver} работающего компонента
+для отслеживания сообщения <code>ACTION_USER_UNLOCKED</code>. Также приложение может
+получать существующее сообщение {@link android.content.Intent#ACTION_BOOT_COMPLETED
+ACTION_BOOT_COMPLETED}, которое теперь указывает, что устройство загружено и разблокировано
+пользователем.</p>
+
+<p>Приложение может направлять запрос напрямую, если пользователь разблокирует устройство посредством вызова
+<code>UserManager.isUserUnlocked()</code>.</p>
+
+<h2 id="migrating">Перенос имеющихся данных</h2>
+
+<p>Если пользователь обновит свое устройство для использования режима Direct Boot, вашему приложению может потребоваться перенести
+имеющиеся данные в шифрованное хранилище устройства. Используйте
+<code>Context.migrateSharedPreferencesFrom()</code> и
+<code>Context.migrateDatabaseFrom()</code> для переноса данных о настройках и содержимого баз данных
+между шифрованным хранилищем, требующим ввода учетных данных, и шифрованным хранилищем устройства.</p>
+
+<p>Хорошо обдумайте, какие данные следует перенести из
+шифрованного хранилища, требующего ввода учетных данных, в шифрованное хранилище устройства. Не следует переносить в
+шифрованное хранилище устройства личные данные пользователя, такие как
+пароли или токены авторизации. В некоторых случаях вашему приложению может потребоваться работать
+с отдельными наборами данных в двух шифрованных хранилищах.</p>
+
+<h2 id="testing">Тестирование приложения с поддержкой шифрования</h2>
+
+<p>Протестируйте свое приложение с поддержкой шифрования в новом режиме Direct Boot. Существуют
+два способа включить режим Direct Boot.</p>
+
+<p class="caution"><strong>Внимание!</strong> При включении режима Direct Boot
+с устройства удаляются все данные пользователя.</p>
+
+<p>Чтобы включить режим
+Direct Boot на поддерживаемых устройствах с Android N, выполните одну из следующих последовательностей действий.</p>
+
+<ul>
+<li>Включите на устройстве параметры разработчика <b>Developer options</b>, если вы еще не сделали этого ранее. Для этого 
+перейдите на экран <b>Settings &gt; About phone</b> и нажмите семь раз <b>Build number</b>.
+ Когда параметры разработчика станут доступны, откройте раздел
+<b>Settings &gt; Developer options</b> и выберите
+<b>Convert to file encryption</b>.</li>
+<li>Используйте следующие команды оболочки adb для включения режима Direct Boot:
+<pre class="no-pretty-print">
+$ adb reboot-bootloader
+$ fastboot --wipe-and-use-fbe
+</pre>
+</li>
+</ul>
+
+<p>Если вам требуется переключать
+режимы на тестовых устройствах, вы можете использовать эмуляцию режима Direct Boot. Режим эмуляции следует использовать только для целей
+разработки, в нем возможна потеря данных. Чтобы включить эмуляцию режима Direct Boot,
+установите режим блокировки устройства, выберите пункт "No thanks", если система предлагает открыть
+защищенный экран запуска при установке режима блокировки, а затем используйте
+следующую команду оболочки adb:</p>
+
+<pre class="no-pretty-print">
+$ adb shell sm set-emulate-fbe true
+</pre>
+
+<p>Для отключения эмуляции режима Direct Boot нужно использовать следующую команду:</p>
+
+<pre class="no-pretty-print">
+$ adb shell sm set-emulate-fbe false
+</pre>
+
+<p>При использовании этих команд устройство перезагружается.</p>
diff --git a/docs/html-intl/intl/ru/preview/features/icu4j-framework.jd b/docs/html-intl/intl/ru/preview/features/icu4j-framework.jd
new file mode 100644
index 0000000..8d92dd4
--- /dev/null
+++ b/docs/html-intl/intl/ru/preview/features/icu4j-framework.jd
@@ -0,0 +1,158 @@
+page.title=API-интерфейсы ICU4J в платформе Android
+
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+<h2>Содержание документа:</h2>
+<ol>
+    <li><a href="#relation">Связь с ICU4J</a></li>
+    <li><a href="#migration">Переход на API-интерфейсы android.icu с ICU4J</a></li>
+    <li><a href="#licence">Лицензирование</a></li>
+</ol>
+
+<h2>См. также:</h2>
+<ol>
+  <li>
+    <a class="external-link" href="http://userguide.icu-project.org">Документация по ICU4J</a>
+  </li>
+
+  <li>
+    <a class="external-link" href="http://site.icu-project.org/#TOC-What-is-ICU-">Последние стандарты, поддерживаемые
+ICU4J</a>
+  </li>
+</ol>
+</div>
+</div>
+
+<p>
+  ICU4J — широко используемый набор библиотек Java с открытым кодом, обеспечивающий для приложений поддержку формата Unicode
+и глобализации. Android N
+открывает в платформе Android частичный набор API-интерфейсов ICU4J, который разработчики приложений
+могут использовать в составе пакета {@code android.icu}. Эти API используют
+данные локализации, присутствующие на устройстве. Это позволяет уменьшить размеры APK
+, не компилируя библиотеки ICU4J в APK, а
+просто вызывая их в платформе. (В этом случае может оказаться удобно предоставлять
+<a href="{@docRoot}google/play/publishing/multiple-apks.html">несколько версий
+вашего APK</a>, чтобы пользователи с версиями Android ниже Android N
+могли загружать версию приложения, содержащую библиотеки ICU4J.)
+</p>
+
+<p>
+  В начале этого документа предоставляется базовая информация по минимальным уровням
+Android API, которые требуются для поддержки этих библиотек. Далее приводятся необходимые пояснения
+о реализации ICU4J в Android. В заключение
+в нем рассказывается, как использовать API-интерфейсы ICU4J в платформе Android.
+</p>
+
+<h2 id="relation">Связь с ICU4J</h2>
+
+<p>
+  В Android N частичный набор API-интерфейсов ICU4J открывается через пакет
+  <code>android.icu</code>, а не через <code>com.ibm.icu</code>. Для платформы
+Android может быть принято решение не
+открывать API-интерфейсы ICU4J по различным причинам. Например, Android N не открывает
+некоторые устаревшие API-интерфейсы, а также те, которые рабочая группа ICU еще не объявила
+стабильными. По мере того, как рабочая группа ICU будет объявлять API-интерфейсы устаревшими, они будут так же помечаться и в Android,
+но при этом будут и дальше входить в состав платформы.
+</p>
+
+<p class="table-caption"><strong>Таблица 1.</strong> Версии ICU и CLDR, используемые
+в Android N.</p>
+<table>
+<tr>
+<th>Уровень Android API</th>
+<th>Версия ICU</th>
+<th>Версия CLDR</th>
+</tr>
+<tr>
+<td>Android N</td>
+<td>56</td>
+<td>28</td>
+</tr>
+</table>
+
+<p>Следует отметить несколько важных моментов:</p>
+
+<ul>
+<li>В состав API-интерфейсов ICU4J платформы Android входят не все API-интерфейсы ICU4J.</li>
+<li>Разработчикам NDK следует помнить, что Android ICU4C не поддерживается.</li>
+<li>API-интерфейсы в платформе Android не заменяют поддержку
+<a href="{@docRoot}guide/topics/resources/localization.html">локализации с
+ресурсами</a> в Android.</li>
+</ul>
+
+<h2 id="migration">Переход на пакет android.icu с com.ibm.icu</h2>
+
+<p>
+  Если вы уже используете в своем приложении API-интерфейсы ICU4J, и если API
+  <code>android.icu</code> соответствуют вашим требованиям, то для перехода на
+API-интерфейсы платформы вам нужно будет изменить импорт Java
+с <code>com.ibm.icu</code> на <code>android.icu</code>. После этого вы сможете
+удалить свои копии файлов ICU4J из APK.
+</p>
+
+<p class="note">
+  <b>Примечание</b>. API-интерфейсы ICU4J в платформе используют пространство имен {@code android.icu}
+вместо {@code com.ibm.icu}. Это позволяет избежать конфликтов пространств имен
+в пакетах APK, содержащих собственные библиотеки {@code com.ibm.icu}.
+</p>
+
+<h3 id="migrate-from-android">
+  Переход на API-интерфейсы android.icu с других API Android SDK
+</h3>
+
+<p>
+  Некоторые классы в пакетах <code>java</code> и <code>android</code> имеют
+эквиваленты в ICU4J. Однако ICU4J обычно обеспечивает более широкую
+поддержку стандартов и языков.
+</p>
+<p>Ниже приведены несколько примеров для начала работы:</p>
+<table>
+<tr>
+<th>Класс</th>
+<th>Альтернативы</th>
+</tr>
+<tr>
+<td><code>java.lang.Character</code> </td>
+<td><code>android.icu.lang.UCharacter</code> </td>
+</tr>
+<tr>
+<td><code>java.text.BreakIterator</code> </td>
+<td><code>android.icu.text.BreakIterator</code> </td>
+</tr>
+<tr>
+<td><code>java.text.DecimalFormat</code> </td>
+<td><code>android.icu.text.DecimalFormat</code> </td>
+</tr>
+<tr>
+<td><code>java.util.Calendar</code></td>
+<td>
+<code>android.icu.util.Calendar</code></td>
+</tr>
+<tr>
+<td><code>android.text.BidiFormatter</code>
+ </td>
+<td><code>android.icu.text.Bidi</code>
+ </td>
+</tr>
+<tr>
+<td><code>android.text.format.DateFormat</code>
+ </td>
+<td><code>android.icu.text.DateFormat</code>
+ </td>
+</tr>
+<tr>
+<td><code>android.text.format.DateUtils</code> </td>
+<td><code>android.icu.text.DateFormat</code>
+<code>android.icu.text.RelativeDateTimeFormatter</code>
+</td>
+</tr>
+</table>
+
+<h2 id="licence">Лицензирование</h2>
+
+<p>
+  ICU4J выпускается по лицензии ICU. Более подробную информацию можно найти в <a class="external-link" href="http://userguide.icu-project.org/icufaq#TOC-How-is-the-ICU-licensed-">Руководстве пользователя
+ICU.</a>
+</p>
diff --git a/docs/html-intl/intl/ru/preview/features/multi-window.jd b/docs/html-intl/intl/ru/preview/features/multi-window.jd
new file mode 100644
index 0000000..f1a8ea6
--- /dev/null
+++ b/docs/html-intl/intl/ru/preview/features/multi-window.jd
@@ -0,0 +1,582 @@
+page.title=Поддержка многооконного режима
+page.metaDescription=Новые возможности в Android N для одновременного отображения нескольких приложений.
+page.keywords="multi-window", "android N", "split screen", "free-form"
+
+@jd:body
+
+<div id="qv-wrapper">
+  <div id="qv">
+    <h2>Содержание документа</h2>
+      <ol>
+        <li><a href="#overview">Обзор</a></li>
+        <li><a href="#lifecycle">Жизненный цикл многооконного режима</a></li>
+        <li><a href="#configuring">Настройка приложения для многооконного
+ режима</a></li>
+        <li><a href="#running">Запуск приложения в многооконном режиме</a></li>
+        <li><a href="#testing">Тестирование приложения в многооконном режиме</a></li>
+      </ol>
+    <h2>См. также:</h2>
+      <ol>
+        <li><a class="external-link" href="https://github.com/googlesamples/android-MultiWindowPlayground">Пример
+ многооконного демонстрационного приложения</a></li>
+      </ol>
+  </div>
+</div>
+
+<p>
+  В Android N добавлена поддержка отображения нескольких приложений
+ одновременно. На мобильных устройствах два приложения могут быть запущены рядом
+ или друг над другом в режиме <em>разделения экрана</em>. На телевизорах приложения могут
+ использовать режим <em>"картинка в картинке"</em>, чтобы воспроизводить видео,
+ пока пользователи работают с другим приложением.
+</p>
+
+<p>
+  Если вы создаете приложение с использованием N Preview SDK, вы можете указать, как оно
+ будет действовать в многооконном режиме. Например, можно задать минимальные
+ допустимые размеры окна приложения. Также можно отключить многооконный режим для приложения,
+ чтобы оно отображалось только в полноэкранном
+ режиме.
+</p>
+
+<h2 id="overview">Обзор</h2>
+
+<p>
+  В Android N несколько приложений могут одновременно находиться на экране. Например,
+ пользователь может разделить экран, чтобы просматривать веб-страницу
+ слева и писать сообщение электронной почты справа. Возможности пользователя зависят от
+ устройства.
+</p>
+
+<ul>
+  <li>На мобильных устройствах с Android N доступен режим
+ разделения экрана. В этом режиме два приложения отображаются рядом
+ или друг над другом. Пользователь может перетащить
+ линию разделения, чтобы увеличить окно одного приложения и уменьшить окно другого.
+  </li>
+
+  <li>На устройствах Nexus Player с Android N для приложений
+ будет доступен <a href="picture-in-picture.html">режим "картинка в картинке"</a>, который
+ позволит приложению отображать контент, пока пользователь просматривает
+ другие приложения или взаимодействует с ними.
+  </li>
+
+  <li>Производители более крупных устройств могут активировать
+ режим произвольной формы, где пользователь может любым образом изменять размер каждого окна. В этом случае
+ помимо режима разделения экрана
+ на устройстве будет доступен и этот режим.
+  </li>
+</ul>
+
+<img src="{@docRoot}preview/images/mw-splitscreen.png" alt="" width="650" srcset="{@docRoot}preview/images/mw-splitscreen.png 1x,
+    {@docRoot}preview/images/mw-splitscreen_2x.png 2x," id="img-split-screen" />
+<p class="img-caption">
+  <strong>Рис. 1.</strong> Два приложения отображаются рядом в режиме разделения экрана.
+</p>
+
+<p>
+  Пользователь может перейти в многооконный режим следующими способами.
+</p>
+
+<ul>
+  <li>Если пользователь откроет <a href="{@docRoot}guide/components/recents.html">экран
+ обзора</a> и длительно нажмет
+ название операции, ее можно будет перетащить в выделенную часть
+ экрана и переключить в многооконный режим.
+  </li>
+
+  <li>Если пользователь длительно нажмет кнопку "Обзор", устройство
+ переключит текущую операцию в многооконный режим и откроет экран обзора,
+ где пользователь сможет выбрать другую операцию для совместного отображения.
+  </li>
+</ul>
+
+<p>
+  Пользователи могут <a href="{@docRoot}guide/topics/ui/drag-drop.html">перетаскивать</a>
+данные между окнами операций в режиме
+ совместного отображения. (Ранее перетаскивать данные можно было только в рамках
+ одной операции).
+</p>
+
+<h2 id="lifecycle">Жизненный цикл многооконного режима</h2>
+
+<p>
+  Многооконный режим не меняет <a href="{@docRoot}training/basics/activity-lifecycle/index.html">жизненный
+ цикл операции</a>.
+</p>
+
+<p>
+  В этом режиме в каждый момент времени активной
+ является только последняя операция, с которой взаимодействовал пользователь. Такая операция считается <em>самой верхней</em>.
+  Все другие операции приостановлены, даже если они отображаются.
+  Однако система отдает приостановленным, но видимым операциям более
+ высокий приоритет, чем невидимым. Если пользователь взаимодействует с
+ одной из приостановленных операций, она возобновляется, а прежняя самая верхняя
+ операция приостанавливается.
+</p>
+
+<p class="note">
+  <strong>Примечание.</strong> В многооконном режиме приложение может быть приостановлено
+ и по-прежнему видимо для пользователя. Приложению может потребоваться
+ продолжать свои операции, даже если оно приостановлено. Например, видимое приостановленное приложение,
+ воспроизводящее видео, будет по-прежнему показывать видео. Поэтому
+ мы <em>не</em> рекомендуем приостанавливать воспроизведение
+ в обработчиках {@link android.app.Activity#onPause onPause()} таких приложений.
+  Вместо этого следует приостановить видео в {@link android.app.Activity#onStop
+  onStop()} и возобновить воспроизведение в {@link android.app.Activity#onStart
+  onStart()}.
+</p>
+
+<p>
+  Если пользователь переводит приложение в многооконный режим, система
+ уведомляет операцию об изменении конфигурации, как указано в документе <a href="{@docRoot}guide/topics/resources/runtime-changes.html">Обработка изменений
+ во время выполнения</a>. По сути это изменение так же действует
+на жизненный цикл операции, как уведомление приложения системой
+о переходе устройства из вертикальной ориентации в
+ горизонтальную, только изменяются размеры экрана, а не ориентация. Как описано в документе <a href="{@docRoot}guide/topics/resources/runtime-changes.html">Обработка изменений
+ во время выполнения</a>, операция может обработать изменение
+ конфигурации самостоятельно или может позволить системе
+ удалить окно операции и создать его заново с новыми размерами.
+</p>
+
+<p>
+  Если пользователь увеличивает одну из сторон окна, система меняет
+ размер окна операции в соответствии с действием пользователя и применяет <a href="{@docRoot}guide/topics/resources/runtime-changes.html">изменения в режиме выполнения</a>
+ по мере необходимости. Если приложение не успевает отрисовать новые области, система
+ временно заполняет их цветом, заданным атрибутом {@link
+  android.R.attr#windowBackground windowBackground} или атрибутом стиля
+ <code>windowBackgroundFallback</code> по умолчанию.
+</p>
+
+<h2 id="configuring">Настройка приложения для многооконного режима</h2>
+
+<p>
+  Если ваше приложение предназначено для Android N, вы
+ можете указать, каким образом поддерживают (и поддерживают ли) операции вашего приложения многооконный режим. Атрибуты управления размером и макетом устанавливаются
+ в манифесте.
+  Настройки атрибутов корневой операции применяются
+ ко всем операциям в ее стеке задач.
+</p>
+
+<p class="note">
+  <strong>Примечание.</strong> Если приложение с поддержкой различной
+ ориентации было создано с версией SDK,
+ более ранней, чем Android N, и пользователь запустит это приложение в многооконном режиме, система принудительно изменит размер приложения. Система отображает диалоговое окно
+ с предупреждением о том, что приложение может работать непредвиденным образом. Система
+  <em>не</em> меняет размер окна для приложений с
+ фиксированной ориентацией. Если пользователь попытается открыть такое приложение
+ в многооконном режиме, оно займет весь экран.
+</p>
+
+<h4 id="resizeableActivity">android:resizeableActivity</h4>
+<p>
+  Установите этот атрибут в узле <code>&lt;activity&gt;</code> или
+ <code>&lt;application&gt;</code> манифеста, чтобы включить или отключить многооконный
+ режим:
+</p>
+
+<pre>
+android:resizeableActivity=["true" | "false"]
+</pre>
+
+<p>
+  Если для этого атрибута задано значение true, операцию можно запускать
+ в режимах разделения экрана и произвольной формы. Если для атрибута задано значение false,
+ операция не поддерживает многооконный режим. Если значение равно false и
+ пользователь пытается запустить операцию в многооконном режиме, она
+ занимает весь экран.
+</p>
+
+<p>
+  Если приложение предназначено для Android N, но
+значение для этого атрибута не было указано, то по умолчанию используется значение true.
+</p>
+
+<h4 id="supportsPictureInPicture">android:supportsPictureInPicture</h4>
+
+<p>
+  Установите этот атрибут в узле <code>&lt;activity&gt;</code> манифеста,
+ чтобы указать, поддерживает ли операция режим "картинка в картинке". Этот
+ атрибут не принимается во внимание, если для <code>android:resizeableActivity</code> установлено значение false.
+</p>
+
+<pre>
+android:supportsPictureInPicture=["true" | "false"]
+</pre>
+
+<h3 id="layout">Атрибуты макета</h3>
+
+<p>
+  В Android N элемент манифеста <code>&lt;layout&gt;</code> поддерживает
+  несколько атрибутов, которые определяют поведение
+ операции в многооконном режиме.
+</p>
+
+<dl>
+  <dt>
+    <code>android:defaultWidth</code>
+  </dt>
+
+  <dd>
+    Ширина окна операции по умолчанию в режиме произвольной формы.
+  </dd>
+
+  <dt>
+    <code>android:defaultHeight</code>
+  </dt>
+
+  <dd>
+    Высота окна операции по умолчанию в режиме произвольной формы.
+  </dd>
+
+  <dt>
+    <code>android:gravity</code>
+  </dt>
+
+  <dd>
+    Начальная позиция окна операции в режиме произвольной формы. Допустимые значения
+ см. в описании класса {@link android.view.Gravity}.
+  </dd>
+
+  <dt>
+    <code>android:minimalSize</code>
+  </dt>
+
+  <dd>
+    Минимальные значения высоты и ширины окна операции в режимах разделения экрана
+ и произвольной формы. Если пользователь перемещает разделительную линию
+ в режиме разделения экрана, чтобы сделать размер окна операции
+ меньше указанного минимума, система обрезает его до запрошенного пользователем размера.
+  </dd>
+</dl>
+
+<p>
+  В следующем примере кода показано, как задать размер и
+ позицию окна операции по умолчанию, а также ее минимальный размер в
+ режиме произвольной формы:
+</p>
+
+<pre>
+&lt;activity android:name=".MyActivity"&gt;
+    &lt;layout android:defaultHeight="500dp"
+          android:defaultWidth="600dp"
+          android:gravity="top|end"
+          android:minimalSize="450dp" /&gt;
+&lt;/activity&gt;
+</pre>
+
+<h2 id="running">Запуск приложения в многооконном режиме</h2>
+
+<p>
+  Android N предоставляет новые возможности для поддержки
+ приложений в многооконном режиме.
+</p>
+
+<h3 id="disabled-features">Недоступные возможности в многооконном режиме</h3>
+
+<p>
+  Некоторые возможности отключены или игнорируются в многооконном
+ режиме, потому что они не имеют смысла для операции, которая отображается
+ на экране устройства одновременно с другими операциями или приложениями. Ниже приведены примеры таких возможностей.
+
+<ul>
+  <li>Отключены некоторые параметры настройки <a href="{@docRoot}training/system-ui/index.html">системного интерфейса</a>.
+ Например, приложения не могут
+ скрыть строку состояния, если они не работают в полноэкранном режиме.
+  </li>
+
+  <li>Система не учитывает изменения атрибута <code><a href=
+  "{@docRoot}guide/topics/manifest/activity-element.html#screen"
+  >android:screenOrientation</a></code>.
+  </li>
+</ul>
+
+<h3 id="change-notification">Уведомления об изменениях и запросы в многооконном режиме</h3>
+
+<p>
+  Для поддержки многооконного режима в класс {@link android.app.Activity}
+ были добавлены следующие методы. Подробнее о каждом из них см. в
+ <a href="{@docRoot}preview/setup-sdk.html#docs-dl">справочнике по N Preview SDK</a>.
+</p>
+
+<dl>
+  <dt>
+    <code>Activity.inMultiWindow()</code>
+  </dt>
+
+  <dd>
+    Вызовите этот метод, чтобы узнать, находится ли операция в многооконном режиме.
+  </dd>
+
+  <dt>
+    <code>Activity.inPictureInPicture()</code>
+  </dt>
+
+  <dd>
+    Вызовите этот метод, чтобы узнать, находится ли операция в режиме "картинка в картинке".
+
+    <p class="note">
+      <strong>Примечание.</strong> Режим "картинка в картинке" — это частный
+ случай многооконного режима. Если метод <code>myActivity.inPictureInPicture()</code>
+ возвращает значение true, <code>myActivity.inMultiWindow()</code> также возвращает
+ true.
+    </p>
+  </dd>
+
+  <dt>
+    <code>Activity.onMultiWindowChanged()</code>
+  </dt>
+
+  <dd>
+    Система вызывает этот метод, когда операция переходит в многооконный
+ режим или выходит из него. Система передает методу значение true, если
+ операция входит в многооконный режим, и значение false, если
+ она выходит из него.
+  </dd>
+
+  <dt>
+    <code>Activity.onPictureInPictureChanged()</code>
+  </dt>
+
+  <dd>
+    Система вызывает этот метод, когда операция переходит в режим
+ "картинка в картинке". Система передает методу значение true,
+ если операция входит в режим "картинка в картинке", и значение false,
+ если она выходит из него.
+  </dd>
+</dl>
+
+<p>
+  Также существуют версии {@link android.app.Fragment} для этих методов,
+например, <code>Fragment.inMultiWindow()</code>.
+</p>
+
+<h3 id="entering-pip">Переход в режим "картинка в картинке"</h3>
+
+<p>
+  Чтобы перевести операцию в режим "картинка в картинке",
+ вызовите новый метод <code>Activity.enterPictureInPicture()</code>. Этот метод игнорируется, если
+ устройство не поддерживает режим "картинка в картинке". Дополнительная информация содержится в документации 
+ <a href="picture-in-picture.html">Режим "картинка в картинке"</a>.
+</p>
+
+<h3 id="launch">Запуск новых операций в многооконном режиме</h3>
+
+<p>
+  При запуске новой операции можно сообщить системе, что окно новой
+ операции следует показать рядом с текущим, если это возможно. Для этого
+ используйте флаг
+ <code>Intent.FLAG_ACTIVITY_LAUNCH_TO_ADJACENT</code>. Этот
+ флаг запрашивает следующее поведение.
+</p>
+
+<ul>
+  <li>Если устройство находится в режиме разделения экрана, система пытается
+ создать окно новой операции рядом с окном запустившей ее операции,
+ чтобы разместить две операции на экране. Не гарантируется, что система сможет это сделать, но если
+ это возможно, операции отображаются рядом друг с другом.
+  </li>
+
+  <li>Если устройство не находится в режиме разделения экрана, этот флаг не учитывается.
+  </li>
+</ul>
+
+<p>
+  Если при запуске
+ новой операции устройство находится в режиме произвольной формы, вы можете задать размеры и позицию окна новой операции,
+ вызвав метод <code>ActivityOptions.setLaunchBounds()</code>. Этот метод игнорируется, если
+ устройство не находится в многооконном режиме.
+</p>
+
+<p class="note">
+  <strong>Примечание.</strong> Если запустить операцию в стеке задач,
+ она заменит операцию на экране, унаследовав все ее
+ свойства многооконного режима. Чтобы запустить новую операцию в отдельном
+ окне в многооконном режиме, ее следует запустить в новом стеке задач.
+</p>
+
+<h3 id="dnd">Поддержка перетаскивания</h3>
+
+<p>
+  Пользователи могут <a href="{@docRoot}guide/topics/ui/drag-drop.html">перетаскивать</a> данные
+ между окнами операций в режиме
+ совместного отображения. (Ранее перетаскивать данные можно было только в рамках
+ одной операции). Поэтому вы можете реализовать функции перетаскивания
+ в своем приложении, если оно еще их не поддерживает.
+</p>
+
+<p>
+  В N Preview SDK пакет <a href="{@docRoot}reference/android/view/package-summary.html"><code>android.view</code></a>
+ расширен для поддержки перетаскивания между приложениями. Дополнительная информация о нижеприведенных классах
+ и методах содержится в <a href="{@docRoot}preview/setup-sdk.html#docs-dl">справочнике по N
+ Preview SDK</a>.
+</p>
+
+<dl>
+  <dt>
+    <code>android.view.DropPermissions</code>
+  </dt>
+
+  <dd>
+    Объект токена для указания разрешений
+ приложению, в которое перетаскиваются данные.
+  </dd>
+
+  <dt>
+    <code>View.startDragAndDrop()</code>
+  </dt>
+
+  <dd>
+    Новый псевдоним для {@link android.view.View#startDrag View.startDrag()}. Чтобы
+ разрешить перетаскивание между операциями, передайте
+ новый флаг <code>View.DRAG_FLAG_GLOBAL</code>. Если вам нужно предоставить принимающей операции разрешения на чтение или запись URI,
+ передайте новый флаг
+ <code>View.DRAG_FLAG_GLOBAL_URI_READ</code> или
+ <code>View.DRAG_FLAG_GLOBAL_URI_WRITE</code> соответственно.
+  </dd>
+
+  <dt>
+    <code>View.cancelDragAndDrop()</code>
+  </dt>
+
+  <dd>
+    Отменяет текущую операцию перетаскивания. Этот метод может вызвать только
+ приложение, в котором была инициирована операция перетаскивания.
+  </dd>
+
+  <dt>
+    <code>View.updateDragShadow()</code>
+  </dt>
+
+  <dd>
+    Заменяет тень текущей операции перетаскивания. Этот метод может вызвать только приложение,
+ в котором была инициирована операция перетаскивания.
+  </dd>
+
+  <dt>
+    <code>Activity.requestDropPermissions()</code>
+  </dt>
+
+  <dd>
+    Запрашивает разрешения для URI контента, переданных в объекте {@link
+    android.content.ClipData} в {@link android.view.DragEvent}.
+  </dd>
+</dl>
+
+<h2 id="testing">Тестирование приложения в многооконном режиме</h2>
+
+<p>
+  Независимо от того, обновляете ли вы свое приложение для Android N, вам необходимо
+ подтвердить его поведение в многооконном
+ режиме на тот случай, если пользователь попытается запустить его в этом режиме на устройстве с Android N.
+</p>
+
+<h3 id="configuring">Настройка тестового устройства</h3>
+
+<p>
+  Если установить Android N на устройстве, режим разделения
+ экрана будет поддерживаться автоматически.
+</p>
+
+<h3 id="test-non-n">Если приложение было создано без использования N Preview SDK</h3>
+
+<p>
+  Если вы не применяли N Preview SDK для создания приложения и пользователь
+ попытается запустить его в многооконном режиме, система принудительно
+ изменит размер окна приложения, если его ориентация не зафиксирована.
+</p>
+
+<p>
+  Если для приложения не задана фиксированная ориентация, вам
+ следует запустить его на устройстве с Android N и попытаться
+ перевести его в режим разделения экрана. Убедитесь, что приложение
+ работает нормально после принудительного изменения размера.
+</p>
+
+<p>
+  Если для приложения задана фиксированная ориентация, попытайтесь
+ перевести его в многооконный режим. Убедитесь, что при этом
+ приложение остается в полноэкранном режиме.
+</p>
+
+<h3 id="test-mw">Если приложение поддерживает многооконный режим</h3>
+
+<p>
+  Если вы использовали N Preview SDK для создания приложения и не
+ отключили поддержку многооконного режима, проверьте работу
+ приложения, как описано далее, в режимах разделения экрана и произвольной формы.
+</p>
+
+<ul>
+  <li>Запустите приложение в полноэкранном режиме, а затем переключитесь
+ в многооконный режим долгим нажатием кнопки "Обзор". Убедитесь, что приложение корректно переключается между режимами.
+  </li>
+
+  <li>Запустите приложение непосредственно в многооконном режиме
+ и убедитесь, что оно работает нормально. Вы можете запустить приложение в многооконном режиме, нажав
+ кнопку "Обзор", затем длительно нажав строку заголовка приложения и
+ перетащив ее в одну из выделенных областей на экране.
+  </li>
+
+  <li>Измените размер окна приложения в режиме разделения экрана, перетащив линию разделения.
+  Убедитесь, что изменение размера не приводит к сбою и что необходимые
+ элементы интерфейса остаются видимыми.
+  </li>
+
+  <li>Если вы указали минимальные размеры окна приложения, попытайтесь
+ установить размер меньше минимального. Убедитесь в невозможности установить размер
+ меньше указанного минимума.
+  </li>
+
+  <li>Во время всех тестов следите за производительностью приложения — она должна быть приемлемой. Например,
+ убедитесь, что после изменения размера окна приложения не возникает большой
+ задержки обновления интерфейса.
+  </li>
+</ul>
+
+<h4 id="test-checklist">Контрольный список тестирования</h4>
+
+<p>
+  Для проверки производительности приложения в многооконном режиме
+ выполните следующие операции. Попытайтесь выполнить их в режиме разделения экрана и
+ в многооконном режиме, если не указано иное.
+</p>
+
+<ul>
+  <li>Перейдите в многооконный режим и выйдите из него.
+  </li>
+
+  <li>Переключитесь из своего приложения в другое приложение и убедитесь,
+ что приложение работает нормально, если оно видимо, но не активно. Например, если приложение
+ показывает видео, оно должно продолжать воспроизведение, когда
+ пользователь работает с другим приложением.
+  </li>
+
+  <li>В режиме разделения экрана попробуйте перемещать линию
+ разделения, увеличивая и уменьшая окно приложения. Попробуйте выполнить эти операции, когда окна двух
+ приложений находятся рядом и друг над другом. Убедитесь, что приложение не завершается с ошибкой,
+ необходимые элементы видны и изменение размера не занимает
+ слишком много времени.
+  </li>
+
+  <li>Быстро измените размер окна приложения несколько раз подряд. Убедитесь, что
+ приложение не зависает и не вызывает утечку памяти. Информация о проверке использования памяти
+ приложением содержится в документе <a href="{@docRoot}tools/debugging/debugging-memory.html">
+Анализ использования оперативной памяти</a>.
+  </li>
+
+  <li>Поработайте с приложением в различных оконных конфигурациях и
+ убедитесь, что оно ведет себя должным образом. Текст должен легко читаться, а
+ элементы интерфейса не должны быть слишком маленькими.
+  </li>
+</ul>
+
+<h3 id="test-disabled-mw">Если вы отключили поддержку многооконного режима</h3>
+
+<p>
+  Если вы отключили поддержку многооконного режима,
+ установив атрибут <code>android:resizableActivity="false"</code>, запустите
+ приложение на устройстве с Android N и
+  попытайтесь перевести его в режимы произвольной формы и разделения экрана. Убедитесь, что при этом
+ приложение остается в полноэкранном режиме.
+</p>
diff --git a/docs/html-intl/intl/ru/preview/features/multilingual-support.jd b/docs/html-intl/intl/ru/preview/features/multilingual-support.jd
new file mode 100644
index 0000000..f9c47d3
--- /dev/null
+++ b/docs/html-intl/intl/ru/preview/features/multilingual-support.jd
@@ -0,0 +1,214 @@
+page.title=Язык и языковой стандарт
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+<h2>Содержание документа:</h2>
+<ol>
+	  <li><a href="#preN">Сложности с разрешением языковых ресурсов</a></li>
+    <li><a href="#postN">Улучшение стратегии разрешения ресурсов</a></li>
+    <li><a href="#design">Проектирование приложения для поддержки дополнительных
+ языковых стандартов</a></li>
+
+</ol>
+
+</div>
+</div>
+
+<p>Android N обеспечивает расширенную поддержку многоязычных пользователей,
+позволяя им выбирать в настройках из нескольких языковых стандартов. Эта возможность реализована в Android N
+за счет значительного увеличения числа поддерживаемых языковых стандартов
+и изменения способа разрешения ресурсов в системе. Новый метод разрешения
+ресурсов более надежен и разработан с учетом совместимости с существующими APK. Тем не менее,
+при его использовании следует очень внимательно следить за признаками непредвиденного поведения приложения. Например, при его использовании
+следует провести тесты и убедиться, что приложение по умолчанию использует ожидаемый язык. Если
+ваше приложение поддерживает несколько языков, нужно убедиться, что поддержка работает
+ожидаемым образом. Также следует попытаться обеспечить корректную работу приложения с
+языками, поддержка которых не предусматривалась явным образом в его коде.</p>
+
+<p>В начале этого документа рассказывается о стратегии разрешения ресурсов, которая использовалась до появления
+Android N. Далее в нем описывается улучшенная стратегия
+разрешения ресурсов в Android N. В последней части документа рассказывается о том, как использовать
+дополнительные языковые стандарты для поддержки большего числа многоязычных пользователей.</p>
+
+<h2 id="preN">Сложности с разрешением языковых ресурсов</h2>
+
+<p>До выпуска Android N в Android не всегда удавалось успешно сопоставлять
+ языковые стандарты приложений и системы. Допустим, по умолчанию в вашем приложении используется английский язык
+ (США), но оно также содержит строки на испанском, локализованные в файлах ресурсов {@code es_ES}.
+</p>
+<p>В коде Java разрешение языков строк происходило следующим
+образом:</p>
+<ul>
+<li>Если на устройстве был установлен язык {@code es_MX} (испанский, Мексика), Android загружал
+строки из файлов ресурсов {@code es_ES}.</li>
+<li>Если на устройстве был установлен язык {@code en_AU}, Android возвращался к языку {@code
+en_US}. Также система использовала по умолчанию язык {@code en_US}, если пользователь выбирал язык,
+который вообще не поддерживался приложением, например, французский.</li>
+</ul>
+
+
+<p>Проблемы с разрешением возникали из-за того, что система удаляла код страны
+ из строки языкового стандарта при отсутствии точного совпадения.  Например:</p>
+<p class="table-caption" id="t-resource-res">
+<strong>Таблица 1.</strong> Разрешение ресурсов без точного совпадения языковых стандартов.
+</p>
+<table>
+<tbody>
+<tr>
+<th>Пользовательские настройки</th>
+<th>Ресурсы приложения</th>
+<th>Разрешение ресурсов</th>
+</tr>
+<tr>
+<td>fr_CH</td>
+<td>
+по умолчанию (en)<br>
+de_DE<br>
+es_ES<br>
+fr_FR<br>
+it_IT<br>
+</td>
+ <td>
+Попытка использования fr_CH =&gt; Отказ<br>
+Попытка использования fr =&gt; Отказ<br>
+Использование языка по умолчанию (en)
+</td>
+ </tr>
+ </tbody>
+</table>
+
+
+<p>В этом примере система отображает строки на английском,
+не зная, понимает ли пользователь английский язык. Такое поведение приложений сейчас довольно
+распространено. С выпуском Android N подобные ситуации
+будут возникать намного реже.</p>
+
+<h2 id="postN">Улучшение стратегии разрешения ресурсов</h2>
+<p>В Android N используется более надежная система разрешения ресурсов,
+которая автоматически находит более подходящие альтернативные варианты. Однако для ускорения процесса разрешения и упрощения
+ обслуживания ресурсы следует хранить на наиболее распространенном языке верхнего уровня.
+ Например, если вы хранили ресурсы на испанском в каталоге{@code es-US}
+, их следует переместить в каталог {@code es-419}, где содержатся ресурсы на латиноамериканском диалекте испанского языка.
+ Аналогичным образом, если вы хранили строки ресурсов в папке {@code en-GB}, вам следует изменить название папки
+ на {@code en-001} (международная версия английского языка), поскольку {@code en-001} — наиболее распространенный
+ язык верхнего уровня для строк <code>en-GB</code>.
+ В следующих примерах объясняется, почему такая практика повышает производительность и
+надежность процесса разрешения ресурсов.</p>
+
+<h3>Примеры разрешения ресурсов</h3>
+
+<p>В Android N ситуация, описанная в <strong>Таблице 1</strong>, разрешается
+иначе:</p>
+
+<p class="table-caption" id="t-improved-res">
+<strong>Таблица 2.</strong> Улучшенная стратегия разрешения при отсутствии
+точного совпадения языкового стандарта.</p>
+<table>
+<tr>
+<th>Пользовательские настройки</th>
+<th>Ресурсы приложения</th>
+<th>Разрешение ресурсов</th>
+</tr>
+<tr>
+<td><ol>
+<li> fr_CH</li>
+</ol>
+</td>
+<td>
+по умолчанию (en)<br>
+de_DE<br>
+es_ES<br>
+fr_FR<br>
+it_IT<br>
+</td>
+<td>
+Попытка использования fr_CH =&gt; Отказ<br>
+Попытка использования fr =&gt; Отказ<br>
+Попытка использования диалекта fr =&gt; fr_FR<br>
+Использование fr_FR
+</td>
+</tr>
+
+</table>
+
+
+<p>В этом примере пользователь получает ресурсы на французском языке, а не на английском. В этом примере также показано, почему для Android N
+ следует хранить строки на французском языке в каталоге {@code fr}, а не в каталоге {@code fr_FR}.
+Здесь целью разрешения является нахождение наиболее близкого диалекта верхнего уровня,
+ что ускоряет процесс разрешения и делает его более предсказуемым.</p>
+
+<p>Помимо улучшенной логики разрешения в Android добавлены
+ дополнительные языки. Рассмотрим предыдущий пример в ситуации, когда итальянский
+ указан как дополнительный язык пользователя, а приложение не поддерживает французский язык.  </p>
+
+<p class="table-caption" id="t-2d-choice">
+<strong>Таблица 3.</strong> Разрешение ресурсов в ситуации, когда приложение находит соответствие только для
+второго предпочитаемого пользователем языкового стандарта.</p>
+<table>
+<tr>
+<th>Пользовательские настройки</th>
+<th>Ресурсы приложения</th>
+<th>Разрешение ресурсов</th>
+
+</tr>
+<tr>
+<td><ol>
+<li> fr_CH</li>
+<li> it_CH</li>
+</ol>
+</td>
+<td>
+по умолчанию (en)<br>
+de_DE<br>
+es_ES<br>
+it_IT<br>
+</td>
+<td>
+Попытка использования fr_CH =&gt; Отказ<br>
+Попытка использования fr =&gt; Отказ<br>
+Попытка использования диалекта fr =&gt; Отказ<br>
+Попытка использования it_CH =&gt; Отказ<br>
+Попытка использования it =&gt; Отказ<br>
+Попытка использования диалекта it =&gt; it_IT<br>
+Использование it_IT
+</td>
+
+</tr>
+
+</table>
+<p>Пользователь получает данные на понятном ему языке, хотя приложение и не
+поддерживает французский язык.</p>
+
+
+<h2 id="design">Проектирование приложения для поддержки дополнительных языковых стандартов</h2>
+<h3>API LocaleList</h3>
+
+<p>В Android N добавлен новый API {@code LocaleList.GetDefault()},
+ позволяющий приложениям напрямую запрашивать список языков, выбранных пользователем. Этот API
+позволяет реализовать более сложное поведение
+ приложений и лучше оптимизировать отображение содержимого на экране. Например, результаты поиска
+ могут отображаться на разных языках в зависимости от пользовательских настроек.  Приложения в браузере
+ могут не предлагать пользователю перевести приложения на знакомый ему язык,
+ а приложения, использующие клавиатуру, могут автоматически включать все подходящие раскладки. </p>
+
+<h3>Средства форматирования</h3>
+
+<p>Версии Android до 6.0 включительно (уровень API 23) поддерживали только один или два языковых стандарта
+ для большинства распространенных языков
+(en, es, ar, fr, ru). Поскольку у каждого языка имелось лишь немного вариантов,
+приложения могли хранить числа и даты в виде жестко закодированных строк
+в файлах ресурсов.  Однако с расширением числа поддерживаемых Android языковых стандартов
+могут возникнуть
+значительные различия форматов даты, времени, валюты и другой подобной
+информации даже в рамках одного языкового стандарта. Жесткое кодирование форматов может запутать
+конечных пользователей.  Поэтому при разработке приложений для Android N
+следует использовать средства форматирования, а не жесткое кодирование строк с числами и датами.</p>
+
+<p>В качестве наглядного примера можно привести арабский язык, поддержка которого в Android N расширена 
+с одного {@code ar_EG} до 27 языковых стандартов. Большинство ресурсов этих языковых стандартов общие, но
+в некоторых из них используются цифры формата ASCII, а в других — собственные цифры. Например,
+если вы хотите создать предложение с числовой переменной
+"Выберите ПИН-код из 4 цифр", вам нужно использовать средства форматирования следующим образом:</p>
+
+<pre> format(locale, "Choose a %d-digit PIN", 4)</pre>
diff --git a/docs/html-intl/intl/ru/preview/features/notification-updates.jd b/docs/html-intl/intl/ru/preview/features/notification-updates.jd
new file mode 100644
index 0000000..9c7cb93
--- /dev/null
+++ b/docs/html-intl/intl/ru/preview/features/notification-updates.jd
@@ -0,0 +1,328 @@
+page.title=Уведомления
+page.tags=notifications
+helpoutsWidget=true
+page.image=/preview/images/notifications-card.png
+
+trainingnavtop=true
+
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+
+<!-- table of contents -->
+<h2>Содержание:</h2>
+<ol>
+  <li><a href="#direct">Прямой ответ</a></li>
+  <li><a href="#bundle">Группы уведомлений</a></li>
+  <li><a href="#custom">Собственные представления</a></li>
+</ol>
+
+</div>
+</div>
+
+<p>В Android N представлено несколько новых API-интерфейсов, позволяющих
+публиковать заметные и интерактивные уведомления.</p>
+
+<p>Существующий API-интерфейс уведомлений {@link android.support.v4.app.RemoteInput}
+в Android N расширен для поддержки внутренних ответов на смартфонах. С помощью этой возможности
+ пользователи могут быстро отвечать на сообщения в панели уведомлений, не открывая приложение.</p>
+
+<p>
+  Android N также позволяет группировать несколько похожих
+  уведомлений, чтобы они отображались как одно. Для этого в Android N используется существующий метод {@link
+  android.support.v4.app.NotificationCompat.Builder#setGroup
+  NotificationCompat.Builder.setGroup()}. Пользователи могут развернуть все
+  уведомления и выполнить различные действия, например ответить на сообщение
+  или закрыть каждое из уведомлений по отдельности в панели уведомлений.
+</p>
+
+<p>Наконец, в Android N представлены новые API-интерфейсы, позволяющие
+использовать системные элементы в собственных представлениях уведомлений вашего приложения. Благодаря им
+уведомления отображаются единообразно на основе
+стандартных шаблонов.</p>
+
+<p>В этом документе рассматриваются некоторые наиболее важные изменения,
+ которые следует учитывать при использовании новых уведомлений в приложениях.</p>
+
+<h2 id="direct">Прямой ответ</h2>
+
+<p>С помощью прямых ответов пользователи
+ Android N могут быстро отвечать на текстовые сообщения и обновлять списки задач непосредственно в интерфейсе
+уведомлений. На мобильных устройствах действие внутреннего ответа обозначается
+ как дополнительная кнопка в уведомлении. Если пользователь набирает ответ на клавиатуре, система
+ прикрепляет текст ответа к намерению,
+ указанному для действия уведомления, и передает намерение в ваше
+ приложение.
+
+
+<img id="fig-reply-button" src="{@docRoot}preview/images/inline-reply.png" srcset="{@docRoot}preview/images/inline-reply.png 1x,
+  {@docRoot}preview/images/inline-reply_2x.png 2x" width="400">
+<p class="img-caption">
+  <strong>Рисунок 1.</strong> В Android N добавлена кнопка <strong>Reply</strong>.
+
+</p>
+
+<h3>Добавление действий внутренних ответов</h3>
+
+<p>Создание действия уведомления, которое поддерживает прямой ответ:
+</p>
+
+<ol>
+<li>Создайте экземпляр класса {@link android.support.v4.app.RemoteInput.Builder},
+ который можно добавить в действие
+уведомления. Конструктор класса принимает строку, которую система использует как
+ ключ для введенного текста. Потом ваше приложение использует этот ключ для получения
+ текста.
+
+<pre>
+// Key for the string that's delivered in the action's intent
+private static final String KEY_TEXT_REPLY = "key_text_reply";
+String replyLabel = getResources().getString(R.string.reply_label);
+RemoteInput remoteInput = new RemoteInput.Builder(KEY_TEXT_REPLY)
+        .setLabel(replyLabel)
+        .build();
+</pre>
+</li>
+<li>Прикрепите объект {@link android.support.v4.app.RemoteInput}
+ к действию с помощью метода <code>addRemoteInput()</code>.
+
+<pre>
+// Create the reply action and add the remote input
+Notification.Action action =
+        new Notification.Action.Builder(R.drawable.ic_reply_icon,
+                getString(R.string.label), replyPendingIntent)
+                .addRemoteInput(remoteInput)
+                .build();
+</pre>
+</li>
+
+<li>Примените действие к уведомлению и отправьте его.
+
+<pre>
+// Build the notification and add the action
+Notification notification =
+        new Notification.Builder(mContext)
+                .setSmallIcon(R.drawable.ic_message)
+                .setContentTitle(getString(R.string.title))
+                .setContentText(getString(R.string.content))
+                .addAction(action))
+                .build();
+
+// Issue the notification
+NotificationManager notificationManager =
+        NotificationManager.from(mContext);
+notificationManager.notify(notificationId, notification);
+
+</pre>
+</li>
+
+</ol>
+
+
+<p> Система запрашивает у пользователя ввод ответа, если он инициирует
+действие уведомления. </p>
+
+<img id="fig-user-input" src="{@docRoot}preview/images/inline-type-reply.png" srcset="{@docRoot}preview/images/inline-type-reply.png 1x,
+    {@docRoot}preview/images/inline-type-reply_2x.png 2x" width="300">
+<p class="img-caption">
+  <strong>Рисунок 2.</strong> Пользователь вводит текст в панели уведомлений.
+</p>
+
+<h3>Получение введенного пользователем текста из внутреннего ответа</h3>
+
+<p>Получение введенного пользователем текста из интерфейса
+уведомлений в операции, объявленной в намерении действия:</p>
+<ol>
+<li> Вызовите метод {@link android.support.v4.app.RemoteInput#getResultsFromIntent
+  getResultsFromIntent()}, передав намерение действия уведомления
+ в качестве входного параметра. Этот метод возвращает объект {@link android.os.Bundle},
+ содержащий текст ответа.
+</li>
+
+<pre>
+Bundle remoteInput = RemoteInput.getResultsFromIntent(intent);
+</pre>
+
+<li>Запросите группу, используя ключ результата (предоставленный конструктору {@link
+  android.support.v4.app.RemoteInput.Builder}).
+</li>
+</ol>
+
+<p>В следующем фрагменте кода показано, как метод извлекает введенный
+текст из группы:</p>
+
+<pre>
+// Obtain the intent that started this activity by calling
+// Activity.getIntent() and pass it into this method to
+// get the associated string.
+
+private CharSequence getMessageText(Intent intent) {
+    Bundle remoteInput = RemoteInput.getResultsFromIntent(intent);
+    if (remoteInput != null) {
+            return remoteInput.getCharSequence(KEY_TEXT_REPLY);
+            }
+    return null;
+ }
+</pre>
+
+<p>Приложения могут применять логику, чтобы определить, какие действия следует выполнить с полученным
+текстом.
+Для интерактивных приложений (например, чатов) предоставьте больше контекста в самом уведомлении
+ (например, несколько строк истории чата, в том числе собственные сообщения пользователя),
+ чтобы у пользователя было достаточно информации для ответа.
+Когда пользователь отвечает через {@link android.support.v4.app.RemoteInput},
+ добавьте текст в историю ответов, применив метод {@code setRemoteInputHistory()}.
+</p>
+
+<h2 id="bundle">Группы уведомлений</h2>
+
+<p>Android N предоставляет разработчикам новый способ отображения
+ очереди уведомлений: <i>группы уведомлений</i>. Они похожи на
+  <a href="{@docRoot}training/wearables/notifications/stacks.html">стеки
+ уведомлений</a> в Android Wear. Например, если приложение создает уведомления
+ для входящих сообщений и получено несколько сообщений, объедините
+ уведомления в одну группу. Для группировки похожих уведомлений используйте
+ существующий метод {@link android.support.v4.app.NotificationCompat.Builder#setGroup
+Builder.setGroup()}.</p>
+
+<p>
+  Уведомления в группе формируют иерархию,
+  на вершине которой находится родительское уведомление, отображающее
+ сводную информацию о группе. Пользователь может постепенно
+ раскрывать группу уведомлений, при этом система показывает дополнительные
+  сведения. Если пользователь раскрывает группу, система отображает больше
+ информации о всех дочерних уведомлениях. Если же пользователь
+ развернет одно из уведомлений, его содержимое показывается полностью.
+</p>
+
+<img id="fig-bundles" src="{@docRoot}preview/images/bundles.png" srcset="{@docRoot}preview/images/bundles.png 1x,
+          {@docRoot}preview/images/bundles_2x.png 2x" width="300">
+<p class="img-caption">
+  <strong>Рисунок 3.</strong> Пользователь может постепенно раскрывать группу уведомлений.
+
+</p>
+
+<p>Добавление уведомлений в группу описано в разделе 
+<a href="{@docRoot}training/wearables/notifications/stacks.html#AddGroup">Добавление
+каждого уведомления в группу</a>.</p>
+
+
+<h3 id="best-practices">Рекомендации по работе с группами уведомлений</h3>
+<p>В этом разделе описываются рекомендации по использованию групп
+уведомлений вместо уведомлений {@link android.app.Notification.InboxStyle InboxStyle},
+ которые были доступны в предыдущих версиях платформы
+ Android.</p>
+
+<h3>Ситуации, в которых следует использовать группы уведомлений</h3>
+
+<p>Вам следует использовать группы уведомлений, только если выполняются
+все следующие условия.</p>
+
+<ul>
+  <li>Дочерние уведомления являются полноценными уведомлениями, которые можно
+ показать отдельно без сводной информации о группе.</li>
+  <li>Отображение дочерних уведомлений по отдельности имеет смысл. Например:
+
+  </li>
+  <ul>
+    <li>в дочерних уведомлениях можно выполнять какие-либо соответствующие им действия;</li>
+    <li>дочернему уведомлению предшествует больше информации, чем требуется пользователю.</li>
+  </ul>
+</ul>
+
+<p>Примером использования групп уведомлений может служить приложение
+для обмена сообщениями, которое показывает список входящих сообщений,
+или почтовое приложение, отображающее список полученных писем.</p>
+
+<p>
+К примерам ситуаций, когда предпочтительнее использовать одно
+ уведомление, относятся отдельные сообщения от одного пользователя или
+ списочное представление однострочных текстовых элементов. Для них можно использовать
+{@link android.app.Notification.InboxStyle InboxStyle} или
+{@link android.app.Notification.BigTextStyle BigTextStyle}.
+
+</p>
+
+<h3 id ="post">Отображение группы уведомлений</h3>
+
+<p>
+  Приложение всегда должно публиковать сводную информацию группы, даже если эта группа содержит
+ всего одно дочернее уведомление. В этом случае система не показывает сводную информацию, а
+ непосредственно отображает это уведомление. Это обеспечивает
+ единообразие интерфейса при
+ пролистывании дочернего элемента группы.
+</p>
+
+<p class="note">
+  <strong>Примечание.</strong> Эта версия Android N пока еще не
+ блокирует отображение сводной информации для групп уведомлений, содержащих только один дочерний элемент. Эта
+ возможность будет добавлена в следующих версиях Android N.
+</p>
+
+<h3>Всплывающие уведомления</h3>
+
+<p>Хотя система обычно отображает дочерние уведомления в виде группы,
+ их можно временно показывать в виде
+ <a href="{@docRoot}guide/topics/ui/notifiers/notifications.html#Heads-up">всплывающих
+уведомлений</a>. Эта возможность очень удобна, так как позволяет
+ быстро получить доступ к последнему дочернему уведомлению и связанным с ним действиям.
+</p>
+
+
+<h3>Обратная совместимость</h3>
+
+<p>
+  И группы уведомлений, и удаленный ввод входили в состав API {@link
+  android.app.Notification} для поддержки устройств
+ Android Wear, начиная с Android 5.0 (уровень API 21). Если вы уже использовали эти API-интерфейсы для создания уведомлений,
+ вам нужно только убедиться, что поведение приложения соответствует
+ описанным выше рекомендациям, и рассмотреть возможность реализации {@code
+  setRemoteInputHistory()}.
+</p>
+
+<p>
+  Для поддержки обратной совместимости те же API-интерфейсы доступны в
+ классе {@link android.support.v4.app.NotificationCompat}
+ вспомогательной библиотеки, что позволяет реализовать уведомления, работающие в предыдущих версиях Android.
+ На смартфонах и планшетах пользователи видят только сводное уведомление,
+ поэтому в приложении все равно должно быть уведомление
+ в стиле Inbox или аналогичное уведомление, содержащее всю информацию о группе. Так как устройства Android
+Wear позволяют пользователям видеть все дочерние уведомления даже
+ на более ранних уровнях платформы, эти уведомления следует создавать независимо от уровня API.
+
+</p>
+
+<h2 id="custom"> Собственные представления</h2>
+<p>Начиная с Android N, вы можете настраивать представления уведомлений
+и по-прежнему получать системные элементы, такие как заголовки уведомлений, действия и
+расширяемые макеты.</p>
+
+<p>Для этого в Android N добавлены следующие API-интерфейсы, позволяющие
+ настраивать собственные представления.</p>
+
+<dl>
+<dt>
+{@code DecoratedCustomViewStyle()}</dt>
+<dd> Определяет стиль для всех уведомлений, кроме
+уведомлений мультимедиа.</dd>
+<dt>
+{@code DecoratedMediaCustomViewStyle()}</dt>
+<dd> Определяет стиль для уведомлений мультимедиа.</dd>
+</dl>
+
+<p>Чтобы воспользоваться этим новым API-интерфейсом, вызовите метод {@code setStyle()}, передав в него
+нужный стиль собственного представления.</p>
+
+<p>В этом фрагменте показано, как создать собственный объект уведомления с помощью метода
+{@code DecoratedCustomViewStyle()}.</p>
+
+<pre>
+Notification noti = new Notification.Builder()
+           .setSmallIcon(R.drawable.ic_stat_player)
+           .setLargeIcon(albumArtBitmap))
+           .setCustomContentView(contentView);
+           .setStyle(new Notification.DecoratedCustomViewStyle())
+           .build();
+
+</pre>
diff --git a/docs/html-intl/intl/ru/preview/features/picture-in-picture.jd b/docs/html-intl/intl/ru/preview/features/picture-in-picture.jd
new file mode 100644
index 0000000..5be0bff
--- /dev/null
+++ b/docs/html-intl/intl/ru/preview/features/picture-in-picture.jd
@@ -0,0 +1,186 @@
+page.title=Режим "картинка в картинке"
+page.keywords=preview,sdk,PIP,Picture-in-picture
+page.tags=androidn
+
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+
+<h2>Содержание документа</h2>
+<ol>
+  <li><a href="#declaring">Декларация поддержки операцией режима
+"картинка в картинке"</a></li>
+  <li><a href="#pip_button">Переключение операции в режим "картинка в картинке"</a>
+</li>
+  <li><a href="#handling_ui">Работа пользовательского интерфейса в режиме "картинка в картинке"</a>
+</li>
+  <li><a href="#continuing_playback">Продолжение воспроизведения видео в режиме
+"картинка в картинке"</a></li>
+  <li><a href="#best">Советы и рекомендации</a></li>
+</ol>
+
+<h2>См. также:</h2>
+<ol>
+  <li><a href="{@docRoot}preview/features/multi-window.html">Поддержка
+многооконного режима</a></li>
+</ol>
+
+</div>
+</div>
+
+<p>В Android N пользователи Android TV могут смотреть видео
+в закрепленном окне в углу экрана во время работы в
+приложениях. Режим "картинка в картинке" (PIP) позволяет приложениям отображать видео
+в закрепленном окне одновременно с выполнением другой операции
+фоновом режиме. Окно PIP обеспечивает возможность многозадачности внутри вашего приложения, что
+повышает продуктивность работы пользователей.</p>
+
+<p>Ваше приложение может определить момент активации режима PIP. Ниже приведено несколько примеров
+моментов перехода в режим PIP:</p>
+
+<ul>
+<li>Ваше приложение может перевести видео в режим PIP, когда пользователь переходит
+от видео к просмотру другого контента.</li>
+<li>Ваше приложение может переключить видео в режим PIP, когда пользователь смотрит конец
+эпизода контента. На основном экране отображается рекламная или сводная информация
+о следующем эпизоде серии.</li>
+<li>Ваше приложение может предоставить пользователям возможность добавлять в очередь дополнительный контент при
+просмотре видео. В режиме PIP видео продолжает воспроизводиться, когда на основном
+экране отображается операция выбора контента.</li>
+</ul>
+
+<p>Окно PIP имеет размеры 240x135 dp и отображается на самом верхнем слое в одном из
+четырех углов экрана по выбору системы. Пользователь может вызвать
+меню PIP, позволяющее переключать окно PIP в полноэкранный режим, или закрыть окно
+PIP долгим нажатием кнопки <b>Home</b> на пульте дистанционного управления. Если на главном экране начнется воспроизведение другого
+видео, окно PIP автоматически
+закроется. Пользователи также могут закрыть окно PIP, используя экран последних задач.</p>
+
+<img src="{@docRoot}preview/images/pip-active.png" />
+<p class="img-caption"><strong>Рисунок 1.</strong> Видео в режиме "картинка в картинке"
+ отображается в углу экрана, пока пользователь просматривает
+контент на главном экране.</p>
+
+<p>Режим PIP использует многооконные API-интерфейсы в Android N для
+отображения закрепленного окна с видео на верхнем слое. Чтобы добавить в приложение функцию PIP, вам нужно зарегистрировать
+операции, поддерживающие PIP, добавить необходимые переключения операции в режим PIP,
+а также обеспечить скрытие элементов пользовательского интерфейса и воспроизведение видео в то время, когда
+операция находится в режиме PIP.</p>
+
+<h2 id="declaring">Декларация поддержки операцией режима "картинка в картинке"</h2>
+
+<p>По умолчанию в системе отсутствует автоматическая поддержка режима PIP для приложений.
+Если вы хотите, чтобы ваше приложение поддерживало режим PIP, зарегистрируйте операцию
+воспроизведения видео в манифесте приложения, установив для параметров
+<code>android:supportsPictureInPicture</code> и
+<code>android:resizeableActivity</code> значение <code>true</code>. Также укажите, что
+ваша операция обрабатывает изменения конфигурации макета экрана, чтобы эта операция не
+запускалась заново в случае изменения макета при переходах в режиме PIP.</p>
+
+<pre>
+&lt;activity android:name="VideoActivity"
+    android:resizeableActivity="true"
+    android:supportsPictureInPicture="true"
+    android:configChanges=
+        "screenSize|smallestScreenSize|screenLayout|orientation"
+    ...
+</pre>
+
+<p>При регистрации операции помните, что в режиме PIP она
+отображается в небольшом наложенном окне на экране телевизора. Для пользователей наиболее удобны операции
+воспроизведения видео с минимальным пользовательским интерфейсом. Операции
+с небольшими элементами пользовательского интерфейса могут оказаться неудобными для пользователей
+в режиме PIP, потому что в окне PIP пользователи
+не видят деталей этих элементов.</p>
+
+<h2 id="pip_button">Переключение операции в режим "картинка в картинке"</h2>
+
+Если вам нужно переключить операцию в режим PIP, вызовите метод
+<code>Activity.enterPictureInPicture()</code>. В следующем примере показано переключение
+в режим PIP, когда пользователь нажимает кнопку PIP на панели
+управления мультимедиа:</p>
+
+<pre>
+&#64;Override
+public void onActionClicked(Action action) {
+    if (action.getId() == R.id.lb_control_picture_in_picture) {
+        getActivity().enterPictureInPicture();
+        return;
+    }
+    ...
+</pre>
+
+<p>Добавление кнопки PIP на панель управления мультимедиа позволяет пользователям легко переключаться
+в режим PIP с сохранением возможностей управления воспроизведением видео.</p>
+
+<img src="{@docRoot}preview/images/pip-button.png" />
+<p class="img-caption"><strong>Рисунок 1.</strong> Кнопка режима "картинка в картинке"
+на панели управления мультимедиа.</p>
+
+<p>В Android N входит новый класс
+<code>PlaybackControlsRow.PictureInPictureAction</code>, который определяет действия PIP
+на панели управления и использует значок PIP.</p>
+
+<h2 id="handling_ui">Работа пользовательского интерфейса в режиме "картинка в картинке"</h2>
+
+<p>Когда операция переходит в режим PIP, она должна отображать только воспроизведение
+видео. Уберите элементы пользовательского интерфейса перед переходом операции в режим PIP
+и восстановите их после возвращения операции в полноэкранный режим.
+Переопределите <code>Activity.onPictureInPictureChanged()</code> или
+<code>Fragment.onPictureInPictureChanged()</code> и включайте или
+отключайте элементы пользовательского интерфейса по мере необходимости, например:</p>
+
+<pre>
+&#64;Override
+public void onPictureInPictureChanged(boolean inPictureInPicture) {
+    if (inPictureInPicture) {
+        // Hide the controls in picture-in-picture mode.
+        ...
+    } else {
+        // Restore the playback UI based on the playback status.
+        ...
+    }
+}
+</pre>
+
+<h2 id="continuing_playback">Продолжение воспроизведения видео в режиме
+"картинка в картинке"</h2>
+
+<p>Когда операция переключается в режим PIP, система видит ее в состоянии
+паузы и вызывает метод <code>onPause()</code> этой операции. При этом воспроизведение видео
+должно продолжаться без паузы, если операция
+приостановлена в режиме PIP. Проверьте режим PIP в методе
+<code>onPause()</code> своей операции и обеспечьте обработку воспроизведения соответствующим образом,
+например:</p>
+
+<pre>
+&#64;Override
+public void onPause() {
+    // If called due to PIP, do not pause playback
+    if (inPictureInPicture()) {
+        // Continue playback
+        ...
+    }
+    // If paused but not in PIP, pause playback if necessary
+    ...
+}
+</pre>
+
+<p>Когда операция возвращается из режима PIP в полноэкранный режим, система
+возобновляет выполнение операции и вызывает метод<code>onResume()</code> вашего приложения.</p>
+
+<h2 id="best">Советы и рекомендации</h2>
+
+<p>Режим PIP предназначается для операций, воспроизводящих видео в полноэкранном режиме. При переключении
+операции в режим PIP следует избегать отображения любых элементов, кроме видео.
+Отслеживайте моменты перехода операции в режим PIP и скрывайте элементы пользовательского интерфейса, как описано в
+разделе <a href="#handling_ui">Работа пользовательского интерфейса в режиме "картинка в картинке"</a>.</p>
+
+<p>Поскольку окно PIP отображается в виде плавающего окна в углу экрана,
+следует избегать отображения критически важной информации на основном экране
+в любой области, которая может быть закрыта окном PIP.</p>
+
+<p>По умолчанию фокус ввода не переключается на операцию, которая находится в режиме PIP. Для
+получения событий ввода в режиме PIP следует использовать
+<code>MediaSession.setMediaButtonReceiver()</code>.</p>
diff --git a/docs/html-intl/intl/ru/preview/features/scoped-folder-access.jd b/docs/html-intl/intl/ru/preview/features/scoped-folder-access.jd
new file mode 100644
index 0000000..a39230c
--- /dev/null
+++ b/docs/html-intl/intl/ru/preview/features/scoped-folder-access.jd
@@ -0,0 +1,124 @@
+page.title=Доступ к выделенным каталогам
+page.keywords=preview,sdk,scoped directory access
+page.tags=androidn
+
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+  <h2>Содержание документа</h2>
+  <ol>
+    <li><a href="#accessing">Доступ к каталогу во внешнем хранилище</a></li>
+    <li><a href="#removable">Доступ к каталогу на съемном носителе</a></li>
+    <li><a href="#best">Советы и рекомендации</a></li>
+  </ol>
+</div>
+</div>
+
+<p>Некоторым приложениям (например, фотоприложениям) обычно требуется доступ только к отдельным каталогам
+внешнего хранилища, например, к каталогу <code>Pictures</code>. Существующие
+методы доступа к внешним хранилищам не предназначены для обеспечения приложениям такого типа удобного
+доступа к выделенным каталогам. Например:</p>
+
+<ul>
+<li>Запросы {@link android.Manifest.permission#READ_EXTERNAL_STORAGE}
+или {@link android.Manifest.permission#WRITE_EXTERNAL_STORAGE} в манифесте
+разрешают доступ ко всем общедоступным каталогам внешнего хранилища, хотя
+вашему приложению может не требоваться такой уровень доступа.</li>
+<li>При использовании инфраструктуры
+<a href="{@docRoot}guide/topics/providers/document-provider.html">Storage
+Access Framework</a> пользователь обычно выбирает каталоги через
+системный пользовательский интерфейс, что не требуется, если приложение всегда использует один
+и тот же внешний каталог.</li>
+</ul>
+
+<p>Android N предоставляет новый упрощенный API для доступа
+к распространенным каталогам внешнего хранилища. </p>
+
+<h2 id="accessing">Доступ к каталогу во внешнем хранилище</h2>
+
+<p>Используйте класс <code>StorageManager</code> для получения соответствующего экземпляра
+<code>StorageVolume</code>. Затем создайте намерение, вызвав метод
+<code>StorageVolume.createAccessIntent()</code> этого экземпляра.
+Используйте это намерение для доступа к каталогам внешнего хранилища. Чтобы получить список
+всех доступных томов, в том числе томов на съемных носителях, используйте
+<code>StorageManager.getVolumesList()</code>.</p>
+
+<p>В следующем фрагменте кода приведен пример того, как открывать каталог
+<code>Pictures</code> в главном общем хранилище:</p>
+
+<pre>
+StorageManager sm = (StorageManager)getSystemService(Context.STORAGE_SERVICE);
+StorageVolume volume = sm.getPrimaryVolume();
+Intent intent = volume.createAccessIntent(Environment.DIRECTORY_PICTURES);
+startActivityForResult(intent, request_code);
+</pre>
+
+<p>Система пытается предоставить доступ к внешнему каталогу и, при необходимости,
+запрашивает подтверждение доступа у пользователя с помощью упрощенного пользовательского интерфейса:</p>
+
+<img src="{@docRoot}preview/images/scoped-folder-access-framed.png" srcset="{@docRoot}preview/images/scoped-folder-access-framed.png 1x,
+{@docRoot}preview/images/scoped-folder-access-framed_2x.png 2x" />
+<p class="img-caption"><strong>Рисунок 1.</strong> Приложение запрашивает
+доступ к каталогу Pictures.</p>
+
+<p>Если пользователь предоставляет доступ, система вызывает переопределенный метод
+<code>onActivityResult()</code> с кодом результата
+<code>Activity.RESULT_OK</code>, а также данные намерения, содержащие URI. Используйте
+предоставленный URI для доступа к данным каталога аналогично использованию URI,
+возвращаемых
+<a href="{@docRoot}guide/topics/providers/document-provider.html">Storage
+Access Framework</a>.</p>
+
+<p>Если пользователь не предоставляет доступ, система вызывает переопределенный метод
+<code>onActivityResult()</code> с кодом результата
+<code>Activity.RESULT_CANCELED</code> и отсутствующими данными намерения.</p>
+
+<p class="note"><b>Примечание.</b> При получении доступа к определенному внешнему каталогу
+приложение также получает доступ к вложенным в него каталогам.</p>
+
+<h2 id="removable">Доступ к каталогу на съемном носителе</h2>
+
+<p>Чтобы использовать доступ к выделенным каталогам на съемном носителе,
+сначала нужно добавить объект {@link android.content.BroadcastReceiver}, отслеживающий уведомления
+{@link android.os.Environment#MEDIA_MOUNTED}, например:</p>
+
+<pre>
+&lt;receiver
+    android:name=".MediaMountedReceiver"
+    android:enabled="true"
+    android:exported="true" &gt;
+    &lt;intent-filter&gt;
+        &lt;action android:name="android.intent.action.MEDIA_MOUNTED" /&gt;
+        &lt;data android:scheme="file" /&gt;
+    &lt;/intent-filter&gt;
+&lt;/receiver&gt;
+</pre>
+
+<p>Когда пользователь подключает съемный носитель, например SD-карту, система отправляет уведомление
+{@link android.os.Environment#MEDIA_MOUNTED}. Это уведомление
+предоставляет в данных намерения объект <code>StorageVolume</code>, который вы можете использовать
+для доступа к каталогам на съемном носителе. В следующем примере показано,
+как осуществляется доступ к каталогу <code>Pictures</code> на съемном носителе:</p>
+
+<pre>
+// BroadcastReceiver has already cached the MEDIA_MOUNTED
+// notification Intent in mediaMountedIntent
+StorageVolume volume = (StorageVolume)
+    mediaMountedIntent.getParcelableExtra(StorageVolume.EXTRA_STORAGE_VOLUME);
+volume.createAccessIntent(Environment.DIRECTORY_PICTURES);
+startActivityForResult(intent, request_code);
+</pre>
+
+<h2 id="best">Советы и рекомендации</h2>
+
+<p>По возможности оставляйте постоянный URI для доступа к внешнему каталогу, чтобы приложению не
+приходилось многократно запрашивать у пользователя разрешение на доступ. После предоставления доступа пользователем вызовите метод 
+<code>getContentResolver().takePersistableUriPermssion()</code> для
+URI доступа к каталогу. Система сохранит постоянный URI и при последующих запросах
+доступа будет возвращать ответ <code>RESULT_OK</code>. Таким образом, приложение не будет постоянно выводить
+окно с запросом подтверждения пользователя.</p>
+
+<p>Если пользователь запрещает доступ к внешнему каталогу, не нужно сразу
+же запрашивать доступ повторно. Пользователю может не понравиться, если приложение будет постоянно настаивать на
+получении доступа.</p>
diff --git a/docs/html-intl/intl/ru/preview/features/security-config.jd b/docs/html-intl/intl/ru/preview/features/security-config.jd
new file mode 100644
index 0000000..ff3494f
--- /dev/null
+++ b/docs/html-intl/intl/ru/preview/features/security-config.jd
@@ -0,0 +1,744 @@
+page.title=Конфигурация сетевой безопасности
+page.keywords=preview,security,network
+
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+
+<h2>Содержание документа</h2>
+<ol>
+  <li><a href="#manifest">Добавление файла конфигурации безопасности</a></li>
+  <li><a href="#CustomTrust">Настройка доверенных ЦС</a>
+      <ol>
+      <li><a href="#ConfigCustom">Настройка доверенного пользовательского ЦС</a></li>
+      <li><a href="#LimitingCas">Ограничение набора доверенных ЦС</a></li>
+      <li><a href="#TrustingAdditionalCas">Добавление дополнительных ЦС в доверенные</a></li>
+      </ol>
+  </li>
+  <li><a href="#TrustingDebugCa">ЦС для отладки</a></li>
+  <li><a href="#UsesCleartextTraffic">Отказ от передачи данных открытым текстом</a></li>
+  <li><a href="#CertificatePinning">Прикрепление сертификатов</a></li>
+  <li><a href="#ConfigInheritance">Поведение при наследовании конфигурации</a></li>
+  <li><a href="#FileFormat">Формат файла конфигурации</a></li>
+</ol>
+</div>
+</div>
+
+
+<p>
+  В Android N имеется функция "Конфигурация сетевой безопасности",
+ позволяющая приложениям настраивать свои параметры сетевой безопасности в защищенном
+ декларативном файле конфигурации без изменения программного кода приложения. Эти параметры можно
+ настроить для определенных областей и приложений. Основные
+ возможности этой функции:
+</p>
+
+<ul>
+  <li>
+    <b>Пользовательские якоря доверия.</b> Настройка доверенных центров сертификации (ЦС)
+ для защищенных соединений приложения. Примером может служить
+ настройка доверия определенным самозаверенным сертификатам или ограничение
+ набора общих ЦС, которым доверяет приложение.
+  </li>
+
+  <li>
+    <b>Замена при отладке.</b> Безопасная отладка защищенных соединений приложения
+ без дополнительного риска для установленной базы.
+  </li>
+
+  <li>
+    <b>Отказ от передачи данных открытым текстом.</b> Защита приложений от
+ случайной передачи данных открытым текстом.
+  </li>
+
+  <li>
+    <b>Прикрепление сертификатов.</b> Ограничение защищенных соединений приложения
+ определенными сертификатами.
+  </li>
+</ul>
+
+
+<h2 id="manifest">Добавление файла конфигурации безопасности</h2>
+
+<p>
+  Функция конфигурации сетевой безопасности использует файл XML, где вы можете указать
+ настройки своего приложения. Вы должны включить в манифест своего приложения
+ запись, указывающую на этот файл. В следующем отрывке кода из манифеста
+ показано, как создать такую запись:
+</p>
+
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?&gt;
+...
+&lt;app ...&gt;
+    &lt;meta-data android:name="android.security.net.config"
+               android:resource="@xml/network_security_config" /&gt;
+    ...
+&lt;/app&gt;
+</pre>
+
+<h2 id="CustomTrust">Настройка доверенных ЦС</h2>
+
+<p>
+  Приложению может потребоваться возможность доверять пользовательскому набору центров сертификации (ЦС) вместо набора ЦС платформы, установленного по умолчанию.
+ Наиболее распространенные причины:
+</p>
+
+<ul>
+  <li>Подключение к узлу с пользовательским ЦС (самозаверенным,
+ внутренним корпоративным ЦС и т. д.)
+  </li>
+
+  <li>Ограничение списка только доверенными ЦС вместо
+ предустановленных.
+  </li>
+
+  <li>Добавление дополнительных ЦС, не установленных в системе, в список доверенных.
+  </li>
+</ul>
+
+<p>
+  По умолчанию защищенные соединения всех приложений (например, TLS, HTTPS) доверяют
+  предустановленным системным ЦС, а приложения для API уровня 23
+ (Android M) и ниже также по умолчанию доверяют ЦС, добавленным пользователем. Приложение
+ может настраивать свои соединения, используя {@code base-config} (для
+ настройки на уровне приложения) или {@code domain-config} (для настройки на уровне
+ доменов).
+</p>
+
+
+<h3 id="ConfigCustom">Настройка пользовательского ЦС</h3>
+
+<p>
+  Предположим, вы хотите подключиться к своему узлу, использующему самозаверенный сертификат SSL,
+ или к узлу, чей сертификат SSL был выпущен закрытым ЦС,
+ которому вы доверяете, например внутренним ЦС вашей компании.
+</p>
+
+<p>
+  <code>res/xml/network_security_config.xml</code>:
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?&gt;
+&lt;network-security-config&gt;
+    &lt;domain-config&gt;
+        &lt;domain includeSubdomains="true"&gt;example.com&lt;/domain&gt;
+        &lt;trust-anchors&gt;
+            &lt;certificates src="@raw/my_ca"/&gt;
+        &lt;/trust-anchors&gt;
+    &lt;/domain-config&gt;
+&lt;/network-security-config&gt;
+</pre>
+</p>
+
+<p>
+  Добавьте самозаверенный сертификат или сертификат закрытого ЦС в формате PEM или DER в 
+ {@code res/raw/my_ca}.
+</p>
+
+
+<h3 id="LimitingCas">Ограничение набора доверенных ЦС</h3>
+
+<p>
+  Если приложению не нужно доверять всем ЦС, которым доверяет система, для него
+ можно указать сокращенный набор доверенных ЦС. Это позволит защитить
+ приложение от поддельных сертификатов, выпущенных любыми другими ЦС.
+</p>
+
+<p>
+  Настройка ограниченного набора доверенных ЦС похожа на <a href="#TrustingACustomCa">настройку доверия пользовательскому ЦС</a> для определенного домена, за тем исключением,
+ что в ресурсе указывается несколько ЦС.
+</p>
+
+<p>
+<code>res/xml/network_security_config.xml</code>:
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?&gt;
+&lt;network-security-config&gt;
+    &lt;domain-config&gt;
+        &lt;domain includeSubdomains="true"&gt;secure.example.com&lt;/domain&gt;
+        &lt;domain includeSubdomains="true"&gt;cdn.example.com&lt;/domain&gt;
+        &lt;trust-anchors&gt;
+            &lt;certificates src="@raw/trusted_roots"/&gt;
+        &lt;/trust-anchors&gt;
+    &lt;/domain-config&gt;
+&lt;/network-security-config&gt;
+</pre>
+</p>
+
+<p>
+  Добавьте список доверенных ЦС в формате PEM или DER в {@code res/raw/trusted_roots}.
+  Обратите внимание, что файл в формате PEM должен содержать <em>только</em> данные PEM
+ без какого-либо дополнительного текста. Вы также можете указать несколько элементов
+ <a href="#certificates"><code>&lt;certificates&gt;</code></a>
+вместо одного.
+</p>
+
+
+<h3 id="TrustingAdditionalCas">
+  Добавление дополнительных ЦС в доверенные
+</h3>
+
+<p>
+  Приложению может потребоваться доверять дополнительным ЦС, которые не входят в список доверенных ЦС системы.
+ Это может быть связано с тем, что эти ЦС еще не добавлены в систему или
+ не соответствуют требованиям для включения в систему Android. Приложение
+ может добавить такие ЦС в доверенные, указав несколько источников сертификатов для
+ конфигурации.
+</p>
+<p>
+<code>res/xml/network_security_config.xml</code>:
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?&gt;
+&lt;network-security-config&gt;
+    &lt;base-config&gt;
+        &lt;trust-anchors&gt;
+            &lt;certificates src="@raw/extracas"/&gt;
+            &lt;certificates src="system"/&gt;
+        &lt;/trust-anchors&gt;
+    &lt;/base-config&gt;
+&lt;/network-security-config&gt;
+</pre>
+</p>
+
+
+<h2 id="TrustingDebugCa">Настройка конфигурации ЦС для отладки</h2>
+
+<p>
+  При отладке приложения, которое использует для подключения протокол HTTPS, вам может потребоваться
+ подключение к локальному серверу разработки, у которого нет сертификата SSL
+ для рабочего сервера. Чтобы выполнить отладку без изменения кода
+ приложения, вы можете указать ЦС для отладки, 
+ которые входят в число доверенных, <i>только</i> если для параметра <a href="{@docRoot}guide/topics/manifest/application-element.html#debug">
+android:debuggable</a>
+ установлено значение {@code true} с использованием {@code debug-overrides}. Обычно среды разработки и инструменты
+ сборки устанавливают этот флаг автоматически для всех сборок, кроме выпускаемой версии.
+</p>
+
+<p>
+  Такая схема работы более безопасна, чем использование обычного условного кода, поскольку в качестве
+ меры предосторожности магазины приложений не принимают приложения, помеченные
+ как доступные для отладки.
+</p>
+
+<p>
+<code>res/xml/network_security_config.xml</code>:
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?&gt;
+&lt;network-security-config&gt;
+    &lt;debug-overrides&gt;
+        &lt;trust-anchors&gt;
+            &lt;certificates src="@raw/debug_cas"/&gt;
+        &lt;/trust-anchors&gt;
+    &lt;/debug-overrides&gt;
+&lt;/network-security-config&gt;
+</pre>
+</p>
+
+
+<h2 id="UsesCleartextTraffic">Отказ от передачи данных открытым текстом</h2>
+
+<p>
+  Приложения, которым нужно подключаться к узлам только через защищенные соединения,
+ могут отказаться от поддержки передачи данных открытым текстом (с использованием нешифрованного протокола HTTP
+ вместо HTTPS) на эти узлы. Эта возможность помогает предотвратить
+ случайные неполадки в приложениях, связанные с изменениями URL-адресов, предоставленных внешними
+ источниками, например, инфраструктурными серверами.
+  Дополнительную информацию можно найти в описании метода {@link android.security.NetworkSecurityPolicy#isCleartextTrafficPermitted
+  NetworkSecurityPolicy.isCleartextTrafficPermitted()}.
+</p>
+
+<p>
+  Например, приложение может потребовать обязательное использование протокола HTTPS для всех соединений с {@code
+  secure.example.com}, чтобы защитить важный трафик
+ от небезопасных сетей.
+</p>
+
+<p>
+<code>res/xml/network_security_config.xml</code>:
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?&gt;
+&lt;network-security-config&gt;
+    &lt;domain-config usesCleartextTraffic="false"&gt;
+        &lt;domain includeSubdomains="true"&gt;secure.example.com&lt;/domain&gt;
+    &lt;/domain-config&gt;
+&lt;/network-security-config&gt;
+</pre>
+</p>
+
+
+<h2 id="CertificatePinning">Прикрепление сертификатов</h2>
+
+<p>
+  Обычно приложение доверяет всем предустановленным ЦС. Если любой из этих ЦС выпустит
+ поддельный сертификат, приложение подвергается риску атаки с перехватом данных.
+ Некоторым приложениям требуется ограничить принимаемый набор сертификатов
+ либо ограничением списка доверенных ЦС, либо прикреплением сертификатов.
+</p>
+
+<p>
+  Прикрепление сертификатов осуществляется путем предоставления набора сертификатов через хэш
+ открытого ключа (SubjectPublicKeyInfo сертификата X.509). В этом случае цепочка
+ сертификатов будет действительна, только если она содержит хотя бы один
+ прикрепленный открытый ключ.
+</p>
+
+<p>
+  При использовании прикрепления сертификатов всегда необходимо добавлять резервный
+ ключ, чтобы работа приложения не пострадала при необходимости перехода на новые ключи или смены ЦС (при
+ прикреплении сертификата ЦС или посредника этого ЦС).
+ Без резервного ключа для восстановления возможности подключения приложения потребуется срочно выпускать
+ его обновление.
+</p>
+
+<p>
+  Кроме того, существует возможность установить срок прикрепления, по истечении которого
+ прикрепление не выполняется. Это помогает предотвратить проблемы с подключением
+ приложений, которые не были обновлены. Однако установка срока действия
+ прикреплений позволяет обойти их ограничения.
+</p>
+
+<p>
+<code>res/xml/network_security_config.xml</code>:
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?&gt;
+&lt;network-security-config&gt;
+    &lt;domain-config&gt;
+        &lt;domain includeSubdomains="true"&gt;example.com&lt;/domain&gt;
+        &lt;pin-set expiration="2018-01-01"&gt;
+            &lt;pin digest="SHA-256"&gt;7HIpactkIAq2Y49orFOOQKurWxmmSFZhBCoQYcRhJ3Y=&lt;/pin&gt;
+            &lt;!-- backup pin --&gt
+            &lt;pin digest="SHA-256"&gt;fwza0LRMXouZHRC8Ei+4PyuldPDcf3UKgO/04cDM1oE=&lt;/pin&gt;
+    &lt;/domain-config&gt;
+&lt;/network-security-config&gt;
+</pre>
+</p>
+
+
+<h2 id="ConfigInheritance">Поведение при наследовании конфигурации</h2>
+
+<p>
+  Значения, не установленные в определенной конфигурации, наследуются. Такое поведение позволяет создавать более
+ сложные конфигурации, сохраняя при этом файл конфигурации в читаемом виде.
+</p>
+
+<p>
+  Если в определенной записи не установлено значение, используется значение из следующей более общей записи.
+ Значения, не установленные в {@code domain-config},
+ берутся из родительского элемента {@code domain-config} в многоуровневых конфигурациях или из элемента {@code
+  base-config} в простых конфигурациях. Для значений, не установленных в {@code base-config}, используются
+ значения по умолчанию для платформы.
+</p>
+
+<p>
+  Рассмотрим пример, где все соединения с доменами нижнего уровня {@code
+  example.com} должны использовать пользовательский набор ЦС. Кроме того, для этих доменов разрешена
+ передача данных открытым текстом, <em>кроме</em> случаев подключения к {@code
+  secure.example.com}. При вложении конфигурации {@code
+  secure.example.com} в конфигурацию {@code example.com} не требуется дублирование
+  {@code trust-anchors}.
+</p>
+
+<p>
+<code>res/xml/network_security_config.xml</code>:
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?&gt;
+&lt;network-security-config&gt;
+    &lt;domain-config&gt;
+        &lt;domain includeSubdomains="true"&gt;example.com&lt;/domain&gt;
+        &lt;trust-anchors&gt;
+            &lt;certificates src="@raw/my_ca"/&gt;
+        &lt;/trust-anchors&gt;
+        &lt;domain-config cleartextTrafficPermitted="false"&gt;
+            &lt;domain includeSubdomains="true"&gt;secure.example.com&lt;/domain&gt;
+        &lt;/domain-config&gt;
+    &lt;/domain-config&gt;
+&lt;/network-security-config&gt;
+</pre>
+</p>
+
+
+<h2 id="FileFormat">Формат файла конфигурации</h2>
+
+<p>
+  Функция конфигурации сетевой безопасности использует формат файлов XML.
+  Общая структура файла показана в следующем примере кода:
+</p>
+
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?&gt;
+&lt;network-security-config&gt;
+    &lt;base-config&gt;
+        &lt;trust-anchors&gt;
+            &lt;certificates src="..."/&gt;
+            ...
+        &lt;/trust-anchors&gt;
+    &lt;/base-config&gt;
+
+    &lt;domain-config&gt;
+        &lt;domain&gt;android.com&lt;/domain&gt;
+        ...
+        &lt;trust-anchors&gt;
+            &lt;certificates src="..."/&gt;
+            ...
+        &lt;/trust-anchors&gt;
+        &lt;pin-set&gt;
+            &lt;pin digest="..."&gt;...&lt;/pin&gt;
+            ...
+        &lt;/pin-set&gt;
+    &lt;/domain-config&gt;
+    ...
+    &lt;debug-overrides&gt;
+        &lt;trust-anchors&gt;
+            &lt;certificates src="..."/&gt;
+            ...
+        &lt;/trust-anchors&gt;
+    &lt;/debug-overrides&gt;
+&lt;/network-security-config&gt;
+</pre>
+
+<p>
+  В следующих разделах содержится описание синтаксиса и других деталей формата
+ файла.
+</p>
+
+<h3 id="network-security-config">
+  &lt;network-security-config&gt;
+</h3>
+
+<dl class="xml">
+  <dt>
+    Может содержать:
+  </dt>
+
+  <dd>
+    0 или 1 <code><a href="#base-config">&lt;base-config&gt;</a></code><br>
+    Любое количество <code><a href=
+    "#domain-config">&lt;domain-config&gt;</a></code><br>
+    0 или 1 <code><a href="#debug-overrides">&lt;debug-overrides&gt;</a></code>
+  </dd>
+</dl>
+
+<h3 id="base-config">
+  &lt;base-config&gt;
+</h3>
+
+<dl class="xml">
+  <dt>
+    Синтаксис:
+  </dt>
+</dl>
+
+<pre class="stx">
+&lt;base-config <a href=
+"#usesCleartextTraffic">usesCleartextTraffic</a>=["true" | "false"]&gt;
+    ...
+&lt;/base-config&gt;
+</pre>
+<dl class="xml">
+  <dt>
+    Может содержать:
+  </dt>
+
+  <dd>
+    <code><a href="#trust-anchors">&lt;trust-anchors&gt;</a></code>
+  </dd>
+
+  <dt>
+    Описание:
+  </dt>
+
+  <dd>
+    Конфигурация по умолчанию, используемая всеми подключениями к узлам, не входящим в <a href="#domain-config"><code>domain-config</code></a>.
+
+
+<p>
+  Если значения не установлены, используются значения по умолчанию для платформы. Конфигурация по умолчанию
+ для приложений, использующих API уровня 24 или выше:
+</p>
+
+<pre>
+&lt;base-config usesCleartextTraffic="true"&gt;
+    &lt;trust-anchors&gt;
+        &lt;certificates src="system" /&gt;
+    &lt;/trust-anchors&gt;
+&lt;/base-config&gt;
+</pre>
+Конфигурация по умолчанию  для приложений, использующих API уровня 23 или ниже:
+<pre>
+&lt;base-config usesCleartextTraffic="true"&gt;
+    &lt;trust-anchors&gt;
+        &lt;certificates src="system" /&gt;
+        &lt;certificates src="user" /&gt;
+    &lt;/trust-anchors&gt;
+&lt;/base-config&gt;
+</pre>
+
+  </dd>
+</dl>
+
+<h3 id="domain-config">&lt;domain-config&gt;</h3>
+<dl class="xml">
+<dt>Синтаксис:</dt>
+<dd>
+<pre class="stx">&lt;domain-config <a href="#usesCleartextTraffic">usesCleartextTraffic</a>=["true" | "false"]&gt;
+    ...
+&lt;/domain-config&gt;</pre>
+</dd>
+
+<dt>Может содержать:</dt>
+
+<dd>
+1 или более <code><a href="#domain">&lt;domain&gt;</a></code>
+<br/>0 или 1 <code><a href="#trust-anchors">&lt;trust-anchors&gt;</a></code>
+<br/>0 или 1 <code><a href="#pin-set">&lt;pin-set&gt;</code></a>
+<br/>Любое количество вложенных <code>&lt;domain-config&gt;</code></dd>
+
+<dt>Описание</dt>
+<dd>Конфигурация, используемая для подключения к конкретным узлам, определенными элементами {@code domain}.
+
+<p>Если для узла назначения существует несколько элементов {@code domain-config}, используется правило для наиболее конкретного (самого длинного) совпадающего домена.
+</p></dd>
+</dl>
+
+
+<h3 id="domain">&lt;domain&gt;</h3>
+
+<dl class="xml">
+  <dt>
+    Синтаксис:
+  </dt>
+
+  <dd>
+    <pre class="stx">
+&lt;domain includeSubdomains=["true" | "false"]&gt;example.com&lt;/domain&gt;
+</pre>
+  </dd>
+
+  <dt>
+    Атрибуты:
+  </dt>
+
+  <dd>
+    <dl class="attr">
+      <dt>
+        {@code includeSubdomains}
+      </dt>
+
+      <dd>
+        Если значение равно {@code "true"}, то правило домена соответствует указанному домену и всем доменам его
+ нижних уровней. В противном случае правило действует
+ только для полных совпадений.
+      </dd>
+    </dl>
+  </dd>
+
+  <dt>
+    Описание:
+  </dt>
+</dl>
+
+<h3 id="debug-overrides">&lt;debug-overrides&gt;</h3>
+
+<dl class="xml">
+  <dt>
+    Синтаксис:
+  </dt>
+
+  <dd>
+    <pre class="stx">
+&lt;debug-overrides&gt;
+    ...
+&lt;/debug-overrides&gt;
+</pre>
+  </dd>
+
+  <dt>
+    Может содержать:
+  </dt>
+
+  <dd>
+    0 или 1 <code><a href="#trust-anchors">&lt;trust-anchors&gt;</a></code>
+  </dd>
+
+  <dt>
+    Описание:
+  </dt>
+
+  <dd>
+    Переопределения применяются, когда параметр <a href="{@docRoot}guide/topics/manifest/application-element.html#debug">android:debuggable</a>
+ имеет значение {@code "true"}, что обычно верно для промежуточных сборок,
+ создаваемых средами разработки и инструментами сборки. Якоря доверия, указанные в {@code
+    debug-overrides}, добавляются ко всем другим конфигурациям, и прикрепление
+ сертификатов не выполняется, если цепочка сертификатов сервера использует один из этих
+ якорей доверия, предназначенных только для отладки. Если параметр <a href="{@docRoot}guide/topics/manifest/application-element.html#debug">android:debuggable</a>
+ имеет значение {@code "false"}, этот раздел полностью игнорируется.
+  </dd>
+</dl>
+
+<h3 id="trust-anchors">&lt;trust-anchors&gt;</h3>
+<dl class="xml">
+  <dt>
+    Синтаксис:
+  </dt>
+
+  <dd>
+    <pre class="stx">
+&lt;trust-anchors&gt;
+...
+&lt;/trust-anchors&gt;
+</pre>
+  </dd>
+
+  <dt>
+    Может содержать:
+  </dt>
+
+  <dd>
+    Любое количество <code><a href="#certificates">&lt;certificates&gt;</a></code>
+  </dd>
+
+  <dt>
+    Описание:
+  </dt>
+
+  <dd>
+    Набор якорей доверия для защищенных соединений.
+  </dd>
+</dl>
+
+
+<h3 id="certificates">&lt;certificates&gt;</h3>
+<dl class="xml">
+<dt>Синтаксис:</dt>
+<dd><pre class="stx">&lt;certificates src=["system" | "user" | "<i>raw resource</i>"]
+              overridePins=["true" | "false"] /&gt;
+</pre></dd>
+<dt>Описание:</dt>
+<dd>Набор сертификатов X.509 для элементов {@code trust-anchors}.</dd>
+
+<dt>Атрибуты:</dt>
+<dd><dl class="attr">
+<dt>{@code src}</dt>
+<dd>
+Источник сертификатов ЦС может представлять собой
+<ul>
+  <li>идентификатор исходного ресурса, указывающий на файл с сертификатами X.509.
+  Сертификаты должны быть закодированы в формате DER или PEM. При использовании сертификатов PEM
+ файл <em>не должен</em> содержать ничего, кроме данных PEM, например,
+ комментариев.
+  </li>
+
+  <li>{@code "system"} для предустановленных в системе сертификатов ЦС
+  </li>
+
+  <li>{@code "user"} для добавленных пользователем сертификатов ЦС
+  </li>
+</ul>
+</dd>
+
+<dt>{@code overridePins}</dt>
+<dd>
+  <p>
+    Указывает, пропускается ли прикрепление сертификатов для ЦС из этого источника. Если значение равно {@code
+    "true"}, то прикрепление сертификатов не выполняется для цепочек сертификатов, проходящих через один из ЦС этого
+ источника. Это применяется для отладки ЦС
+ или для разрешения пользователю перехватывать защищенный трафик вашего приложения.
+  </p>
+
+  <p>
+    По умолчанию используется значение {@code "false"}, но если указан элемент {@code debug-overrides},
+ то по умолчанию используется значение {@code "true"}.
+  </p>
+</dd>
+</dl>
+</dd>
+
+
+<h3 id="pin-set">&lt;pin-set&gt;</h3>
+
+<dl class="xml">
+  <dt>
+    Синтаксис:
+  </dt>
+
+  <dd>
+<pre class="stx">
+&lt;pin-set expiration="date"&gt;
+...
+&lt;/pin-set&gt;
+</pre>
+  </dd>
+
+  <dt>
+    Может содержать:
+  </dt>
+
+  <dd>
+    Любое количество <code><a href="#pin">&lt;pin&gt;</a></code>
+  </dd>
+
+  <dt>
+    Описание:
+  </dt>
+
+  <dd>
+    Набор прикрепленных открытых ключей. Чтобы защищенное соединение было доверенным, один из
+ открытых ключей в цепочке доверия должен входить в набор прикрепленных ключей. Формат ключей указан в
+ <code><a href="#pin">&lt;pin&gt;</a></code>.
+  </dd>
+
+  <dt>
+    Атрибуты:
+  </dt>
+
+  <dd>
+    <dl class="attr">
+      <dt>
+        {@code expiration}
+      </dt>
+
+      <dd>
+        Дата в формате {@code yyyy-MM-dd}, начиная с которой истекает срок прикрепления
+ и оно отключается. Если этот атрибут не установлен,
+ срок прикрепления не истекает.
+        <p>
+          Истечение срока прикрепления помогает предотвратить проблемы с подключением в приложениях, которые
+ не получают обновления набора прикрепленных элементов, например в связи с тем, что пользователь
+ отключил обновления приложений.
+        </p>
+      </dd>
+    </dl>
+  </dd>
+</dl>
+
+<h3 id="pin">&lt;pin&gt;</h3>
+<dl class="xml">
+  <dt>
+    Синтаксис:
+  </dt>
+
+  <dd>
+<pre class="stx">
+&lt;pin digest=["SHA-256"]&gt;base64 encoded digest of X.509
+    SubjectPublicKeyInfo (SPKI)&lt;/pin&gt;
+</pre>
+  </dd>
+
+  <dt>
+    Атрибуты:
+  </dt>
+
+  <dd>
+    <dl class="attr">
+      <dt>
+        {@code digest}
+      </dt>
+
+      <dd>
+        Алгоритм хэширования, используемый для создания прикреплений. В настоящее время поддерживается только алгоритм
+ {@code "SHA-256"}.
+      </dd>
+    </dl>
+  </dd>
+</dl>
diff --git a/docs/html-intl/intl/ru/preview/features/tv-recording-api.jd b/docs/html-intl/intl/ru/preview/features/tv-recording-api.jd
new file mode 100644
index 0000000..ff1c84e
--- /dev/null
+++ b/docs/html-intl/intl/ru/preview/features/tv-recording-api.jd
@@ -0,0 +1,120 @@
+page.title=Запись ТВ
+page.keywords=preview,sdk,tv,recording
+page.tags=androidn
+
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+  <h2>Содержание документа</h2>
+  <ol>
+    <li><a href="#supporting">Указание на поддержку записи</a></li>
+    <li><a href="#recording">Запись сеанса</a></li>
+    <li><a href="#errors">Обработка ошибок записи</a></li>
+    <li><a href="#sessions">Управление записанными сеансами</a></li>
+    <li><a href="#best">Советы и рекомендации</a></li>
+  </ol>
+</div>
+</div>
+
+<p>Службы телевидения позволяют пользователю ставить воспроизведение телеканалов на паузу и возобновлять его, используя
+для этого API-интерфейсы с временным сдвигом. Android N расширяет возможности временного сдвига,
+позволяя пользователю сохранять несколько записанных сеансов.</p>
+
+<p>Пользователи могут планировать запись заранее или начинать ее во время просмотра
+программы. После сохранения записей в системе пользователь может просматривать их в браузере, управлять ими
+и воспроизводить их с помощью телевизионного приложения.</p>
+
+<p>Если вы хотите добавить функцию записи в службу ТВ,
+вы должны указать системе, что ваше приложение поддерживает запись, и реализовать
+возможности записи программ, обработки любых ошибок, возникающих
+во время записи, вывода сообщений об ошибках, а также управления записанными сеансами.</p>
+
+<h2 id="supporting">Указание на поддержку записи</h2>
+
+<p>Чтобы сообщить системе, что ваша служба ТВ поддерживает запись, выполните
+следующие шаги:</p>
+
+<ol>
+<li>В методе <code>TvInputService.onCreate()</code> создайте новый объект
+<code>TvInputInfo</code>, используя класс <code>TvInputInfo.Builder</code>.
+</li>
+<li>При создании нового объекта <code>TvInputInfo</code> вызовите метод
+<code>setCanRecord(true)</code> до вызова <code>build()</code>,
+чтобы указать на то, что служба поддерживает запись.</li>
+<li>Зарегистрируйте объект <code>TvInputInfo</code> в системе посредством вызова метода
+<code>TvInputService.updateTvInputInfo()</code>.</li>
+</ol>
+
+<h2 id="recording">Запись сеанса</h2>
+
+<p>Когда служба ТВ зарегистрирует поддержку записи,
+система будет вызывать ваш метод
+<code>TvInputService.onCreateRecordingSession()</code>, когда ей потребуется доступ
+к функции записи в вашем приложении. Реализуйте собственный подкласс
+<code>TvInputService.RecordingSession</code> и возвращайте его
+при получении обратного вызова <code>onCreateRecordingSession()</code>.
+ Этот подкласс отвечает за переключение на данные нужного канала,
+запись запрошенных данных, а также передачу системе информации о состоянии записи
+и ошибках.</p>
+
+<p>Когда система будет вызывать метод <code>RecordingSession.onTune()</code>, передавая в него
+URI канала, приложение должно переключаться на канал, указанный URI. Сообщите системе о том, что
+приложение настроилось на желаемый канал, вызвав метод <code>notifyTuned()</code>.
+Если приложению не удалось настроиться на желаемый канал, оно должно вызвать метод
+<code>notifyError()</code>.</p>
+
+<p>Затем система передает обратный вызов <code>RecordingSession.onStartRecording()</code>.
+ После этого приложение должно сразу же начать запись. Когда система передает
+этот обратный вызов, она может указать URI с информацией о программе
+для записи. После завершения записи эти данные нужно
+скопировать в таблицу данных <code>RecordedPrograms</code>.</p>
+
+<p>Наконец, система вызывает метод <code>RecordingSession.onStopRecording()</code>.
+В этот момент приложение должно сразу же прекратить запись. Также вам нужно будет
+создать запись в таблице <code>RecordedPrograms</code>. Эта запись должна
+содержать URI записанных данных в столбце
+<code>RecordedPrograms.COLUMN_RECORDING_DATA_URI</code>, а также любую информацию
+о программе, которая была предоставлена системой в исходном вызове
+<code>onStartRecording()</code>.</p>
+
+<p>Более подробную информацию о доступе к таблице <code>RecordedPrograms</code>
+можно найти в разделе <a href="#sessions">Управление записанными сеансами</a>.</p>
+
+<h2 id="errors">Обработка ошибок записи</h2>
+
+<p>Если во время записи возникла ошибка, в результате которой записанные данные стали непригодными для использования,
+то об этом нужно сообщить системе, вызвав метод <code>RecordingSession.notifyError()</code>.
+Аналогичным образом, вы можете вызвать метод <code>notifyError()</code> после создания сеанса записи,
+чтобы сообщить системе, что приложение больше не может записывать сеансы.</p>
+
+<p>Если в процессе записи возникла ошибка, но вы хотите предоставить пользователям
+приемлемую часть записи для воспроизведения, вызовите
+<code>RecordingSession.notifyRecordingStopped()</code>, чтобы дать системе возможность
+использовать частичный сеанс.</p>
+
+<h2 id="sessions">Управление записанными сеансами</h2>
+
+<p>Система хранит информацию обо всех записанных сеансах всех
+приложений, поддерживающих запись каналов, в таблице поставщиков контента <code>TvContract.RecordedPrograms</code>.
+ Эта информация доступна через URI контента
+<code>RecordedPrograms.Uri</code>. Используйте API-интерфейсы поставщиков контента для
+чтения, добавления и удаления записей из этой таблицы.</p>
+
+<p>Дополнительную информацию о работе с данными поставщиков контента можно найти в разделе
+<a href="{@docRoot}guide/topics/providers/content-provider-basics.html">
+Основные сведения о поставщике контента</a>.</p>
+
+<h2 id="best">Советы и рекомендации</h2>
+
+<p>Объем хранилищ на телевизионных устройствах может быть ограничен, поэтому следует разумно
+распределять доступные хранилища для хранения записанных сеансов. Используйте
+<code>RecordingCallback.onError(RECORDING_ERROR_INSUFFICIENT_SPACE)</code>, когда для сохранения записанного сеанса
+недостаточно места.</p>
+
+<p>Когда пользователь инициирует запись, приложение должно как можно скорее начать записывать
+данные. Для этого рекомендуется заранее выполнить все продолжительные задачи,
+такие как получение доступа к хранилищу и распределение свободного места, когда система передает обратный вызов
+<code>onCreateRecordingSession()</code>. Это позволяет сразу же начать
+запись после получения обратного вызова <code>onStartRecording()</code>.
+</p>
diff --git a/docs/html-intl/intl/ru/preview/index.jd b/docs/html-intl/intl/ru/preview/index.jd
new file mode 100644
index 0000000..9bb56ba
--- /dev/null
+++ b/docs/html-intl/intl/ru/preview/index.jd
@@ -0,0 +1,120 @@
+page.title=Android N Developer Preview
+page.tags="preview","developer"
+meta.tags="предварительная версия", "android"
+fullpage=true
+forcelocalnav=true
+header.hide=1
+footer.hide=1
+@jd:body
+
+<script>
+  $(document).ready(function() {
+    if (useUpdatedTemplates) {
+      $("#useUpdatedTemplates").css("display","block");
+    } else {
+      $("#useOldTemplates").css("display","block");
+    }
+  })
+</script>
+
+<section class="dac-expand dac-hero dac-light" style="background-color:#B2DFDB">
+  <div class="wrap" style="max-width:1100px;margin-top:0">
+    <div class="cols dac-hero-content" style="padding-bottom:1em;">
+
+      <div class="col-7of16 col-push-9of16" style="padding-left:2em">
+        <h1 class="dac-hero-title">Android N Developer Preview</h1>
+        <p class="dac-hero-description">
+          Подготовьтесь к выходу Android N!
+<strong>Протестируйте свои приложения</strong> на Nexus и других устройствах. Поддержите нововведения
+системы, позволяющие <strong>снизить потребление энергии и памяти</strong>.
+Добавьте в свои приложения <strong>многооконный режим</strong>,
+<strong>возможность прямой отправки ответов из уведомлений</strong> и другие функции.
+        </p>
+
+        <a class="dac-hero-cta" href="{@docRoot}preview/overview.html">
+          <span class="dac-sprite dac-auto-chevron"></span>
+          Начало работы
+        </a><!--<br>
+        <a class="dac-hero-cta" href="{@docRoot}preview/support.html">
+          <span class="dac-sprite dac-auto-chevron"></span>
+          Update to Android N (final SDK)
+        </a><br>-->
+      </div>
+      <div class="col-9of16 col-pull-7of16 dac-hero-figure" style="margin-top:1.5em;padding-right:1.5em;">
+        <img class="dac-hero-image" src="{@docRoot}images/home/n-preview-hero.png" srcset="{@docRoot}images/home/n-preview-hero.png 1x,
+             {@docRoot}images/home/n-preview-hero_2x.png 2x">
+      </div>
+    </div>
+    <div class="dac-section dac-small">
+      <div class="resource-widget resource-flow-layout col-16"
+           data-query="collection:preview/landing/resources"
+           data-cardSizes="6x2"
+           data-maxResults="6"></div>
+    </div>
+  </div>
+</section>
+
+<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="#build-apps">
+      <i class="dac-sprite dac-arrow-down-gray"></i>
+    </a>
+    <ul class="dac-actions">
+      <li class="dac-action">
+        <a class="dac-action-link" href="https://developer.android.com/preview/bug">
+          <i class="dac-action-sprite dac-sprite dac-auto-chevron-large"></i>
+          Сообщить о проблеме
+        </a>
+      </li>
+      <li class="dac-action">
+        <a class="dac-action-link" href="{@docRoot}preview/support.html">
+          <i class="dac-action-sprite dac-sprite dac-auto-chevron-large"></i>
+          См. примечания к выпуску
+        </a>
+      </li>
+      <li class="dac-action">
+        <a class="dac-action-link" href="{@docRoot}preview/dev-community">
+          <i class="dac-action-sprite dac-sprite dac-auto-chevron-large"></i>
+          Вступить в сообщество разработчиков
+        </a>
+      </li>
+    </ul>
+  </div><!-- end .wrap -->
+</div><!-- end .dac-actions -->
+
+<div id="useOldTemplates" style="display:none;color:black" class="actions-bar dac-expand dac-invert">
+  <div class="wrap dac-offset-parent">
+
+    <div class="actions">
+      <div><a href="https://developer.android.com/preview/bug">
+        <span class="dac-sprite dac-auto-chevron-large"></span>
+        Сообщить о проблеме
+        </a></div>
+      <div><a href="{@docRoot}preview/support.html">
+        <span class="dac-sprite dac-auto-chevron-large"></span>
+        См. примечания к выпуску
+        </a></div>
+      <div><a href="{@docRoot}preview/dev-community">
+        <span class="dac-sprite dac-auto-chevron-large"></span>
+        Вступить в сообщество разработчиков
+        </a></div>
+    </div><!-- end .actions -->
+  </div><!-- end .wrap -->
+</div>
+
+<section class="dac-section dac-light"><div class="wrap">
+  <h1 class="dac-section-title">Ресурсы</h1>
+  <div class="dac-section-subtitle">
+    Важная информация, которая поможет вам подготовить ваши приложения для работы в Android N.
+  </div>
+
+  <div class="resource-widget resource-flow-layout col-16"
+       data-query="collection:preview/landing/more"
+       data-cardSizes="6x6"
+       data-items-per-page="6"
+       data-maxResults="15"
+       data-initial-results="6"></div>
+
+  </div>
+</section>
+
diff --git a/docs/html-intl/intl/ru/preview/j8-jack.jd b/docs/html-intl/intl/ru/preview/j8-jack.jd
new file mode 100644
index 0000000..fcd8d70
--- /dev/null
+++ b/docs/html-intl/intl/ru/preview/j8-jack.jd
@@ -0,0 +1,183 @@
+page.title=Возможности языка Java 8
+page.keywords="android N", "Java 8", "Jack"
+@jd:body
+
+<div id="qv-wrapper">
+  <div id="qv">
+    <ol>
+      <li>
+        <a href="#supported-features">Поддерживаемые API-интерфейсы и возможности языка Java 8</a>
+      </li>
+      <li>
+        <a href="#configuration">Активация возможностей Java 8 и набора инструментов Jack</a>
+      </li>
+    </ol>
+  </div>
+</div>
+
+<p>В Android N появилась поддержка возможностей языка Java 8,
+которые можно использовать при разработке приложений для Android N.
+На данной странице приведены описания новых возможностей языка, поддерживаемых в Android N
+Preview, объяснено как настроить проект для их использования, а также указаны известные
+проблемы, с которыми можно столкнуться.
+</p>
+
+<p>Для использования этих функций необходимо загрузить и установить Android
+Studio 2.1 (предварительная версия) и Android N Preview SDK, который включает набор инструментов
+Jack и обновленный подключаемый модуль Android для Gradle. Если вы еще не установили
+Android N Preview SDK, см. <a href="{@docRoot}preview/setup-sdk.html">Настройка среды разработки для Android N</a>.</p>
+
+
+
+<p class="note">
+  <strong>Примечание.</strong> Использование новых возможностей языка Java 8 не является обязательным требованием
+при разработке приложений для платформы Android N. Если вы не хотите
+писать код с использованием возможностей языка Java 8, можно указать
+Java 7 в качестве значения совместимости для проекта, однако все-равно
+необходимо будет выполнить компиляцию с JDK 8 для осуществления сборки на платформе Android N.
+</p>
+
+<h2 id="supported-features">
+  Поддерживаемые API-интерфейсы и возможности языка Java 8
+</h2>
+
+<p>
+  В настоящее время Android поддерживает не все возможности языка Java 8.
+Однако при разработке приложений для
+Android N Preview доступны следующие функции.
+</p>
+
+<ul>
+  <li>
+    <a class="external-link" href="https://docs.oracle.com/javase/tutorial/java/IandI/defaultmethods.html">Статические
+и заданные по умолчанию методы интерфейсов</a>
+  </li>
+
+  <li>
+    <a class="external-link" href="https://docs.oracle.com/javase/tutorial/java/javaOO/lambdaexpressions.html">
+Лямбда-выражения</a>
+  </li>
+
+  <li>
+    <a class="external-link" href="https://docs.oracle.com/javase/tutorial/java/annotations/repeating.html">Повторяющиеся
+примечания</a>
+  </li>
+</ul>
+
+
+<p>
+  Кроме того, доступны следующие API-интерфейсы для реализации возможностей языка Java 8.
+</p>
+
+<ul>
+  <li>API-интерфейсы отражения и языковых функций:
+  </li>
+
+  <li style="list-style: none; display: inline">
+    <ul>
+      <li>{@code java.lang.FunctionalInterface};
+      </li>
+
+      <li>{@code java.lang.annotation.Repeatable};
+      </li>
+
+      <li>{@code java.lang.reflect.Method.isDefault()};
+      </li>
+
+      <li>а также API-интерфейсы отражения, связанные с повторяющимися примечаниями, например,
+{@code AnnotatedElement.getAnnotationsByType(Class)}.
+      </li>
+    </ul>
+  </li>
+  <li>Вспомогательные API:
+  </li>
+
+  <li style="list-style: none; display: inline">
+    <ul>
+      <li>{@code java.util.function}.
+      </li>
+    </ul>
+  </li>
+</ul>
+
+<p class="note">
+  <strong>Примечание.</strong> В Android N реализация
+лямбда-выражений выполнена с помощью анонимных классов. Данный подход обеспечивает их
+обратную совместимость и возможность выполнения в предыдущих версиях Android. При тестировании
+лямбда-выражений в предыдущих версиях перейдите в файл {@code
+  build.gradle} и установите для параметров {@code compileSdkVersion} и {@code
+  targetSdkVersion} значения 23 или ниже.
+</p>
+
+<h2 id="configuration">
+  Активация возможностей Java 8 и набора инструментов Jack
+</h2>
+
+<p>
+  Для использования новых возможностей языка Java 8 необходимо также использовать
+новый <a class="external-link" href="https://source.android.com/source/jack.html">набор инструментов Jack</a>. С его помощью
+Android компилирует языковой источник Java в считываемый Android байткод Dalvik Executable (dex).
+В Jack предусмотрен собственный формат библиотеки {@code .jack}, большинство функциональных возможностей набора
+инструментов предоставляется в рамках одного инструмента: перекомпоновка, сжатие, обфускация и
+использование нескольких файлов DEX.
+</p>
+
+<p>Ниже представлено сравнение двух наборов инструментов, используемых для сборки файлов DEX в Android.</p>
+<ul>
+  <li>Старый набор инструментов javac:<br>
+  <b>javac</b> ({@code .java} --&gt; {@code .class}) --&gt; <b>dx</b> ({@code
+  .class} --&gt; {@code .dex})
+  </li>
+
+  <li>Новый набор инструментов Jack:<br>
+  <b>Jack</b> ({@code .java} --&gt; {@code .jack} --&gt; {@code .dex})
+  </li>
+</ul>
+
+<h3>
+  Настройка Gradle
+</h3>
+
+<p>
+  Чтобы использовать возможности языка Java 8 и набор инструментов Jack для проекта, добавьте
+в файл модуля {@code build.gradle} следующий код:
+</p>
+
+<pre>
+android {
+  ...
+  defaultConfig {
+    ...
+    jackOptions {
+      enabled true
+    }
+  }
+  compileOptions {
+    sourceCompatibility JavaVersion.VERSION_1_8
+    targetCompatibility JavaVersion.VERSION_1_8
+  }
+}
+</pre>
+
+<h3>
+  Известные проблемы
+</h3>
+
+<p>
+  Функция Instant Run, появившаяся в Android Studio 2.0 (Beta), не работает
+с набором инструментов Jack и будет отключена при его использовании.
+</p>
+
+<p>Поскольку набор инструментов Jack не создает промежуточные файлы классов при компиляции
+приложения, инструменты, которые используют такие файлы, пока с Jack не работают. Примеры таких
+инструментов приведены ниже.</p>
+
+<ul>
+  <li>Детекторы Lint, работающие c файлами классов.
+  </li>
+
+  <li>Инструменты и библиотеки, которым требуются файлы классов приложения (например, JaCoCo
+и Mockito)</li>
+</ul>
+
+<p>Если вы обнаружите другие проблемы во время использования набора инструментов Jack, <a href="http://tools.android.com/filing-bugs">сообщите о них</a>.</p>
\ No newline at end of file
diff --git a/docs/html-intl/intl/ru/preview/overview.jd b/docs/html-intl/intl/ru/preview/overview.jd
new file mode 100644
index 0000000..e78af04
--- /dev/null
+++ b/docs/html-intl/intl/ru/preview/overview.jd
@@ -0,0 +1,440 @@
+page.title=Обзор программы
+page.metaDescription=Подготовьте свои приложения к выходу следующей версии Android.
+page.image=images/cards/card-n-overview_2x.png
+meta.tags="предварительная версия", "разработчик", "android"
+page.tags="preview", "developer", "android"
+
+@jd:body
+<!--
+<div class="cols" style=
+"background-color:#f2daf5; padding: 5px 0;margin-bottom:1em; text-align:center;">
+<h3>
+    Developer Preview 3 is now available
+  </h3>
+  <p>Includes final SDK and near-final system images</p>
+   <div style="margin:auto 1em">
+ <ul class="dac-section-links">
+    <li class="dac-section-link">
+      <a href="{@docRoot}preview/support.html#preview3-notes">
+      <span class="dac-sprite dac-auto-chevron"></span>
+      Read the Notes</a>
+    </li>
+
+    <li class="dac-section-link">
+      <a href="{@docRoot}preview/support.html#preview3-get">
+      <span class="dac-sprite dac-auto-chevron"></span>
+      Get the Update</a>
+    </li>
+
+    <li class="dac-section-link">
+      <a href="https://code.google.com/p/android-developer-preview/">
+      <span class="dac-sprite dac-auto-chevron"></span>
+      Report Issues</a>
+    </li>
+  </ul>
+  </div>
+</div>
+-->
+
+<p>
+  Добро пожаловать в программу <strong>Android N Developer Preview</strong>, участники
+которой получают все необходимое для тестирования и оптимизации
+своих приложений для следующей версии платформы Android. Участие в программе бесплатно, вам предоставляется возможность использовать
+инструменты N Developer Preview сразу же после их загрузки.
+</p>
+
+
+
+
+
+
+
+<div style="background-color:#eceff1;padding:1em;">
+<div class="wrap">
+  <div class="cols">
+    <div class="col-4of12">
+      <h5>
+        Образы для эмулятора и оборудования
+      </h5>
+
+      <p>
+        Запустите и протестируйте свои приложения на широком спектре устройств или на эмуляторе.
+
+      </p>
+    </div>
+
+    <div class="col-4of12">
+      <h5>
+        Самый актуальный код платформы
+      </h5>
+
+      <p>
+        Во время знакомства с предварительной версией платформы мы будем предоставлять ежемесячные обновления, поэтому вы сможете протестировать самые актуальные изменения в платформе.
+      </p>
+    </div>
+
+    <div class="col-4of12">
+      <h5>
+        Приоритетное исправление ошибок, зафиксированных разработчиками
+      </h5>
+
+      <p>
+        В течение первых нескольких недель мы будем рассматривать отчеты об ошибках, поступающие от разработчиков, в приоритетном порядке,
+поэтому не теряйте времени и приступайте к тестированию и составлению отзывов как можно раньше.
+      </p>
+    </div>
+
+  </div>
+
+  <div class="cols">
+
+
+    <div class="col-4of12">
+      <h5>
+        Новые возможности и новые функции
+      </h5>
+
+      <p>
+        Заранее начните реализовывать в своих приложениях поддержку расширенной функциональности платформы.
+      </p>
+    </div>
+
+    <div class="col-4of12">
+        <h5>
+        Получение обновлений по беспроводной связи
+      </h5>
+
+      <p>
+        Простое и удобное получение обновлений по беспроводной связи для поддерживаемых устройств в рамках программы бета-тестирования
+Android. Запись во флэш-память устройства не требуется.
+      </p>
+    </div>
+
+    <div class="col-4of12">
+      <h5>
+        Отзывы и поддержка
+      </h5>
+
+      <p>
+        Отправляйте отзывы и сообщайте о проблемах с помощью нашей
+<a href="{@docRoot}preview/bug">системы отслеживания ошибок</a>. Общайтесь с другими
+разработчиками в
+<a href="{@docRoot}preview/dev-community">сообществе разработчиков для Android&nbsp;N</a>.
+      </p>
+    </div>
+  </div>
+</div>
+</div>
+
+<!--
+<p>New in the Android N Developer Preview: </p>
+
+<ul>
+  <li> Accompanying Android Beta Program for consumers, starting later in the preview</li>
+  <li> More supported devices, including devices from OEM partners</li>
+  <li> Seamless OTAs for your devices, from initial release to final N release without flashing</li>
+</ul>
+-->
+
+<h2 id="timeline">График и обновления</h2>
+<img src="{@docRoot}images/n-preview-updates_2x.png">
+
+<p>
+  Срок действия программы N Developer Preview запланирован с 9 марта 2016 г. и до выпуска окончательной версии Android N
+для AOSP и OEM, который состоится в третьем квартале 2016 г.
+</p>
+
+<p>
+  На ключевых этапах разработки платформы мы предоставим обновления для среды разработки и
+тестирования. Выход обновлений запланирован каждый месяц (с интервалом
+4-6 недель). Основные этапы показаны ниже.
+</p>
+
+<ul>
+  <li><strong><a href="{@docRoot}preview/support.html">Предварительная версия 1</a></strong> (первоначальный выпуск, альфа-версия)</li>
+  <li><strong>Предварительная версия 2</strong> (инкрементальное обновление, бета-версия)</li>
+  <li><strong>Предварительная версия 3</strong> (инкрементальное обновление, бета-версия)</li>
+  <li><strong>Предварительная версия 4</strong> (окончательные версии API и официальный SDK, публикация в Google Play)</li>
+  <li><strong>Предварительная версия 5</strong> (практически готовые системные образы для заключительного тестирования)</li>
+  <li><strong>Выпуск окончательной версии</strong> в AOSP и экосистеме</li>
+</ul>
+
+<p>
+  Каждое обновление включает инструменты SDK, системные образы предварительной версии, эмуляторы, справочную
+документацию и описание отличий в API.
+</p>
+
+<p>
+  На <strong>первых трех ключевых этапах предварительной версии</strong> предоставляется <strong>начальная среда
+тестирования и разработки</strong>, которая позволяет выявить
+проблемы совместимости в текущих приложениях и спланировать миграцию или доработку функций,
+требуемых для новой платформы. В течение этого времени вы можете предоставлять
+отзывы о функциях и API, а также проблемах совместимости файлов
+с помощью <a href="{@docRoot}preview/bug">системы отслеживания
+ошибок</a>. Обновления могут включать некоторые изменения API.
+</p>
+
+<p>
+  В <strong>предварительных версиях 4 и 5</strong> вам будет предоставлен доступ к <strong>окончательным
+версиям API-интерфейсов и SDK системы N</strong>, а также к практически готовым системным образам
+для тестирования работоспособности и возможностей системы. Android N будет содержать API
+стандартного уровня. Вы сможете начать заключительное тестирование совместимости старых
+приложений и отладить новый код, в котором используются API-интерфейсы или возможности системы N.
+</p>
+
+<p>
+  Начиная с предварительной версии 4, вы сможете <strong>публиковать приложения на
+устройствах</strong> под управлением Android N, используя API-интерфейсы официального уровня, например на
+пользовательских устройствах, участвующих в программе бета-тестирования Android. Вы можете
+выполнить публикацию сначала на альфа- и бета-каналах Google Play для тестирования
+приложений с помощью пользователей бета-версии Android перед их размещением в
+магазине для общего доступа.
+</p>
+
+<p>
+  Мы настоятельно рекомендуем вам в ходе тестирования и разработки приложений для Android N <strong>постоянно
+обновлять вашу среду разработки</strong> по мере выхода обновлений
+предварительной версии. Для упрощения процесса вы можете зарегистрировать тестовые устройства в программе
+бета-тестирования Android и получать <strong>обновления по беспроводной связи</strong> на
+каждом ключевом этапе. Кроме того, обновленные образы предварительной версии можно загрузить
+и записать во флэш-память устройства вручную.
+</p>
+
+<p>
+  Мы будем сообщать о появлении обновлений предварительной версии в <a href="http://android-developers.blogspot.com/">блоге разработчиков Android</a>, а
+также на этом сайте и в <a href="{@docRoot}preview/dev-community">сообществе разработчиков для
+Android N</a>.
+</p>
+
+
+<h2 id="preview_tools">Состав программы N Developer Preview</h2>
+
+<p>
+  N Developer Preview содержит все, что необходимо для тестирования ваших существующих
+приложений на экранах различных размеров, тестирования с использованием различных сетевых технологий, наборов микросхем ЦП и графических процессоров,
+а также различных архитектур оборудования.
+</p>
+
+<h3 id="sdk_tools">Инструменты SDK</h3>
+
+<p>С помощью менеджера SDK в <a href="{@docRoot}sdk/installing/adding-packages.html">Android Studio</a> вы сможете загрузить следующие компоненты:</p>
+
+<ul>
+  <li> <strong>SDK и инструменты</strong> N Developer Preview;
+  <li> <strong>системный образ эмулятора</strong> (32- и 64-разрядная версии) для N Developer Preview;
+  <li> <strong>системный образ эмулятора для Android TV</strong> (32-разрядная версия) N Developer Preview;
+  <li> поддерживаемые библиотеки N Developer Preview (для новых шаблонов приложений).
+</ul>
+
+<p>
+  При необходимости мы предоставляем обновления инструментов разработки на каждом ключевом этапе.
+</p>
+
+<h3 id="hardware_system_images">Системные образы оборудования</h3>
+
+<p>
+  N Developer Preview включает системные образы для Nexus и других устройств, которые можно использовать при
+тестировании и разработке на физических устройствах. См. полный список аппаратных образов на странице <a href="{@docRoot}preview/download.html">Образы устройств</a>.
+
+</p>
+
+<p>
+  Мы будем предоставлять обновленные системные образы для этих устройств на каждом ключевом этапе. Вы
+также сможете загружать и записывать обновленные системные образы во флэш-память тестовых устройств
+вручную всегда, когда это будет необходимо. Это особенно удобно для автоматических
+сред тестирования, где может требоваться многократная перезапись в флэш-память
+устройства.
+</p>
+
+<p class="note"><strong>Примечание</strong>.
+<strong>В отличие от предварительной версии прошлого года, для устройств, запись во флэш-память которых выполнялась вручную, обновления по беспроводной связи предоставляться не будут</strong>.
+В этом году вы можете получать обновления по беспроводной связи, зарегистрировав устройства в программе
+бета-тестирования Android, см. подробные сведения в следующем разделе.
+</p>
+
+<h3 id="android_beta">Обновления по беспроводной связи в рамках программы бета-тестирования Android</h3>
+
+<p>
+  Новой функцией Android N является программа получения обновлений по сети, которая автоматически
+предоставляет последние обновления предварительной версии Android N непосредственно на устройства, зарегистрированные
+в программе тестирования. Участие в программе бесплатно и доступно всем, кто имеет поддерживаемые устройства,
+привязанные к учетной записи Google.
+</p>
+
+<p>
+  Для регистрации посетите веб-сайт <a href="https://g.co/androidbeta">программы бета-тестирования
+Android</a>. Вы увидите
+список всех устройств, привязанных к учетной записи, которые можно зарегистрировать
+в программе бета-тестирования Android.
+</p>
+
+<ol>
+  <li> Выберите устройства, для которых требуется получать обновления Android N.
+  <li> Нажмите Enroll, прочтите условия использования и подтвердите согласие с ними, затем нажмите OK.
+</ol>
+
+<p>
+  После регистрации на устройство придет обновление. В большинстве случаев
+для перехода на Android N не требуется выполнять полный сброс конфигурационных данных, однако,
+рекомендуется выполнить резервное копирование важных данных перед
+регистрацией устройства в программе.
+</p>
+
+<p>
+  При получении устройством обновлений рекомендуется загружать и
+устанавливать максимально быстро. Это требуется, чтобы быть в курсе
+последних изменений системного интерфейса, возможностей системы, особенностей API-интерфейсов и функций.
+</p>
+
+<p>
+  По завершению программы тестирования Developer Preview на зарегистрированные устройства
+будет отправлено обновление с официальной версией Android N.
+</p>
+
+<p>
+  Вы можете отменить регистрацию устройств в программе бета-тестирования Android в любое время на сайте
+программы. Перед отменой регистрации выполните резервное копирование данных на
+устройстве.
+</p>
+
+  <p class="note"><strong>Примечание</strong>.
+При отмене регистрации <strong>на вашем устройстве выполняется восстановление заводских настроек</strong>
+для последней версии
+Android 6.0 Marshmallow (не обязательно той версии, которая
+была установлена до регистрации устройства). Для обеспечения правильности установки
+ваши данные будут удалены с устройства, включая контакты, сообщения,
+фотографии и др.
+</p>
+
+<h3 id="documentation_and_sample_code">Документация и примеры кода</h3>
+
+<p>
+  Для ознакомления с Android&nbsp;N на сайте программы Developer Preview
+представлены следующие документы.
+</p>
+
+<ul>
+  <li> <a href="{@docRoot}preview/setup-sdk.html">Настройка в целях разработки для
+Android N</a> – содержит
+пошаговые инструкции по началу работы.</li>
+  <li> <a href="{@docRoot}preview/behavior-changes.html">Обзор изменений в
+работе системы</a> – указывает ключевые области для тестирования.</li>
+  <li> Документация по новым API-интерфейсам, включая <a href="{@docRoot}preview/api-overview.html">Обзор API</a>, доступный для загрузки
+<a href="{@docRoot}preview/setup-sdk.html#docs-dl">Справочник по
+API</a> и подробные руководства для разработчиков, в которых освещаются такие ключевые возможности, как поддержка многооконного режима,
+группирование уведомлений, поддержка нескольких языковых настроек и др.
+  <li> <a href="{@docRoot}preview/samples.html">Примеры кода</a>, где
+можно посмотреть реализацию поддержки разрешений доступа и других новых функций.
+  <li> <a href="{@docRoot}preview/support.html#release-notes">Примечания к выпуску</a>
+для текущей версии N Developer Preview, включая информацию об изменениях и
+отчеты о различиях.
+</ul>
+
+<h4 id="reference">Справочник по API, доступный для загрузки</h4>
+
+<p>
+  На этапе ранних обновлений предварительной версии вы сможете загрузить последний
+<a href="{@docRoot}preview/setup-sdk.html#docs-dl">Справочник по API
+для платформы Android N</a> в виде zip-архива. В нем также
+содержится отчет о различиях, позволяющий легко определить изменения в API-интерфейсах между
+API 23 и предыдущими версиями.
+</p>
+
+<p>
+  После окончательного утверждения API-интерфейсов Android N и назначения официального уровня API,
+вам будет предоставлен онлайн-справочник по этому API-интерфейсу по адресу <a href="https://developer.android.com">https://developer.android.com</a>.
+</p>
+
+<h3 id="support_resources">
+  Ресурсы поддержки
+</h3>
+
+<p>
+  При тестировании и разработке приложений в рамках программы N Developer Preview используйте следующие каналы
+для отправки отчетов о проблемах и отзывов.
+</p>
+
+<ul>
+  <li> <a href="https://code.google.com/p/android-developer-preview/">Система отслеживания ошибок
+в N Developer Preview</a> является <strong>основным каналом для отправки отзывов.</strong> С его помощью можно сообщать об ошибках, проблемах
+производительности и отправлять общие отзывы. Вы также сможете ознакомиться со списком
+<a href="{@docRoot}preview/bug">известных проблем</a> и
+выполнить поиск обходных путей для них. Мы будем держать вас в курсе по вашему вопросу после его сортировки и отправки
+на рассмотрение инженерам Android. </li>
+  <li> <a href="{@docRoot}preview/dev-community">Сообщество разработчиков для Android N</a> – это
+сообщество Google+, где можно <strong>общаться с другими разработчиками</strong>, работающими с
+Android N. Делитесь в сообществе своими наблюдениями и идеями, а также находите ответы на
+вопросы об Android N. Мы будем просматривать ваши сообщения и предоставлять ответы
+и необходимые рекомендации.</li>
+</ul>
+
+<h3 id="targeting">Выбор целевого уровня, предварительные версии API и публикация приложений</h3>
+
+<p>
+  Платформа N Developer Preview предоставляет ориентированные на разработку систему и библиотеку Android,
+в которых <strong>отсутствуют API-интерфейсы стандартного уровня</strong>. Если вы не хотите
+проверять свое приложение на совместимость (хотя мы настоятельно
+рекомендуем сделать это), выберите целевую предварительную версию Android N, задав для
+параметра <code><a href=
+  "{@docRoot}preview/setup-sdk.html#create-update">targetSdkVersion</a></code>
+своего приложения значение <code>“N”</code>.
+</p>
+
+<p>
+  В Android N Developer Preview представлены <strong>предварительные версии API-интерфейсов</strong>.
+Они не будут официально публиковаться до выпуска окончательной версии пакета SDK,
+намеченного на третий квартал 2016 г. Это значит, что в
+<strong>API-интерфейсы могут вноситься небольшие изменения</strong>, особенно в первые недели после
+запуска программы. Мы будем предоставлять вам сводку об изменениях с каждым
+обновлением Android N Developer Preview.
+</p>
+
+<p class="note">
+  <strong>Примечание</strong>. Несмотря на возможные изменения в предварительных версиях API-интерфейсов,
+соответствующие функциональные возможности системы работают стабильно и уже готовы для
+тестирования.
+</p>
+
+<p>
+  Политика Google Play <strong>однозначно запрещает публикацию приложений, разработанных для N Developer
+Preview</strong>. Когда будет доступен окончательный SDK для Android N, вы сможете
+установить в качестве целевого API-интерфейс Android N официального уровня и опубликовать приложение в Google
+Play через альфа- и бета-каналы выпуска. Тем временем, если вы хотите распространить приложение, предназначенное для проверки под
+Android N, используйте для этого электронную почту или разместите такие приложения на своем сайте
+для прямой загрузки.
+</p>
+
+<p>
+  После выхода полной версии Android N для AOSP и OEM, запланированного на третий квартал 2016 г.,
+можно будет публиковать приложения для Android N в общем доступе на
+Google Play.
+</p>
+
+
+<h2 id="how_to_get_started">Начало работы</h2>
+
+<p>
+  Чтобы приступить к тестированию своего приложения в Android N, выполните следующие действия.
+</p>
+
+<ol>
+  <li> Ознакомьтесь с <a href="{@docRoot}preview/api-overview.html">Обзором API</a>
+и сведениями об <a href="{@docRoot}preview/behavior-changes.html">изменениях в работе</a>, чтобы
+получить представление о новых возможностях платформы и о том, как это может повлиять на ваши приложения. В частности, узнайте подробнее
+о новых возможностях в отношении <a href="{@docRoot}preview/features/notification-updates.html">уведомлений</a> и
+<a href="{@docRoot}preview/features/multi-window.html">поддержки многооконного режима</a>.</li>
+  <li> Настройте свою среду, руководствуясь инструкциями в документе <a href="{@docRoot}preview/setup-sdk.html">Настройка пакета SDK для предварительной версии</a>
+и рекомендациями по конфигурированию тестовых устройств.</li>
+  <li> Соблюдайте <a href="https://developers.google.com/android/nexus/images">инструкции
+по записи во флэш-память</a> при выполнении записи системного образа Android N на устройство. </li>
+  <li> Просмотрите <a href="{@docRoot}preview/setup-sdk.html#docs-dl">Справочник по API</a>
+и <a href="{@docRoot}preview/samples.html">примеры кода Android N</a>, чтобы узнать больше
+о новых возможностях API-интерфейсов и о том, как использовать их в ваших приложениях.
+  <li> Присоединяйтесь к <a href="{@docRoot}preview/dev-community">сообществу разработчиков
+Android N</a>, чтобы всегда быть в курсе последних новостей и общаться с другими
+разработчиками, работающими с новой платформой.</li>
+</ol>
+
+<p>
+  Благодарим за участие в программе Android N Developer Preview!
+</p>
diff --git a/docs/html-intl/intl/ru/preview/samples.jd b/docs/html-intl/intl/ru/preview/samples.jd
new file mode 100644
index 0000000..1f674f3
--- /dev/null
+++ b/docs/html-intl/intl/ru/preview/samples.jd
@@ -0,0 +1,85 @@
+page.title=Примеры
+page.tags="preview", "samples", "android"
+page.image=images/cards/card-n-samples_2x.png
+@jd:body
+
+<p>
+  Следующие примеры кода представлены для Android N. Чтобы
+загрузить примеры в Android Studio, выберите в меню <b>File &gt; Import
+Samples</b>.
+</p>
+
+<p class="note">
+  <strong>Примечание.</strong> Эти загружаемые проекты предназначены для
+использования с Gradle и Android Studio.
+</p>
+
+
+<h3 id="mw">Многооконный режим</h3>
+<img src="{@docRoot}preview/images/sample-multiwindow.png" style="float: left; padding-right: 0.5em" height="250" width="156" />
+<p>
+  В данном примере показаны преимущества многооконного
+интерфейса для вашего приложения.
+</p>
+<p>
+  <a href="https://github.com/googlesamples/android-MultiWindowPlayground">
+Загрузить с сайта GitHub</a>
+</p>
+
+<div style="clear: both;"></div>
+<h3 id="an">Активные уведомления</h3>
+<img src="{@docRoot}preview/images/sample-activenotifications.png" style="float: left; padding-right: 0.5em" height="250" width="141" />
+<p>
+  В этом ранее созданном примере показана простая служба, которая отправляет
+уведомления с помощью NotificationCompat. Каждое непрочитанное сообщение от пользователя
+отправляется отдельным уведомлением.
+</p>
+<p>
+  Этот пример был обновлен с использованием новых функций уведомлений,
+доступных в Android N.
+</p>
+<p>
+  <a href="https://github.com/googlesamples/android-ActiveNotifications">
+Загрузить с сайта GitHub</a>
+</p>
+
+<div style="clear: both;"></div>
+<h3 id="ms">Служба сообщений</h3>
+<img src="{@docRoot}preview/images/sample-messagingservice.png" style="float: left; padding-right: 0.5em" height="250" width="150" />
+<p>
+  В этом предварительно созданном примере показано, как использовать
+NotificationManager для определения количества уведомлений,
+отображаемого приложением.
+</p>
+<p>
+  Этот пример был обновлен с использованием новых функций уведомлений,
+доступных в Android N.
+</p>
+<p>
+  <a href="https://github.com/googlesamples/android-MessagingService">
+Загрузить с сайта GitHub</a>
+</p>
+
+<div style="clear: both;"></div>
+<h3 id="fbe">Режим Direct Boot</h3>
+<img src="{@docRoot}preview/images/sample-directboot.png" style="float: left; padding-right: 0.5em" height="250" width="141" />
+<p>
+  В данном примере показано как сохранять и считывать данные в зашифрованном
+хранилище, которое всегда доступно только на загруженном устройстве.
+</p>
+<p>
+  <a href="https://github.com/googlesamples/android-DirectBoot">
+Загрузить с сайта GitHub</a>
+</p>
+
+<div style="clear: both;"></div>
+<h3 id="sda">Доступ к выделенным каталогам</h3>
+<img src="{@docRoot}preview/images/sample-scopeddirectoryaccess.png" style="float: left; padding-right: 0.5em" height="250" width="141" />
+<p>
+  В данном примере показано, как выполнять чтение и запись данных из определенных
+каталогов при уменьшении числа требуемых разрешений.
+</p>
+<p>
+  <a href="https://github.com/googlesamples/android-ScopedDirectoryAccess">
+Загрузить с сайта GitHub</a>
+</p>
\ No newline at end of file
diff --git a/docs/html-intl/intl/ru/preview/setup-sdk.jd b/docs/html-intl/intl/ru/preview/setup-sdk.jd
new file mode 100644
index 0000000..1fcbc0c
--- /dev/null
+++ b/docs/html-intl/intl/ru/preview/setup-sdk.jd
@@ -0,0 +1,226 @@
+page.title=Установка предварительной
+версииmeta.keywords="предварительная версия", "android"
+page.tags="preview", "developer preview"
+page.image=images/cards/card-n-sdk_2x.png
+
+@jd:body
+
+
+<div id="qv-wrapper">
+  <div id="qv">
+<ol>
+  <li><a href="#get-as13">Установка Android Studio 2.1</a></li>
+  <li><a href="#get-sdk">Установка Android N SDK</a>
+    <ol>
+      <li><a href="#docs-dl">Справочная документация</a>
+    </ol>
+  </li>
+  <li><a href="#java8">Установка Java 8 JDK и JRE</a></li>
+  <li><a href="#create-update">Обновление или создание проекта</a></li>
+  <li><a href="#next">Дальнейшие действия</a></li>
+</ol>
+  </div>
+</div>
+
+<p>Создание приложений для Android N Preview требует некоторых обновлений среды разработки,
+описанных в этом документе.</p>
+
+<p>Чтобы просто протестировать совместимость вашего приложения на системном образе
+Android N, следуйте рекомендациям руководства <a href="{@docRoot}preview/download.html">Тест на устройстве Android N</a>.</p>
+
+<img src="{@docRoot}preview/images/n-preview-setup.png" width="700" alt="" />
+
+
+<h2 id="get-as13">Установка Android Studio 2.1 (предварительная версия)</h2>
+
+<p>Платформа Android N добавляет поддержку <a href="{@docRoot}preview/j8-jack.html">возможностей языка Java 8</a>,
+которые требуют наличия нового компилятора, именуемого Jack. Последняя версия Jack
+в настоящее время поддерживается только в Android Studio 2.1. Поэтому если вы хотите использовать возможности
+языка Java 8 для
+разработки своего приложения, вам понадобится Android Studio 2.1. В противном случае вам не потребуется использовать компилятор Jack,
+однако все равно придется выполнить обновление до JDK 8 для компиляции под платформу Android N,
+как описано ниже.
+</p>
+
+<iframe width="400" height="225" src="//www.youtube.com/embed/SBbWGxXCMqQ?autohide=1&amp;showinfo=0" frameborder="0" allowfullscreen="" style="float: right; margin: 0 0 20px 20px;"></iframe>
+
+<p>Предварительная версия Android Studio 2.1 в настоящее время доступна на канале обновлений Canary.
+Если у вас уже есть Android Studio
+и вы не хотите обновлять ее до версии канала Canary, вы можете загрузить
+Android Studio 2.1 для отдельной установки и использовать ее для разработки
+под Android N, не затрагивая основную среду Android Studio.
+</p>
+
+<p>Чтобы загрузить Android Studio 2.1 для отдельной установки, выполните следующие шаги
+(если вы хотите обновить существующую установку Android Studio до версии 2.1, начните с шага 4).
+</p>
+
+<ol>
+  <li>Измените название существующей установки Android Studio, добавив к ней номер версии.
+Таким образом, при установке новая версия не заменит собой существующую.
+</li>
+  <li>Загрузите соответствующий ZIP-архив для своей операционной системы со
+<a href="http://tools.android.com/download/studio/canary/latest">страницы загрузки канала Canary</a>.
+  </li>
+  <li>Разархивируйте пакет и переместите содержимое Android Studio 2.1 в подходящее
+место для приложений вашей системы, затем запустите программу установки.</li>
+  <li>Откройте окно "Settings"
+(<strong>File &gt; Settings</strong> для Windows/Linux, или
+<strong>Android Studio &gt; Preferences</strong> для Mac). В левой
+панели выберите <strong>Appearance &amp; Behavior &gt; System Settings &gt;
+Updates</strong>.
+  </li>
+  <li>На панели "Updates" установите флажок <strong>Automatically
+check updates for</strong> и выберите
+<strong>Canary Channel</strong> в выпадающем списке.
+  </li>
+</ol>
+
+<p>Оставьте это окно настроек открытым для следующего шага.</p>
+
+
+<h2 id="get-sdk">Установка N Preview SDK</h2>
+
+<p>Чтобы начать разработку с использованием API-интерфейсов Android N, необходимо установить 
+Android N Preview SDK в Android Studio, выполнив следующие шаги.</p>
+
+<ol>
+  <li>На открытой панели "Updates" (шаг 4 выше)
+установите флажок <strong>Automatically
+check updates for Android SDK</strong> и выберите
+<strong>Preview Channel</strong> в выпадающем списке.
+  </li>
+  <li>Щелкните <strong>Check Now</strong>.</li>
+
+  <li>В левой панели выберите <strong>Appearance &amp; Behavior &gt; System
+Settings &gt; Android SDK</strong>.
+
+  <li>Выберите вкладку <strong>SDK Platforms</strong> и установите флажок
+<strong>Android N Preview</strong>.</li>
+
+  <li>Откройте вкладку <strong>SDK Tools</strong> и установите флажки
+<strong>Android SDK Build Tools</strong>, <strong>Android SDK
+Platform-Tools</strong> и <strong>Android SDK Tools</strong>.
+
+  </li>
+
+  <li>Нажмите <strong>OK</strong> и примите лицензионные
+соглашения для всех устанавливаемых пакетов.
+  </li>
+</ol>
+
+<h3 id="docs-dl">Загрузка справочной документации по N Preview</h3>
+
+<p>
+  Подробная информация по API-интерфейсам Android N содержится в справочной документации N Preview,
+которую можно загрузить из следующей таблицы.
+Этот пакет содержит сокращенную автономную версию веб-сайта для разработчиков Android
+и включает в себя обновленный справочник по API-интерфейсам Android N, а также сведения о различиях
+API.
+</p>
+
+<table>
+  <tr>
+    <th scope="col">Документация</th>
+    <th scope="col">Контрольные суммы</th>
+  </tr>
+  <tr>
+    <td style="white-space: nowrap">
+    <a href="{@docRoot}shareables/preview/n-preview-1-docs.zip">n-preview-1-docs.zip</a></td>
+    <td width="100%">
+      MD5: 4ab33ccbe698f46f125cc5b807cf9c2f<br>
+      SHA-1: 6a3880b3ccd19614daae5a4d0698ea6ae11c20a5
+    </td>
+  </tr>
+<table>
+
+
+
+<h2 id="java8">Установка Java 8 JDK и JRE</h2>
+
+<p>Чтобы скомпилировать ваше приложение для платформы Android N, необходимо использовать 
+Java 8 Developer Kit (JDK 8), а для использования некоторых инструментов с Android
+Studio 2.1 необходимо установить Java 8 Runtime Environment (JRE 8). Поэтому если у вас еще
+нет последних версий каждого из этих пакетов, загрузите JDK 8 и JRE 8
+прямо сейчас.</p>
+
+<p>Установите версию JDK в Android Studio, выполнив следующие шаги.</p>
+
+<ol>
+  <li>Откройте проект Android в Android Studio, затем откройте
+окно "Project Structure", выбрав <strong>File &gt; Project
+Structure</strong>. (Вы также можете установить структуру по умолчанию для всех проектов,
+выбрав <strong>File &gt; Other Settings &gt; Default Project Structure</strong>).
+
+   </li>
+   <li>В левой панели окна щелкните <strong>SDK Location</strong>.
+   </li>
+   <li>В поле <strong>JDK Location</strong> укажите расположение
+Java 8 JDK (нажмите кнопку справа
+для просмотра своих файлов), затем нажмите <strong>OK</strong>.
+   </li>
+</ol>
+
+<img src="{@docRoot}preview/images/studio-jdk-location.jpg" width="700" alt="" />
+
+
+<h2 id="create-update">Обновление или создание проекта</h2>
+
+<p>
+  Для использования API-интерфейсов Android N ваш проект должен быть сконфигурирован соответствующим образом.
+</p>
+
+<p>Если вы планируете использовать возможности языка Java 8, ознакомьтесь в документе
+<a href="{@docRoot}preview/j8-jack.html">Возможности языка Java 8</a>
+с информацией о поддерживаемых возможностях Java 8 и о настройке
+проекта с компилятором Jack.</p>
+
+
+<h3 id="update">Обновление существующего проекта</h3>
+
+<p>Откройте файл
+<code>build.gradle</code> для своего модуля и укажите в нем следующие значения:
+
+</p>
+
+<pre>
+android {
+  compileSdkVersion <strong>'android-N'</strong>
+  buildToolsVersion <strong>'24.0.0-rc1'</strong>
+  ...
+
+  defaultConfig {
+     minSdkVersion <strong>'N'</strong>
+     targetSdkVersion <strong>'N'</strong>
+     ...
+  }
+  ...
+}</pre>
+
+
+<h3 id="create">Создание нового проекта</h3>
+
+
+<p>Чтобы создать новый проект разработки с использованием Android N Preview SDK выполните следующие действия.</p>
+
+<ol>
+  <li>Выберите <strong>File &gt; New Project</strong> и выполняйте указания, пока не перейдете на страницу
+"Target Android Devices".
+  </li>
+  <li>На этой странице выберите вариант <strong>Phone and Tablet</strong>.</li>
+  <li>В разделе <strong>Phone and Tablet</strong> перейдите в список <strong>Minimum
+SDK</strong> и выберите
+<strong>N: Android API 23, N Preview (Preview)</strong>.</li>
+</ol>
+
+
+<h2 id="next">Дальнейшие действия</h2>
+
+<ul>
+  <li>Выполните рекомендации руководства <a href="{@docRoot}preview/download.html">Тест на устройстве Android N</a>.</li>
+  <li>Более подробную информацию о платформе Android N можно найти в документе
+<a href="{@docRoot}preview/behavior-changes.html">Изменения в работе</a>
+и в описании <a href="{@docRoot}preview/api-overview.html">API-интерфейсов и возможностей Android N</a>.
+</li>
+</ul>
+
diff --git a/docs/html-intl/intl/vi/preview/api-overview.jd b/docs/html-intl/intl/vi/preview/api-overview.jd
new file mode 100644
index 0000000..0e2c35e
--- /dev/null
+++ b/docs/html-intl/intl/vi/preview/api-overview.jd
@@ -0,0 +1,676 @@
+page.title=Android N cho Nhà phát triển
+meta.tags="preview", "androidn"
+page.tags="preview", "developer preview"
+page.image=images/cards/card-n-apis_2x.png
+@jd:body
+
+
+
+
+<div id="qv-wrapper">
+<div id="qv">
+  <h2>Các tính năng chính cho nhà phát triển</h2>
+  <ol>
+      <ul style="list-style-type:none;">
+        <li><a href="#multi-window_support">Hỗ trợ đa cửa sổ</a></li>
+        <li><a href="#notification_enhancements">Thông báo</a></li>
+        <li><a href="#jit_aot">Biên dịch JIT/AOT</a></li>
+        <li><a href="#quick_path_to_app_install">Cài đặt ứng dụng nhanh chóng</a></li>
+        <li><a href="#doze_on_the_go">Chế độ Ngủ sâu khi di chuyển</a></li>
+        <li><a href="#background_optimizations">Tối ưu hóa chạy ngầm</a></li>
+        <li><a href="#data_saver">Tiết kiệm dữ liệu</a></li>
+        <li><a href="#tile_api">API cho ô Cài đặt nhanh</a></li>
+        <li><a href="#number-blocking">Chặn số</a></li>
+        <li><a href="#call_screening">Sàng lọc cuộc gọi</a></li>
+        <li><a href="#multi-locale_languages">Bản địa và ngôn ngữ</a></li>
+        <li><a href="#icu4">API ICU4J trong Android</a></li>
+        <li><a href="#gles_32">API OpenGL ES 3.2</a></li>
+        <li><a href="#android_tv_recording">Ghi lại trên Android TV</a></li>
+        <li><a href="#android_for_work">Android cho Công việc</a></li>
+        <li><a href="#accessibility_enhancements">Trợ năng</a></li>
+        <li><a href="#direct_boot">Khởi động Trực tiếp</a></li>
+        <li><a href="#key_attestation">Chứng thực khóa</a></li>
+        <li><a href="#network_security_config">Cấu hình Bảo mật mạng</a></li>
+        <li><a href="#default_trusted_ca">CA an toàn mặc định</a></li>
+        <li><a href="apk_signature_v2">Lược đồ chữ ký số v2 cho tệp APK</a></li>
+        <li><a href="#scoped_directory_access">Truy cập thư mục theo phạm vi</a></li>
+      </ol>
+</div>
+</div>
+
+
+
+<p>Android N vẫn đang trong quá trình phát triển nhưng bây giờ bạn có thể dùng thử
+dưới dạng N Developer Preview. Các phần dưới đây sẽ nêu bật một số
+tính năng mới cho nhà phát triển. </p>
+
+<p>
+  Bạn cần xem <a href="{@docRoot}preview/behavior-changes.html">Các thay đổi Hành vi</a> để biết được
+  những phần thay đổi của nền tảng có thể ảnh hưởng đến ứng dụng của bạn, hãy xem
+  các hướng dẫn cho nhà phát triển để biết thêm về những tính năng chính và tải xuống tài liệu <a href="{@docRoot}preview/setup-sdk.html#docs-dl">Tham khảo API</a> để biết chi tiết về
+  các API mới.
+</p>
+
+<h2 id="multi-window_support">Hỗ trợ đa cửa sổ</h2>
+
+
+<p>Trong Android N, chúng tôi sẽ đưa vào nền tảng một tính năng đa nhiệm mới
+ rất được mong đợi &mdash; hỗ trợ đa cửa sổ. </p>
+
+  <p>Giờ đây người dùng có thể nhanh chóng mở đồng thời hai ứng dụng trên màn hình. </p>
+  <ul>
+  <li>Trên điện thoại và máy tính bảng
+chạy Android N, người dùng có thể chạy hai ứng dụng song song hai bên hoặc
+  trên dưới trong chế độ chia đôi màn hình. Người dùng có thể thay đổi kích thước của ứng dụng bằng cách kéo
+thanh phân chia ở giữa. </li>
+
+<li>Trên thiết bị Android TV, các ứng dụng có thể tự đặt vào <a href="{@docRoot}preview/features/picture-in-picture.html">chế độ
+hình-trong-hình</a>, cho phép ứng dụng tiếp tục hiển thị nội dung khi người dùng duyệt web hoặc
+tương tác với ứng dụng khác. Hãy xem bên dưới để biết thêm thông tin. </li>
+  </ul>
+
+<div class="col-4of10">
+<img src="{@docRoot}preview/images/mw-portrait.png" alt="" style="height:460px;padding-left:1em;" id="img-split-screen" />
+<p class="img-caption">
+  <strong>Hình 1.</strong> Các ứng dụng chạy trong chế độ chia màn hình.
+</p>
+  </div>
+
+<p>Đặc biệt là trên máy tính bảng và các thiết bị màn hình lớn khác, việc hỗ trợ đa cửa sổ
+cho phép bạn mang lại những cách thức mới thu hút người dùng. Thậm chí bạn còn có thể cho phép kéo thả trong
+ứng dụng để người dùng kéo nội dung một cách thuận tiện vào hoặc ra ngoài ứng dụng của bạn &mdash; đây là một cách
+nâng cao trải nghiệm của người dùng rất hiệu quả. </p>
+
+<p>Thêm tính năng hỗ trợ đa màn hình vào ứng dụng của bạn và cấu hình cách thức
+xử lý hiển thị đa cửa sổ là điều rất đơn giản. Ví dụ, bạn có thể chỉ định kích thước
+tối thiểu cho phép của hoạt động, ngăn người dùng thay đổi kích thước của hoạt động nhỏ hơn
+kích thước đó. Bạn cũng có thể vô hiệu hóa hiển thị đa cửa sổ cho ứng dụng của mình, giúp
+  đảm bảo hệ thống sẽ chỉ hiển thị ứng dụng của bạn ở chế độ toàn màn hình.</p>
+
+<p>
+  Để biết thêm thông tin, hãy xem tài liệu cho nhà phát triển <a href="{@docRoot}preview/features/multi-window.html">Hỗ trợ đa cửa sổ</a>
+.
+</p>
+
+<h2 id="notification_enhancements">Cải tiến thông báo</h2>
+
+<p>Chúng tôi đã thiết kế lại thông báo trong Android N để chúng được sử dụng dễ dàng và nhanh
+hơn. Một số các thay đổi bao gồm:</p>
+
+<ul>
+  <li>
+    <strong>Cập nhật Mẫu</strong>: Chúng tôi đã cập nhật các mẫu thông báo để
+  tạo điểm nhấn mới cho ảnh gây ấn tượng và ảnh đại diện. Nhà phát triển sẽ có thể
+   tận dụng các mẫu mới nhưng chỉ cần thực hiện một số chỉnh sửa nhỏ trong mã nguồn của họ.
+  </li>
+
+  <li>
+    <strong>Thông báo gộp</strong>: Hệ thống có thể nhóm các tin nhắn
+  lại với nhau, ví dụ như theo chủ đề tin nhắn và hiển thị thành nhóm. Người dùng có thể
+   thực hiện các thao tác như Hủy hoặc Lưu trữ chúng ngay tại chỗ. Nếu bạn từng
+   triển khai các thông báo cho Android Wear thì bạn đã làm quen với
+   mô hình này.
+  </li>
+
+  <li>
+    <strong>Trả lời trực tiếp</strong>: Đối với những ứng dụng giao tiếp theo thời gian thực,
+   hệ thống Android sẽ hỗ trợ trả lời ngay tại chỗ để người dùng có thể nhanh chóng phản hồi lại
+   một tin nhắn SMS hoặc tin nhắn văn bản trực tiếp bên trong giao diện thông báo đó.
+  </li>
+
+  <li>
+    <strong>Dạng xem tùy chỉnh</strong>: Hai API mới cho phép bạn sử dụng các trang trí
+   hệ thống như tiêu đề và hành động của thông báo khi sử dụng các dạng xem
+   tùy chỉnh trong thông báo.
+  </li>
+</ul>
+
+<div class="col-4of12">
+  <img src="{@docRoot}preview/images/notifications-1.png" alt="" style="padding:.5em;max-width:226px">
+</div>
+
+<div class="col-4of12">
+  <img src="{@docRoot}preview/images/notifications-3.png" alt="" style="padding:.5em;max-width:226px">
+</div>
+
+<div class="col-4of12">
+  <img src="{@docRoot}preview/images/notifications-2.png" alt="" style="padding:.5em;max-width:226px">
+</div>
+
+
+<p class="img-caption">
+  <strong>Hình 2.</strong> Thông báo gộp và trả lời trực tiếp.
+</p>
+
+<p>Hãy xem
+  hướng dẫn về <a href="{@docRoot}preview/features/notification-updates.html">Thông báo</a>
+ để biết cách triển khai các tính năng mới này.</p>
+
+
+
+<h2 id="jit_aot">Biên dịch JIT/AOT theo cấu hình</h2>
+
+<p>Trong Android N, chúng tôi đã bổ sung một trình biên dịch Just in Time (JIT) có mã được cấu hình cho
+ART, cho phép nó nâng cao hiệu năng của các ứng dụng Android tức thì khi
+chạy. Trình biên dịch JIT bổ trợ thêm cho trình biên dịch Ahead of Time (AOT) của ART
+và giúp cải hiện hiệu năng thời gian chạy, tiết kiệm không gian lưu trữ và tăng tốc độ các bản cập nhật của
+ứng dụng và cập nhật của hệ thống.</p>
+
+<p>Biên dịch theo cấu hình cho phép ART quản lý quá trình biên dịch AOT/JIT của từng ứng dụng
+tùy theo sử dụng thực tế cũng như các điều kiện trên thiết bị. Ví
+dụ, ART sẽ duy trì một cấu hình cho các phương thức hay dùng nhất của mỗi ứng dụng và có thể biên dịch trước
+rồi tạo bộ đệm cho các phương thức đó để có hiệu năng cao nhất. Những phần khác của ứng dụng
+sẽ được giữ nguyên không biên dịch cho đến khi chúng thực sự được sử dụng.</p>
+
+<p>Bên cạnh nâng cao hiệu năng cho các phần chính của ứng dụng, quá trình biên dịch
+theo cấu hình còn giúp giảm tổng lượng RAM được sử dụng của ứng dụng, bao gồm cả các
+tệp nhị phân liên quan. Tính năng này đặc biệt quan trọng trên các thiết bị ít bộ nhớ.</p>
+
+<p>ART sẽ quản lý quá trình biên dịch theo cấu hình bằng cách giảm tối thiểu tác động đến
+pin của thiết bị. Nó sẽ tiến hành quá trình biên dịch trước chỉ khi nào thiết bị nhàn rỗi và
+đang sạc, giúp tiết kiệm thời gian và pin bằng cách thực hiện công việc đó trước.</p>
+
+<h2 id="quick_path_to_app_install">Cài đặt ứng dụng nhanh chóng</h2>
+
+<p>Một trong những lợi ích dễ thấy nhất của trình biên dịch JIT của ART là tốc độ cài đặt
+ứng dụng và cập nhật hệ thống. Ngay cả các ứng dụng lớn cần vài phút để
+tối ưu và cài đặt trong Android 6.0 thì giờ đây có thể cài đặt chỉ trong một vài
+giây. Các cập nhật cho hệ thống cũng sẽ nhanh hơn vì không còn bước tối ưu hóa nữa. </p>
+
+<h2 id="doze_on_the_go">Chế độ Ngủ sâu khi di chuyển...</h2>
+
+<p>Chế độ Ngủ sâu đã được giới thiệu trong Android 6.0. Đây là một chế độ của hệ thống giúp tiết kiệm pin bằng cách trì hoãn
+các hoạt động CPU và mạng của ứng dụng khi thiết bị đang nhàn rỗi, ví dụ như khi thiết bị
+đang nằm trên bàn hoặc trong ngăn kéo. </p>
+
+<p>Giờ đây Chế độ Ngủ sâu trong Android N đã được cải tiến thêm và tiết kiệm pin ngay cả khi đang di chuyển.
+Bất kỳ khi nào màn hình đang tắt trong một khoảng thời gian và thiết bị không được cắm sạc thì
+Chế độ Ngủ sâu sẽ áp dụng tập con của các hạn chế CPU và mạng quen thuộc đối với các ứng dụng.
+Điều này có nghĩa là người dùng có thể tiết kiệm pin ngay cả khi đang mang thiết bị trong túi
+của họ.</p>
+
+
+<img src="/preview/images/doze-diagram-1.png" alt="" id="figure1" />
+<p class="img-caption">
+  <strong>Hình 3.</strong> Chế độ Ngủ sâu đang áp dụng
+   các hạn chế để cải thiện thời lượng pin ngay cả khi thiết bị không được đặt một chỗ.
+</p>
+
+
+<p>Sau một khoảng thời gian ngắn khi màn hình tắt và thiết bị chỉ chạy bằng nguồn pin, Chế độ Ngủ sâu
+sẽ hạn chế truy cập mạng và trì hoãn các tác vụ, đồng bộ. Trong các khoảng thời gian
+bảo trì ngắn, các ứng dụng sẽ được phép truy cập mạng và mọi tác vụ/đồng bộ
+bị trì hoãn sẽ được thực thi. Bật màn hình hoặc cắm sạc vào thiết bị sẽ đưa
+thiết bị thoát khỏi Chế độ Ngủ sâu.</p>
+
+<p>Khi để thiết bị nằm một chỗ lần nữa với màn hình được tắt và chạy bằng pin trong một
+khoảng thời gian thì Chế độ Ngủ sâu sẽ áp dụng toàn bộ các hạn chế CPU và mạng đối với {@link
+android.os.PowerManager.WakeLock}, báo thức {@link android.app.AlarmManager} và quét
+GPS/Wi-Fi.</p>
+
+<p>Bạn có thể áp dụng các thực hành tốt nhất tương tự để điều chỉnh ứng dụng của mình cho Chế độ Ngủ sâu cho dù
+thiết bị có đang di chuyển hay đứng yên. Do đó, nếu bạn đã cập nhật ứng dụng để xử lý
+Chế độ Ngủ sâu một cách tinh tế thì bạn hoàn toàn yên tâm. Nếu không, hãy tiến hành <a href="{@docRoot}training/monitoring-device-state/doze-standby.html#assessing_your_app">làm cho
+ ứng dụng thích ứng với Chế độ Ngủ sâu</a> ngay.</p>
+
+<h2 id="background_optimizations">Dự án Svelte: Tối ưu hóa chạy ngầm</h2>
+
+<p>Dự án Svelte là một nỗ lực liên tục nhằm tối giảm sử dụng RAM của hệ thống và các ứng dụng
+trên khắp hệ sinh thái các thiết bị Android. Trong Android N, dự án
+Svelte tập trung vào việc tối ưu hóa cách thức các ứng dụng chạy ngầm. </p>
+
+<p>Xử lý chạy ngầm là một phần quan trọng của hầu hết các ứng dụng. Khi sử dụng đúng cách, nó
+có thể giúp cho trải nghiệm người dùng của bạn trở nên tuyệt vời &mdash; tức thì, nhanh chóng và nhận biết được bối cảnh.
+Khi không sử dụng đúng cách, xử lý chạy ngầm có thể tiêu tốn RAM (và
+pin) một cách không cần thiết cũng như ảnh hưởng đến hiệu năng hệ thống cho các ứng dụng khác. </p>
+
+<p>Kể từ Android 5.0, {@link android.app.job.JobScheduler} đã trở thành
+cách thức được ưu tiên để thực hiện công việc chạy ngầm thích hợp
+cho người dùng. Ứng dụng có thể lên lịch cho các tác vụ trong khi cho phép hệ thống tối ưu hóa dựa trên
+các điều kiện về bộ nhớ, nguồn điện và kết nối. JobScheduler đem lại khả năng kiểm soát và
+sự đơn giản, và chúng tôi muốn mọi ứng dụng đều sử dụng nó. </p>
+
+<p>
+  Một giải pháp hiệu quả khác là <a href="https://developers.google.com/android/reference/com/google/android/gms/gcm/GcmNetworkManager">
+  <code>GCMNetworkManager</code></a>, thuộc một phần của Dịch vụ Google Play, cho phép
+ lên lịch tác vụ tương tự với khả năng tương thích trên các phiên bản Android
+  cũ.
+</p>
+
+<p>Chúng tôi đang tiếp tục kế thừa <code>JobScheduler</code> và
+<code>GCMNetworkManager</code> để đáp ứng nhiều hơn
+các trường hợp sử dụng của bạn &mdash; ví dụ như trong Android N giờ đây bạn đã có thể lên lịch cho công việc
+chạy ngầm dựa vào những thay đổi trong các Trình cung cấp Nội dung. Đồng thời, chúng tôi đang tiến hành
+loại bỏ một số mẫu cũ có thể làm giảm hiệu năng hệ thống,
+đặc biệt trên các thiết bị ít bộ nhớ.</p>
+
+<p>Trong Android N, chúng tôi sẽ loại bỏ ba truyền phát không biểu thị được sử dụng phổ biến &mdash;
+{@link android.net.ConnectivityManager#CONNECTIVITY_ACTION}, {@link
+  android.hardware.Camera#ACTION_NEW_PICTURE} và {@link
+  android.hardware.Camera#ACTION_NEW_VIDEO} &mdash; bởi vì các truyền phát này có thể đánh thức
+các tiến trình chạy ngầm của nhiều ứng dụng cùng lúc và sử dụng quá mức bộ nhớ và pin. Nếu
+ứng dụng của bạn đang nhận các truyền phát này thì hãy tận dụng N Developer Preview để
+  chuyển sang <code>JobScheduler</code> và các API liên quan khác thay thế. </p>
+
+<p>
+  Hãy xem tài liệu <a href="{@docRoot}preview/features/background-optimization.html">Tối ưu hóa
+ Chạy ngầm</a> để biết thêm chi tiết.
+</p>
+
+
+<h2 id="data_saver">Tiết kiệm dữ liệu</h2>
+
+<div class="col-5of12" style="margin-right:1.5em;">
+<img src="{@docRoot}preview/images/datasaver.png" style="border:2px solid #ddd">
+
+<p class="img-caption" style="padding-right:2em;">
+  <strong>Hình 4.</strong> Tính năng Tiết kiệm dữ liệu trong mục Settings.
+</p>
+  </div>
+
+<p>Trong vòng đời của một thiết bị di động thì chi phí gói cước dữ liệu di động về cơ bản
+sẽ cao hơn giá thành của chính thiết bị đó. Đối với nhiều người dùng, dữ liệu di động là một
+tài nguyên đắt đỏ họ muốn sử dụng tiết kiệm. </p>
+
+<p>Android N đã đưa vào chế độ Tiết kiệm dữ liệu, một dịch vụ hệ thống mới giúp giảm
+sử dụng dữ liệu di động, cho dù là chuyển vùng, gần đến kỳ thanh toán cước,
+hoặc trên một gói dữ liệu trả trước khiêm tốn. Tiết kiệm dữ liệu cho người dùng kiểm soát cách thức ứng dụng
+sử dụng dữ liệu di động và cho phép nhà phát triển cung cấp dịch vụ hiệu quả hơn khi Tiết kiệm
+dữ liệu được bật. </p>
+
+<p>Khi người dùng bật Tiết kiệm dữ liệu trong <strong>Settings</strong> và thiết bị đang
+sử dụng một mạng có đo lưu lượng thì hệ thống sẽ chặn việc sử dụng dữ liệu chạy ngầm và truyền tín hiệu cho ứng dụng
+để sử dụng ít dữ liệu hơn ở tiền cảnh bất cứ khi nào có thể &mdash; chẳng hạn như bằng cách giới hạn
+bit rate để truyền phát, giảm chất lượng hình ảnh, trì hoãn tạo trước bộ đệm để tối ưu,
+v.v. Người dùng có thể lập danh sách các ứng dụng cụ thể được phép sử dụng
+dữ liệu có tính lưu lượng được chạy ngầm ngay cả khi Tiết kiệm dữ liệu được bật.</p>
+
+<p>Android N mở rộng lớp {@link android.net.ConnectivityManager} để cung cấp cho các ứng dụng một
+cách thức <a href="{@docRoot}preview/features/data-saver.html#status">truy xuất
+các tùy chọn Tiết kiệm dữ liệu của người dùng</a> và <a href="{@docRoot}preview/features/data-saver.html#monitor-changes">theo dõi
+các thay đổi của tùy chọn</a>. Mọi ứng dụng cần kiểm tra xem người dùng đó đã bật Tiết kiệm
+Dữ liệu hay chưa và cố gắng giới hạn sử dụng dữ liệu chạy ở tiền cảnh và chạy ngầm.</p>
+
+
+<h2 id="tile_api">API cho ô Cài đặt nhanh</h2>
+
+
+<div style="float:right;max-width:320px">
+<img src="{@docRoot}preview/images/quicksettings.png" style="padding-left:1.5em;">
+
+<p class="img-caption" style="padding-left:2em;">
+  <strong>Hình 5.</strong> Các ô Cài đặt nhanh trong vùng hiển thị thông báo.
+</p>
+
+
+  </div><p>Cài đặt nhanh là một cách phổ biến và đơn giản để hiển thị các cài đặt và hành động quan trọng,
+trực tiếp từ khu vực thông báo. Trong Android N, chúng tôi đã mở rộng phạm vi của
+Cài đặt nhanh để khiến nó trở nên hữu ích và thuận tiện hơn nữa. </p>
+
+<p>Chúng tôi đã thêm không gian cho các ô Cài đặt nhanh mà người dùng có thể
+truy cập trên toàn bộ một vùng hiển thị được phân trang bằng cách vuốt sang trái hoặc phải. Chúng tôi cũng
+cho người dùng kiểm soát những ô Cài đặt nhanh nào sẽ xuất hiện và vị trí xuất hiện
+của chúng &mdash; người dùng chỉ cần kéo và thả để thêm hoặc di chuyển các ô. </p>
+
+<p>Đối với nhà phát triển, Android N cũng bổ sung một API mới cho phép định nghĩa các ô
+  Cài đặt nhanh của riêng bạn giúp người dùng dễ dàng truy cập tới các điều khiển và hành động quan trọng trong ứng dụng của bạn.</p>
+
+<p>
+  Các ô Cài đặt nhanh được dành riêng cho các điều khiển hoặc hành động
+   khẩn cấp hoặc thường xuyên được sử dụng, không nên dùng làm lối tắt để
+   khởi chạy một ứng dụng.
+</p>
+
+<p>
+  Một khi đã định nghĩa các ô của mình bạn có thể làm nổi chúng lên trước người dùng để họ có thể thêm
+  các ô này vào Cài đặt nhanh bằng cách chỉ cần kéo và thả.
+</p>
+
+<p>
+  Để biết thêm thông tin về việc tạo một ô ứng dụng, hãy xem
+  <code>android.service.quicksettings.Tile</code> trong tài liệu <a href="{@docRoot}preview/setup-sdk.html#docs-dl">Tham khảo API</a> có thể tải xuống.
+</p>
+
+
+
+<h2 id="number-blocking">Chặn số</h2>
+
+<p>Android N đã hỗ trợ chặn số điện thoại trong nền tảng này và cung cấp một
+ API khuôn khổ cho phép các nhà cung cấp dịch vụ duy trì một danh sách số bị chặn. 
+Ứng dụng SMS mặc định, ứng dụng gọi điện mặc định và các ứng dụng của nhà cung cấp có thể đọc và
+ghi vào danh sách số bị chặn. Các ứng dụng khác không thể truy cập vào danh sách này.</p>
+
+<p>Thông qua việc đưa chặn số thành một tính năng tiêu chuẩn của nền tảng, Android sẽ cung cấp
+cách thức thống nhất để các ứng dụng hỗ trợ chặn số trên một loạt các
+thiết bị. Những lợi ích mà ứng dụng có thể tận dụng gồm:</p>
+
+<ul>
+  <li> Số bị chặn cuộc gọi cũng sẽ bị chặn tin nhắn văn bản
+  <li> Số bị chặn có thể được duy trì qua các lần thiết lập lại và qua nhiều thiết bị thông qua tính năng Sao lưu &amp;
+Khôi phục
+  <li> Nhiều ứng dụng có thể sử dụng cùng một danh sách số bị chặn
+</ul>
+
+<p>Ngoài ra, việc tích hợp ứng dụng của nhà mạng thông qua Android cũng đồng nghĩa là các nhà mạng có thể
+đọc danh sách số bị chặn trên thiết bị và thực hiện chặn số từ phía nhà cung cấp dịch vụ
+cho người dùng để ngăn các cuộc gọi và tin nhắn văn bản không mong muốn tiếp cận người dùng
+thông qua bất kỳ phương tiện nào, ví dụ như điểm cuối VOIP hoặc điện thoại chuyển cuộc gọi.</p>
+
+<p>
+  Để biết thêm thông tin, hãy xem <code>android.provider.BlockedNumberContract</code>
+  trong tài liệu <a href="{@docRoot}preview/setup-sdk.html#docs-dl">Tham khảo
+ API</a> có thể tải xuống.
+</p>
+
+<h2 id="call_screening">Sàng lọc cuộc gọi</h2>
+
+<p>
+  Android N cho phép ứng dụng gọi điện mặc định sàng lọc các cuộc gọi đến. Ứng dụng
+  gọi điện thực hiện điều này bằng cách thực thi <code>CallScreeningService</code> mới,
+  cho phép ứng dụng gọi điện thực hiện một số hành động dựa trên
+   {@link android.telecom.Call.Details Call.Details} của cuộc gọi đến như:
+</p>
+
+<ul>
+  <li> Từ chối cuộc gọi đến
+  <li> Không cho phép cuộc gọi lưu trong nhật ký cuộc gọi
+  <li> Không hiển thị thông báo về cuộc gọi cho người dùng
+</ul>
+
+<p>
+  Để biết thêm thông tin, hãy xem <code>android.telecom.CallScreeningService</code>
+  trong tài liệu <a href="{@docRoot}preview/setup-sdk.html#docs-dl">Tham khảo
+ API</a> có thể tải xuống.
+</p>
+
+
+<h2 id="multi-locale_languages">Hỗ trợ đa bản địa, thêm nhiều ngôn ngữ</h2>
+
+
+<p>Android N cho phép người dùng chọn <strong>đa bản địa</strong> trong Settings,
+để hỗ trợ tốt hơn cho các trường hợp song ngữ. Các ứng dụng có thể sử dụng
+một API mới để truy xuất các bản địa được chọn của người dùng và sau đó mang đến
+trải nghiệm người dùng tinh tế hơn cho người dùng đa bản địa &mdash; như hiển thị các kết quả tìm kiếm bằng
+nhiều ngôn ngữ và không yêu cầu dịch các trang web sang ngôn ngữ mà
+người dùng đã biết.</p>
+
+<p>Ngoài hỗ trợ đa bản địa, Android N cũng mở rộng danh sách các ngôn ngữ
+khả dụng đối với người dùng. Nền tảng này cung cấp hơn 25 biến thể cho các ngôn ngữ
+được sử dụng phổ biến như Tiếng Anh, Tây Ban Nha, Pháp và Ả-rập. Nó cũng bổ sung hỗ trợ
+một phần cho hơn 100 ngôn ngữ mới.</p>
+
+<p>Các ứng dụng có thể truy xuất danh sách bộ bản địa theo người dùng bằng cách gọi <code>LocaleList.GetDefault()</code>. Để hỗ trợ số lượng bản địa mở rộng, Android N đang thay đổi cách thức
+phân giải tài nguyên. Hãy đảm bảo bạn kiểm tra và xác minh rằng ứng dụng của mình
+đang hoạt động như mong muốn theo lô-gic phân giải tài nguyên mới này.</p>
+
+<p>Để tìm hiểu về hành vi phân giải tài nguyên mới và các thực hành tốt nhất bạn nên
+thực hiện theo, hãy xem mục <a href="{@docRoot}preview/features/multilingual-support.html">Hỗ trợ đa ngôn ngữ</a>.</p>
+
+<h2 id="icu4">API ICU4J trong Android</h2>
+
+<p>
+  Android N đã cung cấp một tập nhỏ các API <a href="http://site.icu-project.org/">ICU4J</a> trong khuôn khổ Android thuộc
+  gói <code>android.icu</code>. Việc chuyển nhập sang rất dễ dàng và hầu hết chỉ liên quan đến
+  việc đổi từ không gian tên <code>com.java.icu</code> thành
+  <code>android.icu</code>. Nếu bạn đang sử dụng gói ICU4J trong ứng dụng
+  của mình thì việc chuyển đổi sang các API <code>android.icu</code> được cung cấp trong khuôn khổ
+   Android có thể giúp làm giảm đáng kể kích thước của tệp APK.
+</p>
+
+<p>
+  Để tìm hiểu thêm về API ICU4J trên Android, hãy xem <a href="{@docRoot}preview/features/icu4j-framework.html">Hỗ trợ ICU4J</a>.
+</p>
+
+
+
+<h2 id="gles_32">API OpenGL&trade; ES 3.2</h2>
+
+<p>Android N bổ sung các giao diện khuôn khổ và hỗ trợ nền tảng cho OpenGL ES 3.2, bao gồm:</p>
+
+<ul>
+  <li> Mọi phần mở rộng trong <a class="external-link" href="https://www.khronos.org/registry/gles/extensions/ANDROID/ANDROID_extension_pack_es31a.txt">Gói Tiện ích mở rộng Android</a></a> (AEP) ngoại trừ <code>EXT_texture_sRGB_decode</code>
+  <li> Bộ đệm khung hình dấu chấm động cho HDR và tạo bóng trì hoãn.
+  <li> Các lệnh vẽ BaseVertex cho phép chia gói và truyền phát hiệu quả hơn.
+  <li> Kiểm soát truy cập bộ đệm mạnh mẽ để giảm phí tổn quản lý của WebGL.
+</ul>
+
+<p>API khuôn khổ cho OpenGL ES 3.2 trên Android N được cung cấp với lớp
+<code>GLES32</code>. Khi sử dụng OpenGL ES 3.2, hãy đảm bảo khai báo
+yêu cầu trong tệp bản kê khai của bạn bằng thẻ <code>&lt;uses-feature&gt;</code> và
+thuộc tính <code>android:glEsVersion</code>. </p>
+
+<p>Để biết thông tin về sử dụng OpenGL ES, bao gồm cách kiểm tra phiên bản
+ OpenGL ES được hỗ trợ của thiết bị tại thời gian chạy, hãy xem mục <a href="{@docRoot}guide/topics/graphics/opengl.html">Hướng dẫn API OpenGL ES</a>.</p>
+
+
+<h2 id="android_tv_recording">Ghi lại trên Android TV</h2>
+
+<p>Android N bổ sung khả năng ghi và phát lại nội dung từ các dịch vụ
+nguồn vào của Android TV thông qua các API ghi lại. Được xây dựng dựa trên các API
+chuyển dịch thời gian sẵn có, các dịch vụ nguồn vào TV có thể kiểm soát dữ liệu của kênh nào được phép ghi lại, cách thức
+lưu trữ các phiên được ghi lại cũng như quản lý tương tác của người dùng với nội dung ghi lại. </p>
+
+<p>Để biết thêm thông tin, hãy xem <a href="{@docRoot}preview/features/tv-recording-api.html">API ghi lại của Android TV</a>.</p>
+
+
+<h2 id="android_for_work">Android cho Công việc</h2>
+
+<p>Android cho Công việc bổ sung nhiều tính năng mới và các API cho thiết bị chạy Android N.
+Dưới đây là một số điểm nổi bật &mdash; để xem danh sách đầy đủ các cập nhật của Android N
+liên quan đến Android cho Công việc, vui lòng xem Các thay đổi của Android cho Công việc.</p>
+
+<h3 id="work_profile_security_challenge">Thử thách bảo mật cấu hình công việc </h3>
+
+<p>
+  Người sở hữu cấu hình có thể chỉ định một thử thách bảo mật riêng cho các ứng dụng đang chạy trong
+  cấu hình công việc. Thử thách công việc được hiển thị khi người dùng cố gắng mở
+  bất kỳ ứng dụng công việc nào. Hoàn tất thành công thử thách bảo mật sẽ mở khóa
+  cấu hình công việc và giải mã nó nếu cần. Đối với người sở hữu cấu hình,
+  <code>ACTION_SET_NEW_PASSWORD</code> sẽ yêu cầu người dùng đặt một thử thách
+  công việc và <code>ACTION_SET_NEW_PARENT_PROFILE_PASSWORD</code> sẽ yêu cầu
+  người dùng đặt khóa thiết bị.
+</p>
+
+<p>
+  Người sở hữu cấu hình có thể đặt các chính sách mật khẩu riêng biệt cho thử thách công việc
+  (như độ dài mã PIN cần thiết hoặc có thể sử dụng dấu vân tay
+   để mở khóa cấu hình hay không) bằng <code>setPasswordQuality()</code>,
+ <code>setPasswordMinimumLength()</code> và các phương thức liên quan. Người sở hữu
+  cấu hình cũng có thể cài khóa thiết bị bằng thực thể <code>DevicePolicyManager</code>
+ được trả về bởi phương thức <code>getParentProfileInstance()</code> mới.
+  Ngoài ra, người sở hữu cấu hình có thể tùy chỉnh màn hình xác thực thông tin cho
+  thử thách công việc bằng các phương thức <code>setOrganizationColor()</code> và
+   <code>setOrganizationName()</code> mới.
+</p>
+<h3 id="turn_off_work">Tắt công việc </h3>
+
+<p>Trên một thiết bị có cấu hình công việc, người dùng có thể bật hoặc tắt chế độ công việc. Khi chế độ công việc được
+tắt người dùng được quản lý sẽ tạm thời bị tắt, khiến vô hiệu hóa các ứng dụng
+cấu hình công việc, đồng bộ chạy ngầm và các thông báo. Điều này bao gồm cả ứng dụng
+của người sở hữu cấu hình. Khi chế độ công việc bị tắt, hệ thống sẽ hiển thị biểu tượng
+trạng thái liên tục để nhắc người dùng đó rằng họ không thể khởi chạy các ứng dụng công việc. Trình khởi chạy
+sẽ chỉ báo rằng các ứng dụng và widget công việc không khả dụng. </p>
+
+<h3 id="always_on_vpn">VPN luôn bật </h3>
+
+<p>Người sở hữu thiết bị và người sở hữu cấu hình có thể đảm bảo rằng những ứng dụng công việc luôn kết nối
+thông qua một VPN chỉ định. Hệ thống sẽ tự động khởi động VPN đó sau khi
+thiết bị khởi động.</p>
+
+<p>
+  Các phương thức <code>DevicePolicyManager</code> mới gồm
+  <code>setAlwaysOnVpnPackage()</code> và
+  <code>getAlwaysOnVpnPackage()</code>.
+</p>
+
+<p>Do các dịch vụ VPN có thể được gắn kết trực tiếp bởi hệ thống mà không cần tương tác
+của ứng dụng, các máy khách VPN cần xử lý các điểm bắt đầu cho VPN luôn bật. Giống
+trước đây, các dịch vụ được chỉ định tới hệ thống bằng một bộ lọc ý định phù hợp với
+hành động <code>android.net.VpnService</code>. </p>
+
+<p>
+  Người dùng cũng có thể đặt thủ công các máy khách VPN luôn bật có cài đặt các phương thức
+   <code>VPNService</code> trong người dùng chính bằng
+  <strong>Settings&gt;More&gt;Vpn</strong>.
+</p>
+
+<h2 id="accessibility_enhancements">Cải tiến trợ năng</h2>
+
+<p>Android N nay đã hỗ trợ Cài đặt Khả năng nhìn trực tiếp trên màn hình Chào mừng khi thiết lập
+thiết bị mới. Điều này giúp người dùng rất dễ dàng khám phá và cấu hình
+các tính năng trợ năng trên thiết bị của họ, bao gồm cử chỉ phóng đại, cỡ
+phông chữ, kích thước hiển thị và TalkBack. </p>
+
+<p>Với các tính năng trợ năng được bố trí ngày càng dễ thấy hơn, khi được bật
+khả năng người dùng sẽ thử ứng dụng của bạn sẽ cao hơn. Hãy đảm bảo bạn kiểm thử ứng dụng của mình
+trước với các cài đặt này được bật. Bạn có thể bật chúng trong Settings &gt;
+Accessibility.</p>
+
+<p>Ngoài ra, trong Android N, các dịch vụ trợ năng đã có thể trợ giúp người dùng bị các tổn thương
+vận động chạm vào màn hình. API mới cho phép xây dựng các dịch vụ với những
+tính năng như theo dõi chuyển động của khuôn mặt, theo dõi chuyển động của mắt, quét điểm, v.v. nhằm
+đáp ứng nhu cầu những người dùng này.</p>
+
+<p>Để biết thêm thông tin, hãy xem <code>android.accessibilityservice.GestureDescription</code>
+	  trong tài liệu <a href="{@docRoot}preview/setup-sdk.html#docs-dl">Tham khảo API</a> có thể tải xuống.</p>
+
+
+<h2 id="direct_boot">Khởi động Trực tiếp</h2>
+
+<p>Khởi động Trực tiếp cải thiện thời gian khởi động của thiết bị và cho phép các ứng dụng
+đã đăng ký có chức năng hạn chế ngay cả sau khi khởi động lại ngoài dự kiến.
+Ví dụ, nếu một thiết bị được mã hóa khởi động lại khi người dùng đang ngủ thì
+báo thức, tin nhắn và các cuộc gọi đến đã đăng ký có thể tiếp tục thông báo
+cho người dùng như thường lệ. Điều này cũng có nghĩa là các dịch vụ trợ năng cũng sẽ
+   khả dụng ngay sau khi khởi động xong.</p>
+
+<p>Khởi động Trực tiếp sử dụng mã hóa theo tệp trong Android N
+để bật các chính sách mã hóa chi tiết cho cả dữ liệu của hệ thống và ứng dụng.
+Hệ thống sẽ sử dụng một bộ lưu trữ mã hóa thiết bị cho dữ liệu hệ thống được chọn và dữ liệu ứng dụng
+đã đăng ký công khai. Theo mặc định, một bộ lưu trữ mã hóa thông tin xác thực sẽ được sử dụng cho mọi
+   dữ liệu hệ thống, dữ liệu người dùng, ứng dụng và dữ liệu của ứng dụng khác. </p>
+
+<p>Trong quá trình khởi động, hệ thống sẽ khởi động vào chế độ hạn chế và chỉ có quyền truy cập tới
+dữ liệu mã hóa thiết bị mà thôi, và không có quyền truy cập thông thường tới ứng dụng hoặc dữ liệu.
+Nếu bạn có các thành phần muốn chạy trong chế độ này thì bạn có thể đăng ký
+chúng bằng cách đặt cờ trong bản kê khai. Sau khi khởi động, hệ thống sẽ kích hoạt
+các thành phần đã đăng ký bằng cách truyền phát ý định <code>LOCKED_BOOT_COMPLETED</code>
+. Hệ thống sẽ đảm bảo cho dữ liệu mã hóa thiết bị đã đăng ký sẽ khả dụng
+trước khi mở khóa. Mọi dữ liệu khác sẽ không khả dụng cho tới khi Người dùng xác nhận thông tin xác thực trên màn hình khóa
+   của họ để giải mã nó. </p>
+
+Để biết thêm thông tin, hãy xem <a href="{@docRoot}preview/features/direct-boot.html">Khởi động Trực tiếp</a>.</p>
+</p>
+
+
+<h2 id="key_attestation">Chứng thực khóa</h2>
+
+<p>Các bộ lưu trữ khóa dựa trên phần cứng cung cấp một phương thức an toàn hơn rất nhiều để tạo, lưu trữ,
+và sử dụng các khóa mật mã trên thiết bị Android. Chúng bảo vệ các khóa trước
+nhân Linux, trước các lỗ hổng bảo mật tiềm tàng của Android và trước việc trích xuất
+từ các máy bị giành quyền điều khiển và bị can thiệp vào các tệp hệ thống (máy bị root).</p>
+
+<p>Android N đã đưa ra tính năng Chứng thực khóa để sử dụng các bộ lưu trữ khóa dựa trên phần cứng một cách
+ dễ dàng và bảo mật hơn. Các ứng dụng và dịch vụ không thuộc thiết bị có thể sử dụng Chứng thực
+khóa để xác định chắc chắn xem một cặp khóa RSA hoặc EC có
+dựa trên phần cứng hay không, các đặc điểm của cặp khóa đó là gì và
+  các ràng buộc nào được áp dụng cho việc sử dụng và tính hợp lệ của cặp khóa đó. </p>
+
+<p>Các ứng dụng và dịch vụ không thuộc thiết bị có thể yêu cầu thông tin về một cặp khóa
+thông qua chứng chỉ chứng thực X.509. Chứng chỉ này phải được ký bởi một khóa
+chứng thực hợp lệ. Khóa chứng thực là một khóa ký ECDSA, được
+đưa vào bộ lưu trữ khóa dựa trên phần cứng của thiết bị tại nhà máy.
+Do đó, một chứng chỉ chứng thực được ký bởi khóa
+chứng thực hợp lệ sẽ xác nhận sự tồn tại của bộ lưu trữ khóa dựa trên phần cứng, kèm theo
+   chi tiết về các cặp khóa trong bộ lưu trữ khóa đó.</p>
+
+<p>Để chắc chắn thiết bị đang sử dụng ảnh
+Android bảo mật, chính thức từ nhà máy, Chứng thực khóa yêu cầu <a class="external-link" href="https://source.android.com/security/verifiedboot/verified-boot.html#bootloader_requirements">bootloader</a>
+ của thiết bị cung cấp thông tin sau cho <a class="external-link" href="https://source.android.com/security/trusty/index.html">Môi trường Thực thi
+  An toàn (TEE)</a>:</p>
+
+<ul>
+<li>Phiên bản HĐH và cấp vá lỗi được cài đặt trên thiết bị</li>
+<li>Khóa công khai <a href="https://source.android.com/security/verifiedboot/index.html" class="external-link">Khởi động được xác thực</a> và trạng thái khóa</li>
+  </ul>
+
+<p>Để biết thêm thông tin về tính năng bộ lưu trữ khóa dựa trên phần cứng,
+hãy xem hướng dẫn <a href="https://source.android.com/security/keystore/" class="external-link">Bộ lưu trữ khóa dựa trên phần cứng</a>.</p>
+
+<p>Ngoài Chứng thực khóa, Android N cũng giới thiệu
+   các khóa dựa vào vân tay mà không được thu hồi khi đăng ký vân tay.</p>
+
+<h2 id="network_security_config">Cấu hình Bảo mật mạng</h2>
+
+<p>Trong Android N, các ứng dụng có thể tùy biến hành vi của các kết nối
+bảo mật (HTTPS, TLS) của chúng một cách an toàn mà không cần chỉnh sửa mã nhờ sử dụng khai báo
+<em>Cấu hình Bảo mật mạng</em> thay vì sử dụng các API lập trình truyền thống
+dễ xảy ra lỗi (vd: X509TrustManager).</p>
+
+  <p>Các tính năng được hỗ trợ:</p>
+<ul>
+<li><b>Nguồn tin cậy tùy chỉnh.</b> Cho phép một ứng dụng tùy chỉnh
+Nhà cung cấp chứng chỉ (CA) nào sẽ được tin cậy cho các kết nối bảo mật của ứng dụng. Ví
+dụ, tin cậy các chứng chỉ tự ký cụ thể hoặc một bộ giới hạn các CA công khai.
+</li>
+<li><b>Chỉ khống chế khi gỡ lỗi.</b> Cho phép nhà phát triển ứng dụng an toàn gỡ lỗi
+các kết nối bảo mật của ứng dụng mà không tạo thêm rủi ro cho phần cơ sở
+đã cài đặt.
+</li>
+<li><b>Không sử dụng truyền gửi văn bản chưa mã hóa.</b> Cho phép một ứng dụng tự bảo vệ mình khỏi việc
+vô tình sử dụng truyền gửi văn bản chưa mã hóa cleartext.</li>
+<li><b>Ghim chứng chỉ.</b> Một tính năng nâng cao cho phép một ứng dụng
+  giới hạn các khóa máy chủ nào là an toàn đối với các kết nối bảo mật.</li>
+</ul>
+
+<p>Để biết thêm thông tin, hãy xem <a href="{@docRoot}preview/features/security-config.html">Cấu hình Bảo mật
+ mạng</a>.</p>
+
+<h2 id="default_trusted_ca">Nhà cung cấp Chứng chỉ An toàn mặc định</h2>
+
+<p>Theo mặc định, các ứng dụng nhắm mục tiêu Android N chỉ tin cậy các chứng chỉ do hệ thống cấp
+và không còn tin cậy các Nhà cung cấp chứng chỉ (CA) do người dùng thêm vào. Các ứng dụng nhắm mục tiêu Android
+N muốn tin cậy các CA do người dùng thêm vào nên sử dụng
+<a href="{@docRoot}preview/features/security-config.html">Cấu hình Bảo mật mạng</a> để
+chỉ định cách thức tin cậy các CA của người dùng.</p>
+
+<h2 id="apk_signature_v2">Lược đồ chữ ký số v2 cho tệp APK</h2>
+
+<p>Lớp PackageManager nay đã hỗ trợ xác thực ứng dụng bằng Lược đồ chữ ký số v2
+APK. Lược đồ chữ ký số v2 APK là một lược đồ chữ ký số trên toàn bộ tệp
+làm tăng đáng kể tốc độ xác thực và tăng cường sự bảo đảm
+   toàn vẹn bằng cách phát hiện các thay đổi trái phép đối với các tệp APK.</p>
+
+<p>Để bảo đảm tương thích ngược, một tệp APK phải được ký bằng lược đồ
+chữ ký số v1 (Lược đồ chữ ký số JAR) trước khi được ký bằng lược đồ chữ ký số v2.
+Với lược đồ chữ ký số v2, quá trình xác thực sẽ thất bại nếu bạn ký tệp APK bằng một
+  chứng chỉ khác sau khi ký bằng lược đồ v2. </p>
+
+<p>Hỗ trợ cho lược đồ chữ ký số v2 cho tệp AKP sẽ có sau trong N Developer
+Preview.</p>
+
+<h2 id="scoped_directory_access">Truy cập thư mục theo phạm vi</h2>
+
+<p>Trong Android N, ứng dụng có thể sử dụng các API mới để yêu cầu truy cập vào các thư mục <a href="{@docRoot}guide/topics/data/data-storage.html#filesExternal">bộ nhớ lưu trữ
+ngoài</a> riêng, bao gồm các thư mục trên phương tiện có thể tháo ra như thẻ
+SD. Các API mới đã tối giản cách thức ứng dụng của bạn truy cập các thư mục lưu trữ ngoài
+tiêu chuẩn như thư mục <code>Pictures</code>. Các ứng dụng
+như ứng dụng quản lý ảnh có thể sử dụng các API này thay vì sử dụng
+<code>READ_EXTERNAL_STORAGE</code> để cấp quyền truy cập tới mọi thư mục
+lưu trữ, hoặc Khuôn khổ Truy cập Lưu trữ để giúp người dùng di chuyển tới
+thư mục đó.</p>
+
+<p>Ngoài ra, các API mới này cũng đơn giản hóa các bước mà người dùng thực hiện để cấp quyền truy cập
+bộ nhớ lưu trữ ngoài cho ứng dụng của bạn. Khi bạn sử dụng các API mới, hệ thống sẽ sử dụng một UI cấp quyền
+đơn giản cung cấp các thông tin chi tiết rõ ràng về thư mục nào ứng dụng đang
+yêu cầu quyền truy cập.</p>
+
+<p>Để biết thêm thông tin, hãy xem tài liệu cho nhà phát triển
+<a href="{@docRoot}preview/features/scoped-folder-access.html">Truy cập
+Thư mục theo Phạm vi</a>.</p>
+
+
+
+
+
+
diff --git a/docs/html-intl/intl/vi/preview/behavior-changes.jd b/docs/html-intl/intl/vi/preview/behavior-changes.jd
new file mode 100644
index 0000000..2c287504
--- /dev/null
+++ b/docs/html-intl/intl/vi/preview/behavior-changes.jd
@@ -0,0 +1,480 @@
+page.title=Các thay đổi Hành vi
+page.keywords=preview,sdk,compatibility
+meta.tags="preview", "compatibility"
+page.tags="preview", "developer preview"
+page.image=images/cards/card-n-changes_2x.png
+@jd:body
+
+
+<div id="qv-wrapper">
+<div id="qv">
+
+<h2>Trong tài liệu này</h2>
+
+<ol>
+  <li><a href="#perf">Cải thiện Hiệu năng</a>
+    <ol>
+      <li><a href="#doze">Chế độ Ngủ sâu</a></li>
+      <li><a href="#bg-opt">Tối ưu hóa Chạy ngầm</a></li>
+    </ol>
+  </li>
+  <li><a href="#perm">Thay đổi Quyền</a></li>
+  <li><a href="#accessibility">Cải thiện Trợ năng</a>
+    <ol>
+      <li><a href="#screen-zoom">Thu phóng Màn hình</a></li>
+      <li><a href="#vision-settings">Cài đặt Khả năng nhìn trong Trình Thiết lập</a></li>
+    </ol>
+  </li>
+  <li><a href="#ndk">Liên kết Ứng dụng NDK với Thư viện Nền tảng</a></li>
+  <li><a href="#afw">Android cho Công việc</a></li>
+</ol>
+
+<h2>Xem thêm</h2>
+<ol>
+  <li><a href="{@docRoot}preview/api-overview.html">
+    Tổng quan về API Android N</a></li>
+</ol>
+
+</div>
+</div>
+
+
+<p>
+  Với các tính năng và khả năng mới, Android N
+  cũng có một số các thay đổi hành vi của hệ thống và API. Tài liệu
+  này nêu bật một số các thay đổi quan trọng mà bạn cần biết và cân nhắc cho
+   ứng dụng của mình.
+</p>
+
+<p>
+  Nếu bạn đã từng phát hành ứng dụng cho Android, hãy lưu ý rằng các thay đổi
+  trong nền tảng này có thể tác động đến ứng dụng của bạn.
+</p>
+
+
+<h2 id="perf">Cải thiện Hiệu năng</h2>
+
+<p>
+  Android N có chứa các thay đổi hành vi của hệ thống nhằm cải thiện thời lượng
+  pin của thiết bị, sử dụng RAM và hiệu năng ứng dụng. Các thay đổi này có thể tác động đến
+   tính khả dụng của tài nguyên và các thông báo hệ thống đối tới ứng dụng. Bạn
+  nên tìm hiểu các thay đổi này và đánh giá xem ứng dụng cần phải điều chỉnh như thế nào đối với
+  các thay đổi.
+</p>
+
+<h3 id="doze">Chế độ Ngủ sâu</h3>
+
+<p>
+  Được đưa vào Android 6.0 (Mức API 23), Chế độ Ngủ sâu cải thiện thời lượng pin bằng cách
+  trì hoãn các hoạt động của CPU và mạng khi người dùng không cắm sạc,
+   không di chuyển và tắt màn hình thiết bị. Android N 
+  thêm các cải tiến cho Chế độ Ngủ sâu bằng cách sử dụng một tập con các hạn chế của CPU và mạng
+  khi thiết bị không được cắm sạc với màn hình bị tắt, nhưng không nhất thiết
+  phải để một chỗ, ví dụ như một thiết bị cầm tay di chuyển trong túi của người dùng.
+</p>
+
+
+<img src="{@docRoot}preview/images/doze-diagram-1.png" alt="" height="251px" id="figure1" />
+<p class="img-caption">
+  <strong>Hình 1.</strong> Minh họa cách thức Chế độ Ngủ sâu áp dụng ở cấp đầu tiên của
+  các hạn chế hoạt động hệ thống nhằm cải thiện thời lượng pin.
+</p>
+
+<p>
+  Khi một thiết bị dùng nguồn điện từ pin và màn hình bị tắt trong một khoảng thời gian
+  nhất định, thiết bị sẽ chuyển vào Chế độ Ngủ sâu và áp dụng tập con đầu tiên của các hạn chế: Nó
+  sẽ ngắt truy cập mạng của ứng dụng và trì hoãn các tác vụ và các đồng bộ. Nếu thiết bị
+  được đặt một chỗ trong một khoảng thời gian nhất định sau khi vào Chế độ Ngủ sâu thì hệ thống sẽ áp dụng
+   các hạn chế còn lại của Chế độ Ngủ sâu thành {@link android.os.PowerManager.WakeLock}, báo thức
+{@link android.app.AlarmManager}, GPS, quét Wi-Fi. Cho dù
+  một số hoặc tất cả các hạn chế của Chế độ Ngủ sâu có được áp dụng hay không thì hệ thống sẽ đánh thức
+  thiết bị trong các khoảng thời gian bảo trì ngắn, trong đó các ứng dụng được phép
+  truy cập mạng và có thể thực thi mọi tác vụ/đồng bộ bị trì hoãn.
+</p>
+
+
+<img src="{@docRoot}preview/images/doze-diagram-2.png" alt="" id="figure2" />
+<p class="img-caption">
+  <strong>Hình 2.</strong> Minh họa cách Chế độ Ngủ sâu áp dụng cấp thứ hai của
+   các hạn chế hoạt động hệ thống sau khi thiết bị được đặt một chỗ trong một khoảng thời gian nhất định.
+</p>
+
+<p>
+  Lưu ý rằng việc bật màn hình hoặc cắm sạc sẽ đưa thiết bị thoát Chế độ Ngủ sâu và
+  loại bỏ các hạn chế xử lý này. Hành vi bổ sung này không
+  ảnh hưởng đến các khuyến nghị và các thực hành tốt nhất khi thích ứng cho ứng dụng của bạn với phiên bản
+  Chế độ Ngủ sâu được đưa vào Android 6.0 (API mức 23) trước đó, như mô tả trong
+  <a href="{@docRoot}training/monitoring-device-state/doze-standby.html">
+  Tối ưu hóa Chế độ Ngủ sâu và Chế độ Chờ của Ứng dụng</a>.  Bạn nên tiếp tục
+  làm theo các khuyến nghị đó, ví dụ như sử dụng Google Cloud Messaging (GCM) để
+  gửi và nhận tin nhắn, và hãy tiến hành áp dụng các bản cập nhật để nhận
+  hành vi Chế độ Ngủ sâu bổ sung.
+</p>
+
+
+<h3 id="bg-opt">Dự án Svelte: Tối ưu hóa Chạy ngầm</h3>
+
+<p>
+  Android N gỡ bỏ ba truyền phát không biểu thị để giúp tối ưu hóa cả
+  việc sử dụng bộ nhớ lẫn tiêu thụ điện năng. Thay đổi này là điều cần thiết bởi các truyền phát
+  không biểu thị thường xuyên khởi động các ứng dụng đã được đăng ký để lắng nghe chúng dưới
+  nền. Gỡ bỏ các truyền phát này có thể đem lại lợi ích lớn đối với hiệu năng
+  của thiết bị và trải nghiệm người dùng.
+</p>
+
+<p>
+  Các thiết bị di động thường xuyên gặp phải những thay đổi về kết nối, chẳng hạn như khi di chuyển
+  giữa Wi-Fi và dữ liệu di động. Hiện tại, các ứng dụng có thể theo dõi những thay đổi về
+  kết nối bằng cách đăng ký một bộ thu truyền phát cho {@link
+  android.net.ConnectivityManager#CONNECTIVITY_ACTION} không biểu thị trong bản kê khai
+  của chúng. Vì nhiều ứng dụng đăng ký để nhận truyền phát này do đó một hoạt động chuyển mạng
+  duy nhất cũng có thể khiến tất cả các ứng dụng thức dậy và xử lý truyền phát đó ngay
+  lập tức.
+</p>
+
+<p>
+  Tương tự, các ứng dụng có thể đăng ký nhận truyền phát {@link
+  android.hardware.Camera#ACTION_NEW_PICTURE} và {@link
+  android.hardware.Camera#ACTION_NEW_VIDEO} không biểu thị từ các ứng dụng khác, ví dụ như
+ứng dụng Camera. Khi một người dùng chụp ảnh với ứng dụng Camera thì những ứng dụng này sẽ thức dậy
+  để xử lý truyền phát đó.
+</p>
+
+<p>
+  Để loại bỏ các vấn đề này, Android N áp dụng các cách tối ưu hóa
+  sau:
+</p>
+
+<ul>
+  <li>Ứng dụng nhắm mục tiêu Android N sẽ không nhận các truyền phát {@link
+  android.net.ConnectivityManager#CONNECTIVITY_ACTION}, ngay cả khi chúng
+  có các mục nhập của trong bản kê khai yêu cầu thông báo về các sự kiện này. Những ứng dụng đang chạy
+  ở tiền cảnh vẫn có thể lắng nghe {@code CONNECTIVITY_CHANGE} qua
+ luồng chính của chúng nếu yêu cầu thông báo bằng {@link
+  android.content.BroadcastReceiver}.
+  </li>
+
+  <li>Ứng dụng không thể gửi hoặc nhận các truyền phát {@link
+  android.hardware.Camera#ACTION_NEW_PICTURE} hoặc {@link
+  android.hardware.Camera#ACTION_NEW_VIDEO}. Cách tối ưu này
+  tác động đến mọi ứng dụng, không chỉ các ứng dụng nhắm mục tiêu Android N.
+  </li>
+</ul>
+
+<p>
+  Các lần phát hành Android sau này có thể loại bỏ thêm các truyền phát không biểu thị, cũng
+   như các dịch vụ chạy ngầm không còn liên kết. Vì lý do này, bạn nên tránh dùng hoặc
+  gỡ bỏ các phụ thuộc trên các bộ thu được khai báo trong bản kê khai đối với các truyền phát không biểu thị,
+  cũng như các dịch vụ chạy ngầm.
+</p>
+
+<p>
+  Khuôn khổ Android cung cấp một số giải pháp để giảm thiểu sự cần thiết đối với
+  các truyền phát không biểu thị hoặc các dịch vụ chạy ngầm này. Ví dụ, API {@link
+  android.app.job.JobScheduler} cung cấp một cơ chế lên lịch hiệu quả
+ cho các hoạt động mạng khi đáp ứng các điều kiện được chỉ định, ví dụ như kết nối tới một
+  mạng không đo lưu lượng. Bạn còn có thể sử dụng {@link
+  android.app.job.JobScheduler} để phản ứng lại các thay đổi đối với trình cung cấp nội dung.
+</p>
+
+<p>
+  Để biết thêm thông tin về thay đổi hành vi này và cách thích ứng ứng dụng của bạn,
+  hãy xem <a href="{@docRoot}preview/features/background-optimization.html">Tối ưu hóa
+ Chạy ngầm</a>.
+</p>
+
+
+<h2 id="perm">Thay đổi Quyền</h2>
+
+<p>
+  Android N có các thay đổi đối với quyền có thể tác động đến ứng dụng của bạn,
+  bao gồm các quyền tài khoản người dùng và một quyền mới cho phép ghi vào
+  bộ nhớ ngoài.  Sau đây là phần tóm tắt các quyền đã thay đổi trong
+ bản xem trước:
+</p>
+
+<ul>
+  <li>{@code GET_ACCOUNTS} (Bị loại bỏ)
+    <p>
+      Quyền GET_ACCOUNTS nay đã bị loại bỏ. Hệ thống sẽ bỏ qua quyền
+  này đối với các ứng dụng nhắm mục tiêu Android N.
+    </p>
+  </li>
+
+</ul>
+
+
+
+<h2 id="accessibility">Cải thiện Trợ năng</h2>
+
+<p>
+  Android N có các thay đổi nhằm nâng cao khả năng sử dụng
+  của nền tảng cho những người dùng có thị lực kém hoặc khiếm thị. Nhìn chung, các thay đổi này sẽ không
+  yêu cầu thay đổi mã nguồn trong ứng dụng của bạn. Tuy nhiên, bạn cần xem lại
+  các tính năng này và kiểm thử chúng với ứng dụng của mình để đánh giá các tác động tiềm tàng đối với trải nghiệm
+ người dùng.
+</p>
+
+
+<h3 id="screen-zoom">Thu phóng Màn hình</h3>
+
+<p>
+  Android N cho phép người dùng đặt <strong>Display size</strong> để phóng to
+  hoặc thu nhỏ tất cả các phần tử trên màn hình, nhờ đó cải thiện trợ năng của thiết bị
+  cho những người dùng có thị lực kém. Người dùng không thể thu phóng màn hình vượt quá chiều rộng màn hình
+  tối thiểu <a href="http://developer.android.com/guide/topics/resources/providing-resources.html">
+  sw320dp</a>. Đây là chiều rộng của Nexus 4, một máy điện thoại phổ biến có kích cỡ trung bình.
+</p>
+
+<div class="cols">
+
+<div class="col-6">
+  <img src="{@docRoot}preview/images/screen-zoom-1.png" alt="" height="XXX" id="figure1" />
+</div>
+<div class="col-6">
+  <img src="{@docRoot}preview/images/screen-zoom-2.png" alt="" height="XXX" id="figure1" />
+</div>
+
+</div> <!-- end cols -->
+<p class="img-caption">
+  <strong>Hình 3.</strong> Màn hình bên phải hiển thị tác động của
+  việc tăng kích cỡ Hiển thị của một thiết bị đang chạy ảnh hệ thống Android N.
+</p>
+
+
+<p>
+  Khi mật độ của thiết bị thay đổi, hệ thống sẽ thông báo cho các ứng dụng đang chạy theo
+  những cách sau:
+</p>
+
+<ul>
+  <li>Nếu một ứng dụng nhắm mục tiêu mức API 23 hoặc thấp hơn thì hệ thống sẽ tự động tắt
+  tất cả các tiến trình chạy ngầm của ứng dụng đó. Điều này có nghĩa là nếu một người dùng rời khỏi
+  ứng dụng đó để mở màn hình <em>Settings</em> và thay đổi 
+  <strong>Display size</strong> thì hệ thống sẽ tắt ứng dụng giống
+ như trong trường hợp thiết bị thiếu bộ nhớ. Nếu ứng dụng đó có bất kỳ tiến trình nào
+  chạy ở tiền cảnh thì hệ thống sẽ thông báo cho các tiến trình đó về thay đổi cấu hình như
+  mô tả trong <a href="{@docRoot}guide/topics/resources/runtime-changes.html">Xử lý
+ Thay đổi Thời gian chạy</a>, giống như hướng của thiết bị vừa thay đổi.
+  </li>
+
+  <li>Nếu ứng dụng nhắm mục tiêu Android N thì mọi tiến trình của nó
+   (chạy ở tiền cảnh và chạy ngầm) đều được thông báo về thay đổi cấu hình như
+  mô tả trong <a href="{@docRoot}guide/topics/resources/runtime-changes.html">Xử lý
+ Thay đổi Thời gian chạy</a>.
+  </li>
+</ul>
+
+<p>
+  Hầu hết các ứng dụng không cần thực hiện bất kỳ thay đổi nào để hỗ trợ tính năng này, miễn là
+   các ứng dụng đó tuân theo các thực hành tốt nhất của Android. Những điều cụ thể cần kiểm tra:
+</p>
+
+<ul>
+  <li>Kiểm thử ứng dụng của bạn trên một thiết bị có chiều rộng màn hình <code><a href=
+  "{@docRoot}guide/topics/resources/providing-resources.html">sw320dp</a></code>
+  và đảm bảo nó hoạt động đúng.
+  </li>
+
+  <li>Khi cấu hình của thiết bị thay đổi, hãy cập nhật mọi thông tin được lưu trữ trong bộ đệm
+   phụ thuộc vào mật độ, ví dụ như các ảnh bitmap được lưu đệm hoặc các tài nguyên được tải từ
+  mạng. Hãy kiểm tra các thay đổi cấu hình khi ứng dụng khôi phục từ trạng thái
+  tạm dừng.
+    <p class="note">
+      <strong>Lưu ý:</strong> Nếu bạn lưu trữ trong bộ đệm các dữ liệu phụ thuộc vào cấu hình thì nên
+   thêm siêu dữ liệu liên quan như kích cỡ
+     màn hình phù hợp hoặc mật độ điểm ảnh cho dữ liệu đó. Việc lưu siêu dữ liệu này cho phép bạn
+     quyết định liệu bạn có cần phải làm mới dữ liệu được lưu trữ đệm sau khi một cấu hình
+     thay đổi.
+    </p>
+  </li>
+
+  <li>Tránh chỉ định các kích thước theo đơn vị px vì chúng không thay đổi tỉ lệ theo
+   mật độ màn hình. Thay vào đó, hãy chỉ định các kích thước bằng các đơn vị <a href="{@docRoot}guide/practices/screens_support.html">điểm ảnh
+   độc lập với mật độ</a> (<code>dp</code>).
+  </li>
+</ul>
+
+<h3 id="vision-settings">Cài đặt Khả năng nhìn trong Trình Thiết lập</h3>
+
+<p>
+  Android N có Cài đặt Khả năng nhìn trên màn hình Chào mừng, nơi người dùng có thể
+   thiết lập các cài đặt trợ năng sau đây trên một thiết bị mới:
+ <strong>Magnification gesture</strong>, <strong>Font size</strong>,
+  <strong>Display size</strong> và <strong>TalkBack</strong>. Thay đổi này
+   sẽ tăng khả năng thấy được các khiếm khuyết liên quan đến những cài đặt màn hình khác nhau. Để
+  đánh giá tác động của tính năng này, bạn có thể kiểm thử ứng dụng của mình với các
+  cài đặt sau được bật. Bạn có thể tìm các cài đặt này trong <strong>Settings &gt;
+  Accessibility</strong>.
+</p>
+
+<h2 id="ndk">Liên kết Ứng dụng NDK với Thư viện Nền tảng</h2>
+
+<p>
+  Android N có các thay đổi đối với không gian tên để ngăn việc tải các API không công khai.
+ Nếu bạn sử dụng NDK, bạn chỉ nên sử dụng các API công khai từ nền tảng
+  Android. Sử dụng các API không công khai trong bản phát hành chính thức tiếp theo của Android
+   có thể khiến ứng dụng bị treo.
+</p>
+
+<p>
+  Để cảnh báo cho bạn việc sử dụng các API không công khai, các ứng dụng chạy trên thiết bị
+   Android N sẽ tạo ra một lỗi trong phần xuất ra của logcat khi một ứng dụng gọi một API không công khai.
+  Lỗi này cũng được hiển thị trên màn hình thiết bị dưới dạng thông báo để hỗ trợ
+  nâng cao nhận biết đối với tình huống này. Bạn nên xem lại mã của ứng dụng để
+  gỡ bỏ phần sử dụng các API nền tảng không công khai và kiểm thử kỹ lưỡng ứng dụng bằng
+   một thiết bị hoặc bộ giả lập của bản xem trước.
+</p>
+
+<p>
+  Nếu ứng dụng của bạn phụ thuộc vào các thư viện của nền tảng, hãy xem tài liệu NDK để biết
+  các cách khắc phục cơ bản nhằm thay thế các API không công khai bằng các API công khai tương ứng.
+   Bạn cũng có thể liên kết với các thư viện của nền tảng mà không nhận biết ứng dụng,
+   đặc biệt nếu ứng dụng của bạn sử dụng thư viện thuộc một phần của nền tảng (như
+  <code>libpng</code>), nhưng không thuộc NDK. Trong trường hợp đó, hãy đảm bảo rằng
+    tệp APK của bạn có chứa tất cả các tệp .so bạn dự định liên kết với.
+</p>
+
+<p class="caution">
+  <strong>Cẩn trọng:</strong> Một số thư viện của bên thứ ba có thể liên kết với các API
+  không công khai. Nếu ứng dụng của bạn sử dụng các thư viện này thì ứng dụng của bạn có thể gặp lỗi sụp đổ khi đang chạy
+  trong lần phát hành Android chính thức kế tiếp.
+</p>
+
+<p>
+  Các ứng dụng không nên phụ thuộc vào hoặc sử dụng các thư viện gốc không kèm theo trong
+  NDK bởi vì chúng có thể thay đổi hoặc bị gỡ bỏ khỏi khi phát hành bản Android khác
+  thay cho bản cũ. Việc chuyển từ OpenSSL sang BoringSSL là một ví dụ về sự thay đổi đó.
+  Ngoài ra, các thiết bị khác nhau có thể cung cấp các mức độ tương thích khác nhau bởi
+  không có yêu cầu nào về khả năng tương thích cho các thư viện nền tảng không đi kèm với
+  NDK. Nếu bạn buộc phải sử dụng các thư viện không thuộc NDK trên các thiết bị cũ, hãy thực hiện
+  quá trình tải phụ thuộc vào mức Android API.
+</p>
+
+<p>
+  Nhằm giúp bạn chẩn đoán các loại vấn đề này, sau đây là một số lỗi Java và NDK
+ ví dụ bạn có thể gặp phải khi cố dựng ứng dụng với Android N:
+</p>
+
+<p>Ví dụ lỗi Java:</p>
+<pre class="no-pretty-print">
+java.lang.UnsatisfiedLinkError: dlopen failed: library "/system/lib/libcutils.so"
+    is not accessible for the namespace "classloader-namespace"
+</pre>
+
+<p>Ví dụ lỗi NDK:</p>
+<pre class="no-pretty-print">
+dlopen failed: cannot locate symbol "__system_property_get" referenced by ...
+</pre>
+
+
+<p>
+  Sau đây là một số cách khắc phục đối với ứng dụng gặp phải các kiểu lỗi này:
+</p>
+
+<ul>
+  <li>Việc sử dụng getJavaVM và getJNIEnv trong libandroid_runtime.so có thể được thay
+  bằng các hàm JNI chuẩn:
+<pre class="no-pretty-print">
+AndroidRuntime::getJavaVM -&gt; GetJavaVM from &lt;jni.h&gt;
+AndroidRuntime::getJNIEnv -&gt; JavaVM::GetEnv or
+JavaVM::AttachCurrentThread from &lt;jni.h&gt;.
+</pre>
+  </li>
+
+  <li>Việc sử dụng ký hiệu {@code property_get} trong {@code libcutils.so} có thể được
+    thay bằng phương thức {@code __system_property_get} công khai thay thế.
+   Để làm điều này, hãy dùng {@code __system_property_get} với câu lệnh include sau:
+<pre>
+#include &lt;sys/system_properties.h&gt;
+</pre>
+  </li>
+
+  <li>Việc sử dụng ký hiệu {@code SSL_ctrl} trong {@code libcrypto.so} nên được
+  thay bằng một ký hiệu cục bộ của ứng dụng. Ví dụ, bạn nên liên kết tĩnh
+  {@code libcyrpto.a} trong tệp {@code .so} hoặc thêm tham chiếu
+  {@code libcrypto.so} động của riêng mình từ BoringSSL hoặc OpenSSL trong ứng dụng của bạn.
+  </li>
+</ul>
+
+<h2 id="afw">Android cho Công việc</h2>
+<p>
+  Android N có các thay đổi cho ứng dụng nhắm mục tiêu Android cho Công việc, bao gồm
+  các thay đổi đối với cài đặt chứng chỉ, đặt lại mật khẩu, quản lý người dùng
+  thứ hai và truy cập các mã định danh của thiết bị. Nếu bạn đang dựng các ứng dụng dành cho
+  các môi trường Android cho Công việc thì bạn nên xem lại các thay đổi này và chỉnh sửa
+  ứng dụng của mình cho phù hợp.
+</p>
+
+<ul>
+  <li>Bạn phải cài đặt một trình cài đặt chứng chỉ ủy thác trước khi DPC có thể đặt
+  nó. Đối với cả ứng dụng người sở hữu cấu hình và ứng dụng người sở hữu thiết bị nhắm mục tiêu SDK N, bạn cần
+  cài đặt trình cài đặt chứng chỉ ủy thác trước khi trình kiểm soát
+  chính sách của thiết bị (DPC) gọi
+  <code>DevicePolicyManager.setCertInstallerPackage()</code>. Nếu trình cài đặt
+  chưa được cài thì hệ thống sẽ đưa ra một
+  <code>IllegalArgumentException</code>.
+  </li>
+
+  <li>Giờ đây các hạn chế đặt lại mật khẩu cho người quản lý thiết bị sẽ áp dụng với người sở hữu
+   cấu hình. Người quản lý thiết bị không thể sử dụng
+  <code>DevicePolicyManager.resetPassword()</code> được nữa để xóa mật khẩu hoặc thay đổi 
+  các mật khẩu đã đặt. Người quản lý thiết bị vẫn có thể đặt một mật khẩu nhưng chỉ
+  khi thiết bị không có mật khẩu, mã PIN hoặc mẫu hình.
+  </li>
+
+  <li>Người sở hữu thiết bị hoặc cấu hình có thể quản lý các tài khoản ngay cả khi các hạn chế được
+  đặt. Người sở hữu thiết bị và người sở hữu cấu hình có thể gọi các API Quản lý tài khoản
+  ngay cả khi các hạn chế người dùng <code>DISALLOW_MODIFY_ACCOUNTS</code> đã có sẵn.
+  </li>
+
+  <li>Người sở hữu thiết bị có thể quản lý những người dùng thứ cấp dễ dàng hơn. Khi một thiết bị
+  đang chạy trong chế độ người sở hữu thiết bị, hạn chế <code>DISALLOW_ADD_USER</code>
+  sẽ được đặt tự động. Điều này ngăn người dùng tạo các người dùng
+  thứ cấp không được quản lý. Ngoài ra, các phương thức <code>CreateUser()</code> và
+  <code>createAndInitial()</code> đã bị loại bỏ; phương thức
+<code>DevicePolicyManager.createAndManageUser()</code> mới sẽ thay thế chúng.
+  </li>
+
+  <li>Người sở hữu thiết bị có thể truy cập các mã định danh của thiết bị. Một người sở hữu thiết bị có thể truy cập
+ địa chỉ MAC của Wi-Fi của một thiết bị, bằng phương thức
+  <code>DevicePolicyManagewr.getWifiMacAddress()</code>. Nếu Wi-Fi chưa từng
+  được bật trên thiết bị đó thì phương thức này sẽ trả về một giá trị {@code null}.
+  </li>
+</ul>
+
+<p>
+  Để biết thêm thông tin về các thay đổi đối với Android cho Công việc trong Android N, hãy xem
+   <a href="{@docRoot}preview/features/afw.html">Cập nhật của Android cho Công việc</a>.
+</p>
+
+<h2 id="other">Các điểm quan trọng khác</h2>
+
+<ul>
+<li>Khi một ứng dụng đang chạy trên Android N nhưng nhắm mục tiêu mức API thấp hơn,
+và người dùng thay đổi kích cỡ hiển thị thì tiến trình của ứng dụng sẽ bị tắt. Ứng dụng
+phải có khả năng xử lý tình huống này một cách tinh tế. Nếu không, ứng dụng sẽ bị lỗi sụp đổ
+khi người dùng khôi phục nó từ mục Gần đây.
+
+<p>
+Bạn cần kiểm thử ứng dụng để đảm bảo
+rằng hành vi này không xảy ra.
+Bạn có thể thực hiện điều đó bằng cách gây ra một lỗi sụp đổ giống vậy
+khi tắt ứng dụng một cách thủ công qua DDMS.
+</p>
+
+<p>
+Các ứng dụng nhắm mục tiêu N và cao hơn sẽ không bị tắt tự động khi có các thay đổi về mật độ;
+tuy nhiên, chúng có thể phản hồi khó khăn đối với các thay đổi cấu hình.
+</p>
+</li>
+
+<li>
+Các ứng dụng trên Android N cần có khả năng xử lý các thay đổi cấu hình một cách tinh tế,
+và không bị lỗi sụp đổ trong các lần khởi động tiếp theo. Bạn có thể kiểm tra hành vi ứng dụng
+bằng cách thay đổi kích cỡ phông chữ (<strong>Setting</strong> &gt;
+<strong>Display</strong> &gt; <strong>Font size</strong>), và sau đó khôi phục
+ứng dụng từ mục Gần đây.
+</li>
+</ul>
+
diff --git a/docs/html-intl/intl/vi/preview/download.jd b/docs/html-intl/intl/vi/preview/download.jd
new file mode 100644
index 0000000..f6aa7cc
--- /dev/null
+++ b/docs/html-intl/intl/vi/preview/download.jd
@@ -0,0 +1,541 @@
+page.title=Kiểm thử trên Thiết bị
+meta.tags="preview", "nexus","system image"
+page.tags="preview", "androidn"
+page.image=images/cards/card-n-downloads_2x.png
+
+@jd:body
+
+<div style="position:relative; min-height:600px">
+
+  <div class="wrap" id="tos" style="position:absolute;display:none;width:inherit;">
+
+    <p class="sdk-terms-intro">Trước khi tải xuống và cài đặt các thành phần của
+      Android Preview SDK, bạn phải đồng ý với các điều khoản và
+      điều kiện sau.</p>
+
+    <h2 class="norule">Điều khoản và Điều kiện</h2>
+
+    <div class="sdk-terms" onfocus="this.blur()" style="width:678px">
+Đây là Thỏa thuận Cấp phép Android SDK Preview (gọi là “Thỏa thuận Cấp phép”).
+
+1. Giới thiệu
+
+1.1 Android SDK Preview (trong Thỏa thuận Cấp phép này gọi là “Preview” và cụ thể bao gồm các tệp hệ thống Android, các API dạng gói, và các tệp thư viện Preview, nếu và khi nào chúng được cung cấp) được cấp phép cho bạn theo các điều khoản của Thỏa thuận Cấp phép này. Thỏa thuận Cấp phép này hợp thành một hợp đồng ràng buộc pháp lý giữa bạn và Google liên quan đến việc bạn sử dụng Preview.
+
+1.2 "Android" có nghĩa là chồng phần mềm Android cho thiết bị, được cung cấp theo Dự án Nguồn mở Android, nằm ở địa chỉ URL sau: http://source.android.com/, được cập nhật trong từng thời kỳ.
+
+1.3 “Tương thích Android” nghĩa là bất cứ triển khai Android nào (i) tuân thủ theo tài liệu Định nghĩa Tính tương thích Android, có thể được tìm thấy tại trang web về tính tương thích Android (http://source.android.com/compatibility) và có thể được cập nhật theo thời gian; và (ii) vượt qua thành công Gói Kiểm tra Tính tương thích Android (CTS).
+
+1.4 "Google" có nghĩa là Google Inc., một công ty ở Delaware với trụ sở kinh doanh chính tại 1600 Amphitheatre Parkway, Mountain View, CA 94043, Hoa Kỳ.
+
+2. Chấp thuận Thỏa thuận Cấp phép
+
+2.1 Để sử dụng Preview, trước tiên bạn phải đồng ý với Thỏa thuận Cấp phép. Bạn không được sử dụng Preview nếu không chấp nhận Thỏa thuận Cấp phép này.
+
+2.2 Bằng việc nhấp vào chấp nhận và/hoặc sử dụng Preview, theo đây bạn đồng ý với các điều khoản của Thỏa thuận Cấp phép này.
+
+2.3 Bạn không được sử dụng Preview và không được chấp nhận Thỏa thuận Cấp phép nếu bạn là người bị cấm nhận Preview theo pháp luật của Hoa Kỳ hoặc các quốc gia khác bao gồm quốc gia nơi bạn cư trú hoặc nơi mà bạn sử dụng Preview từ đó.
+
+2.4 Nếu bạn sẽ sử dụng Preview trong nội bộ công ty hoặc tổ chức của bạn thì bạn đồng ý chịu ràng buộc bởi Thỏa thuận Cấp phép này đại diện cho bên tuyển dụng của mình hoặc đơn vị khác, và bạn tuyên bố và bảo đảm rằng bạn có đầy đủ thẩm quyền pháp lý để ràng buộc bên tuyển dụng của mình hoặc đơn vị đó với Thỏa thuận Cấp phép này. Nếu bạn không có thẩm quyền cần thiết, bạn không được chấp nhận Thỏa thuận Cấp phép này hoặc sử dụng Preview đại diện cho bên tuyển dụng của mình hoặc đơn vị khác.
+
+3. Giấy phép Preview từ Google
+
+3.1 Tùy thuộc vào các điều khoản của Thỏa thuận Cấp phép này, Google cấp cho bạn một giấy phép giới hạn, toàn cầu, miễn phí sử dụng, không thể chuyển nhượng, không độc quyền và không thể cấp phép lại để sử dụng Preview cho mục đích duy nhất là phát triển các ứng dụng cho các triển khai Android tương thích.
+
+3.2 Bạn không được sử dụng Preview này để phát triển các ứng dụng cho các nền tảng khác (bao gồm các triển khai Android không tương thích) hoặc để phát triển một bộ SDK khác. Bạn dĩ nhiên được phát triển các ứng dụng cho các nền tảng khác, bao gồm các triển khai Android không tương thích, miễn là Preview này không được sử dụng cho mục đích đó.
+
+3.3 Bạn đồng ý rằng Google hoặc các bên thứ ba sở hữu tất cả quyền, quyền sở hữu hoặc lợi ích hợp pháp trong và đối với Preview, bao gồm bất kỳ Quyền Sở hữu Trí tuệ nào nằm trong Preview. "Quyền Sở hữu Trí tuệ" có nghĩa là bất kỳ và tất cả các quyền theo luật về bằng sáng chế, luật về bản quyền, luật về bí mật thương mại, luật về nhãn hiệu thương mại và bất kỳ và tất cả các quyền sở hữu khác. Google bảo lưu tất cả các quyền không được cấp phép rõ ràng cho bạn.
+
+3.4 Bạn không được sử dụng Preview cho bất kỳ mục đích nào không được cho phép rõ ràng bởi Thỏa thuận Cấp phép này. Trừ trường hợp được yêu cầu bởi giấy phép của bên thứ ba có liên quan, bạn không được: (a) sao chép (trừ trường hợp sao lưu), sửa đổi, điều chỉnh cho phù hợp, phân phối lại, biên dịch ngược, kỹ thuật đảo ngược, phân rã, hoặc tạo sản phẩm phái sinh từ Preview hay bất kỳ phần nào của Preview; hoặc (b) tải bất kỳ phần nào của Preview lên một thiết bị cầm tay di động hoặc bất kỳ thiết bị phần cứng nào khác ngoại trừ máy tính cá nhân, kết hợp bất kỳ phần nào của Preview với phần mềm khác, hay phân phối bất kỳ phần mềm hay thiết bị nào tích hợp một phần của Preview.
+
+3.5 Việc sử dụng, tái tạo lại và phân phối các thành phần của Preview được cấp phép theo một giấy phép phần mềm nguồn mở được chi phối chủ yếu bởi các điều khoản của giấy phép phần mềm nguồn mở đó chứ không phải Thỏa thuận Cấp phép này. Bạn đồng ý duy trì một giấy phép có uy tín liên quan đến các giấy phép phần mềm mã nguồn mở theo tất cả các quyền được cấp và phải tránh bất kỳ hành động nào có thể chấm dứt, đình chỉ hoặc vi phạm các quyền đó.
+
+3.6 Bạn đồng ý rằng hình thức và tính chất của Preview mà Google cung cấp có thể thay đổi mà không có thông báo trước cho bạn và rằng các phiên bản sau này của Preview có thể không tương thích với các ứng dụng được phát triển trên những phiên bản trước của Preview. Bạn đồng ý rằng Google có thể ngừng (vĩnh viễn hoặc tạm thời) việc cung cấp Preview (hoặc bất kỳ tính năng nào trong Preview) cho bạn hoặc cho người dùng nói chung toàn quyền theo quyết định của Google, mà không cần thông báo trước cho bạn.
+
+3.7 Không có bất cứ nội dung nào trong Thỏa thuận Cấp phép này trao cho bạn quyền sử dụng bất kỳ tên thương mại, thương hiệu, dấu hiệu dịch vụ, logo, tên miền, hoặc các tính năng nhãn hiệu đặc biệt nào khác.
+
+3.8 Bạn đồng ý rằng bạn sẽ không gỡ bỏ, che đậy, hoặc sửa đổi bất kỳ thông báo quyền sở hữu nào (bao gồm các thông báo về bản quyền và thương hiệu) mà có thể gắn với hoặc có trong Preview.
+
+4. Việc Bạn sử dụng Preview
+
+4.1 Google đồng ý rằng không có bất cứ nội dung nào trong Thỏa thuận Cấp phép này cấp cho Google bất cứ quyền, quyền sở hữu hay lợi ích nào từ bạn (hay bên cấp phép của bạn) theo Thỏa thuận Cấp phép này trong hoặc đối với bất kỳ ứng dụng phần mềm nào mà bạn phát triển bằng cách sử dụng Preview, bao gồm bất kỳ quyền sở hữu trí tuệ nào nằm trong những ứng dụng đó.
+
+4.2 Bạn đồng ý sử dụng Preview và viết ứng dụng chỉ cho các mục đích được cho phép bởi (a) Thỏa thuận Cấp phép này và (b) bất kỳ luật, quy định hoặc thực hành áp dụng nào hoặc hướng dẫn được chấp nhận chung ở các vùng tài phán liên quan (bao gồm bất kỳ luật nào về việc xuất dữ liệu hoặc phần mềm đến và từ Hoa Kỳ hoặc các quốc gia có liên quan khác).
+
+4.3 Bạn đồng ý rằng nếu bạn sử dụng Preview để phát triển ứng dụng, bạn sẽ bảo vệ quyền riêng tư và các quyền hợp pháp của người dùng. Nếu người dùng cung cấp cho bạn tên người dùng, mật khẩu hoặc thông tin đăng nhập hay thông tin cá nhân khác, bạn phải thông báo cho người dùng rằng thông tin sẽ có sẵn cho ứng dụng của bạn, và bạn phải cung cấp thông báo về quyền riêng tư và sự bảo vệ thỏa đáng về mặt pháp lý cho những người dùng đó. Nếu ứng dụng của bạn lưu trữ thông tin cá nhân hoặc nhạy cảm được cung cấp bởi người dùng, ứng dụng phải làm vậy một cách bảo mật. Nếu người dùng cung cấp cho bạn thông tin về Tài khoản Google, ứng dụng của bạn chỉ được sử dụng thông tin đó để truy cập Tài khoản Google của người dùng khi, và chỉ cho các mục đích giới hạn mà mỗi người dùng đã cấp phép cho bạn để thực hiện.
+
+4.4 Bạn đồng ý rằng bạn sẽ không tham gia vào bất kỳ hoạt động nào với Preview, bao gồm việc phát triển hoặc phân phối một ứng dụng, mà can thiệp vào, làm gián đoạn, gây thiệt hại, hoặc truy cập một cách trái phép vào máy chủ, mạng hoặc tài sản hay dịch vụ khác của Google hoặc bất kỳ bên thứ ba nào.
+
+4.5 Bạn đồng ý rằng bạn hoàn toàn chịu trách nhiệm về (và rằng Google không có trách nhiệm đối với bạn hay bất kỳ bên thứ ba nào về) bất kỳ dữ liệu, nội dung hay tài nguyên nào mà bạn tạo lập, truyền hoặc hiển thị thông qua Android và/hoặc các ứng dụng cho Android, và về hậu quả của những hành động của bạn (bao gồm bất kỳ tổn thất hay thiệt hại nào mà Google có thể phải gánh chịu) bởi việc làm như vậy.
+
+4.6 Bạn đồng ý rằng bạn hoàn toàn chịu trách nhiệm về (và rằng Google không có trách nhiệm đối với bạn hay bất kỳ bên thứ ba nào về) bất kỳ sự vi phạm nào đối với các nghĩa vụ của bạn theo Thỏa thuận Cấp phép này, bất kỳ hợp đồng với bên thứ ba áp dụng nào hoặc các Điều khoản Dịch vụ, hoặc bất kỳ luật hay quy định áp dụng nào, và về hậu quả của những hành động của bạn (bao gồm bất kỳ tổn thất hay thiệt hại nào mà Google hoặc bất kỳ bên thứ ba nào có thể phải gánh chịu) do bất kỳ sự vi phạm nào như vậy.
+
+4.7 Preview đang được phát triển, và việc kiểm thử và phản hồi của bạn là một phần quan trọng trong quá trình phát triển này. Bằng việc sử dụng Preview, bạn thừa nhận rằng việc triển khai một số tính năng vẫn còn đang được phát triển và rằng bạn không nên dựa vào Preview có đầy đủ chức năng của một phiên bản ổn định. Bạn đồng ý không công khai phân phối hoặc gửi bất kỳ ứng dụng nào bằng Preview này bởi Preview này sẽ không còn được hỗ trợ sau khi Android SDK bản chính thức được phát hành.
+
+5. Thông tin Xác thực Nhà phát triển của bạn
+
+5.1 Bạn đồng ý rằng bạn chịu trách nhiệm duy trì tính bảo mật của bất kỳ thông tin xác thực nhà phát triển nào mà có thể được phát hành cho bạn bởi Google hoặc bạn có thể tự chọn và rằng bạn sẽ hoàn toàn chịu trách nhiệm về tất cả ứng dụng được phát triển theo thông tin xác thực nhà phát triển của bạn.
+
+6. Quyền riêng tư và Thông tin
+
+6.1 Để tiếp tục đổi mới và cải thiện Preview, Google có thể thu thập một số thống kê về sử dụng từ phần mềm bao gồm nhưng không giới hạn mã định danh duy nhất, địa chỉ IP liên kết, số phiên bản của phần mềm, và thông tin về những công cụ và/hoặc dịch vụ trong Preview đang được sử dụng và chúng đang được sử dụng như thế nào. Trước khi bất kỳ thông tin nào được thu thập, Preview sẽ thông báo cho bạn và xin phép sự đồng ý của bạn. Nếu bạn từ chối cho phép, thông tin sẽ không được thu thập.
+
+6.2 Dữ liệu thu thập được kiểm tra chung để cải thiện Preview và được duy trì theo Chính sách Quyền riêng tư của Google tại http://www.google.com/policies/privacy/.
+
+7. Ứng dụng của Bên thứ ba
+
+7.1 Nếu bạn sử dụng Preview để chạy các ứng dụng được phát triển bởi một bên thứ ba hoặc truy cập dữ liệu, nội dung hoặc tài nguyên được cung cấp bởi một bên thứ ba, bạn đồng ý rằng Google không chịu trách nhiệm về những ứng dụng, dữ liệu, nội dung hoặc tài nguyên đó. Bạn hiểu rằng tất cả dữ liệu, nội dung hoặc tài nguyên mà bạn có thể truy cập thông qua các ứng dụng của bên thứ ba như vậy hoàn toàn thuộc trách nhiệm của người cung cấp chúng và rằng Google không chịu trách nhiệm về bất kỳ tổn thất hay thiệt hại nào mà bạn có thể gặp phải do kết quả từ việc sử dụng hay truy cập bất kỳ ứng dụng của bên thứ ba, dữ liệu, nội dung hay tài nguyên nào như vậy.
+
+7.2 Bạn cần ý thức được rằng dữ liệu, nội dung và tài nguyên được trình chiếu cho bạn thông qua một ứng dụng của bên thứ ba như vậy có thể được bảo vệ bởi các quyền sở hữu trí tuệ thuộc sở hữu của các nhà cung cấp (hoặc bởi cá nhân hoặc công ty khác đại diện cho họ). Bạn không được sửa đổi, thuê, cho thuê, cho vay, bán, phân phối hoặc tạo sản phẩm phái sinh dựa trên những dữ liệu, nội dung hoặc tài nguyên này (hoặc toàn bộ hoặc một phần) trừ khi bạn đã được cấp phép cụ thể để làm vậy bởi chủ sở hữu có liên quan.
+
+7.3 Bạn hiểu rằng việc bạn sử dụng các ứng dụng, dữ liệu, nội dung hoặc tài nguyên của bên thứ ba như vậy có thể phải tuân thủ các điều khoản riêng giữa bạn và bên thứ ba có liên quan.
+
+8. Sử dụng các API Google
+
+8.1 Các API Google
+
+8.1.1 Nếu bạn sử dụng bất kỳ API nào để truy xuất dữ liệu từ Google, bạn hiểu rằng dữ liệu có thể được bảo vệ bởi quyền sở hữu trí tuệ thuộc sở hữu của Google hoặc những bên cung cấp dữ liệu (hoặc bởi cá nhân hoặc công ty khác đại diện cho họ). Việc bạn sử dụng bất kỳ API nào như vậy có thể phải tuân theo các Điều khoản Dịch vụ bổ sung. Bạn không được sửa đổi, thuê, cho thuê, cho vay, bán, phân phối hoặc tạo sản phẩm phái sinh dựa trên dữ liệu này (hoặc toàn bộ hoặc một phần) trừ khi được cho phép bởi các Điều khoản Dịch vụ có liên quan.
+
+8.1.2 Nếu bạn sử dụng bất kỳ API nào để truy xuất dữ liệu của một người dùng từ Google, bạn hiểu và đồng ý rằng bạn sẽ chỉ truy xuất dữ liệu với sự cho phép rõ ràng của người dùng và chỉ khi, và cho các mục đích giới hạn mà người dùng đã được cấp quyền để thực hiện.
+
+9. Chấm dứt Thỏa thuận Cấp phép
+
+9.1 Thỏa thuận Cấp phép sẽ tiếp tục áp dụng cho đến khi được chấm dứt hoặc bởi bạn hoặc Google như quy định dưới đây.
+
+9.2 Nếu bạn muốn chấm dứt Thỏa thuận Cấp phép, bạn có thể làm như vậy bằng cách ngừng sử dụng Preview và bất kỳ thông tin nhà phát triển nào có liên quan.
+
+9.3 Bất cứ lúc nào, Google đều có thể chấm dứt Thỏa thuận Cấp phép này, có hoặc không có nguyên nhân, sau khi thông báo cho bạn.
+
+9.4 Thỏa thuận Cấp phép sẽ tự động chấm dứt mà không cần có thông báo hay hành động khác tùy theo sự việc nào sớm hơn:
+(A) khi Google ngừng cung cấp Preview hoặc một số thành phần nhất định của Preview cho người dùng ở quốc gia mà bạn đang cư trú hoặc nơi bạn đang sử dụng dịch vụ; và
+(B) Google phát hành một phiên bản phát hành cuối cùng của Android SDK.
+
+9.5 Khi Thỏa thuận Cấp phép bị chấm dứt, giấy phép đã cấp cho bạn trong Thỏa thuận Cấp phép sẽ chấm dứt, ngay lập tức bạn sẽ ngừng tất cả việc sử dụng Preview này, và các quy định tại khoản 10, 11, 12 và 14 sẽ vẫn còn hiệu lực mãi mãi.
+
+10. ĐIỀU KHOẢN MIỄN TRỪ
+
+10.1 BẠN HIỂU VÀ ĐỒNG Ý RÕ RÀNG RẰNG VIỆC BẠN SỬ DỤNG PREVIEW HOÀN TOÀN LÀ RỦI RO CỦA BẠN VÀ RẰNG PREVIEW ĐƯỢC CUNG CẤP TRÊN CƠ SỞ “NGUYÊN TRẠNG” VÀ “CÓ SẴN” MÀ KHÔNG CÓ BẤT KỲ SỰ BẢO ĐẢM NÀO TỪ GOOGLE.
+
+10.2 VIỆC BẠN SỬ DỤNG PREVIEW VÀ BẤT KỲ TÀI NGUYÊN NÀO ĐƯỢC TẢI XUỐNG HOẶC CÓ ĐƯỢC BẰNG CÁCH KHÁC THÔNG QUA VIỆC SỬ DỤNG PREVIEW LÀ QUYẾT ĐỊNH VÀ RỦI RO CỦA CHÍNH BẠN VÀ BẠN HOÀN TOÀN CHỊU TRÁCH NHIỆM VỀ BẤT KỲ THIỆT HẠI NÀO ĐỐI VỚI HỆ THỐNG MÁY TÍNH HOẶC THIẾT BỊ KHÁC HOẶC VIỆC MẤT DỮ LIỆU LÀ KẾT QUẢ TỪ VIỆC SỬ DỤNG ĐÓ. KHÔNG GIỚI HẠN TRONG NỘI DUNG TRÊN, BẠN HIỂU RẰNG PREVIEW KHÔNG PHẢI LÀ BẢN PHÁT HÀNH ỔN ĐỊNH VÀ CÓ THỂ CHỨA LỖI, KHIẾM KHUYẾT VÀ CÁC LỖ HỔNG BẢO MẬT CÓ THỂ DẪN ĐẾN THIỆT HẠI ĐÁNG KỂ, BAO GỒM MẤT KHẢ NĂNG SỬ DỤNG HOÀN TOÀN, KHÔNG THỂ PHỤC HỒI ĐƯỢC CỦA HỆ THỐNG MÁY TÍNH HAY THIẾT BỊ KHÁC CỦA BẠN.
+
+10.3 GOOGLE CÔNG KHAI TUYÊN BỐ MIỄN TRỪ TRÁCH NHIỆM ĐỐI VỚI TẤT CẢ BẢO ĐẢM VÀ ĐIỀU KIỆN CÁC LOẠI, DÙ RÕ RÀNG HAY NGỤ Ý, BAO GỒM, NHƯNG KHÔNG GIỚI HẠN NHỮNG BẢO ĐẢM VÀ ĐIỀU KIỆN NGỤ Ý VỀ KHẢ NĂNG MUA BÁN ĐƯỢC, SỰ PHÙ HỢP CHO MỘT MỤC ĐÍCH CỤ THỂ VÀ KHÔNG XÂM PHẠM.
+
+11. GIỚI HẠN TRÁCH NHIỆM
+
+11.1 BẠN HIỂU VÀ ĐỒNG Ý RÕ RÀNG RẰNG GOOGLE, CÁC CÔNG TY CON VÀ CÔNG TY LIÊN KẾT CỦA GOOGLE, VÀ CÁC BÊN CẤP PHÉP CỦA GOOGLE SẼ KHÔNG CHỊU TRÁCH NHIỆM ĐỐI VỚI BẠN THEO BẤT KỲ LÝ THUYẾT TRÁCH NHIỆM NÀO VỀ BẤT KỲ THIỆT HẠI MANG TÍNH TRỰC TIẾP, GIÁN TIẾP, NGẪU NHIÊN, ĐẶC BIỆT, HẬU QUẢ HOẶC BẤT THƯỜNG NÀO MÀ BẠN CÓ THỂ PHẢI CHỊU, BAO GỒM BẤT KỲ TRƯỜNG HỢP MẤT DỮ LIỆU NÀO, DÙ GOOGLE HAY ĐẠI DIỆN CỦA GOOGLE CÓ BIẾT VỀ KHẢ NĂNG PHÁT SINH MẤT MÁT NHƯ VẬY HAY KHÔNG.
+
+12. Bồi thường
+
+12.1 Trong giới hạn tối đa mà pháp luật cho phép, bạn đồng ý bảo vệ, bồi thường và đảm bảo Google, các công ty liên kết của họ và các giám đốc, cán bộ, nhân viên và đại lý tương ứng của họ không bị thiệt hại trước và đối với bất kỳ và tất cả khiếu nại, hành động, kiện tụng hoặc thủ tục cũng như bất kỳ và tất cả tổn thất, trách nhiệm, thiệt hại, chi phí và phí tổn nào (bao gồm phí luật sư hợp lý) phát sinh từ hoặc phải trả từ (a) việc bạn sử dụng Preview, (b) bất kỳ ứng dụng nào do bạn phát triển trên Preview mà xâm phạm bất kỳ Quyền Sở hữu Trí tuệ của bất kỳ người nào hay bôi nhọ bất kỳ người nào hoặc vi phạm các quyền công khai hoặc riêng tư của họ, và (c) bất kỳ sự không tuân thủ nào của bạn đối với Thỏa thuận Cấp phép này.
+
+13. Thay đổi Thỏa thuận Cấp phép
+
+13.1 Google có thể thực hiện các thay đổi về Thỏa thuận Cấp phép khi họ phân phối các phiên bản mới của Preview. Khi những thay đổi này được thực hiện, Google sẽ lập một phiên bản Thỏa thuận Cấp phép mới có sẵn trên trang web nơi Preview được cung cấp.
+
+14. Các Điều khoản Pháp lý Chung
+
+14.1 Thỏa thuận Cấp phép này cấu thành toàn bộ thỏa thuận pháp lý giữa bạn và Google và chi phối việc bạn sử dụng Preview (không bao gồm bất kỳ dịch vụ nào mà Google có thể cung cấp cho bạn theo một thỏa thuận riêng bằng văn bản), và hoàn toàn thay thế bất kỳ thỏa thuận nào trước đây giữa bạn và Google liên quan tới Preview.
+
+14.2 Bạn đồng ý rằng nếu Google không thực hiện hay thi hành bất kỳ quyền hay chế tài hợp pháp nào có trong Thỏa thuận Cấp phép này (hoặc Google được hưởng lợi theo bất kỳ luật áp dụng nào), điều này sẽ không được coi như sự khước từ hình thức đối với các quyền của Google và rằng các quyền hoặc chế tài đó sẽ vẫn dành cho Google.
+
+14.3 Nếu bất kỳ tòa án pháp luật nào, có thẩm quyền tài phán đối với vấn đề này, phán rằng bất kỳ quy định nào của Thỏa thuận Cấp phép này không có hiệu lực, quy định đó sẽ bị xóa bỏ khỏi Thỏa thuận Cấp phép này mà không ảnh hưởng tới phần còn lại của Thỏa thuận Cấp phép này. Các quy định còn lại của Thỏa thuận Cấp phép này sẽ tiếp tục có giá trị và thi hành được.
+
+14.4 Bạn hiểu và đồng ý rằng mỗi thành viên trong nhóm các công ty mà trong đó Google là công ty mẹ sẽ là bên thụ hưởng thứ ba của Thỏa thuận Cấp phép và rằng những công ty khác đó sẽ có quyền trực tiếp thi hành, và dựa vào, bất kỳ quy định nào của Thỏa thuận Cấp phép này mà trao lợi ích cho họ (hoặc trao quyền có lợi cho họ). Ngoài điều này ra, không người hay công ty nào khác sẽ là bên thụ hưởng thứ ba của Thỏa thuận Cấp phép này.
+
+14.5 HẠN CHẾ VỀ XUẤT KHẨU. PREVIEW PHẢI TUÂN THEO PHÁP LUẬT VÀ QUY ĐỊNH VỀ XUẤT KHẨU CỦA HOA KỲ. BẠN PHẢI TUÂN THỦ TẤT CẢ PHÁP LUẬT VÀ QUY ĐỊNH VỀ XUẤT KHẨU TRONG NƯỚC VÀ QUỐC TẾ ÁP DỤNG CHO PREVIEW. NHỮNG LUẬT NÀY BAO GỒM CÁC HẠN CHẾ VỀ ĐIỂM ĐẾN, NGƯỜI DÙNG CUỐI VÀ MỤC ĐÍCH SỬ DỤNG CUỐI.
+
+14.6 Bạn không được phép chỉ định hoặc chuyển nhượng Thỏa thuận Cấp phép mà không có sự chấp thuận trước bằng văn bản của Google, và mọi nỗ lực chuyển nhượng mà không có chấp thuận như vậy sẽ vô hiệu lực. Bạn sẽ không được giao phó các trách nhiệm hoặc nghĩa vụ của mình theo Thỏa thuận Cấp phép này khi chưa có sự phê duyệt trước bằng văn bản của Google.
+
+14.7 Thỏa thuận Cấp phép này và mối quan hệ giữa bạn với Google theo Thỏa thuận Cấp phép sẽ được điều chỉnh bởi pháp luật của Tiểu bang California, không xét tới các quy định về xung đột pháp luật của họ. Bạn và Google đồng ý trình lên theo thẩm quyền tài phán duy nhất của các tòa án bên trong quận Santa Clara, California để giải quyết bất kỳ vấn đề pháp lý nào phát sinh từ Thỏa thuận Cấp phép này. Không kể điều này, bạn đồng ý rằng Google sẽ vẫn được phép xin các lệnh chế tài của tòa (hoặc một hình thức chế tài pháp lý khẩn cấp tương đương) ở bất kỳ vùng tài phán nào.
+  </div><!-- sdk terms -->
+
+
+
+    <div id="sdk-terms-form">
+      <p>
+        <input id="agree" type="checkbox" name="agree" value="1" onclick="onAgreeChecked()" />
+        <label id="agreeLabel" for="agree">Tôi đã đọc và đồng ý với các điều khoản và điều kiện trên</label>
+      </p>
+      <p><a href="" class="button disabled" id="downloadForRealz" onclick="return onDownloadForRealz(this);"></a></p>
+    </div>
+
+
+  </div><!-- end TOS -->
+
+
+  <div id="landing">
+
+<div id="qv-wrapper">
+  <div id="qv">
+    <h2>Trong tài liệu này</h2>
+      <ol>
+        <li><a href="#device-preview">Thiết lập thiết bị phần cứng</a>
+          <ol>
+            <li><a href="#ota">Nhận cập nhật qua sóng vô tuyến</a></li>
+            <li><a href="#flash">Flash thủ công thiết bị</a></li>
+            <li><a href="#revertDevice">Gỡ cài đặt</a></li>
+          </ol>
+        </li>
+        <li><a href="#setupAVD">Thiết lập bộ giả lập</a></li>
+      </ol>
+  </div>
+</div>
+
+<p>
+  Để chạy và kiểm thử ứng dụng của bạn trên nền tảng mới, bạn cần phải thiết lập môi trường thời gian chạy Android N
+. Bạn có thể thực hiện điều đó bằng một trong các cách sau:
+</p>
+
+<ul>
+  <li>Cài đặt Android N trên một thiết bị phần cứng được hỗ trợ, hoặc</li>
+  <li>Thiết lập một bộ giả lập Android chạy Android N</li>
+</ul>
+
+<p>
+  Nếu bạn muốn có một môi trường để kiểm thử khả năng tương thích cơ bản của ứng dụng của bạn trên
+  nền tảng mới này, tất cả những gì bạn cần là APK hiện tại của bạn và một thiết bị phần cứng hoặc
+  bộ giả lập. Bạn không nhất thiết phải cập nhật môi trường phát triển đầy đủ
+  để thực hiện kiểm thử cơ bản.
+</p>
+
+<p>
+  Nếu bạn muốn sửa đổi ứng dụng của mình để nhắm mục tiêu đến Android N hoặc sử dụng các API Android N mới,
+  bạn cần thiết lập một môi trường phát triển được cập nhật để hỗ trợ
+  Android N. <a href="{@docRoot}preview/setup-sdk.html">Thiết lập để Phát triển dành cho
+  Android N</a> có các chi tiết.
+</p>
+
+
+<h2 id="device-preview">Thiết lập thiết bị phần cứng</h2>
+
+<p>
+  Bản N Developer Preview cung cấp các cập nhật hệ thống cho một loạt các thiết bị phần cứng 
+  mà bạn có thể sử dụng để kiểm thử ứng dụng của bạn, từ điện thoại tới máy tính bảng và TV.
+</p>
+
+<p>
+  Nếu bạn có quyền truy cập vào một thiết bị được hỗ trợ, bạn có thể cập nhật nó thành bản dựng theo mốc của Preview dành cho
+  Nhà phát triển bằng một trong những cách sau:
+</p>
+
+<ul>
+  <li><strong>Đăng ký cập nhật hệ thống tự động qua vô tuyến cho thiết bị</strong> thông qua
+  <a href="https://g.co/androidbeta">Chương trình Android Beta</a>. Sau khi đăng ký, thiết bị của bạn sẽ nhận được 
+  qua sóng vô tuyến các cập nhật định kỳ về tất cả bản dựng theo mốc trong bản N Developer Preview. Cách tiếp cận này 
+  được khuyến khích bởi nó cho phép bạn chuyển tiếp liền mạch từ môi trường hiện tại của bạn
+ qua nhiều bản phát hành khác nhau của N Developer Preview.</li>
+  <li><strong>Tải xuống ảnh hệ thống của Developer Preview và flash thiết bị</strong>.
+  Các cập nhật qua vô tuyến không được cung cấp tự động cho các thiết bị mà bạn flash thủ công, nhưng
+  bạn có thể đăng ký Chương trình Android Beta cho các thiết bị đó để nhận cập nhật qua vô tuyến. </li>
+</ul>
+
+<h3 id="ota">Đăng ký cập nhật tự động qua vô tuyến cho thiết bị</h3>
+
+<p>
+  Nếu bạn có quyền truy cập vào một thiết bị được hỗ trợ (xem danh sách trong bảng
+  Tải xuống), bạn có thể nhận được cập nhật qua sóng vô tuyến để xem trước các phiên bản của Android
+ bằng cách đăng ký <a href="https://g.co/androidbeta">Chương trình Android Beta</a> cho thiết bị. Các cập nhật này được
+  tự động tải xuống và sẽ cập nhật thiết bị của bạn giống như các bản cập nhật
+  hệ thống chính thức.
+</p>
+
+<p>
+  Bạn có thể hủy đăng ký thiết bị bất cứ lúc nào. Thiết bị sẽ nhận được bản cập nhật qua vô tuyến
+ của phiên bản Android sản xuất mới nhất khả dụng cho thiết bị đó
+  (ví dụ, Android 6.0 Marshmallow). Việc cập nhật yêu cầu phải thiết lập lại thiết bị
+  hoàn toàn, vì vậy dữ liệu người dùng trên thiết bị sẽ được gỡ bỏ. Hãy đảm bảo <strong>sao lưu
+  dữ liệu quan trọng</strong> trước khi hủy đăng ký thiết bị.
+</p>
+
+<p>
+  Để biết thêm thông tin và đăng ký thiết bị của bạn, xem
+  trang web <a href="https://g.co/androidbeta">Chương trình Android Beta</a>.
+</p>
+
+<p class="note"><strong>Lưu ý:</strong>
+  Việc hủy đăng ký yêu cầu phải cài đặt lại toàn bộ thiết bị. Trước hết hãy sao lưu
+  các dữ liệu quan trọng.
+</p>
+
+<h3 id="flash">Flash thiết bị thủ công</h3>
+
+<p>
+  Bất cứ lúc nào bạn cũng có thể tải xuống ảnh hệ thống mới nhất của Developer Preview và
+  flash thủ công nó vào thiết bị của bạn. Xem bảng dưới đây để tải xuống ảnh hệ thống
+  cho thiết bị kiểm thử của bạn. Việc flash thủ công thiết bị sẽ hữu ích nếu bạn cần
+  kiểm soát chính xác môi trường kiểm thử hoặc cần phải cài đặt lại thường xuyên,
+  chẳng hạn như cho kiểm thử tự động. 
+</p>
+
+<!-- You can flash by ota or system image --><p>
+  Việc cài đặt ảnh hệ thống trên thiết bị <strong>sẽ gỡ bỏ tất cả dữ liệu khỏi
+  thiết bị</strong>, vì vậy trước hết bạn nên sao lưu dữ liệu của mình.
+</p>
+
+<p>
+  Sau khi sao lưu dữ liệu thiết bị và tải xuống ảnh hệ thống bên dưới
+  khớp với thiết bị của bạn, hãy làm theo hướng dẫn tại <a href="https://developers.google.com/android/nexus/images#instructions">developers.google.com/android</a>
+ để flash ảnh này vào thiết bị của bạn.
+</p>
+
+<p>
+  Các ảnh hệ thống được flash thủ công <strong>không
+  tự động nhận cập nhật qua vô tuyến</strong> cho các bản dựng theo mốc sau này của
+  Developer Preview. Hãy đảm bảo giữ cho môi trường của bạn được cập nhật và flash một
+  ảnh hệ thống mới tại mỗi mốc của Developer Preview.
+</p>
+
+<p>
+  Nếu bạn quyết định muốn nhận cập nhật qua vô tuyến sau khi đã flash thủ công thiết bị, 
+  tất cả những gì bạn cần làm là đăng ký <a href="https://g.co/androidbeta">Chương trình Android
+  Beta</a> cho thiết bị. Bạn có thể đăng ký thiết bị bất cứ lúc nào để nhận được
+  bản cập nhật qua vô tuyến tiếp theo của Preview. 
+</p>
+
+<table>
+  <tr>
+    <th scope="col">Thiết bị</th>
+    <th scope="col">Tải xuống / Tổng kiểm</th>
+  </tr>
+
+  <tr id="bullhead">
+    <td>Nexus 5X <br>"bullhead"</td>
+    <td><a href="#top" onclick="onDownload(this)">bullhead-npc56p-preview-6c877a3d.tgz</a><br>
+      MD5: b5cf874021023b398f5b983b24913f5d<br>
+      SHA-1: 6c877a3d9fae7ec8a1678448e325b77b7a7b143a
+    </td>
+  </tr>
+
+  <tr id="shamu">
+    <td>Nexus 6 <br>"shamu"</td>
+    <td><a href="#top" onclick="onDownload(this)">shamu-npc56p-preview-54b13c67.tgz</a><br>
+      MD5: af183638cf34e0eb944a1957d7696f60<br>
+      SHA-1: 54b13c6703d369cc79a8fd8728fe4103c6343973
+    </td>
+  </tr>
+
+  <tr id="angler">
+    <td>Nexus 6P <br>"angler"</td>
+    <td><a href="#top" onclick="onDownload(this)">angler-npc56p-preview-85ffc1b1.tgz</a><br>
+      MD5: bc4934ea7bd325753eee1606d3725a24<br>
+      SHA-1: 85ffc1b1be402b1b96f9ba10929e86bba6c6c588
+    </td>
+  </tr>
+
+  <tr id="volantis">
+    <td>Nexus 9 <br>"volantis"</td>
+    <td><a href="#top" onclick="onDownload(this)">volantis-npc56p-preview-0e8ec8ef.tgz</a><br>
+      MD5: c901334c6158351e945f188167ae56f4<br>
+      SHA-1: 0e8ec8ef98c7a8d4f58d15f90afc5176303efca4
+    </td>
+  </tr>
+
+  <tr id="volantisg">
+    <td>Nexus 9G <br>"volantisg"</td>
+    <td><a href="#top" onclick="onDownload(this)">volantisg-npc56p-preview-1bafdbfb.tgz</a><br>
+      MD5: 7bb95bebc478d7257cccb4652899d1b4<br>
+      SHA-1: 1bafdbfb502e979a9fe4c257a379c4c7af8a3ae6
+    </td>
+  </tr>
+
+  <tr id="fugu">
+    <td>Nexus Player <br>"fugu"</td>
+    <td><a href="#top" onclick="onDownload(this)">fugu-npc56r-preview-7027d5b6.tgz</a><br>
+      MD5: f5d3d8f75836ccfe4c70e8162e498be4<br>
+      SHA-1: 7027d5b662bceda4c80a91a0a14ef0e5a7ba795b
+    </td>
+  </tr>
+
+  <tr id="ryu">
+    <td>Pixel C <br>"ryu"</td>
+    <td><a href="#top" onclick="onDownload(this)">ryu-npc56p-preview-335a86a4.tgz</a><br>
+      MD5: 4e21fb183bbbf467bee91598d587fd2e<br>
+      SHA-1: 335a86a435ee51f18464de343ad2e071c38f0e92
+    </td>
+  </tr>
+  <tr id="seed">
+    <td>General Mobile 4G (Android One) <br>"seed"</td>
+    <td><a href="#top" onclick="onDownload(this)">seed_l8150-npc56p-preview-82472ebc.tgz</a><br>
+      MD5: 983e083bc7cd0c4a2d39d6ebaa20202a<br>
+      SHA-1: 82472ebc9a6054a103f53cb400a1351913c95127
+    </td>
+  </tr>
+
+</table>
+
+<h3 id="revertDevice">Gỡ cài đặt Preview khỏi thiết bị</h3>
+
+<p>
+  Nếu bạn muốn gỡ cài đặt preview khỏi thiết bị, bạn có thể thực hiện điều đó bằng một trong
+  những cách sau: </p>
+  <ul>
+    <li><strong>Lấy thông số kỹ thuật của ảnh hệ thống nguyên gốc</strong> và sau đó flash thủ công
+    nó cho thiết bị.
+      <ul>
+          <li>Đối với <strong>các thiết bị Nexus và Pixel C</strong>, xem
+        trang <a href="http://developers.google.com/android/nexus/images">Ảnh Cài đặt Gốc
+        cho Thiết bị Nexus</a> để tìm bản tải xuống. </li>
+        <li>Đối với <strong>các thiết bị khác</strong>, vui lòng liên hệ trực tiếp với nhà sản xuất
+thiết bị. Hoặc, nếu thiết bị được hỗ trợ
+        trong Chương trình Android Beta, bạn có thể đăng ký
+        chương trình cho thiết bị và sau đó hủy đăng ký thiết bị (xem bên dưới).</li>
+      </ul>
+    </li>
+    <li><strong>Hủy đăng ký thiết bị khỏi Chương trình Android Beta</strong>. Nếu
+    thiết bị được đăng ký <a href="https://g.co/androidbeta">Chương trình Android Beta
+    </a>, không quan trọng là thiết bị nào, bạn có thể dễ dàng hủy đăng ký thiết bị khỏi chương trình này.
+  <p>
+    Thiết bị sẽ nhận được bản cập nhật qua vô tuyến của phiên bản Android sản xuất
+    mới nhất có sẵn cho thiết bị đó (ví dụ, Android 6.0 Marshmallow).
+    Bản cập nhật yêu cầu thiết lập lại toàn bộ thiết bị, vì vậy dữ liệu người dùng trên thiết bị sẽ được
+    gỡ bỏ. Hãy đảm bảo rằng bạn đã  <strong>sao lưu dữ liệu quan trọng</strong> trước khi
+    hủy đăng ký thiết bị.
+  </p>
+  </li>
+</ul>
+
+<p class="note"><strong>Lưu ý:</strong>
+  Việc gỡ cài đặt ảnh hệ thống của Developer Preview trước khi
+  kết thúc chương trình yêu cầu phải thiết lập lại toàn bộ thiết bị và gỡ bỏ tất cả dữ liệu người dùng
+  trên thiết bị.
+</p>
+
+
+<h2 id="setupAVD">Thiết lập bộ giả lập</h2>
+
+<p>Để sử dụng Bộ Giả Lập Android chạy Android N Preview, bạn cần
+tải xuống Android N Preview SDK và tạo một thiết bị ảo cho
+bộ giả lập.</p>
+
+<p>Đầu tiên, tải xuống Android N Preview SDK như sau (nếu bạn
+đã có nó trong khi <a href="{@docRoot}preview/setup-sdk.html">thiết lập
+để phát triển dành cho Android N</a>, bạn có thể bỏ qua phần này):
+
+<ol>
+  <li>Trong Android Studio, Mở hộp thoại Settings
+    (<strong>File &gt; Settings</strong> trên Windows/Linux, hoặc
+    <strong>Android Studio &gt; Preferences</strong> trên Mac). Trong bảng điều khiển
+    bên trái, chọn <strong>Appearance &amp; Behavior &gt;
+  System Settings &gt; Android SDK</strong>.
+
+  <li>Nhấp vào tab <strong>SDK Platforms</strong>, rồi chọn hộp kiểm
+  <strong>Android N Preview</strong>.</li>
+
+  <li>Nhấp vào tab <strong>SDK Tools</strong>, rồi chọn
+    <strong>Android SDK Build Tools</strong>, <strong>Android SDK
+    Platform-Tools</strong>, và các hộp kiểm <strong>Android SDK Tools</strong> 
+.
+  </li>
+
+  <li>Nhấp vào <strong>OK</strong> và chấp nhận thỏa thuận
+    giấy phép cho bất kỳ gói nào sẽ được cài đặt.
+  </li>
+</ol>
+
+<p>Giờ đây bạn sẽ có <strong>Android SDK Built-Tools 24.0 0 rc1</strong>,
+<strong>Platform-Tools 24.0.0 rc1</strong>, và <strong>SDK Tools
+25.0.9</strong>. Nếu bạn không cập nhật Các Công cụ SDK lên 25.0.9, bạn sẽ không
+thể chạy ảnh hệ thống x86_64 cho Android N.</p>
+
+
+<p>Bây giờ, hãy tạo một thiết bị ảo với ảnh hệ thống Android N:</p>
+
+<ol>
+  <li>Mở Trình quản lý AVD bằng cách chọn <strong>Tools &gt; Android &gt;
+    AVD Manager</strong>.</li>
+  <li>Nhấp vào <strong>Create Virtual Device</strong>.</li>
+  <li>Chọn một thiết bị chẳng hạn như Nexus 5X, Nexus 6P, Nexus 9, hoặc Android TV,
+    rồi nhấp vào <strong>Next</strong>.</li>
+  <li>Chọn ảnh hệ thống <strong>N</strong> (với
+    <strong>x86</strong> ABI), rồi nhấp vào <strong>Next</strong>.
+    (Hiện chỉ có ảnh hệ thống x86 được hỗ trợ với Bộ giả lập Android
+dành cho Preview Android N.)
+  <li>Hoàn thành các bước cấu hình AVD còn lại và nhấp vào
+    <strong>Finish</strong>.</li>
+</ol>
+
+<p>Giờ đây bạn có thể khởi chạy Bộ giả lập Android với AVD Preview Android N.</p>
+
+<p>
+Để có trải nghiệm tốt nhất trong Bộ giả lập Android, hãy cài đặt
+Android Studio 2.1 Preview, có hỗ trợ <a href="http://tools.android.com/tech-docs/emulator">Bộ giả lập Android 2.0 Beta</a>
+với hiệu suất nhanh hơn nhiều so với Bộ giả lập trong
+Android Studio 1.5.</p>
+
+<p class="note"><strong>Lưu ý:</strong>
+  Nếu bạn hiện đang sử dụng Android Studio 2.0 Beta, một vấn đề đã được biết đến
+ sẽ ngăn cản bạn tạo AVD bằng ảnh hệ thống của N Preview, vì vậy 
+  hiện bạn cần sử dụng preview của Android Studio 2.1 để tạo các AVD.
+</p>
+
+<p>Để biết thêm thông tin về tạo thiết bị ảo, hãy xem <a href="{@docRoot}tools/devices/index.html">Quản lý Thiết bị ảo</a>.
+</p>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+  </div><!-- landing -->
+
+</div><!-- relative wrapper -->
+
+
+
+<script>
+  var urlRoot = "http://storage.googleapis.com/androiddevelopers/shareables/preview/";
+  function onDownload(link) {
+
+    $("#downloadForRealz").html("Download " + $(link).text());
+    $("#downloadForRealz").attr('href', urlRoot + $(link).text());
+
+    $("#tos").fadeIn('fast');
+    $("#landing").fadeOut('fast');
+
+    return true;
+  }
+
+
+  function onAgreeChecked() {
+    /* verify that the TOS is agreed */
+    if ($("input#agree").is(":checked")) {
+      /* reveal the download button */
+      $("a#downloadForRealz").removeClass('disabled');
+    } else {
+      $("a#downloadForRealz").addClass('disabled');
+    }
+  }
+
+  function onDownloadForRealz(link) {
+    if ($("input#agree").is(':checked')) {
+    /*
+      $("#tos").fadeOut('fast');
+      $("#landing").fadeIn('fast');
+    */
+
+      ga('send', 'event', 'M Preview', 'System Image', $("#downloadForRealz").html());
+
+    /*
+      location.hash = "";
+    */
+      return true;
+    } else {
+      return false;
+    }
+  }
+
+  $(window).hashchange( function(){
+    if (location.hash == "") {
+      location.reload();
+    }
+  });
+
+</script>
diff --git a/docs/html-intl/intl/vi/preview/features/background-optimization.jd b/docs/html-intl/intl/vi/preview/features/background-optimization.jd
new file mode 100644
index 0000000..3fdb8d7
--- /dev/null
+++ b/docs/html-intl/intl/vi/preview/features/background-optimization.jd
@@ -0,0 +1,388 @@
+page.title=Tối ưu hóa Chạy ngầm
+page.metaDescription=Các hạn chế mới đối với truyền phát không biểu thị.
+page.keywords="android N", "implicit broadcasts", "job scheduler"
+@jd:body
+
+<div id="qv-wrapper">
+  <div id="qv">
+    <h2>
+      Trong tài liệu này
+    </h2>
+
+    <ol>
+      <li>
+        <a href="#connectivity-action">Các hạn chế về CONNECTIVITY_ACTION</a>
+      </li>
+
+      <li>
+        <a href="#sched-jobs">Lên lịch Tác vụ Mạng trên Kết nối
+        Không đo lưu lượng</a>
+      </li>
+
+      <li>
+        <a href="#monitor-conn">Theo dõi Kết nối Mạng Trong khi Ứng dụng
+        đang Chạy</a>
+      </li>
+
+      <li>
+        <a href="#media-broadcasts">Các hạn chế về NEW_PICTURE và
+        NEW_VIDEO</a>
+      </li>
+
+      <li>
+        <a href="#new-jobinfo">Các phương thức JobInfo Mới</a>
+      </li>
+
+      <li>
+        <a href="#new-jobparam">Các phương thức JobParameter Mới</a>
+      </li>
+
+      <li>
+        <a href="#further-optimization">Tối ưu hóa thêm Ứng dụng của bạn</a>
+      </li>
+    </ol>
+  </div>
+</div>
+
+<p>
+  Các tiến trình chạy ngầm có thể tiêu tốn bộ nhớ và pin. Ví dụ, một
+  truyền phát không biểu thị có thể bắt đầu nhiều tiến trình chạy ngầm đã đăng ký
+  để theo dõi chúng, ngay cả khi các tiến trình đó có thể không làm việc nhiều. Điều này có thể có
+  ảnh hưởng lớn đến cả hiệu suất của thiết bị lẫn trải nghiệm của người dùng.
+</p>
+
+<p>
+  Để loại bỏ vấn đề này, N Developer Preview áp dụng các hạn chế
+  sau:
+</p>
+
+<ul>
+  <li>Các ứng dụng nhắm đến Preview không nhận được truyền phát {@link
+  android.net.ConnectivityManager#CONNECTIVITY_ACTION} nếu chúng 
+  đăng ký nhận truyền phát trong bản kê khai của chúng. Các ứng dụng đang chạy ở tiền cảnh
+  vẫn có thể theo dõi {@code CONNECTIVITY_CHANGE} trên luồng chính của chúng bằng cách
+  đăng ký{@link android.content.BroadcastReceiver} với {@link
+  android.content.Context#registerReceiver Context.registerReceiver()}.
+  </li>
+
+  <li>Ứng dụng không thể gửi hoặc nhận các truyền phát {@link
+  android.hardware.Camera#ACTION_NEW_PICTURE} hoặc {@link
+  android.hardware.Camera#ACTION_NEW_VIDEO}. Việc tối ưu này
+  tác động đến mọi ứng dụng, không chỉ các ứng dụng nhắm đến Preview.
+  </li>
+</ul>
+
+<p>
+  Khuôn khổ Android cung cấp một số giải pháp để giảm thiểu sự cần thiết đối với
+  các truyền phát không biểu thị. Ví dụ, {@link android.app.job.JobScheduler}
+  và <a href="https://developers.google.com/android/reference/com/google/android/gms/gcm/GcmNetworkManager">
+  {@code GcmNetworkManager}</a> cung cấp một cơ chế lên lịch hiệu quả
+  cho các hoạt động mạng khi đáp ứng các điều kiện được chỉ định, ví dụ như kết nối tới mạng
+ không đo lưu lượng. Bây giờ bạn cũng có thể sử dụng {@link android.app.job.JobScheduler}
+  để phản ứng lại với các thay đổi đối với các trình cung cấp nội dung. Các đối tượng {@link android.app.job.JobInfo}
+  gói gọn các tham số {@link android.app.job.JobScheduler}
+  dùng để lên lịch tác vụ của bạn. Khi đáp ứng được các điều kiện của tác vụ, hệ thống
+  sẽ thực thi tác vụ này trên {@link android.app.job.JobService} của ứng dụng của bạn.
+</p>
+
+<p>
+  Trong tài liệu này, chúng ta sẽ tìm hiểu cách sử dụng các phương thức thay thế, chẳng hạn như
+  {@link android.app.job.JobScheduler}, để thích ứng ứng dụng của bạn với các hạn chế
+  mới này.
+</p>
+
+<h2 id="connectivity-action">
+  Các hạn chế về CONNECTIVITY_ACTION
+</h2>
+
+<p>
+  Các ứng dụng nhắm đến N Developer Preview không nhận được truyền phát {@link
+  android.net.ConnectivityManager#CONNECTIVITY_ACTION} nếu chúng
+  đăng ký nhận truyền phát trong bản kê khai của chúng, và các tiến trình phụ thuộc vào truyền phát này
+  sẽ không khởi động. Điều này cũng đặt ra một vấn đề cho ứng dụng
+  về việc theo dõi thay đổi mạng hoặc thực hiện các hoạt động mạng hàng loạt khi
+  thiết bị kết nối với một mạng không đo lưu lượng. Một số giải pháp để tránh khỏi hạn chế này
+  đã tồn tại trong khuôn khổ Android, nhưng chọn được một giải pháp phù hợp
+  phụ thuộc vào những gì bạn muốn ứng dụng của bạn hoàn thành.
+</p>
+
+<p class="note">
+  <strong>Lưu ý:</strong> Một{@link android.content.BroadcastReceiver} có đăng ký
+  {@link android.content.Context#registerReceiver Context.registerReceiver()}
+  tiếp tục nhận các truyền phát này trong khi ứng dụng đang ở tiền cảnh.
+</p>
+
+<h3 id="sched-jobs">
+  Lên lịch Tác vụ Mạng trên Kết nối Không đo lưu lượng
+</h3>
+
+<p>
+  Khi sử dụng lớp{@link android.app.job.JobInfo.Builder JobInfo.Builder} 
+  để xây dựng đối tượng {@link android.app.job.JobInfo} của bạn, hãy áp dụng phương thức {@link
+  android.app.job.JobInfo.Builder#setRequiredNetworkType
+  setRequiredNetworkType()} và chuyển {@link android.app.job.JobInfo
+  JobInfo.NETWORK_TYPE_UNMETERED} dưới dạng một tham số tác vụ. Đoạn mã mẫu sau
+  lên lịch một dịch vụ để chạy khi thiết bị kết nối với một mạng
+  không đo lưu lượng và đang sạc:
+</p>
+
+<pre>
+public static final int MY_BACKGROUND_JOB = 0;
+...
+public static void scheduleJob(Context context) {
+  JobScheduler js =
+      (JobScheduler) context.getSystemService(Context.JOB_SCHEDULER_SERVICE);
+  JobInfo job = new JobInfo.Builder(
+    MY_BACKGROUND_JOB,
+    new ComponentName(context, MyJobService.class))
+      .setRequiredNetworkType(JobInfo.NETWORK_TYPE_UNMETERED)
+      .setRequiresCharging(true)
+      .build();
+  js.schedule(job);
+}
+</pre>
+
+<p>
+  Khi các điều kiện cho tác vụ của bạn đã được đáp ứng, ứng dụng của bạn sẽ nhận được lệnh gọi lại để chạy 
+  phương thức{@link android.app.job.JobService#onStartJob onStartJob()}trong
+  {@code JobService.class} được chỉ định. Để xem thêm các ví dụ về triển khai {@link
+  android.app.job.JobScheduler} , hãy xem <a href="{@docRoot}samples/JobScheduler/index.html">ứng dụng mẫu JobScheduler</a>.
+</p>
+
+<p>
+  Các ứng dụng sử dụng dịch vụ GMSCore, và nhắm đến Android 5.0 (API mức 21)
+  hoặc thấp hơn, có thể sử dụng <a href="https://developers.google.com/android/reference/com/google/android/gms/gcm/GcmNetworkManager">
+  {@code GcmNetworkManager}</a> và quy định {@code Task.NETWORK_STATE_UNMETERED}.
+</p>
+
+<h3 id="monitor-conn">
+  Theo dõi Kết nối Mạng Trong khi Ứng dụng đang Chạy
+</h3>
+
+<p>
+  Các ứng dụng đang chạy ở tiền cảnh vẫn có thể theo dõi {@code
+  CONNECTIVITY_CHANGE} bằng một{@link
+  android.content.BroadcastReceiver} đã đăng ký. Tuy nhiên, API {@link
+  android.net.ConnectivityManager} cung cấp phương thức yêu cầu lệnh gọi lại hiệu quả hơn
+  chỉ khi đáp ứng được các điều kiện được chỉ định.
+</p>
+
+<p>
+  Các đối tượng {@link android.net.NetworkRequest} định nghĩa các tham số của
+  lệnh gọi lại mạng xét về  {@link android.net.NetworkCapabilities}. Bạn
+  tạo các đối tượng {@link android.net.NetworkRequest} bằng lớp {@link
+  android.net.NetworkRequest.Builder NetworkRequest.Builder}. {@link
+  android.net.ConnectivityManager#registerNetworkCallback(android.net.NetworkRequest,
+  android.net.ConnectivityManager.NetworkCallback) registerNetworkCallback()}
+  rồi chuyển đối tượng{@link android.net.NetworkRequest} sang hệ thống. Khi
+  đáp ứng được các điều kiện mạng, ứng dụng nhận lệnh gọi lại để thực thi phương thức
+  {@link android.net.ConnectivityManager.NetworkCallback#onAvailable
+  onAvailable()} như được định nghĩa trong lớp {@link
+  android.net.ConnectivityManager.NetworkCallback} của nó.
+</p>
+
+<p>
+  Ứng dụng tiếp tục nhận lệnh gọi lại cho đến khi ứng dụng tồn tại hoặc nó gọi
+  {@link android.net.ConnectivityManager#unregisterNetworkCallback
+  unregisterNetworkCallback()}.
+</p>
+
+<h2 id="media-broadcasts">
+  Các hạn chế về NEW_PICTURE và NEW_VIDEO
+</h2>
+
+<p>
+  Trong N Developer Preview, ứng dụng không thể gửi hoặc nhận các truyền phát {@link
+  android.hardware.Camera#ACTION_NEW_PICTURE} hoặc {@link
+  android.hardware.Camera#ACTION_NEW_VIDEO}. Hạn chế này giúp
+  loại bỏ các tác động về hiệu suất và trải nghiệm của người dùng khi một số ứng dụng phải
+  thức dậy để xử lý một ảnh hoặc video mới. N Developer Preview
+  mở rộng {@link android.app.job.JobInfo} và {@link
+  android.app.job.JobParameters} để cung cấp một giải pháp thay thế.
+</p>
+
+<h3 id="new-jobinfo">
+  Các phương thức JobInfo Mới
+</h3>
+
+<p>
+  Để kích hoạt tác vụ khi thay đổi URI nội dung, N Developer Preview sẽ mở rộng
+  API{@link android.app.job.JobInfo} bằng các phương thức sau:
+</p>
+
+<dl>
+  <dt>
+    {@code JobInfo.TriggerContentUri()}
+  </dt>
+
+  <dd>
+    Gói gọn các tham số yêu cầu để kích hoạt tác vụ khi thay đổi URI nội dung.
+  </dd>
+
+  <dt>
+    {@code JobInfo.Builder.addTriggerContentUri()}
+  </dt>
+
+  <dd>
+    Chuyển một đối tượng {@code TriggerContentUri} đến {@link
+    android.app.job.JobInfo}. Một {@link android.database.ContentObserver}
+    sẽ theo dõi URI nội dung được gói gọn. Nếu có nhiều đối tượng {@code
+    TriggerContentUri} được liên kết với một tác vụ, hệ thống sẽ cung cấp
+    lệnh gọi lại ngay cả khi hệ thống báo cáo có sự thay đổi chỉ ở trong một trong những URI nội dung.
+  </dd>
+
+  <dd>
+    Thêm cờ {@code TriggerContentUri.FLAG_NOTIFY_FOR_DESCENDANTS} để
+    kích hoạt tác vụ nếu bất kỳ kế nhiệm nào của URI đã cho thay đổi. Cờ này
+    tương ứng với tham số {@code notifyForDescendants} đã chuyển đến {@link
+    android.content.ContentResolver#registerContentObserver
+    registerContentObserver()}.
+  </dd>
+</dl>
+
+<p class="note">
+  <strong>Lưu ý:</strong> {@code TriggerContentUri()} không thể được sử dụng 
+  kết hợp với {@link android.app.job.JobInfo.Builder#setPeriodic
+  setPeriodic()} hoặc {@link android.app.job.JobInfo.Builder#setPersisted
+  setPersisted()}. Để tiếp tục theo dõi các thay đổi nội dung, hãy lên lịch một
+  {@link android.app.job.JobInfo} mới trước khi {@link
+  android.app.job.JobService} của ứng dụng hoàn thành xử lý lệnh gọi lại gần đây nhất.
+</p>
+
+<p>
+  Đoạn mã mẫu sau lên lịch kích hoạt một tác vụ khi hệ thống báo cáo
+  có sự thay đổi về URI nội dung, {@code MEDIA_URI}:
+</p>
+
+<pre>
+public static final int MY_BACKGROUND_JOB = 0;
+...
+public static void scheduleJob(Context context) {
+  JobScheduler js =
+          (JobScheduler) context.getSystemService(Context.JOB_SCHEDULER_SERVICE);
+  JobInfo.Builder builder = new JobInfo.Builder(
+          MY_BACKGROUND_JOB,
+          new ComponentName(context, MediaContentJob.class));
+  builder.addTriggerContentUri(
+          new JobInfo.TriggerContentUri(MEDIA_URI,
+          JobInfo.TriggerContentUri.FLAG_NOTIFY_FOR_DESCENDANTS));
+  js.schedule(builder.build());
+}
+</pre>
+<p>
+  Khi hệ thống báo cáo có sự thay đổi trong (các) URI nội dung được chỉ định, ứng dụng của bạn
+  sẽ nhận được lệnh gọi lại và một đối tượng {@link android.app.job.JobParameters} được chuyển sang
+  phương thức {@link android.app.job.JobService#onStartJob onStartJob()}
+  trong {@code MediaContentJob.class}.
+</p>
+
+<h3 id="new-jobparam">
+  Các phương thức JobParameter Mới
+</h3>
+
+<p>
+  N Developer Preview cũng mở rộng {@link android.app.job.JobParameters} để
+  cho phép ứng dụng của bạn nhận thông tin hữu ích về những gì thẩm quyền nội dung
+  và các URI đã kích hoạt tác vụ:
+</p>
+
+<dl>
+  <dt>
+    {@code Uri[] getTriggeredContentUris()}
+  </dt>
+
+  <dd>
+    Trả về mảng URI đã kích hoạt tác vụ đó. Kết quả trả về có thể bằng {@code
+    null} nếu không có URI nào kích hoạt  tác vụ (ví dụ như, tác vụ đã được
+    kích hoạt do thời hạn hoặc lý do khác), hoặc số các URI
+    bị thay đổi nhiều hơn 50.
+  </dd>
+
+  <dt>
+    {@code String[] getTriggeredContentAuthorities()}
+  </dt>
+
+  <dd>
+    Trả về mảng xâu thẩm quyền nội dung đã kích hoạt tác vụ đó.
+    Nếu mảng được trả về không phải {@code null}, hãy dùng {@code getTriggeredContentUris()}
+    để truy xuất chi tiết về URI nào đã thay đổi.
+  </dd>
+</dl>
+
+<p>
+  Mã mẫu sau sẽ ghi đè lên phương thức {@link
+  android.app.job.JobService#onStartJob JobService.onStartJob()} và 
+  và ghi lại các thẩm quyền nội dung và URI đã kích hoạt tác vụ.
+</p>
+
+<pre>
+&#64;Override
+public boolean onStartJob(JobParameters params) {
+  StringBuilder sb = new StringBuilder();
+  sb.append("Media content has changed:\n");
+  if (params.getTriggeredContentAuthorities() != null) {
+      sb.append("Authorities: ");
+      boolean first = true;
+      for (String auth :
+          params.getTriggeredContentAuthorities()) {
+          if (first) {
+              first = false;
+          } else {
+             sb.append(", ");
+          }
+           sb.append(auth);
+      }
+      if (params.getTriggeredContentUris() != null) {
+          for (Uri uri : params.getTriggeredContentUris()) {
+              sb.append("\n");
+              sb.append(uri);
+          }
+      }
+  } else {
+      sb.append("(No content)");
+  }
+  Log.i(TAG, sb.toString());
+  return true;
+}
+</pre>
+
+<h2 id="further-optimization">
+  Tối ưu hóa thêm Ứng dụng của bạn
+</h2>
+
+<p>
+  Tối ưu hóa ứng dụng của bạn để chạy trên các thiết bị có bộ nhớ ít, hoặc đang trong điều kiện
+  bộ nhớ ít có thể cải thiện hiệu suất và trải nghiệm của người dùng. Loại bỏ
+  các thành phần phụ thuộc trên các dịch vụ chạy ngầm và bộ thu truyền phát không biểu thị đã đăng ký tĩnh
+  có thể giúp ứng dụng của bạn chạy tốt hơn trên các thiết bị như vậy. Mặc dù
+  N Developer Preview thực hiện các bước để giảm bớt một vài trong số các vấn đề này, nhưng chúng tôi 
+  khuyến nghị bạn nên tối ưu ứng dụng của bạn để chạy hoàn toàn không cần sử dụng
+  các tiến trình chạy ngầm này.
+</p>
+
+<p>
+  N Developer Preview giới thiệu một số lệnh <a href="{@docRoot}tools/help/adb.html">Android Debug Bridge (ADB)</a> bổ sung mà
+  bạn có thể sử dụng để kiểm thử hành vi của ứng dụng bằng các tiến trình chạy ngầm đã bị vô hiệu hóa đó:
+</p>
+
+<ul>
+  <li>Để mô phỏng các điều kiện trong đó các truyền phát không biểu thị và dịch vụ chạy ngầm
+  không có sẵn, hãy nhập lệnh sau:
+  </li>
+
+  <li style="list-style: none; display: inline">
+<pre class="no-pretty-print">
+{@code $ adb shell cmd appops set RUN_IN_BACKGROUND ignore}
+</pre>
+  </li>
+
+  <li>Để kích hoạt lại các truyền phát không biểu thị và dịch vụ chạy ngầm, hãy nhập
+  lệnh sau:
+  </li>
+
+  <li style="list-style: none; display: inline">
+<pre class="no-pretty-print">
+{@code $ adb shell cmd appops set RUN_IN_BACKGROUND allow}
+</pre>
+  </li>
+</ul>
\ No newline at end of file
diff --git a/docs/html-intl/intl/vi/preview/features/direct-boot.jd b/docs/html-intl/intl/vi/preview/features/direct-boot.jd
new file mode 100644
index 0000000..b844a0f
--- /dev/null
+++ b/docs/html-intl/intl/vi/preview/features/direct-boot.jd
@@ -0,0 +1,180 @@
+page.title=Khởi động Trực tiếp
+page.keywords=preview,sdk,direct boot
+page.tags=androidn
+
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+  <h2>Trong tài liệu này</h2>
+  <ol>
+    <li><a href="#run">Yêu cầu Truy cập để Chạy trong quá trình Khởi động Trực tiếp</a></li>
+    <li><a href="#access">Truy cập Bộ nhớ Lưu trữ Mã hóa của Thiết bị</a></li>
+    <li><a href="#notification">Nhận thông báo Mở khóa của Người dùng</a></li>
+    <li><a href="#migrating">Chuyển nhập Dữ liệu Có sẵn</a></li>
+    <li><a href="#testing">Kiểm thử Ứng dụng Nhận biết Mã hóa của bạn</a></li>
+  </ol>
+</div>
+</div>
+
+<p>Android N chạy trong chế độ <i>Khởi động Trực tiếp</i> an toàn
+khi thiết bị đã được bật nguồn nhưng người dùng chưa mở khóa
+thiết bị. Để hỗ trợ chế độ này, hệ thống cung cấp hai vị trí lưu trữ dữ liệu:</p>
+
+<ul>
+<li><i>Lưu trữ mã hóa thông tin xác thực</i>, là vị trí lưu trữ mặc định
+và chỉ khả dụng sau khi người dùng đã mở khóa thiết bị.</li>
+<li><i>Lưu trữ mã hóa thiết bị</i>, là vị trí lưu trữ khả dụng cho cả
+chế độ Khởi động Trực tiếp và sau khi người dùng đã mở khóa thiết bị.</li>
+</ul>
+
+<p>Theo mặc định, các ứng dụng không chạy trong quá trình chế độ Khởi động Trực tiếp.
+Nếu ứng dụng của bạn cần thực hiện hành động trong chế độ Khởi động Trực tiếp thì bạn có thể đăng ký
+các thành phần ứng dụng cần chạy trong chế độ này. Một số trường hợp sử dụng phổ biến
+cho các ứng dụng cần chạy trong chế độ Khởi động Trực tiếp gồm:</p>
+
+<ul>
+<li>Ứng dụng có thông báo theo lịch, như ứng dụng
+đồng hồ báo thức.</li>
+<li>Ứng dụng cung cấp các thông báo quan trọng cho người dùng như ứng dụng SMS.</li>
+<li>Ứng dụng cung cấp các dịch vụ trợ năng như Talkback.</li>
+</ul>
+
+<p>Nếu ứng dụng của bạn cần truy cập dữ liệu khi đang chạy trong chế độ Khởi động Trực tiếp thì hãy sử dụng
+lưu trữ mã hóa thiết bị. Bộ nhớ lưu trữ được mã hóa của thiết bị có chứa dữ liệu
+được mã hóa bằng một khóa chỉ khả dụng sau khi thiết bị đã thực hiện một
+lần khởi động được xác thực thành công.</p>
+
+<p>Đối với dữ liệu cần được mã hóa bằng một khóa liên kết tới thông tin xác thực
+của người dùng như mã PIN hoặc mật khẩu thì hãy sử dụng bộ nhớ lưu trữ mã hóa thông tin xác thực.
+Bộ nhớ lưu trữ mã hóa thông tin xác thực chỉ khả dụng sau khi người dùng đã mở khóa
+thành công thiết bị, tính đến khi người dùng khởi động lại thiết bị một lần nữa. Nếu
+người dùng mở màn hình khóa sau khi mở khóa thiết bị thì thao tác này không khóa
+bộ nhớ mã hóa thông tin xác thực.</p>
+
+<h2 id="run">Yêu cầu Truy cập để Chạy trong quá trình Khởi động Trực tiếp</h2>
+
+<p>Các ứng dụng phải đăng ký các thành phần của chúng với hệ thống trước khi chúng
+có thể chạy trong chế độ Khởi động Trực tiếp hoặc truy cập bộ nhớ lưu trữ
+mã hóa thiết bị. Ứng dụng đăng ký với hệ thống bằng cách đánh dấu các thành phần là
+<i>nhận biết mã hóa</i>. Để đánh dấu các thành phần của bạn là nhận biết mã hóa, hãy đặt thuộc tính
+<code>android:encryptionAware</code> thành true trong bản kê khai.<p>
+
+<p>Các thành phần nhận biết mã hóa có thể đăng ký để nhận một thông điệp truyền phát
+<code>LOCKED_BOOT_COMPLETED</code> từ
+hệ thống khi thiết bị được khởi động lại. Lúc này, bộ nhớ lưu trữ
+mã hóa thiết bị sẽ khả dụng và thành phần của bạn có thể thực thi các tác vụ cần được
+chạy trong chế độ Khởi động Trực tiếp, như kích hoạt báo thức đã đặt.</p>
+
+<p>Đoạn mã sau là một ví dụ về cách đăng ký một
+{@link android.content.BroadcastReceiver} là nhận biết mã hóa và thêm một
+bộ lọc ý định cho <code>LOCKED_BOOT_COMPLETED</code> trong bản kê khai của ứng dụng:</p>
+
+<pre>
+&lt;receiever
+  android:encryptionAware="true" &gt;
+  ...
+  &lt;intent-filter&gt;
+    &lt;action android:name="android.intent.action.LOCKED_BOOT_COMPLETED" /&gt;
+  &lt;/intent-filter&gt;
+&lt;/receiver&gt;
+</pre>
+
+<p>Khi người dùng đã mở khóa thiết bị thì mọi thành phần có thể truy cập 
+cả bộ nhớ lưu trữ mã hóa thiết bị lẫn bộ nhớ lưu trữ mã hóa thông tin xác thực.</p>
+
+<h2 id="access">Truy cập Bộ nhớ Lưu trữ Mã hóa của Thiết bị</h2>
+
+<p>Để truy cập bộ nhớ lưu trữ mã hóa thiết bị, hãy tạo một thực thể
+{@link android.content.Context} thứ hai bằng cách gọi
+<code>Context.createDeviceEncryptedStorageContext()</code>. Tất cả các lệnh gọi
+API bộ nhớ lưu trữ đều sử dụng bối cảnh này để truy cập bộ nhớ lưu trữ mã hóa thiết bị. 
+Ví dụ sau sẽ truy cập bộ nhớ lưu trữ mã hóa của thiết bị và mở một tệp
+dữ liệu ứng dụng có sẵn:</p>
+
+<pre>
+Context directBootContext = Context.createDeviceEncryptedStorageContext();
+// Access appDataFilename that lives in device encrypted storage
+FileInputStream inStream = directBootContext.openFileInput(appDataFilename);
+// Use inStream to read content...
+</pre>
+
+<p>Chỉ sử dụng bộ nhớ lưu trữ mã hóa của thiết bị
+cho thông tin phải truy cập được trong chế độ Khởi động Trực tiếp.
+Không sử dụng bộ nhớ lưu trữ mã hóa của thiết bị làm bộ lưu trữ mã hóa cho mục đích chung.
+Đối với thông tin cá nhân của người dùng, hoặc dữ liệu được mã hóa không cần thiết
+trong chế độ Khởi động Trực tiếp thì hãy sử dụng bộ nhớ lưu trữ mã hóa thông tin xác thực.</p>
+
+<h2 id="notification">Nhận thông báo Mở khóa của Người dùng</h2>
+
+<p>Một khi người dùng mở khóa thiết bị sau khi khởi động lại, ứng dụng của bạn có thể chuyển sang
+truy cập bộ nhớ lưu trữ mã hóa thông tin xác thực và sử dụng các dịch vụ thông thường của hệ thống
+phụ thuộc vào thông tin xác thực người dùng.</p>
+
+<p>Để nhận thông báo khi người dùng mở khóa thiết bị sau khi khởi động lại,
+hãy đăng ký một {@link android.content.BroadcastReceiver} từ một thành phần đang chạy
+để lắng nghe thông báo <code>ACTION_USER_UNLOCKED</code>. Hoặc bạn có thể
+nhận thông báo có sẵn {@link android.content.Intent#ACTION_BOOT_COMPLETED
+ACTION_BOOT_COMPLETED} lúc này sẽ chỉ báo thiết bị đã khởi động xong và
+người dùng đã mở khóa thiết bị.</p>
+
+<p>Bạn có thể truy vấn trực tiếp để biết người dùng đã mở khóa thiết bị hay chưa bằng cách gọi
+<code>UserManager.isUserUnlocked()</code>.</p>
+
+<h2 id="migrating">Chuyển nhập Dữ liệu Có sẵn</h2>
+
+<p>Nếu người dùng cập nhật thiết bị của họ để sử dụng chế độ Khởi động Trực tiếp thì bạn có thể có dữ liệu
+hiện hữu cần được chuyển nhập sang bộ nhớ lưu trữ mã hóa của thiết bị. Sử dụng
+<code>Context.migrateSharedPreferencesFrom()</code> và
+<code>Context.migrateDatabaseFrom()</code> để chuyển nhập dữ liệu về tùy chọn và cơ sở dữ liệu
+giữa bộ nhớ lưu trữ mã hóa thông tin xác thực và bộ nhớ lưu trữ mã hóa thiết bị.</p>
+
+<p>Hãy phán đoán hợp lý nhất khi quyết định dữ liệu nào nên chuyển nhập từ bộ nhớ lưu trữ mã hóa
+thông tin xác thực sang bộ nhớ lưu trữ mã hóa thiết bị. Bạn không nên di chuyển
+thông tin cá nhân của người dùng như mật khẩu hoặc các mã thông báo cấp quyền sang
+bộ nhớ lưu trữ mã hóa thiết bị. Trong một số trường hợp, bạn có thể cần quản lý
+các bộ dữ liệu riêng biệt trong hai bộ lưu trữ mã hóa.</p>
+
+<h2 id="testing">Kiểm thử Ứng dụng Nhận biết Mã hóa của bạn</h2>
+
+<p>Kiểm thử ứng dụng nhận biết mã hóa bằng cách sử dụng chế độ Khởi động Trực tiếp mới. Có
+hai cách để kích hoạt Khởi động Trực tiếp.</p>
+
+<p class="caution"><strong>Cẩn trọng:</strong> Kích hoạt Khởi động Trực tiếp
+sẽ xóa sạch mọi dữ liệu người dùng trên thiết bị.</p>
+
+<p>Trên các thiết bị được hỗ trợ có Android N được cài đặt, kích hoạt
+Khởi động Trực tiếp bằng cách thực hiện một trong các thao tác sau:</p>
+
+<ul>
+<li>Trên thiết bị, bật <b>Developer options</b> nếu chưa hãy bật bằng cách
+vào <b>Settings &gt; About phone</b> và nhấn vào <b>Build number</b>
+bảy lần. Khi màn hình tùy chọn cho nhà phát triển khả dụng, hãy vào
+<b>Settings &gt; Developer options</b> và chọn
+<b>Convert to file encryption</b>.</li>
+<li>Sử dụng các lệnh shell adb sau để kích hoạt chế độ Khởi động Trực tiếp:
+<pre class="no-pretty-print">
+$ adb reboot-bootloader
+$ fastboot --wipe-and-use-fbe
+</pre>
+</li>
+</ul>
+
+<p>Cũng có một chế độ Khởi động Trực tiếp giả lập trong trường hợp bạn cần chuyển đổi
+các chế độ trên thiết bị thử nghiệm. Chỉ nên sử dụng chế độ Giả lập trong quá trình
+phát triển và có thể làm mất dữ liệu. Để kích hoạt chế độ Khởi động Trực tiếp giả lập,
+hãy đặt mẫu hình khóa cho thiết bị, chọn "No thanks" nếu được yêu cầu
+ bật màn hình khởi động bảo mật khi đặt một mẫu hình khóa và sau đó sử dụng
+lệnh shell adb sau:</p>
+
+<pre class="no-pretty-print">
+$ adb shell sm set-emulate-fbe true
+</pre>
+
+<p>Hãy sử dụng lệnh sau để tắt chế độ Khởi động Trực tiếp giả lập:</p>
+
+<pre class="no-pretty-print">
+$ adb shell sm set-emulate-fbe false
+</pre>
+
+<p>Sử dụng các lệnh này có thể khiến cho thiết bị khởi động lại.</p>
diff --git a/docs/html-intl/intl/vi/preview/features/icu4j-framework.jd b/docs/html-intl/intl/vi/preview/features/icu4j-framework.jd
new file mode 100644
index 0000000..96316e9
--- /dev/null
+++ b/docs/html-intl/intl/vi/preview/features/icu4j-framework.jd
@@ -0,0 +1,158 @@
+page.title=API Khuôn khổ Android ICU4J
+
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+<h2>Trong tài liệu này:</h2>
+<ol>
+    <li><a href="#relation">Liên quan đến ICU4J</a></li>
+    <li><a href="#migration">Chuyển nhập từ ICU4J sang API android.icu</a></li>
+    <li><a href="#licence">Cấp phép</a></li>
+</ol>
+
+<h2>Xem thêm</h2>
+<ol>
+  <li>
+    <a class="external-link" href="http://userguide.icu-project.org">Tài liệu cho ICU4J</a>
+  </li>
+
+  <li>
+    <a class="external-link" href="http://site.icu-project.org/#TOC-What-is-ICU-">Các tiêu chuẩn mới nhất được ICU4J
+   hỗ trợ</a>
+  </li>
+</ol>
+</div>
+</div>
+
+<p>
+  ICU4J là bộ thư viện Java mã nguồn mở được sử dụng rộng rãi để cung cấp hỗ trợ Unicode
+  và toàn cầu hóa cho các ứng dụng phần mềm. Android N
+  cung cấp một tập nhỏ các API ICU4J trong khuôn khổ Android cho các nhà phát triển ứng dụng
+   sử dụng trong gói {@code android.icu}. Các API này sử dụng
+   dữ liệu bản địa hóa có trong thiết bị. Do đó, bạn có thể giảm kích thước tệp APK
+   bằng cách không biên dịch các thư viện ICU4J vào tệp APK; thay vào đó bạn có thể
+  gọi chúng trong khuôn khổ một cách đơn giản. (Trong trường hợp này, bạn có thể muốn cung cấp
+   <a href="{@docRoot}google/play/publishing/multiple-apks.html">nhiều phiên bản
+   tệp APK</a> để những người dùng chạy phiên bản Android thấp hơn Android N
+  có thể tải phiên bản ứng dụng có chứa các thư viện ICU4J.)
+</p>
+
+<p>
+  Tài liệu này sẽ bắt đầu bằng việc cung cấp thông tin cơ bản về các mức Android API
+  tối thiểu cần để hỗ trợ các thư viện này. Sau đó tài liệu sẽ giải thích những gì
+   bạn cần để hiểu được công việc triển khai ICU4J liên quan cụ thể đến Android. Cuối cùng,
+    tài liệu sẽ cho bạn biết cách sử dụng các API ICU4J trong khuôn khổ Android.
+</p>
+
+<h2 id="relation">Liên quan đến ICU4J</h2>
+
+<p>
+  Android N cung cấp một tập nhỏ các API ICU4J thông qua
+  gói <code>android.icu</code> thay vì gói <code>com.ibm.icu</code>. 
+Khuôn khổ Android có thể chọn không
+   cung cấp các API ICU4J vì nhiều lý do; ví dụ, Android N không cung cấp
+   một số API bị loại bỏ hoặc những API chưa được đội ngũ ICU công bố là
+   bản ổn định. Vì nhóm ICU sẽ loại bỏ các API này trong tương lai do đó Android cũng sẽ đánh dấu
+   chúng là bị loại bỏ nhưng vẫn tiếp tục thêm vào.
+</p>
+
+<p class="table-caption"><strong>Bảng 1.</strong> Các phiên bản ICU và CLDR được sử dụng
+  trong Android N.</p>
+<table>
+<tr>
+<th>Mức Android API</th>
+<th>Phiên bản ICU</th>
+<th>Phiên bản CLDR</th>
+</tr>
+<tr>
+<td>Android N</td>
+<td>56</td>
+<td>28</td>
+</tr>
+</table>
+
+<p>Sau đây là một vài lưu ý quan trọng:</p>
+
+<ul>
+<li>Các API khuôn khổ Android ICU4J không có tất cả các API của ICU4J.</li>
+<li>Các nhà phát triển NDK cần biết rằng ICU4C Android không được hỗ trợ.</li>
+<li>Các API trong khuôn khổ Android không thay thế hỗ trợ của Android cho 
+<a href="{@docRoot}guide/topics/resources/localization.html">việc bản địa hóa bằng
+các tài nguyên</a>.</li>
+</ul>
+
+<h2 id="migration">Chuyển nhập sang gói android.icu từ com.ibm.icu</h2>
+
+<p>
+  Nếu bạn đã sử dụng các API ICU4J trong ứng dụng và 
+   các API <code>android.icu</code> đáp ứng yêu cầu của bạn thì việc chuyển nhập sang
+  các API của khuôn khổ đòi hỏi bạn phải thay đổi thành phần nhập vào của Java
+  từ <code>com.ibm.icu</code> sang <code>android.icu</code>. Khi đó bạn có thể
+  xóa các tệp ICU4J của bạn khỏi tệp APK.
+</p>
+
+<p class="note">
+  <b>Lưu ý</b>: Các API khuôn khổ ICU4J sử dụng không gian tên {@code android.icu}
+  thay vì {@code com.ibm.icu}. Điều này là để tránh xung đột
+  không gian tên trong các tệp APK có chứa các thư viện {@code com.ibm.icu} của riêng chúng.
+</p>
+
+<h3 id="migrate-from-android">
+  Chuyển nhập sang các API android.icu từ các API Android SDK khác
+</h3>
+
+<p>
+  Một số lớp trong gói <code>java</code> và<code>android</code> có
+  các lớp tương ứng với các lớp trong ICU4J. Tuy nhiên, ICU4J thường cung cấp hỗ trợ
+   rộng hơn cho các tiêu chuẩn và ngôn ngữ.
+</p>
+<p>Sau đây là một số ví dụ để giúp bạn bắt đầu:</p>
+<table>
+<tr>
+<th>Lớp</th>
+<th>Thay thế</th>
+</tr>
+<tr>
+<td><code>java.lang.Character</code> </td>
+<td><code>android.icu.lang.UCharacter</code> </td>
+</tr>
+<tr>
+<td><code>java.text.BreakIterator</code> </td>
+<td><code>android.icu.text.BreakIterator</code> </td>
+</tr>
+<tr>
+<td><code>java.text.DecimalFormat</code> </td>
+<td><code>android.icu.text.DecimalFormat</code> </td>
+</tr>
+<tr>
+<td><code>java.util.Calendar</code></td>
+<td>
+<code>android.icu.util.Calendar</code></td>
+</tr>
+<tr>
+<td><code>android.text.BidiFormatter</code>
+ </td>
+<td><code>android.icu.text.Bidi</code>
+ </td>
+</tr>
+<tr>
+<td><code>android.text.format.DateFormat</code>
+ </td>
+<td><code>android.icu.text.DateFormat</code>
+ </td>
+</tr>
+<tr>
+<td><code>android.text.format.DateUtils</code> </td>
+<td><code>android.icu.text.DateFormat</code>
+<code>android.icu.text.RelativeDateTimeFormatter</code>
+</td>
+</tr>
+</table>
+
+<h2 id="licence">Cấp phép</h2>
+
+<p>
+  ICU4J được phát hành theo giấy phép ICU. Hãy xem <a class="external-link" href="http://userguide.icu-project.org/icufaq#TOC-How-is-the-ICU-licensed-">Hướng dẫn sử dụng
+  ICU</a> để biết thêm chi tiết.
+</p>
diff --git a/docs/html-intl/intl/vi/preview/features/multi-window.jd b/docs/html-intl/intl/vi/preview/features/multi-window.jd
new file mode 100644
index 0000000..485bc28
--- /dev/null
+++ b/docs/html-intl/intl/vi/preview/features/multi-window.jd
@@ -0,0 +1,582 @@
+page.title=Hỗ trợ đa cửa sổ
+page.metaDescription=Hỗ trợ mới trong Android N để hiển thị nhiều hơn một ứng dụng cùng lúc.
+page.keywords="multi-window", "android N", "split screen", "free-form"
+
+@jd:body
+
+<div id="qv-wrapper">
+  <div id="qv">
+    <h2>Trong tài liệu này</h2>
+      <ol>
+        <li><a href="#overview">Tổng quan</a></li>
+        <li><a href="#lifecycle">Vòng đời đa cửa sổ</a></li>
+        <li><a href="#configuring">Cấu hình Ứng dụng của bạn cho Chế độ
+              Đa cửa sổ</a></li>
+        <li><a href="#running">Chạy Ứng dụng của bạn trong Chế độ Đa cửa sổ</a></li>
+        <li><a href="#testing">Kiểm thử Hỗ trợ Đa cửa sổ của Ứng dụng của bạn</a></li>
+      </ol>
+    <h2>Xem thêm</h2>
+      <ol>
+        <li><a class="external-link" href="https://github.com/googlesamples/android-MultiWindowPlayground">Ứng dụng mẫu Multi-Windows
+          Playground</a></li>
+      </ol>
+  </div>
+</div>
+
+<p>
+  Android N thêm hỗ trợ cho hiển thị đồng thời nhiều hơn một ứng dụng
+  vào cùng một thời điểm. Trên thiết bị cầm tay, hai ứng dụng có thể chạy song song hoặc
+  trên dưới nhau trong chế độ <em>chia màn hình</em>. Trên thiết bị TV, ứng dụng có thể
+  sử dụng chế độ <em>ảnh trong ảnh</em> để tiếp tục phát lại video trong khi người dùng
+  đang tương tác với ứng dụng khác.
+</p>
+
+<p>
+  Nếu bạn dựng ứng dụng của bạn bằng N Preview SDK, bạn có thể cấu hình cách ứng dụng của bạn
+  xử lý hiển thị đa cửa sổ. Ví dụ, bạn có thể quy định 
+  các kích thước tối thiểu cho phép của hoạt động của bạn. Bạn cũng có thể vô hiệu hóa hiển thị đa cửa sổ cho
+  ứng dụng của bạn, đảm bảo rằng hệ thống chỉ hiển thị ứng dụng của bạn trong chế độ
+   toàn màn hình.
+</p>
+
+<h2 id="overview">Tổng quan</h2>
+
+<p>
+  Android N cho phép một vài ứng dụng chia sẻ màn hình ngay lập tức. Ví
+  dụ, người dùng có thể chia đôi màn hình ra, xem một trang web ở bên trái màn hình
+  trong khi đang tạo email ở bên phải màn hình. Trải nghiệm này của người dùng phụ thuộc vào
+  thiết bị:
+</p>
+
+<ul>
+  <li>Thiết bị cầm tay đang chạy Android N có chế độ
+  chia màn hình. Trong chế độ này, hệ thống sẽ lấp đầy màn hình bằng hai ứng dụng
+  song song nhau hoặc trên dưới. Người dùng có thể kéo đường chia
+  phân tách hai ứng dụng để hiển thị một ứng dụng rộng hơn và ứng dụng còn lại nhỏ đi.
+  </li>
+
+  <li>Trên Trình phát Nexus đang chạy Android N, các ứng dụng có thể tự đặt chúng
+  vào trong <a href="picture-in-picture.html">chế độ ảnh trong ảnh</a>, cho phép
+  các ứng dụng này tiếp tục hiển thị nội dung khi người dùng duyệt web hoặc tương tác với
+  ứng dụng khác.
+  </li>
+
+  <li>Các nhà sản xuất thiết bị có kích cỡ lớn hơn có thể chọn kích hoạt chế độ
+  hình dạng tự do, trong đó người dùng có thể tự do thay đổi kích thước mỗi hoạt động. Nếu
+  nhà sản xuất đã kích hoạt tính năng này, ngoài
+  chế độ chia màn hình, thiết bị sẽ còn có chế độ hình dạng tự do.
+  </li>
+</ul>
+
+<img src="{@docRoot}preview/images/mw-splitscreen.png" alt="" width="650" srcset="{@docRoot}preview/images/mw-splitscreen.png 1x,
+    {@docRoot}preview/images/mw-splitscreen_2x.png 2x," id="img-split-screen" />
+<p class="img-caption">
+  <strong>Hình 1.</strong> Hai ứng dụng chạy trong chế độ chia màn hình.
+</p>
+
+<p>
+  Người dùng có thể chuyển vào trong chế độ đa cửa sổ bằng các cách sau:
+</p>
+
+<ul>
+  <li>Nếu người dùng mở màn hình <a href="{@docRoot}guide/components/recents.html">Overview
+  </a> và thực hiện nhấn giữ
+  tiêu đề của hoạt động, họ có thể kéo hoạt động đó đến phần được tô sáng của
+  màn hình để đặt hoạt động đó vào trong chế độ đa cửa sổ.
+  </li>
+
+  <li>Nếu người dùng thực hiện nhấn giữ nút Overview, thiết bị sẽ đặt
+  hoạt động hiện tại vào trong chế độ đa cửa sổ, và mở màn hình Overview để
+  cho phép người dùng chọn một hoạt động khác để chia sẻ màn hình.
+  </li>
+</ul>
+
+<p>
+  Người dùng có thể <a href="{@docRoot}guide/topics/ui/drag-drop.html">kéo và
+  thả</a> từ một hoạt động sang một hoạt động khác trong khi các hoạt động này vẫn đang chia sẻ
+  cùng một màn hình. (Trước đó, người dùng chỉ có thể kéo và thả dữ liệu trong một hoạt động
+  đơn lẻ.)
+</p>
+
+<h2 id="lifecycle">Vòng đời đa cửa sổ</h2>
+
+<p>
+  Chế độ đa cửa sổ không thay đổi <a href="{@docRoot}training/basics/activity-lifecycle/index.html">vòng đời
+  của hoạt động</a>.
+</p>
+
+<p>
+  Trong chế độ đa cửa sổ, chỉ hoạt động mà người dùng đã tương tác gần đây nhất
+  mới hoạt động trong khoảng thời gian xác định. Hoạt động này được cân nhắc <em>ở trên cùng</em>.
+  Tất cả các hoạt động khác sẽ ở trong tình trạng tạm dừng, ngay cả khi chúng vẫn hiển thị.
+  Tuy nhiên, hệ thống sẽ cấp mức ưu tiên cao hơn cho hoạt động bị tạm dừng nhưng vẫn hiển thị này
+  so với các hoạt động không hiển thị. Nếu người dùng tương tác với một trong những
+  hoạt động bị tạm dừng, hoạt động đó sẽ được tiếp tục, và hoạt động trên cùng trước đó
+  sẽ bị tạm dừng.
+</p>
+
+<p class="note">
+  <strong>Lưu ý:</strong> Trong chế độ đa cửa sổ, một ứng dụng có thể trong trạng thái
+  tạm dừng và vẫn hiển thị với người dùng. Ứng dụng có thể cần tiếp tục 
+  các hoạt động của nó thậm chí trong khi đamg bị tạm dừng. Ví dụ, một ứng dụng phát video đang ở trong
+  chế độ tạm dừng nhưng vẫn hiển thị thì sẽ tiếp tục hiển thị video của nó. Vì lý do
+  này, chúng tôi đề nghị các hoạt động phát video <em>không</em> tạm dừng
+  video trong trình xử lý{@link android.app.Activity#onPause onPause()}.
+  Thay vào đó, các ứng dụng nên tạm dừng video trong {@link android.app.Activity#onStop
+  onStop()}, và tiếp tục phát lại trong {@link android.app.Activity#onStart
+  onStart()}.
+</p>
+
+<p>
+  Khi người dùng đặt một ứng dụng vào trong chế độ đa cửa sổ, hệ thống sẽ thông báo về
+  hoạt động thay đổi cấu hình đó, như được quy định trong <a href="{@docRoot}guide/topics/resources/runtime-changes.html">Xử lý Thay đổi 
+  Thời gian chạy</a>. Về cơ bản, thay đổi này có ngụ ý về vòng đời hoạt động tương tự
+  vì khi hệ thống thông báo cho ứng dụng rằng thiết bị đã chuyển
+  từ chế độ hướng dọc sang chế độ ngang, ngoại trừ trường hợp các kích thước của thiết bị
+  đã được thay đổi thay vì chỉ bị hoán đổi. Như đã thảo luận trong phần <a href="{@docRoot}guide/topics/resources/runtime-changes.html">Xử lý Thay đổi
+  Thời gian chạy</a>, hoạt động của bạn có thể tự xử lý thay đổi cấu hình này, hoặc nó
+  có thể cho phép hệ thống hủy hoạt động này và tạo lại nó với 
+  các kích thước mới.
+</p>
+
+<p>
+  Nếu người dùng thay đổi kích thước của một cửa sổ và làm nó rộng hơn ở bất kỳ kích thước nào,
+  hệ thống sẽ thay đổi kích thước của hoạt động để khớp với hành động của người dùng và phát hành <a href="{@docRoot}guide/topics/resources/runtime-changes.html">các thay đổi thời gian chạy</a>
+  nếu cần. Nếu ứng dụng bị trễ lại trong khi vẽ các vùng mới được hiển thị,
+  hệ thống sẽ tạm thời lấp đầy các vùng đó bằng một màu được quy định bởi thuộc tính {@link
+  android.R.attr#windowBackground windowBackground} hoặc bằng thuộc tính kiểu
+  <code>windowBackgroundFallback</code> mặc định.
+</p>
+
+<h2 id="configuring">Cấu hình Ứng dụng của bạn cho Chế độ Đa cửa sổ</h2>
+
+<p>
+  Nếu ứng dụng của bạn nhắm đến Android N, bạn có thể cấu hình cách thức và
+  liệu các hoạt động của ứng dụng có hỗ trợ hiển thị đa cửa sổ không. Bạn có thể đặt
+  các thuộc tính trong bản kê khai của bạn để kiểm soát cả kích cỡ và bố trí.
+  Cài đặt thuộc tính của hoạt động gốc sẽ áp dụng cho tất cả các hoạt động
+  nằm trong ngăn xếp hoạt động của nó.
+</p>
+
+<p class="note">
+  <strong>Lưu ý:</strong> Nếu bạn dựng một ứng dụng đa hướng bằng phiên bản
+   SDK thấp hơn Android N, và người dùng sử dụng ứng dụng đó trong
+  chế độ đa cửa sổ, hệ thống sẽ bắt buộc thay đổi kích thước của ứng dụng đó. Hệ thống sẽ hiển thị một
+  hộp hội thoại cảnh báo người dùng rằng ứng dụng này có thể có hành vi không như kỳ vọng. Hệ thống
+  <em>không</em> thay đổi kích cỡ của ứng dụng có hướng cố định; nếu
+  người dùng cố mở một ứng dụng có hướng cố định dưới chế độ đa cửa sổ,
+  ứng dụng này sẽ chiếm toàn bộ màn hình.
+</p>
+
+<h4 id="resizeableActivity">android:resizeableActivity</h4>
+<p>
+  Đặt thuộc tính này trong <code>&lt;activity&gt;</code> của bản kê khai của bạn hoặc node
+  <code>&lt;application&gt;</code> để kích hoạt hoặc vô hiệu hóa hiển thị
+  đa cửa sổ:
+</p>
+
+<pre>
+android:resizeableActivity=["true" | "false"]
+</pre>
+
+<p>
+  Nếu thuộc tính này được đặt thành true, hoạt động có thể được khởi chạy trong
+ chế độ chia màn hình và hình dạng tự do. Nếu thuộc tính này được đặt thành false,
+  hoạt động sẽ không hỗ trợ chế độ đa cửa sổ. Nếu giá trị này là false, và
+  người dùng cố khởi chạy hoạt động trong chế độ đa cửa sổ, hoạt động đó sẽ
+  chiếm toàn màn hình.
+</p>
+
+<p>
+  Nếu ứng dụng của bạn nhắm đến Android N, nhưng bạn chưa quy định giá trị
+  cho thuộc tính này, giá trị của thuộc tính sẽ mặc định đặt là true.
+</p>
+
+<h4 id="supportsPictureInPicture">android:supportsPictureInPicture</h4>
+
+<p>
+  Đặt thuộc tính này trong node <code>&lt;activity&gt;</code> của bản kê khai của bạn để
+  cho biết liệu hoạt động này có hỗ trợ hiển thị ảnh trong ảnh hay không. Thuộc tính
+  này được bỏ qua nếu <code>android:resizeableActivity</code> là false.
+</p>
+
+<pre>
+android:supportsPictureInPicture=["true" | "false"]
+</pre>
+
+<h3 id="layout">Thuộc tính bố trí</h3>
+
+<p>
+  Với Android N, phần tử bản kê khai <code>&lt;layout&gt;</code> 
+  có hỗ trợ một số thuộc tính sẽ ảnh hưởng đến cách hoạt động có hành vi như thế nào trong
+  chế độ đa cửa sổ:
+</p>
+
+<dl>
+  <dt>
+    <code>android:defaultWidth</code>
+  </dt>
+
+  <dd>
+    Chiều rộng mặc định của hoạt động khi được khởi chạy trong chế độ hình dạng tự do.
+  </dd>
+
+  <dt>
+    <code>android:defaultHeight</code>
+  </dt>
+
+  <dd>
+    Chiều cao mặc định của hoạt động khi được khởi chạy trong chế độ hình dạng tự do.
+  </dd>
+
+  <dt>
+    <code>android:gravity</code>
+  </dt>
+
+  <dd>
+    Vị trí ban đầu của hoạt động khi được khởi chạy trong chế độ hình dạng tự do. Xem tham chiếu
+    {@link android.view.Gravity} về các giá trị phù hợp.
+  </dd>
+
+  <dt>
+    <code>android:minimalSize</code>
+  </dt>
+
+  <dd>
+    Chiều cao và chiều rộng tối thiểu cho hoạt động trong cả chế độ chia màn hình
+    và chế độ hình dạng tự do. Nếu người dùng di chuyển thanh phân chia trong chế độ chia màn hình 
+    để làm cho hoạt động nhỏ hơn mức tối thiểu quy định, hệ thống sẽ cắt xén
+    hoạt động đó thành kích cỡ mà người dùng yêu cầu.
+  </dd>
+</dl>
+
+<p>
+  Ví dụ, đoạn mã sau đây sẽ cho biết cách quy định kích thước và vị trí mặc định
+   của một hoạt động và kích thước tối thiểu của nó, khi hoạt động được hiển thị trong
+  chế độ hình dạng tự do:
+</p>
+
+<pre>
+&lt;activity android:name=".MyActivity"&gt;
+    &lt;layout android:defaultHeight="500dp"
+          android:defaultWidth="600dp"
+          android:gravity="top|end"
+          android:minimalSize="450dp" /&gt;
+&lt;/activity&gt;
+</pre>
+
+<h2 id="running">Chạy Ứng dụng của bạn trong Chế độ Đa cửa sổ</h2>
+
+<p>
+  Android N có tính năng mới để hỗ trợ các ứng dụng có thể chạy
+  trong chế độ đa cửa sổ.
+</p>
+
+<h3 id="disabled-features">Các tính năng bị vô hiệu hóa trong Chế độ Đa cửa sổ</h3>
+
+<p>
+  Một số tính năng bị vô hiệu hóa hoặc bỏ qua khi một thiết bị đang ở chế độ
+  đa cửa sổ bởi các tính năng này không có ý nghĩa đối với một hoạt động có thể đang chia sẻ
+  màn hình thiết bị với các hoạt động hoặc ứng dụng khác. Các tính năng đó bao gồm:
+
+<ul>
+  <li>Ví dụ, một vài tùy chọn tùy chỉnh <a href="{@docRoot}training/system-ui/index.html">System UI</a>
+  sẽ bị vô hiệu hóa, ứng dụng không thể ẩn thanh trạng thái
+  nếu chúng đang chạy trong chế độ toàn màn hình.
+  </li>
+
+  <li>Hệ thống sẽ bỏ qua các thay đổi đối với thuộc tính <code><a href=
+  "{@docRoot}guide/topics/manifest/activity-element.html#screen"
+  >android:screenOrientation</a></code>.
+  </li>
+</ul>
+
+<h3 id="change-notification">Thông báo và truy vấn thay đổi đa cửa sổ</h3>
+
+<p>
+  Các phương thức mới sau đây đã được thêm vào lớp {@link android.app.Activity}
+  để hỗ trợ hiển thị đa cửa sổ. Để biết chi tiết về mỗi phương thức, xem 
+  <a href="{@docRoot}preview/setup-sdk.html#docs-dl">Tham chiếu N Preview SDK</a>.
+</p>
+
+<dl>
+  <dt>
+    <code>Activity.inMultiWindow()</code>
+  </dt>
+
+  <dd>
+    Lệnh gọi để tìm hiểu xem hoạt động có đang ở chế độ đa cửa sổ hay không.
+  </dd>
+
+  <dt>
+    <code>Activity.inPictureInPicture()</code>
+  </dt>
+
+  <dd>
+    Lệnh gọi để tìm hiểu xem hoạt động có đang ở chế độ ảnh trong ảnh hay không.
+
+    <p class="note">
+      <strong>Lưu ý:</strong> Chế độ Ảnh trong ảnh là trường hợp đặc biệt
+      của chế độ đa cửa sổ. Nếu <code>myActivity.inPictureInPicture()</code>
+      trả về là true, thì <code>myActivity.inMultiWindow()</code> cũng trả về là
+      true.
+    </p>
+  </dd>
+
+  <dt>
+    <code>Activity.onMultiWindowChanged()</code>
+  </dt>
+
+  <dd>
+    Hệ thống sẽ gọi phương thức này bất cứ khi nào hoạt động đi vào trong hay ra ngoài
+    chế độ đa cửa sổ. Hệ thống sẽ chuyển cho phương thức giá trị true nếu
+    hoạt động đang đi vào chế độ đa cửa sổ, và false nếu hoạt động
+    đang rời chế độ đa cửa sổ.
+  </dd>
+
+  <dt>
+    <code>Activity.onPictureInPictureChanged()</code>
+  </dt>
+
+  <dd>
+    Hệ thống sẽ gọi phương thức này bất cứ khi nào hoạt động đi vào trong hay ra ngoài
+    chế độ ảnh trong ảnh. Hệ thống sẽ chuyển cho phương thức một giá trị true nếu
+    hoạt động đang đi vào chế độ ảnh trong ảnh, và false nếu hoạt động
+    đang rời chế độ ảnh trong ảnh.
+  </dd>
+</dl>
+
+<p>
+  Cũng có các phiên bản {@link android.app.Fragment} của từng phương thức
+  này, ví dụ như <code>Fragment.inMultiWindow()</code>.
+</p>
+
+<h3 id="entering-pip">Vào chế độ ảnh trong ảnh</h3>
+
+<p>
+  Để đặt một hoạt động vào trong chế độ ảnh trong ảnh, hãy gọi phương thức mới
+  <code>Activity.enterPictureInPicture()</code>. Phương thức này sẽ không có ảnh hưởng nếu
+  thiết bị không hỗ trợ chế độ ảnh trong ảnh. Để biết thêm thông tin,
+  hãy xem tài liệu <a href="picture-in-picture.html">Ảnh trong ảnh</a>.
+</p>
+
+<h3 id="launch">Khởi chạy Hoạt động Mới trong Chế độ Đa cửa sổ</h3>
+
+<p>
+  Khi bạn khởi chạy một hoạt động mới, bạn có thể gợi ý cho hệ thống rằng hoạt động
+  mới sẽ được hiển thị liền kề hoạt động hiện tại, nếu có thể. Để thực hiện điều
+  này, hãy dùng cờ
+  <code>Intent.FLAG_ACTIVITY_LAUNCH_TO_ADJACENT</code>. Việc chuyển
+  cờ này yêu cầu hành vi sau:
+</p>
+
+<ul>
+  <li>Nếu thiết bị đang ở chế độ chia màn hình, hệ thống sẽ cố tạo ra
+  hoạt động mới bên cạnh hoạt động đã khởi chạy nó, vì vậy hai hoạt động này
+  sẽ chia sẻ cùng một màn hình. Hệ thống không được đảm bảo có thể làm được điều này, nhưng nó
+ làm cho các hoạt động ở liền kề nhau nếu có thể.
+  </li>
+
+  <li>Nếu thiết bị không ở chế độ chia màn hình, cờ này sẽ không có tác dụng.
+  </li>
+</ul>
+
+<p>
+  Nếu thiết bị đang ở chế độ hình dạng tự do và bạn đang khởi chạy một hoạt động mới, bạn có thể
+  quy định kích thước của hoạt động mới và vị trí màn hình bằng cách gọi
+  <code>ActivityOptions.setLaunchBounds()</code>. Phương thức này sẽ không có ảnh hưởng nếu
+  thiết bị không ở chế độ đa cửa sổ.
+</p>
+
+<p class="note">
+  <strong>Lưu ý:</strong> Nếu bạn khởi chạy một hoạt động trong một ngăn xếp tác vụ, hoạt động
+  này sẽ thay thế hoạt động trên màn hình, kế thừa tất cả các thuộc tính đa cửa sổ
+  của nó. Nếu bạn muốn khởi chạy hoạt động mới dưới dạng một cửa sổ
+  riêng trong chế độ đa cửa sổ, bạn phải khởi chạy nó trong một ngăn xếp tác vụ mới.
+</p>
+
+<h3 id="dnd">Hỗ trợ kéo và thả</h3>
+
+<p>
+  Người dùng có thể <a href="{@docRoot}guide/topics/ui/drag-drop.html">kéo và
+  thả</a> dữ liệu từ một hoạt động này sang một hoạt động khác trong khi các hoạt động này vẫn đang
+  chia sẻ cùng một màn hình. (Trước đó, người dùng chỉ có thể kéo và thả dữ liệu trong một
+  hoạt động đơn lẻ.) Vì lý do này, bạn có thể muốn thêm tính năng kéo và thả
+  vào ứng dụng của bạn nếu ứng dụng của bạn hiện không hỗ trợ tính năng này.
+</p>
+
+<p>
+  N Preview SDK mở rộng gói <a href="{@docRoot}reference/android/view/package-summary.html"><code>android.view</code></a>
+  để hỗ trợ kéo và thả giữa các ứng dụng. Để biết chi tiết về các lớp và phương thức
+  sau, hãy xem <a href="{@docRoot}preview/setup-sdk.html#docs-dl">Tham chiếu N
+  Preview SDK</a>.
+</p>
+
+<dl>
+  <dt>
+    <code>android.view.DropPermissions</code>
+  </dt>
+
+  <dd>
+    Đối tượng mã thông báo chịu trách nhiệm về việc quy định các quyền cấp cho ứng dụng
+    nhận được thao tác thả.
+  </dd>
+
+  <dt>
+    <code>View.startDragAndDrop()</code>
+  </dt>
+
+  <dd>
+    Bí danh mới cho {@link android.view.View#startDrag View.startDrag()}. Để
+    kích hoạt kéo và thả giữa các hoạt động, hãy chuyển cờ mới
+    <code>View.DRAG_FLAG_GLOBAL</code>. Nếu bạn cần cấp quyền URI cho
+    hoạt động của đối tượng nhận, hãy chuyển các cờ mới
+    <code>View.DRAG_FLAG_GLOBAL_URI_READ</code> hoặc
+    <code>View.DRAG_FLAG_GLOBAL_URI_WRITE</code>, nếu phù hợp.
+  </dd>
+
+  <dt>
+    <code>View.cancelDragAndDrop()</code>
+  </dt>
+
+  <dd>
+    Hủy thao tác kéo hiện đang diễn ra. Chỉ có thể được gọi bằng
+    ứng dụng đã khởi nguồn thao tác kéo đó.
+  </dd>
+
+  <dt>
+    <code>View.updateDragShadow()</code>
+  </dt>
+
+  <dd>
+    Thay thế bóng kéo cho thao tác kéo hiện đang diễn ra. Chỉ có thể
+    được gọi bằng ứng dụng đã khởi nguồn thao tác kéo đó.
+  </dd>
+
+  <dt>
+    <code>Activity.requestDropPermissions()</code>
+  </dt>
+
+  <dd>
+    Yêu cầu các quyền cho URI nội dung đã chuyển với {@link
+    android.content.ClipData} có chứa trong {@link android.view.DragEvent}.
+  </dd>
+</dl>
+
+<h2 id="testing">Kiểm thử Hỗ trợ Đa cửa sổ của Ứng dụng của bạn</h2>
+
+<p>
+  Dù cho bạn có cập nhật ứng dụng của mình lên Android N hay không, bạn cũng nên
+  xác minh cách thiết bị có hành vi như thế nào trong chế độ đa cửa sổ trong trường hợp người dùng cố khởi chạy nó
+  ở chế độ đa cửa sổ trên thiết bị chạy Android N.
+</p>
+
+<h3 id="configuring">Cấu hình Thiết bị Kiểm thử</h3>
+
+<p>
+  Nếu bạn cài đặt Android N trên thiết bị, chế độ chia màn hình
+  sẽ được tự động hỗ trợ.
+</p>
+
+<h3 id="test-non-n">Nếu ứng dụng của bạn không được dựng bằng N Preview SDK</h3>
+
+<p>
+  Nếu bạn dựng ứng dụng của mình bằng N Preview SDK, và người dùng cố sử dụng ứng dụng này
+  trong chế độ đa cửa sổ, hệ thống sẽ bắt buộc thay đổi kích thước của ứng dụng đó trừ khi ứng dụng này
+  khai báo hướng cố định.
+</p>
+
+<p>
+  Nếu ứng dụng không khai báo hướng cố định, bạn nên khởi chạy ứng dụng của bạn
+  trên thiết bị đang chạy Android N và cố đặt ứng dụng vào trong
+  chế độ chia màn hình. Xác minh rằng trải nghiệm người dùng là
+  chấp nhận được khi ứng dụng bị bắt buộc thay đổi kích cỡ.
+</p>
+
+<p>
+  Nếu ứng dụng khai báo hướng cố định, bạn nên cố đặt ứng dụng vào trong
+  chế độ đa cửa sổ. Xác minh xem khi bạn làm như vậy, ứng dụng vẫn giữ
+  ở chế độ toàn màn hình.
+</p>
+
+<h3 id="test-mw">Nếu bạn hỗ trợ chế độ đa cửa sổ</h3>
+
+<p>
+  Nếu bạn dựng ứng dụng của bạn bằng N Preview SDK và chưa vô hiệu hóa
+  hỗ trợ đa cửa sổ, hãy xác minh hành vi sau dưới chế độ chia màn hình
+  và chế độ hình dạng tự do.
+</p>
+
+<ul>
+  <li>Khởi chạy ứng dụng trong chế độ toàn màn hình, rồi chuyển sang chế độ đa cửa sổ bằng cách
+  nhấn giữ nút Overview. Xác minh rằng ứng dụng đã chuyển đổi đúng cách.
+  </li>
+
+  <li>Khởi chạy ứng dụng trực tiếp trong chế độ đa cửa sổ, và xác thực rằng ứng dụng này
+  khởi chạy đúng cách. Bạn có thể khởi chạy ứng dụng trong chế độ đa cửa sổ bằng cách nhấn vào nút
+  Overview, rồi nhấn giữ vào thanh tiều đề của ứng dụng của bạn và kéo nó
+  đến một trong những vùng được tô sáng trên màn hình.
+  </li>
+
+  <li>Thay đổi kích thước ứng dụng của bạn trong chế độ chia màn hình bằng cách kéo đường phân chia.
+  Xác minh rằng ứng dụng thay đổi kích thước mà không bị lỗi, và các phần tử UI cần thiết
+  vẫn hiển thị.
+  </li>
+
+  <li>Nếu bạn đã quy định các kích cỡ tối thiểu cho ứng dụng của bạn, hãy cố thay đổi kích thước của ứng dụng
+  sao cho nhỏ hơn các kích thước đã quy định đó. Xác minh rằng bạn không thể thay đổi kích cỡ của ứng dụng để
+  nhỏ hơn kích cỡ tối thiểu đã quy định.
+  </li>
+
+  <li>Thông qua tất cả các bài kiểm thử, hãy xác minh rằng hiệu năng của ứng dụng của bạn là có thể chấp nhận được. Ví
+  dụ, xác minh rằng sẽ không bị trễ quá lâu để cập nhật UI sau khi
+  ứng dụng bị thay đổi kích thước.
+  </li>
+</ul>
+
+<h4 id="test-checklist">Danh sách kiểm thử</h4>
+
+<p>
+  Để xác minh hiệu năng ứng dụng của bạn trong chế độ đa cửa sổ, hãy thử các thao tác
+  sau. Bạn nên thử các thao tác này trong cả chế độ chia màn hình và
+  chế độ đa cửa sổ, trừ khi có lưu ý khác.
+</p>
+
+<ul>
+  <li>Vào và rời chế độ đa cửa sổ.
+  </li>
+
+  <li>Hãy chuyển từ ứng dụng của bạn sang ứng dụng khác, và xác minh rằng ứng dụng có hành vi
+  đúng cách trong khi nó hiển thị nhưng không hoạt động. Ví dụ nếu ứng dụng của bạn đang
+  phát video, hãy xác minh rằng video tiếp tục phát trong khi người dùng đang
+  tương tác với một ứng dụng khác.
+  </li>
+
+  <li>Trong chế độ chia màn hình, hãy thử di chuyển thanh phân chia để làm cho ứng dụng của bạn
+  rộng hơn và nhỏ hơn. Thử các thao tác này trong cả cấu hình song song và
+  trên dưới. Xác minh rằng ứng dụng không bị treo,
+  các chức năng thiết yếu vẫn hiển thị, và thao tác thay đổi kích cỡ không quá
+   lâu.
+  </li>
+
+  <li>Thực hiện một vài thao tác thay đổi kích cỡ nối tiếp nhau thật nhanh. Xác minh rằng ứng dụng
+  của bạn không bị lỗi hoặc bị rò rỉ bộ nhớ. Để biết thông tin về kiểm tra việc sử dụng bộ nhớ của 
+  ứng dụng, xem <a href="{@docRoot}tools/debugging/debugging-memory.html">
+  Kiểm tra Sử dụng RAM của bạn</a>.
+  </li>
+
+  <li>Sử dụng ứng dụng của bạn như thông thường trong một số cấu hình cửa sổ khác nhau, và
+  xác minh rằng ứng dụng có hành vi bình thường. Xác minh rằng có thể đọc được các chữ và
+  các phần tử UI không quá nhỏ để tương tác với chúng.
+  </li>
+</ul>
+
+<h3 id="test-disabled-mw">Nếu bạn đã vô hiệu hóa hỗ trợ đa cửa sổ</h3>
+
+<p>
+  Nếu bạn đã vô hiệu hóa hỗ trợ đa cửa sổ bằng cách đặt
+  <code>android:resizableActivity="false"</code>, bạn nên khởi chạy ứng dụng của mình trên
+  thiết bị chạy Android N và cố đặt ứng dụng này vào trong
+  cả chế độ hình dạng tự do và chế độ chia màn hình. Xác minh xem khi bạn làm như vậy, ứng dụng vẫn giữ
+  ở chế độ toàn màn hình.
+</p>
diff --git a/docs/html-intl/intl/vi/preview/features/multilingual-support.jd b/docs/html-intl/intl/vi/preview/features/multilingual-support.jd
new file mode 100644
index 0000000..21252f8
--- /dev/null
+++ b/docs/html-intl/intl/vi/preview/features/multilingual-support.jd
@@ -0,0 +1,214 @@
+page.title=Ngôn ngữ và Bản địa
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+<h2>Trong tài liệu này:</h2>
+<ol>
+	  <li><a href="#preN">Thử thách phân giải tài nguyên ngôn ngữ</a></li>
+    <li><a href="#postN">Các cải tiến đối với Chiến lược phân giải tài nguyên</a></li>
+    <li><a href="#design">Thiết kế ứng dụng để hỗ trợ các bản địa
+      bổ sung</a></li>
+
+</ol>
+
+</div>
+</div>
+
+<p>Android N cung cấp hỗ trợ cải tiến cho người dùng sử dụng nhiều ngôn ngữ,
+cho phép họ chọn nhiều bản địa trong phần cài đặt. Android N
+cung cấp khả năng này bằng cách mở rộng số lượng lớn các bản địa được hỗ trợ
+và thay đổi cách hệ thống phân giải tài nguyên. Phương thức phân giải tài nguyên
+mới hoạt động mạnh mẽ hơn và được thiết kế để tương thích với các tệp APK có sẵn. Tuy nhiên
+bạn cần kiểm tra thêm để phát hiện mọi hành vi không mong muốn. Ví dụ, bạn
+cần kiểm thử để đảm bảo rằng ứng dụng của mình sẽ thiết lập mặc định cho ngôn ngữ mong muốn. Ngoài ra,
+nếu ứng dụng của bạn hỗ trợ đa ngôn ngữ thì bạn cần đảm bảo rằng việc hỗ trợ này hoạt động như
+dự kiến. Cuối cùng, bạn cần cố gắng đảm bảo rằng ứng dụng sẽ xử lý tinh tế
+những ngôn ngữ mà bạn không có ý định thiết kế ứng dụng để hỗ trợ.</p>
+
+<p>Tài liệu này sẽ bắt đầu bằng việc giải thích về chiến lược phân giải tài nguyên trong phiên bản trước
+Android N. Tiếp theo, tài liệu sẽ mô tả chiến lược phân giải tài nguyên
+được cải tiến của Android N. Cuối cùng, tài liệu sẽ giải thích cách sử dụng
+số lượng các bản địa được mở rộng để hỗ trợ thêm nhiều người dùng đa ngữ.</p>
+
+<h2 id="preN">Thử thách phân giải tài nguyên ngôn ngữ</h2>
+
+<p>Trước Android N, không phải lúc nào Android cũng có thể so khớp
+thành công ứng dụng với các bản địa của hệ thống. Ví dụ, giả sử ngôn ngữ mặc định của ứng dụng của bạn
+  là Tiếng Anh (Mỹ) nhưng ứng dụng cũng có các xâu văn bản Tiếng Tây Ban Nha được bản địa hóa trong các tệp tài nguyên {@code es_ES}
+.</p>
+<p>Khi mã nguồn Java tham chiếu đến các xâu đó thì nó sẽ phân giải các ngôn ngữ của xâu như
+sau:</p>
+<ul>
+<li>Nếu một thiết bị được đặt thành {@code es_MX} (Tiếng Tây Ban Nha-Mêxicô) thì Android sẽ tải
+xâu từ các tệp tài nguyên {@code es_ES}.</li>
+<li>Nếu thiết bị được đặt thành {@code en_AU} thì Android sẽ trả về {@code
+en_US}. Hệ thống cũng sẽ đặt mặc định thành {@code en_US} nếu người dùng chọn một
+ngôn ngữ mà ứng dụng không hỗ trợ chút nào, ví dụ như Tiếng Pháp.</li>
+</ul>
+
+
+<p>Các vấn đề phân giải này phát sinh bởi vì hệ thống sẽ gỡ mã quốc gia
+ khỏi bản địa nếu nó không tìm thấy sự trùng khớp tuyệt đối.  Ví dụ:</p>
+<p class="table-caption" id="t-resource-res">
+<strong>Bảng 1.</strong> Phân giải tài nguyên không có trùng khớp bản địa tuyệt đối.
+</p>
+<table>
+<tbody>
+<tr>
+<th>Cài đặt Người dùng</th>
+<th>Tài nguyên Ứng dụng</th>
+<th>Phân giải tài nguyên</th>
+</tr>
+<tr>
+<td>fr_CH</td>
+<td>
+mặc định (en)<br>
+de_DE<br>
+es_ES<br>
+fr_FR<br>
+it_IT<br>
+</td>
+ <td>
+Thử fr_CH =&gt; Không được<br>
+Thử fr =&gt; Không được<br>
+Sử dụng mặc định (en)
+</td>
+ </tr>
+ </tbody>
+</table>
+
+
+<p>Trong ví dụ này, hệ thống hiển thị các xâu Tiếng Anh mà không
+xác định được liệu người dùng có biết Tiếng Anh hay không. Đây là hành vi khá phổ biến
+ngày nay. Android N cần phải giảm bớt đáng kể tần suất
+của những kết quả như vậy.</p>
+
+<h2 id="postN">Các cải tiến đối với Chiến lược phân giải tài nguyên</h2>
+<p>Android N mang đến cách thức phân giải tài nguyên mạnh mẽ hơn, và
+tìm các giải pháp thay thế hiệu quả hơn một cách tự động. Tuy nhiên, để tăng tốc việc phân giải và nâng cao
+khả năng bảo trì, bạn cần lưu trữ các tài nguyên trong những nhánh ngôn ngữ mẹ phổ biến nhất.
+ Ví dụ, nếu trước đây lưu tài nguyên Tiếng Tây Ban Nha trong thư mục {@code es-US}
+ thì hãy chuyển chúng vào trong thư mục {@code es-419}, nơi chứa Tiếng Tây Ban Nha Mỹ La-tinh.
+ Tương tự, nếu bạn có các xâu tài nguyên trong một thư mục có tên {@code en-GB} thì hãy đổi tên
+ thư mục đó thành {@code en-001} (Tiếng Anh quốc tế) bởi vì nhánh mẹ
+phổ biến nhất cho chuỗi <code>en-GB</code> là {@code en-001}.
+ Các ví dụ sau sẽ giải thích tại sao các thực hành này sẽ nâng cao hiệu năng và
+độ ổn định của việc phân giải tài nguyên.</p>
+
+<h3>Các ví dụ về phân giải tài nguyên</h3>
+
+<p>Với Android N, trường hợp được mô tả trong <strong>Bảng 1</strong> được phân giải
+theo cách khác:</p>
+
+<p class="table-caption" id="t-improved-res">
+<strong>Bảng 2.</strong> Một chiến lược phân giải cải tiến khi không có
+trùng khớp bản địa tuyệt đối.</p>
+<table>
+<tr>
+<th>Cài đặt Người dùng</th>
+<th>Tài nguyên Ứng dụng</th>
+<th>Phân giải tài nguyên</th>
+</tr>
+<tr>
+<td><ol>
+<li> fr_CH</li>
+</ol>
+</td>
+<td>
+mặc định (en)<br>
+de_DE<br>
+es_ES<br>
+fr_FR<br>
+it_IT<br>
+</td>
+<td>
+Thử fr_CH =&gt; Không được<br>
+Thử fr =&gt; Không được<br>
+Thử nhánh con của fr =&gt; fr_FR<br>
+Sử dụng fr_FR
+</td>
+</tr>
+
+</table>
+
+
+<p>Bây giờ thì người dùng sẽ nhận được tài nguyên Tiếng Pháp thay vì Tiếng Anh. Ví dụ này cũng cho thấy
+ lý do bạn nên lưu trữ các xâu Tiếng Pháp trong {@code fr} thay vì {@code fr_FR}
+ cho Android N. Phương pháp ở đây là ghép nhánh ngôn ngữ mẹ gần nhất,
+ giúp cho việc phân giải nhanh hơn và dễ dự đoán hơn.</p>
+
+<p>Ngoài lôgic phân giải được cải tiến này, Android giờ đây cung cấp thêm nhiều
+ngôn ngữ cho người dùng lựa chọn. Chúng ta hãy thử lại ví dụ trên với Tiếng Ý
+  được xác định là một ngôn ngữ người dùng bổ sung nhưng không được ứng dụng hỗ trợ cho Tiếng Pháp.  </p>
+
+<p class="table-caption" id="t-2d-choice">
+<strong>Bảng 3.</strong> Phân giải tài nguyên khi ứng dụng chỉ khớp
+với cài đặt bản địa được ưu tiên thứ hai của người dùng.</p>
+<table>
+<tr>
+<th>Cài đặt Người dùng</th>
+<th>Tài nguyên Ứng dụng</th>
+<th>Phân giải tài nguyên</th>
+
+</tr>
+<tr>
+<td><ol>
+<li> fr_CH</li>
+<li> it_CH</li>
+</ol>
+</td>
+<td>
+mặc định (en)<br>
+de_DE<br>
+es_ES<br>
+it_IT<br>
+</td>
+<td>
+Thử fr_CH =&gt; Không được<br>
+Thử fr =&gt; Không được<br>
+Thử nhánh con của fr =&gt; Không được<br>
+Thử it_CH =&gt; Không được<br>
+Thử it =&gt; Không được<br>
+Thử nhánh con của it =&gt; it_IT<br>
+Sử dụng it_IT
+</td>
+
+</tr>
+
+</table>
+<p>Người dùng vẫn nhận được ngôn ngữ họ biết mặc dù ứng dụng không
+hỗ trợ Tiếng Pháp.</p>
+
+
+<h2 id="design">Thiết kế ứng dụng để hỗ trợ các bản địa bổ sung</h2>
+<h3>API LocaleList</h3>
+
+<p>Android N bổ sung thêm một API {@code LocaleList.GetDefault()}
+ mới cho phép các ứng dụng truy vấn trực tiếp danh sách các ngôn ngữ mà người dùng đã chỉ định. API này
+cho phép bạn tạo hành vi ứng dụng
+phức tạp hơn và hiển thị nội dung được tối ưu hóa tốt hơn. Ví dụ, Tìm kiếm
+  có thể hiển thị các kết quả bằng nhiều ngôn ngữ dựa trên cài đặt của người dùng.  Các ứng dụng trình duyệt
+  có thể tránh đề nghị dịch trang web sang một ngôn ngữ mà người dùng đó đã biết,
+ và các ứng dụng bàn phím có thể tự động bật tất cả các bố trí phù hợp. </p>
+
+<h3>Bộ định dạng</h3>
+
+<p>Tính tới Android 6.0 (API mức 23), Android 6.0 chỉ hỗ trợ một hoặc hai bản địa
+cho nhiều ngôn ngữ phổ biến
+(en, es, ar, fr, ru). Bởi vì chỉ có một vài biến thể của từng ngôn ngữ,
+các ứng dụng không gặp vấn đề gì với việc lưu trữ một số chữ số và ngày tháng dưới dạng xâu được chèn trực tiếp khi viết mã
+trong các tệp tài nguyên.  Tuy nhiên, với tập hợp mở rộng các bản địa được hỗ trợ bởi Android,
+có thể có
+nhiều khác biệt lớn về các định dạng ngày tháng, thời gian, tiền tệ và thông tin
+tương tự ngay cả trong một bản địa. Chèn trực tiếp các định dạng có thể khiến
+người dùng cuối bối rối.  Do đó, khi phát triển cho Android N
+hãy đảm bảo sử dụng các bộ định dạng thay vì các xâu chữ số và ngày tháng được chèn trực tiếp khi viết mã.</p>
+
+<p>Một ví dụ điển hình là Tiếng Ả-rập với được Android N hỗ trợ mở rộng từ
+một {@code ar_EG} tới 27 bản địa Tiếng Ả-rập. Các bản địa này có thể chia sẻ hầu hết các tài nguyên,
+nhưng một số bản địa ưu tiên chữ số ASCII trong khi những bản địa khác lại ưu tiên con số truyền thống. Ví dụ,
+khi bạn muốn soạn một câu có biến bằng số, như
+"Choose a 4 digit pin" thì bạn hãy sử dụng bộ định dạng như sau:</p>
+
+<pre> format(locale, "Choose a %d-digit PIN", 4)</pre>
diff --git a/docs/html-intl/intl/vi/preview/features/notification-updates.jd b/docs/html-intl/intl/vi/preview/features/notification-updates.jd
new file mode 100644
index 0000000..d80cf6c
--- /dev/null
+++ b/docs/html-intl/intl/vi/preview/features/notification-updates.jd
@@ -0,0 +1,328 @@
+page.title=Thông báo
+page.tags=notifications
+helpoutsWidget=true
+page.image=/preview/images/notifications-card.png
+
+trainingnavtop=true
+
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+
+<!-- table of contents -->
+<h2>Tài liệu này gồm có</h2>
+<ol>
+  <li><a href="#direct">Trả lời Trực tiếp</a></li>
+  <li><a href="#bundle">Thông báo Gộp</a></li>
+  <li><a href="#custom">Dạng xem Tùy chỉnh</a></li>
+</ol>
+
+</div>
+</div>
+
+<p>Android N giới thiệu một số API mới cho phép ứng dụng đăng
+các thông báo có khả năng hiển thị và tương tác cao.</p>
+
+<p>Android N mở rộng API thông báo {@link android.support.v4.app.RemoteInput}
+hiện có để hỗ trợ trả lời giữa dòng trên thiết bị cầm tay. Tính năng này cho phép người dùng
+ phản hồi nhanh chóng từ khu vực hiển thị thông báo mà không cần truy cập ứng dụng của bạn.</p>
+
+<p>
+  Android N cũng cho phép bạn gộp các thông báo tương tự nhau để
+  xuất hiện dưới dạng một thông báo đơn lẻ. Để điều này có thể xảy ra, Android N sử dụng phương thức {@link
+  android.support.v4.app.NotificationCompat.Builder#setGroup
+  NotificationCompat.Builder.setGroup()} hiện có. Người dùng có thể mở rộng mỗi
+  thông báo, và thực hiện các hành động như trả lời và bỏ qua trên mỗi
+  thông báo, từng thông báo một từ khu vực hiển thị thông báo.
+</p>
+
+<p>Cuối cùng, Android N cũng thêm các API mới cho phép bạn tận dụng các trang trí 
+của hệ thống trong các dạng xem thông báo tùy chỉnh của ứng dụng của bạn. Các API này giúp
+đảm bảo rằng dạng xem thông báo có chung một cách trình bày nhất quán
+với các mẫu tiêu chuẩn.</p>
+
+<p>Tài liệu này nêu bật một số các thay đổi chính mà bạn cần cân nhắc
+ khi sử dụng các tính năng thông báo mới trong ứng dụng của mình.</p>
+
+<h2 id="direct">Trả lời Trực tiếp</h2>
+
+<p>Với tính năng Trả lời Trực tiếp trong Android N, người dùng có thể
+phản hồi lại tin nhắn văn bản hoặc cập nhật danh sách tác vụ trực tiếp trong giao diện
+của thông báo. Trên thiết bị cầm tay, hành động trả lời giữa dòng xuất hiện dưới dạng một nút bổ sung
+ được gắn kèm với thông báo đó. Khi người dùng trả lời qua bàn phím, hệ thống sẽ đính kèm
+  phản hồi bằng văn bản với ý định
+    bạn đã quy định cho hành động thông báo và gửi ý định đến ứng dụng cầm tay
+     của bạn.
+
+
+<img id="fig-reply-button" src="{@docRoot}preview/images/inline-reply.png" srcset="{@docRoot}preview/images/inline-reply.png 1x,
+  {@docRoot}preview/images/inline-reply_2x.png 2x" width="400">
+<p class="img-caption">
+  <strong>Hình 1.</strong> Android N thêm nút hành động <strong>Reply</strong>
+.
+</p>
+
+<h3>Thêm các hành động trả lời giữa dòng</h3>
+
+<p>Để tạo một hành động thông báo hỗ trợ trả lời trực tiếp:
+</p>
+
+<ol>
+<li>Tạo thực thể{@link android.support.v4.app.RemoteInput.Builder} 
+  mà bạn có thể thêm vào hành động
+thông báo của bạn. Hàm dựng của lớp này sẽ chấp nhận xâu mà hệ thống sử dụng làm khóa 
+ cho nhập liệu văn bản. Sau đó, ứng dụng cầm tay của bạn sử dụng khóa đó để truy xuất văn bản
+  nhập liệu.
+
+<pre>
+// Key for the string that's delivered in the action's intent
+private static final String KEY_TEXT_REPLY = "key_text_reply";
+String replyLabel = getResources().getString(R.string.reply_label);
+RemoteInput remoteInput = new RemoteInput.Builder(KEY_TEXT_REPLY)
+        .setLabel(replyLabel)
+        .build();
+</pre>
+</li>
+<li>Đính kèm đối tượng {@link android.support.v4.app.RemoteInput}
+ với một hành động bằng cách sử dụng <code>addRemoteInput()</code>.
+
+<pre>
+// Create the reply action and add the remote input
+Notification.Action action =
+        new Notification.Action.Builder(R.drawable.ic_reply_icon,
+                getString(R.string.label), replyPendingIntent)
+                .addRemoteInput(remoteInput)
+                .build();
+</pre>
+</li>
+
+<li>Áp dụng hành động cho thông báo và phát hành thông báo.
+
+<pre>
+// Build the notification and add the action
+Notification notification =
+        new Notification.Builder(mContext)
+                .setSmallIcon(R.drawable.ic_message)
+                .setContentTitle(getString(R.string.title))
+                .setContentText(getString(R.string.content))
+                .addAction(action))
+                .build();
+
+// Issue the notification
+NotificationManager notificationManager =
+        NotificationManager.from(mContext);
+notificationManager.notify(notificationId, notification);
+
+</pre>
+</li>
+
+</ol>
+
+
+<p> Hệ thống sẽ nhắc người dùng nhập liệu một phản hồi khi chúng kích hoạt
+hành động thông báo. </p>
+
+<img id="fig-user-input" src="{@docRoot}preview/images/inline-type-reply.png" srcset="{@docRoot}preview/images/inline-type-reply.png 1x,
+    {@docRoot}preview/images/inline-type-reply_2x.png 2x" width="300">
+<p class="img-caption">
+  <strong>Hình 2.</strong> Người dùng nhập liệu văn bản từ khu vực hiển thị thông báo.
+</p>
+
+<h3>Truy xuất mục nhập của người dùng từ trả lời giữa dòng</h3>
+
+<p>Để nhận mục nhập của người dùng từ giao diện thông báo đến hoạt động bạn
+đã khai báo trong ý định của hành động trả lời:</p>
+<ol>
+<li> Gọi {@link android.support.v4.app.RemoteInput#getResultsFromIntent
+  getResultsFromIntent()} bằng cách chuyển ý định của hành động thông báo dưới dạng
+ tham số đầu vào. Phương thức này trả về {@link android.os.Bundle}
+ có chứa phản hồi văn bản.
+</li>
+
+<pre>
+Bundle remoteInput = RemoteInput.getResultsFromIntent(intent);
+</pre>
+
+<li>Truy vấn gói bằng cách sử dụng khóa kết quả (đã cung cấp cho hàm dựng {@link
+  android.support.v4.app.RemoteInput.Builder}).
+</li>
+</ol>
+
+<p>Đoạn mã sau minh họa cách thức một phương thức truy xuất văn bản đầu vào
+từ một gói:</p>
+
+<pre>
+// Obtain the intent that started this activity by calling
+// Activity.getIntent() and pass it into this method to
+// get the associated string.
+
+private CharSequence getMessageText(Intent intent) {
+    Bundle remoteInput = RemoteInput.getResultsFromIntent(intent);
+    if (remoteInput != null) {
+            return remoteInput.getCharSequence(KEY_TEXT_REPLY);
+            }
+    return null;
+ }
+</pre>
+
+<p>Ứng dụng có thể áp dụng lô-gic để quyết định hành động nào nên lấy trên văn bản
+được truy xuất.
+Đối với các ứng dụng tương tác (chẳng hạn như trò chuyện), hãy cung cấp thêm ngữ cảnh trong chính thông báo
+ (ví dụ như nhiều dòng lịch sử trò chuyện, gồm có các tin nhắn của riêng người dùng)
+  để người dùng có thể phản hồi phù hợp.
+Khi người dùng phản hồi qua {@link android.support.v4.app.RemoteInput},
+ hãy bao gồm văn bản trong lịch sử trả lời bằng phương thức {@code setRemoteInputHistory()}
+.</p>
+
+<h2 id="bundle">Thông báo Gộp</h2>
+
+<p>Android N cung cấp cho các nhà phát triển một cách mới để hiển thị
+ hàng đợi thông báo: <i>thông báo gộp</i>. Cách hiển thị này tương tự với tính năng
+  <a href="{@docRoot}training/wearables/notifications/stacks.html">Ngăn xếp
+  Thông báo</a> có trong Android Wear. Ví dụ, nếu ứng dụng của bạn tạo thông báo
+  cho tin nhắn nhận được, khi có nhiều hơn một tin nhắn nhận được, hãy gói
+ các thông báo lại với nhau thành một nhóm đơn lẻ. Bạn có thể
+ sử dụng phương thức {@link android.support.v4.app.NotificationCompat.Builder#setGroup
+Builder.setGroup()} hiện có để gói các thông báo tương tự.</p>
+
+<p>
+  Nhóm thông báo sẽ quy định phân cấp trên các thông báo bao gồm nó.
+  Ở trên cùng của phân cấp là thông báo mẹ hiển thị tóm tắt
+  thông tin cho nhóm đó. Người dùng có thể mở rộng
+  nhóm thông báo tăng dần lên, và hệ thống sẽ hiển thị thêm thông tin khi
+  người dùng truy sâu hơn. Khi người dùng mở rộng gói này, hệ thống sẽ lộ ra thêm
+  thông tin cho tất cả các thông báo con của gói, khi người dùng
+  mở rộng một trong những thông báo đó, hệ thống sẽ lộ ra toàn bộ nội dung của nó.
+</p>
+
+<img id="fig-bundles" src="{@docRoot}preview/images/bundles.png" srcset="{@docRoot}preview/images/bundles.png 1x,
+          {@docRoot}preview/images/bundles_2x.png 2x" width="300">
+<p class="img-caption">
+  <strong>Hình 3.</strong> Người dùng có thể mở rộng nhóm
+  thông báo tăng dần lên.
+</p>
+
+<p>Để tìm hiểu cách thêm thông báo vào một nhóm, xem
+<a href="{@docRoot}training/wearables/notifications/stacks.html#AddGroup">Thêm
+Mỗi Thông báo vào một Nhóm</a>.</p>
+
+
+<h3 id="best-practices">Thực hành tốt nhất cho thông báo gộp</h3>
+<p>Mục này sẽ cung cấp hướng dẫn về việc khi nào sử dụng nhóm thông báo thay vì
+ các thông báo{@link android.app.Notification.InboxStyle InboxStyle}
+có sẵn trong các phiên bản cũ hơn của
+nền tảng Android.</p>
+
+<h3>Khi nào nên sử dụng thông báo gộp</h3>
+
+<p>Bạn nên sử dụng các nhóm thông báo chỉ khi tất cả các điều kiện sau là
+đúng đối với trường hợp sử dụng của bạn:</p>
+
+<ul>
+  <li>Thông báo con là loại thông báo đầy đủ và có thể được hiển thị
+   riêng rẽ mà không cần tóm tắt nhóm.</li>
+  <li>Sẽ có lợi khi làm nổi lên các thông báo con một cách riêng rẽ. Ví
+dụ:
+  </li>
+  <ul>
+    <li>Các thông báo này có thể hành động được, bằng các hành động cụ thể cho mỗi thông báo con.</li>
+    <li>Có nhiều thông tin hơn đối với thông báo con mà người dùng sẽ muốn đọc.</li>
+  </ul>
+</ul>
+
+<p>Các ví dụ về các trường hợp sử dụng tốt nhóm thông báo bao gồm: ứng dụng nhắn tin
+hiển thị danh sách các tin nhắn đến, hoặc ứng dụng email hiển thị danh sách
+các email đã nhận được.</p>
+
+<p>
+Ví dụ về các trường hợp trong đó một thông báo đơn lẻ được ưu tiên
+ bao gồm tin nhắn riêng từ một người đơn lẻ, hoặc biểu diễn danh sách
+ các mục văn bản một hàng. Bạn có thể sử dụng
+({@link android.app.Notification.InboxStyle InboxStyle} hoặc
+{@link android.app.Notification.BigTextStyle BigTextStyle}) để hoàn thành
+việc này.
+</p>
+
+<h3 id ="post">Hiển thị Thông báo gộp</h3>
+
+<p>
+  Ứng dụng sẽ luôn đăng tóm tắt nhóm, ngay cả khi nhóm chỉ chứa
+  một thông báo con duy nhất. Hệ thống này sẽ ngăn chặn tóm tắt và hiển thị trực tiếp
+  thông báo con nếu nó chỉ chứa một thông báo duy nhất. Điều này đảm bảo
+  rằng hệ thống có thể cung cấp một trải nghiệm nhất quán khi người dùng trượt nhanh khỏi
+  thông báo con của nhóm.
+</p>
+
+<p class="note">
+  <strong>Lưu ý:</strong> Phiên bản Android N này không
+  ngăn chặn tóm tắt cho nhóm thông báo có chứa một thông báo con duy nhất. Chức năng
+  này sẽ được thêm vào trong phiên bản sau của Android N.
+</p>
+
+<h3>Thông báo lướt nhanh</h3>
+
+<p>Trong khi hệ thống thường hiển thị các thông báo con dưới dạng một nhóm, bạn có thể đặt
+ chúng tạm thời hiển thị dưới dạng
+ <a href="{@docRoot}guide/topics/ui/notifiers/notifications.html#Heads-up">
+ thông báo cảnh báo</a>. Tính năng này đặc biệt hữu ích bởi vì nó cho phép
+  truy cập ngay lập tức thông báo con gần đây nhất và các hành động liên kết với thông báo con đó.
+</p>
+
+
+<h3>Tính tương thích ngược</h3>
+
+<p>
+  Cả nhóm thông báo và đầu vào từ xa đều là một phần của API {@link
+  android.app.Notification} vì Android 5.0 (API mức 21) hỗ trợ
+  các thiết bị Android Wear. Nếu bạn đã dựng các thông báo bằng các API này,
+  hành động duy nhất bạn cần phải thực hiện là xác minh rằng ứng dụng có hành vi tương ứng
+  với các hướng dẫn đã mô tả ở trên, và cân nhắc việc triển khai {@code
+  setRemoteInputHistory()}.
+</p>
+
+<p>
+  Để hỗ trợ tính tương thích ngược, các API giống vậy sẽ được cung cấp cho
+  lớp {@link android.support.v4.app.NotificationCompat}
+  của thư viện hỗ trợ, cho phép bạn dựng các thông báo hoạt động trên các phiên bản
+  Android cũ hơn. Trên máy tính bảng và thiết bị cầm tay, người dùng chỉ nhìn thấy thông báo tóm tắt,
+  vì vậy ứng dụng vẫn có kiểu hòm thư hoặc thông báo tương tự
+  biểu diễn cho toàn bộ nội dung thông tin của nhóm. Vì các thiết bị Android
+  Wear cho phép người dùng xem các thông báo con thậm chí trên
+  các mức nền tảng thấp hơn, bạn nên dựng các thông báo con dù cho mức API
+  là mức nào.
+</p>
+
+<h2 id="custom"> Dạng xem Tùy chỉnh</h2>
+<p>Bắt đầu từ Android N, bạn có thể tùy chỉnh dạng xem và
+vẫn có các trang trí hệ thống như tiêu đề thông báo, hành động, và
+các bố trí mở rộng được.</p>
+
+<p>Để kích hoạt khả năng này, Android N thêm các API sau để tạo kiểu cho dạng xem tùy chỉnh
+  của bạn:</p>
+
+<dl>
+<dt>
+{@code DecoratedCustomViewStyle()}</dt>
+<dd> Thông báo kiểu khác với thông báo
+media.</dd>
+<dt>
+{@code DecoratedMediaCustomViewStyle()}</dt>
+<dd> Thông báo media tạo kiểu.</dd>
+</dl>
+
+<p>Để sử dụng API mới này, hãy gọi phương thức {@code setStyle()}, chuyển nó sang
+kiểu dạng xem tùy chỉnh mong muốn.</p>
+
+<p>Đoạn mã này cho biết cách dựng đối tượng thông báo tùy chỉnh bằng phương thức
+{@code DecoratedCustomViewStyle()}.</p>
+
+<pre>
+Notification noti = new Notification.Builder()
+           .setSmallIcon(R.drawable.ic_stat_player)
+           .setLargeIcon(albumArtBitmap))
+           .setCustomContentView(contentView);
+           .setStyle(new Notification.DecoratedCustomViewStyle())
+           .build();
+
+</pre>
diff --git a/docs/html-intl/intl/vi/preview/features/picture-in-picture.jd b/docs/html-intl/intl/vi/preview/features/picture-in-picture.jd
new file mode 100644
index 0000000..4b3cb40
--- /dev/null
+++ b/docs/html-intl/intl/vi/preview/features/picture-in-picture.jd
@@ -0,0 +1,186 @@
+page.title=Ảnh trong ảnh
+page.keywords=preview,sdk,PIP,Picture-in-picture
+page.tags=androidn
+
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+
+<h2>Trong tài liệu này</h2>
+<ol>
+  <li><a href="#declaring">Khai báo Hoạt động hỗ trợ
+Ảnh trong ảnh</a></li>
+  <li><a href="#pip_button">Chuyển Hoạt động sang Ảnh trong ảnh</a>
+</li>
+  <li><a href="#handling_ui">Xử lý UI trong chế độ Ảnh trong ảnh</a>
+</li>
+  <li><a href="#continuing_playback">Tiếp tục phát lại video ở chế độ
+Ảnh trong ảnh</a></li>
+  <li><a href="#best">Thực hành Tốt nhất</a></li>
+</ol>
+
+<h2>Xem thêm</h2>
+<ol>
+  <li><a href="{@docRoot}preview/features/multi-window.html">Hỗ trợ
+đa cửa sổ</a></li>
+</ol>
+
+</div>
+</div>
+
+<p>Trong Android N, người dùng Android TV đã có thể xem video
+trong một cửa sổ được ghim vào một góc màn hình khi điều hướng bên trong
+các ứng dụng. Chế độ Ảnh trong ảnh (PIP) cho phép ứng dụng chạy một hoạt động
+video trong cửa sổ được ghim trong khi một hoạt động khác tiếp tục chạy
+ngầm. Cửa sổ PIP cho phép người dùng thực hiện nhiều việc khi đang sử dụng ứng dụng của bạn,
+giúp cho người dùng năng suất hơn.</p>
+
+<p>Ứng dụng của bạn có thể quyết định khi nào thì kích hoạt chế độ PIP. Sau đây là một vài ví dụ về
+thời điểm chuyển vào chế độ PIP:</p>
+
+<ul>
+<li>Ứng dụng của bạn có thể chuyển một video vào chế độ PIP khi người dùng điều hướng
+rời khỏi video đó để duyệt nội dung khác.</li>
+<li>Ứng dụng của bạn có thể chuyển một video sang chế độ PIP khi người dùng xem đoạn cuối
+ của một tập nội dung. Màn hình chính sẽ hiển thị thông tin quảng cáo
+hoặc tóm tắt về tập tiếp theo trong loạt video đó.</li>
+<li>Ứng dụng của bạn có thể mang lại cho người dùng một cách để xếp hàng các nội dung bổ sung khi
+họ đang xem một video. Video đó sẽ tiếp tục được phát trong chế độ PIP trong khi màn hình
+chính hiển thị hoạt động chọn nội dung.</li>
+</ul>
+
+<p>Cửa sổ PIP có kích thước 240x135 dp và được hiển thị trên lớp trên cùng ở một trong
+bốn góc của màn hình được hệ thống chọn. Người dùng có thể gọi ra một menu PIP
+, cho phép họ bật tắt cửa sổ PIP lên toàn màn hình hoặc đóng cửa sổ
+PIP bằng cách bấm giữ nút <b>Home</b> trên điều khiển từ xa. Nếu một video
+khác bắt đầu phát trên màn hình chính, cửa sổ PIP sẽ tự động
+được đóng. Người dùng cũng có thể đóng cửa sổ PIP thông qua nút Recents.</p>
+
+<img src="{@docRoot}preview/images/pip-active.png" />
+<p class="img-caption"><strong>Hình 1.</strong> Một video Ảnh trong ảnh
+được hiển thị ở góc màn hình khi người dùng duyệt nội dung
+trên màn hình chính.</p>
+
+<p>PIP sử dụng các API đa cửa sổ có trong Android N để
+tạo cửa sổ video nằm chồng được ghim. Để thêm chế độ PIP vào ứng dụng bạn cần
+đăng ký các hoạt động hỗ trợ PIP, chuyển hoạt động của bạn sang chế độ PIP khi
+cần và đảm bảo cho các phần tử UI sẽ bị ẩn đi và phát lại video vẫn tiếp tục khi
+hoạt động đó ở trong chế độ PIP.</p>
+
+<h2 id="declaring">Khai báo Hoạt động hỗ trợ Ảnh trong ảnh</h2>
+
+<p>Theo mặc định, hệ thống không tự động hỗ trợ PIP cho các ứng dụng.
+Nếu bạn muốn hỗ trợ chế độ PIP trong ứng dụng của mình, hãy đăng ký hoạt động
+video trong bản kê khai bằng cách đặt
+<code>android:supportsPictureInPicture</code> và
+<code>android:resizeableActivity</code> thành <code>true</code>. Ngoài ra, hãy chỉ định
+hoạt động của bạn xử lý các thay đổi cấu hình bố trí để hoạt động đó
+không khởi chạy lại khi có các thay đổi về bố trí trong quá trình chuyển tiếp chế độ PIP.</p>
+
+<pre>
+&lt;activity android:name="VideoActivity"
+    android:resizeableActivity="true"
+    android:supportsPictureInPicture="true"
+    android:configChanges=
+        "screenSize|smallestScreenSize|screenLayout|orientation"
+    ...
+</pre>
+
+<p>Khi đăng ký hoạt động của bạn, hãy nhớ rằng trong chế độ PIP, hoạt động
+của bạn sẽ được hiển thị trong một cửa sổ nhỏ nằm chồng trên màn hình TV. Các hoạt động
+phát lại video với UI tối giản sẽ đem đến trải nghiệm người dùng tốt nhất. Các hoạt động
+có chứa những phần tử UI nhỏ có thể không đem lại trải nghiệm người dùng đạt yêu cầu
+khi được chuyển sang chế độ PIP bởi người dùng không thể thấy các chi tiết của phần tử UI
+trong cửa sổ PIP.</p>
+
+<h2 id="pip_button">Chuyển Hoạt động sang Ảnh trong ảnh</h2>
+
+Khi bạn cần chuyển hoạt động của mình sang chế độ PIP, hãy gọi
+<code>Activity.enterPictureInPicture()</code>. Ví dụ sau sẽ chuyển
+sang chế độ PIP khi người dùng chọn một nút PIP riêng trên thanh điều khiển
+media:</p>
+
+<pre>
+&#64;Override
+public void onActionClicked(Action action) {
+    if (action.getId() == R.id.lb_control_picture_in_picture) {
+        getActivity().enterPictureInPicture();
+        return;
+    }
+    ...
+</pre>
+
+<p>Thêm một nút PIP vào thanh điều khiển media của bạn sẽ cho phép người dùng dễ dàng chuyển
+sang chế độ PIP khi điều khiển phát lại video.</p>
+
+<img src="{@docRoot}preview/images/pip-button.png" />
+<p class="img-caption"><strong>Hình 1.</strong> Một nút Ảnh trong ảnh
+trên thanh điều khiển media.</p>
+
+<p>Android N có một lớp
+<code>PlaybackControlsRow.PictureInPictureAction</code> mới định nghĩa
+các hành động ở chế độ PIP trên thanh điều khiển và sử dụng biểu tượng PIP.</p>
+
+<h2 id="handling_ui">Xử lý UI trong chế độ Ảnh trong ảnh</h2>
+
+<p>Khi hoạt động của bạn vào trong chế độ PIP thì hoạt động đó chỉ nên hiển thị phát lại
+video. Hãy xóa các phần tử UI trước khi hoạt động của bạn vào chế độ PIP,
+và khôi phục các phần tử này khi hoạt động quay lại chế độ toàn màn hình.
+Ghi đè phương thức <code>Activity.onPictureInPictureChanged()</code> hoặc
+<code>Fragment.onPictureInPictureChanged()</code> và bật hoặc 
+tắt các phần tử UI khi cần thiết, ví dụ:</p>
+
+<pre>
+&#64;Override
+public void onPictureInPictureChanged(boolean inPictureInPicture) {
+    if (inPictureInPicture) {
+        // Hide the controls in picture-in-picture mode.
+        ...
+    } else {
+        // Restore the playback UI based on the playback status.
+        ...
+    }
+}
+</pre>
+
+<h2 id="continuing_playback">Tiếp tục phát lại video ở chế độ
+Ảnh trong ảnh</h2>
+
+<p>Khi hoạt động của bạn chuyển sang chế độ PIP thì hệ thống sẽ coi hoạt động đó đang ở trong
+trạng thái tạm dừng và sẽ gọi phương thức <code>onPause()</code> của hoạt động. Việc phát lại
+video không nên được tạm dừng và cần được tiếp tục phát nếu hoạt động
+bị tạm dừng do chế độ PIP. Hãy kiểm tra chế độ PIP trong phương thức 
+<code>onPause()</code> của hoạt động và xử lý việc phát lại cho phù hợp, ví
+dụ:</p>
+
+<pre>
+&#64;Override
+public void onPause() {
+    // If called due to PIP, do not pause playback
+    if (inPictureInPicture()) {
+        // Continue playback
+        ...
+    }
+    // If paused but not in PIP, pause playback if necessary
+    ...
+}
+</pre>
+
+<p>Khi hoạt động của bạn chuyển ra khỏi chế độ PIP để quay trở về chế độ toàn màn hình thì
+hệ thống sẽ tiếp tục hoạt động của bạn và gọi phương thức <code>onResume()</code>.</p>
+
+<h2 id="best">Thực hành Tốt nhất</h2>
+
+<p>PIP được dành cho các hoạt động phát lại video toàn màn hình. Khi chuyển
+hoạt động của bạn vào chế độ PIP, hãy tránh hiển thị bất kỳ nội dung nào ngoài video.
+Theo dõi khi hoạt động của bạn vào chế độ PIP và ẩn đi các phần tử UI, như mô tả
+trong <a href="#handling_ui">Xử lý UI trong chế độ Ảnh trong ảnh</a>.</p>
+
+<p>Vì cửa sổ PIP được hiển thị dưới dạng cửa sổ nổi ở góc
+màn hình do đó bạn cần tránh hiển thị các thông tin quan trọng trong màn hình chính
+ở bất kỳ vùng nào có thể bị che khuất bởi cửa sổ PIP.</p>
+
+<p>Theo mặc định, khi một hoạt động đang ở trong chế độ PIP thì nó sẽ không nhận tiêu điểm nhập vào. Để
+tiếp nhận các sự kiện nhập vào khi ở chế độ PIP, hãy sử dụng
+<code>MediaSession.setMediaButtonReceiver()</code>.</p>
diff --git a/docs/html-intl/intl/vi/preview/features/scoped-folder-access.jd b/docs/html-intl/intl/vi/preview/features/scoped-folder-access.jd
new file mode 100644
index 0000000..d6db0ec
--- /dev/null
+++ b/docs/html-intl/intl/vi/preview/features/scoped-folder-access.jd
@@ -0,0 +1,124 @@
+page.title=Truy cập Thư mục theo Phạm vi
+page.keywords=preview,sdk,scoped directory access
+page.tags=androidn
+
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+  <h2>Trong tài liệu này</h2>
+  <ol>
+    <li><a href="#accessing">Truy cập một Thư mục lưu trữ bên ngoài</a></li>
+    <li><a href="#removable">Truy cập một Thư mục trên Phương tiện tháo lắp được</a></li>
+    <li><a href="#best">Thực hành Tốt nhất</a></li>
+  </ol>
+</div>
+</div>
+
+<p>Các ứng dụng như ứng dụng ảnh thường chỉ cần truy cập đến các thư mục đã quy định trong
+bộ nhớ ngoài như thư mục <code>Pictures</code>. Các phương pháp
+  hiện tại để truy cập bộ nhớ lưu trữ ngoài vẫn chưa được thiết kế để dễ dàng cho phép
+truy cập thư mục đích cho những kiểu ứng dụng này. Ví dụ:</p>
+
+<ul>
+<li>Việc yêu cầu {@link android.Manifest.permission#READ_EXTERNAL_STORAGE}
+hoặc {@link android.Manifest.permission#WRITE_EXTERNAL_STORAGE} trong bản kê khai của bạn
+sẽ cho phép truy cập đến tất cả các thư mục công khai trên bộ nhớ lưu trữ ngoài, mà có thể
+cấp nhiều quyền truy cập hơn những gì ứng dụng của bạn cần.</li>
+<li>Sử dụng
+<a href="{@docRoot}guide/topics/providers/document-provider.html">Khuôn khổ
+ Truy cập Kho lưu trữ</a> thường khiến người dùng chọn thư mục
+thông qua UI hệ thống. Đây là điều không cần thiết nếu ứng dụng của bạn luôn truy cập cùng
+một thư mục bên ngoài.</li>
+</ul>
+
+<p>Android N cung cấp một API mới được đơn giản hóa để truy cập
+các thư mục lưu trữ bên ngoài thường dùng. </p>
+
+<h2 id="accessing">Truy cập một Thư mục lưu trữ bên ngoài</h2>
+
+<p>Sử dụng lớp <code>StorageManager</code> để lấy thực thể
+<code>StorageVolume</code> phù hợp. Sau đó tạo một ý định bằng cách gọi phương thức
+<code>StorageVolume.createAccessIntent()</code> của thực thể đó.
+Sử dụng ý định này để truy cập các thư mục lưu trữ bên ngoài. Để lấy danh sách
+tất cả các ổ đĩa, bao gồm các ổ đĩa media có thể tháo lắp, hãy sử dụng
+<code>StorageManager.getVolumesList()</code>.</p>
+
+<p>Đoạn mã sau là một ví dụ về cách mở thư mục
+<code>Pictures</code> trong bộ nhớ lưu trữ chính được chia sẻ:</p>
+
+<pre>
+StorageManager sm = (StorageManager)getSystemService(Context.STORAGE_SERVICE);
+StorageVolume volume = sm.getPrimaryVolume();
+Intent intent = volume.createAccessIntent(Environment.DIRECTORY_PICTURES);
+startActivityForResult(intent, request_code);
+</pre>
+
+<p>Hệ thống sẽ cố gắng cấp quyền truy cập tới thư mục bên ngoài và nếu
+cần sẽ xác nhận quyền truy cập với người dùng bằng một UI được đơn giản hóa:</p>
+
+<img src="{@docRoot}preview/images/scoped-folder-access-framed.png" srcset="{@docRoot}preview/images/scoped-folder-access-framed.png 1x,
+{@docRoot}preview/images/scoped-folder-access-framed_2x.png 2x" />
+<p class="img-caption"><strong>Hình 1.</strong> Một ứng dụng yêu cầu
+truy cập tới thư mục Pictures.</p>
+
+<p>Nếu người dùng cấp quyền truy cập, hệ thống sẽ gọi phương thức ghi đè
+<code>onActivityResult()</code> của bạn với mã kết quả là
+<code>Activity.RESULT_OK</code> và dữ liệu ý định có chứa URI. Hãy sử dụng
+URI được cung cấp để truy cập thông tin thư mục, giống như sử dụng các URI
+được trả về bởi
+<a href="{@docRoot}guide/topics/providers/document-provider.html">Khuôn khổ
+ Truy cập Kho lưu trữ</a>.</p>
+
+<p>Nếu người dùng không cấp quyền truy cập, hệ thống sẽ gọi phương thức ghi đè
+<code>onActivityResult()</code> của bạn với mã kết quả là
+<code>Activity.RESULT_CANCELED</code> và dữ liệu ý định có giá trị null.</p>
+
+<p class="note"><b>Lưu ý</b>: Lấy quyền truy cập tới một thư mục bên ngoài được chỉ định
+cũng sẽ cấp quyền truy cập tới các thư mục con thuộc thư mục đó.</p>
+
+<h2 id="removable">Truy cập một Thư mục trên phương tiện tháo lắp được</h2>
+
+<p>Để sử dụng Truy cập Thư mục theo Phạm vi nhằm truy cập các thư mục trên phương tiện có thể tháo lắp,
+trước hết, hãy thêm một {@link android.content.BroadcastReceiver} để lắng nghe
+thông báo {@link android.os.Environment#MEDIA_MOUNTED}, ví dụ:</p>
+
+<pre>
+&lt;receiver
+    android:name=".MediaMountedReceiver"
+    android:enabled="true"
+    android:exported="true" &gt;
+    &lt;intent-filter&gt;
+        &lt;action android:name="android.intent.action.MEDIA_MOUNTED" /&gt;
+        &lt;data android:scheme="file" /&gt;
+    &lt;/intent-filter&gt;
+&lt;/receiver&gt;
+</pre>
+
+<p>Khi người dùng kết nối một phương tiện có thể tháo lắp như thẻ SD thì hệ thống sẽ gửi một thông báo
+{@link android.os.Environment#MEDIA_MOUNTED}. Thông báo này
+sẽ cung cấp một đối tượng <code>StorageVolume</code> trong dữ liệu ý định mà bạn có thể
+sử dụng để truy cập các thư mục trên phương tiện có thể tháo lắp đó. Ví dụ sau
+sẽ truy cập thư mục <code>Pictures</code> trên phương tiện có thể tháo lắp:</p>
+
+<pre>
+// BroadcastReceiver has already cached the MEDIA_MOUNTED
+// notification Intent in mediaMountedIntent
+StorageVolume volume = (StorageVolume)
+    mediaMountedIntent.getParcelableExtra(StorageVolume.EXTRA_STORAGE_VOLUME);
+volume.createAccessIntent(Environment.DIRECTORY_PICTURES);
+startActivityForResult(intent, request_code);
+</pre>
+
+<h2 id="best">Thực hành Tốt nhất</h2>
+
+<p>Khi có thể, hãy duy trì URI truy cập thư mục bên ngoài để bạn không phải
+lặp lại yêu cầu người dùng cấp quyền truy cập. Khi người dùng đã cấp quyền truy cập, hãy gọi
+<code>getContentResolver().takePersistableUriPermssion()</code> với
+URI truy cập thư mục. Hệ thống sẽ duy trì URI và các yêu cầu
+truy cập sau này sẽ trả về <code>RESULT_OK</code> và không hiển thị UI xác nhận cho
+người dùng nữa.</p>
+
+<p>Nếu người dùng từ chối quyền truy cập đến một thư mục bên ngoài thì đừng
+yêu cầu truy cập lại ngay lập tức. Lặp đi lặp lại yêu cầu truy cập sẽ dẫn đến trải nghiệm
+người dùng không tốt.</p>
diff --git a/docs/html-intl/intl/vi/preview/features/security-config.jd b/docs/html-intl/intl/vi/preview/features/security-config.jd
new file mode 100644
index 0000000..8d8bf34
--- /dev/null
+++ b/docs/html-intl/intl/vi/preview/features/security-config.jd
@@ -0,0 +1,744 @@
+page.title=Cấu hình Bảo mật mạng
+page.keywords=preview,security,network
+
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+
+<h2>Trong tài liệu này</h2>
+<ol>
+  <li><a href="#manifest">Thêm một tệp Cấu hình Bảo mật mạng</a></li>
+  <li><a href="#CustomTrust">Tùy chỉnh các CA đáng tin cậy</a>
+      <ol>
+      <li><a href="#ConfigCustom">Cấu hình một CA tùy chỉnh đáng tin cậy</a></li>
+      <li><a href="#LimitingCas">Giới hạn bộ CA đáng tin cậy</a></li>
+      <li><a href="#TrustingAdditionalCas">Tin cậy các CA bổ sung</a></li>
+      </ol>
+  </li>
+  <li><a href="#TrustingDebugCa">Các CA chỉ trong chế độ gỡ lỗi</a></li>
+  <li><a href="#UsesCleartextTraffic">Không sử dụng truyền gửi văn bản chưa mã hóa</a></li>
+  <li><a href="#CertificatePinning">Ghim chứng chỉ</a></li>
+  <li><a href="#ConfigInheritance">Hành vi Kế thừa cấu hình</a></li>
+  <li><a href="#FileFormat">Định dạng Tệp cấu hình</a></li>
+</ol>
+</div>
+</div>
+
+
+<p>
+  Android N có tính năng Cấu hình Bảo mật mạng
+  cho phép ứng dụng tùy chỉnh các cài đặt bảo mật mạng trong một tệp
+  cấu hình khai báo an toàn mà không cần sửa đổi mã nguồn ứng dụng. Các cài đặt này có thể
+  được cấu hình cho các miền cụ thể và cho một ứng dụng cụ thể. Các khả năng
+   chính của tính năng này như sau:
+</p>
+
+<ul>
+  <li>
+    <b>Nguồn tin cậy tùy chỉnh:</b> Tùy chính các Nhà cung cấp chứng chỉ (CA)
+   nào được tin cậy cho các kết nối bảo mật của một ứng dụng. Ví
+  dụ, tin cậy các chứng chỉ tự ký đặc biệt hoặc hạn chế
+   bộ CA công khai mà ứng dụng tin cậy.
+  </li>
+
+  <li>
+    <b>Chỉ khống chế khi gỡ lỗi:</b> Gỡ lỗi các kết nối bảo mật một cách an toàn trong một ứng dụng
+   mà không thêm rủi ro cho cơ sở cài đặt.
+  </li>
+
+  <li>
+    <b>Không sử dụng truyền gửi văn bản chưa mã hóa:</b> Bảo vệ các ứng dụng khỏi việc
+   vô tình sử dụng truyền gửi văn bản chưa mã hóa.
+  </li>
+
+  <li>
+    <b>Ghim chứng chỉ:</b> Giới hạn kết nối bảo mật của ứng dụng
+  trong các chứng chỉ đặc biệt.
+  </li>
+</ul>
+
+
+<h2 id="manifest">Thêm một Tệp Cấu hình Bảo mật mạng</h2>
+
+<p>
+  Tính năng Cấu hình Bảo mật mạng sử dụng một tệp XML làm nơi bạn sẽ chỉ định
+   các cài đặt cho ứng dụng của mình. Bạn phải bổ sung một mục nhập trong bản kê khai của
+   ứng dụng để trỏ đến tệp này. Đoạn mã sau của một bản kê khai
+  minh họa cách tạo mục nhập này:
+</p>
+
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?&gt;
+...
+&lt;app ...&gt;
+    &lt;meta-data android:name="android.security.net.config"
+               android:resource="@xml/network_security_config" /&gt;
+    ...
+&lt;/app&gt;
+</pre>
+
+<h2 id="CustomTrust">Tùy chỉnh các CA đáng tin cậy</h2>
+
+<p>
+  Một ứng dụng có thể muốn tin cậy một bộ các CA tùy chỉnh thay vì mặc định
+  của nền tảng. Những lý do phổ biến nhất cho điều này là:
+</p>
+
+<ul>
+  <li>Kết nối tới một máy chủ có nhà cung cấp chứng chỉ riêng (tự ký,
+  được cấp bởi một CA nội bộ của công ty, v.v.).
+  </li>
+
+  <li>Giới hạn bộ CA chỉ trong các CA mà bạn tin cậy thay vì mọi
+  CA được cài đặt trước.
+  </li>
+
+  <li>Tin cậy các CA bổ sung không được kèm theo trong hệ thống.
+  </li>
+</ul>
+
+<p>
+  Theo mặc định, các kết nối bảo mật (vd: TLS, HTTPS) từ mọi ứng dụng sẽ tin cậy
+  các CA của hệ thống được cài đặt trước và các ứng dụng nhắm mục tiêu mức API 23
+   (Android M) và thấp hơn theo mặc định cũng tin cậy kho lưu trữ CA được người dùng bổ sung. Một
+   ứng dụng có thể tùy chỉnh các kết nối của riêng nó bằng cách sử dụng {@code base-config} (dành cho
+  tùy chỉnh trên phạm vi ứng dụng) hoặc {@code domain-config} (tùy chỉnh
+  cho mỗi miền).
+</p>
+
+
+<h3 id="ConfigCustom">Cấu hình một CA tùy chỉnh</h3>
+
+<p>
+  Giả sử bạn muốn kết nối tới máy chủ của mình có sử dụng các chứng chỉ
+  SSL tự ký hoặc tới một máy chủ có chứng chỉ SSL được cấp bởi một CA không công khai
+  mà bạn tin cậy, chẳng hạn như CA nội bộ của công ty.
+</p>
+
+<p>
+  <code>res/xml/network_security_config.xml</code>:
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?&gt;
+&lt;network-security-config&gt;
+    &lt;domain-config&gt;
+        &lt;domain includeSubdomains="true"&gt;example.com&lt;/domain&gt;
+        &lt;trust-anchors&gt;
+            &lt;certificates src="@raw/my_ca"/&gt;
+        &lt;/trust-anchors&gt;
+    &lt;/domain-config&gt;
+&lt;/network-security-config&gt;
+</pre>
+</p>
+
+<p>
+  Thêm chứng chỉ CA tự ký hoặc không công khai theo định dạng PEM hoặc DER vào
+  {@code res/raw/my_ca}.
+</p>
+
+
+<h3 id="LimitingCas">Giới hạn bộ CA đáng tin cậy</h3>
+
+<p>
+  Một ứng dụng không muốn tin cậy mọi CA được hệ thống tin cậy có thể
+   chỉ định bộ CA hạn chế của riêng nó để tin cậy. Điều này sẽ bảo vệ
+  ứng dụng khỏi các chứng chỉ lừa đảo được cấp bởi bất kỳ CA nào khác.
+</p>
+
+<p>
+  Cấu hình để giới hạn bộ CA đáng tin cậy cũng giống như <a href="#TrustingACustomCa">Tin cậy một CA tùy chỉnh</a> cho một miền cụ thể ngoại trừ
+  việc nhiều CA được cung cấp trong tài nguyên.
+</p>
+
+<p>
+<code>res/xml/network_security_config.xml</code>:
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?&gt;
+&lt;network-security-config&gt;
+    &lt;domain-config&gt;
+        &lt;domain includeSubdomains="true"&gt;secure.example.com&lt;/domain&gt;
+        &lt;domain includeSubdomains="true"&gt;cdn.example.com&lt;/domain&gt;
+        &lt;trust-anchors&gt;
+            &lt;certificates src="@raw/trusted_roots"/&gt;
+        &lt;/trust-anchors&gt;
+    &lt;/domain-config&gt;
+&lt;/network-security-config&gt;
+</pre>
+</p>
+
+<p>
+  Thêm các CA đáng tin cậy theo định dạng PEM hoặc DER vào {@code res/raw/trusted_roots}.
+  Lưu ý rằng nếu sử dụng định dạng PEM thì tệp <em>chỉ</em> được chứa dữ liệu PEM
+  và không có thêm dữ liệu văn bản. Bạn cũng có thể cung cấp nhiều
+   phần tử <a href="#certificates"><code>&lt;certificates&gt;</code></a>
+ thay vì một phần tử.
+</p>
+
+
+<h3 id="TrustingAdditionalCas">
+  Tin cậy các CA bổ sung
+</h3>
+
+<p>
+  Một ứng dụng có thể muốn tin cậy các CA bổ sung không được hệ thống tin cậy,
+   điều này có thể do hệ thống chưa thêm CA đó hoặc một CA không
+  đáp ứng các yêu cầu để đưa vào hệ thống Android. Một
+  ứng dụng có thể thực hiện điều này bằng cách chỉ định nhiều nguồn chứng chỉ cho một
+   cấu hình.
+</p>
+<p>
+<code>res/xml/network_security_config.xml</code>:
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?&gt;
+&lt;network-security-config&gt;
+    &lt;base-config&gt;
+        &lt;trust-anchors&gt;
+            &lt;certificates src="@raw/extracas"/&gt;
+            &lt;certificates src="system"/&gt;
+        &lt;/trust-anchors&gt;
+    &lt;/base-config&gt;
+&lt;/network-security-config&gt;
+</pre>
+</p>
+
+
+<h2 id="TrustingDebugCa">Cấu hình các CA để gỡ lỗi</h2>
+
+<p>
+  Khi gỡ lỗi một ứng dụng kết nối qua HTTPS thì bạn có thể muốn
+   kết nối tới một máy chủ phát triển cục bộ không có chứng chỉ
+  SSL dành cho máy chủ thương mại của bạn. Để hỗ trợ cho trường hợp này mà không cần
+   chỉnh sửa mã nguồn ứng dụng của bạn thì bạn có thể chỉ định các CA chỉ dùng cho gỡ lỗi
+ mà <i>chỉ</i> được tin cậy khi <a href="{@docRoot}guide/topics/manifest/application-element.html#debug">
+android:debuggable</a>
+ là {@code true} bằng cách sử dụng {@code debug-overrides}. Thông thường các IDE và công cụ
+ dựng sẽ đặt cờ này tự động đối với các bản dựng không dùng để phát hành.
+</p>
+
+<p>
+  Làm như vậy an toàn hơn so với mã điều kiện thông thường bởi, là điều kiện
+  bảo mật tiên quyết, các cửa hàng ứng dụng không chấp nhận các ứng dụng được đánh dấu
+  là hỗ trợ gỡ lỗi.
+</p>
+
+<p>
+<code>res/xml/network_security_config.xml</code>:
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?&gt;
+&lt;network-security-config&gt;
+    &lt;debug-overrides&gt;
+        &lt;trust-anchors&gt;
+            &lt;certificates src="@raw/debug_cas"/&gt;
+        &lt;/trust-anchors&gt;
+    &lt;/debug-overrides&gt;
+&lt;/network-security-config&gt;
+</pre>
+</p>
+
+
+<h2 id="UsesCleartextTraffic">Không sử dụng truyền gửi văn bản chưa mã hóa</h2>
+
+<p>
+  Các ứng dụng có ý định kết nối tới các điểm đích chỉ sử dụng các kết nối
+  bảo mật có thể bỏ hỗ trợ truyền gửi văn bản không mã hóa (bằng giao thức
+ HTTP không mã hóa thay vì HTTPS) tới các đích đó. Tùy chọn này giúp ngăn
+  các hồi quy tiềm tàng trong ứng dụng do thay đổi trong các URL được cung cấp bởi các nguồn
+  bên ngoài như các máy chủ phụ trợ.
+  Hãy xem {@link android.security.NetworkSecurityPolicy#isCleartextTrafficPermitted
+  NetworkSecurityPolicy.isCleartextTrafficPermitted()} để biết thêm chi tiết.
+</p>
+
+<p>
+  Ví dụ, một ứng dụng có thể đảm bảo rằng mọi kết nối tới {@code
+  secure.example.com} luôn được thực hiện qua HTTPS để bảo vệ việc truyền gửi dữ liệu nhạy cảm
+   khỏi các mạng có hại.
+</p>
+
+<p>
+<code>res/xml/network_security_config.xml</code>:
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?&gt;
+&lt;network-security-config&gt;
+    &lt;domain-config usesCleartextTraffic="false"&gt;
+        &lt;domain includeSubdomains="true"&gt;secure.example.com&lt;/domain&gt;
+    &lt;/domain-config&gt;
+&lt;/network-security-config&gt;
+</pre>
+</p>
+
+
+<h2 id="CertificatePinning">Ghim chứng chỉ</h2>
+
+<p>
+  Thông thường thì một ứng dụng sẽ tin cậy mọi CA được cài đặt sẵn. Nếu bất kỳ CA nào trong số này sẽ
+   phát hành một chứng chỉ lừa đảo thì ứng dụng sẽ gặp phải rủi ro từ một cuộc tấn công
+   MiTM. Một số ứng dụng chọn cách giới hạn bộ chứng chỉ được chúng chấp nhận
+   bằng cách giới hạn bộ CA được ứng dụng tin cậy hoặc bằng cách ghim chứng chỉ.
+</p>
+
+<p>
+  Ghim chứng chỉ được thực hiện bằng cách cung cấp một bộ chứng chỉ theo mã hash của
+  khóa công khai (SubjectPublicKeyInfo của chứng chỉ X.509). Một chuỗi
+   chứng chỉ khi đó chỉ hợp lệ nếu như chuỗi chứng chỉ có chứa ít nhất một trong
+  các khóa công khai được ghim.
+</p>
+
+<p>
+  Lưu ý rằng khi sử dụng ghim chứng chỉ bạn phải luôn kèm thêm một khóa
+  dự phòng để nếu bạn bị buộc phải chuyển sang các khóa mới hoặc thay đổi các CA (khi
+   ghim vào một chứng chỉ CA hoặc một chứng chỉ trung gian của CA đó) thì
+  kết nối của ứng dụng sẽ không bị ảnh hưởng. Nếu không bạn phải đưa ra một
+  bản cập nhật cho ứng dụng để khôi phục khả năng kết nối.
+</p>
+
+<p>
+  Ngoài ra, có thể đặt thời gian hết hạn cho các ghim, sau thời gian đó
+  sẽ không tiến hành ghim được. Điều này giúp phòng ngừa các vấn đề về kết nối trong
+  ứng dụng chưa được cập nhật. Tuy nhiên, việc đặt thời gian hết hạn
+   trên các ghim này có thể khiến ghim bị bỏ qua.
+</p>
+
+<p>
+<code>res/xml/network_security_config.xml</code>:
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?&gt;
+&lt;network-security-config&gt;
+    &lt;domain-config&gt;
+        &lt;domain includeSubdomains="true"&gt;example.com&lt;/domain&gt;
+        &lt;pin-set expiration="2018-01-01"&gt;
+            &lt;pin digest="SHA-256"&gt;7HIpactkIAq2Y49orFOOQKurWxmmSFZhBCoQYcRhJ3Y=&lt;/pin&gt;
+            &lt;!-- backup pin --&gt
+            &lt;pin digest="SHA-256"&gt;fwza0LRMXouZHRC8Ei+4PyuldPDcf3UKgO/04cDM1oE=&lt;/pin&gt;
+    &lt;/domain-config&gt;
+&lt;/network-security-config&gt;
+</pre>
+</p>
+
+
+<h2 id="ConfigInheritance">Hành vi Kế thừa cấu hình</h2>
+
+<p>
+  Các giá trị chưa được đặt trong một cấu hình cụ thể sẽ được kế thừa. Hành vi này cho phép tạo ra các cấu hình phức tạp
+   hơn trong khi vẫn giữ cho tệp cấu hình có thể đọc được.
+</p>
+
+<p>
+  Nếu một giá trị không được đặt trong một mục nhập cụ thể thì giá trị thuộc mục nhập
+  bao quát hơn tiếp theo sẽ được sử dụng. Các giá trị chưa được đặt trong {@code domain-config} sẽ được
+  lấy từ phần tử cha {@code domain-config} nếu như được lồng, hoặc từ {@code
+  base-config} nếu không được lồng. Các giá trị chưa được đặt trong {@code base-config} sẽ sử dụng
+  các giá trị mặc định của nền tảng.
+</p>
+
+<p>
+  Ví dụ: hãy xem xét trường hợp tất cả các kết nối tới miền con của {@code
+  example.com} phải sử dụng một bộ CA tùy chỉnh. Ngoài ra, truyền gửi văn bản không mã hóa tới
+  các miền này được cho phép <em>trừ khi</em> kết nối tới {@code
+  secure.example.com}. Bằng cách lồng cấu hình cho {@code
+  secure.example.com} bên trong cấu hình cho {@code example.com} thì
+  {@code trust-anchors} không cần phải được sao lặp.
+</p>
+
+<p>
+<code>res/xml/network_security_config.xml</code>:
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?&gt;
+&lt;network-security-config&gt;
+    &lt;domain-config&gt;
+        &lt;domain includeSubdomains="true"&gt;example.com&lt;/domain&gt;
+        &lt;trust-anchors&gt;
+            &lt;certificates src="@raw/my_ca"/&gt;
+        &lt;/trust-anchors&gt;
+        &lt;domain-config cleartextTrafficPermitted="false"&gt;
+            &lt;domain includeSubdomains="true"&gt;secure.example.com&lt;/domain&gt;
+        &lt;/domain-config&gt;
+    &lt;/domain-config&gt;
+&lt;/network-security-config&gt;
+</pre>
+</p>
+
+
+<h2 id="FileFormat">Định dạng Tệp cấu hình</h2>
+
+<p>
+  Tính năng Cấu hình Bảo mật mạng sử dụng một định dạng tệp XML.
+  Cấu trúc chung của tệp này được thể hiện trong đoạn mẫu mã nguồn sau:
+</p>
+
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?&gt;
+&lt;network-security-config&gt;
+    &lt;base-config&gt;
+        &lt;trust-anchors&gt;
+            &lt;certificates src="..."/&gt;
+            ...
+        &lt;/trust-anchors&gt;
+    &lt;/base-config&gt;
+
+    &lt;domain-config&gt;
+        &lt;domain&gt;android.com&lt;/domain&gt;
+        ...
+        &lt;trust-anchors&gt;
+            &lt;certificates src="..."/&gt;
+            ...
+        &lt;/trust-anchors&gt;
+        &lt;pin-set&gt;
+            &lt;pin digest="..."&gt;...&lt;/pin&gt;
+            ...
+        &lt;/pin-set&gt;
+    &lt;/domain-config&gt;
+    ...
+    &lt;debug-overrides&gt;
+        &lt;trust-anchors&gt;
+            &lt;certificates src="..."/&gt;
+            ...
+        &lt;/trust-anchors&gt;
+    &lt;/debug-overrides&gt;
+&lt;/network-security-config&gt;
+</pre>
+
+<p>
+  Các phần sau sẽ mô tả cú pháp và các chi tiết khác của định dạng
+   tệp này.
+</p>
+
+<h3 id="network-security-config">
+  &lt;network-security-config&gt;
+</h3>
+
+<dl class="xml">
+  <dt>
+    có thể chứa:
+  </dt>
+
+  <dd>
+    0 hoặc 1 của <code><a href="#base-config">&lt;base-config&gt;</a></code><br>
+    Bất kỳ số nào của <code><a href=
+    "#domain-config">&lt;domain-config&gt;</a></code><br>
+    0 hoặc 1 của <code><a href="#debug-overrides">&lt;debug-overrides&gt;</a></code>
+  </dd>
+</dl>
+
+<h3 id="base-config">
+  &lt;base-config&gt;
+</h3>
+
+<dl class="xml">
+  <dt>
+    cú pháp:
+  </dt>
+</dl>
+
+<pre class="stx">
+&lt;base-config <a href=
+"#usesCleartextTraffic">usesCleartextTraffic</a>=["true" | "false"]&gt;
+    ...
+&lt;/base-config&gt;
+</pre>
+<dl class="xml">
+  <dt>
+    có thể chứa:
+  </dt>
+
+  <dd>
+    <code><a href="#trust-anchors">&lt;trust-anchors&gt;</a></code>
+  </dd>
+
+  <dt>
+    mô tả:
+  </dt>
+
+  <dd>
+    Cấu hình mặc định được sử dụng bởi mọi kết nối có đích đến không được
+   bao gồm bởi một <a href="#domain-config"><code>domain-config</code></a>.
+
+<p>
+  Bất kỳ giá trị nào chưa được đặt sẽ sử dụng các giá trị mặc định của nền tảng. Cấu hình
+   mặc định cho các ứng dụng nhắm mục tiêu API mức 24 trở lên:
+</p>
+
+<pre>
+&lt;base-config usesCleartextTraffic="true"&gt;
+    &lt;trust-anchors&gt;
+        &lt;certificates src="system" /&gt;
+    &lt;/trust-anchors&gt;
+&lt;/base-config&gt;
+</pre>
+Cấu hình mặc định cho các ứng dụng nhắm mục tiêu API mức 23 trở xuống:
+<pre>
+&lt;base-config usesCleartextTraffic="true"&gt;
+    &lt;trust-anchors&gt;
+        &lt;certificates src="system" /&gt;
+        &lt;certificates src="user" /&gt;
+    &lt;/trust-anchors&gt;
+&lt;/base-config&gt;
+</pre>
+
+  </dd>
+</dl>
+
+<h3 id="domain-config">&lt;domain-config&gt;</h3>
+<dl class="xml">
+<dt>cú pháp:</dt>
+<dd>
+<pre class="stx">&lt;domain-config <a href="#usesCleartextTraffic">usesCleartextTraffic</a>=["true" | "false"]&gt;
+    ...
+&lt;/domain-config&gt;</pre>
+</dd>
+
+<dt>Có thể chứa:</dt>
+
+<dd>
+1 hoặc nhiều <code><a href="#domain">&lt;domain&gt;</a></code>
+<br/>0 hoặc 1 <code><a href="#trust-anchors">&lt;trust-anchors&gt;</a></code>
+<br/>0 hoặc 1 <code><a href="#pin-set">&lt;pin-set&gt;</code></a>
+<br/>Bất kỳ số nào của <code>&lt;domain-config&gt;</code> được lồng</dd>
+
+<dt>Mô tả</dt>
+<dd>Cấu hình được sử dụng cho các kết nối tới các điểm đích cụ thể theo như định nghĩa bởi các phần tử {@code domain}.
+
+<p>Lưu ý rằng nếu nhiều phần tử {@code domain-config} chứa một điểm đích thì cấu hình có quy tắc miền trùng khớp
+cụ thể nhất (dài nhất) sẽ được sử dụng.</p></dd>
+</dl>
+
+
+<h3 id="domain">&lt;domain&gt;</h3>
+
+<dl class="xml">
+  <dt>
+    cú pháp:
+  </dt>
+
+  <dd>
+    <pre class="stx">
+&lt;domain includeSubdomains=["true" | "false"]&gt;example.com&lt;/domain&gt;
+</pre>
+  </dd>
+
+  <dt>
+    Thuộc tính:
+  </dt>
+
+  <dd>
+    <dl class="attr">
+      <dt>
+        {@code includeSubdomains}
+      </dt>
+
+      <dd>
+        Nếu {@code "true"} thì quy tắc miền này sẽ trùng với miền đó và tất cả
+   các miền con, bao gồm các miền con của miền con, nếu không quy tắc đó chỉ
+   áp dụng cho các trùng khớp tuyệt đối.
+      </dd>
+    </dl>
+  </dd>
+
+  <dt>
+    Mô tả:
+  </dt>
+</dl>
+
+<h3 id="debug-overrides">&lt;debug-overrides&gt;</h3>
+
+<dl class="xml">
+  <dt>
+    cú pháp:
+  </dt>
+
+  <dd>
+    <pre class="stx">
+&lt;debug-overrides&gt;
+    ...
+&lt;/debug-overrides&gt;
+</pre>
+  </dd>
+
+  <dt>
+    Có thể chứa:
+  </dt>
+
+  <dd>
+    0 hoặc 1 <code><a href="#trust-anchors">&lt;trust-anchors&gt;</a></code>
+  </dd>
+
+  <dt>
+    Mô tả:
+  </dt>
+
+  <dd>
+    Ghi đè được thực hiện khi <a href="{@docRoot}guide/topics/manifest/application-element.html#debug">android:debuggable</a>
+   là {@code "true"} thì thường là trường hợp dành cho các bản dựng không phát hành
+   được tạo ra bởi các IDE hoặc công cụ dựng. Các nguồn tin cậy được chỉ định trong {@code
+    debug-overrides} được thêm vào tất cả các cấu hình khác và ghim
+   chứng chỉ không được thực hiện khi chuỗi chứng chỉ của máy chủ sử dụng một trong
+   các nguồn tin cậy chỉ dành cho gỡ lỗi này. Nếu <a href="{@docRoot}guide/topics/manifest/application-element.html#debug">android:debuggable</a>
+    là {@code "false"} thì phần này bị bỏ qua hoàn toàn.
+  </dd>
+</dl>
+
+<h3 id="trust-anchors">&lt;trust-anchors&gt;</h3>
+<dl class="xml">
+  <dt>
+    cú pháp:
+  </dt>
+
+  <dd>
+    <pre class="stx">
+&lt;trust-anchors&gt;
+...
+&lt;/trust-anchors&gt;
+</pre>
+  </dd>
+
+  <dt>
+    Có thể chứa:
+  </dt>
+
+  <dd>
+    Bất kỳ số nào của <code><a href="#certificates">&lt;certificates&gt;</a></code>
+  </dd>
+
+  <dt>
+    Mô tả:
+  </dt>
+
+  <dd>
+    Đặt nguồn tin cậy cho các kết nối bảo mật:
+  </dd>
+</dl>
+
+
+<h3 id="certificates">&lt;certificates&gt;</h3>
+<dl class="xml">
+<dt>cú pháp:</dt>
+<dd><pre class="stx">&lt;certificates src=["system" | "user" | "<i>raw resource</i>"]
+              overridePins=["true" | "false"] /&gt;
+</pre></dd>
+<dt>mô tả:</dt>
+<dd>Bộ các chứng chỉ X.509 cho các phần tử {@code trust-anchors}.</dd>
+
+<dt>thuộc tính:</dt>
+<dd><dl class="attr">
+<dt>{@code src}</dt>
+<dd>
+Nguồn của các chứng chỉ CA, có thể là một
+<ul>
+  <li>id nguồn thô trỏ tới một tệp có chứa các chứng chỉ X.509.
+  Các chứng chỉ phải được mã hóa theo định dạng DER hoặc PEM. Trong trường hợp của các chứng chỉ
+PEM thì tệp đó <em>không được</em> chứa dữ liệu không phải PEM khác như
+   các chú thích.
+  </li>
+
+  <li>{@code "system"} cho các chứng chỉ CA hệ thống được cài đặt sẵn
+  </li>
+
+  <li>{@code "user"} cho các chứng chỉ CA do người dùng thêm vào
+  </li>
+</ul>
+</dd>
+
+<dt>{@code overridePins}</dt>
+<dd>
+  <p>
+    Xác định xem liệu các CA từ nguồn này có bỏ qua việc ghim chứng chỉ hay không. Nếu {@code
+    "true"} thì các chuỗi chứng chỉ mà xâu qua một trong các CA từ nguồn
+   này thì khi đó ghim sẽ không được thực hiện. Đây có thể là điều có ích cho các CA gỡ lỗi
+   hoặc để hỗ trợ cho người dùng tấn công MiTM hoạt động truyền gửi bảo mật của ứng dụng.
+  </p>
+
+  <p>
+    Mặc định là {@code "false"} trừ khi được chỉ định trong một phần tử {@code debug-overrides}
+, khi đó mặc định là {@code "true"}.
+  </p>
+</dd>
+</dl>
+</dd>
+
+
+<h3 id="pin-set">&lt;pin-set&gt;</h3>
+
+<dl class="xml">
+  <dt>
+    cú pháp:
+  </dt>
+
+  <dd>
+<pre class="stx">
+&lt;pin-set expiration="date"&gt;
+...
+&lt;/pin-set&gt;
+</pre>
+  </dd>
+
+  <dt>
+    Có thể chứa:
+  </dt>
+
+  <dd>
+    Bất kỳ số nào của <code><a href="#pin">&lt;pin&gt;</a></code>
+  </dd>
+
+  <dt>
+    Mô tả:
+  </dt>
+
+  <dd>
+    Một bộ các ghim khóa công khai. Để một kết nối bảo mật được tin cậy, một trong các
+   khóa công khai trong chuỗi tin cậy phải nằm trong bộ các ghim này. Xem
+    <code><a href="#pin">&lt;pin&gt;</a></code> để biết định dạng của các ghim.
+  </dd>
+
+  <dt>
+    Thuộc tính:
+  </dt>
+
+  <dd>
+    <dl class="attr">
+      <dt>
+        {@code expiration}
+      </dt>
+
+      <dd>
+        Ngày tháng, theo định dạng {@code yyyy-MM-dd}, vào và sau thời điểm các ghim
+    hết hạn và do đó vô hiệu hóa ghim. Nếu thuộc tính này chưa được đặt thì khi đó các
+   ghim không hết hạn.
+        <p>
+          Việc hết hạn giúp phòng ngừa các vấn đề về khả năng kết nối trong ứng dụng làm cho không
+   nhận được các bản cập nhật cho bộ ghim, chẳng hạn như do người dùng
+   vô hiệu hóa các bản cập nhật ứng dụng.
+        </p>
+      </dd>
+    </dl>
+  </dd>
+</dl>
+
+<h3 id="pin">&lt;pin&gt;</h3>
+<dl class="xml">
+  <dt>
+    cú pháp:
+  </dt>
+
+  <dd>
+<pre class="stx">
+&lt;pin digest=["SHA-256"]&gt;base64 encoded digest of X.509
+    SubjectPublicKeyInfo (SPKI)&lt;/pin&gt;
+</pre>
+  </dd>
+
+  <dt>
+    Thuộc tính:
+  </dt>
+
+  <dd>
+    <dl class="attr">
+      <dt>
+        {@code digest}
+      </dt>
+
+      <dd>
+        Thuật toán băm được sử dụng để tạo ghim. Hiện tại, chỉ có
+        {@code "SHA-256"} được hỗ trợ.
+      </dd>
+    </dl>
+  </dd>
+</dl>
diff --git a/docs/html-intl/intl/vi/preview/features/tv-recording-api.jd b/docs/html-intl/intl/vi/preview/features/tv-recording-api.jd
new file mode 100644
index 0000000..be91c29
--- /dev/null
+++ b/docs/html-intl/intl/vi/preview/features/tv-recording-api.jd
@@ -0,0 +1,120 @@
+page.title=Ghi lại TV
+page.keywords=preview,sdk,tv,recording
+page.tags=androidn
+
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+  <h2>Trong tài liệu này</h2>
+  <ol>
+    <li><a href="#supporting">Chỉ báo Hỗ trợ ghi lại</a></li>
+    <li><a href="#recording">Ghi lại một chương trình</a></li>
+    <li><a href="#errors">Xử lý lỗi ghi lại</a></li>
+    <li><a href="#sessions">Quản lý các chương trình được ghi lại</a></li>
+    <li><a href="#best">Thực hành Tốt nhất</a></li>
+  </ol>
+</div>
+</div>
+
+<p>Các dịch vụ nguồn vào TV cho phép người dùng tạm dừng và tiếp tục phát lại kênh thông qua
+các API chuyển dịch thời gian. Android N mở rộng thêm chuyển dịch thời gian
+bằng cách cho phép người dùng lưu nhiều chương trình được ghi lại.</p>
+
+<p>Người dùng có thể tạo lịch ghi lại trước hoặc tiến hành ghi lại khi họ xem
+một chương trình. Khi hệ thống đã lưu bản ghi lại, người dùng có thể duyệt, quản lý
+và phát lại bản ghi đó bằng ứng dụng TV của hệ thống.</p>
+
+<p>Nếu bạn muốn cung cấp tính năng ghi lại cho dịch vụ nguồn vào TV,
+bạn phải báo cho hệ thống biết ứng dụng của bạn hỗ trợ ghi lại, triển khai
+khả năng ghi chương trình, xử lý và thông báo bất kỳ lỗi nào xuất hiện
+trong quá trình ghi lại và quản lý các chương trình được ghi lại.</p>
+
+<h2 id="supporting">Chỉ báo Hỗ trợ ghi lại</h2>
+
+<p>Để thông báo cho hệ thống biết dịch vụ nguồn vào TV của bạn hỗ trợ ghi lại, hãy thực hiện
+các bước sau:</p>
+
+<ol>
+<li>Trong phương thức <code>TvInputService.onCreate()</code> của bạn, hãy tạo một đối tượng
+<code>TvInputInfo</code> mới sử dụng lớp <code>TvInputInfo.Builder</code>
+.</li>
+<li>Khi tạo đối tượng <code>TvInputInfo</code> mới, hãy gọi
+<code>setCanRecord(true)</code> trước khi gọi <code>build()</code> để
+chỉ báo dịch vụ của bạn hỗ trợ ghi lại.</li>
+<li>Đăng ký đối tượng <code>TvInputInfo</code> với hệ thống bằng cách gọi
+<code>TvInputService.updateTvInputInfo()</code>.</li>
+</ol>
+
+<h2 id="recording">Ghi lại một chương trình</h2>
+
+<p>Sau khi dịch vụ nguồn vào TV của bạn đăng ký để hỗ trợ tính năng
+ghi lại, hệ thống sẽ gọi phương thức
+<code>TvInputService.onCreateRecordingSession()</code> của bạn khi cần truy cập
+phần triển khai ghi lại của ứng dụng. Triển khai lớp con
+<code>TvInputService.RecordingSession</code> của bạn và trả nó về
+khi hàm gọi lại <code>onCreateRecordingSession()</code>
+được gọi. Lớp con này chịu trách nhiệm chuyển sang dữ liệu kênh phù hợp,
+ghi lại dữ liệu được yêu cầu và thông báo trạng thái ghi lại và các lỗi cho
+hệ thống.</p>
+
+<p>Khi hệ thống gọi <code>RecordingSession.onTune()</code>, chuyển vào một
+URI của kênh, chỉnh vào kênh mà URI đó chỉ định. Thông báo cho hệ thống biết
+ứng dụng của bạn đã chỉnh vào kênh mong muốn bằng cách gọi <code>notifyTuned()</code>,
+hoặc nếu ứng dụng không thể chỉnh vào kênh phù hợp, hãy gọi
+<code>notifyError()</code>.</p>
+
+<p>Tiếp theo hệ thống sẽ gọi hàm gọi lại <code>RecordingSession.onStartRecording()</code>
+. Ứng dụng của bạn phải bắt đầu ghi lại ngay lập tức. Khi hệ thống gọi
+hàm gọi lại này, hệ thống có thể cung cấp một URI có chứa thông tin về chương trình
+sắp được ghi lại. Khi kết thúc việc ghi lại, bạn cần sao chép dữ liệu
+này vào bảng dữ liệu <code>RecordedPrograms</code>.</p>
+
+<p>Cuối cùng, hệ thống sẽ gọi <code>RecordingSession.onStopRecording()</code>.
+Lúc này, ứng dụng của bạn phải dừng ghi lại ngay lập tức. Bạn cũng cần
+tạo một mục nhập trong bảng <code>RecordedPrograms</code>. Mục này cần
+có URI dữ liệu của chương trình được ghi lại trong
+cột <code>RecordedPrograms.COLUMN_RECORDING_DATA_URI</code>, và bất kỳ thông tin
+về chương trình mà hệ thống đã cung cấp trong lần gọi đầu tiên tới
+<code>onStartRecording()</code>.</p>
+
+<p>Để biết thêm thông tin về cách truy cập bảng <code>RecordedPrograms</code>
+hãy xem <a href="#sessions">Quản lý các chương trình được ghi lại</a>.</p>
+
+<h2 id="errors">Xử lý lỗi ghi lại</h2>
+
+<p>Nếu xảy ra lỗi trong quá trình ghi lại, làm cho dữ liệu ghi lại không sử dụng được thì
+hãy thông báo cho hệ thống bằng cách gọi <code>RecordingSession.notifyError()</code>.
+Tương tự, bạn có thể gọi <code>notifyError()</code> sau khi một chương trình ghi lại
+được tạo để cho phép hệ thống biết được ứng dụng của bạn không còn tiếp tục ghi các chương trình.</p>
+
+<p>Nếu xảy ra lỗi trong quá trình ghi lại, nhưng có khả năng là một phần dữ liệu
+ghi lại có thể được sử dụng để người dùng phát lại thì hãy gọi
+<code>RecordingSession.notifyRecordingStopped()</code> để cho phép hệ thống
+sử dụng một phần chương trình đó.</p>
+
+<h2 id="sessions">Quản lý các chương trình được ghi lại</h2>
+
+<p>Hệ thống lưu giữ thông tin cho mọi chương trình được ghi lại từ tất cả
+các ứng dụng kênh truyền hình hỗ trợ ghi lại trong bảng trình cung cấp nội dung<code>TvContract.RecordedPrograms</code>
+. Có thể truy cập thông tin này qua URI nội dung
+<code>RecordedPrograms.Uri</code>. Hãy sử dụng các API trình cung cấp nội dung để
+đọc, thêm và xóa các mục trong bảng này.</p>
+
+<p>Để biết thêm thông tin về thao tác với dữ liệu trình cung cấp nội dung, hãy xem
+<a href="{@docRoot}guide/topics/providers/content-provider-basics.html">
+Nội dung Cơ bản về Trình cung cấp Nội dung</a>.</p>
+
+<h2 id="best">Thực hành Tốt nhất</h2>
+
+<p>Các thiết bị TV có thể có bộ nhớ lưu trữ hạn chế do đó phán đoán hợp lý nhất khi
+phân bổ bộ nhớ lưu trữ để lưu các chương trình được ghi lại. Sử dụng
+<code>RecordingCallback.onError(RECORDING_ERROR_INSUFFICIENT_SPACE)</code> khi
+không có đủ dung lượng trống để lưu một chương trình được ghi lại.</p>
+
+<p>Khi người dùng khởi tạo quá trình ghi lại, bạn cần tiến hành ghi lại dữ liệu nhanh nhất
+có thể. Để hỗ trợ công việc này, hãy hoàn thành tất cả các tác vụ tốn thời gian trước đó,
+như truy cập và phân bổ không gian lưu trữ khi hệ thống gọi hàm gọi lại
+<code>onCreateRecordingSession()</code>. Làm như vậy sẽ cho phép bạn tiến hành
+việc ghi lại ngay lập tức khi hàm gọi lại <code>onStartRecording()</code>
+được gọi.</p>
diff --git a/docs/html-intl/intl/vi/preview/index.jd b/docs/html-intl/intl/vi/preview/index.jd
new file mode 100644
index 0000000..25289e0
--- /dev/null
+++ b/docs/html-intl/intl/vi/preview/index.jd
@@ -0,0 +1,120 @@
+page.title=Android N Developer Preview
+page.tags="preview","developer"
+meta.tags="preview", "android"
+fullpage=true
+forcelocalnav=true
+header.hide=1
+footer.hide=1
+@jd:body
+
+<script>
+  $(document).ready(function() {
+    if (useUpdatedTemplates) {
+      $("#useUpdatedTemplates").css("display","block");
+    } else {
+      $("#useOldTemplates").css("display","block");
+    }
+  })
+</script>
+
+<section class="dac-expand dac-hero dac-light" style="background-color:#B2DFDB">
+  <div class="wrap" style="max-width:1100px;margin-top:0">
+    <div class="cols dac-hero-content" style="padding-bottom:1em;">
+
+      <div class="col-7of16 col-push-9of16" style="padding-left:2em">
+        <h1 class="dac-hero-title">Android N Developer Preview</h1>
+        <p class="dac-hero-description">
+          Hãy chuẩn bị sẵn sàng cho Android N!
+          <strong>Kiểm thử ứng dụng của bạn</strong> trên Nexus và các thiết bị khác. Hỗ trợ các hành vi
+          hệ thống mới nhằm <strong>tiết kiệm năng lượng và bộ nhớ</strong>.
+          Mở rộng ứng dụng của bạn bằng <strong>UI đa cửa sổ</strong>,
+          <strong>thông báo trả lời trực tiếp</strong> và nhiều tính năng khác.
+        </p>
+
+        <a href="http://factoryberlin.com" target="_new">
+          <span class="dac-sprite dac-auto-chevron"></span>
+          Bắt đầu
+        </a><!--<br>
+        <a class="dac-hero-cta" href="{@docRoot}preview/support.html">
+          <span class="dac-sprite dac-auto-chevron"></span>
+          Update to Android N (final SDK)
+        </a><br>-->
+      </div>
+      <div class="col-9of16 col-pull-7of16 dac-hero-figure" style="margin-top:1.5em;padding-right:1.5em;">
+        <img class="dac-hero-image" src="{@docRoot}images/home/n-preview-hero.png" srcset="{@docRoot}images/home/n-preview-hero.png 1x,
+             {@docRoot}images/home/n-preview-hero_2x.png 2x">
+      </div>
+    </div>
+    <div class="dac-section dac-small">
+      <div class="resource-widget resource-flow-layout col-16"
+           data-query="collection:preview/landing/resources"
+           data-cardSizes="6x2"
+           data-maxResults="6"></div>
+    </div>
+  </div>
+</section>
+
+<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="#build-apps">
+      <i class="dac-sprite dac-arrow-down-gray"></i>
+    </a>
+    <ul class="dac-actions">
+      <li class="dac-action">
+        <a href="http://factoryberlin.com" target="_new">
+          <i class="dac-action-sprite dac-sprite dac-auto-chevron-large"></i>
+          Báo cáo vấn đề
+        </a>
+      </li>
+      <li class="dac-action">
+        <a href="http://factoryberlin.com" target="_new">
+          <i class="dac-action-sprite dac-sprite dac-auto-chevron-large"></i>
+          Xem ghi chú phát hành
+        </a>
+      </li>
+      <li class="dac-action">
+        <a href="http://factoryberlin.com" target="_new">
+          <i class="dac-action-sprite dac-sprite dac-auto-chevron-large"></i>
+          Tham gia cộng đồng nhà phát triển
+        </a>
+      </li>
+    </ul>
+  </div><!-- end .wrap -->
+</div><!-- end .dac-actions -->
+
+<div id="useOldTemplates" style="display:none;color:black" class="actions-bar dac-expand dac-invert">
+  <div class="wrap dac-offset-parent">
+
+    <div class="actions">
+      <div><a href="http://factoryberlin.com" target="_new">
+        <span class="dac-sprite dac-auto-chevron-large"></span>
+        Báo cáo vấn đề
+      </a></div>
+      <div><a href="http://factoryberlin.com" target="_new">
+        <span class="dac-sprite dac-auto-chevron-large"></span>
+        Xem ghi chú phát hành
+      </a></div>
+      <div><a href="http://factoryberlin.com" target="_new">
+        <span class="dac-sprite dac-auto-chevron-large"></span>
+        Tham gia cộng đồng nhà phát triển
+      </a></div>
+    </div><!-- end .actions -->
+  </div><!-- end .wrap -->
+</div>
+
+<section class="dac-section dac-light"><div class="wrap">
+  <h1 class="dac-section-title">Tài nguyên</h1>
+  <div class="dac-section-subtitle">
+    Các thông tin cần thiết để trợ giúp bạn chuẩn bị cho ứng dụng sẵn sàng chạy trên Android N.
+  </div>
+
+  <div class="resource-widget resource-flow-layout col-16"
+       data-query="collection:preview/landing/more"
+       data-cardSizes="6x6"
+       data-items-per-page="6"
+       data-maxResults="15"
+       data-initial-results="6"></div>
+
+  </div>
+</section>
+
diff --git a/docs/html-intl/intl/vi/preview/j8-jack.jd b/docs/html-intl/intl/vi/preview/j8-jack.jd
new file mode 100644
index 0000000..8ab6c48
--- /dev/null
+++ b/docs/html-intl/intl/vi/preview/j8-jack.jd
@@ -0,0 +1,183 @@
+page.title=Tính năng của Ngôn ngữ Java 8
+page.keywords="android N", "Java 8", "Jack"
+@jd:body
+
+<div id="qv-wrapper">
+  <div id="qv">
+    <ol>
+      <li>
+        <a href="#supported-features">Các tính năng và API của Ngôn ngữ Java 8 được hỗ trợ</a>
+      </li>
+      <li>
+        <a href="#configuration">Kích hoạt các tính năng của Java 8 và Jack Toolchain</a>
+      </li>
+    </ol>
+  </div>
+</div>
+
+<p>Android N cung cấp hỗ trợ cho các tính năng của ngôn ngữ Java 8
+   mà bạn có thể sử dụng khi phát triển các ứng dụng nhắm mục tiêu Android N.
+  Trang này mô tả các tính năng ngôn ngữ mới được hỗ trợ trong Bản xem trước
+  Android N, cách thiết lập dự án đúng để sử dụng chúng và các vấn đề
+  đã biết mà bạn có thể gặp phải.
+</p>
+
+<p>Để bắt đầu sử dụng các tính năng này, bạn cần tải xuống và cài đặt Android
+Studio 2.1 (bản xem trước) và SDK của Bản xem trước Android N gồm có Jack toolchain
+cần thiết và Bổ trợ Android được cập nhật cho Gradle. Nếu bạn chưa
+cài đặt SDK Bản xem trước Android N, hãy xem <a href="{@docRoot}preview/setup-sdk.html">Thiết lập để Phát triển dành cho Android N</a>.</p>
+
+
+
+<p class="note">
+  <strong>Lưu ý:</strong> Sử dụng các tính năng mới của ngôn ngữ Java 8 không phải là một
+  yêu cầu để phát triển các ứng dụng nhắm mục tiêu nền tảng Android N. Nếu bạn
+   không muốn viết mã với các tính năng của ngôn ngữ Java 8 thì bạn có đặt các giá trị
+  mã nguồn và tương thích mục tiêu thành Java 7. Tuy nhiên, bạn vẫn
+  phải biên dịch với JDK 8 để dựng cho nền tảng Android N.
+</p>
+
+<h2 id="supported-features">
+  Các tính năng và API của Ngôn ngữ Java 8 được hỗ trợ
+</h2>
+
+<p>
+  Hiện thời, Android không hỗ trợ tất cả các tính năng của ngôn ngữ Java 8. Tuy nhiên,
+  các tính năng sau sẽ sử dụng được khi phát triển ứng dụng nhắm mục tiêu
+  Bản xem trước Android N:
+</p>
+
+<ul>
+  <li>
+    <a class="external-link" href="https://docs.oracle.com/javase/tutorial/java/IandI/defaultmethods.html">Các
+   phương thức giao diện mặc định và tĩnh</a>
+  </li>
+
+  <li>
+    <a class="external-link" href="https://docs.oracle.com/javase/tutorial/java/javaOO/lambdaexpressions.html">
+    Biểu thức Lambda</a>
+  </li>
+
+  <li>
+    <a class="external-link" href="https://docs.oracle.com/javase/tutorial/java/annotations/repeating.html">Chú giải
+    lặp lại</a>
+  </li>
+</ul>
+
+
+<p>
+  Ngoài ra, các API tính năng của ngôn ngữ Java 8 cũng được hỗ trợ:
+</p>
+
+<ul>
+  <li>Các API phản chiếu và liên quan đến ngôn ngữ:
+  </li>
+
+  <li style="list-style: none; display: inline">
+    <ul>
+      <li>{@code java.lang.FunctionalInterface}
+      </li>
+
+      <li>{@code java.lang.annotation.Repeatable}
+      </li>
+
+      <li>{@code java.lang.reflect.Method.isDefault()}
+      </li>
+
+      <li>và các API Phản chiếu liên quan tới các chú giải lặp lại, như
+{@code AnnotatedElement.getAnnotationsByType(Class)}
+      </li>
+    </ul>
+  </li>
+  <li>Các API tiện ích:
+  </li>
+
+  <li style="list-style: none; display: inline">
+    <ul>
+      <li>{@code java.util.function}
+      </li>
+    </ul>
+  </li>
+</ul>
+
+<p class="note">
+  <strong>Lưu ý:</strong> Android N kế thừa việc triển khai các
+   biểu thức lambda trên các lớp ẩn danh. Phương pháp này cho phép chúng
+  tương thích ngược và có thể chạy trên các phiên bản Android cũ hơn. Để kiểm thử
+  các biểu thức lambda trên các phiên bản cũ hơn, hãy nhớ vào tệp {@code
+  build.gradle} và đặt {@code compileSdkVersion} và {@code
+  targetSdkVersion} thành 23 hoặc thấp hơn.
+</p>
+
+<h2 id="configuration">
+  Kích hoạt các tính năng của Java 8 và Jack Toolchain
+</h2>
+
+<p>
+  Để sử dụng các tính năng mới của ngôn ngữ Java 8 bạn cũng cần sử dụng
+  <a class="external-link" href="https://source.android.com/source/jack.html">Jack toolchain</a> mới. Toolchain Android
+  mới sẽ biên dịch mã nguồn của ngôn ngữ Java sang mã bytecode
+   dex đọc được của Android, có định dạng thư viện {@code .jack}  riêng của nó và cung cấp hầu hết các tính năng
+   toolchain dưới dạng một phần của công cụ riêng lẻ: đóng gói lại, thu gọn, làm rối mã và
+  multidex.
+</p>
+
+<p>Sau đây là phần so sánh hai toolchain được sử dụng để dựng các tệp DEX Android:</p>
+<ul>
+  <li>Javac toolchain cũ:<br>
+  <b>javac</b> ({@code .java} --&gt; {@code .class}) --&gt; <b>dx</b> ({@code
+  .class} --&gt; {@code .dex})
+  </li>
+
+  <li>Jack toolchain mới:<br>
+  <b>Jack</b> ({@code .java} --&gt; {@code .jack} --&gt; {@code .dex})
+  </li>
+</ul>
+
+<h3>
+  Cấu hình Gradle
+</h3>
+
+<p>
+  Để kích hoạt các tính năng ngôn ngữ Java 8 và Jack cho dự án của bạn, hãy nhập
+   nội dung sau vào tệp {@code build.gradle} theo mô-đun:
+</p>
+
+<pre>
+android {
+  ...
+  defaultConfig {
+    ...
+    jackOptions {
+      enabled true
+    }
+  }
+  compileOptions {
+    sourceCompatibility JavaVersion.VERSION_1_8
+    targetCompatibility JavaVersion.VERSION_1_8
+  }
+}
+</pre>
+
+<h3>
+  Vấn đề đã biết
+</h3>
+
+<p>
+  Instant Run, được giới thiệu trong Android Studio 2.0 (Beta), hiện không hoạt động
+  với Jack và sẽ bị vô hiệu hóa khi sử dụng toolchain mới.
+</p>
+
+<p>Bởi vì Jack không tạo ra các tệp lớp trung gian khi biên dịch một
+ứng dụng, các công cụ phụ thuộc vào những tệp này hiện thời không hoạt động với Jack. Một số
+ví dụ về các công cụ này là:</p>
+
+<ul>
+  <li>Bộ dò Lint hoạt động trên các tệp lớp
+  </li>
+
+  <li>Các công cụ và thư viện đòi hỏi các tệp lớp của ứng dụng (như JaCoCo
+  và Mockito)</li>
+</ul>
+
+<p><a href="http://tools.android.com/filing-bugs">Vui lòng thông báo lỗi</a> nếu bạn phát hiện các vấn đề khác khi sử dụng Jack.</p>
\ No newline at end of file
diff --git a/docs/html-intl/intl/vi/preview/overview.jd b/docs/html-intl/intl/vi/preview/overview.jd
new file mode 100644
index 0000000..0df55e3
--- /dev/null
+++ b/docs/html-intl/intl/vi/preview/overview.jd
@@ -0,0 +1,440 @@
+page.title=Tổng quan về Chương trình
+page.metaDescription=Hãy chuẩn bị ứng dụng sẵn sàng cho phiên bản Android tiếp theo.
+page.image=images/cards/card-n-overview_2x.png
+meta.tags="preview", "developer", "android"
+page.tags="preview", "developer", "android"
+
+@jd:body
+<!--
+<div class="cols" style=
+"background-color:#f2daf5; padding: 5px 0;margin-bottom:1em; text-align:center;">
+<h3>
+    Developer Preview 3 is now available
+  </h3>
+  <p>Includes final SDK and near-final system images</p>
+   <div style="margin:auto 1em">
+ <ul class="dac-section-links">
+    <li class="dac-section-link">
+      <a href="{@docRoot}preview/support.html#preview3-notes">
+      <span class="dac-sprite dac-auto-chevron"></span>
+      Read the Notes</a>
+    </li>
+
+    <li class="dac-section-link">
+      <a href="{@docRoot}preview/support.html#preview3-get">
+      <span class="dac-sprite dac-auto-chevron"></span>
+      Get the Update</a>
+    </li>
+
+    <li class="dac-section-link">
+      <a href="https://code.google.com/p/android-developer-preview/">
+      <span class="dac-sprite dac-auto-chevron"></span>
+      Report Issues</a>
+    </li>
+  </ul>
+  </div>
+</div>
+-->
+
+<p>
+  Chào mừng bạn đến với <strong>Android N Developer Preview</strong>, một chương trình
+  cung cấp cho bạn mọi thứ cần thiết để kiểm thử và tối ưu hóa các ứng dụng cho phiên bản
+  Android tiếp theo. Đây là chương trình miễn phí và bạn có thể bắt đầu ngay bằng cách
+  tải xuống các công cụ của N Developer Preview.
+</p>
+
+
+
+
+
+
+
+<div style="background-color:#eceff1;padding:1em;">
+<div class="wrap">
+  <div class="cols">
+    <div class="col-4of12">
+      <h5>
+        Thiết bị phần cứng và ảnh của bộ giả lập
+      </h5>
+
+      <p>
+        Chạy và kiểm thử ứng dụng của bạn trên một loạt các thiết bị hoặc trên bộ giả lập.
+
+      </p>
+    </div>
+
+    <div class="col-4of12">
+      <h5>
+        Mã nền tảng mới nhất
+      </h5>
+
+      <p>
+        Chúng tôi sẽ cung cấp các bản cập nhật hàng tháng trong thời gian của Preview vì vậy bạn sẽ được kiểm tra các thay đổi nền tảng mới nhất.
+      </p>
+    </div>
+
+    <div class="col-4of12">
+      <h5>
+        Ưu tiên các vấn đề của nhà phát triển
+      </h5>
+
+      <p>
+        Trong một vài tuần đầu, chúng tôi sẽ dành ưu tiên cho các vấn đề
+        được nhà phát triển báo cáo, vì vậy hãy kiểm thử và gửi phản hồi sớm nhất có thể.
+      </p>
+    </div>
+
+  </div>
+
+  <div class="cols">
+
+
+    <div class="col-4of12">
+      <h5>
+        Các hành vi và khả năng mới
+      </h5>
+
+      <p>
+        Tiến hành công việc sớm để hỗ trợ các hành vi mới của nền tảng và phát triển với các tính năng mới.
+      </p>
+    </div>
+
+    <div class="col-4of12">
+        <h5>
+        Cập nhật qua OTA
+      </h5>
+
+      <p>
+        Các bản cập nhật liền mạch qua sóng vô tuyến cho bất kỳ thiết bị nào được hỗ trợ thông qua
+        Chương trình Android Beta. Không cần phải flash.
+      </p>
+    </div>
+
+    <div class="col-4of12">
+      <h5>
+        Phản hồi và hỗ trợ
+      </h5>
+
+      <p>
+        Báo cáo các vấn đề và gửi phản hồi về cho chúng tôi thông qua
+        <a href="{@docRoot}preview/bug">bộ theo dõi vấn đề</a> của chúng tôi. Kết nối với các nhà phát triển
+        khác trong
+        <a href="{@docRoot}preview/dev-community">Cộng đồng Nhà phát triển&nbsp;N</a>.
+      </p>
+    </div>
+  </div>
+</div>
+</div>
+
+<!--
+<p>New in the Android N Developer Preview: </p>
+
+<ul>
+  <li> Accompanying Android Beta Program for consumers, starting later in the preview</li>
+  <li> More supported devices, including devices from OEM partners</li>
+  <li> Seamless OTAs for your devices, from initial release to final N release without flashing</li>
+</ul>
+-->
+
+<h2 id="timeline">Tiến trình thời gian và các bản cập nhật</h2>
+<img src="{@docRoot}images/n-preview-updates_2x.png">
+
+<p>
+  N Developer Preview sẽ kéo dài từ 9 tháng 3 năm 2016 đến khi phát hành công chúng
+  bản Android N cuối cùng cho AOSP và OEM, dự kiến trong Q3 2016.
+</p>
+
+<p>
+  Tại các mốc phát triển chính chúng tôi sẽ cung cấp các bản cập nhật cho môi trường phát triển và
+  kiểm thử của bạn. Nói chung, bạn có thể nhận một bản cập nhật hàng tháng (khoảng cách
+  4 đến 6 tuần). Các mốc được liệt kê dưới đây.
+</p>
+
+<ul>
+  <li><strong><a href="{@docRoot}preview/support.html">Preview 1</a></strong> (phát hành lần đầu, alpha)</li>
+  <li><strong>Preview 2</strong> (bản cập nhật tăng dần, beta)</li>
+  <li><strong>Preview 3</strong> (bản cập nhật tăng dần, beta)</li>
+  <li><strong>Preview 4</strong> (các API cuối cùng và SDK chính thức, phát hành Play)</li>
+  <li><strong>Preview 5</strong> (các ảnh hệ thống gần hoàn thiện để kiểm thử cuối cùng)</li>
+  <li><strong>Phát hành bản cuối</strong> cho AOSP và hệ sinh thái</li>
+</ul>
+
+<p>
+  Mỗi bản cập nhật sẽ có các công cụ SDK, ảnh hệ thống xem trước, bộ giả lập, tài liệu
+  tham khảo và những khác biệt về API.
+</p>
+
+<p>
+  <strong>Ba phiên bản Preview đầu tiên</strong> sẽ cung cấp một <strong>môi trường
+  kiểm thử và phát triển sớm</strong> để giúp bạn xác định
+  các vấn đề tương thích trong ứng dụng hiện tại và lập kế hoạch di chuyển hoặc trang bị hoạt động
+   cần thiết để nhắm tới nền tảng mới. Đây là giai đoạn ưu tiên để bạn
+  gửi phản hồi cho chúng tôi về các tính năng, khả năng tương thích của API và tệp
+  &mdash; đối với mọi vấn đề đó, vui lòng sử dụng <a href="{@docRoot}preview/bug">bộ theo dõi
+  vấn đề</a>. Sẽ có một số thay đổi với API giữa các bản cập nhật này.
+</p>
+
+<p>
+  Tại <strong>Preview 4 và 5</strong> bạn sẽ được sử dụng <strong>các   
+API và SDK N cuối cùng</strong> để phát triển, và cả các ảnh hệ thống gần hoàn thiện
+  để kiểm thử các hành vi, tính năng của hệ thống. Android N sẽ cung cấp một mức
+  API chuẩn vào thời điểm này. Bạn có thể tiến hành kiểm thử khả năng tương thích cuối cùng đối với các ứng dụng
+  cũ và tinh chỉnh mã nguồn mới có sử dụng các API hoặc tính năng mới của N.
+</p>
+
+<p>
+  Ngoài ra, bắt đầu từ Preview 4 bạn có thể <strong>phát hành ứng dụng lên
+  các thiết bị</strong> chạy Android N ở cấp API chính thức, chẳng hạn như
+  thiết bị người dùng được chọn cho chương trình Android Beta. Bạn có thể
+  phát hành ứng dụng lên kênh alpha và beta của Google Play trước do đó bạn có thể kiểm thử
+  ứng dụng của mình với người dùng Android Beta trước khi phân phối rộng rãi trên
+  cửa hàng.
+</p>
+
+<p>
+  Khi bạn kiểm thử và phát triển trên Android N, chúng tôi khuyến cáo bạn <strong>duy trì
+  môi trường phát triển được cập nhật</strong> khi các cập nhật Preview được
+  phát hành. Để giúp cho quá trình này thuận tiện hơn, bạn có thể đăng ký các thiết bị kiểm thử của mình vào
+  chương trình Android Beta và lấy <strong>các bản cập nhật qua sóng vô tuyến (OTA)</strong> tại
+  mỗi mốc. Ngoài ra, các ảnh xem trước cũng có sẵn để bạn
+  tải xuống và flash thủ công.
+</p>
+
+<p>
+  Chúng tôi sẽ thông báo cho bạn khi các cập nhật Preview xuất hiện thông qua <a href="http://android-developers.blogspot.com/">Blog Nhà phát triển Android</a>, cũng
+  như thông qua trang này và <a href="{@docRoot}preview/dev-community">Cộng đồng
+  Nhà phát triển Android N</a>.
+</p>
+
+
+<h2 id="preview_tools">Có gì trong N Developer Preview?</h2>
+
+<p>
+  N Developer Preview có tất cả mọi thứ bạn cần để kiểm thử ứng dụng
+  sẵn có của bạn trên nhiều loại kích cỡ màn hình, công nghệ mạng, chipset CPU/GPU
+  và kiến trúc phần cứng.
+</p>
+
+<h3 id="sdk_tools">Bộ công cụ SDK</h3>
+
+<p>Bạn có thể tải xuống các thành phần này thông qua Trình quản lý SDK trong <a href="{@docRoot}sdk/installing/adding-packages.html">Android Studio</a>:</p>
+
+<ul>
+  <li> N Developer Preview <strong>SDK và công cụ</strong>
+  <li> <strong>Ảnh hệ thống cho bộ giả lập</strong> (32-bit và 64-bit) của N Developer Preview
+  <li> <strong>Ảnh hệ thống cho bộ giả lập cho Android TV</strong> (32-bit) của N Developer Preview
+  <li> Các thư viện hỗ trợ của N Developer Preview (dành cho các mẫu ứng dụng mới)
+</ul>
+
+<p>
+  Chúng tôi sẽ cung cấp các bản cập nhật cho các công cụ phát triển này theo từng mốc khi cần thiết.
+</p>
+
+<h3 id="hardware_system_images">Ảnh hệ thống cho phần cứng</h3>
+
+<p>
+  N Developer Preview bao gồm các ảnh hệ thống cho Nexus và phần cứng khác mà bạn có thể sử dụng khi
+  kiểm thử và phát triển trên các thiết bị vật lý. Hãy xem trang <a href="{@docRoot}preview/download.html">Ảnh cho Thiết bị</a> để có danh sách đầy đủ
+  các ảnh cho phần cứng.
+</p>
+
+<p>
+  Chúng tôi sẽ cung cấp các ảnh hệ thống cập nhật cho những thiết bị này tại mỗi mốc. Bạn
+  có thể tải xuống và flash các ảnh hệ thống cập nhật vào các thiết bị kiểm thử
+  một cách thủ công nhiều lần theo nhu cầu. Điều này đặc biệt hữu ích đối với các môi trường
+  kiểm thử tự động, trong đó bạn có thể cần flash lại thiết bị nhiều
+  lần.
+</p>
+
+<p class="note"><strong>Lưu ý</strong>:
+  <strong>Các thiết bị được flash thủ công sẽ không nhận các bản cập nhật qua OTA</strong> giống như trong
+  preview của năm ngoái.  Năm nay bạn có thể nhận qua OTA bằng cách đăng ký các thiết bị trong
+  Chương trình Android Beta &mdash; hãy xem chi tiết trong phần tiếp theo.
+</p>
+
+<h3 id="android_beta">Các bản cập nhật OTA thông qua Chương trình Android Beta</h3>
+
+<p>
+  Tính năng mới cho Android N là một chương trình cập nhật qua sóng vô tuyến (OTA) sẽ tự động
+  phát hành các cập nhật Preview mới nhất của Android N trực tiếp tới thiết bị đã đăng ký
+   trong chương trình. Đây là chương trình miễn phí và mở đối với bất cứ ai có một
+  thiết bị được hỗ trợ đã đăng ký với tài khoản Google của họ.
+</p>
+
+<p>
+  Để đăng ký vào chương trình, hãy truy cập trang <a href="https://g.co/androidbeta">Chương trình
+  Android Beta</a>. Bạn sẽ thấy
+   tất cả các thiết bị đã đăng ký với tài khoản của bạn có đủ điều kiện để đăng ký
+  Android Beta.
+</p>
+
+<ol>
+  <li> Hãy chọn các thiết bị bạn muốn nhận bản cập nhật Android N
+  <li> Nhấp vào Đăng ký, đọc và đồng ý với các điều khoản dịch vụ và sau đó nhấp OK
+</ol>
+
+<p>
+  Một khi đã đăng ký, thiết bị của bạn sẽ sớm nhận được một bản cập nhật. Trong hầu hết trường hợp,
+  bạn sẽ không cần thực hiện thiết lập lại toàn bộ dữ liệu để chuyển sang Android N. Tuy nhiên,
+  chúng tôi khuyến cáo bạn sao lưu bất kỳ dữ liệu nào bạn không muốn bị mất trước khi
+   đăng ký thiết bị.
+</p>
+
+<p>
+  Khi các bản cập nhật được phát hành tới thiết bị của bạn, chúng tôi khuyến cáo bạn tải xuống và
+  cài đặt sớm nhất có thể. Bạn sẽ muốn cập nhật các
+  thay đổi mới nhất về UI, hành vi, API và các tính năng của hệ thống.
+</p>
+
+<p>
+  Khi kết thúc Developer Preview, các thiết bị đăng ký của bạn sẽ
+   nhận một bản cập nhật của bản phát hành Android N chính thức.
+</p>
+
+<p>
+  Bạn có thể hủy đăng ký các thiết bị của mình trong chương trình Android Beta bất kỳ lúc nào thông qua
+   trang Android Beta. Trước khi hủy đăng ký, hãy chắc chắn sao lưu dự phòng dữ liệu của bạn trên
+   thiết bị đó.
+</p>
+
+  <p class="note"><strong>Lưu ý</strong>:
+  Khi bạn hủy đăng ký, <strong>thiết bị của bạn sẽ được khôi phục cài đặt gốc</strong>
+  về phiên bản mới nhất
+  của Android 6.0 Marshmallow (không nhất thiết là phiên bản bạn từng
+  được cài đặt trước khi đăng ký thiết bị).  Để đảm bảo cài đặt mới hoàn toàn,
+   dữ liệu của bạn sẽ bị xóa khỏi thiết bị, bao gồm danh bạ, tin nhắn,
+  ảnh, v.v...
+</p>
+
+<h3 id="documentation_and_sample_code">Tài liệu và mã mẫu</h3>
+
+<p>
+  Các nguồn tài liệu này có trên trang Developer Preview để
+  trợ giúp bạn tìm hiểu về Android&nbsp;N:
+</p>
+
+<ul>
+  <li> <a href="{@docRoot}preview/setup-sdk.html">Thiết lập để Phát triển dành cho
+Android N</a> có
+  các hướng dẫn từng bước để bắt đầu.</li>
+  <li> <a href="{@docRoot}preview/behavior-changes.html">Các thay đổi
+  Hành vi</a> chỉ ra cho bạn các phần chính yếu để kiểm thử.</li>
+  <li> Tổng quan về các API mới, bao gồm một phần <a href="{@docRoot}preview/api-overview.html">Tổng quan về API</a>, bản tải xuống được
+  <a href="{@docRoot}preview/setup-sdk.html#docs-dl">Tham khảo
+ API</a> và các hướng dẫn chi tiết cho nhà phát triển đối với các tính năng quan trọng như 
+  hỗ trợ đa cửa sổ, thông báo gộp, hỗ trợ đa bản địa và các tính năng khác.
+  <li> <a href="{@docRoot}preview/samples.html">Mã mẫu</a> trong đó
+  minh họa cách hỗ trợ các quyền và tính năng mới.
+  <li> <a href="{@docRoot}preview/support.html#release-notes">Ghi chú phát hành</a>
+  cho phiên bản hiện hành của N Developer Preview, bao gồm các ghi chú về thay đổi và
+  các báo cáo về sự khác biệt.
+</ul>
+
+<h4 id="reference">Tham khảo API có thể tải xuống</h4>
+
+<p>
+  Trong các cập nhật preview có sớm bạn có thể tải xuống
+  <a href="{@docRoot}preview/setup-sdk.html#docs-dl">Tham khảo API
+  mới nhất cho nền tảng Android N</a> dưới dạng tệp lưu trữ zip riêng biệt. Bản tải xuống
+  tham khảo này cũng có một báo cáo về các khác biệt để giúp bạn nhận biết các thay đổi API từ
+   API 23 và bản cập nhật trước đó.
+</p>
+
+<p>
+  Khi các API Android N hoàn thiện và được chỉ định một mức API chính thức,
+   chúng tôi sẽ cung cấp tham khảo API cho bạn trực tuyến tại <a href="https://developer.android.com">https://developer.android.com</a>.
+</p>
+
+<h3 id="support_resources">
+  Tài nguyên Hỗ trợ
+</h3>
+
+<p>
+  Khi bạn kiểm thử và phát triển trên N Developer Preview, xin vui lòng sử dụng các kênh sau
+  để thông báo các vấn đề và gửi phản hồi.
+</p>
+
+<ul>
+  <li> <a href="https://code.google.com/p/android-developer-preview/">Bộ theo dõi Vấn đề N Developer Preview
+  </a> là <strong>kênh phản hồi chính</strong> của bạn. Bạn có thể thông báo lỗi, các vấn đề về
+  hiệu năng và phản hồi chung thông qua bộ theo dõi vấn đề. Bạn cũng có thể kiểm tra
+<a href="{@docRoot}preview/bug">các vấn đề đã biết</a> và
+   tìm các bước khắc phục. Chúng tôi sẽ cập nhật thông tin cho bạn về vấn đề của bạn khi nó đã được phân loại và gửi tới
+   nhóm kỹ thuật Android xem xét. </li>
+  <li> <a href="{@docRoot}preview/dev-community">Cộng đồng Nhà phát triển Android N</a> là
+   một cộng đồng Google+ nơi bạn có thể <strong>kết nối với các nhà phát triển khác</strong> đang thử nghiệm
+   Android N. Bạn có thể chia sẻ các phát hiện hoặc ý tưởng hoặc tìm câu trả lời cho các
+    thắc mắc về Android N. Chúng tôi sẽ điều hành cộng đồng này và cung cấp các câu trả lời và
+    hướng dẫn khi cần thiết.</li>
+</ul>
+
+<h3 id="targeting">Nhắm mục tiêu, API xem trước và phát hành</h3>
+
+<p>
+  N Developer Preview sẽ cung cấp một hệ thống và thư viện
+   Android chỉ dành cho phát triển mà <strong>không có mức API tiêu chuẩn</strong>. Nếu bạn muốn
+  bỏ các hành vi về khả năng tương thích để kiểm thử ứng dụng của mình (đặc biệt
+  khuyến cáo), bạn có thể nhắm mục tiêu phiên bản xem trước của Android N bằng cách thiết lập
+  <code><a href=
+  "{@docRoot}preview/setup-sdk.html#create-update">targetSdkVersion</a></code>
+ của ứng dụng thành <code>“N”</code>.
+</p>
+
+<p>
+  Android N Developer Preview cung cấp các <strong>API xem trước</strong>
+  &mdash; các API này không phải bản chính thức cho đến khi SDK cuối cùng được phát hành,
+  hiện được dự kiến phát hành vào quý ba năm 2016. Điều này có nghĩa là có thể
+  <strong>có các thay đổi API nhỏ</strong> sau này, đặc biệt trong
+   các tuần đầu của chương trình. Chúng tôi sẽ cung cấp bản tóm tắt các thay đổi cho bạn theo
+   mỗi bản cập nhật của Android N Developer Preview.
+</p>
+
+<p class="note">
+  <strong>Lưu ý</strong>: Mặc dù các API xem trước có thể thay đổi nhưng
+  các hành vi hệ thống cơ bản vẫn ổn định và sẵn sàng để kiểm thử
+  ngay.
+</p>
+
+<p>
+  Google Play <strong>không cho phép phát hành các ứng dụng nhắm mục tiêu tới N Developer
+  Preview</strong>. Khi có bản SDK cuối cùng của Android N bạn sẽ có thể
+   nhắm mục tiêu mức API Android N chính thức và phát hành ứng dụng của mình lên Google
+  Play thông qua các kênh phát hành alpha và beta. Trong thời gian này, nếu bạn muốn
+   phân phối một ứng dụng nhắm mục tiêu Android N cho người kiểm thử thì bạn có thể thực hiện phân phối qua email hoặc
+  bằng cách tải trực tiếp trên trang web của bạn.
+</p>
+
+<p>
+  Khi Android N được phát hành hoàn chỉnh cho AOSP và OEM, dự kiến vào Q3 2016,
+  bạn có thể phát hành ứng dụng của mình nhắm mục tiêu Android N lên kênh
+  phát hành công chúng trong Google Play.
+</p>
+
+
+<h2 id="how_to_get_started">Cách thức bắt đầu</h2>
+
+<p>
+  Để bắt đầu kiểm thử ứng dụng của bạn với Android N:
+</p>
+
+<ol>
+  <li> Xem lại <a href="{@docRoot}preview/api-overview.html">Tổng quan về API</a>
+  và <a href="{@docRoot}preview/behavior-changes.html">Các thay đổi Hành vi</a> để
+  biết được có những gì mới và nó sẽ tác động đến ứng dụng của bạn như thế nào. Đặc biệt,
+  hãy tìm hiểu về các tính năng <a href="{@docRoot}preview/features/notification-updates.html">thông báo</a> mới và
+  <a href="{@docRoot}preview/features/multi-window.html">hỗ trợ đa cửa sổ</a>.</li>
+  <li> Thiết lập môi trường của bạn bằng cách làm theo các hướng dẫn để <a href="{@docRoot}preview/setup-sdk.html">Preview SDK</a>
+  và cấu hình các thiết bị kiểm thử.</li>
+  <li> Làm theo <a href="https://developers.google.com/android/nexus/images">các hướng dẫn
+  flash</a> để flash ảnh hệ thống Android N mới nhất cho thiết bị của bạn. </li>
+  <li> Xem lại <a href="{@docRoot}preview/setup-sdk.html#docs-dl">Tham khảo API</a>
+ và <a href="{@docRoot}preview/samples.html">các ví dụ về Android N</a> để hiểu
+  sâu hơn về các tính năng API mới cũng như cách sử dụng chúng trong ứng dụng của bạn.
+  <li> Tham gia <a href="{@docRoot}preview/dev-community">Cộng đồng
+  Nhà phát triển Android N</a> để nhận được thông tin mới nhất và kết nối với các
+  nhà phát triển khác đang thử nghiệm với nền tảng mới.</li>
+</ol>
+
+<p>
+  Cảm ơn bạn đã tham gia chương trình Android N Developer Preview!
+</p>
diff --git a/docs/html-intl/intl/vi/preview/samples.jd b/docs/html-intl/intl/vi/preview/samples.jd
new file mode 100644
index 0000000..aa1a8c6
--- /dev/null
+++ b/docs/html-intl/intl/vi/preview/samples.jd
@@ -0,0 +1,85 @@
+page.title=Samples
+page.tags="preview", "samples", "android"
+page.image=images/cards/card-n-samples_2x.png
+@jd:body
+
+<p>
+  Các mã mẫu sau được dành cho Android N. Để
+  tải xuống mã mẫu cho Android Studio, hãy chọn tùy chọn trong menu <b>File &gt; Import
+  Samples</b>.
+</p>
+
+<p class="note">
+  <strong>Chú ý:</strong>Các dự án có thể tải xuống này được thiết kế
+   để sử dụng với Gradle và Android Studio.
+</p>
+
+
+<h3 id="mw">Dùng thử đa cửa sổ</h3>
+<img src="{@docRoot}preview/images/sample-multiwindow.png" style="float: left; padding-right: 0.5em" height="250" width="156" />
+<p>
+  Ví dụ này minh họa cách tận dụng giao diện người dùng
+  đa cửa sổ với ứng dụng của bạn.
+</p>
+<p>
+  <a href="https://github.com/googlesamples/android-MultiWindowPlayground">
+  Tải mã trên GitHub</a>
+</p>
+
+<div style="clear: both;"></div>
+<h3 id="an">Thông báo đang Hoạt động</h3>
+<img src="{@docRoot}preview/images/sample-activenotifications.png" style="float: left; padding-right: 0.5em" height="250" width="141" />
+<p>
+  Đây là ví dụ đã có sẵn, minh họa một dịch vụ đơn giản để gửi
+  thông báo bằng cách sử dụng NotificationCompat. Mỗi cuộc hội thoại chưa đọc từ một người dùng
+  sẽ được gửi dưới dạng một thông báo riêng.
+</p>
+<p>
+  Ví dụ này đã được cập nhật để tận dụng các tính năng thông báo mới
+  có trong Android N.
+</p>
+<p>
+  <a href="https://github.com/googlesamples/android-ActiveNotifications">
+  Tải mã trên GitHub</a>
+</p>
+
+<div style="clear: both;"></div>
+<h3 id="ms">Dịch vụ Nhắn tin</h3>
+<img src="{@docRoot}preview/images/sample-messagingservice.png" style="float: left; padding-right: 0.5em" height="250" width="150" />
+<p>
+  Đây là một ví dụ đã có sẵn, minh họa cách sử dụng
+  NotificationManager để cho biết có bao nhiêu thông báo một ứng dụng hiện
+  đang hiển thị.
+</p>
+<p>
+  Ví dụ này đã được cập nhật để tận dụng các tính năng thông báo mới
+  có trong Android N.
+</p>
+<p>
+  <a href="https://github.com/googlesamples/android-MessagingService">
+  Tải mã trên GitHub</a>
+</p>
+
+<div style="clear: both;"></div>
+<h3 id="fbe">Khởi động Trực tiếp</h3>
+<img src="{@docRoot}preview/images/sample-directboot.png" style="float: left; padding-right: 0.5em" height="250" width="141" />
+<p>
+  Ví dụ này minh họa cách lưu trữ và truy cập dữ liệu trên bộ lưu trữ
+  mã hóa thiết bị, luôn khả dụng khi thiết bị được khởi động.
+</p>
+<p>
+  <a href="https://github.com/googlesamples/android-DirectBoot">
+  Tải mã trên GitHub</a>
+</p>
+
+<div style="clear: both;"></div>
+<h3 id="sda">Truy cập Thư mục theo Phạm vi</h3>
+<img src="{@docRoot}preview/images/sample-scopeddirectoryaccess.png" style="float: left; padding-right: 0.5em" height="250" width="141" />
+<p>
+  Ví dụ này minh họa cách đọc và ghi dữ liệu từ các thư mục
+  cụ thể trong khi cần ít quyền hơn.
+</p>
+<p>
+  <a href="https://github.com/googlesamples/android-ScopedDirectoryAccess">
+  Tải mã trên GitHub</a>
+</p>
\ No newline at end of file
diff --git a/docs/html-intl/intl/vi/preview/setup-sdk.jd b/docs/html-intl/intl/vi/preview/setup-sdk.jd
new file mode 100644
index 0000000..fca5331
--- /dev/null
+++ b/docs/html-intl/intl/vi/preview/setup-sdk.jd
@@ -0,0 +1,226 @@
+page.title=Thiết lập Preview
+meta.keywords="preview", "android"
+page.tags="preview", "developer preview"
+page.image=images/cards/card-n-sdk_2x.png
+
+@jd:body
+
+
+<div id="qv-wrapper">
+  <div id="qv">
+<ol>
+  <li><a href="#get-as13">Tải Android Studio 2.1</a></li>
+  <li><a href="#get-sdk">Tải SDK Android N</a>
+    <ol>
+      <li><a href="#docs-dl">Tài liệu tham khảo</a>
+    </ol>
+  </li>
+  <li><a href="#java8">Tải JDK và JRE của Java 8</a></li>
+  <li><a href="#create-update">Cập nhật hoặc Tạo một dự án</a></li>
+  <li><a href="#next">Các bước tiếp theo</a></li>
+</ol>
+  </div>
+</div>
+
+<p>Để phát triển các ứng dụng cho Android N Preview bạn cần thực hiện một số cập nhật
+đối với môi trường phát triển của mình như mô tả trên trang này.</p>
+
+<p>Để đơn thuần thử khả năng tương thích của ứng dụng trên
+ảnh hệ thống Android N, hãy làm theo hướng dẫn <a href="{@docRoot}preview/download.html">Kiểm thử trên một Thiết bị Android N</a>.</p>
+
+<img src="{@docRoot}preview/images/n-preview-setup.png" width="700" alt="" />
+
+
+<h2 id="get-as13">Tải Android Studio 2.1 (bản xem trước)</h2>
+
+<p>Nền tảng Android N bổ sung hỗ trợ cho <a href="{@docRoot}preview/j8-jack.html">các tính năng của ngôn ngữ Java 8</a>,
+yêu cầu phải có một trình biên dịch mới có tên là Jack. Phiên bản Jack mới nhất
+hiện chỉ được hỗ trợ trong Android Studio 2.1. Do đó, nếu bạn muốn
+sử dụng các tính năng của ngôn ngữ Java 8 thì bạn cần sử dụng Android Studio 2.1 để
+dựng ứng dụng. Nếu không, bạn không cần sử dụng trình biên dịch Jack nhưng bạn
+vẫn cần cập nhật lên JDK 8 để biên dịch cho nền tảng Android N,
+như mô tả dưới đây.
+</p>
+
+<iframe width="400" height="225" src="//www.youtube.com/embed/SBbWGxXCMqQ?autohide=1&amp;showinfo=0" frameborder="0" allowfullscreen="" style="float: right; margin: 0 0 20px 20px;"></iframe>
+
+<p>Android Studio 2.1 hiện đang có dưới dạng bản xem trước trong kênh
+phát hành Canary. Nếu bạn đã
+có Android Studio và không muốn cập nhật lên kênh canary thì bạn có thể
+tải xuống Android Studio 2.1 dưới dạng bản cài đặt riêng và sử dụng
+để phát triển với Android N để không làm ảnh hưởng đến môi trường Android Studio
+chính của bạn.</p>
+
+<p>Để tải xuống Android Studio 2.1 dưới dạng bản cài đặt riêng, hãy thực hiện
+các bước sau (hoặc nếu bạn muốn nhận Android Studio 2.1 dưới dạng bản cập nhật cho
+bản cài đặt có sẵn thì hãy chuyển đến bước 4):</p>
+
+<ol>
+  <li>Chỉnh sửa tên của
+   bản cài đặt Android Studio có sẵn và thêm số phiên bản. Làm như vậy
+  để khi bạn cài đặt, phiên bản mới sẽ không ghi đè lên phiên bản có sẵn.</li>
+  <li>Tải xuống tệp ZIP phù hợp cho hệ điều hành của bạn từ
+    <a href="http://tools.android.com/download/studio/canary/latest">trang tải xuống của kênh canary</a>.
+  </li>
+  <li>Giải nén gói đó và chuyển các thành phần của Android Studio 2.1 tới
+   vị trí phù hợp cho các ứng dụng của bạn trên hệ thống rồi khởi chạy nó.</li>
+  <li>Mở hộp thoại Settings
+    (<strong>File &gt; Settings</strong> trên Windows/Linux, hoặc
+    <strong>Android Studio &gt; Preferences</strong> trên Mac). Trong khung
+    bên trái, chọn<strong>Appearance &amp; Behavior &gt; System Settings &gt;
+    Updates</strong>.
+  </li>
+  <li>Trên khung Updates, chọn hộp kiểm <strong>Automatically
+    check updates for</strong> và chọn
+    <strong>Canary Channel</strong> từ danh sách thả xuống.
+  </li>
+</ol>
+
+<p>Hãy để cửa sổ cài đặt này mở cho bước tiếp theo.</p>
+
+
+<h2 id="get-sdk">Tải N Preview SDK</h2>
+
+<p>Để bắt đầu phát triển với các API Android N, bạn cần cài đặt
+ Android N Preview SDK trong Android Studio như sau:</p>
+
+<ol>
+  <li>Vẫn tại khung Updates (bước 4 bên trên),
+  hãy chọn hộp kiểm <strong>Automatically
+    check updates for Android SDK</strong> và chọn
+    <strong>Preview Channel</strong> từ danh sách thả xuống.
+  </li>
+  <li>Nhấp vào <strong>Check Now</strong>.</li>
+
+  <li>Trong khung bên trái, chọn <strong>Appearance &amp; Behavior &gt;
+  System Settings &gt; Android SDK</strong>.
+
+  <li>Nhấp vào tab <strong>SDK Platforms</strong>, rồi chọn hộp kiểm
+  <strong>Android N Preview</strong>.</li>
+
+  <li>Nhấp vào tab <strong>SDK Tools</strong>, rồi chọn
+    <strong>Android SDK Build Tools</strong>, <strong>Android SDK
+    Platform-Tools</strong>, và các hộp kiểm <strong>Android SDK Tools</strong> 
+.
+  </li>
+
+  <li>Nhấp vào <strong>OK</strong>, sau đó đồng ý với các thỏa thuận
+    cấp phép cho các gói cần được cài đặt.
+  </li>
+</ol>
+
+<h3 id="docs-dl">Tải tài liệu tham khảo cho N Preview</h3>
+
+<p>
+  Thông tin chi tiết về các API Android N có trong tài liệu tham khảo của
+ Bản xem trước N mà bạn có thể tải xuống từ bảng sau.
+  Gói này có một bản ngoại tuyến được rút gọn của trang web
+  cho nhà phát triển Android và có một bản tham khảo API được cập nhật cho API Android N, một
+   báo cáo về sự khác biệt API.
+</p>
+
+<table>
+  <tr>
+    <th scope="col">Tài liệu</th>
+    <th scope="col">Tổng kiểm</th>
+  </tr>
+  <tr>
+    <td style="white-space: nowrap">
+    <a href="{@docRoot}shareables/preview/n-preview-1-docs.zip">n-preview-1-docs.zip</a></td>
+    <td width="100%">
+      MD5: 4ab33ccbe698f46f125cc5b807cf9c2f<br>
+      SHA-1: 6a3880b3ccd19614daae5a4d0698ea6ae11c20a5
+    </td>
+  </tr>
+<table>
+
+
+
+<h2 id="java8">Tải JDK và JRE của Java 8</h2>
+
+<p>Để biên dịch ứng dụng của bạn cho nền tảng Android N, bạn cần sử dụng
+Bộ công cụ phát triển Java 8 (JDK 8) và để sử dụng một số công cụ với Android
+Studio 2.1 thì bạn cần cài đặt Java 8 Runtime Environment (JRE). Vì vậy, nếu
+bạn không có phiên bản mới nhất của mỗi bộ thì hãy tải xuống JDK 8 và JRE 8
+ngay.</p>
+
+<p>Sau đó đặt phiên bản JDK trong Android Studio như sau:</p>
+
+<ol>
+  <li>Mở một dự án Android trong Android Studio, sau đó mở
+    hộp thoại Project Structure bằng cách chọn <strong>File &gt;
+        Project Structure</strong>. (Bằng cách khác, bạn có thể đặt mặc định
+        cho mọi dự án bằng cách chọn <strong>File &gt; Other Settings &gt;
+        Default Project Structure</strong>.)
+   </li>
+   <li>Trong khung bên trái của hộp thoại, hãy nhấp <strong>SDK Location</strong>.
+   </li>
+   <li>Trong ô <strong>JDK Location</strong>, hãy nhập vị trí của
+    Java 8 JDK (nhấp vào nút bên phải
+    để duyệt tìm tệp của bạn), sau đó nhấp <strong>OK</strong>.
+   </li>
+</ol>
+
+<img src="{@docRoot}preview/images/studio-jdk-location.jpg" width="700" alt="" />
+
+
+<h2 id="create-update">Cập nhật hoặc Tạo một dự án</h2>
+
+<p>
+  Dự án của bạn phải được cấu hình phù hợp để sử dụng các API Android N.
+</p>
+
+<p>Nếu bạn dự định sử dụng các tính năng của ngôn ngữ Java 8 thì bạn cũng nên đọc mục
+<a href="{@docRoot}preview/j8-jack.html">Các tính năng của Ngôn ngữ Java 8</a>
+để biết thêm thông tin về các tính năng của Java 8 được hỗ trợ và
+cách cấu hình dự án với trình biên dịch Jack.</p>
+
+
+<h3 id="update">Cập nhật một dự án có sẵn</h3>
+
+<p>Mở tệp
+  <code>build.gradle</code> cho mô-đun của bạn và cập nhật các giá trị như
+   sau:
+</p>
+
+<pre>
+android {
+  compileSdkVersion <strong>'android-N'</strong>
+  buildToolsVersion <strong>'24.0.0-rc1'</strong>
+  ...
+
+  defaultConfig {
+     minSdkVersion <strong>'N'</strong>
+     targetSdkVersion <strong>'N'</strong>
+     ...
+  }
+  ...
+}</pre>
+
+
+<h3 id="create">Tạo một dự án mới</h3>
+
+
+<p>Để tạo một dự án mới để phát triển với Android N Preview SDK:</p>
+
+<ol>
+  <li>Nhấp vào <strong>File &gt; New Project</strong>. và thực hiện theo các bước đến khi
+  bạn đến trang Target Android Devices.
+  </li>
+  <li>Trong trang này, hãy chọn tùy chọn <strong>Phone and Tablet</strong>.</li>
+  <li>Dưới tùy chọn <strong>Phone and Tablet</strong>, trong danh sách tùy chọn <strong>Minimum
+    SDK</strong> hãy chọn
+    <strong>N: Android API 23, N Preview (Preview)</strong>.</li>
+</ol>
+
+
+<h2 id="next">Các bước tiếp theo</h2>
+
+<ul>
+  <li>Làm theo hướng dẫn <a href="{@docRoot}preview/download.html">Kiểm thử trên một Thiết bị Android N</a>.</li>
+  <li>Tìm hiểu thêm về nền tảng Android N với
+<a href="{@docRoot}preview/behavior-changes.html">Các thay đổi Hành vi</a>
+và<a href="{@docRoot}preview/api-overview.html">API Android N
+và Các tính năng</a>.</li>
+</ul>
+
diff --git a/docs/html-intl/intl/zh-cn/preview/api-overview.jd b/docs/html-intl/intl/zh-cn/preview/api-overview.jd
new file mode 100644
index 0000000..d634125
--- /dev/null
+++ b/docs/html-intl/intl/zh-cn/preview/api-overview.jd
@@ -0,0 +1,676 @@
+page.title=Android N for Developers
+meta.tags="预览版", "androidn"
+page.tags="preview", "developer preview"
+page.image=images/cards/card-n-apis_2x.png
+@jd:body
+
+
+
+
+<div id="qv-wrapper">
+<div id="qv">
+  <h2>重要的开发者功能</h2>
+  <ol>
+      <ul style="list-style-type:none;">
+        <li><a href="#multi-window_support">多窗口支持</a></li>
+        <li><a href="#notification_enhancements">通知</a></li>
+        <li><a href="#jit_aot">JIT/AOT 编译</a></li>
+        <li><a href="#quick_path_to_app_install">快速的应用安装路径</a></li>
+        <li><a href="#doze_on_the_go">外出瞌睡模式</a></li>
+        <li><a href="#background_optimizations">后台优化</a></li>
+        <li><a href="#data_saver">Data Saver</a></li>
+        <li><a href="#tile_api">快速设置图块 API</a></li>
+        <li><a href="#number-blocking">号码屏蔽</a></li>
+        <li><a href="#call_screening">来电过滤</a></li>
+        <li><a href="#multi-locale_languages">区域设置和语言</a></li>
+        <li><a href="#icu4">Android 中的 ICU4J API</a></li>
+        <li><a href="#gles_32">OpenGL ES 3.2 API</a></li>
+        <li><a href="#android_tv_recording">Android TV 录制</a></li>
+        <li><a href="#android_for_work">Android for Work</a></li>
+        <li><a href="#accessibility_enhancements">辅助工具</a></li>
+        <li><a href="#direct_boot">直接启动</a></li>
+        <li><a href="#key_attestation">密钥认证</a></li>
+        <li><a href="#network_security_config">网络安全性配置</a></li>
+        <li><a href="#default_trusted_ca">默认受信任的 CA</a></li>
+        <li><a href="apk_signature_v2">APK signature scheme v2</a></li>
+        <li><a href="#scoped_directory_access">作用域目录访问</a></li>
+      </ol>
+</div>
+</div>
+
+
+
+<p>Android N 仍处于活动的开发状态,但现在您可以将其作为 N Developer Preview 的一部分进行试用。以下部分重点介绍面向开发者的部分新功能。
+
+ </p>
+
+<p>
+  请务必查阅<a href="{@docRoot}preview/behavior-changes.html">行为变更</a>以了解平台变更可能影响您的应用的领域,看看开发者指南,了解有关关键功能的更多信息,并下载 <a href="{@docRoot}preview/setup-sdk.html#docs-dl">API 参考</a>以获取新 API 的详细信息。
+
+
+
+</p>
+
+<h2 id="multi-window_support">多窗口支持</h2>
+
+
+<p>在 Android N 中,我们为该平台引入了一个新的而且非常需要的多任务处理功能 &mdash; 多窗口支持。
+ </p>
+
+  <p>现在,用户可以一次在屏幕上打开两个应用。 </p>
+  <ul>
+  <li>在运行 Android N 的手机和平板电脑上,用户可以并排运行两个应用,或者处于分屏模式时一个应用位于另一个应用之上。用户可以通过拖动两个应用之间的分隔线来调整应用。
+
+
+ </li>
+
+<li>在 Android TV 设备上,应用可以将自身置于<a href="{@docRoot}preview/features/picture-in-picture.html">画中画模式</a>,从而让它们可以在用户浏览或与其他应用交互时继续显示内容。如需了解详细信息,请参阅下文。
+
+ </li>
+  </ul>
+
+<div class="col-4of10">
+<img src="{@docRoot}preview/images/mw-portrait.png" alt="" style="height:460px;padding-left:1em;" id="img-split-screen" />
+<p class="img-caption">
+  <strong>图 1. </strong>在分屏模式下运行的应用。
+</p>
+  </div>
+
+<p>多窗口支持为您提供新的吸引用户方式,特别是在平板电脑和其他更大屏幕的设备上。您甚至可以在您的应用中启用拖放,从而使用户可以方便地将内容拖放到您的应用或从其中拖出内容&mdash;这是一个非常好的增强用户体验的方式。
+
+
+ </p>
+
+<p>向您的应用添加多窗口支持并配置多窗口显示的处理方式非常简单。例如,您可以指定您的 Activity 允许的最小尺寸,从而防止用户将 Activity 调整到该尺寸以下。您还可以为应用禁用多窗口显示,这可确保系统将仅以全屏模式显示应用。
+
+
+
+</p>
+
+<p>
+  如需了解详细信息,请参阅<a href="{@docRoot}preview/features/multi-window.html">多窗口支持</a>开发者文档。
+
+</p>
+
+<h2 id="notification_enhancements">通知增强功能</h2>
+
+<p>在 Android N 中,我们重新设计了通知,使其更易于使用并且速度更快。部分变更包括:
+</p>
+
+<ul>
+  <li>
+    <strong>模板更新</strong>:我们正在更新通知模板,新强调了英雄形象和化身。开发者将能够充分利用新模板,只需进行少量的代码调整。
+
+
+  </li>
+
+  <li>
+    <strong>绑定的通知</strong>:系统可以将消息组合在一起(例如,按消息主题)并显示组。用户可以适当地进行 Dismiss 或 Archive 等操作。如果您已实现 Android Wear 的通知,那么您已经很熟悉此模型。
+
+
+
+
+  </li>
+
+  <li>
+    <strong>直接回复</strong>:对于实时通信应用,Android 系统支持内联回复,以便用户可以直接在通知界面中快速回复短信。
+
+
+  </li>
+
+  <li>
+    <strong>自定义视图</strong>:两个新的 API 让您在通知中使用自定义视图时可以充分利用系统装饰元素,如通知标题和操作。
+
+
+  </li>
+</ul>
+
+<div class="col-4of12">
+  <img src="{@docRoot}preview/images/notifications-1.png" alt="" style="padding:.5em;max-width:226px">
+</div>
+
+<div class="col-4of12">
+  <img src="{@docRoot}preview/images/notifications-3.png" alt="" style="padding:.5em;max-width:226px">
+</div>
+
+<div class="col-4of12">
+  <img src="{@docRoot}preview/images/notifications-2.png" alt="" style="padding:.5em;max-width:226px">
+</div>
+
+
+<p class="img-caption">
+  <strong>图 2. </strong>绑定的通知和直接回复。
+</p>
+
+<p>如需了解如何实现新功能的信息,请参阅<a href="{@docRoot}preview/features/notification-updates.html">通知</a>指南。
+
+</p>
+
+
+
+<h2 id="jit_aot">配置文件指导的 JIT/AOT 编译</h2>
+
+<p>在 Android N 中,我们添加了 Just in Time (JIT) 编译器,对 ART 进行代码分析,让它可以在应用运行时持续提升 Android 应用的性能。JIT 编译器对 Android 运行组件当前的 Ahead of Time (AOT) 编译器进行了补充,有助于提升运行时性能,节省存储空间,加快应用更新和系统更新速度。
+
+
+
+</p>
+
+<p>配置文件指导的编译让 Android 运行组件能够根据应用的实际使用以及设备上的情况管理每个应用的 AOT/JIT 编译。例如,Android 运行组件维护每个应用的热方法的配置文件,并且可以预编译和缓存这些方法以实现最佳性能。对于应用的其他部分,在实际使用之前不会进行编译。
+
+
+
+</p>
+
+<p>除提升应用的关键部分的性能外,配置文件指导的编译还有助于减少整个 RAM 占用,包括关联的二进制文件。此功能对于低内存设备非常尤其重要。
+
+</p>
+
+<p>Android 运行组件在管理配置文件指导的编译时,可最大程度降低对设备电池的影响。仅当设备处于空闲状态和充电时才进行编译,从而可以通过提前执行该工作节约时间和省电。
+
+</p>
+
+<h2 id="quick_path_to_app_install">快速的应用安装路径</h2>
+
+<p>Android 运行组件的 JIT 编译器最实际的好处之一是应用安装和系统更新的速度。即使在 Android 6.0 中需要几分钟进行优化和安装的大型应用,现在只需几秒钟就可以完成安装。系统更新也变得更快,因为省去了优化步骤。
+
+
+ </p>
+
+<h2 id="doze_on_the_go">外出瞌睡模式...</h2>
+
+<p>Android 6.0 推出了瞌睡模式,即设备处于空闲状态时,通过推迟应用的 CPU 和网络活动以实现省电目的的系统模式,例如,设备放在桌上或抽屉里时。
+
+ </p>
+
+<p>现在,在 Android N 中,瞌睡模式又前进了一步,在外出时也可以省电。只要屏幕关闭了一段时间,且设备未插入电源,瞌睡模式就会对应用使用熟悉的 CPU 和网络限制。这意味着用户即使将设备放入口袋里也可以省电。
+
+
+
+</p>
+
+
+<img src="/preview/images/doze-diagram-1.png" alt="" id="figure1" />
+<p class="img-caption">
+  <strong>图 3. </strong>瞌睡模式现在应用限制以延长电池寿命,即使设备未处于静止状态。
+
+</p>
+
+
+<p>屏幕关闭片刻后,设备在使用电池时,瞌睡模式将限制网络访问,同时延迟作业和同步。在短暂的维护时间范围后,其允许应用访问网络,并执行延迟的作业/同步。打开屏幕或将设备插入电源会使设备退出瞌睡模式。
+
+
+
+</p>
+
+<p>当设备再次处于静止状态时,屏幕关闭且使用电池一段时间,瞌睡模式针对 {@link
+android.os.PowerManager.WakeLock}, {@link android.app.AlarmManager} 警报和 GPS/Wi-Fi 扫描应用完整 CPU 和网络限制。
+
+</p>
+
+<p>无论设备是否处于运动状态,将应用调整到瞌睡模式的最佳做法均相同,因此,如果您已更新应用以妥善处理瞌睡模式,则一切就绪。如果不是,请立即开始<a href="{@docRoot}training/monitoring-device-state/doze-standby.html#assessing_your_app">将应用调整到瞌睡模式</a>。
+
+
+</p>
+
+<h2 id="background_optimizations">Project Svelte:后台优化</h2>
+
+<p>Project Svelte 在持续改善,以最大程度减少生态系统中一系列 Android 设备中系统和应用使用的 RAM。在 Android N 中,Project Svelte 注重优化在后台中运行应用的方式。
+
+ </p>
+
+<p>后台处理是大多数应用的一个重要部分。处理得当,可让您实现非常棒的用户体验 &mdash; 即时、快速和情境感知。如果处理不得当,后台处理会毫无必要地消耗 RAM(和电池),同时影响其他应用的系统性能。
+
+
+ </p>
+
+<p>自 Android 5.0 发布以来,{@link android.app.job.JobScheduler} 已成为执行后台工作的首选方式,其工作方式有利于用户。应用可以在安排作业的同时允许系统基于内存、电源和连接情况进行优化。JobScheduler 可实现控制和简洁性,我们想要所有应用都使用它。
+
+
+
+ </p>
+
+<p>
+  另一个非常好的选择是 <a href="https://developers.google.com/android/reference/com/google/android/gms/gcm/GcmNetworkManager">
+ <code>GCMNetworkManager</code></a>(Google Play 服务的一部分),其在旧版 Android 中提供类似的作业安排和兼容性。
+
+
+</p>
+
+<p>我们在继续扩展 <code>JobScheduler</code> 和
+<code>GCMNetworkManager</code>,以符合多个用例 &mdash; 例如,在 Android N 中,现在,您可以基于内容提供程序中的更改安排后台工作。同时,我们开始弃用一些较旧的模式,这些模式会降低系统性能,特别是低内存设备的系统性能。
+
+
+
+</p>
+
+<p>在 Android N 中,我们删除了三个常用隐式广播 &mdash;
+ {@link android.net.ConnectivityManager#CONNECTIVITY_ACTION}、{@link
+  android.hardware.Camera#ACTION_NEW_PICTURE} 和 {@link
+  android.hardware.Camera#ACTION_NEW_VIDEO} &mdash; 因为这些广播可能会一次唤醒多个应用的后台进程,同时会耗尽内存和电池。如果您的应用收到这些广播,请充分利用 N Developer Preview 以迁移到 <code>JobScheduler</code> 和相关的 API。
+
+
+ </p>
+
+<p>
+  如需了解详情,请查看<a href="{@docRoot}preview/features/background-optimization.html">后台优化</a>文档。
+
+</p>
+
+
+<h2 id="data_saver">Data Saver</h2>
+
+<div class="col-5of12" style="margin-right:1.5em;">
+<img src="{@docRoot}preview/images/datasaver.png" style="border:2px solid #ddd">
+
+<p class="img-caption" style="padding-right:2em;">
+  <strong>图 4. </strong> 设置中的 Data Saver
+</p>
+  </div>
+
+<p>在移动设备的整个生命周期,蜂窝数据计划的成本通常会超出设备本身的成本。对于许多用户而言,蜂窝数据是他们想要节省的昂贵资源。
+
+ </p>
+
+<p>Android N 推出了 Data Saver 模式,这是一项新的系统服务,有助于减少应用使用的蜂窝数据,无论是在漫游,账单周期即将结束,还是使用少量的预付费数据包。Data Saver 让用户可以控制应用使用蜂窝数据的方式,同时让开发者打开 Data Saver 时可以提供更多有效的服务。
+
+
+
+ </p>
+
+<p>用户在 <strong>Settings</strong> 中启用 Data Saver 且设备位于按流量计费的网络上时,系统屏蔽后台数据使用,同时指示应用在前台尽可能使用较少的数据 &mdash; 例如,通过限制用于流媒体服务的比特率、降低图片质量、延迟最佳的预缓冲等方法来实现。用户可以将特定应用加入白名单以允许后台按流量的数据使用,即使在打开 Data Saver 时也是如此。
+
+
+
+
+</p>
+
+<p>Android N 扩展了 {@link android.net.ConnectivityManager},以便为应用<a href="{@docRoot}preview/features/data-saver.html#status">检索用户的 Data Saver 首选项</a>并<a href="{@docRoot}preview/features/data-saver.html#monitor-changes">监控首选项变更</a>提供一种方式。所有应用均应检查用户是否已启用 Data Saver 并努力限制前台和后台数据的使用。
+
+
+
+</p>
+
+
+<h2 id="tile_api">快速设置图块 API</h2>
+
+
+<div style="float:right;max-width:320px">
+<img src="{@docRoot}preview/images/quicksettings.png" style="padding-left:1.5em;">
+
+<p class="img-caption" style="padding-left:2em;">
+  <strong>图 5.</strong> 通知栏中的快速设置图块。
+</p>
+
+
+  </div><p>“快速设置”通常用于直接从通知栏显示关键设置和操作,非常简单。在 Android N 中,我们已扩展“快速设置”的范围,使其更加有用更方便。
+
+ </p>
+
+<p>我们为额外的“快速设置”图块添加了更多空间,用户可以通过向左或向右滑动跨分页的显示区域访问它们。我们还让用户可以控制显示哪些“快速设置”图块以及显示的位置 &mdash; 用户可以通过拖放图块来添加或移动图块。
+
+
+ </p>
+
+<p>对于开发者,Android N 还添加了一个新的 API,从而让您可以定义自己的“快速设置”图块,使用户可以轻松访问您应用中的关键控件和操作。
+</p>
+
+<p>
+  对于急需或频繁使用的控件和操作,保留“快速设置”图块,且不应将其用作启动应用的快捷方式。
+
+
+</p>
+
+<p>
+  定义图块后,您可以将它们显示给用户,用户可通过拖放将图块添加到“快速设置”。
+
+</p>
+
+<p>
+  如需创建应用图块的更多信息,请参阅可下载的 <a href="{@docRoot}preview/setup-sdk.html#docs-dl">API 参考</a>中的 <code>android.service.quicksettings.Tile</code>。
+
+</p>
+
+
+
+<h2 id="number-blocking">号码屏蔽</h2>
+
+<p>Android N 现在支持在平台中进行号码屏蔽,提供框架 API,让服务提供商可以维护屏蔽的号码列表。默认短信应用、默认手机应用和提供商应用可以对屏蔽的号码列表进行读取和写入操作。其他应用则无法访问此列表。
+
+
+</p>
+
+<p>通过使号码屏蔽成为平台的标准功能,Android 为应用提供一致的方式来支持广泛的设备上的号码屏蔽。应用可以利用的其他优势包括:
+
+</p>
+
+<ul>
+  <li> 还会屏蔽已屏蔽的来电号码发出的短信
+  <li> 通过 Backup &amp; Restore(备份和还原)功能可以跨重置和设备保留屏蔽的号码
+
+  <li> 多个应用可以使用相同的屏蔽号码列表
+</ul>
+
+<p>此外,通过 Android 的运营商应用集成表示运营商可以读取设备上屏蔽的号码列表,并为用户执行服务端屏蔽,以阻止不需要的来电和短信通过任何介质(如 VOIP 端点或转接电话)到达用户。
+
+
+</p>
+
+<p>
+  如需了解详细信息,请参阅可下载的 <a href="{@docRoot}preview/setup-sdk.html#docs-dl">API 参考</a>中的 <code>android.provider.BlockedNumberContract</code>。
+
+
+</p>
+
+<h2 id="call_screening">来电过滤</h2>
+
+<p>
+  Android N 允许默认的手机应用过滤来电。手机应用执行此操作的方式是实现新的 <code>CallScreeningService</code>,该方法允许手机应用基于来电的 {@link android.telecom.Call.Details Call.Details} 执行大量操作,例如:
+
+
+
+</p>
+
+<ul>
+  <li> 拒绝来电
+  <li> 不允许来电到达呼叫日志
+  <li> 不向用户显示来电通知
+</ul>
+
+<p>
+  如需了解详细信息,请参阅可下载的 <a href="{@docRoot}preview/setup-sdk.html#docs-dl">API 参考</a>中的 <code>android.telecom.CallScreeningService</code>。
+
+
+</p>
+
+
+<h2 id="multi-locale_languages">多区域设置支持、多语言</h2>
+
+
+<p>Android N 现在允许用户在设置中选择<strong>多个区域设置</strong>,以更好地支持双语用例。应用可以使用新的 API 获取用户选择的区域设置,然后为多区域设置用户提供更成熟的用户体验 &mdash; 如以多个语言显示搜索结果,并且不会以用户了解的语言翻译网页。
+
+
+
+
+</p>
+
+<p>除多区域设置支持外,Android N 还扩展了用户可用的语言范围。它针对常用语言提供超过 25 种的变体,如英语、西班牙语、法语和阿拉伯语。它还针对 100 多种新语言添加了部分支持。
+
+
+</p>
+
+<p>应用可以通过调用 <code>LocaleList.GetDefault()</code> 获取用户设置的区域设置列表。为支持扩展的区域设置数量,Android N 正在改变其解析资源的方式。请务必使用新的资源解析逻辑测试和验证您的应用是否能如期运行。
+
+</p>
+
+<p>如需有关新资源解析行为和应遵循的最佳做法的更多信息,请参阅<a href="{@docRoot}preview/features/multilingual-support.html">多语言支持</a>。
+</p>
+
+<h2 id="icu4">Android 中的 ICU4J API</h2>
+
+<p>
+  Android N 目前在 Android 框架(位于 <code>android.icu</code> 软件包下)中提供 <a href="http://site.icu-project.org/">ICU4J</a> API 的子集。迁移很简单,主要是需要从 <code>com.java.icu</code> 命名空间更改为 <code>android.icu</code>。如果您已在您的应用中使用 ICU4J 捆绑包,切换到 Android 框架中提供的 <code>android.icu</code> API 可以大量节省 APK 大小。
+
+
+
+
+
+</p>
+
+<p>
+  如果要了解有关 Android ICU4J API 的更多信息,请参阅 <a href="{@docRoot}preview/features/icu4j-framework.html">ICU4J 支持</a>。
+</p>
+
+
+
+<h2 id="gles_32">OpenGL&trade; ES 3.2 API</h2>
+
+<p>Android N 添加了框架接口和对 OpenGL ES 3.2 的平台支持,包括:</p>
+
+<ul>
+  <li> 来自 <a class="external-link" href="https://www.khronos.org/registry/gles/extensions/ANDROID/ANDROID_extension_pack_es31a.txt">Android 扩展包</a></a> (AEP) 的所有扩展(<code>EXT_texture_sRGB_decode</code> 除外)。
+  <li> 针对 HDR 的浮点帧缓冲和延迟着色。
+  <li> BaseVertex 绘图调用可实现更好的批处理和流媒体服务。
+  <li> 强大的缓冲区访问控制可减少 WebGL 开销。
+</ul>
+
+<p>Android N 上适用于 OpenGL ES 3.2 的框架 API 与 <code>GLES32</code> 类一起提供。使用 OpenGL ES 3.2 时,请务必通过 <code>&lt;uses-feature&gt;</code> 标记和 <code>android:glEsVersion</code> 属性在您的清单文件中声明要求。
+
+
+ </p>
+
+<p>如需了解有关使用 OpenGL ES 的信息,包括如何在运行时检查设备支持的 OpenGL ES 版本,请参阅 <a href="{@docRoot}guide/topics/graphics/opengl.html">OpenGL ES API 指南</a>。
+</p>
+
+
+<h2 id="android_tv_recording">Android TV 录制</h2>
+
+<p>Android N 通过新的录制 API 添加了从 Android TV 输入服务录制和播放内容的功能。构建在现有时移 API 之上,TV 输入服务可以控制能够录制的渠道数据、保存录制的会话的方式,同时可通过录制的内容管理用户交互。
+
+
+ </p>
+
+<p>如需了解详细信息,请参阅 <a href="{@docRoot}preview/features/tv-recording-api.html">Android TV 录制 API</a>。</p>
+
+
+<h2 id="android_for_work">Android for Work</h2>
+
+<p>Android for Work 针对运行 Android N 的设备添加了许多新功能和 API。部分重要内容如下&mdash; 有关与 Android N 相关的 Android for Work 更新的完整列表,请参阅 Android for Work 变更。
+
+</p>
+
+<h3 id="work_profile_security_challenge">托管配置文件安全性挑战 </h3>
+
+<p>
+  配置文件所有者可以指定为托管配置文件中运行的应用指定单独的安全性挑战。当用户尝试打开任何工作应用时将显示工作挑战。成功完成安全性挑战可解锁托管配置文件并将其解密(如果需要)。对于配置文件所有者,<code>ACTION_SET_NEW_PASSWORD</code> 提示用户设置工作挑战,<code>ACTION_SET_NEW_PARENT_PROFILE_PASSWORD</code> 提示用户设置设备锁。
+
+
+
+
+
+
+</p>
+
+<p>
+  配置文件所有者可以使用 <code>setPasswordQuality()</code>、<code>setPasswordMinimumLength()</code> 和相关方法针对工作挑战设置不同的密码策略(例如,PIN 必须多长,或是否可以使用指纹解锁配置文件)。配置文件所有者还可以使用新的 <code>getParentProfileInstance()</code> 方法返回的 <code>DevicePolicyManager</code> 实例设置设备锁定。此外,配置文件所有者可以使用新的 <code>setOrganizationColor()</code> 和 <code>setOrganizationName()</code> 方法针对工作挑战自定义凭据屏幕。
+
+
+
+
+
+
+
+
+</p>
+<h3 id="turn_off_work">关闭工作 </h3>
+
+<p>在具有托管配置文件的设备上,用户可以切换工作模式。工作模式关闭时,管理的用户临时关闭,其禁用托管配置文件应用、后台同步和通知。这包括配置文件所有者应用。关闭工作模式时,系统显示永久状态图标,以提醒用户他们无法启动工作应用。启动器指示该工作应用和小组件无法访问。
+
+
+
+
+ </p>
+
+<h3 id="always_on_vpn">Always on VPN </h3>
+
+<p>设备所有者和配置文件所有者可以确保工作应用始终通过指定的 VPN 连接。系统在设备启动后自动启动该 VPN。
+
+</p>
+
+<p>
+  新的 <code>DevicePolicyManager</code> 方法为 <code>setAlwaysOnVpnPackage()</code> 和 <code>getAlwaysOnVpnPackage()</code>。
+
+
+</p>
+
+<p>由于 VPN 服务无需应用交互即可由系统直接绑定,因此,VPN 客户端必须针对 Always on VPN 处理新的入口点。和以前一样,由与操作匹配的 Intent 过滤器将服务指示给系统。<code>android.net.VpnService</code>。
+
+
+ </p>
+
+<p>
+  用户还可以使用 <strong>Settings&gt;More&gt;Vpn</strong> 在主要用户中手动设置实现 <code>VPNService</code> 方法的 Always on VPN 客户端。
+
+
+</p>
+
+<h2 id="accessibility_enhancements">辅助工具增强功能</h2>
+
+<p>Android N 现在针对新的设备设置直接在欢迎屏幕上提供“Vision Settings”。这使用户可以更容易发现和配置他们设备上的辅助工具功能,包括放大手势、字体大小、显示屏尺寸和 TalkBack。
+
+
+ </p>
+
+<p>随着这些辅助工具功能更为突出,在启用这些功能后,您的用户更可能试用您的应用。请务必提前启用这些设置测试您的应用。您可以通过 Settings &gt; Accessibility 启用它们。
+
+
+</p>
+
+<p>还是在 Android N 中,辅助工具服务现在可以帮助具有动作障碍的用户触摸屏幕。全新的 API 允许使用人脸追踪、眼球追踪、点扫描等功能构建服务,以满足这些用户的需求。
+
+
+</p>
+
+<p>如需了解详细信息,请参阅可下载的 <a href="{@docRoot}preview/setup-sdk.html#docs-dl">API 参考</a> 中的 <code>android.accessibilityservice.GestureDescription
+	</code>。</p>
+
+
+<h2 id="direct_boot">直接启动</h2>
+
+<p>直接启动可以缩短设备启动时间,让注册的应用具有有限的功能,即使在意外重启后。例如,如果当用户睡觉时加密的设备重启,那么注册的警报、消息和来电现在可以和往常一样继续通知用户。这也意味着重启后辅助工具服务会立即可用。
+
+
+
+
+</p>
+
+<p>在 Android N 中,直接启动充分利用基于文件的加密,以针对系统和应用数据启用细化的加密策略。为系统和应用数据。系统针对选定的系统数据和显式注册的应用数据使用设备加密的存储。默认情况下,凭据加密的存储可用于所有其他系统数据、用户数据、应用及应用数据。
+
+
+
+ </p>
+
+<p>启动时,系统在受限的模式中启动,仅访问设备加密的数据,不会对应用或数据进行常规访问。如果您有想要在此模式下运行的组件,您可以通过在清单文件中设置标记注册它们。重启后,系统通过广播 <code>LOCKED_BOOT_COMPLETED</code> Intent 激活注册的组件。系统确保注册的设备加密的应用数据在解锁前可用。所有其他数据在用户确认锁定屏幕凭据进行解密前均不可用。
+
+
+
+
+
+
+ </p>
+
+如需了解详细信息,请参阅<a href="{@docRoot}preview/features/direct-boot.html">直接启动</a>。</p>
+</p>
+
+
+<h2 id="key_attestation">密钥认证</h2>
+
+<p>使用硬件支持的密钥库,可更安全地在 Android 设备上创建、存储和使用加密密钥。它们可保护密钥免受 Linux 内核、潜在的 Android 漏洞的攻击,也可防止从已取得 root 权限的设备提取密钥。
+
+
+</p>
+
+<p>为了让硬件支持的密钥库使用起来更简单和更安全,Android N 引入了密钥认证。应用和关闭的设备可使用密钥认证以坚决地确定 RSA 或 EC 密钥对是否受硬件支持、密钥对的属性如何,以及其使用和有效性有何限制。
+
+
+
+ </p>
+
+<p>应用和关闭的设备服务可以通过 X.509 认证证书(必须由有效的认证密钥签署)请求有关密钥对的信息。认证密钥是一个 ECDSA 签署密钥,其在出厂时被注入设备的硬件支持的密钥库。因此,有效的认证密钥签署的认证证书可确认硬件支持的密钥库是否存在,以及该密钥库中密钥对的详细信息。
+
+
+
+
+
+</p>
+
+<p>为确保设备使用安全的官方 Android 出厂映像,密钥认证要求设备 <a class="external-link" href="https://source.android.com/security/verifiedboot/verified-boot.html#bootloader_requirements">bootloader</a> 向<a class="external-link" href="https://source.android.com/security/trusty/index.html">可信执行环境 (TEE)</a> 提供以下信息:
+
+
+</p>
+
+<ul>
+<li>设备上安装的操作系统版本和补丁级别</li>
+<li><a href="https://source.android.com/security/verifiedboot/index.html" class="external-link">验证的启动</a>公钥和锁定状态。</li>
+  </ul>
+
+<p>如需了解有关硬件支持的密钥库功能的详细信息,请参阅<a href="https://source.android.com/security/keystore/" class="external-link">硬件支持的密钥库</a>指南。
+</p>
+
+<p>除密钥认证外,Android N 还推出了指纹绑定密钥,在指纹注册时不会撤销。
+</p>
+
+<h2 id="network_security_config">网络安全性配置</h2>
+
+<p>在 Android N 中,通过使用说明性<em>网络安全性配置</em>(而不是使用传统的易出错的编程 API(例如,X509TrustManager)),应用可以安全地自定义其安全(HTTPS、TLS)连接的行为,无需任何代码修改。
+
+
+</p>
+
+  <p>支持的功能:</p>
+<ul>
+<li><b>自定义信任锚。</b>让应用可以针对其安全连接自定义哪些证书颁发机构 (CA) 受信任。例如,信任特定的自签署证书或受限的公共 CA 集。
+
+
+</li>
+<li><b>仅调试重写。</b>让应用开发者可以安全调试其应用的安全连接,而不会增加安装基础的风险。
+
+
+</li>
+<li><b>明文流量退出。</b>让应用可以防止自身意外使用明文流量。
+</li>
+<li><b>固定证书。</b>这是一项高级功能,让应用可以针对安全连接限制哪些服务器密钥受信任。
+</li>
+</ul>
+
+<p>如需了解详细信息,请参阅<a href="{@docRoot}preview/features/security-config.html">网络安全性配置</a>。
+</p>
+
+<h2 id="default_trusted_ca">默认受信任的证书颁发机构</h2>
+
+<p>默认情况下,针对 Android N 的应用仅信任系统提供的证书,且不再信任用户添加的证书颁发机构 (CA)。如果针对 Android N 的应用希望信任用户添加的 CA,则应使用<a href="{@docRoot}preview/features/security-config.html">网络安全性配置</a>以指定信任用户 CA 的方式。
+
+
+
+</p>
+
+<h2 id="apk_signature_v2">APK signature scheme v2</h2>
+
+<p>PackageManager 类现在支持使用 APK signature scheme v2 验证应用。APK signature scheme v2 是一个整个文件签名架构,通过检测对 APK 文件进行的任何未经授权更改,可大幅提高验证速度,同时也可加强完整性保证。
+
+
+</p>
+
+<p>为保持向后兼容,在使用 v2 签名架构签署之前,APK 必须先使用 v1 签名架构(JAR 签名架构)签署。对于 v2 签名架构,如果在使用 v2 架构签署后使用额外的证书签署 APK,验证将失败。
+
+
+ </p>
+
+<p>APK signature scheme v2 支持稍后将在 N Developer Preview中推出。
+</p>
+
+<h2 id="scoped_directory_access">作用域目录访问</h2>
+
+<p>在 Android N 中,应用可以使用新的 API 请求访问特定的<a href="{@docRoot}guide/topics/data/data-storage.html#filesExternal">外部存储</a>目录,包括可移动媒体上的目录,如 SD 卡。新 API 大大简化了应用访问标准外部存储目录的方式,如 <code>Pictures</code> 目录。应用(如照片应用)可以使用这些 API(而不是使用 <code>READ_EXTERNAL_STORAGE</code>),其授予所有存储目录的访问权限或存储访问框架,从而让用户可以导航到目录。
+
+
+
+
+
+
+</p>
+
+<p>此外,新的 API 简化了用户向应用授予外部存储访问权限的步骤。当您使用新的 API 时,系统使用一个简单的权限 UI,其清楚地详细介绍应用正在请求访问的目录。
+
+
+</p>
+
+<p>如需了解详细信息,请参阅<a href="{@docRoot}preview/features/scoped-folder-access.html">作用域目录访问</a>开发者文档。
+
+</p>
+
+
+
+
+
+
diff --git a/docs/html-intl/intl/zh-cn/preview/behavior-changes.jd b/docs/html-intl/intl/zh-cn/preview/behavior-changes.jd
new file mode 100644
index 0000000..3c4b2e1
--- /dev/null
+++ b/docs/html-intl/intl/zh-cn/preview/behavior-changes.jd
@@ -0,0 +1,480 @@
+page.title=行为变更
+page.keywords=preview,sdk,compatibility
+meta.tags="预览版", "兼容性"
+page.tags="preview", "developer preview"
+page.image=images/cards/card-n-changes_2x.png
+@jd:body
+
+
+<div id="qv-wrapper">
+<div id="qv">
+
+<h2>本文内容</h2>
+
+<ol>
+  <li><a href="#perf">性能提升</a>
+    <ol>
+      <li><a href="#doze">打盹</a></li>
+      <li><a href="#bg-opt">后台优化</a></li>
+    </ol>
+  </li>
+  <li><a href="#perm">权限更改</a></li>
+  <li><a href="#accessibility">辅助工具改进</a>
+    <ol>
+      <li><a href="#screen-zoom">屏幕缩放</a></li>
+      <li><a href="#vision-settings">设置向导中的视觉设置</a></li>
+    </ol>
+  </li>
+  <li><a href="#ndk">NDK 应用链接至平台库</a></li>
+  <li><a href="#afw">Android for Work</a></li>
+</ol>
+
+<h2>另请参阅</h2>
+<ol>
+  <li><a href="{@docRoot}preview/api-overview.html">
+    Android N API 概览</a></li>
+</ol>
+
+</div>
+</div>
+
+
+<p>
+  Android N 除了提供诸多新特性和功能外,还对系统和 API 行为做出了各种变更。本文重点介绍您应该了解并在开发应用时加以考虑的一些重要变更。
+
+
+
+</p>
+
+<p>
+  如果您之前发布过 Android 应用,请注意您的应用可能受到这些平台变更的影响。
+
+</p>
+
+
+<h2 id="perf">性能提升</h2>
+
+<p>
+  为延长设备的电池寿命、降低内存使用率以及提升应用性能,Android N 对系统行为做出了一些变更。这些变更可能会影响系统资源和系统通知对应用的可用性。您应仔细检查这些变更并评估应用可能需要做何调整以适应这些变更。
+
+
+
+
+</p>
+
+<h3 id="doze">打盹</h3>
+
+<p>
+  Android 6.0(API 级别 23)引入了打盹模式,当用户设备未插接电源、处于静止状态且屏幕关闭时,该模式会推迟 CPU 和网络活动,从而延长电池寿命。而 Android N 则通过在设备未插接电源且屏幕关闭状态下、但不一定要处于静止状态(例如用户外出时把手持式设备装在口袋里)时应用部分 CPU 和网络限制,进一步增强了打盹模式。
+
+
+
+
+
+</p>
+
+
+<img src="{@docRoot}preview/images/doze-diagram-1.png" alt="" height="251px" id="figure1" />
+<p class="img-caption">
+  <strong>图 1.</strong> 打盹模式如何应用第一级系统活动限制以延长电池寿命的图示。
+
+</p>
+
+<p>
+  当设备处于充电状态且屏幕已关闭一定时间后,设备会进入打盹模式并应用第一部分限制:关闭应用网络访问、推迟作业和同步。如果进入打盹模式后设备处于静止状态达到一定时间,系统则会对 {@link android.os.PowerManager.WakeLock}、{@link android.app.AlarmManager} 闹铃、GPS 和 Wi-Fi 扫描应用余下的打盹限制。无论是应用部分还是全部打盹限制,系统都会唤醒设备以提供简短的维护时间窗口,在此窗口期间,应用程序可以访问网络并执行任何被推迟的作业/同步。
+
+
+
+
+
+
+
+
+</p>
+
+
+<img src="{@docRoot}preview/images/doze-diagram-2.png" alt="" id="figure2" />
+<p class="img-caption">
+  <strong>图 2.</strong> 打盹模式如何在设备处于静止状态达到一定时间后应用第二级系统活动限制的图示。
+
+</p>
+
+<p>
+  请注意,激活屏幕或插接设备电源时,系统将退出打盹模式并取消这些处理限制。此项新增的行为不会影响有关使您的应用适应 Android 6.0(API 级别 23)中所推出的旧版本打盹模式的建议和最佳实践,如<a href="{@docRoot}training/monitoring-device-state/doze-standby.html">打盹和应用待机优化</a>中所讨论。您仍应遵循这些建议(例如使用 Google Cloud Messaging (GCM) 发送和接收消息)并开始安排更新计划以适应新增的打盹行为。
+
+
+
+
+
+
+
+
+</p>
+
+
+<h3 id="bg-opt">Project Svelte:后台优化</h3>
+
+<p>
+  Android N 删除了三项隐式广播,以帮助优化内存使用和电量消耗。此项变更很有必要,因为隐式广播会在后台频繁启动已注册侦听这些广播的应用。删除这些广播可以显著提升设备性能和用户体验。
+
+
+
+
+</p>
+
+<p>
+  移动设备会经历频繁的连接变更,例如在 Wi-Fi 和移动数据之间切换时。目前,可以通过在应用清单文件中注册一个接收器来侦听隐式 {@link
+  android.net.ConnectivityManager#CONNECTIVITY_ACTION} 广播,让应用能够监控这些变更。由于很多应用会注册接收此广播,因此单次网络切换即会导致所有应用被唤醒并同时处理此广播。
+
+
+
+
+
+</p>
+
+<p>
+  同理,应用可以注册接收来自其他应用(例如相机)的隐式 {@link
+  android.hardware.Camera#ACTION_NEW_PICTURE} 和 {@link
+  android.hardware.Camera#ACTION_NEW_VIDEO} 广播。当用户使用相机应用拍摄照片时,这些应用即会被唤醒以处理广播。
+
+
+</p>
+
+<p>
+  为减缓这些问题,Android N 应用了以下优化措施:
+
+</p>
+
+<ul>
+  <li>面向 Android N 开发的应用不会收到 {@link
+  android.net.ConnectivityManager#CONNECTIVITY_ACTION} 广播,即使它们已有清单条目来请求接受这些事件的通知。在前台运行的应用如果使用 {@link
+  android.content.BroadcastReceiver} 请求接收通知,则仍可以在主线程中侦听 {@code CONNECTIVITY_CHANGE}。
+
+
+
+  </li>
+
+  <li>应用无法发送或接收 {@link
+  android.hardware.Camera#ACTION_NEW_PICTURE} 或 {@link
+  android.hardware.Camera#ACTION_NEW_VIDEO} 广播。此项优化会影响所有应用,而不仅仅是面向 Android N 的应用。
+
+  </li>
+</ul>
+
+<p>
+  未来的 Android 版本还可能会弃用其他隐式广播以及未绑定的后台服务。有鉴于此,您应避免依赖在清单文件中声明的接收器来侦听隐式广播或删除此依赖关系,以及避免或删除对后台服务的依赖关系。
+
+
+
+</p>
+
+<p>
+  Android 框架提供多种解决方案来降低这些隐式广播或后台服务的必要性。例如,{@link
+  android.app.job.JobScheduler} API 提供了一个稳健可靠的机制来安排满足指定条件(例如连入不按流量计费的网络)时所执行的网络操作。您甚至可以使用 {@link
+  android.app.job.JobScheduler} 来响应内容提供程序所发生的变更。
+
+
+
+</p>
+
+<p>
+  如需了解有关此行为变更及如何改写应用的详细信息,请参阅<a href="{@docRoot}preview/features/background-optimization.html">后台优化</a>。
+
+
+</p>
+
+
+<h2 id="perm">权限更改</h2>
+
+<p>
+  Android N 做了一些权限更改,包括用户帐户权限和向外部存储设备写入信息的新权限,这些更改可能会影响您的应用。下面概要列出了预览版中已发生更改的权限。
+
+
+
+</p>
+
+<ul>
+  <li>{@code GET_ACCOUNTS}(已弃用)
+    <p>
+      GET_ACCOUNTS 权限现已弃用。对于面向 Android N 的应用,系统将忽略此权限。
+
+    </p>
+  </li>
+
+</ul>
+
+
+
+<h2 id="accessibility">辅助工具改进</h2>
+
+<p>
+  为提高平台对于视力不佳或视力受损用户的可用性,Android N 做出了一些更改。这些更改一般并不要求更改您的应用代码,不过您应仔细检查并使用您的应用测试这些功能,以评估它们对用户体验的潜在影响。
+
+
+
+
+</p>
+
+
+<h3 id="screen-zoom">屏幕缩放</h3>
+
+<p>
+  Android N 支持用户设置<strong>显示尺寸</strong>,以放大或缩小屏幕上的所有元素,从而提升设备对视力不佳用户的可访问性。用户无法将屏幕缩放至低于最小屏幕宽度<a href="http://developer.android.com/guide/topics/resources/providing-resources.html">
+ sw320dp</a>,该宽度是 Nexus 4 的宽度,也是常规中等大小手机的宽度。
+
+
+
+</p>
+
+<div class="cols">
+
+<div class="col-6">
+  <img src="{@docRoot}preview/images/screen-zoom-1.png" alt="" height="XXX" id="figure1" />
+</div>
+<div class="col-6">
+  <img src="{@docRoot}preview/images/screen-zoom-2.png" alt="" height="XXX" id="figure1" />
+</div>
+
+</div> <!-- end cols -->
+<p class="img-caption">
+  <strong>图 3.</strong> 右侧屏幕显示的是一台运行 Android N 系统映像的设备增大显示尺寸后的效果。
+
+</p>
+
+
+<p>
+  当设备密度发生更改时,系统会以如下方式通知正在运行的应用:
+
+</p>
+
+<ul>
+  <li>如果是面向 API 级别 23 或更低版本系统的应用,则系统会自动终止其所有后台进程。这意味着如果用户切换离开此类应用,转而打开 <em>Settings</em> 屏幕并更改 <strong>Display size</strong> 设置,则系统会像处理内存不足的情况一样终止该应用。如果应用具有任何前台进程,则系统会如<a href="{@docRoot}guide/topics/resources/runtime-changes.html">处理运行时变更</a>中所述将配置变更通知给这些进程,就像对待设备屏幕方向变更一样。
+
+
+
+
+
+
+
+  </li>
+
+  <li>如果是面向 Android N 的应用,则其所有进程(前台和后台)都会收到有关配置变更的通知,如<a href="{@docRoot}guide/topics/resources/runtime-changes.html">处理运行时变更</a>中所述。
+
+
+
+  </li>
+</ul>
+
+<p>
+  大多数应用并不需要进行任何更改即可支持此功能,不过前提是这些应用遵循 Android 最佳实践。具体要检查的事项:
+
+</p>
+
+<ul>
+  <li>在屏幕宽度为 <code><a href=
+  "{@docRoot}guide/topics/resources/providing-resources.html">sw320dp</a></code> 的设备上测试您的应用,并确保其充分运行。
+
+  </li>
+
+  <li>当设备配置发生变更时,更新任何与密度相关的缓存信息,例如缓存位图或从网络加载的资源。当应用从暂停状态恢复运行时,检查配置变更。
+
+
+
+    <p class="note">
+      <strong>注:</strong>如果您要缓存与配置相关的数据,则最好也包括相关元数据,例如该数据对应的屏幕尺寸或像素密度。保存这些元数据便于您在配置变更后决定是否需要刷新缓存数据。
+
+
+
+
+    </p>
+  </li>
+
+  <li>避免用像素单位指定尺寸,因为像素不会随屏幕密度缩放。应改为使用<a href="{@docRoot}guide/practices/screens_support.html">与密度无关像素</a> (<code>dp</code>) 单位指定尺寸。
+
+
+  </li>
+</ul>
+
+<h3 id="vision-settings">设置向导中的视觉设置</h3>
+
+<p>
+  Android N 在“Welcome”屏幕中加入了“Vision Settings”,用户可以在新设备上设置以下辅助工具设置:<strong>Magnification gesture</strong>、<strong>Font size</strong>、<strong>Display size</strong> 和 <strong>TalkBack</strong>。此项变更增强了与不同屏幕设置相关的错误的可见性。要评估此功能的影响,您应在启用这些设置的状态下测试应用。您可以在 <strong>Settings &gt;
+  Accessibility</strong> 中找到这些设置。
+
+
+
+
+
+
+</p>
+
+<h2 id="ndk">NDK 应用链接至平台库</h2>
+
+<p>
+  Android N 做了一些命名空间更改,以阻止加载非公开 API。如果您使用 NDK,则只能使用 Android 平台提供的公开 API。在下一个官方发布的 Android 版本上使用非公开 API 会导致应用崩溃。
+
+
+
+</p>
+
+<p>
+  为提醒您使用了非公开 API,在 Android N
+ 设备上运行的应用会在有应用调用非公开 API 时在日志消息输出中生成一个错误。此错误还会作为消息显示在设备屏幕上,以帮助增强您对此情况的认识。您应检查应用代码以删除使用非公开平台 API,并使用预览版设备或模拟器全面测试应用。
+
+
+
+
+</p>
+
+<p>
+  如果您的应用依赖平台库,则请参见 NDK 文档,了解使用公开 API 等效项替换普通私有 API 的典型修复。您还可以链接至平台库,而无需实现此应用,如果应用使用的库是平台的一部分(例如 <code>libpng</code>),但不属于 NDK,则更可如此。此情况下,请确保您的 APK 包含您打算链接到的所有 .so 文件。
+
+
+
+
+
+</p>
+
+<p class="caution">
+  <strong>注意:</strong>有些第三方库可能会链接至非公开 API。如果您的应用使用这些库,那么当您的应用在下一个官方发布的 Android 版本上运行时可能会出现崩溃现象。
+
+
+</p>
+
+<p>
+  应用不应依赖或使用不属于 NDK 的原生库,因为这些库可能会发生更改或从一个 Android 版本迁移至另一版本。例如,从 OpenSSL 切换至 BoringSSL 即属于此类更改。此外,不同的设备可能提供不同级别的兼容性,因为不属于 NDK 中的平台库没有兼容性要求。如果您必须在较旧设备上访问非 NDK 库,则请依据 Android API 级别进行加载。
+
+
+
+
+
+
+</p>
+
+<p>
+  为帮助您诊断此类问题,下面列举了一些在您试图使用 Android N 开发应用时可能遇到的 Java 和 NDK 错误:
+
+</p>
+
+<p>Java 错误示例:</p>
+<pre class="no-pretty-print">
+java.lang.UnsatisfiedLinkError: dlopen failed: library "/system/lib/libcutils.so"
+    is not accessible for the namespace "classloader-namespace"
+</pre>
+
+<p>NDK 错误示例:</p>
+<pre class="no-pretty-print">
+dlopen failed: cannot locate symbol "__system_property_get" referenced by ...
+</pre>
+
+
+<p>
+  以下是遇到这类错误的应用的一些典型修复:
+</p>
+
+<ul>
+  <li>可以使用标准 JNI 函数来替代使用 libandroid_runtime.so 中的 getJavaVM 和 getJNIEnv:
+
+<pre class="no-pretty-print">
+AndroidRuntime::getJavaVM -&gt; GetJavaVM from &lt;jni.h&gt;
+AndroidRuntime::getJNIEnv -&gt; JavaVM::GetEnv or
+JavaVM::AttachCurrentThread from &lt;jni.h&gt;.
+</pre>
+  </li>
+
+  <li>可以使用公开备选项 {@code __system_property_get} 来替代使用 {@code libcutils.so} 中的 {@code property_get} 符号。如需这样做,请使用 {@code __system_property_get} 及以下 include 函数:
+
+
+<pre>
+#include &lt;sys/system_properties.h&gt;
+</pre>
+  </li>
+
+  <li>应使用应用本地版本来替代使用 {@code libcrypto.so} 中的 {@code SSL_ctrl} 符号。例如,您应在 {@code .so} 文件中静态链接 {@code libcyrpto.a},或者在应用中包含您自己的来自 BoringSSL 或 OpenSSL 的动态 {@code libcrypto.so}。
+
+
+
+  </li>
+</ul>
+
+<h2 id="afw">Android for Work</h2>
+<p>
+  Android N 包含一些针对面向 Android for Work 的应用的变更,包括对证书安装、密码重置、二级用户管理、设备标识符访问权限的变更。如果您是要针对 Android for Work 环境开发应用,则应仔细检查这些变更并相应地修改您的应用。
+
+
+
+
+</p>
+
+<ul>
+  <li>您必须先安装授权证书安装程序,然后 DPC 才能对其进行设置。对于面向 N SDK 的配置文件和设备所有者应用,您应在设备策略控制器 (DPC) 调用 <code>DevicePolicyManager.setCertInstallerPackage()</code> 之前安装授权证书安装程序。如果尚未安装此安装程序,则系统会引发 <code>IllegalArgumentException</code>。
+
+
+
+
+
+
+  </li>
+
+  <li>针对设备管理员的重置密码限制现在也适用于配置文件所有者。设备管理员无法再使用
+ <code>DevicePolicyManager.resetPassword()</code> 来清除或更改已经设置的密码。不过,设备管理员仍可以设置密码,但只能在设备没有密码、PIN 或图案时这样做。
+
+
+
+  </li>
+
+  <li>即使设置了限制,设备所有者和配置文件所有者仍可以管理帐户。而且,即使具有 <code>DISALLOW_MODIFY_ACCOUNTS</code> 用户限制,设备所有者和配置文件所有者仍可调用 Account Management API。
+
+
+  </li>
+
+  <li>设备所有者可以更轻松地管理二级用户。当设备在设备所有者模式下运行时,系统将自动设置 <code>DISALLOW_ADD_USER</code> 限制。这样可以防止用户创建非托管二级用户。此外,<code>CreateUser()</code> 和
+ <code>createAndInitial()</code> 方法已弃用,取而代之的是 <code>DevicePolicyManager.createAndManageUser()</code> 方法。
+
+
+
+
+  </li>
+
+  <li>设备所有者可以访问设备标识符。设备所有者可以使用
+ <code>DevicePolicyManagewr.getWifiMacAddress()</code> 访问设备的 Wi-Fi MAC 地址。如果设备上从未启用 Wi-Fi,则此方法将返回一个 {@code null} 值。
+
+
+  </li>
+</ul>
+
+<p>
+  如需了解有关 Android N 中针对 Android for Work 所做变更的详细信息,请参阅
+ <a href="{@docRoot}preview/features/afw.html">Android for Work 更新</a>。
+</p>
+
+<h2 id="other">其他重要说明</h2>
+
+<ul>
+<li>如果一个应用在 Android N 上运行,但却是针对更低 API 级别开发的,那么在用户更改显示尺寸时,系统将终止此应用进程。因此,应用必须能够正常处理此情景。否则,当用户从最近使用记录中恢复运行应用时,应用将会出现崩溃现象。
+
+
+
+
+<p>
+您应测试应用以确保不会发生此行为。要进行此测试,您可以通过 DDMS 手动终止应用,以造成相同的崩溃现象。
+
+
+
+</p>
+
+<p>
+在密度发生更改时,系统不会自动终止面向 N 及更高版本的应用;不过,这些应用仍可能对配置变更做出不良响应。
+
+</p>
+</li>
+
+<li>
+Android N 上的应用应能够正常处理配置变更,并且在后续启动时不会出现崩溃现象。您可以通过更改字体大小 (<strong>Setting</strong> &gt;
+<strong>Display</strong> &gt; <strong>Font size</strong>) 并随后从最近使用记录中恢复运行应用,来验证应用行为。
+
+
+
+</li>
+</ul>
+
diff --git a/docs/html-intl/intl/zh-cn/preview/download.jd b/docs/html-intl/intl/zh-cn/preview/download.jd
new file mode 100644
index 0000000..fcee4174
--- /dev/null
+++ b/docs/html-intl/intl/zh-cn/preview/download.jd
@@ -0,0 +1,541 @@
+page.title=在设备上测试
+meta.tags="Preview", "nexus", "系统映像"
+page.tags="preview", "androidn"
+page.image=images/cards/card-n-downloads_2x.png
+
+@jd:body
+
+<div style="position:relative; min-height:600px">
+
+  <div class="wrap" id="tos" style="position:absolute;display:none;width:inherit;">
+
+    <p class="sdk-terms-intro">在下载和安装 Android Preview SDK 的组件之前,您必须同意下列条款和条件。
+
+</p>
+
+    <h2 class="norule">条款和条件</h2>
+
+    <div class="sdk-terms" onfocus="this.blur()" style="width:678px">
+本协议是 Android SDK Preview 许可协议(以下称为“许可协议”)。
+
+1. 简介
+
+1.1 Android SDK Preview(在本许可协议中简称为“Preview”,具体包括 Android 系统文件、封装 API 以及Preview 库文件(若可用))依据本许可协议的条款授权您使用。本许可协议在您与 Google 之间就您对“Preview”的使用形成具有法律约束力的合约。
+
+1.2 “Android”是指面向设备的 Android 软件栈,以 Android 开源项目名义提供,项目网址为 http://source.android.com/,其内容会不时更新。
+
+1.3 “Android 兼容”是指 (i) 符合与 Android 兼容性定义文档(可在 Android 兼容性网站 http://source.android.com/compatibility 上找到,并可能会不时更新)标准的任何 Android 实现;并 (ii) 成功通过 Android 兼容性测试套件 (CTS) 的测试。
+
+1.4 “Google”是指 Google Inc.,是一家特拉华州公司,主要营业地位于:1600 Amphitheatre Parkway, Mountain View, CA 94043, United States。
+
+2. 接受许可协议
+
+2.1 要使用“Preview”,您必须先同意本许可协议。如果您不接受本许可协议,则不得使用“Preview”。
+
+2.2 点击接受并/或使用“Preview”,即表示您特此同意本许可协议的条款。
+
+2.3 如果依照美国或其他国家/地区(包括您居住或您使用“Preview”所在的国家/地区)的法律,您被禁止获取“Preview”,则您不得使用“Preview”,也不得接受本许可协议。
+
+2.4 如果您将在贵公司或组织内部使用“Preview”,则您同意代表您的雇主或其他实体接受本许可协议的约束,并且您表示并保证您拥有完全的合法授权令您的雇主或上述实体受本许可协议的约束。如果您不具备必要的授权,则不得代表您的雇主或其他实体接受本许可协议或使用“Preview”。
+
+3. Google 的 Preview 许可
+
+3.1 Google 依据本许可协议的条款授予您有限的、全球性、免版税、不可转让、非独占性且不可次级许可的“Preview”使用许可,其用途仅限针对 Android 的兼容实现来开发应用。
+
+3.2 您不得使用此“Preview”来开发适用于其他平台(包括 Android 的非兼容实现)的应用或开发其他 SDK。您当然可以随意开发适用于其他平台(包括 Android 的非兼容实现)的应用,前提是不使用此“Preview”来进行此类开发。
+
+3.3 您同意 Google 或第三方拥有“Preview”中存在或与其有关联的全部合法权利、所有权和利益,包括“Preview”中存在的任何知识产权。“知识产权”是指根据专利法、版权法、商业机密法、商标法享有的任何及全部权利,以及其他任何及全部专有权利。Google 保留所有未明确授予您的权利。
+
+3.4 您不得将“Preview”用于本许可协议未明确允许的任何用途。除适用第三方许可所要求的范围外,您不得:(a) 对“Preview”或“Preview”的任何部分进行复制(备份用途除外)、修改、改编、再分发、反编译、逆向工程、反汇编或创建其衍生品;或 (b) 将“Preview”的任何部分加载到移动手持终端或除个人计算机之外的任何其他硬件设备上,将“Preview”的任何部分与其他软件合并,或者发行任何融入“Preview”某一部分的软件或设备。
+
+3.5 对于依据开源软件许可授权的“Preview”组件,其使用、复制和分发仅受该开源软件许可条款的制约,不受本许可协议的约束。您同意在依照被授予的所有权利作为被许可方期间,在遵守此类开源软件许可协议方面始终保持良好的信誉,并避免进行任何可能导致终止、暂停或违反此类权利的行动。
+
+3.6 您同意 Google 所提供“Preview”的形式和性质可随时发生变更,而无需事先通知您,并且未来的“Preview”版本可能会与在之前的“Preview”版本上开发的应用不兼容。您同意 Google 可单方面决定在未事先通知您的情况下全面停止(永久性或暂时性)向您或用户提供“Preview”(或“Preview”内的任何功能)。
+
+3.7 本许可协议内没有任何条款授予您使用 Google 的任何商品名、商标、服务标志、徽标、域名或其他独特品牌特征的权利。
+
+3.8 您同意您不会移除、遮盖或篡改“Preview”上可能贴有或“Preview”内可能包含的任何专有权利声明(包括版权声明和商标声明)。
+
+4. 您对“Preview”的使用
+
+4.1 Google 同意本许可协议中的任何条款均未授予 Google 从您(或您的许可方)处获取您依照本许可协议使用“Preview”开发的任何软件应用中存在或与其相关的权利、所有权或利益,包括这些应用中存在的任何知识产权。
+
+4.2 您同意只出于 (a) 本许可协议和 (b) 相关管辖区域内任何适用法律、法规或公认惯例或准则(包括有关向美国或其他相关国家/地区出口数据或软件或从美国或其他相关国家/地区进口数据或软件的任何法律)所允许的目的而使用“Preview”和编写应用。
+
+4.3 您同意,如果您使用“Preview”开发应用,您将会保护用户的隐私权和合法权利。如果用户向您提供用户名、密码或其他登录信息或个人信息,您必须确保用户知晓这些信息将供您的应用使用,并且您必须为这些用户提供足以满足法律要求的隐私声明和保护。如果您的应用存储由用户提供的个人信息或敏感信息,其存储方式必须安全。如果用户向您提供 Google 帐户信息,您的应用只能在用户允许时出于用户所许可的有限目的使用该信息访问用户的 Google 帐户。
+
+4.4 您同意您不会利用“Preview”从事任何干扰、中断、损坏或以未经授权方式访问 Google 或任何第三方的服务器、网络或其他财产或服务的Activity(包括应用的开发或分发)。
+
+4.5 您同意您对通过 Android 和/或 Android 应用创建、传输或显示的任何数据、内容或资源以及您的行为所导致的后果(包括 Google 可能遭受的任何损失或损害)负全责(Google 在上述方面对您或任何第三方不承担任何责任)。
+
+4.6 您同意您为违反本许可协议、任何适用的第三方合约或服务条款或任何适用法律或法规下的义务以及任何上述违规行为所导致的后果(包括 Google 或任何第三方可能遭受的任何损失或损害)负全责(Google 在上述方面对您或任何第三方不承担任何责任)。
+
+4.7 “Preview”正在开发中,您的测试和反馈是开发过程的重要环节。使用“Preview”,即表示您承认某些功能仍在开发实现之中,您不应期望“Preview”具备稳定版本的全部功能。您同意不使用此“Preview”公开发布或发运任何应用,因为此“Preview”在 Android SDK 正式发行之后将不再受支持。
+
+5. 您的开发者凭据
+
+5.1 您同意,对于 Google 可能向您发放或可能由您自行选择的任何开发者凭据,您有责任保持其机密性,并且您对以您的开发者凭据名义开发的所有应用负全责。
+
+6. 隐私权和信息
+
+6.1 为持续创新和改进“Preview”,Google 可能会从软件收集某些使用统计数据,包括但不限于唯一标识符、关联的 IP 地址、软件的版本号以及有关软件使用了“Preview”中哪些工具和/或服务及其使用方式的信息。在收集任何上述信息之前,“Preview”都会通知您并征求您的同意。如果您拒绝同意,我们将不会收集这些信息。
+
+6.2 我们会对收集的数据进行汇总调查,以便改进“Preview”,并会按照 Google 的隐私政策(网址为 http://www.google.com/policies/privacy/)维护数据。
+
+7. 第三方应用
+
+7.1 如果您使用“Preview”运行由第三方开发或访问由第三方提供的数据、内容或资源的应用,您同意 Google 对这些应用、数据、内容或资源不承担任何责任。您理解,您通过上述第三方应用可能访问到的所有数据、内容或资源由其提供者负全责,Google 对您因使用或访问其中任何第三方应用、数据、内容或资源而遭受的任何损失或损害不承担任何责任。
+
+7.2 您应知晓,通过此类第三方应用提供给您的数据、内容和资源可能受提供商(或代表他们的其他人员或公司)拥有的知识产权的保护。除非相关所有者明确给予许可,否则您不得修改、出租、租赁、借出、出售、分发这些数据、内容或资源(全部或部分),或以其为基础创建衍生品。
+
+7.3 您确认您对上述第三方应用、数据、内容或资源的使用可能受到您与相关第三方之间单独订立的条款的制约。
+
+8. 使用 Google API
+
+8.1 Google API
+
+8.1.1 如果您使用任何 API 从 Google 检索数据,即表示您承认这些数据可能受到 Google 或这些数据提供方(或代表他们的其他人员或公司)拥有的知识产权的保护。您对任何上述 API 的使用可能受到附加服务条款的制约。除非相关服务条款允许,否则您不得修改、出租、租赁、借出、出售、分发这些数据(全部或部分),或以其为基础创建衍生品。
+
+8.1.2 如果您使用任何 API 从 Google 检索用户数据,即表示您承认并同意您只有在征得用户明确同意时才会检索数据,并且只能在用户允许时出于用户许可的有限目的检索数据。
+
+9. 终止许可协议
+
+9.1 本许可协议将持续有效,直至您或 Google 按以下规定终止本协议。
+
+9.2 如果您想终止本许可协议,可通过停止使用“Preview”以及任何相关开发者凭据予以终止。
+
+9.3 Google 有权在向您作出通知后,有理由或无理由地随时终止与您订立的这份许可协议。
+
+9.4 本许可协议将在下列情况下自动终止,而无需另行通知或采取其他行动,以先符合条件者为准:
+(A) Google 在您居住或使用服务所在国家/地区停止向用户提供“Preview”或“Preview”的某些部分;
+(B) Google 发行 Android SDK 的最终版本。
+
+9.5 在本许可协议终止时,本许可协议中向您授予的许可将终止,您应立即完全停止使用“Preview”,并且第 10、11、12 和 14 节的条款将无限期继续存在。
+
+10. 免责声明
+
+10.1 您明确理解并同意,您使用“Preview”的风险将由您自行承担,并且“Preview”是按“原样”和“现状”提供,Google 不提供任何类型的担保。
+
+10.2 您对“Preview”的使用以及通过使用“Preview”下载或以其他方式获得的任何材料由您自行决定,风险自负,并且对于因此类使用而对您的计算机系统或其他设备造成的任何损害或数据损失由您单方面负责。在不对上文所述予以限制的条件下,您了解“Preview”并非稳定版本,可能存在将导致重大损害的错误、缺陷和安全漏洞,包括无法挽回地完全无法使用您的计算机系统或其他设备。
+
+10.3 Google 进一步明确拒绝任何类型的所有担保和条件,无论明示或暗示,包括但不限于有关适销性、特定用途适用性以及非侵权的暗示担保和条件。
+
+11. 有限责任
+
+11.1 您明确理解并同意,对于您可能遭遇的任何直接、间接、附带、特殊、继发或惩罚性损害(包括任何数据损失),Google 及其子公司和附属公司以及其许可方在任何责任理论下对您概不承担任何责任,无论 Google 或其代表是否已被告知或是否本应知晓发生任何上述损失的可能性。
+
+12. 赔偿
+
+12.1 您同意,在法律所允许的最大限度内,为 Google、其附属公司及其各自的董事、高管、员工和代理商提供辩护,使其免于因下列情况引起或产生的任何及所有索赔、诉讼、起诉或诉讼程序以及任何及所有损失、债务、损害、成本和费用(包括合理的律师费用)而承担责任或遭受损害:(a) 您对“Preview”的使用;(b) 您在“Preview”上开发的任何应用侵犯任何人的任何知识产权或诽谤任何人或侵犯其公开权或隐私权;以及 (c) 您的任何行为有悖于本许可协议
+
+13. 许可协议的更改
+
+13.1 Google 可能会在分发新版本“Preview”时对许可协议做出更改。做出这些更改后,Google 将在提供“Preview”的网站上公布新版本的许可协议。
+
+14. 一般法律条款
+
+14.1 本许可协议构成您与 Google 之间的完整法律协议,管辖您对“Preview”(不包括 Google 可能依据另外的书面协议向您提供的任何服务)的使用,并完全取代您之前与 Google 之间签订的、与“Preview”有关的任何协议。
+
+14.2 您同意,如果 Google 未行使或未强制执行本许可协议包含的任何法定权利或救济(或 Google 在任何适用法律下享有的相关利益),不得视为 Google 正式放弃这些权利,Google 仍可获得这些权利或救济。
+
+14.3 如果任何拥有管辖权的法院将本许可协议的任何条款裁定为无效,则该条款将从本许可协议中删除,而不会影响本许可协议的其余部分。本许可协议的其余条款将继续有效且可强制执行。
+
+14.4 您承认并同意,Google 集团旗下的每一家公司都将成为本许可协议的第三方受益人,并且此类其他公司将有权直接强制执行和依赖本许可协议中任何授予其利益(或支持其权利)的条款。除此之外,任何其他人员或公司均不得成为本许可协议的第三方受益人。
+
+14.5 出口限制。“Preview”受美国出口法律和法规的制约。您必须遵守适用于“Preview”的所有国内和国际出口法律和法规。这些法律包括目的地、最终用户和最终用途方面的限制。
+
+14.6 未经 Google 事先书面批准,您不得擅自转让或转移本许可协议,未经此类批准而试图进行的任何转让均为无效。未经 Google 事先书面批准,您不得委托您依据本许可协议所应承担的责任或义务。
+
+14.7 本许可协议以及您与 Google 依据本许可协议而建立的关系受加利福尼亚州法律管辖,而无论其是否与其他法律条款冲突。您与 Google 同意服从位于加利福尼亚州圣克拉拉县内法院的专属司法管辖权,以解决本许可协议引起的任何法律事务。尽管有上述规定,您同意仍允许 Google 在任何管辖区域申请禁令救济(或同等类型的紧急法律救济)。
+  </div><!-- sdk terms -->
+
+
+
+    <div id="sdk-terms-form">
+      <p>
+        <input id="agree" type="checkbox" name="agree" value="1" onclick="onAgreeChecked()" />
+        <label id="agreeLabel" for="agree">我已阅读并同意上述条款和条件</label>
+      </p>
+      <p><a href="" class="button disabled" id="downloadForRealz" onclick="return onDownloadForRealz(this);"></a></p>
+    </div>
+
+
+  </div><!-- end TOS -->
+
+
+  <div id="landing">
+
+<div id="qv-wrapper">
+  <div id="qv">
+    <h2>本文内容</h2>
+      <ol>
+        <li><a href="#device-preview">设置硬件设备</a>
+          <ol>
+            <li><a href="#ota">获取无线更新</a></li>
+            <li><a href="#flash">手动刷写设备</a></li>
+            <li><a href="#revertDevice">卸载</a></li>
+          </ol>
+        </li>
+        <li><a href="#setupAVD">设置模拟器</a></li>
+      </ol>
+  </div>
+</div>
+
+<p>
+  要在新平台上运行和测试您的应用,您需要设置 Android N
+运行组件环境。您可以通过以下任一方式完成此设置:
+</p>
+
+<ul>
+  <li>在受支持的硬件设备上安装 Android N,或者</li>
+  <li>设置运行 Android N 的 Android 模拟器</li>
+</ul>
+
+<p>
+  如果您需要一个环境用于完成应用在新平台上的基本兼容性测试,则只需现有 APK 和一台硬件设备或模拟器。执行基本测试不一定需要更新整个部署环境。
+
+
+
+</p>
+
+<p>
+  如果您想针对 Android N 或为了使用新的 Android N API 而修改您的应用,则需要一个已更新为支持 Android N 的部署环境并对其进行设置。<a href="{@docRoot}preview/setup-sdk.html">设置以开发 Android N 应用</a>介绍了详细信息。
+
+
+
+</p>
+
+
+<h2 id="device-preview">设置硬件设备</h2>
+
+<p>
+  N Developer Preview 提供适用于各种硬件设备(手机、平板、电视等)的系统更新,您可以使用这些设备测试自己的应用。
+
+</p>
+
+<p>
+  如果您可以访问受支持的设备,则可通过以下方式之一将其更新到 Developer  Preview 里程碑构建版本:
+
+</p>
+
+<ul>
+  <li>通过
+<a href="https://g.co/androidbeta">Android Beta 计划</a><strong>注册设备以获取自动 OTA 系统更新</strong>。注册后,您的设备即会收到 N Developer Preview 中所有里程碑构建版本的定期无线 (OTA) 更新。建议采用此方法,因为它允许您通过各种版本的 N Developer Preview 从您当前的环境实现无缝转换。
+
+
+</li>
+  <li><strong>下载 Developer Preview 系统映像并刷写设备</strong>。系统不会为手动刷写的设备自动提供 OTA 更新,不过您可以将这些设备注册参加 Android Beta 计划以获取 OTA 更新。
+
+ </li>
+</ul>
+
+<h3 id="ota">注册设备以获取自动 OTA 更新</h3>
+
+<p>
+  如果您可以访问受支持的设备(参见“下载”表格中的列表),则可以通过将该设备注册参加
+<a href="https://g.co/androidbeta">Android Beta 计划</a>,获取 Android Preview 的无线更新。系统将自动下载这些更新并如正式系统更新一样更新您的设备。
+
+
+
+</p>
+
+<p>
+  您可以随时取消注册设备。取消注册后,设备将收到其可用的最新生产版本的 Android 系统(例如 Android 6.0 Marshmallow)的 OTA 更新。该更新要求完全重置设备,因此设备上的用户数据将被删除。在取消注册设备之前,务必先<strong>备份重要数据</strong>。
+
+
+
+
+</p>
+
+<p>
+  如需了解详细信息并注册您的设备,请参阅
+<a href="https://g.co/androidbeta">Android Beta 计划</a>网站。
+</p>
+
+<p class="note"><strong>注:</strong>取消注册要求完全重置设备。务必先备份重要数据。
+
+
+</p>
+
+<h3 id="flash">手动刷写设备</h3>
+
+<p>
+  您可以随时下载最新的 Developer Preview 系统映像并将其手动刷入设备。请参阅下表下载适合您的测试设备的系统映像。如果您需要精确控制测试环境,或者需要经常重新安装系统,比如为了进行自动测试而重新安装,则手动刷写设备比较有用。
+
+
+
+ 
+</p>
+
+<!-- You can flash by ota or system image --><p>
+  在设备上安装系统映像会<strong>删除设备中的所有数据</strong>,因此务必先备份数据。
+
+</p>
+
+<p>
+  备份设备数据并下载下面与设备匹配的系统映像后,请按照 <a href="https://developers.google.com/android/nexus/images#instructions">developers.google.com/android</a>
+中的说明将映像刷入设备中。
+
+</p>
+
+<p>
+  手动刷入的系统映像<strong>不会自动接收更高 Developer Preview 里程碑构建版本的 OTA 更新</strong>。请确保您的环境处于最新状态,并在每次有新的 Developer Preview 里程碑构建版本发布时刷入新的系统映像。
+
+
+
+</p>
+
+<p>
+  如果在手动刷写设备后您确定需要获取 OTA 更新,则只需将设备注册参加
+<a href="https://g.co/androidbeta">Android Beta 计划</a>即可。您可以随时注册设备以通过无线下载方式接收下一次的 Preview 更新。
+
+ 
+</p>
+
+<table>
+  <tr>
+    <th scope="col">设备</th>
+    <th scope="col">下载/校验和</th>
+  </tr>
+
+  <tr id="bullhead">
+    <td>Nexus 5X <br>"bullhead"</td>
+    <td><a href="#top" onclick="onDownload(this)">bullhead-npc56p-preview-6c877a3d.tgz</a><br>
+      MD5: b5cf874021023b398f5b983b24913f5d<br>
+      SHA-1: 6c877a3d9fae7ec8a1678448e325b77b7a7b143a
+    </td>
+  </tr>
+
+  <tr id="shamu">
+    <td>Nexus 6 <br>"shamu"</td>
+    <td><a href="#top" onclick="onDownload(this)">shamu-npc56p-preview-54b13c67.tgz</a><br>
+      MD5: af183638cf34e0eb944a1957d7696f60<br>
+      SHA-1: 54b13c6703d369cc79a8fd8728fe4103c6343973
+    </td>
+  </tr>
+
+  <tr id="angler">
+    <td>Nexus 6P <br>"angler"</td>
+    <td><a href="#top" onclick="onDownload(this)">angler-npc56p-preview-85ffc1b1.tgz</a><br>
+      MD5: bc4934ea7bd325753eee1606d3725a24<br>
+      SHA-1: 85ffc1b1be402b1b96f9ba10929e86bba6c6c588
+    </td>
+  </tr>
+
+  <tr id="volantis">
+    <td>Nexus 9 <br>"volantis"</td>
+    <td><a href="#top" onclick="onDownload(this)">volantis-npc56p-preview-0e8ec8ef.tgz</a><br>
+      MD5: c901334c6158351e945f188167ae56f4<br>
+      SHA-1: 0e8ec8ef98c7a8d4f58d15f90afc5176303efca4
+    </td>
+  </tr>
+
+  <tr id="volantisg">
+    <td>Nexus 9G <br>"volantisg"</td>
+    <td><a href="#top" onclick="onDownload(this)">volantisg-npc56p-preview-1bafdbfb.tgz</a><br>
+      MD5: 7bb95bebc478d7257cccb4652899d1b4<br>
+      SHA-1: 1bafdbfb502e979a9fe4c257a379c4c7af8a3ae6
+    </td>
+  </tr>
+
+  <tr id="fugu">
+    <td>Nexus Player <br>"fugu"</td>
+    <td><a href="#top" onclick="onDownload(this)">fugu-npc56r-preview-7027d5b6.tgz</a><br>
+      MD5: f5d3d8f75836ccfe4c70e8162e498be4<br>
+      SHA-1: 7027d5b662bceda4c80a91a0a14ef0e5a7ba795b
+    </td>
+  </tr>
+
+  <tr id="ryu">
+    <td>Pixel C <br>"ryu"</td>
+    <td><a href="#top" onclick="onDownload(this)">ryu-npc56p-preview-335a86a4.tgz</a><br>
+      MD5: 4e21fb183bbbf467bee91598d587fd2e<br>
+      SHA-1: 335a86a435ee51f18464de343ad2e071c38f0e92
+    </td>
+  </tr>
+  <tr id="seed">
+    <td>General Mobile 4G (Android One) <br>"seed"</td>
+    <td><a href="#top" onclick="onDownload(this)">seed_l8150-npc56p-preview-82472ebc.tgz</a><br>
+      MD5: 983e083bc7cd0c4a2d39d6ebaa20202a<br>
+      SHA-1: 82472ebc9a6054a103f53cb400a1351913c95127
+    </td>
+  </tr>
+
+</table>
+
+<h3 id="revertDevice">从设备卸载 Preview</h3>
+
+<p>
+  如果您想从设备卸载 Preview,可以通过以下方式之一来完成:
+ </p>
+  <ul>
+    <li><strong>获取出厂规格系统映像</strong>,然后手动将其刷入设备中。
+
+      <ul>
+          <li>对于 <strong>Nexus 设备和 Pixel C 设备</strong>,请参阅<a href="http://developers.google.com/android/nexus/images">适用于 Nexus 设备的出厂映像</a>页面进行下载。
+
+ </li>
+        <li>对于<strong>其他设备</strong>,请直接联系设备制造商,或者,如果设备是 Android Beta 计划支持的设备,则您可以将设备注册参加该计划,然后取消注册(见下文)。
+
+
+</li>
+      </ul>
+    </li>
+    <li><strong>从 Android Beta 计划取消注册设备</strong>。如果设备已注册参加 <a href="https://g.co/androidbeta">Android Beta
+ 计划</a>,则只需从计划中取消注册该设备即可,与是何种设备无关。
+
+  <p>
+    取消注册后,设备将收到其可用的最新生产版本的 Android 系统(例如 Android 6.0 Marshmallow)的 OTA 更新。该更新要求完全重置设备,因此设备上的用户数据将被删除。在取消注册设备之前,务必先<strong>备份重要数据</strong>。
+
+
+
+
+  </p>
+  </li>
+</ul>
+
+<p class="note"><strong>注:</strong>如果要在计划结束之前卸载 Developer Preview 系统映像,则需要完全重置设备并删除设备上的所有用户数据。
+
+
+
+</p>
+
+
+<h2 id="setupAVD">设置模拟器</h2>
+
+<p>要使用 Android 模拟器运行 Android N Preview,需要下载
+Android N Preview SDK,并为模拟器创建一个虚拟设备。
+</p>
+
+<p>首先,按照如下操作下载 Android N Preview SDK(如果您在<a href="{@docRoot}preview/setup-sdk.html">设置以开发 Android N 应用</a>过程中即已获得此 SDK,则可跳过这部分):
+
+
+
+<ol>
+  <li>在 Android Studio 中,打开“Settings”对话框
+(Windows/Linux:<strong>File &gt; Settings</strong>;Mac:<strong>Android Studio &gt; Preferences</strong>)。在左侧面板中,选择 <strong>Appearance &amp; Behavior &gt;
+  System Settings &gt; Android SDK</strong>。
+
+
+
+  <li>点击 <strong>SDK Platforms</strong> 选项卡,然后选中
+ <strong>Android N Preview</strong> 复选框。</li>
+
+  <li>点击 <strong>SDK Tools</strong> 选项卡,然后选中
+ <strong>Android SDK Build Tools</strong>、<strong>Android SDK
+ Platform-Tools</strong> 和 <strong>Android SDK Tools</strong> 复选框。
+
+  </li>
+
+  <li>点击 <strong>OK</strong> 并接受要安装的任何软件包的许可协议。
+
+  </li>
+</ol>
+
+<p>现在,您应该有 <strong>Android SDK Built-Tools 24.0 0 rc1</strong>、<strong>Platform-Tools 24.0.0 rc1</strong> 和 <strong>SDK Tools
+25.0.9</strong>。如果您尚未将 SDK Tools 更新至 25.0.9,则将无法运行 Android N 的 x86_64 系统映像。
+
+</p>
+
+
+<p>现在,使用 Android N 系统映像创建虚拟设备:</p>
+
+<ol>
+  <li>通过选择 <strong>Tools &gt; Android &gt;
+ AVD Manager</strong> 打开 AVD Manager。</li>
+  <li>点击 <strong>Create Virtual Device</strong>。</li>
+  <li>选择设备,例如 Nexus 5X、Nexus 6P、Nexus 9 或 Android TV,然后点击 <strong>Next</strong>。
+</li>
+  <li>选择 <strong>N</strong> 系统映像(带
+<strong>x86</strong> ABI),然后点击 <strong>Next</strong>。(适用于 Android N Preview 的 Android 模拟器当前仅支持 x86 系统映像。)
+
+
+  <li>完成余下 AVD 配置并点击
+ <strong>Finish</strong>。</li>
+</ol>
+
+<p>现在,您可以使用 Android N Preview AVD 启动 Android 模拟器。</p>
+
+<p>
+要获得 Android 模拟器最佳运行体验,请安装 Android Studio 2.1 Preview,该版本支持 <a href="http://tools.android.com/tech-docs/emulator">Android Emulator 2.0 Beta</a>,与
+Android Studio 1.5 中的模拟器相比,其运行速度快得多。
+
+</p>
+
+<p class="note"><strong>注:</strong>如果您当前使用的是 Android Studio 2.0 Beta,则有一个已知问题会阻止您使用 N Preview 系统映像创建 AVD,此时您需要使用 Android Studio 2.1 Preview 创建 AVD。
+
+
+
+</p>
+
+<p>如需了解有关创建虚拟设备的详细信息,请参阅<a href="{@docRoot}tools/devices/index.html">管理虚拟设备</a>。
+</p>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+  </div><!-- landing -->
+
+</div><!-- relative wrapper -->
+
+
+
+<script>
+  var urlRoot = "http://storage.googleapis.com/androiddevelopers/shareables/preview/";
+  function onDownload(link) {
+
+    $("#downloadForRealz").html("Download " + $(link).text());
+    $("#downloadForRealz").attr('href', urlRoot + $(link).text());
+
+    $("#tos").fadeIn('fast');
+    $("#landing").fadeOut('fast');
+
+    return true;
+  }
+
+
+  function onAgreeChecked() {
+    /* verify that the TOS is agreed */
+    if ($("input#agree").is(":checked")) {
+      /* reveal the download button */
+      $("a#downloadForRealz").removeClass('disabled');
+    } else {
+      $("a#downloadForRealz").addClass('disabled');
+    }
+  }
+
+  function onDownloadForRealz(link) {
+    if ($("input#agree").is(':checked')) {
+    /*
+      $("#tos").fadeOut('fast');
+      $("#landing").fadeIn('fast');
+    */
+
+      ga('send', 'event', 'M Preview', 'System Image', $("#downloadForRealz").html());
+
+    /*
+      location.hash = "";
+    */
+      return true;
+    } else {
+      return false;
+    }
+  }
+
+  $(window).hashchange( function(){
+    if (location.hash == "") {
+      location.reload();
+    }
+  });
+
+</script>
diff --git a/docs/html-intl/intl/zh-cn/preview/features/background-optimization.jd b/docs/html-intl/intl/zh-cn/preview/features/background-optimization.jd
new file mode 100644
index 0000000..7a12ecf
--- /dev/null
+++ b/docs/html-intl/intl/zh-cn/preview/features/background-optimization.jd
@@ -0,0 +1,388 @@
+page.title=后台优化
+page.metaDescription=隐式广播的新限制。
+page.keywords="android N", "implicit broadcasts", "job scheduler"
+@jd:body
+
+<div id="qv-wrapper">
+  <div id="qv">
+    <h2>
+      本文内容
+    </h2>
+
+    <ol>
+      <li>
+        <a href="#connectivity-action">对 CONNECTIVITY_ACTION 的限制</a>
+      </li>
+
+      <li>
+        <a href="#sched-jobs">安排连入无限流量连接时的网络作业</a>
+
+      </li>
+
+      <li>
+        <a href="#monitor-conn">在应用运行时监控网络连接</a>
+
+      </li>
+
+      <li>
+        <a href="#media-broadcasts">对 NEW_PICTURE 和 NEW_VIDEO 的限制</a>
+
+      </li>
+
+      <li>
+        <a href="#new-jobinfo">新的 JobInfo 方法</a>
+      </li>
+
+      <li>
+        </a><a href="#new-jobparam">新的 JobParameter 方法
+      </li>
+
+      <li>
+        <a href="#further-optimization">进一步优化您的应用</a>
+      </li>
+    </ol>
+  </div>
+</div>
+
+<p>
+  后台进程非常耗费内存和电池。例如,隐式广播可以启动许多已注册侦听它的后台进程,即使这些进程可能没有执行许多工作。
+
+这会严重影响设备性能和用户体验。
+
+</p>
+
+<p>
+  为减缓这个问题,N Developer Preview 应用了以下限制:
+
+</p>
+
+<ul>
+  <li>面向 Preview 的应用不会收到 {@link
+android.net.ConnectivityManager#CONNECTIVITY_ACTION} 广播,即使它们在清单文件中注册接收这些广播。
+在前台运行的应用如果使用 {@link
+android.content.Context#registerReceiver Context.registerReceiver()} 注册 {@link android.content.BroadcastReceiver},则仍可在主线程上侦听 {@code CONNECTIVITY_CHANGE}。
+
+
+  </li>
+
+  <li>应用无法发送或接收 {@link
+android.hardware.Camera#ACTION_NEW_PICTURE} 或 {@link
+android.hardware.Camera#ACTION_NEW_VIDEO} 广播。此项优化会影响所有应用,而不仅仅是面向 Preview 的应用。
+
+  </li>
+</ul>
+
+<p>
+  Android 框架提供多个解决方案来缓解对这些隐式广播的需求。
+例如,{@link android.app.job.JobScheduler}
+和<a href="https://developers.google.com/android/reference/com/google/android/gms/gcm/GcmNetworkManager">
+{@code GcmNetworkManager}</a> 提供了一个稳健可靠的机制来安排满足指定条件(例如连入无限流量网络)时所执行的网络操作。
+
+现在,您还可以使用 {@link android.app.job.JobScheduler}
+来响应内容提供程序所发生的变更。{@link android.app.job.JobInfo}
+对象封装了 {@link android.app.job.JobScheduler}
+用来安排您的作业的参数。如果符合作业条件,系统将在应用的 {@link android.app.job.JobService} 上执行此作业。
+
+</p>
+
+<p>
+  在本文档中,我们将学习如何使用备用方法(如 {@link android.app.job.JobScheduler})调整您的应用以符合这些新限制。
+
+
+</p>
+
+<h2 id="connectivity-action">
+  对 CONNECTIVITY_ACTION 的限制
+</h2>
+
+<p>
+  面向 N Developer Preview 的应用不会收到 {@link
+android.net.ConnectivityManager#CONNECTIVITY_ACTION} 广播,即使它们在清单文件中注册接收这些广播亦是如此,依赖此广播的流程也不会启动。
+
+这可能会给需要侦听网络变化或者需要在设备接入无限流量网络时执行批量网络活动的应用造成问题。
+
+Android 框架中已存在多个可绕过此限制的解决方案,但需要根据您想要应用实现的目标来选择正确的解决方案。
+
+
+</p>
+
+<p class="note">
+  <strong>注</strong>:当应用位于前台时,通过
+{@link android.content.Context#registerReceiver Context.registerReceiver()}
+中注册的 {@link android.content.BroadcastReceiver} 将继续接收这些广播。
+</p>
+
+<h3 id="sched-jobs">
+  安排连入无限流量连接时的网络作业
+</h3>
+
+<p>
+  使用 {@link android.app.job.JobInfo.Builder JobInfo.Builder} 类构建
+{@link android.app.job.JobInfo} 对象时,应用 {@link
+android.app.job.JobInfo.Builder#setRequiredNetworkType
+setRequiredNetworkType()} 方法,并将 {@link android.app.job.JobInfo
+JobInfo.NETWORK_TYPE_UNMETERED} 作为作业参数传递。以下代码示例展示如何安排当设备接入无限流量网络且正在充电时要运行的服务:
+
+
+</p>
+
+<pre>
+public static final int MY_BACKGROUND_JOB = 0;
+...
+public static void scheduleJob(Context context) {
+  JobScheduler js =
+      (JobScheduler) context.getSystemService(Context.JOB_SCHEDULER_SERVICE);
+  JobInfo job = new JobInfo.Builder(
+    MY_BACKGROUND_JOB,
+    new ComponentName(context, MyJobService.class))
+      .setRequiredNetworkType(JobInfo.NETWORK_TYPE_UNMETERED)
+      .setRequiresCharging(true)
+      .build();
+  js.schedule(job);
+}
+</pre>
+
+<p>
+  当符合作业条件时,应用会收到回调以运行指定 {@code JobService.class} 中的 {@link android.app.job.JobService#onStartJob onStartJob()} 方法。
+
+如需查看 {@link
+  android.app.job.JobScheduler} 实现的更多示例,请参阅 <a href="{@docRoot}samples/JobScheduler/index.html">JobScheduler 示例应用</a>。
+</p>
+
+<p>
+  使用 GMSCore 服务且面向 Android 5.0(API 级别 21)或更低版本系统的应用可以使用<a href="https://developers.google.com/android/reference/com/google/android/gms/gcm/GcmNetworkManager">
+{@code GcmNetworkManager}</a> 并指定 {@code Task.NETWORK_STATE_UNMETERED}。
+
+</p>
+
+<h3 id="monitor-conn">
+  在应用运行时监控网络连接
+</h3>
+
+<p>
+  在前台运行的应用仍可以通过注册的 {@link
+android.content.BroadcastReceiver} 侦听 {@code
+CONNECTIVITY_CHANGE}。不过,{@link
+android.net.ConnectivityManager} API 提供了一个更稳健可靠的方法,可以仅在符合指定的网络条件时才请求回调。
+
+</p>
+
+<p>
+  {@link android.net.NetworkRequest} 对象根据 {@link android.net.NetworkCapabilities} 定义网络回调的参数。
+使用 {@link
+android.net.NetworkRequest.Builder NetworkRequest.Builder} 类创建 {@link android.net.NetworkRequest} 对象。然后,{@link
+android.net.ConnectivityManager#registerNetworkCallback(android.net.NetworkRequest,
+android.net.ConnectivityManager.NetworkCallback) registerNetworkCallback()}
+将 {@link android.net.NetworkRequest} 对象传递给系统。
+当符合网络条件时,应用会收到回调以执行在其 {@link
+android.net.ConnectivityManager.NetworkCallback} 类中定义的
+{@link android.net.ConnectivityManager.NetworkCallback#onAvailable
+onAvailable()} 方法。
+
+</p>
+
+<p>
+  应用继续接收回调,直至应用退出或调用
+{@link android.net.ConnectivityManager#unregisterNetworkCallback
+unregisterNetworkCallback()}。
+</p>
+
+<h2 id="media-broadcasts">
+  对 NEW_PICTURE 和 NEW_VIDEO 的限制
+</h2>
+
+<p>
+  在 N Developer Preview 中,应用无法发送或接收 {@link
+android.hardware.Camera#ACTION_NEW_PICTURE} 或 {@link
+android.hardware.Camera#ACTION_NEW_VIDEO} 广播。此限制有助于缓解必须唤醒多个应用以处理新图像或视频时对性能和用户体验造成的影响。
+
+N Developer Preview 扩展了 {@link android.app.job.JobInfo} 和 {@link
+android.app.job.JobParameters} 以提供备用解决方案。
+
+</p>
+
+<h3 id="new-jobinfo">
+  新的 JobInfo 方法
+</h3>
+
+<p>
+  为了针对内容 URI 变化触发作业,N Developer Preview 使用以下方法扩展了 {@link android.app.job.JobInfo} API。
+
+</p>
+
+<dl>
+  <dt>
+    {@code JobInfo.TriggerContentUri()}
+  </dt>
+
+  <dd>
+    封装针对内容 URI 变化触发作业所需的参数。
+  </dd>
+
+  <dt>
+    {@code JobInfo.Builder.addTriggerContentUri()}
+  </dt>
+
+  <dd>
+    将 {@code TriggerContentUri} 对象传递给 {@link
+android.app.job.JobInfo}。{@link android.database.ContentObserver}
+监控已封装的内容 URI。如果存在多个与某个作业关联的 {@code
+TriggerContentUri} 对象,则系统会提供一个回调,即使其报告仅一个内容 URI 发生变化。
+
+  </dd>
+
+  <dd>
+    如果给定 URI 的任何子级发生变化,则添加 {@code TriggerContentUri.FLAG_NOTIFY_FOR_DESCENDANTS} 标志以触发作业。
+此标志对应于传递给 {@link
+android.content.ContentResolver#registerContentObserver    registerContentObserver()} 的
+{@code notifyForDescendants} 参数。
+
+  </dd>
+</dl>
+
+<p class="note">
+  <strong>注:</strong> {@code TriggerContentUri()} 无法与 {@link android.app.job.JobInfo.Builder#setPeriodic
+setPeriodic()} 或 {@link android.app.job.JobInfo.Builder#setPersisted
+setPersisted()} 结合使用。
+若要持续监控内容变化,则可在应用的 {@link
+android.app.job.JobService} 完成处理最新的回调前安排新的
+{@link android.app.job.JobInfo}。
+</p>
+
+<p>
+  以下示例代码展示如何安排当系统报告内容 URI {@code MEDIA_URI} 所发生变化时要触发的作业:
+
+</p>
+
+<pre>
+public static final int MY_BACKGROUND_JOB = 0;
+...
+public static void scheduleJob(Context context) {
+  JobScheduler js =
+          (JobScheduler) context.getSystemService(Context.JOB_SCHEDULER_SERVICE);
+  JobInfo.Builder builder = new JobInfo.Builder(
+          MY_BACKGROUND_JOB,
+          new ComponentName(context, MediaContentJob.class));
+  builder.addTriggerContentUri(
+          new JobInfo.TriggerContentUri(MEDIA_URI,
+          JobInfo.TriggerContentUri.FLAG_NOTIFY_FOR_DESCENDANTS));
+  js.schedule(builder.build());
+}
+</pre>
+<p>
+  当系统报告指定内容 URI 所发生变化时,应用将收到一个回调,并向 {@code MediaContentJob.class} 中的 {@link android.app.job.JobService#onStartJob onStartJob()}
+方法传递一个 {@link android.app.job.JobParameters} 对象。
+
+
+</p>
+
+<h3 id="new-jobparam">
+  新的 JobParameter 方法
+</h3>
+
+<p>
+  N Developer Preview 也扩展了{@link android.app.job.JobParameters},以允许应用接收有关哪些内容权限和 URI 已触发作业的有用信息:
+
+
+</p>
+
+<dl>
+  <dt>
+    {@code Uri[] getTriggeredContentUris()}
+  </dt>
+
+  <dd>
+    返回已触发作业的 URI 数组。如果没有任何 URI 触发作业(例如,作业是因截止期限或其他一些原因触发的),或者已更改的 URI 数量超过 50,该数组将为 {@code
+null}。
+
+
+  </dd>
+
+  <dt>
+    {@code String[] getTriggeredContentAuthorities()}
+  </dt>
+
+  <dd>
+    返回已触发作业的内容权限的字符串数组。
+    如果返回的数组不是 {@code null},请使用 {@code getTriggeredContentUris()}
+检索有关哪些 URI 已更改的详细信息。
+  </dd>
+</dl>
+
+<p>
+  以下示例代码重写 {@link
+android.app.job.JobService#onStartJob JobService.onStartJob()} 方法并记录已触发作业的内容权限和 URI:
+
+</p>
+
+<pre>
+&#64;Override
+public boolean onStartJob(JobParameters params) {
+  StringBuilder sb = new StringBuilder();
+  sb.append("Media content has changed:\n");
+  if (params.getTriggeredContentAuthorities() != null) {
+      sb.append("Authorities: ");
+      boolean first = true;
+      for (String auth :
+          params.getTriggeredContentAuthorities()) {
+          if (first) {
+              first = false;
+          } else {
+             sb.append(", ");
+          }
+           sb.append(auth);
+      }
+      if (params.getTriggeredContentUris() != null) {
+          for (Uri uri : params.getTriggeredContentUris()) {
+              sb.append("\n");
+              sb.append(uri);
+          }
+      }
+  } else {
+      sb.append("(No content)");
+  }
+  Log.i(TAG, sb.toString());
+  return true;
+}
+</pre>
+
+<h2 id="further-optimization">
+  进一步优化您的应用
+</h2>
+
+<p>
+  优化您的应用以在低内存设备上或在低内存条件下运行,这样可以提升性能和用户体验。
+删除后台服务依赖关系和静态注册的隐式广播接收器可帮助您的应用在此类设备上运行得更好。
+
+尽管 N Developer Preview 采取了措施以减少部分问题,但建议您优化自己的应用,使其能够在完全不使用这些后台进程的情况下运行。
+
+
+
+</p>
+
+<p>
+  N Developer Preview 推出了一些附加 <a href="{@docRoot}tools/help/adb.html">Android Debug Bridge (ADB)</a> 命令,您可以使用这些命令测试在禁用这些后台进程情况下的应用行为:
+
+</p>
+
+<ul>
+  <li>要模拟隐式广播和后台服务不可用的条件,请输入以下命令:
+
+  </li>
+
+  <li style="list-style: none; display: inline">
+<pre class="no-pretty-print">
+{@code $ adb shell cmd appops set RUN_IN_BACKGROUND ignore}
+</pre>
+  </li>
+
+  <li>要重新启用隐式广播和后台服务,请输入以下命令:
+
+  </li>
+
+  <li style="list-style: none; display: inline">
+<pre class="no-pretty-print">
+{@code $ adb shell cmd appops set RUN_IN_BACKGROUND allow}
+</pre>
+  </li>
+</ul>
\ No newline at end of file
diff --git a/docs/html-intl/intl/zh-cn/preview/features/direct-boot.jd b/docs/html-intl/intl/zh-cn/preview/features/direct-boot.jd
new file mode 100644
index 0000000..176896a
--- /dev/null
+++ b/docs/html-intl/intl/zh-cn/preview/features/direct-boot.jd
@@ -0,0 +1,180 @@
+page.title=直接启动
+page.keywords=preview,sdk,direct boot
+page.tags=androidn
+
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+  <h2>本文内容</h2>
+  <ol>
+    <li><a href="#run">请求在直接启动时运行</a></li>
+    <li><a href="#access">访问设备加密存储</a></li>
+    <li><a href="#notification">接收用户解锁通知</a></li>
+    <li><a href="#migrating">迁移现有数据</a></li>
+    <li><a href="#testing">测试您的加密感知应用</a></li>
+  </ol>
+</div>
+</div>
+
+<p>当设备已开机但用户尚未解锁设备时,Android N 将在安全的 <i>直接启动</i> 模式下运行。
+
+为支持此操作,系统为数据提供两个存储位置:</p>
+
+<ul>
+<li><i>凭据加密存储</i>,这是默认存储位置,仅在用户解锁设备后可用。
+</li>
+<li><i>设备加密存储</i>,该存储位置在“直接启动”模式下和用户解锁设备后均可使用。
+</li>
+</ul>
+
+<p>默认情况下,应用不会在“直接启动”模式下运行。如果您的应用需要在“直接启动”模式下进行操作,您可以注册在此模式期间应运行的应用组件。
+
+对于需要在“直接启动”模式下运行的应用,常见的一些用例包括:
+</p>
+
+<ul>
+<li>已安排通知的应用,如闹铃应用。
+</li>
+<li>提供重要用户通知的应用,如短信应用。</li>
+<li>提供辅助工具服务的应用,如 Talkback。</li>
+</ul>
+
+<p>如果您的应用在“直接启动”模式下运行时需要访问数据,则使用设备加密存储。
+设备加密存储包含使用密钥加密的数据,仅在设备已成功执行验证启动后密钥才可用。
+
+</p>
+
+<p>对于应使用与用户凭据(如 PIN 或密码)关联的密钥加密的数据,请使用凭据加密存储。凭据加密存储仅在用户已成功解锁设备后可用,直到用户再次重启设备。
+
+
+如果用户在解锁设备后启用锁定屏幕,则不会锁定凭据加密存储。
+
+</p>
+
+<h2 id="run">请求在直接启动时运行</h2>
+
+<p>应用必须先向系统注册其组件,然后才能在“直接启动”模式下运行或访问设备加密存储。
+
+应用通过将组件标记为
+<i>加密感知</i>在系统中进行注册。若要将您的组件标记为加密感知,请在清单文件中将 <code>android:encryptionAware</code> 属性设为 true。
+<p>
+
+<p>当设备重启后,加密感知组件可以注册接收来自系统的 <code>LOCKED_BOOT_COMPLETED</code> 广播消息。
+
+此时设备加密存储可用,您的组件可以在“直接启动”模式下执行需要运行的任务,例如触发已设定的闹铃。
+
+</p>
+
+<p>以下代码段展示如何将
+{@link android.content.BroadcastReceiver} 注册为加密感知并在应用清单文件中为 <code>LOCKED_BOOT_COMPLETED</code> 添加 Intent 过滤器:
+</p>
+
+<pre>
+&lt;receiever
+  android:encryptionAware="true" &gt;
+  ...
+  &lt;intent-filter&gt;
+    &lt;action android:name="android.intent.action.LOCKED_BOOT_COMPLETED" /&gt;
+  &lt;/intent-filter&gt;
+&lt;/receiver&gt;
+</pre>
+
+<p>在用户解锁设备后,所有组件均可访问设备加密存储以及凭据加密存储。
+</p>
+
+<h2 id="access">访问设备加密存储</h2>
+
+<p>要访问设备加密存储,请通过调用
+<code>Context.createDeviceEncryptedStorageContext()</code> 创建另一个
+{@link android.content.Context} 实例。使用此上下文执行的所有存储 API 调用均访问设备加密存储。
+以下示例访问设备加密存储并打开现有应用数据文件:
+
+</p>
+
+<pre>
+Context directBootContext = Context.createDeviceEncryptedStorageContext();
+// Access appDataFilename that lives in device encrypted storage
+FileInputStream inStream = directBootContext.openFileInput(appDataFilename);
+// Use inStream to read content...
+</pre>
+
+<p>仅针对在“直接启动”模式下必须可访问的信息使用设备加密存储。请勿将设备加密存储用作通用加密存储。对于专有用户信息,或在“直接启动”模式下不需要的加密数据,请使用凭据加密存储。
+
+
+
+</p>
+
+<h2 id="notification">接收用户解锁通知</h2>
+
+<p>重启后一旦用户解锁了设备,您的应用即可切换至访问凭据加密存储,并使用依赖用户凭据的常规系统服务。
+
+</p>
+
+<p>为了在重启后用户解锁设备时收到通知,请从一个正在运行的组件注册 {@link android.content.BroadcastReceiver} 以侦听 <code>ACTION_USER_UNLOCKED</code> 消息。
+
+或者,您可以接收现有 {@link android.content.Intent#ACTION_BOOT_COMPLETED
+ACTION_BOOT_COMPLETED} 消息,该消息现在表明设备已启动,且用户已解锁设备。
+
+</p>
+
+<p>您可以通过调用 <code>UserManager.isUserUnlocked()</code> 直接查询用户是否已解锁设备。
+</p>
+
+<h2 id="migrating">迁移现有数据</h2>
+
+<p>如果用户将其设备更新为使用“直接启动”模式,您可能需要将现有数据迁移到设备加密存储。
+使用
+<code>Context.migrateSharedPreferencesFrom()</code> 和
+<code>Context.migrateDatabaseFrom()</code> 在凭据加密存储和设备加密存储之间迁移首选项和数据库数据。
+</p>
+
+<p>请运用您的最佳判断来决定从凭据加密存储向设备加密存储迁移哪些数据。
+您不应将专有用户信息(如密码或权限令牌)迁移到设备加密存储。
+
+。在某些情况下,您可能需要在这两个加密存储中管理单独的数据集。
+</p>
+
+<h2 id="testing">测试您的加密感知应用</h2>
+
+<p>使用新的“直接启动”模式测试您的加密感知应用。有两种方式可以启用直接启动模式:
+</p>
+
+<p class="caution"><strong>注意</strong>:启用“直接启动”将擦除设备上的所有用户数据。
+</p>
+
+<p>在已安装 Android N 的受支持的设备上,通过执行以下操作之一启用“直接启动”:
+</p>
+
+<ul>
+<li>在设备上,如果您尚未启用 <b>Developer options</b>,则可通过转到 <b>Settings &gt; About phone</b> 并点击 <b>Build number</b> 七次启用它。
+
+当开发者选项屏幕可用后,转到 <b>Settings &gt; Developer options</b> 并选择 <b>Convert to file encryption</b>。
+
+</li>
+<li>使用以下 adb shell 命令启用“直接启动”模式:
+<pre class="no-pretty-print">
+$ adb reboot-bootloader
+$ fastboot --wipe-and-use-fbe
+</pre>
+</li>
+</ul>
+
+<p>另外,还提供模拟直接启动模式,以防您需要在测试设备上切换模式。
+模拟模式应仅在开发期间使用,否则可能导致数据丢失。
+若要启用模拟直接启动模式,请在设备上设置锁定模式,如果在设置锁定模式时系统提示安全启动屏幕,则选择“No thanks”,然后使用以下 adb shell 命令:
+
+
+</p>
+
+<pre class="no-pretty-print">
+$ adb shell sm set-emulate-fbe true
+</pre>
+
+<p>若要关闭模拟直接启动模式,请使用以下命令:</p>
+
+<pre class="no-pretty-print">
+$ adb shell sm set-emulate-fbe false
+</pre>
+
+<p>使用这些命令会导致设备重启。</p>
diff --git a/docs/html-intl/intl/zh-cn/preview/features/icu4j-framework.jd b/docs/html-intl/intl/zh-cn/preview/features/icu4j-framework.jd
new file mode 100644
index 0000000..1dd5a74
--- /dev/null
+++ b/docs/html-intl/intl/zh-cn/preview/features/icu4j-framework.jd
@@ -0,0 +1,158 @@
+page.title=ICU4J Android 框架 API
+
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+<h2>本文内容:</h2>
+<ol>
+    <li><a href="#relation">与 ICU4J 的关系</a></li>
+    <li><a href="#migration">从 ICU4J 迁移至 android.icu API </a></li>
+    <li><a href="#licence">授权</a></li>
+</ol>
+
+<h2>另请参阅</h2>
+<ol>
+  <li>
+    <a class="external-link" href="http://userguide.icu-project.org">ICU4J 的文档</a>
+  </li>
+
+  <li>
+    <a class="external-link" href="http://site.icu-project.org/#TOC-What-is-ICU-">ICU4J 支持的最新标准</a>
+
+  </li>
+</ol>
+</div>
+</div>
+
+<p>
+  ICU4J 是一个广泛使用的开源 Java 库集合,为软件应用提供 Unicode 和全球化支持。
+Android N 在 {@code android.icu} 软件包下显示 Android 框架中的 ICU4J API 子集,供应用开发者使用。
+
+这些 API 使用设备上具有的本地化数据。
+因此,您可以通过不将 ICU4J 库编译到 APK 来减少 APK 占用空间;相反,您可以只在框架中调用它们。
+
+(在此情况下,您可能想要提供<a href="{@docRoot}google/play/publishing/multiple-apks.html">多个版本的 APK</a>,这样,运行比 Android N 低的 Android 版本的用户可以下载包含 ICU4J 库的应用版本。)
+
+
+
+</p>
+
+<p>
+  本文档开头提供了有关支持这些库所需的最低 Android API 级别的一些基本信息。
+然后,介绍关于 Android 特定的 ICU4J 实现您需要了解的内容。
+最后,介绍如何在 Android 框架中使用 ICU4J API。
+
+</p>
+
+<h2 id="relation">与 ICU4J 的关系</h2>
+
+<p>
+  Android N 通过
+<code>android.icu</code> 软件包(而非 <code>com.ibm.icu</code>)显示 ICU4J API 的子集。由于种种原因,Android 框架可能选择不显示 ICU4J API;例如,Android N 不显示一些已弃用的 API 或 ICU 团队尚未将其声明为“稳定”的 API。
+
+
+
+由于 ICU 团队将来会弃用这些 API,因此,Android 也会将其标记为已弃用,但将继续包含它们。
+
+</p>
+
+<p class="table-caption"><strong>表 1.</strong> Android N 中使用的 ICU 和 CLDR 版本。
+</p>
+<table>
+<tr>
+<th>Android API 级别</th>
+<th>ICU 版本</th>
+<th>CLDR 版本</th>
+</tr>
+<tr>
+<td>Android N</td>
+<td>56</td>
+<td>28</td>
+</tr>
+</table>
+
+<p>以下是几点注意事项:</p>
+
+<ul>
+<li>ICU4J Android 框架 API 不包含所有的 ICU4J API。</li>
+<li>NDK 开发者应了解 Android ICU4C 不受支持。</li>
+<li>Android 框架中的 API 不会取代 Android 对<a href="{@docRoot}guide/topics/resources/localization.html">使用资源进行本地化</a>的支持。
+
+</li>
+</ul>
+
+<h2 id="migration">从 com.ibm.icu 迁移至 android.icu 软件包</h2>
+
+<p>
+  如果您已在应用中使用 ICU4J API,且
+<code>android.icu</code> API 符合您的要求,那么要迁移至框架 API,需要将 Java 导入从 <code>com.ibm.icu</code> 更改为 <code>android.icu</code>。
+
+然后,您可以从 APK 移除您自己的 ICU4J 文件的副本。
+
+</p>
+
+<p class="note">
+  <b>注</b>:ICU4J 框架 API 使用 {@code android.icu}
+命名空间,而不是 {@code com.ibm.icu}。这是为了避免在包含自己的 {@code com.ibm.icu} 库的 APK 中出现命名空间冲突。
+
+</p>
+
+<h3 id="migrate-from-android">
+  从其他 Android SDK API 迁移至 android.icu API
+</h3>
+
+<p>
+  <code>java</code> 和 <code>android</code> 软件包中的某些类与在 ICU4J 中找到的一些类等效。
+不过,ICU4J 通常为标准和语言提供更广泛的支持。
+
+</p>
+<p>下面是一些入门示例:</p>
+<table>
+<tr>
+<th>类</th>
+<th>替代项</th>
+</tr>
+<tr>
+<td><code>java.lang.Character</code> </td>
+<td><code>android.icu.lang.UCharacter</code> </td>
+</tr>
+<tr>
+<td><code>java.text.BreakIterator</code> </td>
+<td><code>android.icu.text.BreakIterator</code> </td>
+</tr>
+<tr>
+<td><code>java.text.DecimalFormat</code> </td>
+<td><code>android.icu.text.DecimalFormat</code> </td>
+</tr>
+<tr>
+<td><code>java.util.Calendar</code></td>
+<td>
+<code>android.icu.util.Calendar</code></td>
+</tr>
+<tr>
+<td><code>android.text.BidiFormatter</code>
+ </td>
+<td><code>android.icu.text.Bidi</code>
+ </td>
+</tr>
+<tr>
+<td><code>android.text.format.DateFormat</code>
+ </td>
+<td><code>android.icu.text.DateFormat</code>
+ </td>
+</tr>
+<tr>
+<td><code>android.text.format.DateUtils</code> </td>
+<td><code>android.icu.text.DateFormat</code>
+<code>android.icu.text.RelativeDateTimeFormatter</code>
+</td>
+</tr>
+</table>
+
+<h2 id="licence">授权</h2>
+
+<p>
+  ICU4J 按照 ICU 许可发布。如需了解详情,请参阅 <a class="external-link" href="http://userguide.icu-project.org/icufaq#TOC-How-is-the-ICU-licensed-">ICU 用户指南</a>。
+
+</p>
diff --git a/docs/html-intl/intl/zh-cn/preview/features/multi-window.jd b/docs/html-intl/intl/zh-cn/preview/features/multi-window.jd
new file mode 100644
index 0000000..8bbd4b1
--- /dev/null
+++ b/docs/html-intl/intl/zh-cn/preview/features/multi-window.jd
@@ -0,0 +1,582 @@
+page.title=多窗口支持
+page.metaDescription=Android N 全新支持同时显示多个应用窗口。
+page.keywords="multi-window", "android N", "split screen", "free-form"
+
+@jd:body
+
+<div id="qv-wrapper">
+  <div id="qv">
+    <h2>本文内容</h2>
+      <ol>
+        <li><a href="#overview">概览</a></li>
+        <li><a href="#lifecycle">多窗口生命周期</a></li>
+        <li><a href="#configuring">针对多窗口模式配置应用
+</a></li>
+        <li><a href="#running">在多窗口模式中运行应用</a></li>
+        <li><a href="#testing">测试应用的多窗口支持</a></li>
+      </ol>
+    <h2>另请参阅</h2>
+      <ol>
+        <li><a class="external-link" href="https://github.com/googlesamples/android-MultiWindowPlayground">多窗口 Playground 示例应用
+</a></li>
+      </ol>
+  </div>
+</div>
+
+<p>
+  Android N 添加了对同时显示多个应用窗口的支持。
+在手持设备上,两个应用可以在<em>分屏</em>模式中左右并排或上下并排显示。
+在电视设备上,应用可以使用<em>画中画</em>模式,在用户与另一个应用交互的同时继续播放视频。
+
+
+</p>
+
+<p>
+  如果您使用 N Preview SDK 构建应用,则可以配置应用处理多窗口显示的方法。
+例如,您可以指定 Activity 的最小允许尺寸。
+您还可以禁用应用的多窗口显示,确保系统仅以全屏模式显示应用。
+
+
+</p>
+
+<h2 id="overview">概览</h2>
+
+<p>
+  Android N 允许多个应用同时共享屏幕。例如,用户可以分屏显示应用,在左边查看网页,同时在右边写邮件。
+
+用户体验取决于设备:
+
+</p>
+
+<ul>
+  <li>运行 Android N 的手持设备具有分屏模式。
+在此模式中,系统以左右并排或上下并排的方式分屏显示两个应用。
+用户可以拖动两个应用之间的分界线,放大其中一个应用,同时缩小另一个。
+
+  </li>
+
+  <li>在运行 Android N 的 Nexus Player 上,应用能以<a href="picture-in-picture.html">画中画模式</a>显示,即在用户浏览网页或与其他应用交互的同时继续显示内容。
+
+
+
+  </li>
+
+  <li>较大设备的制造商可选择启用自由形状模式,在该模式中,用户可以自由调整各 Activity 的尺寸。
+若制造商启用此功能,设备将同时具有自由形状模式和分屏模式。
+
+
+  </li>
+</ul>
+
+<img src="{@docRoot}preview/images/mw-splitscreen.png" alt="" width="650" srcset="{@docRoot}preview/images/mw-splitscreen.png 1x,
+    {@docRoot}preview/images/mw-splitscreen_2x.png 2x," id="img-split-screen" />
+<p class="img-caption">
+  <strong>图 1.</strong> 两个应用在分屏模式中左右并排显示。
+</p>
+
+<p>
+  用户可以通过以下方式切换到多窗口模式:
+</p>
+
+<ul>
+  <li>若用户打开 <a href="{@docRoot}guide/components/recents.html">Overview 屏幕</a>并长按 Activity 标题,则可以拖动该 Activity 至屏幕突出显示的区域,使 Activity 进入多窗口模式。
+
+
+
+  </li>
+
+  <li>若用户长按 Overview 按钮,设备上的当前 Activity 将进入多窗口模式,同时将打开 Overview 屏幕,用户可在该屏幕中选择要共享屏幕的另一个 Activity。
+
+
+  </li>
+</ul>
+
+<p>
+  用户可以在两个 Activity 共享屏幕的同时在这两个 Activity 之间<a href="{@docRoot}guide/topics/ui/drag-drop.html">拖放</a>数据
+
+(在此之前,用户只能在一个 Activity 内部拖放数据)。
+
+</p>
+
+<h2 id="lifecycle">多窗口生命周期</h2>
+
+<p>
+  多窗口模式不会更改 <a href="{@docRoot}training/basics/activity-lifecycle/index.html">Activity 生命周期</a>。
+
+</p>
+
+<p>
+  在多窗口模式中,在指定时间只有最近与用户交互过的 Activity 为活动状态。
+该 Activity 将被视为<em>顶级</em> Activity。
+  所有其他 Activity 虽然可见,但均处于暂停状态。
+  但是,这些已暂停但可见的 Activity 在系统中享有比不可见 Activity 更高的优先级。
+如果用户与其中一个暂停的 Activity 交互,该 Activity 将恢复,而之前的顶级 Activity 将暂停。
+
+
+</p>
+
+<p class="note">
+  <strong>注</strong>:在多窗口模式中,用户仍可以看到处于暂停状态的应用。
+应用在暂停状态下可能仍需要继续其操作。
+例如,处于暂停模式但可见的视频播放应用应继续显示视频。
+因此,我们建议播放视频的 Activity <em>不要</em>暂停其 {@link android.app.Activity#onPause onPause()} 处理程序中的视频。
+
+
+  应暂停 {@link android.app.Activity#onStop
+  onStop()} 中的视频,并恢复 {@link android.app.Activity#onStart
+  onStart()} 中的视频播放。
+</p>
+
+<p>
+  如<a href="{@docRoot}guide/topics/resources/runtime-changes.html">处理运行时变更</a>中所述,用户使用多窗口模式显示应用时,系统将通知 Activity 发生配置变更。
+
+该变更与系统通知应用设备从纵向模式切换到横向模式时的 Activity 生命周期影响基本相同,但设备不仅仅是交换尺寸,而是会变更尺寸。
+
+
+如<a href="{@docRoot}guide/topics/resources/runtime-changes.html">处理运行时变更</a>中所述,您的 Activity 可以自行处理配置变更,或允许系统销毁 Activity,并以新的尺寸重新创建该 Activity。
+
+
+
+</p>
+
+<p>
+  如果用户调整窗口大小,并在任意维度放大窗口尺寸,系统将调整 Activity 以匹配用户操作,同时根据需要发布<a href="{@docRoot}guide/topics/resources/runtime-changes.html">运行时变更</a>。
+
+如果应用在新公开区域的绘制滞后,系统将使用 {@link
+  android.R.attr#windowBackground windowBackground} 属性或默认 <code>windowBackgroundFallback</code> 样式属性指定的颜色暂时填充该区域。
+
+
+</p>
+
+<h2 id="configuring">针对多窗口模式配置应用</h2>
+
+<p>
+  如果您的应用面向 Android N,您可以对应用的 Activity 是否支持多窗口显示以及显示方式进行配置。
+您可以在清单文件中设置属性,以控制大小和布局。
+
+  根 Activity 的属性设置适用于其任务栈中的所有 Activity。
+
+</p>
+
+<p class="note">
+  <strong>注</strong>:如果您使用低于 Android N 版本的 SDK 构建多向应用,则用户在多窗口模式中使用应用时,系统将强制调整应用大小。
+
+系统将显示对话框,提醒用户应用可能会发生异常。
+系统<em>不会</em>调整定向应用的大小;如果用户尝试在多窗口模式下打开定向应用,应用将全屏显示。
+
+
+
+</p>
+
+<h4 id="resizeableActivity">android:resizeableActivity</h4>
+<p>
+  在清单文件的 <code>&lt;activity&gt;</code> 或
+ <code>&lt;application&gt;</code> 节点中设置该属性,启用或禁用多窗口显示:
+
+</p>
+
+<pre>
+android:resizeableActivity=["true" | "false"]
+</pre>
+
+<p>
+  如果该属性设置为 true,Activity 将能以分屏和自由形状模式启动。
+如果此属性设置为 false,Activity 将不支持多窗口模式。
+如果该值为 false,且用户尝试在多窗口模式下启动 Activity,该 Activity 将全屏显示。
+
+
+</p>
+
+<p>
+  如果您的应用面向 Android N,但未对该属性指定值,则该属性的值默认设为 true。
+
+</p>
+
+<h4 id="supportsPictureInPicture">android:supportsPictureInPicture</h4>
+
+<p>
+  在清单文件的 <code>&lt;activity&gt;</code> 节点中设置该属性,指明 Activity 是否支持画中画显示。
+如果 <code>android:resizeableActivity</code> 为 false,将忽略该属性。
+
+</p>
+
+<pre>
+android:supportsPictureInPicture=["true" | "false"]
+</pre>
+
+<h3 id="layout">布局属性</h3>
+
+<p>
+  对于 Android N,<code>&lt;layout&gt;</code> 清单文件元素支持以下几种属性,这些属性影响 Activity 在多窗口模式中的行为:
+
+
+</p>
+
+<dl>
+  <dt>
+    <code>android:defaultWidth</code>
+  </dt>
+
+  <dd>
+    以自由形状模式启动时 Activity 的默认宽度。
+  </dd>
+
+  <dt>
+    <code>android:defaultHeight</code>
+  </dt>
+
+  <dd>
+    以自由形状模式启动时 Activity 的默认高度。
+  </dd>
+
+  <dt>
+    <code>android:gravity</code>
+  </dt>
+
+  <dd>
+    以自由形状模式启动时 Activity 的初始位置。请参阅 {@link android.view.Gravity} 参考资料,了解合适的值设置。
+
+  </dd>
+
+  <dt>
+    <code>android:minimalSize</code>
+  </dt>
+
+  <dd>
+    分屏和自由形状模式中 Activity 的最小高度和最小宽度。
+如果用户在分屏模式中移动分界线,使 Activity 尺寸低于指定的最小值,系统会将 Activity 裁剪为用户请求的尺寸。
+
+
+  </dd>
+</dl>
+
+<p>
+  例如,以下节点显示了如何指定 Activity 在自由形状模式中显示时 Activity 的默认大小、位置和最小尺寸:
+
+
+</p>
+
+<pre>
+&lt;activity android:name=".MyActivity"&gt;
+    &lt;layout android:defaultHeight="500dp"
+          android:defaultWidth="600dp"
+          android:gravity="top|end"
+          android:minimalSize="450dp" /&gt;
+&lt;/activity&gt;
+</pre>
+
+<h2 id="running">在多窗口模式中运行应用</h2>
+
+<p>
+  Android N 添加了新功能,以支持可在多窗口模式中运行的应用。
+
+</p>
+
+<h3 id="disabled-features">多窗口模式中被禁用的功能</h3>
+
+<p>
+  在设备处于多窗口模式中时,某些功能会被禁用或忽略,因为这些功能对与其他 Activity 或应用共享设备屏幕的 Activity 而言没有意义。
+
+此类功能包括:
+
+<ul>
+  <li>某些<a href="{@docRoot}training/system-ui/index.html">系统 UI</a> 自定义选项将被禁用;例如,在非全屏模式中,应用无法隐藏状态栏。
+
+
+  </li>
+
+  <li>系统将忽略对 <code><a href=
+  "{@docRoot}guide/topics/manifest/activity-element.html#screen"
+  >android:screenOrientation</a></code> 属性所作的更改。
+  </li>
+</ul>
+
+<h3 id="change-notification">多窗口变更通知和查询</h3>
+
+<p>
+  {@link android.app.Activity} 类中添加了以下新方法,以支持多窗口显示。
+有关各方法的详细信息,请参阅 <a href="{@docRoot}preview/setup-sdk.html#docs-dl">N Preview SDK 参考</a>。
+
+</p>
+
+<dl>
+  <dt>
+    <code>Activity.inMultiWindow()</code>
+  </dt>
+
+  <dd>
+    调用该方法以确认 Activity 是否处于多窗口模式。
+  </dd>
+
+  <dt>
+    <code>Activity.inPictureInPicture()</code>
+  </dt>
+
+  <dd>
+    调用该方法以确认 Activity 是否处于画中画模式。
+
+    <p class="note">
+      <strong>注</strong>:画中画模式是多窗口模式的特例。
+如果 <code>myActivity.inPictureInPicture()</code> 返回 true,则 <code>myActivity.inMultiWindow()</code> 也返回 true。
+
+
+    </p>
+  </dd>
+
+  <dt>
+    <code>Activity.onMultiWindowChanged()</code>
+  </dt>
+
+  <dd>
+    Activity 进入或退出多窗口模式时系统将调用此方法。
+在 Activity 进入多窗口模式时,系统向该方法传递 true 值,在退出多窗口模式时,则传递 false 值。
+
+
+  </dd>
+
+  <dt>
+    <code>Activity.onPictureInPictureChanged()</code>
+  </dt>
+
+  <dd>
+    Activity 进入或退出画中画模式时系统将调用此方法。
+在 Activity 进入画中画模式时,系统向该方法传递 true 值,在退出画中画模式时,则传递 false 值。
+
+
+  </dd>
+</dl>
+
+<p>
+  每个方法还有 {@link android.app.Fragment} 版本,例如 <code>Fragment.inMultiWindow()</code>。
+
+</p>
+
+<h3 id="entering-pip">进入画中画模式</h3>
+
+<p>
+  如需在画中画模式中启动 Activity,请调用新方法 <code>Activity.enterPictureInPicture()</code>。
+如果设备不支持画中画模式,则此方法无效。
+如需了解详细信息,请参阅<a href="picture-in-picture.html">画中画</a>文档。
+
+</p>
+
+<h3 id="launch">在多窗口模式中启动新 Activity</h3>
+
+<p>
+  在启动新 Activity 时,用户可以提示系统如果可能,应将新 Activity 显示在当前 Activity 旁边。
+要执行此操作,可使用标志 <code>Intent.FLAG_ACTIVITY_LAUNCH_TO_ADJACENT</code>。
+
+传递此标志将请求以下行为:
+
+</p>
+
+<ul>
+  <li>如果设备处于分屏模式,系统会尝试在启动系统的 Activity 旁创建新 Activity,这样两个 Activity 将共享屏幕。
+
+系统并不一定能实现此操作,但如果可以,系统将使两个 Activity 处于相邻的位置。
+
+  </li>
+
+  <li>如果设备不处于分屏模式,则该标志无效。
+  </li>
+</ul>
+
+<p>
+  如果设备处于自由形状模式,则在启动新 Activity 时,用户可通过调用 <code>ActivityOptions.setLaunchBounds()</code> 指定新 Activity 的尺寸和屏幕位置。
+
+如果设备不处于多窗口模式,则该方法无效。
+
+</p>
+
+<p class="note">
+  <strong>注</strong>:如果您在任务栈中启动 Activity,该 Activity 将替换屏幕上的 Activity,并继承其所有的多窗口属性。
+
+如果要在多窗口模式中以单独的窗口启动新 Activity,则必须在新的任务栈中启动此 Activity。
+
+</p>
+
+<h3 id="dnd">支持拖放</h3>
+
+<p>
+  用户可以在两个 Activity 共享屏幕的同时在这两个 Activity 之间<a href="{@docRoot}guide/topics/ui/drag-drop.html">拖放</a>数据
+
+(在此之前,用户只能在一个 Activity 内部拖放数据)。
+因此,如果您的应用目前不支持拖放功能,您可以在其中添加此功能。
+
+</p>
+
+<p>
+  N Preview SDK 扩展了 <a href="{@docRoot}reference/android/view/package-summary.html"><code>android.view</code></a> 软件包,以支持跨应用拖放。
+有关以下类和方法的详细信息,请参阅 <a href="{@docRoot}preview/setup-sdk.html#docs-dl">N Preview SDK 参考</a>。
+
+
+</p>
+
+<dl>
+  <dt>
+    <code>android.view.DropPermissions</code>
+  </dt>
+
+  <dd>
+    令牌对象,负责指定对接收拖放数据的应用授予的权限。
+
+  </dd>
+
+  <dt>
+    <code>View.startDragAndDrop()</code>
+  </dt>
+
+  <dd>
+    {@link android.view.View#startDrag View.startDrag()} 的新别名。要启用跨 Activity 拖放,请传递新标志 <code>View.DRAG_FLAG_GLOBAL</code>。
+
+如需对接收拖放数据的 Activity 授予 URI 权限,可根据情况传递新标志 <code>View.DRAG_FLAG_GLOBAL_URI_READ</code> 或 <code>View.DRAG_FLAG_GLOBAL_URI_WRITE</code>。
+
+
+
+  </dd>
+
+  <dt>
+    <code>View.cancelDragAndDrop()</code>
+  </dt>
+
+  <dd>
+    取消当前正在进行的拖动操作。只能由发起拖动操作的应用调用。
+
+  </dd>
+
+  <dt>
+    <code>View.updateDragShadow()</code>
+  </dt>
+
+  <dd>
+    替换当前正在进行的拖动操作的拖动阴影。只能由发起拖动操作的应用调用。
+
+  </dd>
+
+  <dt>
+    <code>Activity.requestDropPermissions()</code>
+  </dt>
+
+  <dd>
+    请求使用 {@link android.view.DragEvent} 中包含的 {@link
+    android.content.ClipData} 传递的内容 URI 的权限。
+  </dd>
+</dl>
+
+<h2 id="testing">测试应用的多窗口支持</h2>
+
+<p>
+  无论您是否针对 Android N 更新应用,都应验证应用在多窗口模式下的行为,以防用户尝试在运行 Android N 的设备上以多窗口模式启动应用。
+
+
+</p>
+
+<h3 id="configuring">配置测试设备</h3>
+
+<p>
+  如果在设备上安装 Android N,则将自动支持分屏模式。
+
+</p>
+
+<h3 id="test-non-n">如果应用并非使用 N Preview SDK 构建</h3>
+
+<p>
+  如果您的应用不是使用 N Preview SDK 构建的,则用户尝试在多窗口模式中使用应用时,系统将强制调整应用大小,除非应用进行了定向声明。
+
+
+</p>
+
+<p>
+  如果您的应用没有进行定向声明,则应在运行 Android N 的设备上启动应用,并尝试将应用切换到分屏模式。
+
+验证并确保在强制调整应用大小时用户体验可接受。
+
+</p>
+
+<p>
+  如果应用进行了定向声明,则应尝试将应用切换到多窗口模式。
+验证并确保执行此操作后,应用仍保持全屏模式。
+
+</p>
+
+<h3 id="test-mw">如果支持多窗口模式</h3>
+
+<p>
+  如果您的应用是使用 N Preview SDK 构建的,且未禁用多窗口支持,则分别在分屏和自由形状模式下验证以下行为。
+
+
+</p>
+
+<ul>
+  <li>在全屏模式下启动应用,然后通过长按 Overview 按钮切换到多窗口模式。
+验证并确保应用正常切换。
+  </li>
+
+  <li>直接在多窗口模式中启动应用,验证并确保应用正常启动。
+您可以按一下 Overview 按钮,再长按应用的标题栏,并将其拖动到屏幕上任一突出显示的区域,从而在多窗口模式中启动应用。
+
+
+  </li>
+
+  <li>拖动分界线,在分屏模式中调整应用的大小。
+  验证并确保应用正常调整大小且未崩溃,并且必要的 UI 元素仍可见。
+
+  </li>
+
+  <li>如果您指定了应用的最小尺寸,请尝试将应用尺寸调整到低于最小值。
+验证并确保无法将应用尺寸调整到低于指定最小值。
+
+  </li>
+
+  <li>完成所有测试后,验证并确保应用性能可以接受。例如,验证并确保调整应用大小后更新 UI 没有长时间的滞后。
+
+
+  </li>
+</ul>
+
+<h4 id="test-checklist">测试检查单</h4>
+
+<p>
+  要在多窗口模式中验证应用性能,请执行以下操作。
+除非另有说明,否则请分别在分屏和多窗口模式中执行以下操作。
+
+</p>
+
+<ul>
+  <li>进入和退出多窗口模式。
+  </li>
+
+  <li>从您的应用切换到另一个应用,验证并确保应用在非活动但可见的状态下正常运行。
+例如,如果您的应用在播放视频,则验证并确保在用户与另一个应用交互时视频仍在继续播放。
+
+
+  </li>
+
+  <li>在分屏模式中,尝试移动分界线,放大或缩小应用。
+分别在左右和上下并排显示模式中尝试这些操作。
+验证并确保应用不会崩溃,主要功能可见,且调整操作不需要过长时间。
+
+
+  </li>
+
+  <li>快速连续执行几次调整操作。验证并确保应用不会崩溃或出现内存泄漏。
+有关检查应用内存使用率的信息,请参阅<a href="{@docRoot}tools/debugging/debugging-memory.html">查看内存使用率</a>。
+
+
+  </li>
+
+  <li>在多个不同窗口配置中正常使用应用,验证并确保应用正常运行。
+验证并确保文本可读,且 UI 元素大小正常,不影响交互。
+
+  </li>
+</ul>
+
+<h3 id="test-disabled-mw">如果已禁用多窗口支持</h3>
+
+<p>
+  如果您通过设置 <code>android:resizableActivity="false"</code> 禁用了多窗口支持,则应在运行 Android N 的设备上启动应用,并尝试将应用切换到自由形状和分屏模式。
+
+
+验证并确保执行此操作后,应用仍保持全屏模式。
+
+</p>
diff --git a/docs/html-intl/intl/zh-cn/preview/features/multilingual-support.jd b/docs/html-intl/intl/zh-cn/preview/features/multilingual-support.jd
new file mode 100644
index 0000000..4c32313
--- /dev/null
+++ b/docs/html-intl/intl/zh-cn/preview/features/multilingual-support.jd
@@ -0,0 +1,214 @@
+page.title=语言和区域设置
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+<h2>本文内容:</h2>
+<ol>
+	  <li><a href="#preN">解析语言资源所面临的挑战</a></li>
+    <li><a href="#postN">对资源解析策略的改进</a></li>
+    <li><a href="#design">设计您的应用以支持附加区域设置</a>
+</li>
+
+</ol>
+
+</div>
+</div>
+
+<p>Android N 为多语言用户提供增强的支持,让他们可以在设置中选择多个区域设置。
+Android N 通过大幅扩展受支持的区域设置数量并更改系统解析资源的方式来提供此功能。
+
+全新的解析资源方法更加稳健,并且设计为与现有 APK 兼容,但要格外细心,以发现任何异常行为。
+
+例如,您应进行测试,以确保应用默认显示预期的语言。
+另外,如果应用支持多语言,您应确保此支持合乎预期。
+
+最后,对于您没有将其显式设计为支持的语言,应设法确保应用能够妥善地处理它们。
+</p>
+
+<p>本文档开头介绍 Android N 之前的资源解析策略。接下来介绍 Android N 改进的资源解析策略。
+
+最后,介绍如何充分利用扩展的区域设置数量来支持更多的多语言用户。
+</p>
+
+<h2 id="preN">解析语言资源所面临的挑战</h2>
+
+<p>在 Android N 之前,Android 并非始终能够成功匹配应用和系统区域设置。
+例如,假设应用的默认语言为“US English”,但它也在 {@code es_ES}
+资源文件中对西班牙字符串进行了本地化。
+</p>
+<p>如果您的 Java 代码引用字符串,那么它将按如下所示解析字符串语言:
+</p>
+<ul>
+<li>如果将设备设为 {@code es_MX} (Spanish-Mexico),Android 将从 {@code es_ES} 资源文件加载字符串。
+</li>
+<li>如果将设备设为 {@code en_AU},Android 则会转而使用 {@code
+en_US}。如果用户选择应用根本不支持的语言(如法语),则系统也会默认显示 {@code en_US}。
+</li>
+</ul>
+
+
+<p>之所以会产生上述解析问题,是因为系统在无法找到精确匹配项时会将国家/地区代码从区域设置中去掉。
+例如:</p>
+<p class="table-caption" id="t-resource-res">
+<strong>表 1.</strong> 没有精确区域设置匹配项的资源解析。
+</p>
+<table>
+<tbody>
+<tr>
+<th>用户设置</th>
+<th>应用资源</th>
+<th>资源解析</th>
+</tr>
+<tr>
+<td>fr_CH</td>
+<td>
+默认值 (en)<br>
+de_DE<br>
+es_ES<br>
+fr_FR<br>
+it_IT<br>
+</td>
+ <td>
+尝试 fr_CH =&gt; 失败<br>
+尝试 fr =&gt; 失败<br>
+使用默认值 (en)
+</td>
+ </tr>
+ </tbody>
+</table>
+
+
+<p>在此示例中,系统在不知道用户是否理解英语的情况下显示英语字符串。
+目前,此行为很常见。
+Android N 应该会大幅减少出现此类结果的频率。
+</p>
+
+<h2 id="postN">对资源解析策略的改进</h2>
+<p>Android N 可提供更稳健的资源解析,并自动查找更好的备用方法。
+不过,为了加速解析和提升可维护性,您应以最常用的母语存储资源。
+
+ 例如,如果您之前将西班牙语资源存储在 {@code es-US} 目录中,请将它们移动到 {@code es-419} 目录,该目录包含拉丁美洲西班牙语。
+
+ 同理,如果您在名为 {@code en-GB} 的文件夹中存储有资源字符串,则将此文件夹重命名为 {@code en-001}(国际英语),因为 <code>en-GB</code> 字符串的最常用母语为 {@code en-001}。
+
+
+ 以下示例介绍为什么这些做法可提升性能和资源解析的可靠性。
+</p>
+
+<h3>资源解析示例</h3>
+
+<p>使用 Android N,以不同的方式解析<strong>表 1</strong> 中所描述的案例:
+</p>
+
+<p class="table-caption" id="t-improved-res">
+<strong>表 2.</strong> 针对没有精确区域设置匹配项时改进的资源解析策略。
+</p>
+<table>
+<tr>
+<th>用户设置</th>
+<th>应用资源</th>
+<th>资源解析</th>
+</tr>
+<tr>
+<td><ol>
+<li> fr_CH</li>
+</ol>
+</td>
+<td>
+默认值 (en)<br>
+de_DE<br>
+es_ES<br>
+fr_FR<br>
+it_IT<br>
+</td>
+<td>
+尝试 fr_CH =&gt; 失败<br>
+尝试 fr =&gt; 失败<br>
+尝试 fr 的子项 =&gt; fr_FR<br>
+使用 fr_FR
+</td>
+</tr>
+
+</table>
+
+
+<p>现在,用户获得的是法语资源而不是英语。此示例还表明对于 Android N,您为什么应将法语字符串存储在 {@code fr}(而非 {@code fr_FR})中。此处的做法是匹配最接近的母语,从而使解析更快速且更具预见性。
+
+
+</p>
+
+<p>除了这个改进的解析逻辑外,Android 现在还提供更多的用户语言以供选择。
+下面,我们将意大利语指定为附加用户语言,但假设应用不支持法语,再次尝试上面的示例。
+  </p>
+
+<p class="table-caption" id="t-2d-choice">
+<strong>表 3.</strong> 应用仅与用户的次优区域设置匹配时的资源解析。
+</p>
+<table>
+<tr>
+<th>用户设置</th>
+<th>应用资源</th>
+<th>资源解析</th>
+
+</tr>
+<tr>
+<td><ol>
+<li> fr_CH</li>
+<li> it_CH</li>
+</ol>
+</td>
+<td>
+默认值 (en)<br>
+de_DE<br>
+es_ES<br>
+it_IT<br>
+</td>
+<td>
+尝试 fr_CH =&gt; 失败<br>
+尝试 fr =&gt; 失败<br>
+尝试 fr 的子项 =&gt; 失败<br>
+尝试 it_CH =&gt; 失败<br>
+尝试 it =&gt; 失败<br>
+尝试 it 的子项 =&gt; it_IT<br>
+使用 it_IT
+</td>
+
+</tr>
+
+</table>
+<p>用户仍会获取他们理解的语言,即使应用不支持法语。
+</p>
+
+
+<h2 id="design">设计您的应用以支持附加区域设置</h2>
+<h3>LocaleList API</h3>
+
+<p>Android N 添加了新的 API {@code LocaleList.GetDefault()},从而让应用可以直接查询用户已指定的语言列表。
+您可以使用此 API 创建更成熟的应用行为和更优化的内容显示。
+
+例如,搜索可以基于用户的设置以多种语言显示结果。
+浏览器应用可避免翻译以用户理解的语言显示的页面,键盘应用可自动启用所有适用的布局。
+
+ </p>
+
+<h3>格式化程序</h3>
+
+<p>直到 Android 6.0(API 级别 23),Android 仅支持许多常用语言(en、es、ar、fr、ru)的一个或两个区域设置。
+
+由于每种语言只有几种变体,因此,应用可以通过在资源文件中将一些数字和日期存储为硬编码字符串解决此问题。
+
+不过,随着 Android 扩展了支持的区域设置集,即使在一个区域设置中,日期、时间、货币及类似信息也会存在显著差异。
+
+
+对您的格式进行硬编码会让最终用户困惑不已。
+因此,在针对 Android N 开发应用时请务必使用格式化程序代替硬编码数字和日期字符串。
+</p>
+
+<p>阿拉伯语就是最好的例子,Android N 将对其的支持从一个 {@code ar_EG} 扩展到 27 个阿拉伯语区域设置。
+这些区域设置可以共享大多数资源,但其中一些资源首选 ASCII 数字,另一些则首选本地数字。
+例如,如果您想要创建一个具有数字变量的句子,如“Choose a 4 digit pin”,则按如下所示使用格式化程序:
+
+</p>
+
+<pre> format(locale, "Choose a %d-digit PIN", 4)</pre>
diff --git a/docs/html-intl/intl/zh-cn/preview/features/notification-updates.jd b/docs/html-intl/intl/zh-cn/preview/features/notification-updates.jd
new file mode 100644
index 0000000..3a84648
--- /dev/null
+++ b/docs/html-intl/intl/zh-cn/preview/features/notification-updates.jd
@@ -0,0 +1,328 @@
+page.title=通知
+page.tags=notifications
+helpoutsWidget=true
+page.image=/preview/images/notifications-card.png
+
+trainingnavtop=true
+
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+
+<!-- table of contents -->
+<h2>本文内容</h2>
+<ol>
+  <li><a href="#direct">直接回复</a></li>
+  <li><a href="#bundle">捆绑通知</a></li>
+  <li><a href="#custom">自定义视图</a></li>
+</ol>
+
+</div>
+</div>
+
+<p>Android N 引入了一些新 API,允许应用发布具有高度可见性和交互性的通知。
+</p>
+
+<p>Android N 扩展了现有 {@link android.support.v4.app.RemoteInput} 通知 API,以支持手持式设备上的内联回复。
+此功能允许用户从通知栏快速进行回复,无需访问应用。
+</p>
+
+<p>
+  此外,Android N 还允许捆绑类似的通知并将它们显示为一则通知。
+为了实现此功能,Android N 使用现有的 {@link
+  android.support.v4.app.NotificationCompat.Builder#setGroup
+  NotificationCompat.Builder.setGroup()} 方法。用户可以从通知栏展开各通知,并分别对每则通知进行回复和清除等操作。
+
+
+</p>
+
+<p>最后,Android N 还添加了一些新 API,允许您在应用的自定义通知视图中使用系统装饰元素。
+这些 API 可帮助确保通知视图与标准模板的展示效果相一致。
+
+</p>
+
+<p>本文重点介绍您在应用中使用新通知功能时应加以考虑的一些重要变更。
+</p>
+
+<h2 id="direct">直接回复</h2>
+
+<p>利用 Android N 中的直接回复功能,用户可以直接在通知界面内快速回复短信或更新任务列表。
+
+在手持式设备上,可通过通知中另外附加的按钮进行内联回复操作。
+当用户通过键盘回复时,系统会将文本回复附加到您为通知操作指定的 Intent,并将 Intent 发送到手持式设备应用。
+
+
+
+
+
+<img id="fig-reply-button" src="{@docRoot}preview/images/inline-reply.png" srcset="{@docRoot}preview/images/inline-reply.png 1x,
+  {@docRoot}preview/images/inline-reply_2x.png 2x" width="400">
+<p class="img-caption">
+  <strong>图 1.</strong>Android N 添加了 <strong>Reply</strong> 操作按钮。
+
+</p>
+
+<h3>添加内联回复操作</h3>
+
+<p>要创建支持直接回复的通知操作:
+</p>
+
+<ol>
+<li>创建一个可添加到通知操作的 {@link android.support.v4.app.RemoteInput.Builder} 实例。
+
+该类的构造函数接受系统用作文本输入密钥的字符串。
+之后,手持式设备应用使用该密钥检索输入的文本。
+
+
+<pre>
+// Key for the string that's delivered in the action's intent
+private static final String KEY_TEXT_REPLY = "key_text_reply";
+String replyLabel = getResources().getString(R.string.reply_label);
+RemoteInput remoteInput = new RemoteInput.Builder(KEY_TEXT_REPLY)
+        .setLabel(replyLabel)
+        .build();
+</pre>
+</li>
+<li>使用 <code>addRemoteInput()</code> 向操作附加 {@link android.support.v4.app.RemoteInput} 对象。
+
+
+<pre>
+// Create the reply action and add the remote input
+Notification.Action action =
+        new Notification.Action.Builder(R.drawable.ic_reply_icon,
+                getString(R.string.label), replyPendingIntent)
+                .addRemoteInput(remoteInput)
+                .build();
+</pre>
+</li>
+
+<li>对通知应用操作并发出通知。
+
+<pre>
+// Build the notification and add the action
+Notification notification =
+        new Notification.Builder(mContext)
+                .setSmallIcon(R.drawable.ic_message)
+                .setContentTitle(getString(R.string.title))
+                .setContentText(getString(R.string.content))
+                .addAction(action))
+                .build();
+
+// Issue the notification
+NotificationManager notificationManager =
+        NotificationManager.from(mContext);
+notificationManager.notify(notificationId, notification);
+
+</pre>
+</li>
+
+</ol>
+
+
+<p> 在触发通知操作时系统提示用户输入回复。
+ </p>
+
+<img id="fig-user-input" src="{@docRoot}preview/images/inline-type-reply.png" srcset="{@docRoot}preview/images/inline-type-reply.png 1x,
+    {@docRoot}preview/images/inline-type-reply_2x.png 2x" width="300">
+<p class="img-caption">
+  <strong>图 2.</strong>用户从通知栏输入文本。
+</p>
+
+<h3>从内联回复检索用户输入</h3>
+
+<p>要从通知界面接收用户输入并发送到在回复操作的 Intent 中声明的 Activity:
+</p>
+<ol>
+<li> 通过传递通知操作的 Intent 作为输入参数,调用 {@link android.support.v4.app.RemoteInput#getResultsFromIntent
+  getResultsFromIntent()}。
+该方法返回含有文本回复的 {@link android.os.Bundle}。
+
+</li>
+
+<pre>
+Bundle remoteInput = RemoteInput.getResultsFromIntent(intent);
+</pre>
+
+<li>使用产生的密钥查询捆绑包(提供给 {@link
+  android.support.v4.app.RemoteInput.Builder} 构造函数)。
+</li>
+</ol>
+
+<p>以下代码段说明了方法如何从捆绑包检索输入文本:
+</p>
+
+<pre>
+// Obtain the intent that started this activity by calling
+// Activity.getIntent() and pass it into this method to
+// get the associated string.
+
+private CharSequence getMessageText(Intent intent) {
+    Bundle remoteInput = RemoteInput.getResultsFromIntent(intent);
+    if (remoteInput != null) {
+            return remoteInput.getCharSequence(KEY_TEXT_REPLY);
+            }
+    return null;
+ }
+</pre>
+
+<p>应用可以通过应用逻辑来决定对检索的文本采取哪些操作。对于交互式应用(例如聊天应用),在通知中提供更多上下文(例如多行聊天记录,包括用户自己的消息),以便用户作出相应回复。当用户通过 {@link android.support.v4.app.RemoteInput} 回复时,使用 {@code setRemoteInputHistory()} 方法在回复记录中加入文本。
+
+
+
+
+
+
+</p>
+
+<h2 id="bundle">捆绑通知</h2>
+
+<p>Android N 为开发者提供了表示通知队列的新方法:
+ <i>捆绑通知</i>。这类似于 Android Wear 中的<a href="{@docRoot}training/wearables/notifications/stacks.html">通知堆栈</a>功能。
+
+例如,如果应用为接收的消息创建通知,那么在接收到多个消息时,应用会将通知捆绑在一起成为一个群组。
+
+您可以使用现有的 {@link android.support.v4.app.NotificationCompat.Builder#setGroup
+Builder.setGroup()} 方法捆绑类似的通知。
+</p>
+
+<p>
+  通知组对组内的通知施加层次结构。
+  层次结构的顶层是父级通知,其显示该群组的摘要信息。
+用户可以逐步展开通知组,随着用户深入展开,系统将显示更多信息。
+
+当用户展开捆绑包时,系统将显示其所有子通知的更多信息;当用户展开其中一则通知时,系统显示该通知的所有内容。
+
+
+</p>
+
+<img id="fig-bundles" src="{@docRoot}preview/images/bundles.png" srcset="{@docRoot}preview/images/bundles.png 1x,
+          {@docRoot}preview/images/bundles_2x.png 2x" width="300">
+<p class="img-caption">
+  <strong>图 3.</strong>用户可以逐步展开通知组。
+
+</p>
+
+<p>要了解如何将通知添加到组,请参阅<a href="{@docRoot}training/wearables/notifications/stacks.html#AddGroup">将各通知添加到组</a>。
+
+</p>
+
+
+<h3 id="best-practices">捆绑通知最佳做法</h3>
+<p>本节提供了有关何时使用通知组而非早期版本 Android 平台中的 {@link android.app.Notification.InboxStyle InboxStyle} 通知的指南。
+
+
+</p>
+
+<h3>何时使用捆绑通知</h3>
+
+<p>只有在您的用例满足以下所有条件时才应使用通知组:
+</p>
+
+<ul>
+  <li>子通知为完整通知,且可以单独显示,无需群组摘要。
+</li>
+  <li>单独显示子通知更合理。例如:
+
+  </li>
+  <ul>
+    <li>子通知可操作,且每个子通知均有特定的操作。</li>
+    <li>子通知中包含用户想要查看的更多信息。</li>
+  </ul>
+</ul>
+
+<p>好的通知组用例示例包括:显示传入消息列表的短信应用,或显示收到的电子邮件列表的电子邮件应用。
+
+</p>
+
+<p>
+适合显示单一通知的用例示例包括:从某一个人收到的单独消息,或以列表表示的单行文本项目。
+
+您可以使用 {@link android.app.Notification.InboxStyle InboxStyle} 或
+{@link android.app.Notification.BigTextStyle BigTextStyle} 实现此功能。
+
+
+</p>
+
+<h3 id ="post">显示捆绑通知</h3>
+
+<p>
+  即使组内仅含有一则子通知,应用也应发布组摘要。
+如果只含有一则通知,系统将取消摘要并直接显示子通知。
+这样可确保用户在滑动切换组内的子通知时,系统仍可以提供一致的用户体验。
+
+
+</p>
+
+<p class="note">
+  <strong>注</strong>:本版本 Android N 目前还无法在仅含一则子通知时取消通知组的摘要。
+我们将在之后版本的 Android N 中添加此功能。
+
+</p>
+
+<h3>扫视通知</h3>
+
+<p>虽然系统通常以群组的方式显示子通知,但您可以进行设置,使其暂时作为<a href="{@docRoot}guide/topics/ui/notifiers/notifications.html#Heads-up">浮动通知</a>显示。
+
+
+该功能非常实用,因为其允许用户立即访问最近的子通知以及与其相关的操作。
+
+</p>
+
+
+<h3>后向兼容性</h3>
+
+<p>
+  自 Android 5.0(API 级别 21)起,{@link
+  android.app.Notification} API 中就添加了通知组和远程输入,以支持 Android Wear 设备。
+如果您已经使用这些 API 构建通知,则只需验证应用行为是否符合上述指南,并考虑实现 {@code
+  setRemoteInputHistory()}。
+
+
+</p>
+
+<p>
+  为了支持后向兼容性,支持库的 {@link android.support.v4.app.NotificationCompat} 类中提供了相同的 API,以便您构建可在早期 Android 版本中运行的通知。
+
+
+在手持式设备和平板电脑上,用户只能看到摘要通知,因此应用应仍提供收件箱式或类似形式的通知显示模式,以显示群组的全部信息内容。
+
+鉴于 Android Wear 设备允许用户查看所有子通知,包括更早级别平台上的通知,您应在不依赖 API 级别的基础上构建子通知。
+
+
+
+</p>
+
+<h2 id="custom"> 自定义视图</h2>
+<p>从 Android N 开始,您将可以自定义通知视图,同时仍可以使用系统装饰元素,例如通知标头、操作和可展开的布局。
+
+</p>
+
+<p>为启用该功能,Android N 添加了以下 API,以便您样式化自己的自定义视图:
+</p>
+
+<dl>
+<dt>
+{@code DecoratedCustomViewStyle()}</dt>
+<dd> 样式化除媒体通知外的其他通知。
+</dd>
+<dt>
+{@code DecoratedMediaCustomViewStyle()}</dt>
+<dd> 样式化媒体通知。</dd>
+</dl>
+
+<p>如需使用这些新 API,可调用 {@code setStyle()} 方法,并向其传递所需的自定义视图样式。
+</p>
+
+<p>此代码段显示了如何使用 {@code DecoratedCustomViewStyle()} 方法构建自定义通知对象。
+</p>
+
+<pre>
+Notification noti = new Notification.Builder()
+           .setSmallIcon(R.drawable.ic_stat_player)
+           .setLargeIcon(albumArtBitmap))
+           .setCustomContentView(contentView);
+           .setStyle(new Notification.DecoratedCustomViewStyle())
+           .build();
+
+</pre>
diff --git a/docs/html-intl/intl/zh-cn/preview/features/picture-in-picture.jd b/docs/html-intl/intl/zh-cn/preview/features/picture-in-picture.jd
new file mode 100644
index 0000000..cbf3711
--- /dev/null
+++ b/docs/html-intl/intl/zh-cn/preview/features/picture-in-picture.jd
@@ -0,0 +1,186 @@
+page.title=画中画
+page.keywords=preview,sdk,PIP,Picture-in-picture
+page.tags=androidn
+
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+
+<h2>本文内容</h2>
+<ol>
+  <li><a href="#declaring">声明您的 Activity 支持画中画
+</a></li>
+  <li><a href="#pip_button">将您的 Activity 切换到画中画模式</a>
+</li>
+  <li><a href="#handling_ui">处理画中画模式中的 UI</a>
+</li>
+  <li><a href="#continuing_playback">在画中画模式中继续视频播放
+</a></li>
+  <li><a href="#best">最佳做法</a></li>
+</ol>
+
+<h2>另请参阅</h2>
+<ol>
+  <li><a href="{@docRoot}preview/features/multi-window.html">多窗口支持
+</a></li>
+</ol>
+
+</div>
+</div>
+
+<p>在 Android N 中,Android TV 用户现在可以一边在应用中导航一边在屏幕角落的固定窗口中观看视频。
+
+画中画 (PIP) 模式允许应用在固定窗口中运行视频 Activity,同时在后台继续运行另一个 Activity。
+
+PIP 窗口让用户可以在使用应用的时候进行多任务处理,从而提高效率。
+</p>
+
+<p>您的应用可以决定何时触发 PIP 模式。以下是一些关于何时进入 PIP 模式的示例:
+</p>
+
+<ul>
+<li>当用户从视频返回浏览其他内容时,应用将自动进入 PIP 模式。
+</li>
+<li>当用户快看完一集视频时,应用将视频切换到 PIP 模式。
+主屏幕显示有关该系列视频下一集的宣传或摘要信息。
+</li>
+<li>应用将允许用户在观看视频的同时添加其他内容到队列。
+视频继续在 PIP 模式中播放,同时主屏幕显示内容选择 Activity。
+</li>
+</ul>
+
+<p>PIP 窗口为 240x135 dp,在屏幕角落的最顶层显示,由系统在四个角落中选择一个角落。
+用户可以调出 PIP 菜单,将 PIP 窗口切换为全屏,或通过按下遥控器上的<b>主页</b>按钮关闭 PIP 窗口。
+
+如果主屏幕开始播放另一个视频,PIP 窗口将自动关闭。
+
+用户还可以通过“最近使用记录”关闭 PIP 窗口。</p>
+
+<img src="{@docRoot}preview/images/pip-active.png" />
+<p class="img-caption"><strong>图 1.</strong> 用户在主屏幕上浏览内容时屏幕角落窗口播放画中画视频。
+
+</p>
+
+<p>PIP 利用 Android N 中提供的多窗口 API 显示固定视频层叠窗口。
+如需将 PIP 添加到应用,您需要注册支持 PIP 的 Activity,然后根据需要将 Activity 切换到 PIP 模式,并确保隐藏所有 UI 元素,且 Activity 处于 PIP 模式时视频继续播放。
+
+
+</p>
+
+<h2 id="declaring">声明您的 Activity 支持画中画</h2>
+
+<p>默认情况下,系统并不自动为应用提供 PIP 支持。如果想要应用支持 PIP,请将
+<code>android:supportsPictureInPicture</code> 和
+<code>android:resizeableActivity</code> 设置为 <code>true</code>,在清单文件中注册视频 Activity。
+
+此外,应明确指定 Activity 处理布局配置变更,这样,在 PIP 模式过渡期间发生布局变更时,Activity 不会重新启动。
+
+</p>
+
+<pre>
+&lt;activity android:name="VideoActivity"
+    android:resizeableActivity="true"
+    android:supportsPictureInPicture="true"
+    android:configChanges=
+        "screenSize|smallestScreenSize|screenLayout|orientation"
+    ...
+</pre>
+
+<p>在注册 Activity 时,请记住,在 PIP 模式中,您的 Activity 在电视屏幕上的小层叠窗口中显示。
+视频播放 Activity 结合以尽量小的 UI 可以实现最佳用户体验。
+在切换到 PIP 模式后,UI 元素较小的 Activity 带来的用户体验可能较差,因为用户在 PIP 窗口中看不到 UI 元素的详细信息。
+
+
+</p>
+
+<h2 id="pip_button">将您的 Activity 切换到画中画模式</h2>
+
+在需要将 Activity 切换到 PIP 模式时,请调用
+<code>Activity.enterPictureInPicture()</code>。在下面的示例中,当用户选择媒体控制栏上的专用 PIP 按钮时,系统切换到 PIP 模式:
+
+</p>
+
+<pre>
+&#64;Override
+public void onActionClicked(Action action) {
+    if (action.getId() == R.id.lb_control_picture_in_picture) {
+        getActivity().enterPictureInPicture();
+        return;
+    }
+    ...
+</pre>
+
+<p>在媒体控制栏上添加 PIP 按钮可以方便用户在控制视频播放的同时切换到 PIP 模式。
+</p>
+
+<img src="{@docRoot}preview/images/pip-button.png" />
+<p class="img-caption"><strong>图 1.</strong> 媒体控制栏上的画中画按钮。
+</p>
+
+<p>Android N 中包含一个新的
+<code>PlaybackControlsRow.PictureInPictureAction</code> 类,它可以定义控制栏 PIP 操作并使用 PIP 图标。
+</p>
+
+<h2 id="handling_ui">处理画中画模式中的 UI</h2>
+
+<p>在 Activity 进入 PIP 模式时,Activity 应仅显示视频播放。
+在 Activity 进入 PIP 模式前删除 UI 元素,当 Activity 再次全屏显示时恢复这些元素。重写 <code>Activity.onPictureInPictureChanged()</code> 或
+<code>Fragment.onPictureInPictureChanged()</code>,并根据需要启用或禁用 UI 元素,例如:
+
+
+</p>
+
+<pre>
+&#64;Override
+public void onPictureInPictureChanged(boolean inPictureInPicture) {
+    if (inPictureInPicture) {
+        // Hide the controls in picture-in-picture mode.
+        ...
+    } else {
+        // Restore the playback UI based on the playback status.
+        ...
+    }
+}
+</pre>
+
+<h2 id="continuing_playback">在画中画模式中继续视频播放
+</h2>
+
+<p>在 Activity 切换到 PIP 模式时,系统会认为 Activity 处于暂停状态,并调用 Activity 的 <code>onPause()</code> 方法。
+如果 Activity 因为 PIP 模式暂停,视频播放不应暂停,而是应继续播放。
+
+在 Activity 的
+<code>onPause()</code> 方法中检查 PIP,并对播放做相应处理,例如:
+</p>
+
+<pre>
+&#64;Override
+public void onPause() {
+    // If called due to PIP, do not pause playback
+    if (inPictureInPicture()) {
+        // Continue playback
+        ...
+    }
+    // If paused but not in PIP, pause playback if necessary
+    ...
+}
+</pre>
+
+<p>当 Activity 退出 PIP 模式并回到全屏模式时,系统会恢复 Activity 并调用 <code>onResume()</code> 方法。
+</p>
+
+<h2 id="best">最佳做法</h2>
+
+<p>PIP 用于全屏播放视频的 Activity。在 Activity 切换到 PIP 模式时,应避免显示除视频外的其他内容。根据<a href="#handling_ui">处理画中画模式中的 UI</a> 中所述,在 Activity 进入 PIP 模式时进行跟踪,并隐藏 UI 元素。
+
+
+</p>
+
+<p>由于 PIP 窗口悬浮在屏幕的角落,因此应避免在主窗口被 PIP 窗口遮挡的任何区域显示重要信息。
+
+</p>
+
+<p>当 Activity 处于 PIP 模式时,其默认不获取输入焦点。要在 PIP 模式中接收输入事件,请使用
+<code>MediaSession.setMediaButtonReceiver()</code>。
+</p>
diff --git a/docs/html-intl/intl/zh-cn/preview/features/scoped-folder-access.jd b/docs/html-intl/intl/zh-cn/preview/features/scoped-folder-access.jd
new file mode 100644
index 0000000..eb6db76
--- /dev/null
+++ b/docs/html-intl/intl/zh-cn/preview/features/scoped-folder-access.jd
@@ -0,0 +1,124 @@
+page.title=作用域目录访问
+page.keywords=preview,sdk,scoped directory access
+page.tags=androidn
+
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+  <h2>本文内容</h2>
+  <ol>
+    <li><a href="#accessing">访问外部存储目录</a></li>
+    <li><a href="#removable">访问可移动介质上的目录</a></li>
+    <li><a href="#best">最佳做法</a></li>
+  </ol>
+</div>
+</div>
+
+<p>应用(如照片应用)通常只需要访问外部存储中的特定目录,例如 <code>Pictures</code> 目录。
+现有的外部存储访问方法未经专门设计,无法轻松地为这些类型的应用提供目标目录访问。
+
+例如:</p>
+
+<ul>
+<li>在您的清单文件中请求 {@link android.Manifest.permission#READ_EXTERNAL_STORAGE}
+或 {@link android.Manifest.permission#WRITE_EXTERNAL_STORAGE} 将允许访问外部存储上的所有公共目录,这可能导致访问的内容超出应用需要的内容。
+
+</li>
+<li>使用<a href="{@docRoot}guide/topics/providers/document-provider.html">存储访问框架</a>通常会让您的用户通过一个系统 UI 选取目录,如果应用始终访问同一个外部目录,则该操作没有任何必要。
+
+
+
+</li>
+</ul>
+
+<p>Android N 提供简化的全新 API 以访问通用外部存储目录。
+ </p>
+
+<h2 id="accessing">访问外部存储目录</h2>
+
+<p>使用 <code>StorageManager</code> 类获取适当的
+<code>StorageVolume</code> 实例。然后,通过调用该实例的
+<code>StorageVolume.createAccessIntent()</code> 方法创建一个 Intent。使用此 Intent 访问外部存储目录。
+若要获取所有可用卷的列表,包括可移动介质卷,请使用
+<code>StorageManager.getVolumesList()</code>。
+</p>
+
+<p>以下代码段展示如何在主要共享存储中打开
+<code>Pictures</code> 目录:</p>
+
+<pre>
+StorageManager sm = (StorageManager)getSystemService(Context.STORAGE_SERVICE);
+StorageVolume volume = sm.getPrimaryVolume();
+Intent intent = volume.createAccessIntent(Environment.DIRECTORY_PICTURES);
+startActivityForResult(intent, request_code);
+</pre>
+
+<p>系统尝试授予对外部目录的访问权限,并使用一个简化的 UI 向用户确认访问权限(如果需要):
+</p>
+
+<img src="{@docRoot}preview/images/scoped-folder-access-framed.png" srcset="{@docRoot}preview/images/scoped-folder-access-framed.png 1x,
+{@docRoot}preview/images/scoped-folder-access-framed_2x.png 2x" />
+<p class="img-caption"><strong>图 1.</strong> 一个请求访问 Pictures 目录的应用。
+</p>
+
+<p>如果用户授予访问权限,则系统会调用
+<code>onActivityResult()</code> 重写方法,且结果代码为
+<code>Activity.RESULT_OK</code>,Intent 数据包含 URI。使用提供的 URI 访问目录信息,与使用<a href="{@docRoot}guide/topics/providers/document-provider.html">存储访问框架</a>返回的 URI 类似。
+
+
+
+</p>
+
+<p>如果用户不授予访问权限,则系统会调用
+<code>onActivityResult()</code> 重写方法,且结果代码为
+<code>Activity.RESULT_CANCELED</code>,Intent 数据为 null。</p>
+
+<p class="note"><b>注</b>:获得特定外部目录的访问权限也会获得该目录中子目录的访问权限。
+</p>
+
+<h2 id="removable">访问可移动介质上的目录</h2>
+
+<p>若要使用作用域目录访问来访问可移动介质上的目录,首先要添加一个用于侦听
+{@link android.os.Environment#MEDIA_MOUNTED} 通知的 {@link android.content.BroadcastReceiver},例如:
+</p>
+
+<pre>
+&lt;receiver
+    android:name=".MediaMountedReceiver"
+    android:enabled="true"
+    android:exported="true" &gt;
+    &lt;intent-filter&gt;
+        &lt;action android:name="android.intent.action.MEDIA_MOUNTED" /&gt;
+        &lt;data android:scheme="file" /&gt;
+    &lt;/intent-filter&gt;
+&lt;/receiver&gt;
+</pre>
+
+<p>当用户装载可移动介质时,如 SD 卡,系统将发送一则
+{@link android.os.Environment#MEDIA_MOUNTED} 通知。此通知在 Intent 数据中提供一个 <code>StorageVolume</code> 对象,您可用它访问可移动介质上的目录。
+
+以下示例访问可移动介质上的 <code>Pictures</code> 目录:
+</p>
+
+<pre>
+// BroadcastReceiver has already cached the MEDIA_MOUNTED
+// notification Intent in mediaMountedIntent
+StorageVolume volume = (StorageVolume)
+    mediaMountedIntent.getParcelableExtra(StorageVolume.EXTRA_STORAGE_VOLUME);
+volume.createAccessIntent(Environment.DIRECTORY_PICTURES);
+startActivityForResult(intent, request_code);
+</pre>
+
+<h2 id="best">最佳做法</h2>
+
+<p>请尽可能保留外部目录访问 URI,这样即不必重复要求用户授予访问权限。
+在用户授予访问权限后,使用目录访问 URI 调用
+<code>getContentResolver().takePersistableUriPermssion()</code>。
+系统将保留此 URI,后续的访问请求将返回 <code>RESULT_OK</code>,且不会向用户显示确认 UI。
+
+</p>
+
+<p>如果用户拒绝授予外部目录访问权限,请勿立即再次请求访问权限。
+一再不停地请求访问权限会导致非常差的用户体验。
+</p>
diff --git a/docs/html-intl/intl/zh-cn/preview/features/security-config.jd b/docs/html-intl/intl/zh-cn/preview/features/security-config.jd
new file mode 100644
index 0000000..dc09c78
--- /dev/null
+++ b/docs/html-intl/intl/zh-cn/preview/features/security-config.jd
@@ -0,0 +1,744 @@
+page.title=网络安全配置
+page.keywords=preview,security,network
+
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+
+<h2>本文内容</h2>
+<ol>
+  <li><a href="#manifest">添加安全配置文件</a></li>
+  <li><a href="#CustomTrust">自定义信任的 CA</a>
+      <ol>
+      <li><a href="#ConfigCustom">配置信任的自定义 CA</a></li>
+      <li><a href="#LimitingCas">限制信任的 CA 集</a></li>
+      <li><a href="#TrustingAdditionalCas">信任附加 CA</a></li>
+      </ol>
+  </li>
+  <li><a href="#TrustingDebugCa">仅调试 CA</a></li>
+  <li><a href="#UsesCleartextTraffic">退出 Cleartext Traffic</a></li>
+  <li><a href="#CertificatePinning">固定证书</a></li>
+  <li><a href="#ConfigInheritance">配置继承行为</a></li>
+  <li><a href="#FileFormat">配置文件格式</a></li>
+</ol>
+</div>
+</div>
+
+
+<p>
+  Android N 包含一个网络安全配置特性,让应用可以在一个安全的声明性配置文件中自定义其网络安全设置,而无需修改应用代码。
+
+可以针对特定域和特定应用配置这些设置。
+该特性的主要功能如下所示:
+
+</p>
+
+<ul>
+  <li>
+    <b>自定义信任锚:</b>针对应用的安全连接自定义哪些证书颁发机构 (CA) 值得信赖。
+例如,信任特定的自签署证书或限制应用信任的公共 CA 集。
+
+
+  </li>
+
+  <li>
+    <b>仅调试重写:</b>在应用中以安全方式调试安全连接,而不会增加安装基数的风险。
+
+  </li>
+
+  <li>
+    <b>Cleartext traffic 退出:</b>防止应用意外使用 cleartext traffic。
+
+  </li>
+
+  <li>
+    <b>证书固定:</b>将应用的安全连接限制为特定的证书。
+
+  </li>
+</ul>
+
+
+<h2 id="manifest">添加安全配置文件</h2>
+
+<p>
+  网络安全配置特性使用一个 XML 文件,您可以在该文件中指定应用的设置。
+您必须在应用的清单文件中包含一个条目来指向该文件。
+以下代码摘自一份清单文件,演示了如何创建此条目:
+
+</p>
+
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?&gt;
+...
+&lt;app ...&gt;
+    &lt;meta-data android:name="android.security.net.config"
+               android:resource="@xml/network_security_config" /&gt;
+    ...
+&lt;/app&gt;
+</pre>
+
+<h2 id="CustomTrust">自定义信任的 CA</h2>
+
+<p>
+  应用可能需要信任自定义的 CA 集,而不是平台默认值。
+出现此情况的最常见原因包括:
+</p>
+
+<ul>
+  <li>连接到具有自定义证书颁发机构(自签署、由公司内部 CA 签发等)的主机。
+
+  </li>
+
+  <li>将 CA 集仅限于您信任的 CA,而不是每个预装 CA。
+
+  </li>
+
+  <li>信任系统中未包含的附加 CA。
+  </li>
+</ul>
+
+<p>
+  默认情况下,来自所有应用的安全(例如 TLS、HTTPS)连接均信任预装的系统 CA,而面向 API 级别 23 (Android M) 及更低级别的应用默认情况下还会信任用户添加的 CA 存储。
+
+应用可以使用 {@code base-config}(针对应用范围的定制)或 {@code domain-config}(针对每个域的定制)自定义自己的连接。
+
+
+
+</p>
+
+
+<h3 id="ConfigCustom">配置自定义 CA</h3>
+
+<p>
+  假设您要连接到使用自签署 SSL 证书的主机,或者连接到其 SSL 证书是由您信任的非公共 CA(如公司内部 CA)签发的主机。
+
+
+</p>
+
+<p>
+  <code>res/xml/network_security_config.xml</code>:
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?&gt;
+&lt;network-security-config&gt;
+    &lt;domain-config&gt;
+        &lt;domain includeSubdomains="true"&gt;example.com&lt;/domain&gt;
+        &lt;trust-anchors&gt;
+            &lt;certificates src="@raw/my_ca"/&gt;
+        &lt;/trust-anchors&gt;
+    &lt;/domain-config&gt;
+&lt;/network-security-config&gt;
+</pre>
+</p>
+
+<p>
+  以 PEM 或 DER 格式将自签署或非公共 CA 证书添加到
+{@code res/raw/my_ca}。
+</p>
+
+
+<h3 id="LimitingCas">限制信任的 CA 集</h3>
+
+<p>
+  如果应用不想信任系统信任的所有 CA,则可以自行指定,缩减要信任的 CA 集。
+这样可防止应用信任任何其他 CA 签发的欺诈性证书。
+
+</p>
+
+<p>
+  限制信任的 CA 集的配置与针对特定域<a href="#TrustingACustomCa">信任自定义 CA</a> 相似,不同的是,前者要在资源中提供多个 CA。
+
+</p>
+
+<p>
+<code>res/xml/network_security_config.xml</code>:
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?&gt;
+&lt;network-security-config&gt;
+    &lt;domain-config&gt;
+        &lt;domain includeSubdomains="true"&gt;secure.example.com&lt;/domain&gt;
+        &lt;domain includeSubdomains="true"&gt;cdn.example.com&lt;/domain&gt;
+        &lt;trust-anchors&gt;
+            &lt;certificates src="@raw/trusted_roots"/&gt;
+        &lt;/trust-anchors&gt;
+    &lt;/domain-config&gt;
+&lt;/network-security-config&gt;
+</pre>
+</p>
+
+<p>
+  以 PEM 或 DER 格式将信任的 CA 添加到 {@code res/raw/trusted_roots}。
+  请注意,如果使用 PEM 格式,文件必须仅包含 PEM 数据,且没有额外的文本。
+<em></em>您还可以提供多个
+<a href="#certificates"><code>&lt;certificates&gt;</code></a>
+元素,而不是只能提供一个元素。
+</p>
+
+
+<h3 id="TrustingAdditionalCas">
+  信任附加 CA
+</h3>
+
+<p>
+  应用可能需要信任系统不信任的附加 CA,出现此情况的原因可能是系统还未包含此 CA,或 CA 不符合添加到 Android 系统中的要求。
+
+应用可以通过为一个配置指定多个证书源来实现此目的。
+
+
+</p>
+<p>
+<code>res/xml/network_security_config.xml</code>:
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?&gt;
+&lt;network-security-config&gt;
+    &lt;base-config&gt;
+        &lt;trust-anchors&gt;
+            &lt;certificates src="@raw/extracas"/&gt;
+            &lt;certificates src="system"/&gt;
+        &lt;/trust-anchors&gt;
+    &lt;/base-config&gt;
+&lt;/network-security-config&gt;
+</pre>
+</p>
+
+
+<h2 id="TrustingDebugCa">配置用于调试的 CA</h2>
+
+<p>
+  调试通过 HTTPS 连接的应用时,您可能需要连接到没有用于生产服务器的 SSL 证书的本地开发服务器。
+
+为了支持此操作,而又不对应用的代码进行任何修改,
+
+ <i>您可以</i> 通过使用 {@code debug-overrides} 指定仅在<a href="{@docRoot}guide/topics/manifest/application-element.html#debug">
+android:debuggable</a>
+为 {@code true} 时才信任的仅调试 CA。通常,IDE 和构建工具会自动为非发布版本设置此标志。
+
+</p>
+
+<p>
+  这比一般的条件代码更安全,因为出于安全考虑,应用存储不接受被标记为可调试的应用。
+
+
+</p>
+
+<p>
+<code>res/xml/network_security_config.xml</code>:
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?&gt;
+&lt;network-security-config&gt;
+    &lt;debug-overrides&gt;
+        &lt;trust-anchors&gt;
+            &lt;certificates src="@raw/debug_cas"/&gt;
+        &lt;/trust-anchors&gt;
+    &lt;/debug-overrides&gt;
+&lt;/network-security-config&gt;
+</pre>
+</p>
+
+
+<h2 id="UsesCleartextTraffic">退出 Cleartext Traffic</h2>
+
+<p>
+  旨在连接到仅使用安全连接的目标的应用可以选择不再对这些目标提供 cleartext(使用解密的 HTTP 协议而非 HTTPS)支持。
+
+此选项有助于防止应用因外部源(如后端服务器)提供的 URL 发生变化而意外回归。
+
+
+  请参阅 {@link android.security.NetworkSecurityPolicy#isCleartextTrafficPermitted
+NetworkSecurityPolicy.isCleartextTrafficPermitted()} 了解更多详情。
+</p>
+
+<p>
+  例如,应用可能需要确保所有与 {@code
+secure.example.com} 的连接始终是通过 HTTPS 完成,以防止来自恶意网络的敏感流量。
+
+</p>
+
+<p>
+<code>res/xml/network_security_config.xml</code>:
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?&gt;
+&lt;network-security-config&gt;
+    &lt;domain-config usesCleartextTraffic="false"&gt;
+        &lt;domain includeSubdomains="true"&gt;secure.example.com&lt;/domain&gt;
+    &lt;/domain-config&gt;
+&lt;/network-security-config&gt;
+</pre>
+</p>
+
+
+<h2 id="CertificatePinning">固定证书</h2>
+
+<p>
+  一般情况下,应用信任所有预装 CA。如果有预装 CA 要签发欺诈性证书,则应用将面临被中间人攻击 (MiTM) 的风险。
+
+有些应用通过限制信任的 CA 集或通过证书固定来选择限制其接受的证书集。
+
+</p>
+
+<p>
+  通过按公钥的哈希值(X.509 证书的 SubjectPublicKeyInfo)提供证书集完成证书固定。
+然后,证书链仅在至少包含一个已固定的公钥时才有效。
+
+
+</p>
+
+<p>
+  请注意,使用证书固定时,您应始终包含一个备份密钥,这样,当您需要强制切换到新密钥时,或更改 CA 时(固定到某个 CA 证书或该 CA 的中间证书时),您应用的连接性不会受到影响。
+
+
+否则,您必须推送应用的更新以恢复连接性。
+
+</p>
+
+<p>
+  此外,可以设置固定到期时间,在该时间之后不执行证书固定。
+这有助于防止尚未更新的应用出现连接问题。
+不过,设置固定到期时间可能会绕过证书固定。
+
+</p>
+
+<p>
+<code>res/xml/network_security_config.xml</code>:
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?&gt;
+&lt;network-security-config&gt;
+    &lt;domain-config&gt;
+        &lt;domain includeSubdomains="true"&gt;example.com&lt;/domain&gt;
+        &lt;pin-set expiration="2018-01-01"&gt;
+            &lt;pin digest="SHA-256"&gt;7HIpactkIAq2Y49orFOOQKurWxmmSFZhBCoQYcRhJ3Y=&lt;/pin&gt;
+            &lt;!-- backup pin --&gt
+            &lt;pin digest="SHA-256"&gt;fwza0LRMXouZHRC8Ei+4PyuldPDcf3UKgO/04cDM1oE=&lt;/pin&gt;
+    &lt;/domain-config&gt;
+&lt;/network-security-config&gt;
+</pre>
+</p>
+
+
+<h2 id="ConfigInheritance">配置继承行为</h2>
+
+<p>
+  继承未在特定配置中设置的值。此行为允许进行更复杂的配置,同时保证配置文件可读。
+
+</p>
+
+<p>
+  如果未在特定条目中设置值,则使用来自下一个更通用的条目中的值。
+未在 {@code domain-config} 中设置的值从父级 {@code domain-config}(如果已嵌套)或从 {@code
+base-config}(如果未嵌套)中获取。
+未在 {@code base-config} 中设置的值使用平台默认值。
+
+</p>
+
+<p>
+  例如,考虑所有与 {@code
+example.com} 的子域的连接必须使用自定义 CA 集。此外,允许使用这些域的 cleartext traffic,连接到 {@code
+  secure.example.com} 时除外。<em></em>
+通过在 {@code example.com} 的配置中嵌套 {@code
+secure.example.com} 的配置,不需要重复 {@code trust-anchors}。
+
+</p>
+
+<p>
+<code>res/xml/network_security_config.xml</code>:
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?&gt;
+&lt;network-security-config&gt;
+    &lt;domain-config&gt;
+        &lt;domain includeSubdomains="true"&gt;example.com&lt;/domain&gt;
+        &lt;trust-anchors&gt;
+            &lt;certificates src="@raw/my_ca"/&gt;
+        &lt;/trust-anchors&gt;
+        &lt;domain-config cleartextTrafficPermitted="false"&gt;
+            &lt;domain includeSubdomains="true"&gt;secure.example.com&lt;/domain&gt;
+        &lt;/domain-config&gt;
+    &lt;/domain-config&gt;
+&lt;/network-security-config&gt;
+</pre>
+</p>
+
+
+<h2 id="FileFormat">配置文件格式</h2>
+
+<p>
+  网络安全配置特性使用 XML 文件格式。
+  文件的整体结构如以下代码示例所示:
+</p>
+
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?&gt;
+&lt;network-security-config&gt;
+    &lt;base-config&gt;
+        &lt;trust-anchors&gt;
+            &lt;certificates src="..."/&gt;
+            ...
+        &lt;/trust-anchors&gt;
+    &lt;/base-config&gt;
+
+    &lt;domain-config&gt;
+        &lt;domain&gt;android.com&lt;/domain&gt;
+        ...
+        &lt;trust-anchors&gt;
+            &lt;certificates src="..."/&gt;
+            ...
+        &lt;/trust-anchors&gt;
+        &lt;pin-set&gt;
+            &lt;pin digest="..."&gt;...&lt;/pin&gt;
+            ...
+        &lt;/pin-set&gt;
+    &lt;/domain-config&gt;
+    ...
+    &lt;debug-overrides&gt;
+        &lt;trust-anchors&gt;
+            &lt;certificates src="..."/&gt;
+            ...
+        &lt;/trust-anchors&gt;
+    &lt;/debug-overrides&gt;
+&lt;/network-security-config&gt;
+</pre>
+
+<p>
+  以下部分介绍语法和文件格式的其他详细信息。
+
+</p>
+
+<h3 id="network-security-config">
+  &lt;network-security-config&gt;
+</h3>
+
+<dl class="xml">
+  <dt>
+    可包含:
+  </dt>
+
+  <dd>
+    0 或 1 个 <code><a href="#base-config">&lt;base-config&gt;</a></code><br>
+    任意数量的 <code><a href=
+    "#domain-config">&lt;domain-config&gt;</a></code><br>
+    0 或 1 个 <code><a href="#debug-overrides">&lt;debug-overrides&gt;</a></code>
+  </dd>
+</dl>
+
+<h3 id="base-config">
+  &lt;base-config&gt;
+</h3>
+
+<dl class="xml">
+  <dt>
+    语法:
+  </dt>
+</dl>
+
+<pre class="stx">
+&lt;base-config <a href=
+"#usesCleartextTraffic">usesCleartextTraffic</a>=["true" | "false"]&gt;
+    ...
+&lt;/base-config&gt;
+</pre>
+<dl class="xml">
+  <dt>
+    可包含:
+  </dt>
+
+  <dd>
+    <code><a href="#trust-anchors">&lt;trust-anchors&gt;</a></code>
+  </dd>
+
+  <dt>
+    说明:
+  </dt>
+
+  <dd>
+    目标不在 <a href="#domain-config"><code>domain-config</code></a> 涵盖范围内的所有连接所使用的默认配置。
+
+
+<p>
+  未设置的任何值均使用平台默认值。面向上述 API 级别 24 及更高级别的应用的默认配置:
+
+</p>
+
+<pre>
+&lt;base-config usesCleartextTraffic="true"&gt;
+    &lt;trust-anchors&gt;
+        &lt;certificates src="system" /&gt;
+    &lt;/trust-anchors&gt;
+&lt;/base-config&gt;
+</pre>
+面向 API 级别 23 及更低级别的应用的默认配置:
+<pre>
+&lt;base-config usesCleartextTraffic="true"&gt;
+    &lt;trust-anchors&gt;
+        &lt;certificates src="system" /&gt;
+        &lt;certificates src="user" /&gt;
+    &lt;/trust-anchors&gt;
+&lt;/base-config&gt;
+</pre>
+
+  </dd>
+</dl>
+
+<h3 id="domain-config">&lt;domain-config&gt;</h3>
+<dl class="xml">
+<dt>语法:</dt>
+<dd>
+<pre class="stx">&lt;domain-config <a href="#usesCleartextTraffic">usesCleartextTraffic</a>=["true" | "false"]&gt;
+    ...
+&lt;/domain-config&gt;</pre>
+</dd>
+
+<dt>可包含:</dt>
+
+<dd>
+1 个或多个 <code><a href="#domain">&lt;domain&gt;</a></code>
+<br/>0 或 1 个 <code><a href="#trust-anchors">&lt;trust-anchors&gt;</a></code>
+<br/>0 或 1 个 <code><a href="#pin-set">&lt;pin-set&gt;</code></a>
+<br/>任意数量的已嵌套 <code>&lt;domain-config&gt;</code></dd>
+
+<dt>说明</dt>
+<dd>用于按照 {@code domain} 元素的定义连接到特定目标的配置。
+
+<p>请注意,如果有多个 {@code domain-config} 元素涵盖某个目标,则使用匹配域规则最具体(最长)的配置。
+</p></dd>
+</dl>
+
+
+<h3 id="domain">&lt;domain&gt;</h3>
+
+<dl class="xml">
+  <dt>
+    语法:
+  </dt>
+
+  <dd>
+    <pre class="stx">
+&lt;domain includeSubdomains=["true" | "false"]&gt;example.com&lt;/domain&gt;
+</pre>
+  </dd>
+
+  <dt>
+    属性:
+  </dt>
+
+  <dd>
+    <dl class="attr">
+      <dt>
+        {@code includeSubdomains}
+      </dt>
+
+      <dd>
+        如果为 {@code "true"},则此域规则与域及所有子域(包括子域的子域)匹配,否则,该规则仅适用于精确匹配项。
+
+
+      </dd>
+    </dl>
+  </dd>
+
+  <dt>
+    说明:
+  </dt>
+</dl>
+
+<h3 id="debug-overrides">&lt;debug-overrides&gt;</h3>
+
+<dl class="xml">
+  <dt>
+    语法:
+  </dt>
+
+  <dd>
+    <pre class="stx">
+&lt;debug-overrides&gt;
+    ...
+&lt;/debug-overrides&gt;
+</pre>
+  </dd>
+
+  <dt>
+    可包含:
+  </dt>
+
+  <dd>
+    0 或 1 个 <code><a href="#trust-anchors">&lt;trust-anchors&gt;</a></code>
+  </dd>
+
+  <dt>
+    说明:
+  </dt>
+
+  <dd>
+    当 <a href="{@docRoot}guide/topics/manifest/application-element.html#debug">android:debuggable</a>
+为 {@code "true"} 时将应用的重写,IDE 和构建工具生成的非发布版本通常属于此情况。
+将在 {@code
+debug-overrides} 中指定的信任锚添加到所有其他配置,并且当服务器的证书链使用其中一个仅调试信任锚时不执行证书固定。
+
+如果 <a href="{@docRoot}guide/topics/manifest/application-element.html#debug">android:debuggable</a>
+为 {@code "false"},则完全忽略此部分。
+  </dd>
+</dl>
+
+<h3 id="trust-anchors">&lt;trust-anchors&gt;</h3>
+<dl class="xml">
+  <dt>
+    语法:
+  </dt>
+
+  <dd>
+    <pre class="stx">
+&lt;trust-anchors&gt;
+...
+&lt;/trust-anchors&gt;
+</pre>
+  </dd>
+
+  <dt>
+    可包含:
+  </dt>
+
+  <dd>
+    任意数量的 <code><a href="#certificates">&lt;certificates&gt;</a></code>
+  </dd>
+
+  <dt>
+    说明:
+  </dt>
+
+  <dd>
+    用于安全连接的信任锚集
+  </dd>
+</dl>
+
+
+<h3 id="certificates">&lt;certificates&gt;</h3>
+<dl class="xml">
+<dt>语法:</dt>
+<dd><pre class="stx">&lt;certificates src=["system" | "user" | "<i>raw resource</i>"]
+              overridePins=["true" | "false"] /&gt;
+</pre></dd>
+<dt>说明:</dt>
+<dd>用于 {@code trust-anchors} 元素的 X.509 证书集。</dd>
+
+<dt>属性:</dt>
+<dd><dl class="attr">
+<dt>{@code src}</dt>
+<dd>
+CA 证书的来源,可以是
+<ul>
+  <li>指向包含 X.509 证书的文件的原始资源 id。
+  证书必须以 DER 或 PEM 格式编码。如果为 PEM 证书,则文件不得包含额外的非 PEM 数据,如注释。
+
+<em></em>
+  </li>
+
+  <li>用于预装系统 CA 证书的 {@code "system"}
+  </li>
+
+  <li>用于用户添加的 CA 证书的 {@code "user"}
+  </li>
+</ul>
+</dd>
+
+<dt>{@code overridePins}</dt>
+<dd>
+  <p>
+    指定来自此源的 CA 是否绕过证书固定。如果为 {@code
+"true"},则为穿过此源的其中一个 CA 的链颁发证书,并且不执行证书固定。
+这对于调试 CA 或支持用户对应用的安全流量进行中间人攻击 (MiTM) 非常有用。
+
+  </p>
+
+  <p>
+    默认值为 {@code "false"},除非在 {@code debug-overrides}
+元素中另外指定(在这种情况下,默认值为 {@code "true"})。
+  </p>
+</dd>
+</dl>
+</dd>
+
+
+<h3 id="pin-set">&lt;pin-set&gt;</h3>
+
+<dl class="xml">
+  <dt>
+    语法:
+  </dt>
+
+  <dd>
+<pre class="stx">
+&lt;pin-set expiration="date"&gt;
+...
+&lt;/pin-set&gt;
+</pre>
+  </dd>
+
+  <dt>
+    可包含:
+  </dt>
+
+  <dd>
+    任意数量的 <code><a href="#pin">&lt;pin&gt;</a></code>
+  </dd>
+
+  <dt>
+    说明:
+  </dt>
+
+  <dd>
+    公钥固定 (PKP) 集。对于要信任的安全连接,信任链中必须有一个公钥位于 PKP 集中。
+有关固定形式,请参阅
+<code><a href="#pin">&lt;pin&gt;</a></code>。
+  </dd>
+
+  <dt>
+    属性:
+  </dt>
+
+  <dd>
+    <dl class="attr">
+      <dt>
+        {@code expiration}
+      </dt>
+
+      <dd>
+        采用 {@code yyyy-MM-dd} 格式的日期,在该日期及之后固定过期,因而禁用固定。
+如果未设置该属性,则固定不会过期。
+
+        <p>
+          设置到期时间有助于防止不更新到其 PKP 集(例如,由于用户禁用应用更新)的应用出现连接问题。
+
+
+        </p>
+      </dd>
+    </dl>
+  </dd>
+</dl>
+
+<h3 id="pin">&lt;pin&gt;</h3>
+<dl class="xml">
+  <dt>
+    语法:
+  </dt>
+
+  <dd>
+<pre class="stx">
+&lt;pin digest=["SHA-256"]&gt;base64 encoded digest of X.509
+    SubjectPublicKeyInfo (SPKI)&lt;/pin&gt;
+</pre>
+  </dd>
+
+  <dt>
+    属性:
+  </dt>
+
+  <dd>
+    <dl class="attr">
+      <dt>
+        {@code digest}
+      </dt>
+
+      <dd>
+        用于生成 PKP 的摘要算法。目前仅支持 
+{@code "SHA-256"}。
+      </dd>
+    </dl>
+  </dd>
+</dl>
diff --git a/docs/html-intl/intl/zh-cn/preview/features/tv-recording-api.jd b/docs/html-intl/intl/zh-cn/preview/features/tv-recording-api.jd
new file mode 100644
index 0000000..1b15879
--- /dev/null
+++ b/docs/html-intl/intl/zh-cn/preview/features/tv-recording-api.jd
@@ -0,0 +1,120 @@
+page.title=TV 录制
+page.keywords=preview,sdk,tv,recording
+page.tags=androidn
+
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+  <h2>本文内容</h2>
+  <ol>
+    <li><a href="#supporting">指示支持录制</a></li>
+    <li><a href="#recording">录制会话</a></li>
+    <li><a href="#errors">处理录制错误</a></li>
+    <li><a href="#sessions">管理录制的会话</a></li>
+    <li><a href="#best">最佳做法</a></li>
+  </ol>
+</div>
+</div>
+
+<p>TV 输入服务允许用户通过时移 API 暂停和继续频道播放。
+Android N 通过允许用户保存多个录制的会话,扩展了时移。
+</p>
+
+<p>用户可以提前安排录制,或在观看节目时开始录制。
+系统保存录制后,用户即可使用系统 TV 应用浏览、管理和播放录制。
+</p>
+
+<p>如果想要为 TV 输入服务提供录制功能,您必须指示系统您的应用支持录制,实现录制节目功能,处理和传达录制期间发生的所有错误,并管理录制的会话。
+
+
+</p>
+
+<h2 id="supporting">指示支持录制</h2>
+
+<p>为了通知系统您的 TV 输入服务支持录制,请执行以下步骤:
+</p>
+
+<ol>
+<li>在 <code>TvInputService.onCreate()</code> 方法中,使用 <code>TvInputInfo.Builder</code>
+类创建一个新的
+<code>TvInputInfo</code> 对象。</li>
+<li>创建新的 <code>TvInputInfo</code> 对象时,在调用 <code>build()</code> 之前先调用
+<code>setCanRecord(true)</code>,以表明您的服务支持录制。
+</li>
+<li>通过调用
+<code>TvInputService.updateTvInputInfo()</code> 在系统中注册 <code>TvInputInfo</code> 对象。</li>
+</ol>
+
+<h2 id="recording">录制会话</h2>
+
+<p>TV 输入服务注册其支持录制功能后,系统会在需要访问应用的录制实现时调用
+<code>TvInputService.onCreateRecordingSession()</code>。
+
+实现您自己的
+<code>TvInputService.RecordingSession</code> 子类并在触发 <code>onCreateRecordingSession()</code> 回调后返回它。
+
+此子类负责切换到正确的频道数据,录制请求的数据,以及向系统传达录制状态和错误。
+
+</p>
+
+<p>系统调用在频道 URI 中传递的 <code>RecordingSession.onTune()</code> 时,将调到该 URI 指定的频道。
+通过调用 <code>notifyTuned()</code> 通知系统应用已调到所需的频道,或者,如果应用无法调到正确的频道,请调用 <code>notifyError()</code>。
+
+
+</p>
+
+<p>系统接下来调用 <code>RecordingSession.onStartRecording()</code>
+回调。您的应用必须立即开始录制。系统调用此回调时,它可能会提供一个 URI,其中包含有关将录制的节目的信息。
+
+完成录制后,您需要将此数据复制到 <code>RecordedPrograms</code> 数据表。
+</p>
+
+<p>最后,系统调用 <code>RecordingSession.onStopRecording()</code>。此时,您的应用必须立即停止录制。
+您还需要在 <code>RecordedPrograms</code> 表中创建一个条目。
+此条目应在
+<code>RecordedPrograms.COLUMN_RECORDING_DATA_URI</code> 列中包含录制的会话数据 URI,以及在初始调用
+<code>onStartRecording()</code> 时系统提供的任何节目信息。
+
+</p>
+
+<p>如需了解有关如何访问 <code>RecordedPrograms</code> 表的更多详情,请参阅<a href="#sessions">管理录制的会话</a>。
+</p>
+
+<h2 id="errors">处理录制错误</h2>
+
+<p>如果录制期间发生错误,使录制的数据无法使用,则通过调用 <code>RecordingSession.notifyError()</code> 通知系统。同样,您可以在创建录制会话后调用 <code>notifyError()</code>,以通知系统您的应用不再录制会话。
+
+
+</p>
+
+<p>如果录制期间发生错误,但您想提供可使用的部分录制供用户播放,则调用
+<code>RecordingSession.notifyRecordingStopped()</code> 以使系统可以使用部分会话。
+
+</p>
+
+<h2 id="sessions">管理录制的会话</h2>
+
+<p>系统在 <code>TvContract.RecordedPrograms</code>
+内容提供程序表中维护来自所有支持录制的频道应用的所有已录制会话的信息。
+此信息可通过
+<code>RecordedPrograms.Uri</code> 内容 URI 访问。使用内容提供程序 API 读取、添加和删除此表中的条目。
+</p>
+
+<p>如需了解有关使用内容提供程序数据的详细信息,请参阅<a href="{@docRoot}guide/topics/providers/content-provider-basics.html">内容提供程序基本知识</a>。
+
+</p>
+
+<h2 id="best">最佳做法</h2>
+
+<p>TV 设备的存储可能有限,因此请运用您的最佳判断来分配存储,以保存录制的会话。
+如果没有足够的空间存储录制的会话,请使用
+<code>RecordingCallback.onError(RECORDING_ERROR_INSUFFICIENT_SPACE)</code>。
+</p>
+
+<p>当用户发起录制时,您应尽快开始录制数据。
+为便于执行此操作,请在系统调用
+<code>onCreateRecordingSession()</code> 回调时完成前期的所有耗时任务,如访问和分配存储空间。
+这样做让您能够在触发 <code>onStartRecording()</code> 回调时立即开始录制。
+
+</p>
diff --git a/docs/html-intl/intl/zh-cn/preview/index.jd b/docs/html-intl/intl/zh-cn/preview/index.jd
new file mode 100644
index 0000000..3203ce1
--- /dev/null
+++ b/docs/html-intl/intl/zh-cn/preview/index.jd
@@ -0,0 +1,120 @@
+page.title=Android N Developer Preview
+page.tags="preview","developer"
+meta.tags="Preview", "android"
+fullpage=true
+forcelocalnav=true
+header.hide=1
+footer.hide=1
+@jd:body
+
+<script>
+  $(document).ready(function() {
+    if (useUpdatedTemplates) {
+      $("#useUpdatedTemplates").css("display","block");
+    } else {
+      $("#useOldTemplates").css("display","block");
+    }
+  })
+</script>
+
+<section class="dac-expand dac-hero dac-light" style="background-color:#B2DFDB">
+  <div class="wrap" style="max-width:1100px;margin-top:0">
+    <div class="cols dac-hero-content" style="padding-bottom:1em;">
+
+      <div class="col-7of16 col-push-9of16" style="padding-left:2em">
+        <h1 class="dac-hero-title">Android N Developer Preview</h1>
+        <p class="dac-hero-description">
+          为 Android N 做好准备!
+          在 Nexus 和其他设备上<strong>测试您的应用</strong>。支持新系统行为以<strong>节省电量和内存</strong>。
+          使用<strong>多窗口 UI</strong> 扩展您的应用,以便能够<strong>直接答复通知</strong>及执行其他操作。
+
+
+        </p>
+
+        <a class="dac-hero-cta" href="{@docRoot}preview/overview.html">
+          <span class="dac-sprite dac-auto-chevron"></span>
+          入门指南
+        </a><!--<br>
+        <a class="dac-hero-cta" href="{@docRoot}preview/support.html">
+          <span class="dac-sprite dac-auto-chevron"></span>
+          Update to Android N (final SDK)
+        </a><br>-->
+      </div>
+      <div class="col-9of16 col-pull-7of16 dac-hero-figure" style="margin-top:1.5em;padding-right:1.5em;">
+        <img class="dac-hero-image" src="{@docRoot}images/home/n-preview-hero.png" srcset="{@docRoot}images/home/n-preview-hero.png 1x,
+             {@docRoot}images/home/n-preview-hero_2x.png 2x">
+      </div>
+    </div>
+    <div class="dac-section dac-small">
+      <div class="resource-widget resource-flow-layout col-16"
+           data-query="collection:preview/landing/resources"
+           data-cardSizes="6x2"
+           data-maxResults="6"></div>
+    </div>
+  </div>
+</section>
+
+<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="#build-apps">
+      <i class="dac-sprite dac-arrow-down-gray"></i>
+    </a>
+    <ul class="dac-actions">
+      <li class="dac-action">
+        <a class="dac-action-link" href="https://developer.android.com/preview/bug">
+          <i class="dac-action-sprite dac-sprite dac-auto-chevron-large"></i>
+          报告问题
+        </a>
+      </li>
+      <li class="dac-action">
+        <a class="dac-action-link" href="{@docRoot}preview/support.html">
+          <i class="dac-action-sprite dac-sprite dac-auto-chevron-large"></i>
+          查阅发行说明
+        </a>
+      </li>
+      <li class="dac-action">
+        <a class="dac-action-link" href="{@docRoot}preview/dev-community">
+          <i class="dac-action-sprite dac-sprite dac-auto-chevron-large"></i>
+          加入开发者社区
+        </a>
+      </li>
+    </ul>
+  </div><!-- end .wrap -->
+</div><!-- end .dac-actions -->
+
+<div id="useOldTemplates" style="display:none;color:black" class="actions-bar dac-expand dac-invert">
+  <div class="wrap dac-offset-parent">
+
+    <div class="actions">
+      <div><a href="https://developer.android.com/preview/bug">
+        <span class="dac-sprite dac-auto-chevron-large"></span>
+        报告问题
+      </a></div>
+      <div><a href="{@docRoot}preview/support.html">
+        <span class="dac-sprite dac-auto-chevron-large"></span>
+        查阅发行说明
+      </a></div>
+      <div><a href="{@docRoot}preview/dev-community">
+        <span class="dac-sprite dac-auto-chevron-large"></span>
+        加入开发者社区
+      </a></div>
+    </div><!-- end .actions -->
+  </div><!-- end .wrap -->
+</div>
+
+<section class="dac-section dac-light"><div class="wrap">
+  <h1 class="dac-section-title">资源</h1>
+  <div class="dac-section-subtitle">
+    这些必备信息可帮助您的应用为Android N做好准备。
+  </div>
+
+  <div class="resource-widget resource-flow-layout col-16"
+       data-query="collection:preview/landing/more"
+       data-cardSizes="6x6"
+       data-items-per-page="6"
+       data-maxResults="15"
+       data-initial-results="6"></div>
+
+  </div>
+</section>
+
diff --git a/docs/html-intl/intl/zh-cn/preview/j8-jack.jd b/docs/html-intl/intl/zh-cn/preview/j8-jack.jd
new file mode 100644
index 0000000..94cc929
--- /dev/null
+++ b/docs/html-intl/intl/zh-cn/preview/j8-jack.jd
@@ -0,0 +1,183 @@
+page.title=Java 8 语言功能
+page.keywords="android N", "Java 8", "Jack"
+@jd:body
+
+<div id="qv-wrapper">
+  <div id="qv">
+    <ol>
+      <li>
+        <a href="#supported-features">支持的 Java 8 语言功能和 API</a>
+      </li>
+      <li>
+        <a href="#configuration">启用 Java 8 功能和 Jack 工具链</a>
+      </li>
+    </ol>
+  </div>
+</div>
+
+<p>Android N 支持 Java 8 语言功能,您可以在开发面向 Android N 的应用时使用这些功能。本页面介绍了 Android N Preview中支持的新语言功能、如何正确设置项目以使用这些功能,以及您可能遇到的任何已知问题。
+
+
+
+
+</p>
+
+<p>要开始使用这些功能,您需要下载并设置 Android Studio 2.1(预览版)和 Android N Preview SDK,包括所需的 Jack 工具链和更新的 Android Plugin for Gradle。如果您尚未安装 Android N Preview SDK,请参阅 <a href="{@docRoot}preview/setup-sdk.html">Android N 开发设置</a>。
+
+
+</p>
+
+
+
+<p class="note">
+  <strong>注</strong>:开发面向 Android N 平台的应用并不要求必须使用新的 Java 8 语言功能。如果您不想使用 Java 8 语言功能编写代码,您可以将项目的源和目标兼容性值保留为 Java 7,但您仍必须使用 JDK 8 进行编译,以便针对 Android N 平台进行构建。
+
+
+
+
+</p>
+
+<h2 id="supported-features">
+  支持的 Java 8 语言功能和 API
+</h2>
+
+<p>
+  Android 目前仅支持部分 Java 8 语言功能。在开发面向 Android N Preview 的应用时,现已可使用以下功能:
+
+
+</p>
+
+<ul>
+  <li>
+    <a class="external-link" href="https://docs.oracle.com/javase/tutorial/java/IandI/defaultmethods.html">默认和静态接口方法</a>
+
+  </li>
+
+  <li>
+    <a class="external-link" href="https://docs.oracle.com/javase/tutorial/java/javaOO/lambdaexpressions.html">Lambda 表达式</a>
+ 
+  </li>
+
+  <li>
+    <a class="external-link" href="https://docs.oracle.com/javase/tutorial/java/annotations/repeating.html">重复注解</a>
+
+  </li>
+</ul>
+
+
+<p>
+  此外,现已可使用以下 Java 8 语言功能 API:
+</p>
+
+<ul>
+  <li>Reflection 和语言相关 API:
+  </li>
+
+  <li style="list-style: none; display: inline">
+    <ul>
+      <li>{@code java.lang.FunctionalInterface}
+      </li>
+
+      <li>{@code java.lang.annotation.Repeatable}
+      </li>
+
+      <li>{@code java.lang.reflect.Method.isDefault()}
+      </li>
+
+      <li>以及与重复注解关联的 Reflection API,例如
+      {@code AnnotatedElement.getAnnotationsByType(Class)}
+      </li>
+    </ul>
+  </li>
+  <li>Utility API:
+  </li>
+
+  <li style="list-style: none; display: inline">
+    <ul>
+      <li>{@code java.util.function}
+      </li>
+    </ul>
+  </li>
+</ul>
+
+<p class="note">
+  <strong>注</strong>:Android N 的 Lambda 表达式的实现基于匿名类。这种方法使表达式可以向后兼容,并可以在早期版本的 Android 上执行。如需在早期版本上测试 Lambda 表达式,请进入 {@code
+  build.gradle} 文件,并将 {@code compileSdkVersion} 和 {@code
+  targetSdkVersion} 设为 23 或更小的值。
+
+
+
+</p>
+
+<h2 id="configuration">
+  启用 Java 8 功能和 Jack 工具链
+</h2>
+
+<p>
+  要使用新的 Java 8 语言功能,还需使用新的 <a class="external-link" href="https://source.android.com/source/jack.html">Jack 工具链</a>。新的 Android 工具链将 Java 源语言编译成 Android 可读取的 Dalvik 可执行文件字节码,且有其自己的 {@code .jack} 库格式,在一个工具中提供了大多数工具链功能:重新打包、压缩、模糊化以及 Dalvik 可执行文件分包。
+
+
+
+
+
+</p>
+
+<p>以下是构建 Android Dalvik 可执行文件可用的两种工具链的对比:</p>
+<ul>
+  <li>旧版 javac 工具链:<br>
+  <b>javac</b> ({@code .java} --&gt; {@code .class}) --&gt; <b>dx</b> ({@code
+  .class} --&gt; {@code .dex})
+  </li>
+
+  <li>新版 Jack 工具链:<br>
+  <b>Jack</b> ({@code .java} --&gt; {@code .jack} --&gt; {@code .dex})
+  </li>
+</ul>
+
+<h3>
+  配置 Gradle
+</h3>
+
+<p>
+  如需为您的项目启用 Java 8 语言功能和 Jack,请在模块特定的 {@code build.gradle} 文件中输入以下内容:
+
+</p>
+
+<pre>
+android {
+  ...
+  defaultConfig {
+    ...
+    jackOptions {
+      enabled true
+    }
+  }
+  compileOptions {
+    sourceCompatibility JavaVersion.VERSION_1_8
+    targetCompatibility JavaVersion.VERSION_1_8
+  }
+}
+</pre>
+
+<h3>
+  已知问题
+</h3>
+
+<p>
+  Android Studio 2.0 (Beta) 中引入的 Instant Run 目前不能用于 Jack,在使用新的工具链时将被禁用。
+
+</p>
+
+<p>由于 Jack 在编译应用时不生成中间类文件,依赖这些文件的工具目前不能用于 Jack。例如以下工具:
+
+</p>
+
+<ul>
+  <li>对类文件进行操作的 Lint 检测工具
+  </li>
+
+  <li>需要应用类文件的工具和库(例如 JaCoCo
+ 和 Mockito)</li>
+</ul>
+
+<p>如果您在使用 Jack 的过程中发现其他问题,<a href="http://tools.android.com/filing-bugs">请报告错误</a>。</p>
\ No newline at end of file
diff --git a/docs/html-intl/intl/zh-cn/preview/overview.jd b/docs/html-intl/intl/zh-cn/preview/overview.jd
new file mode 100644
index 0000000..5195ed7
--- /dev/null
+++ b/docs/html-intl/intl/zh-cn/preview/overview.jd
@@ -0,0 +1,440 @@
+page.title=计划概览
+page.metaDescription=让您的应用做好迎接下一版本 Android 的准备。
+page.image=images/cards/card-n-overview_2x.png
+meta.tags=“预览版”, “开发者”, "android"
+page.tags="preview", "developer", "android"
+
+@jd:body
+<!--
+<div class="cols" style=
+"background-color:#f2daf5; padding: 5px 0;margin-bottom:1em; text-align:center;">
+<h3>
+    Developer Preview 3 is now available
+  </h3>
+  <p>Includes final SDK and near-final system images</p>
+   <div style="margin:auto 1em">
+ <ul class="dac-section-links">
+    <li class="dac-section-link">
+      <a href="{@docRoot}preview/support.html#preview3-notes">
+      <span class="dac-sprite dac-auto-chevron"></span>
+      Read the Notes</a>
+    </li>
+
+    <li class="dac-section-link">
+      <a href="{@docRoot}preview/support.html#preview3-get">
+      <span class="dac-sprite dac-auto-chevron"></span>
+      Get the Update</a>
+    </li>
+
+    <li class="dac-section-link">
+      <a href="https://code.google.com/p/android-developer-preview/">
+      <span class="dac-sprite dac-auto-chevron"></span>
+      Report Issues</a>
+    </li>
+  </ul>
+  </div>
+</div>
+-->
+
+<p>
+  欢迎使用 <strong>Android N Developer Preview</strong>,此程序将为您提供针对 Android 的下一版本测试和优化应用所需的所有功能。它是免费的,您只需下载 N Developer Preview 工具即可立即使用。
+
+
+
+</p>
+
+
+
+
+
+
+
+<div style="background-color:#eceff1;padding:1em;">
+<div class="wrap">
+  <div class="cols">
+    <div class="col-4of12">
+      <h5>
+        硬件和模拟器映像
+      </h5>
+
+      <p>
+        在各种设备或模拟器上运行并测试应用。
+
+      </p>
+    </div>
+
+    <div class="col-4of12">
+      <h5>
+        最新的平台代码
+      </h5>
+
+      <p>
+        我们将在 Preview 期间每月提供更新,以便您针对最新的平台变更测试您的应用。
+      </p>
+    </div>
+
+    <div class="col-4of12">
+      <h5>
+        优先处理开发者问题
+      </h5>
+
+      <p>
+        在最初的几周里,我们将优先处理开发者报告的问题,所以请尽快测试并提供反馈。
+
+      </p>
+    </div>
+
+  </div>
+
+  <div class="cols">
+
+
+    <div class="col-4of12">
+      <h5>
+        新行为和新功能
+      </h5>
+
+      <p>
+        请尽早开始支持新平台行为并使用新功能进行开发。
+      </p>
+    </div>
+
+    <div class="col-4of12">
+        <h5>
+        通过 OTA 推送更新
+      </h5>
+
+      <p>
+        通过 Android Beta 计划,所有支持的设备都可以实现空中下载 (OTA) 无缝更新。无需刷机。
+
+      </p>
+    </div>
+
+    <div class="col-4of12">
+      <h5>
+        反馈和支持
+      </h5>
+
+      <p>
+        使用 <a href="{@docRoot}preview/bug">Issue Tracker</a> 向我们报告问题并提供反馈。与 <a href="{@docRoot}preview/dev-community">N&nbsp;开发者社区</a>中的其他开发者建立联系。
+
+
+
+      </p>
+    </div>
+  </div>
+</div>
+</div>
+
+<!--
+<p>New in the Android N Developer Preview: </p>
+
+<ul>
+  <li> Accompanying Android Beta Program for consumers, starting later in the preview</li>
+  <li> More supported devices, including devices from OEM partners</li>
+  <li> Seamless OTAs for your devices, from initial release to final N release without flashing</li>
+</ul>
+-->
+
+<h2 id="timeline">时间表和更新</h2>
+<img src="{@docRoot}images/n-preview-updates_2x.png">
+
+<p>
+  N Developer Preview 从 2016 年 3 月 9 日开始使用,到向 AOSP 和 OEM 公开发布最终 Android N 时停止使用,预计将于 2016 年第三季度发布最终版本。
+
+</p>
+
+<p>
+  在开发阶段的各个里程碑,我们将为您的开发和测试环境提供更新。一般每月(间隔 4 到 6 周)会提供一次更新。里程碑列表如下。
+
+
+</p>
+
+<ul>
+  <li><strong><a href="{@docRoot}preview/support.html">Preview 1</a></strong>(初始版本,alpha)</li>
+  <li><strong>Preview 2</strong>(增量更新,beta)</li>
+  <li><strong>Preview 3</strong>(增量更新,beta)</li>
+  <li><strong>Preview 4</strong>(最终 API 和官方 SDK,在 Play 中发布)</li>
+  <li><strong>Preview 5</strong>(接近最终版本系统映像,用于最终测试)</li>
+  <li>向 AOSP 和生态系统发布<strong>最终版本</strong></li>
+</ul>
+
+<p>
+  每次的更新包括 SDK 工具、预览版系统映像、模拟器、参考文档和 API 差异。
+
+</p>
+
+<p>
+  <strong>前三个预览版里程碑</strong>提供<strong>早期测试和开发环境</strong>,帮助您发现当前应用中的兼容性问题,并针对新平台计划必要的迁移或功能工作。这是向我们提供功能和 API 以及文件兼容性问题反馈的优先期 &mdash; 请使用 <a href="{@docRoot}preview/bug">Issue Tracker</a> 进行反馈。在更新期间,API 可能会有变更。
+
+
+
+
+
+
+</p>
+
+<p>
+  在<strong>预览版 4 和 5</strong> 中,您将可以使用<strong>最终版的 N API 和 SDK</strong> 进行开发,以及用于测试系统行为和功能的接近最终版的系统映像。此时 Android N 会提供标准的 API 级别。您可以对旧版应用进行最终的兼容性测试,并优化使用 N API 或功能的新代码。
+
+
+
+
+</p>
+
+<p>
+  此外,从预览版 4 开始,您将可以面向运行正式 API 级别的 Android N 的<strong>设备发布应用</strong>,例如选择加入 Android Beta 计划的消费者设备。您可以先在 Google Play 的 alpha 和 beta 渠道发布应用,通过 Android Beta 消费者对应用进行测试,然后在商店大范围推广。
+
+
+
+
+
+</p>
+
+<p>
+  如果您在 Android N 中进行测试和开发,强烈建议您在发布预览版更新后,<strong>将开发环境更新到最新版本</strong>。为了方便更新,您可以在 Android Beta 计划中注册您的测试设备,这样就可以在每个里程碑实现<strong>空中下载 (OTA) 更新</strong>。此外,您还将获得可手动下载并刷入的系统映像。
+
+
+
+
+
+</p>
+
+<p>
+  当有预览版更新可用时,我们将通过 <a href="http://android-developers.blogspot.com/">Android 开发者博客</a>、此站点以及 <a href="{@docRoot}preview/dev-community">Android N 开发者社区</a>通知您。
+
+
+</p>
+
+
+<h2 id="preview_tools">N Developer Preview 包含的内容</h2>
+
+<p>
+  N Developer Preview 包括您在各种使用不同屏幕尺寸、网络技术、CPU/GPU 芯片组和硬件架构的设备中测试现有应用所需的所有功能。
+
+
+</p>
+
+<h3 id="sdk_tools">SDK 工具</h3>
+
+<p>您可通过 <a href="{@docRoot}sdk/installing/adding-packages.html">Android Studio</a> 中的 SDK 管理器下载这些组件:</p>
+
+<ul>
+  <li> N Developer Preview <strong>SDK 和工具</strong>
+  <li> N Developer Preview <strong>模拟器系统映像</strong>(32 位和 64 位)
+  <li> 适用于 Android TV 的 N Developer Preview<strong>模拟器系统映像</strong>(32 位)
+  <li> N Developer Preview 支持库(用于新应用模板)
+</ul>
+
+<p>
+  我们将根据需要在每个里程碑为这些开发工具提供更新。
+</p>
+
+<h3 id="hardware_system_images">硬件系统映像</h3>
+
+<p>
+  N Developer Preview 包含 Nexus 以及可用于在物理设备上进行测试和开发的其他硬件系统映像。如需了解硬件映像的完整列表,请参阅<a href="{@docRoot}preview/download.html">设备映像</a>页面。
+
+
+</p>
+
+<p>
+  我们将在每个里程碑为这些设备提供更新的系统映像。您可以手动下载更新的系统映像,并刷入测试设备(如需要,可多次刷入)。这尤其适合需要多次重刷设备的自动化测试环境。
+
+
+
+
+</p>
+
+<p class="note"><strong>注</strong>:<strong>手动刷入设备将不会像在去年的预览版中一样获得 OTA 更新。</strong>今年,您可以通过在 Android Beta 计划中注册设备获得 OTA &mdash; 有关详情请参阅下文。
+
+
+
+</p>
+
+<h3 id="android_beta">通过 Android Beta 计划获得 OTA 更新</h3>
+
+<p>
+  Android N 的一项新功能是空中下载 (OTA) 更新计划,该功能可以将 Android N 最新的预览版更新直接发送到注册该计划的设备。该计划是免费服务,只要您拥有支持的设备并将其注册到 Google 帐户,就可以使用该服务。
+
+
+
+</p>
+
+<p>
+  如需注册该计划,请访问 <a href="https://g.co/androidbeta">Android Beta 计划</a>网站。您将可以看到您的帐户中所有可以注册 Android Beta 的设备。
+
+
+
+</p>
+
+<ol>
+  <li> 选择用于接收 Android N 更新的设备
+  <li> 点击 Enroll,查看并同意服务条款,然后点击 OK。
+</ol>
+
+<p>
+  注册完成后,您的设备将很快收到更新。多数情况下,切换到 Android N 不需要重置所有数据,但建议您在注册设备前对重要数据进行备份,以免丢失。
+
+
+
+</p>
+
+<p>
+  在设备收到更新后,建议您尽快下载并安装更新,以便在系统 UI、行为、API 和功能中及时同步最新的变更。
+
+
+</p>
+
+<p>
+  在 Developer Preview 结束运行时,您的注册设备将收到官方 Android N 版本的更新。
+
+</p>
+
+<p>
+  您可以在 Android Beta 网站上随时注销注册 Android Beta 计划的设备。在注销前,请务必备份设备上的数据。
+
+
+</p>
+
+  <p class="note"><strong>注</strong>:注销后,<strong>您的设备将恢复到最新版本 Android 6.0 Marshmallow 的出厂设置</strong>(不一定是您注册设备前安装的版本)。为确保全新安装,您设备中的数据将被擦除,包括联系人、消息和照片等。
+
+
+
+
+
+
+</p>
+
+<h3 id="documentation_and_sample_code">文档和示例代码</h3>
+
+<p>
+  Developer Preview 网站上提供的以下文档资源有助于您了解 Android&nbsp;N:
+
+</p>
+
+<ul>
+  <li> <a href="{@docRoot}preview/setup-sdk.html">Android N 开发设置</a>,提供入门指南的分步说明。
+
+</li>
+  <li> <a href="{@docRoot}preview/behavior-changes.html">行为变更</a>,带您了解主要测试领域。
+</li>
+  <li> 新 API 文档,包括 <a href="{@docRoot}preview/api-overview.html">API 概览</a>、可下载的 <a href="{@docRoot}preview/setup-sdk.html#docs-dl">API 参考资料</a>以及有关主要功能(例如多窗口支持、受限通知、多区域设置支持等)的详细开发者指南。
+
+
+
+  <li> <a href="{@docRoot}preview/samples.html">示例代码</a>,演示如何支持权限和其他新功能。
+
+  <li> N Developer Preview 当前版本的<a href="{@docRoot}preview/support.html#release-notes">版本说明</a>,包括变更说明和差异报告。
+
+
+</ul>
+
+<h4 id="reference">可下载的 API 参考资料</h4>
+
+<p>
+  在预览版更新初期,您可以下载最新的 <a href="{@docRoot}preview/setup-sdk.html#docs-dl">Android N 平台 API 参考资料</a>,作为单独的 Zip 存档。下载的参考资料还包含差异报告,可帮助您识别相对 API 23 和上一次更新 API 的变更。
+
+
+
+
+</p>
+
+<p>
+  在确定最终版本 Android N API 并指定正式 API 级别后,我们将在网站 <a href="https://developer.android.com">https://developer.android.com</a> 上提供 API 参考资料。
+
+</p>
+
+<h3 id="support_resources">
+  支持资源
+</h3>
+
+<p>
+  在 N Developer Preview 中测试和开发时,请使用以下渠道报告问题和提供反馈。
+
+</p>
+
+<ul>
+  <li> <a href="https://code.google.com/p/android-developer-preview/">N Developer Preview 的 Issue Tracker</a> 是您的<strong>主要反馈渠道。</strong>您可通过 Issue Tracker 报告错误、性能问题和一般反馈。您还可以查阅<a href="{@docRoot}preview/bug">已知问题</a>并找到解决方法。我们将对您的问题进行分类并发送到 Android 工程团队以供审查,且会为您提供进度更新通知。
+
+
+
+
+ </li>
+  <li> <a href="{@docRoot}preview/dev-community">Android N 开发者社区</a>是一个 Google+ 社区。在此社区中,您可<strong>与其他使用 Android N 的开发者建立联系</strong>。您可以分享观察结果或想法,或找到 Android N 问题的解决方法。我们将管理社区,并根据需要提供解答和指导。
+
+
+
+</li>
+</ul>
+
+<h3 id="targeting">锁定目标、预览版 API 和发布</h3>
+
+<p>
+  N Developer Preview 提供的系统和 Android 库仅面向开发,<strong>不具备标准的 API 级别</strong>。如果您想通过拒绝兼容性行为测试您的应用(强烈推荐此做法),则可将应用的 <code><a href=
+  "{@docRoot}preview/setup-sdk.html#create-update">targetSdkVersion</a></code> 设置为 <code>“N”</code>,从而锁定 Android N 的预览版。
+
+
+
+
+
+</p>
+
+<p>
+  Android N Developer Preview 提供<strong>预览 API</strong> 功能 &mdash; 在最终版本 SDK 发布之前,这些 API 都不是正式版本。目前,最终版本 SDK 计划于 2016 年第三季度发布。这意味着一段时期内,特别是该计划的最初几周内,<strong>API 可能会出现细微更改</strong>。我们会通过 Android N Developer Preview 的每次更新为您提供变更摘要。
+
+
+
+
+
+</p>
+
+<p class="note">
+  <strong>注</strong>:虽然预览版 API 可能会更改,但基本系统行为仍保持稳定,可以立即用于测试。
+
+
+</p>
+
+<p>
+  Google Play <strong>禁止发布面向 N Developer Preview 的应用</strong>。当 Android N 最终版本 SDK 可用时,您可以锁定官方 Android N API 级别,并通过 alpha 和 beta 发布渠道将应用发布至 Google Play。与此同时,如果您想要向测试者推广面向 Android N 的应用,则可通过电子邮件或从您的站点直接下载来实现。
+
+
+
+
+
+</p>
+
+<p>
+  在向 AOSP 和 OEM 全面发布 Android N 后(计划在 2016 年第三季度发布),您将可以在 Google Play 的公开发布渠道发布面向 Android N 的应用。
+
+
+</p>
+
+
+<h2 id="how_to_get_started">入门指南</h2>
+
+<p>
+  在使用 Android N 测试应用前,请执行以下操作:
+</p>
+
+<ol>
+  <li> 查看 <a href="{@docRoot}preview/api-overview.html">API 概览</a>和<a href="{@docRoot}preview/behavior-changes.html">行为变更</a>,大致了解新功能及其对您应用的影响。您尤其需要了解的是新的<a href="{@docRoot}preview/features/notification-updates.html">通知</a>功能和<a href="{@docRoot}preview/features/multi-window.html">多窗口支持</a>。
+
+
+
+</li>
+  <li> 根据<a href="{@docRoot}preview/setup-sdk.html">设置 Preview SDK</a> 和配置测试设备的说明设置您的环境。
+</li>
+  <li> 根据<a href="https://developers.google.com/android/nexus/images">刷入说明</a>,对设备刷入最新的 Android N 系统映像。
+ </li>
+  <li> 查阅 <a href="{@docRoot}preview/setup-sdk.html#docs-dl">API 参考资料</a>和 <a href="{@docRoot}preview/samples.html">Android N 示例</a>,更深入地了解新 API 功能以及如何在应用中使用这些功能。
+
+
+  <li> 加入 <a href="{@docRoot}preview/dev-community">Android N 开发者社区</a>,获取最新资讯,并与使用新平台的其他开发者建立联系。
+
+</li>
+</ol>
+
+<p>
+  感谢您加入 Android N Developer Preview 计划!
+</p>
diff --git a/docs/html-intl/intl/zh-cn/preview/samples.jd b/docs/html-intl/intl/zh-cn/preview/samples.jd
new file mode 100644
index 0000000..5e77698
--- /dev/null
+++ b/docs/html-intl/intl/zh-cn/preview/samples.jd
@@ -0,0 +1,85 @@
+page.title=示例
+page.tags="preview", "samples", "android"
+page.image=images/cards/card-n-samples_2x.png
+@jd:body
+
+<p>
+  以下是 Android N 的代码示例。要在 Android Studio 中下载示例,请选择 <b>File &gt; Import Samples</b> 菜单项。
+
+
+</p>
+
+<p class="note">
+  <strong>注:</strong>这些可下载的项目是专为配合 Gradle 和 Android Studio 使用而设计的。
+
+</p>
+
+
+<h3 id="mw">Multi-Window Playground</h3>
+<img src="{@docRoot}preview/images/sample-multiwindow.png" style="float: left; padding-right: 0.5em" height="250" width="156" />
+<p>
+  此示例演示如何在您的应用中充分利用多窗口用户界面。
+
+</p>
+<p>
+  <a href="https://github.com/googlesamples/android-MultiWindowPlayground">
+在 GitHub 中获取</a>
+</p>
+
+<div style="clear: both;"></div>
+<h3 id="an">活动通知</h3>
+<img src="{@docRoot}preview/images/sample-activenotifications.png" style="float: left; padding-right: 0.5em" height="250" width="141" />
+<p>
+  这是一个已存在的示例,其显示一个使用 NotificationCompat 发送通知的简单服务。该服务将来自用户的每个未读会话以不同的通知形式发送。
+
+
+</p>
+<p>
+  此示例已更新,以充分利用 Android N 中提供的新的通知功能。
+
+</p>
+<p>
+  <a href="https://github.com/googlesamples/android-ActiveNotifications">在 GitHub 中获取</a>
+
+</p>
+
+<div style="clear: both;"></div>
+<h3 id="ms">消息传递服务</h3>
+<img src="{@docRoot}preview/images/sample-messagingservice.png" style="float: left; padding-right: 0.5em" height="250" width="150" />
+<p>
+  这是一个已存在的示例,其演示如何使用 NotificationManager 指示应用当前显示的通知数量。
+
+
+</p>
+<p>
+  此示例已更新,以充分利用 Android N 中提供的新的通知功能。
+
+</p>
+<p>
+  <a href="https://github.com/googlesamples/android-MessagingService">在 GitHub 中获取</a>
+
+</p>
+
+<div style="clear: both;"></div>
+<h3 id="fbe">直接启动</h3>
+<img src="{@docRoot}preview/images/sample-directboot.png" style="float: left; padding-right: 0.5em" height="250" width="141" />
+<p>
+  此示例显示如何在设备加密的存储(启动设备后始终可用)中存储和访问数据。
+
+</p>
+<p>
+  <a href="https://github.com/googlesamples/android-DirectBoot">在 GitHub 中获取</a>
+
+</p>
+
+<div style="clear: both;"></div>
+<h3 id="sda">作用域目录访问</h3>
+<img src="{@docRoot}preview/images/sample-scopeddirectoryaccess.png" style="float: left; padding-right: 0.5em" height="250" width="141" />
+<p>
+  此示例演示如何从特定目录读取和写入数据,同时需要较少的权限。
+
+</p>
+<p>
+  <a href="https://github.com/googlesamples/android-ScopedDirectoryAccess">在 GitHub 中获取</a>
+
+</p>
\ No newline at end of file
diff --git a/docs/html-intl/intl/zh-cn/preview/setup-sdk.jd b/docs/html-intl/intl/zh-cn/preview/setup-sdk.jd
new file mode 100644
index 0000000..69fe250
--- /dev/null
+++ b/docs/html-intl/intl/zh-cn/preview/setup-sdk.jd
@@ -0,0 +1,226 @@
+page.image=images/cards/card-n-sdk_2x.pngpage.title=设置预览版
+meta.keywords="预览版", "android"
+page.tags="preview", "developer preview"
+
+
+@jd:body
+
+
+<div id="qv-wrapper">
+  <div id="qv">
+<ol>
+  <li><a href="#get-as13">获取 Android Studio 2.1</a></li>
+  <li><a href="#get-sdk">获取 Android N SDK</a>
+    <ol>
+      <li><a href="#docs-dl">参考文档</a>
+    </ol>
+  </li>
+  <li><a href="#java8">获取 Java 8 JDK 和 JRE</a></li>
+  <li><a href="#create-update">更新或创建一个项目</a></li>
+  <li><a href="#next">后续步骤</a></li>
+</ol>
+  </div>
+</div>
+
+<p>若要开发适用于 Android N Preview 的应用,您需要对您的开发者环境进行一些更新,如本页所述。
+</p>
+
+<p>若只是在 Android N 系统映像上测试应用的兼容性,请按照<a href="{@docRoot}preview/download.html">在 Android N 设备上进行测试</a>指南进行操作。
+</p>
+
+<img src="{@docRoot}preview/images/n-preview-setup.png" width="700" alt="" />
+
+
+<h2 id="get-as13">获取 Android Studio 2.1(预览版)</h2>
+
+<p>Android N 平台为 <a href="{@docRoot}preview/j8-jack.html">Java 8 语言功能</a>添加支持,该功能需要一个名为 Jack 的新编译器。当前仅在 Android Studio 2.1 中支持最新的 Jack 版本。因此,如果您想要使用 Java 8 语言功能,则必须使用 Android Studio 2.1 构建应用。或者,您不需要使用 Jack 编译器,但仍需要更新至 JDK 8 以便使用 Android N 平台进行编译,如下所述。
+
+
+
+
+
+
+</p>
+
+<iframe width="400" height="225" src="//www.youtube.com/embed/SBbWGxXCMqQ?autohide=1&amp;showinfo=0" frameborder="0" allowfullscreen="" style="float: right; margin: 0 0 20px 20px;"></iframe>
+
+<p>在 Canary 发布渠道中,Android Studio 2.1 当前可以预览版的形式提供。如果您已拥有 Android Studio 且不需要更新到 Canary 发布渠道,您可通过单独安装的形式下载 Android Studio 2.1,并使用它在 Android N 中进行开发,从而使您的主要 Android Studio 环境不受影响。
+
+
+
+
+</p>
+
+<p>若要以单独安装的形式下载 Android Studio 2.1,则按照以下步骤进行操作(或者如果想要收到 Android Studio 2.1 作为现有安装的更新,则跳过第 4 步):
+
+</p>
+
+<ol>
+  <li>编辑现有 Android Studio 安装的名称并追加版本号。通过此方式,当您安装新版本时,新版本不会重写现有的版本。
+
+</li>
+  <li>从 <a href="http://tools.android.com/download/studio/canary/latest">Canary 发布渠道下载页面</a>为您的操作系统下载适当的 ZIP 文件。
+
+  </li>
+  <li>将软件包解压缩,并将 Android Studio 2.1 内容移到您系统上相应的应用位置,然后启动它。
+</li>
+  <li>打开 Settings 对话框(在 Windows/Linux 上打开 <strong>File &gt; Settings</strong>,或在 Mac 上打开 <strong>Android Studio &gt; Preferences</strong>)。在左侧面板中,选择 <strong>Appearance &amp; Behavior &gt; System Settings &gt; Updates</strong>。
+
+
+
+
+  </li>
+  <li>在 Updates 面板上,选中 <strong>Automatically check updates for</strong>复选框,并从下拉列表中选择 <strong>Canary Channel</strong>。
+
+
+  </li>
+</ol>
+
+<p>保持此设置窗口处于打开状态,以执行下一步。</p>
+
+
+<h2 id="get-sdk">获取 N Preview SDK</h2>
+
+<p>开始使用 Android N API 进行开发时,您需要按如下所示在 Android Studio 中安装 Android N Preview SDK:
+</p>
+
+<ol>
+  <li>同时还查看 Updates 面板(来自上面的第 4 步),选中 <strong>Automatically check updates for Android SDK</strong> 复选框,然后从下拉列表中选择 <strong>Preview Channel</strong>。
+
+
+
+  </li>
+  <li>点击 <strong>Check Now</strong>。</li>
+
+  <li>在左侧面板中,选择 <strong>Appearance &amp; Behavior &gt; System Settings &gt; Android SDK</strong>。
+
+
+  <li>点击 <strong>SDK Platforms</strong> 选项卡,然后选中 <strong>Android N Preview</strong> 复选框。
+</li>
+
+  <li>点击 <strong>SDK Tools</strong> 选项卡,然后选中 <strong>Android SDK Build Tools</strong>、<strong>Android SDK Platform-Tools</strong> 和 <strong>Android SDK Tools</strong> 复选框。
+
+
+
+  </li>
+
+  <li>点击 <strong>OK</strong>,然后接受需要安装的所有软件包的许可协议。
+
+  </li>
+</ol>
+
+<h3 id="docs-dl">获取 N Preview 参考文档</h3>
+
+<p>
+  有关 Android N API 的详细信息可在 N Preview 参考文档中获取,您可以从下表下载该文档。此软件包包含一个离线的删节版 Android 开发者网站,并包含更新的 API 参考(适用于 Android N API),以及一个 API 差异报告。
+
+
+
+
+</p>
+
+<table>
+  <tr>
+    <th scope="col">文档</th>
+    <th scope="col">校验和</th>
+  </tr>
+  <tr>
+    <td style="white-space: nowrap">
+    <a href="{@docRoot}shareables/preview/n-preview-1-docs.zip">n-preview-1-docs.zip</a></td>
+    <td width="100%">
+      MD5:4ab33ccbe698f46f125cc5b807cf9c2f<br>
+      SHA-1:6a3880b3ccd19614daae5a4d0698ea6ae11c20a5
+    </td>
+  </tr>
+<table>
+
+
+
+<h2 id="java8">获取 Java 8 JDK 和 JRE</h2>
+
+<p>若要使用 Android N 平台编译您的应用,您需要使用 Java 8 Developer Kit (JDK 8),同时为了在 Android Studio 2.1 中使用一些工具,您需要安装 Java 8 Runtime Environment (JRE 8)。因此,如果您还没有每个软件的最新版本,请立即下载 JDK 8 和 JRE 8。
+
+
+
+</p>
+
+<p>然后,按如下所示在 Android Studio 中设置 JDK 版本:</p>
+
+<ol>
+  <li>在 Android Studio 中打开 Android 项目,然后通过选择 <strong>File &gt; Project Structure</strong> 打开“Project Structure”对话框。(或者,您可以通过选择 <strong>File &gt; Other Settings &gt; Default Project Structure</strong> 设置所有项目的默认值。)
+
+
+
+
+   </li>
+   <li>在对话框的左侧面板中,点击 <strong>SDK Location</strong>。
+   </li>
+   <li>在 <strong>JDK Location</strong> 字段中,输入 Java 8 JDK 的位置(点击右侧的按钮可浏览您的文件),然后点击 <strong>OK</strong>。
+
+
+   </li>
+</ol>
+
+<img src="{@docRoot}preview/images/studio-jdk-location.jpg" width="700" alt="" />
+
+
+<h2 id="create-update">更新或创建一个项目</h2>
+
+<p>
+  若要使用 Android N API,则必须正确配置您的项目。
+</p>
+
+<p>如果您计划使用 Java 8 语言功能,您还应阅读 <a href="{@docRoot}preview/j8-jack.html">Java 8 语言功能</a>,以更详细的了解支持的 Java 8 功能,以及如何使用 Jack 编译器配置项目。
+
+
+</p>
+
+
+<h3 id="update">更新现有项目</h3>
+
+<p>打开模块的 <code>build.gradle</code> 文件,并按如下所示更新值:
+
+
+</p>
+
+<pre>
+android {
+  compileSdkVersion <strong>'android-N'</strong>
+  buildToolsVersion <strong>'24.0.0-rc1'</strong>
+  ...
+
+  defaultConfig {
+     minSdkVersion <strong>'N'</strong>
+     targetSdkVersion <strong>'N'</strong>
+     ...
+  }
+  ...
+}</pre>
+
+
+<h3 id="create">创建新项目</h3>
+
+
+<p>若要使用 Android N  Preview SDK 创建新的开发项目:</p>
+
+<ol>
+  <li>点击 <strong>File &gt; New Project</strong>。按照步骤进行操作,直到您到达“Target Android Devices”页面。
+
+  </li>
+  <li>在此页面上,选择 <strong>Phone and Tablet</strong> 选项。</li>
+  <li>在 <strong>Phone and Tablet</strong> 选项下,从 <strong>Minimum SDK</strong> 选项列表中,选择 <strong>N: Android API 23, N Preview (Preview)</strong>。
+
+</li>
+</ol>
+
+
+<h2 id="next">后续步骤</h2>
+
+<ul>
+  <li>按照<a href="{@docRoot}preview/download.html">在 Android N 设备上进行测试</a>指南进行操作。</li>
+  <li>通过<a href="{@docRoot}preview/behavior-changes.html">行为变更</a>以及 <a href="{@docRoot}preview/api-overview.html">Android N API 和功能</a>了解更多有关 Android N 平台的信息。
+
+
+</li>
+</ul>
+
diff --git a/docs/html-intl/intl/zh-tw/preview/api-overview.jd b/docs/html-intl/intl/zh-tw/preview/api-overview.jd
new file mode 100644
index 0000000..aeace5b
--- /dev/null
+++ b/docs/html-intl/intl/zh-tw/preview/api-overview.jd
@@ -0,0 +1,676 @@
+page.title=適用於開發人員的 Android N
+meta.tags="preview", "androidn"
+page.tags="preview", "developer preview"
+page.image=images/cards/card-n-apis_2x.png
+@jd:body
+
+
+
+
+<div id="qv-wrapper">
+<div id="qv">
+  <h2>主要開發人員功能</h2>
+  <ol>
+      <ul style="list-style-type:none;">
+        <li><a href="#multi-window_support">多視窗支援</a></li>
+        <li><a href="#notification_enhancements">通知</a></li>
+        <li><a href="#jit_aot">JIT/AOT 編譯</a></li>
+        <li><a href="#quick_path_to_app_install">應用程式安裝的快速路徑</a></li>
+        <li><a href="#doze_on_the_go">移動時休眠</a></li>
+        <li><a href="#background_optimizations">背景最佳化</a></li>
+        <li><a href="#data_saver">Data Saver</a></li>
+        <li><a href="#tile_api">快速設定磚 API</a></li>
+        <li><a href="#number-blocking">拒接號碼</a></li>
+        <li><a href="#call_screening">來電過濾</a></li>
+        <li><a href="#multi-locale_languages">地區設定與語言</a></li>
+        <li><a href="#icu4">Android 中的 ICU4J API</a></li>
+        <li><a href="#gles_32">OpenGL ES 3.2 API</a></li>
+        <li><a href="#android_tv_recording">Android TV 錄製</a></li>
+        <li><a href="#android_for_work">Android for Work</a></li>
+        <li><a href="#accessibility_enhancements">協助工具</a></li>
+        <li><a href="#direct_boot">直接開機</a></li>
+        <li><a href="#key_attestation">金鑰證明</a></li>
+        <li><a href="#network_security_config">網路安全性設定</a></li>
+        <li><a href="#default_trusted_ca">預設信任的 CA</a></li>
+        <li><a href="apk_signature_v2">APK 簽章配置第 2 版</a></li>
+        <li><a href="#scoped_directory_access">限定範圍目錄存取</a></li>
+      </ol>
+</div>
+</div>
+
+
+
+<p>Android N 仍在開發中,但是您現在可以透過「N Developer Preview」來試用。下面各節重點說明適用於開發人員的一些新功能。
+
+ </p>
+
+<p>
+  請務必查看<a href="{@docRoot}preview/behavior-changes.html">行為變更</a>以瞭解哪些平台變更部分會影響您的應用程式、閱讀開發人員指南以瞭解主要功能,以及下載 <a href="{@docRoot}preview/setup-sdk.html#docs-dl">API 參考資料</a>以深入瞭解新 API 的詳細資訊。
+
+
+
+</p>
+
+<h2 id="multi-window_support">多視窗支援</h2>
+
+
+<p>在 Android N 中,我們將許多人要求的新多工功能引進到平台 &mdash; 多視窗支援。
+ </p>
+
+  <p>使用者現在可以一次在螢幕上開啟兩個應用程式。 </p>
+  <ul>
+  <li>在執行 Android N 的手機與平板電腦上,使用者可以在分割畫面模式中並排或上下排列兩個應用程式。只要拖曳兩個應用程式之間的分隔線,即可調整其大小。
+
+
+ </li>
+
+<li>在 Android TV 裝置上,應用程式可以將本身放入<a href="{@docRoot}preview/features/picture-in-picture.html">子母畫面模式</a>,讓它們持續顯示內容,同時使用者可以瀏覽其他應用程式或與其互動。請參閱下面內容,以瞭解更多資訊。
+
+ </li>
+  </ul>
+
+<div class="col-4of10">
+<img src="{@docRoot}preview/images/mw-portrait.png" alt="" style="height:460px;padding-left:1em;" id="img-split-screen" />
+<p class="img-caption">
+  <strong>圖 1.</strong> 在分割畫面模式中執行的應用程式。
+</p>
+  </div>
+
+<p>特別是平板電腦與其他螢幕較大的裝置,多視窗支援為您提供吸引使用者的新方式。您甚至可以在應用程式中啟用拖放功能,讓使用者便利地從應用程式拖放內容 &mdash; 這是增強您的使用者體驗的絕佳方式。
+
+
+ </p>
+
+<p>將多視窗支援新增到您的應用程式並設定它處理多視窗顯示的方式是很直接的作法。例如,您可以指定活動的最小可允許尺寸,避免使用者將活動的尺寸調整到低於該尺寸。您也可以停用應用程式的多視窗顯示,以確保系統只以全螢幕模式顯示您的應用程式。
+
+
+
+</p>
+
+<p>
+  如需詳細資訊,請參閱<a href="{@docRoot}preview/features/multi-window.html">多視窗支援</a>開發人員文件。
+
+</p>
+
+<h2 id="notification_enhancements">通知增強功能</h2>
+
+<p>我們已重新設計 Android N 中的通知,讓它們更易於使用、速度更快。一些變更包括:
+</p>
+
+<ul>
+  <li>
+    <strong>範本更新</strong>:我們已更新通知範本,在主圖影像和虛擬人偶放入的新強調。開發人員只需對程式碼進行最少的調整,即可發揮新範本的所有功能。
+
+
+  </li>
+
+  <li>
+    <strong>整合式通知</strong>:系統可以將訊息群組到一起 (例如依訊息主題) 並顯示群組。使用者可以直接在群組上執行動作,如「關閉」或「封存」。如果您已實作 Android Wear 的通知,則已經熟悉此模式。
+
+
+
+
+  </li>
+
+  <li>
+    <strong>直接回覆</strong>:對於即時通訊應用程式,Android 系統支援內嵌回覆,這樣使用者就能直接在通知介面內快速回應簡訊或文字訊息。
+
+
+  </li>
+
+  <li>
+    <strong>自訂檢視</strong>:兩個新的 API 讓您在通知中使用自訂檢視時可利用系統的裝飾,例如通知標題與動作。
+
+
+  </li>
+</ul>
+
+<div class="col-4of12">
+  <img src="{@docRoot}preview/images/notifications-1.png" alt="" style="padding:.5em;max-width:226px">
+</div>
+
+<div class="col-4of12">
+  <img src="{@docRoot}preview/images/notifications-3.png" alt="" style="padding:.5em;max-width:226px">
+</div>
+
+<div class="col-4of12">
+  <img src="{@docRoot}preview/images/notifications-2.png" alt="" style="padding:.5em;max-width:226px">
+</div>
+
+
+<p class="img-caption">
+  <strong>圖 2.</strong> 整合式通知與直接回覆。
+</p>
+
+<p>如果要瞭解如何實作新的功能,請參閱<a href="{@docRoot}preview/features/notification-updates.html">通知</a>指南。
+
+</p>
+
+
+
+<h2 id="jit_aot">設定檔指引 JIT/AOT 編譯</h2>
+
+<p>在 Android N 中,我們新增了 Just in Time (JIT) 編譯器搭配程式碼分析工具到 ART,讓 Android 應用程式在執行時能夠持續改善其效能。JIT 編譯器補充了 ART 目前的 Ahead of Time (AOT) 編譯器,協助改善執行階段效能、節省儲存空間以及加速應用程式更新和系統更新。
+
+
+
+</p>
+
+<p>設定檔指引編譯讓 ART 根據每個應用程式的實際用情形與裝置上的情況來管理其 AOT/JIT 編譯。例如,ART 會維護每個應用程式常用方法的設定檔,而且可以預先編譯和快取那些方法以獲得最佳效能。它不會編譯應用程式的其他部分,直到實際要使用這些部分時才會編譯。
+
+
+
+</p>
+
+<p>除了改善應用程式關鍵部分的效能以外,設定檔指引編譯還有助於降低應用程式的整體 RAM 使用量,包括關聯的二進位檔案。此功能對於低記憶體裝置特別重要。
+
+</p>
+
+<p>ART 透過對裝置電池產生最小影響的方式來管理設定檔指引編譯。它只會在裝置閒置和充電時預先編譯,這種預先工作的方式可以節省時間和電池電力。
+
+</p>
+
+<h2 id="quick_path_to_app_install">應用程式安裝的快速路徑</h2>
+
+<p>ART JIT 編譯器的最實質好處之一是加速應用程式安裝和系統更新。即使是在 Android 6.0 上需要數分鐘來最佳化和安裝的大型應用程式,現在只需幾秒鐘就可以安裝。系統更新也會變得更快,因為不再需要最佳化步驟。
+
+
+ </p>
+
+<h2 id="doze_on_the_go">移動時休眠...</h2>
+
+<p>Android 6.0 引進休眠功能,這是可節省電池電力的系統模式,它會在裝置閒置時 (例如放在桌子上或抽屜中) 延後應用程式的 CPU 與網路活動。
+
+ </p>
+
+<p>現在 Android N 中的休眠功能更進一步進展,可在移動時節省電池電力。只要螢幕關閉一段時間且裝置拔除電源的情況下,休眠功能就會將熟悉的 CPU 與網路限制的子集套用到應用程式。這表示即使使用者將裝置放在口袋內時也可以節省電池電力。
+
+
+
+</p>
+
+
+<img src="/preview/images/doze-diagram-1.png" alt="" id="figure1" />
+<p class="img-caption">
+  <strong>圖 3.</strong> 休眠功能現在可套用限制,即使裝置沒有固定在一處時,也能改善電池使用時間。
+
+</p>
+
+
+<p>當裝置使用電池時,在螢幕關閉短時間後,休眠功能會限制網路存取並延遲工作與同步處理。在短暫的維護時段中,應用程式可存取網路並執行延遲的工作/同步處理。裝置螢幕開啟或插上電源可讓裝置離開休眠狀態。
+
+
+
+</p>
+
+<p>當裝置再次固定不動,且螢幕關閉並使用電池一段時間後,休眠功能會在
+{@link
+android.os.PowerManager.WakeLock}, {@link android.app.AlarmManager} 鬧鐘和 GPS/Wi-Fi 掃描上套用完整的 CPU 與網路限制。
+</p>
+
+<p>讓應用程式適應休眠功能的最佳做法,無論裝置在移動中或固定不動都是一樣的,所以如果您已經更新應用程式使其能夠處理休眠,就完全沒問題。如果沒有,現在就<a href="{@docRoot}training/monitoring-device-state/doze-standby.html#assessing_your_app">讓您的應用程式適應休眠功能</a>。
+
+
+</p>
+
+<h2 id="background_optimizations">專案 Svelte:背景最佳化</h2>
+
+<p>專案 Svelte 一直努力在生態系統中讓各種 Android 裝置上系統與應用程式使用最少的 RAM。在 Android N 中,「專案 Svelte」專注於最佳化應用程式在背景執行的方式。
+
+ </p>
+
+<p>背景處理是大多數應用程式的必要部分。如果正確地處理,它可讓您擁有令人驚歎的使用者體驗 &mdash; 立即、快速、內容感知。如果沒有適當處理,背景處理就會不必要地耗用 RAM (與電池電力),而且影響其他應用程式的系統效能。
+
+
+ </p>
+
+<p>自 Android 5.0 開始,{@link android.app.job.JobScheduler} 就以適合使用者的偏好方式來執行背景工作。應用程式可以排程工作,同時讓系統根據記憶體、電源和連線狀況進行最佳化。JobScheduler 提供控制權和簡潔性,我們希望所有應用程式都使用它。
+
+
+
+ </p>
+
+<p>
+  另一個好用的選項是 <a href="https://developers.google.com/android/reference/com/google/android/gms/gcm/GcmNetworkManager"><code>GCMNetworkManager</code></a>,它屬於 Google Play 服務的一部分,提供類似的工作排程功能,可與舊版 Android 相容。
+
+
+
+</p>
+
+<p>我們會繼續擴充 <code>JobScheduler</code> 和 <code>GCMNetworkManager</code> 以滿足您的更多使用案例 &mdash; 例如,在 Android N 中,現在您可以根據內容提供者中的變更來排程背景工作。同時,我們也開始取代一些會降低系統效能 (特別是低記憶體裝置) 的較舊模式。
+
+
+
+
+</p>
+
+<p>在 Android N 中,我們移除了三個常用的隱含廣播 &mdash; {@link android.net.ConnectivityManager#CONNECTIVITY_ACTION}、{@link
+  android.hardware.Camera#ACTION_NEW_PICTURE} 和 {@link
+  android.hardware.Camera#ACTION_NEW_VIDEO} &mdash; 因為它們會一次喚醒多個應用程式的背景處理程序,而耗盡記憶體與電池電力。如果您的應用程式收到這些廣播,請改為使用「N Developer Preview」遷移到 <code>JobScheduler</code> 與相關的 API。
+
+
+
+ </p>
+
+<p>
+  看看<a href="{@docRoot}preview/features/background-optimization.html">背景最佳化</a>文件,以瞭解詳細資訊。
+
+</p>
+
+
+<h2 id="data_saver">Data Saver</h2>
+
+<div class="col-5of12" style="margin-right:1.5em;">
+<img src="{@docRoot}preview/images/datasaver.png" style="border:2px solid #ddd">
+
+<p class="img-caption" style="padding-right:2em;">
+  <strong>圖 4.</strong> [設定] 中的 Data Saver。
+</p>
+  </div>
+
+<p>在行動裝置的使用壽命期間,行動數據方案的費用通常會超過裝置本身的費用。對於許多使用者而言,行動數據是他們想要節省的昂貴資源。
+
+ </p>
+
+<p>Android N 引進 Data Saver 模式,這是一個新的系統服務,有助於降低應用程式的行動數據用量,無論是漫遊、接近帳單週期結束時或小量預付數據包。Data Saver 讓使用者控制應用程式如何使用行動數據,也讓開發人員在 Data Saver 開啟時提供更有效率的服務。
+
+
+
+ </p>
+
+<p>當使用在 [設定]<strong></strong> 中啟用 Data Saver 且裝置使用計量付費網路時,系統會封鎖背景數據使用量,並指示前景的應用程式盡量使用較少的數據 &mdash; 例如,限制串流的位元率、降低影像品質、延遲開放式預先快取等等。使用者可以將特定應用程式新增到允許清單,以便即使在 Data Saver 為開啟狀態時,這些應用程式仍可在背景使用計量付費的數據使用量。
+
+
+
+
+</p>
+
+<p>Android N 擴充 {@link android.net.ConnectivityManager} 為應用程式提供<a href="{@docRoot}preview/features/data-saver.html#status">擷取使用者的 Data Saver 喜好設定</a>與<a href="{@docRoot}preview/features/data-saver.html#monitor-changes">監視喜好設定變更</a>的方法。所有應用程式應該檢視使用者是否已啟用 Data Saver 並努力限制前景與背景的數據使用量。
+
+
+
+</p>
+
+
+<h2 id="tile_api">快速設定磚 API</h2>
+
+
+<div style="float:right;max-width:320px">
+<img src="{@docRoot}preview/images/quicksettings.png" style="padding-left:1.5em;">
+
+<p class="img-caption" style="padding-left:2em;">
+  <strong>圖 5.</strong> 通知欄中的快速設定磚。
+</p>
+
+
+  </div><p>快速設定是直接從通知欄顯示關鍵設定與動作的常用簡單方式。在 Android N 中,我們擴充了快速設定的範圍,讓它變得更實用、更便利。
+
+ </p>
+
+<p>我們也為額外的快速設定磚增加了更多空間,使用者可以透過向左或向右撥動存取分頁顯示區域。我們也讓使用者能夠控制要顯示的快速設定磚與顯示位置 &mdash; 使用者只需拖放磚,即可新增或移除它們。
+
+
+ </p>
+
+<p>對於開發人員,Android N 也加入了新的 API,讓您定義自己的快速設定磚,以便使用者輕鬆存取您應用程式中的關鍵控制項與動作。
+</p>
+
+<p>
+  快速設定磚是專為急需或常用的控制項或動作而保留的,它不應該做為啟動應用程式的捷徑。
+
+
+</p>
+
+<p>
+  定義磚之後,您即可將它們顯示給使用者,使用者只需拖放這些磚,即可將它們新增到快速設定中。
+
+</p>
+
+<p>
+  如需建立應用程式磚的相關資訊,請參閱可下載之 <a href="{@docRoot}preview/setup-sdk.html#docs-dl">API 參考資料</a>中的 <code>android.service.quicksettings.Tile</code>。
+
+</p>
+
+
+
+<h2 id="number-blocking">拒接號碼</h2>
+
+<p>Android N 現在在平台中支援拒接號碼,並提供一個架構 API,讓服務提供者維護一份拒接號碼清單。預設的簡訊應用程式、預設的電話應用程式與提供者應用程式可以讀取及寫入拒接號碼清單。其他應用程式無法存取該清單。
+
+
+</p>
+
+<p>透過讓拒絕號碼成為平台上的標準功能,Android 為應用程式提供一個一致的方式,讓它們在各種裝置上都能支援拒接號碼。應用程式可以利用的其他好處包括:
+
+</p>
+
+<ul>
+  <li> 如果為某個號碼設定來電拒接,也會拒收該號碼的簡訊
+  <li> 透過備份與還原功能,即使經過重設或使用不同的裝置,也可持續保存
+
+  <li> 多個應用程式可使用同一份拒接號碼清單
+</ul>
+
+<p>此外,透過 Android 整合行動通訊業者應用程式,表示行動通訊業者可以讀取裝置上的拒接號碼清單並為使用者執行服務端的拒接號碼,因此停止拒接號碼的來電和簡訊透過任何媒體 (例如 VOIP 端點或來電轉接) 連絡到使用者。
+
+
+</p>
+
+<p>
+  如需詳細資訊,請參閱可下載之 <a href="{@docRoot}preview/setup-sdk.html#docs-dl">API 參考資料</a>中的 <code>android.provider.BlockedNumberContract</code>。
+
+
+</p>
+
+<h2 id="call_screening">來電過濾</h2>
+
+<p>
+  Android N 能讓預設電話應用程式過濾來電。電話應用程式執行的方法是實作新的<code>CallScreeningService</code>,它可以讓電話應用程式根據來電的 {@link android.telecom.Call.Details Call.Details} 來執行數個動作,例如:
+
+
+
+</p>
+
+<ul>
+  <li> 拒接來電
+  <li> 不允許將來電記錄到通話紀錄
+  <li> 不對使用者顯示來電通知
+</ul>
+
+<p>
+  如需詳細資訊,請參閱可下載之 <a href="{@docRoot}preview/setup-sdk.html#docs-dl">API 參考資料</a>中的 <code>android.telecom.CallScreeningService</code>。
+
+
+</p>
+
+
+<h2 id="multi-locale_languages">多地區設定支援,更多語言</h2>
+
+
+<p>Android N 現在可讓使用者在 [設定] 中選取<strong>多個地區設定</strong>,以便以更好的方式支援雙語言使用案例。應用程式可以使用新的 API 取得使用者選取的地區設定,然後為多地區設定使用者提供更精細的使用者體驗 &mdash; 例如以多語言顯示搜尋結果,以及不為使用者已經熟知語言的網頁提供翻譯。
+
+
+
+
+</p>
+
+<p>除了多地區設定支援,Android N 也擴充了供使用者選用的語言選項。它為每種常用語言 (例如英文、西班牙文、法文與阿拉伯文) 提供 25 種變體。它也增加了對 100 種以上新語言的支援。
+
+
+</p>
+
+<p>應用程式呼叫 <code>LocaleList.GetDefault()</code> 即可取得使用者設定的地區設定清單。為了支援擴充的地區設定數目,Android N 變更了它解析資源的方式。請務必測試並確認您的應用程式使用新的資源解析邏輯時可正常運作。
+
+</p>
+
+<p>如果要深入瞭解新的資源解析行為與應該遵循的最佳做法,請參閱<a href="{@docRoot}preview/features/multilingual-support.html">多語言支援</a>。
+</p>
+
+<h2 id="icu4">Android 中的 ICU4J API</h2>
+
+<p>
+  Android N 現在在 <code>android.icu</code> 套件下的 Android 架構中提供一個 <a href="http://site.icu-project.org/">ICU4J</a> API 子集。遷移很容易,大部分要承擔只是從 <code>com.java.icu</code> 命名空間變更為 <code>android.icu</code> 即可。如果您已經在應用程式中使用 ICU4J 套件組合,只要切換到 Android 架構中提供的 <code>android.icu</code> API,即可顯著縮減 APK 的大小。
+
+
+
+
+ 
+</p>
+
+<p>
+  如果要深入瞭解 Android ICU4J API,請參閱 <a href="{@docRoot}preview/features/icu4j-framework.html">ICU4J 支援</a>。
+</p>
+
+
+
+<h2 id="gles_32">OpenGL&trade; ES 3.2 API</h2>
+
+<p>Android N 針對 OpenGL ES 3.2 新增架構介面與平台支援,包括:</p>
+
+<ul>
+  <li> <a class="external-link" href="https://www.khronos.org/registry/gles/extensions/ANDROID/ANDROID_extension_pack_es31a.txt">Android 延伸套件</a></a> (AEP) 中的所有延伸套件,但 <code>EXT_texture_sRGB_decode</code> 除外。
+  <li> HDR 的浮點畫面緩衝區與延遲著色。
+  <li> BaseVertex 繪圖呼叫 (可啟用更好的批次處理與串流)。
+  <li> 穩定的緩衝區存取控制 (可降低 WebGL 額外負荷)。
+</ul>
+
+<p>Android N 上 OpenGL ES 3.2 的架構 API 提供 <code>GLES32</code> 類別。使用 OpenGL ES 3.2 時,請務必在宣示說明檔案中使用 <code>&lt;uses-feature&gt;</code> 標籤與 <code>android:glEsVersion</code> 屬性宣告需求。
+
+
+ </p>
+
+<p>如需使用 OpenGL ES (包括如何在執行階段檢查裝置支援的 OpenGL ES 版本) 的詳細資訊,請參閱 <a href="{@docRoot}guide/topics/graphics/opengl.html">OpenGL ES API 指南</a>。
+</p>
+
+
+<h2 id="android_tv_recording">Android TV 錄製</h2>
+
+<p>Android N 透過新的錄製 API,新增了錄製和播放 Android TV 輸入服務內容的功能。以現有的時間位移 API 為建置基礎,TV 輸入服務可以控制要錄製哪個頻道的資料、如何儲存已錄製的時段,以及管理使用者與錄製內容的互動。
+
+
+ </p>
+
+<p>如需詳細資訊,請參閱 <a href="{@docRoot}preview/features/tv-recording-api.html">Android TV 錄製 API</a>。</p>
+
+
+<h2 id="android_for_work">Android for Work</h2>
+
+<p>Android for Work 為執行 Android N 的裝置增加了許多新的功能與 API。一些亮點如下所示 &mdash; 如需與 Android N 相關之 Android for Work 更新的完整清單,請參閱「Android for Work 變更」。
+
+</p>
+
+<h3 id="work_profile_security_challenge">工作設定檔安全性查問 </h3>
+
+<p>
+  設定檔擁有者可以為以工作設定檔執行之應用程式指定個別的安全性查問。當使用者嘗試開啟任何工作應用程式時會顯示工作查問。成功完成安全性查問可將工作設定檔解鎖並在必要時將它解密。對於設定檔擁有者而言,<code>ACTION_SET_NEW_PASSWORD</code> 會提示使用者設定工作查問,而且 <code>ACTION_SET_NEW_PARENT_PROFILE_PASSWORD</code> 會提示使用者設定裝置鎖定。
+
+
+
+
+
+
+</p>
+
+<p>
+  設定檔擁有者可以使用 <code>setPasswordQuality()</code>、<code>setPasswordMinimumLength()</code> 與相關方法,為工作查問設定各自的密碼原則 (例如,需要 PIN 的時間長度,或是否使用指紋來將設定檔解鎖)。設定檔使用者也可以使用新的 <code>getParentProfileInstance()</code> 方法傳回的 <code>DevicePolicyManager</code> 執行個體來設定裝置鎖定。此外,設定檔擁有者還可以使用新的 <code>setOrganizationColor()</code> 與 <code>setOrganizationName()</code> 方法,為工作查問自訂認證畫面。
+
+
+
+
+
+
+
+
+</p>
+<h3 id="turn_off_work">關閉工作 </h3>
+
+<p>在具有工作設定檔的裝置上,使用者可以切換工作模式。當工作模式關閉時,受管理的使用者會暫時關機,因此而停用工作設定檔應用程式、背景同步與通知。這也包括設定檔擁有者應用程式。當工作模式關閉時,系統會顯示持續的狀態圖示,提醒使用者他們無法啟動工作應用程式。啟動器會指出工作應用程式和小工具無法存取。
+
+
+
+
+ </p>
+
+<h3 id="always_on_vpn">一律開啟的 VPN </h3>
+
+<p>裝置擁有者和設定檔擁有者可確保工作應用程式一律透過指定的 VPN 連線。系統會自動在裝置開機時啟動該 VPN。
+
+</p>
+
+<p>
+  新的 <code>DevicePolicyManager</code> 方法是 <code>setAlwaysOnVpnPackage()</code> 與 <code>getAlwaysOnVpnPackage()</code>。
+
+
+</p>
+
+<p>因為系統無需透過應用程式互動即可直接連結 VPN 服務,所以 VPN 用戶端需要為「一律開啟的 VPN」處理新的進入點。正如以往,透過符合動作 <code>android.net.VpnService</code> 的意圖篩選器向系統指明服務。
+
+
+ </p>
+
+<p>
+  使用者也可以使用 [設定] &gt; [更多] &gt; [VPN]<strong></strong> 手動設定「一律開啟的 VPN」用戶端,這些用戶端在主要使用者中實作 <code>VPNService</code> 方法。
+
+
+</p>
+
+<h2 id="accessibility_enhancements">協助工具增強功能</h2>
+
+<p>Android N 現在為新的裝置設定在歡迎畫面上直接提供「視覺設定」。這讓使用者更易於在自己的裝置上探索及設定協助工具功能,包括放大手勢、字型大小、顯示大小和 TalkBack。
+
+
+ </p>
+
+<p>將這些協助工具功能放置在更為顯眼的地方,您的使用者較可能在啟用它們的情況下試用您的應用程式。請務必儘早在啟用這些設定的情況下測試您的應用程式。您可以從 [設定] &gt; [協助工具] 啟用它們。
+
+
+</p>
+
+<p>此外,在 Android N 中,協助工具服務現在也可以協助行動不便的使用者觸控螢幕。新的 API 允許使用臉部追蹤、眼睛追蹤、點掃描等功能來建置服務,以滿足這些使用者的需要。
+
+
+</p>
+
+<p>如需詳細資訊,請參閱可下載之 <a href="{@docRoot}preview/setup-sdk.html#docs-dl">API 參考資料</a>中的 <code>android.accessibilityservice.GestureDescription</code>。
+	</p>
+
+
+<h2 id="direct_boot">直接開機</h2>
+
+<p>直接開機可加速裝置啟動時間,並讓已註冊的應用程式只能使用有限的功能 (即使在未預期的重新開機之後)。例如,如果一個加密裝置在使用者睡覺時重新開機,已註冊的鬧鐘、訊息與來電現在可以持續如常通知使用者。這也表示協助工具服務在重新啟動之後可立即使用。
+
+
+
+
+</p>
+
+<p>直接開機利用 Android N 中以檔案為基礎的加密,能夠為系統與應用程式資料使用更精細的加密原則。系統為特定系統資料與明確註冊的應用程式資料使用裝置加密存放區。在預設情況下,所有其他系統資料、使用者資料、應用程式與應用程式資料都會使用認證加密存放區。
+
+
+
+ </p>
+
+<p>開機時,系統會以限制模式啟動,它只能存取裝置加密的資料,而無法對應用程式或資料進行一般存取。如果您有想要在這個模式下執行的元件,可以在宣示說明中設定旗標來註冊這些元件。重新啟動之後,系統會透過廣播 <code>LOCKED_BOOT_COMPLETED</code> 意圖來啟用已註冊的元件。系統會確保已註冊的裝置加密應用程式資料可供使用之後才會解除鎖定。所有其他資料都無法使用,直到使用者確認他們的鎖定畫面認證之後,才會將這些資料解密。
+
+
+
+
+
+
+ </p>
+
+如需詳細資訊,請參閱<a href="{@docRoot}preview/features/direct-boot.html">直接開機</a>。</p>
+</p>
+
+
+<h2 id="key_attestation">金鑰證明</h2>
+
+<p>硬體支援的金鑰存放區為 Android 裝置上密碼編譯金鑰的建立、儲存及使用提供更安全的方法。它們可保護金鑰不受 Linux 核心、可能的 Android 弱點和從已解鎖裝置擷取的傷害。
+
+
+</p>
+
+<p>為了讓使用硬體支援的金鑰存放區更易於使用且更安全,Android N 引進金鑰證明。應用程式與裝置外部服務可以使用金鑰證明,毫不懷疑地判斷 RSA 或 EC 金鑰組是否有硬體支援、金鑰組的屬性是哪些以及它的用法和有效性上套用哪些限制條件。
+
+
+
+ </p>
+
+<p>應用程式與裝置外部服務可以透過 X.509 證明憑證 (必須以有效的證明金鑰簽署) 來要求有關金鑰組的資訊。證明金鑰是 ECDSA 簽署金鑰,它在裝置出廠時就已內嵌到其中的硬體支援金鑰存放區。因此,以有效證明金鑰簽署的證明憑證可確認裝置上有硬體支援的金鑰存放區,以及該金鑰儲存區中包含之金鑰組的詳細資訊。
+
+
+
+
+
+</p>
+
+<p>為了確保裝置使用安全的官方 Android 出廠映像,金鑰證明要求裝置的<a class="external-link" href="https://source.android.com/security/verifiedboot/verified-boot.html#bootloader_requirements">開機載入器</a>對<a class="external-link" href="https://source.android.com/security/trusty/index.html">信任執行環境 (TEE)</a> 提供下列資訊:
+
+
+</p>
+
+<ul>
+<li>裝置上安裝的作業系統版本與修補程式層級</li>
+<li><a href="https://source.android.com/security/verifiedboot/index.html" class="external-link">Verified Boot</a> 公開金鑰與鎖定狀態</li>
+  </ul>
+
+<p>如需硬體支援的金鑰存放區功能的詳細資訊,請參閱<a href="https://source.android.com/security/keystore/" class="external-link">硬體支援的金鑰存放區</a>指南。
+</p>
+
+<p>除了金鑰證明之外,Android N 還引進連結指紋的金鑰,在註冊指紋時並不會撤銷。
+</p>
+
+<h2 id="network_security_config">網路安全性設定</h2>
+
+<p>在 Android N 中,應用程式可以安全地自訂其安全 (HTTPS、TLS) 連線的行為,無需修改任何程式碼,方法是使用宣告式的<em>網路安全性設定</em>,而不是使用容易出錯的傳統程式設計 API (例如 X509TrustManager)。
+
+
+</p>
+
+  <p>支援的功能:</p>
+<ul>
+<li><b>自訂信任錨點。</b>讓應用程式為它的安全連線自訂要信任哪個憑證授權單位 (CA)。例如,信任特定的自我簽署憑證或一組限制的公用 CA。
+
+
+</li>
+<li><b>僅偵錯覆寫。</b>讓應用程式開發人員安全地為應用程式的安全連線進行偵錯,而不會造成已安裝應用程式之使用者的風險。
+
+
+</li>
+<li><b>退出明碼流量。</b>讓應用程式保護自身,不被意外使用明碼流量所危害。
+</li>
+<li><b>憑證關聯。</b>這個進階功能可讓應用程式為安全連線限制要信任的伺服器金鑰。
+</li>
+</ul>
+
+<p>如需詳細資訊,請參閱<a href="{@docRoot}preview/features/security-config.html">網路安全性設定</a>。
+</p>
+
+<h2 id="default_trusted_ca">預設的信任憑證授權單位</h2>
+
+<p>根據預設,以 Android N 為目標的應用程式只信任系統提供的憑證,而不再信任使用者新增的憑證授權單位 (CA)。以 Android N 為目標且想要信任使用者新增之 CA 的應用程式,應該使用<a href="{@docRoot}preview/features/security-config.html">網路安全性設定</a>來指定信任使用者 CA 的方法。
+
+
+
+</p>
+
+<h2 id="apk_signature_v2">APK 簽章配置第 2 版</h2>
+
+<p>PackageManager 類別現在支援使用 APK 簽章配置第 2 版來驗證應用程式。APK 簽章配置第 2 版是全檔案簽章配置,可透過偵測對 APK 檔案所做的任何未授權變更,大幅改善驗證速度並增強完整性保證。
+
+
+</p>
+
+<p>為了維持回溯相容性,APK 必須先以第 1 版簽章配置 (JAR 簽章配置) 簽署,然後再用第 2 版簽章配置簽署。有了第 2 版簽章配置,如果以第 2 版配置簽署之後,以其他憑證簽署 APK,驗證會失敗。
+
+
+ </p>
+
+<p>「N Developer Preview」稍後將提供對 APK 簽章配置第 2 版的支援。
+</p>
+
+<h2 id="scoped_directory_access">限定範圍目錄存取</h2>
+
+<p>在 Android N 中,應用程式可以使用新的 API 來要求存取特定<a href="{@docRoot}guide/topics/data/data-storage.html#filesExternal">外部儲存空間</a>目錄,包括抽取式媒體 (例如 SD 卡) 上的目錄。新的 API 大幅簡化應用程式存取標準外部儲存空間目錄 (例如 <code>Pictures</code> 目錄) 的方法。相片應用程式之類的應用程式可以使用這些 API 而非使用 <code>READ_EXTERNAL_STORAGE</code>,這樣能夠授予對所有儲存空間目錄的存取權,或是使用「儲存空間存取架構」,讓使用者可以瀏覽到目錄。
+
+
+
+
+
+
+</p>
+
+<p>此外,新的 API 也簡化了使用者授予外部儲存空間存取權給您的應用程式時所需採取的步驟。當您使用新的 API 時,系統會使用簡單的權限 UI,清楚地詳細說明應用程式要求存取的目錄。
+
+
+</p>
+
+<p>如需詳細資訊,請參閱<a href="{@docRoot}preview/features/scoped-folder-access.html">限定範圍目錄存取</a>開發人員文件。
+
+</p>
+
+
+
+
+
+
diff --git a/docs/html-intl/intl/zh-tw/preview/behavior-changes.jd b/docs/html-intl/intl/zh-tw/preview/behavior-changes.jd
new file mode 100644
index 0000000..fb1c1db
--- /dev/null
+++ b/docs/html-intl/intl/zh-tw/preview/behavior-changes.jd
@@ -0,0 +1,480 @@
+page.title=行為變更
+page.keywords=preview,sdk,compatibility
+meta.tags="preview", "compatibility"
+page.tags="preview", "developer preview"
+page.image=images/cards/card-n-changes_2x.png
+@jd:body
+
+
+<div id="qv-wrapper">
+<div id="qv">
+
+<h2>此文件內容</h2>
+
+<ol>
+  <li><a href="#perf">效能改良</a>
+    <ol>
+      <li><a href="#doze">休眠</a></li>
+      <li><a href="#bg-opt">背景最佳化</a></li>
+    </ol>
+  </li>
+  <li><a href="#perm">權限變更</a></li>
+  <li><a href="#accessibility">協助工具改良</a>
+    <ol>
+      <li><a href="#screen-zoom">螢幕縮放</a></li>
+      <li><a href="#vision-settings">設定精靈中的視覺設定</a></li>
+    </ol>
+  </li>
+  <li><a href="#ndk">NDK 應用程式連結到平台程式庫</a></li>
+  <li><a href="#afw">Android for Work</a></li>
+</ol>
+
+<h2>另請參閱</h2>
+<ol>
+  <li><a href="{@docRoot}preview/api-overview.html">Android N API 總覽</a>
+</li>
+</ol>
+
+</div>
+</div>
+
+
+<p>
+  除了新特性和功能之外,Android N 還包括各種不同的系統與 API 行為變更。此文件將強調說明一些您應該知道且在您的應用程式中加以考量的重要變更。
+
+
+
+</p>
+
+<p>
+  如果您先前曾發佈過適用於 Android 的應用程式,請注意,您的應用程式可能會受到平台中的這類變更所影響。
+
+</p>
+
+
+<h2 id="perf">效能改良</h2>
+
+<p>
+  Android N 包含的系統行為變更旨在提升裝置的電池使用時間、改進 RAM 使用狀況與應用程式效能。這些變更會影響應用程式的系統資源可用性與系統通知。您應該檢閱這些變更並評估應用程式需要如何據以調整。
+
+
+
+
+</p>
+
+<h3 id="doze">休眠</h3>
+
+<p>
+  於 Android 6.0 (API 層級 23) 引進的休眠會在使用者將裝置的電源拔除、保持靜止狀態並關閉螢幕時,延遲 CPU 與網路活動,以延長電池使用時間。Android N 會在裝置電源被到拔除並關閉螢幕,但不一定靜置不動時 (例如使用者把手持裝置放在口袋中行進時),套用 CPU 與網路限制子集,進一步增強休眠的功能。
+
+
+
+
+
+</p>
+
+
+<img src="{@docRoot}preview/images/doze-diagram-1.png" alt="" height="251px" id="figure1" />
+<p class="img-caption">
+  <strong>圖 1.</strong> 休眠如何套用第一層級的系統活動限制以延長電池使用時間的示意圖。
+
+</p>
+
+<p>
+  當裝置以電池電力運作且螢幕已關閉一段時間時,裝置會進入休眠並套用第一組限制子集:關閉應用程式網路存取並延遲工作和同步。如果裝置進入休眠後靜置不動一段時間,系統會對 {@link android.os.PowerManager.WakeLock}、
+  {@link android.app.AlarmManager} 鬧鐘、GPS 與 Wi-Fi 掃描套用其餘的休眠限制。不論是已套用某些或全部的休眠限制,系統都會喚醒裝置簡短地進行維護,應用程式能夠在該維護時段內存取網路,並能執行任何延遲的工作/同步。
+
+
+
+
+
+
+
+</p>
+
+
+<img src="{@docRoot}preview/images/doze-diagram-2.png" alt="" id="figure2" />
+<p class="img-caption">
+  <strong>圖 2.</strong> 休眠如何在裝置靜置不動一段時間之後套用第二層級的系統活動限制的示意圖。
+
+</p>
+
+<p>
+  請注意,開啟螢幕或將裝置插電,就會結束休眠並移除這些處理限制。這項額外行為不會影響配合 Android 6.0 (API 層級 23) 引進的舊版休眠改寫應用程式的建議與最佳做法,如<a href="{@docRoot}training/monitoring-device-state/doze-standby.html">最佳化休眠與應用程式待命</a>中所述。像是使用 Google 雲端通訊 (GCM) 來傳送和接收訊息,以及開始規劃可適應額外休眠行為的更新等,還是應該遵循那些建議。
+
+
+
+
+
+
+
+
+</p>
+
+
+<h3 id="bg-opt">專案 Svelte:背景最佳化</h3>
+
+<p>
+  Android N 將三種隱含式廣播移除,有助於最佳化記憶體用量與電源耗用量。因為隱含式廣播常常會將註冊為在背景接聽此類廣播的應用程式啟動,所以此一變更有其必要。移除這些廣播對裝置效能與使用者體驗大有益處。
+
+
+
+
+</p>
+
+<p>
+  行動裝置的連線能力經常變更,例如在 Wi-Fi 與行動數據之間切換。目前,應用程式可以透過在宣示說明中註冊隱含式 {@link
+  android.net.ConnectivityManager#CONNECTIVITY_ACTION} broadcast in their
+ 廣播的接收器以監視連線能力變更。由於許多應用程式都註冊要接收此廣播,單一網路切換就可以喚醒所有應用程式,並立刻處理廣播。
+
+
+
+
+</p>
+
+<p>
+  同樣地,應用程式可以註冊要接收來自其他應用程式 (例如,相機) 的隱含式 {@link
+  android.hardware.Camera#ACTION_NEW_PICTURE} 與 {@link
+  android.hardware.Camera#ACTION_NEW_VIDEO} 廣播。當使用者使用相機應用程式拍攝相片時,會喚醒這些應用程式來處理廣播。
+
+
+</p>
+
+<p>
+  為減少這些問題,Android N 採用的最佳化方式如下:
+
+</p>
+
+<ul>
+  <li>目標為 Android N 的應用程式不會收到 {@link
+  android.net.ConnectivityManager#CONNECTIVITY_ACTION} 廣播,即使其宣示說明項目要求這些事件的通知。在前景執行的應用程式如果使用 {@code CONNECTIVITY_CHANGE} 來要求通知,仍可以在主要執行緒上接聽 {@link
+  android.content.BroadcastReceiver}。
+
+
+
+  </li>
+
+  <li>應用程式無法傳送或接收 {@link
+  android.hardware.Camera#ACTION_NEW_PICTURE} 或 {@link
+  android.hardware.Camera#ACTION_NEW_VIDEO} 廣播。這種最佳化方式會影響所有應用程式,而不只是目標為 Android N 的應用程式。
+
+  </li>
+</ul>
+
+<p>
+  未來發行的 Android 可能會將其他隱含式廣播與未繫結的背景服務視為過時。因此,為隱含式廣播在宣示說明中宣告的接收器相依性以及背景服務的相依性,都應該避免或加以移除。
+
+
+
+</p>
+
+<p>
+  Android 架構提供數種解決方案,減少這些隱含式廣播或背景服務的需求。例如,{@link
+  android.app.job.JobScheduler} API 提供的健全機制可在符合指定條件 (例如,連線到非計量付費網路) 的情況下,排程網路操作。您甚至可以使用 {@link
+  android.app.job.JobScheduler},對內容提供者的變更採取因應動作。
+
+
+
+</p>
+
+<p>
+  如需此行為變更和如何改寫應用程式的詳細資訊,請參閱<a href="{@docRoot}preview/features/background-optimization.html">背景最佳化</a>。
+
+
+</p>
+
+
+<h2 id="perm">權限變更</h2>
+
+<p>
+  Android N 包括會影響您應用程式的權限變更,包括使用者帳戶權限和寫入外部儲存空間的新權限。以下是預覽版中已變更的權限摘要:
+
+
+
+</p>
+
+<ul>
+  <li>{@code GET_ACCOUNTS} (已過時)
+    <p>
+      GET_ACCOUNTS 權限現已過時。系統會忽略目標為 Android N 之應用程式所用的這個權限。
+
+    </p>
+  </li>
+
+</ul>
+
+
+
+<h2 id="accessibility">協助工具改良</h2>
+
+<p>
+  Android N 包括的變更旨在為視力不佳或視力受損的使用者改進平台可用性。這些變更一般應不需要變更您應用程式的程式碼,然而您應該檢閱這些功能並使用您的應用程式測試它們,以評估對使用者體驗的潛在影響。
+
+
+
+
+</p>
+
+
+<h3 id="screen-zoom">螢幕縮放</h3>
+
+<p>
+  Android N 可讓使用者設定<strong>顯示器大小</strong>以放大或縮小螢幕上的所有元素,進而改善視力不佳使用者的裝置協助工具。使用者無法將螢幕縮放到超過常見中型手機的最小螢幕寬度 <a href="http://developer.android.com/guide/topics/resources/providing-resources.html">sw320dp</a> (Nexus 4 的寬度)。
+
+
+
+
+</p>
+
+<div class="cols">
+
+<div class="col-6">
+  <img src="{@docRoot}preview/images/screen-zoom-1.png" alt="" height="XXX" id="figure1" />
+</div>
+<div class="col-6">
+  <img src="{@docRoot}preview/images/screen-zoom-2.png" alt="" height="XXX" id="figure1" />
+</div>
+
+</div> <!-- end cols -->
+<p class="img-caption">
+  <strong>圖 3.</strong> 右邊的螢幕顯示將執行 Android N 系統映像的裝置顯示大小增加的效果。
+
+</p>
+
+
+<p>
+  當裝置密度變更時,系統會以下列方式通知執行中的應用程式:
+
+</p>
+
+<ul>
+  <li>如果應用程式的目標為 API 層級 23 或較低版本,系統會自動終止其所有背景處理程序。這表示如果使用者切換離開應用程式,以開啟 <em>[設定]</em> 畫面並變更 <strong>[顯示器大小]</strong> 設定,系統會在記憶體極低的情況下,以相同方式終止應用程式。如果應用程式有任何前景處理程序,系統會通知那些處理程序有設定變更,如<a href="{@docRoot}guide/topics/resources/runtime-changes.html">處理執行階段變更</a>所述,有如裝置的螢幕方向有所變更。
+
+
+
+
+
+
+
+  </li>
+
+  <li>如果應用程式的目標為 Android N,其所有處理程序 (前景與背景) 都會收到設定變更的通知,如<a href="{@docRoot}guide/topics/resources/runtime-changes.html">處理執行階段變更</a>所述。
+
+
+
+  </li>
+</ul>
+
+<p>
+  大部分應用程式只要遵循 Android 最佳做法,不需要進行任何變更就能支援此功能。需檢查的特定項目如下:
+
+</p>
+
+<ul>
+  <li>在螢幕寬度為 <code><a href=
+  "{@docRoot}guide/topics/resources/providing-resources.html">sw320dp</a></code> 的裝置上測試您的應用程式,確定它能適當執行。
+
+  </li>
+
+  <li>裝置設定變更時,就會更新任何與密度相關的快取資訊,例如快取的點陣圖或從網路載入的資源。當應用程式從暫停狀態繼續時,會檢查設定更新。
+
+
+
+    <p class="note">
+      <strong>注意:</strong>如果您快取與設定相關的資料,最好包括相關中繼資料,例如該資料的適當螢幕大小或像素密度。儲存此中繼資料可讓您決定在設定變更之後,是否需要重新整理快取的資料。
+
+
+
+
+    </p>
+  </li>
+
+  <li>避免以不會隨螢幕密度調整的像素單位指定尺寸,請改為以<a href="{@docRoot}guide/practices/screens_support.html">密度獨立像素</a> (<code>dp</code>) 單位指定尺寸。
+
+
+  </li>
+</ul>
+
+<h3 id="vision-settings">設定精靈中的視覺設定</h3>
+
+<p>
+  Android N 包括在歡迎畫面的視覺化設定可讓使用者在新裝置上設定下列協助工具設定:<strong>放大手勢</strong>、<strong>字型大小</strong>、<strong>顯示器大小</strong>與 <strong>TalkBack</strong>。此變更增加和不同螢幕設定相關的錯誤能見度。您應該啟用這些設定來測試您的應用程式,以評估此功能的影響。您可以在 [設定] &gt; [協助工具]<strong></strong> 下找到設定。
+
+
+
+
+
+
+
+</p>
+
+<h2 id="ndk">NDK 應用程式連結到平台程式庫</h2>
+
+<p>
+  Android N 包括的命名空間變更可避免載入非公開 API。如果您使用 NDK,應該只能使用來自 Android 平台的公開 API。在下一版正式發行的 Android 使用非公開 API,會造成您的應用程式當機。
+
+
+
+</p>
+
+<p>
+  為了在發現使用非公開 API 時向您提出警示,當應用程式呼叫非公開 API 時,在 Android N 裝置上執行的應用程式會在 logcat 輸出產生一個錯誤,並以訊息同時顯示在裝置螢幕上,協助您更能察覺這種情況。您應該檢閱應用程式的程式碼,以移除使用的非公開平台 API,並使用預覽版裝置或模擬器全面測試您的應用程式。
+
+
+
+
+
+</p>
+
+<p>
+  如果您的應用程式依存於平台程式庫,請參閱 NDK 文件來取得以公開 API 同等項目取代常見私人 API 的一般修正。您可能也連結到平台程式庫,而不自知,特別是在應用程式使用的程式庫屬於該平台 (例如 <code>libpng</code>) 但不屬於 NDK 的時候。如為上述情況,請務必在您的 APK 包含您打算連結的所有 .so 檔案。
+
+
+
+
+
+</p>
+
+<p class="caution">
+  <strong>注意:</strong>有些第三方程式庫會連結到非公開 API。如果您的應用程式使用此類程式庫,在下一版正式發行的 Android 上執行時就會當機。
+
+
+</p>
+
+<p>
+  應用程式不應依存於或使用 NDK 所未包括的原生程式庫,原因是在不同的 Android 發行版本之間會有變更或會被移除。從 OpenSSL 切換到 BoringSSL 便是此類變更的一例。此外,因為 NDK 所未包括的平台程式庫沒有相容性需求,而使不同裝置提供不同的相容性層級。如果您必須在舊型裝置上存取非 NDK 程式庫,請讓載入取決於 Android API 層級。
+
+
+
+
+
+
+</p>
+
+<p>
+  為協助您診斷這些類型的問題,以下是您在建置要用於 Android N 的應用程式時,會遇到的一些 Java 與 NDK 錯誤範例:
+
+</p>
+
+<p>Java 錯誤範例:</p>
+<pre class="no-pretty-print">
+java.lang.UnsatisfiedLinkError: dlopen failed: library "/system/lib/libcutils.so"
+    is not accessible for the namespace "classloader-namespace"
+</pre>
+
+<p>NDK 錯誤範例:</p>
+<pre class="no-pretty-print">
+dlopen failed: cannot locate symbol "__system_property_get" referenced by ...
+</pre>
+
+
+<p>
+  以下是發生這些類型之錯誤的應用程式可用的一些一般修正:
+</p>
+
+<ul>
+  <li>改用標準 JNI 函式,以取代使用來自 libandroid_runtime.so 的 getJavaVM 與 getJNIEnv。
+
+<pre class="no-pretty-print">
+AndroidRuntime::getJavaVM -&gt; GetJavaVM from &lt;jni.h&gt;
+AndroidRuntime::getJNIEnv -&gt; JavaVM::GetEnv or
+JavaVM::AttachCurrentThread from &lt;jni.h&gt;.
+</pre>
+  </li>
+
+  <li>改用公開替代項 {@code __system_property_get},以取代使用來自 {@code libcutils.so} 的 {@code property_get} 符號。如果要這樣做,請使用 {@code __system_property_get} 配合以下 include:
+
+
+<pre>
+#include &lt;sys/system_properties.h&gt;
+</pre>
+  </li>
+
+  <li>應該改用應用程式本機版,以取代使用來自 {@code libcrypto.so} 的 {@code SSL_ctrl} 符號。例如,您在 {@code .so} 檔案中靜態地連結 {@code libcyrpto.a},或在您的應用程式中從 BoringSSL 或 OpenSSL 動態地包括自己的 {@code libcrypto.so}。
+
+
+
+  </li>
+</ul>
+
+<h2 id="afw">Android for Work</h2>
+<p>
+  Android N 包含對目標為 Android for Work 的應用程式所做的變更,包括對憑證安裝、密碼重設、次要使用者管理與裝置識別碼存取的變更。如果您要建置要用於 Android for Work 環境的應用程式,應該檢閱這些變更並據以修改應用程式。
+
+
+
+
+</p>
+
+<ul>
+  <li>您必須先安裝委派的憑證安裝程式後,DPC 才能加以設定。對於目標為 N SDK 的設定檔與裝置擁有者應用程式,您應該在裝置政策控制器 (DPC) 呼叫 <code>DevicePolicyManager.setCertInstallerPackage()</code> 之前,先安裝委派的憑證安裝程式。如果該安裝程式尚未安裝,系統會擲回 <code>IllegalArgumentException</code>。
+
+
+
+
+
+
+  </li>
+
+  <li>裝置系統管理員的重設密碼限制現在適用於設定檔擁有者。裝置系統管理員無法再使用 <code>DevicePolicyManager.resetPassword()</code> 來清除密碼或變更已設定的密碼。裝置系統管理員仍能設定密碼,但只限裝置還沒有密碼、PIN 或模式的情況下。
+
+
+
+
+  </li>
+
+  <li>即使已經設定限制,裝置擁有者與設定檔擁有者還是可以管理帳戶。裝置擁有者與設定檔擁有者在已採用 <code>DISALLOW_MODIFY_ACCOUNTS</code> 使用者限制的情況下,仍能呼叫帳戶管理 API。
+
+
+  </li>
+
+  <li>裝置擁有者能輕鬆管理次要使用者。當裝置以裝置擁有者模式執行時,會自動設定 <code>DISALLOW_ADD_USER</code> 限制。這樣可防止使用者建立不受管理的次要使用者。此外,<code>CreateUser()</code> 與 <code>createAndInitial()</code> 方法已經過時,改用 <code>DevicePolicyManager.createAndManageUser()</code> 取代。
+
+
+
+
+
+  </li>
+
+  <li>裝置擁有者可以存取裝置識別碼。裝置擁有者可以使用 <code>DevicePolicyManagewr.getWifiMacAddress()</code> 存取裝置的 Wi-Fi MAC 位址。如果未曾在該裝置上啟用 Wi-Fi,此方法會傳回 {@code null} 的值。
+
+
+
+  </li>
+</ul>
+
+<p>
+  如需 Android N 中有關 Android for Work 變更的詳細資訊,請參閱 <a href="{@docRoot}preview/features/afw.html">Android for Work 更新</a>。
+
+</p>
+
+<h2 id="other">其他重點</h2>
+
+<ul>
+<li>在 Android N 上執行的應用程式如以較低的 API 層級為目標,當使用者變更顯示器大小,就會終止該應用程式的處理程序。應用程式必須要能適當處理這種情況。否則,當使用者要從最近使用記錄還原時就會當機。
+
+
+
+
+<p>
+您必須測試應用程式,確保不會發生這種行為。測試方法是透過 DDMS 手動終止應用程式,以造成相同的當機情況。
+
+
+
+</p>
+
+<p>
+目標為 N 與更新版本的應用程式不會在密度變更時自動終止;然而,它們仍會勉強地回應設定變更。
+
+</p>
+</li>
+
+<li>
+Android N 上的應用程式應該要適當處理設定變更,同時不應該在後續啟動時當機。您可以變更字型大小 ([設定]<strong></strong> &gt; [顯示]<strong></strong> &gt; [字型大小]<strong></strong>),然後從最近使用紀錄還原應用程式,以驗證應用程式行為。
+
+
+
+
+</li>
+</ul>
+
diff --git a/docs/html-intl/intl/zh-tw/preview/download.jd b/docs/html-intl/intl/zh-tw/preview/download.jd
new file mode 100644
index 0000000..a98000a
--- /dev/null
+++ b/docs/html-intl/intl/zh-tw/preview/download.jd
@@ -0,0 +1,541 @@
+page.title=在裝置上測試
+meta.tags="preview", "nexus","system image"
+page.tags="preview", "androidn"
+page.image=images/cards/card-n-downloads_2x.png
+
+@jd:body
+
+<div style="position:relative; min-height:600px">
+
+  <div class="wrap" id="tos" style="position:absolute;display:none;width:inherit;">
+
+    <p class="sdk-terms-intro">在下載並安裝 Android Preview SDK 的元件之前 ,您必須同意遵守下列條款和條件。
+
+</p>
+
+    <h2 class="norule">條款和條件</h2>
+
+    <div class="sdk-terms" onfocus="this.blur()" style="width:678px">
+這是「Android SDK Preview 授權協議」(以下稱「授權協議」)。
+
+1. 簡介
+
+1.1「Android SDK Preview」(在「授權協議」中稱為「Preview」,包括 (如果有可用的) Android 系統檔案、經過封裝的 API 和 Preview 程式庫檔案) 是在「授權協議」之條款的約束下授權給您使用。「授權協議」就您對「Preview」的使用,構成您與 Google 間具法律約束力之合約。
+
+1.2「Android」係指「Android 軟體開放原始碼專案」(http://source.android.com/) 所提供的 Android 裝置軟體堆疊 (不定期更新)。
+
+1.3「與 Android 相容」表示符合下列條件的任何 Android 實作:(i) 符合「Android 相容性定義」文件,此文件位於 Android 相容性網站 (http://source.android.com/compatibility) 且不定期更新;以及 (ii) 順利通過「Android 相容性測試套件」(CTS) 的測試。
+
+1.4 "Google" 係指 Google Inc.,是一家在美國德拉瓦州註冊的公司,總公司位於 1600 Amphitheatre Parkway, Mountain View, CA 94043, United States。
+
+2. 接受「授權協議」
+
+2.1 必須先同意遵守「授權協議」,才能使用此「Preview」。如果不接受「授權協議」,您就無法使用此「Preview」。
+
+2.2 按一下 [接受] 且/或使用「Preview」,即表示您同意「授權協議」的條款。
+
+2.3 如果您是美國或其他國家/地區 (包括您所居住或使用此「Preview」的國家/地區) 的法律所禁止接收此「Preview」的人員,就不得使用此「Preview」及接受「授權協議」。
+
+2.4 如果您將在公司或組織內部使用「Preview」,您就要代表雇主或其他實體同意受「授權協議」約束,且您代表並保證具備完整法定權限來約束您的雇主或這類實體遵守「授權協議」。如果您不具備必要的權限,就不得代表您的雇主或其他實體接受「授權協議」或使用此「Preview」。
+
+3. 來自 Google 的 Preview 授權
+
+3.1 在此「授權合約」之條款的約束下,Google 授予您此「Preview」的使用授權,此授權為有限、全球通用、買斷式、不可轉讓且不可轉授權,此「Preview」僅供您用來開發在 Android 相容實作上執行的應用程式。
+
+3.2 您不得使用此「Preview」來開發適用於其他平台 (包括與 Android 不相容的實作) 的應用程式或開發另一個 SDK。您當然可以使用它來開發適用於其他平台 (包括與 Android 不相容的實作) 的應用程式,惟不得將此「Preview」用於該用途。
+
+3.3 您同意 Google 或第三方對此「Preview」擁有一切法定權利及權益,包括存在於此「Preview」中的任何「智慧財產權」。「智慧財產權」係指專利法、著作權法、商業秘密法、商標法及任何和所有其他專利權下的任何及一切權利。Google 保留一切未明確授予您的權利。
+
+3.4 您不得將此「Preview」用於「授權協議」未明文許可的任何用途。除非適用的第三方授權所需,否則您不得:(a) 對此「Preview」或其任何部分進行複製 (備份用途除外)、修改、改編、轉散佈、反向組譯、還原工程、解編或製作衍生成品;或是 (b) 將此「Preview」的任何部分載入至行動電話或個人電腦以外的任何其他硬體裝置、將此「Preview」的任何部分與其他軟體結合,或散佈包含此「Preview」之任一部分的任何軟體或裝置。
+
+3.5 對開放原始碼軟體授權下所授權之「Preview」的使用、複製及散佈,完全受該開放原始碼軟體授權的條款規範,而不受「授權合約」規範。您同意遵守從這類開放原始碼軟體授權獲得的所有權利,並且避免採取任何可能終止、中止或侵害這類權利的行為。
+
+3.6 您同意 Google 可在不事先通知您的情況下變更其所提供之「Preview」的形式和本質,且此「Preview」的未來版本可與在此「Preview」的先前版本上開發的應用程式不相容。您同意 Google 通常可全權斟酌永久或暫時停止提供此「Preview」(或此「Preview」的任何功能) 給您或使用者,毋須事先通知。
+
+3.7「授權協議」中的所有條款皆未授予您任何使用 Google 之商業名稱、商標、服務標章、標誌、網域名稱或其他明確品牌特徵的權利。
+
+3.8 您同意不會移除、遮蔽或更改可能附加至或內含在此「Preview」中的任何專利權通知 (包括著作權和商標通知)。
+
+4. 您對「Preview」的使用
+
+4.1 Google 同意在「授權協議」下,任何條款皆未從您 (或您的授權人) 賦予 Google 對您使用此「Preview」開發之任何軟體應用程式的任何權利及權益,包括存在於這些應用程式中的任何智慧財產權。
+
+4.2 您同意只就 (a)「授權協議」和 (b) 相關管轄權中任何適用法律、規定或是普遍獲得接受之慣例或指導方針 (包括任何有關將資料或軟體輸出或輸入美國或其他相關國家/地區的法律) 所允許的用途使用此「Preview」及撰寫應用程式。
+
+4.3 您同意如果使用此「Preview」開發應用程式,您將保護使用者的隱私權和法定權利。如果使用者提供您使用者名稱、密碼或是其他登入資訊或個人資訊,您必須告知使用者這類資訊將提供給您的應用程式使用,並且必須為這些使用者提供法定充分的隱私權通知和保護。如果您的應用程式會儲存使用者所提供的個人或敏感資訊,它必須確保這些資訊安全無虞。如果使用者提供 Google 帳戶資訊給您,則只有在每個使用者已授權您存取其 Google 帳戶並僅限用於使用者所授權之用途的情況下,您的應用程式才能使用該資訊來存取使用者的 Google 帳戶。
+
+4.4 您同意不會使用此「Preview」從事任何不當活動,例如開發或散佈會以未經授權的方式干擾、妨礙、損害或存取 Google 或任何第三方之伺服器、網路或是其他財產或服務的應用程式。
+
+4.5 您同意對您透過 Android 裝置和 (或) Android 應用程式建立、傳輸或顯示的任何資料、內容或資源,以及上述行為造成的後果 (包括 Google 可能蒙受的任何損失或損害) 負起全責 (而 Google 對您或任何第三方就上述一切不需負任何責任)。
+
+4.6 您同意對違反在此「授權協議」、任何適用之第三方合約或《服務條款》或是任何適用之法律或規定下所必須遵守的義務,以及違反相關義務造成的後果 (包括 Google 或任何第三方可能蒙受的任何損失或損害) 負起全責 (而 Google 對您或任何第三方就上述一切不需負任何責任)。
+
+4.7「Preview」目前正在開發中,因此您的測試與意見反應對開發程序非常重要。使用「Preview」,您即認同某些功能仍處於開發階段,因此您不應期待「Preview」擁有穩定版本的完整功能。在官方 Android SDK 發行之後,此「Preview」不再受到支援時,您同意不使用此「Preview」公開散佈或隨附任何應用程式。
+
+5. 您的開發人員認證
+
+5.1 您同意負責保密 Google 可能核發給您或您自己選擇的任何開發人員認證,並且對在您開發人員認證名義下開發的所有應用程式負起全責。
+
+6. 隱私權和資訊
+
+6.1 為了持續更新及改進此「Preview」,Google 可能會從軟體收集某些使用狀況統計數據,包括但不限於軟體的唯一識別碼、相關 IP 位址、版本號碼,以及有關使用此「Preview」中的哪些工具和 (或) 服務及其使用方式的相關資訊。在收集這類資訊之前,此「Preview」會先通知您並徵求您的同意。如果您不同意,Google 將不會收集這類資訊。
+
+6.2 Google 會彙總並檢查收集到的資料,據以改善此「Preview」,並且會依據《Google 隱私權政策》(http://www.google.com/policies/privacy/) 加以妥善保存。
+
+7. 第三方應用程式
+
+7.1 如果您使用此「Preview」來執行第三方開發的應用程式,或是執行會存取第三方所提供之資料、內容或資源的應用程式,您同意 Google 不需對這類應用程式、資料、內容或資源負任何責任。您了解您透過第三方應用程式存取的所有資料、內容或資源是由其提供者負起全責,而 Google 對您因使用或存取任何這些第三方應用程式、資料、內容或資源所造成的損失或損害不需負任何責任。7.2 您了解第三方應用程式提供給您的資料、內容或資源可能受到提供者 (或代表他們的其他人員或公司) 所擁有的智慧財產權保護。
+
+您不得根據這類資料、內容或資源 (不論是整個或部分) 修改、出租、出借、販售、散佈或製作衍生成品,除非相關擁有者明確授權您從事上述活動。7.3 您了解使用第三方應用程式、資料、內容或資源可能受到您與相關第三方之間的個別條款約束。
+
+
+
+8. 使用 Google API
+
+8.1 Google API
+
+8.1.1 如果您使用任何 API 從 Google 擷取資料,您瞭解這些資料可能受到 Google 或資料提供者 (或代表他們的其他人員或公司) 所擁有的智慧財產權保護。您對任何這類 API 的使用可能受到其他《服務條款》約束。除非相關《服務條款》明文允許,否則您不得根據這類資料 (不論是整個或部分) 修改、出租、出借、販售、散佈或製作衍生成品。8.1.2 使用任何 API 從 Google 擷取使用者的資料時,您了解並同意只有在該使用者明確同意且授權您擷取其資料,而且僅限用於使用者所授權之用途的情況下,您才能擷取資料。
+
+
+
+終止「授權協議」
+
+9.1 除非您或 Google 終止「授權協議」(請見下方說明),否則「授權協議」將持續具有效力。
+
+9.2 如果想終止「授權協議」,只要停止使用此「Preview」及任何相關的開發人員憑證即可。
+
+9.3 Google 可隨時通知您終止「授權協議」,無論有無原因。
+
+9.4「授權協議」在先發生下列任一情況時,將自動終止而不另行通知或採取其他行動:
+(A) Google 決定不再提供此「Preview」或此「Preview」的特定部分給您所居住或使用此服務之國家/地區的使用者;或
+(B) Google 發行最終版本的 Android SDK。
+
+9.5 當「授權條款」終止時,您在「授權協議」所獲得的授權也將會一併終止,您將立即停止「Preview」的所有使用,而第 10、11、12 和 14 項的條款將無限期持續適用。
+
+10. 免責聲明
+
+10.1 您明確了解並同意完全自負使用此「Preview」的風險,並且此「Preview」是依「現況」和「可提供性」提供,Google 不負任何擔保責任。
+
+10.2 您對使用此「Preview」及透過此「Preview」以下載或其他方式取得的任何內容,需自行斟酌和自負風險,而且您對因這類使用而對您的電腦系統或其他裝置所造成的任何損害或資料遺失,需負起全責。不限於前述,您瞭解此「Preview」不是穩定的版本,可能會包含許多錯誤、瑕疵和安全性弱點而對您的電腦系統或其他裝置造成嚴重的損害,包括完全、不可回復的損失。
+
+10.3 Google 進一步明確聲明不提供任何形式的瑕疵擔保和條件 (不論明示或默示),包括但不限於適售性、適合特定用途及未侵權的默示擔保和條件。
+
+11. 責任限制
+
+11.1 您明確瞭解並同意在任何歸責理論下,就可能由您引起的任何直接、間接、附隨性、特殊性、衍生性或懲罰性損害賠償 (包括任何資料遺失),不論 Google 或其代表是否已獲告知或應已瞭解發生任何這類損失的可能性,Google、其子公司和關係企業及其授權人不必對您負起任何責任。
+
+12. 賠償
+
+12.1 在法律允許的最大範圍內,您同意為 Google、其子公司及其個別董監事、主管、員工和代理人,就任何和一切索賠、法律行動、訴訟或訴訟程序,以及因下列原因而引起的任何和一切損失、責任、損害賠償、費用及開支 (包括合理的律師費),提供辯護、賠償損失並確保其免於承擔賠償責任:(a) 您使用此「Preview」;(b) 您使用此「Preview」開發的應用程式侵害任何人的任何智慧財產權,或是詆毀任何人或違反其公開權或隱私權;以及 (c) 您未遵守「授權協議」。
+
+13. 對「授權協議」做出的變更
+
+13.1 Google 可在散佈此「Preview」的新版本時修改「授權協議」。做出這類變更後,Google 會在提供此「Preview」的網站上提供「授權協議」的新版本。
+
+14. 一般法律條款
+
+14.1「授權協議」構成您與 Google 之間的法律協議,用於管制您對此「Preview」(不包括 Google 依據個別書面協議提供給您的任何服務) 的使用,並完全取代先前您與 Google 之間就此「Preview」簽署的相關協議。
+
+14.2 您同意如果 Google 未行使或執行「授權協議」所含的任何法律權利或救濟 (或在任何適用法律下對 Google 有利的權益),並不代表 Google 正式放棄權利,Google 日後仍可行使這些權利或救濟。
+
+14.3 如果經任何法院 (就此事宜依管轄權決定) 裁決「授權協議」中有任何條款無效,則該條款將自「授權協議」中移除,「授權協議」的其餘部分則不受影響。「授權協議」的其餘條款將持續具有效力且可執行。
+
+14.4 您瞭解並同意 Google 旗下子公司體系的每位成員都是「授權協議」的第三方受益人,而且這類其他公司有權直接執行和依據「授權協議」中對其授予權益 (或對其有利之權利) 的任何條款。除此之外的任何其他人員或公司皆非「授權協議」的第三方受益人。
+
+14.5 出口限制。此「Preview」受美國出口法規約束。您必須遵守適用於此「Preview」的所有國內和國際出口法規。這些法律包括對目的地、使用者及最終用途的限制。
+
+14.6 未事先取得 Google 事先書面核准的情況下,您不得轉讓或轉移「授權協議」,未經這類核准的任何轉讓將會失效。您不得在未事先取得 Google 書面核准的情況下,委派其「授權協議」涵蓋的責任或義務。
+
+14.7「授權協議」以及您與 Google 就「授權協議」構成的關係皆受加州法律管轄,毋須理會其法律牴觸條款。您和 Google 同意服從位於加州聖塔克拉拉 (Santa Clara, California) 郡內法院的專屬管轄權,以解決由「授權協議」產生的任何法律事務。儘管如此,您同意 Google 仍可在任何管轄權中申請禁制令救濟 (或同等類型的緊急法定救濟)。
+  </div><!-- sdk terms -->
+
+
+
+    <div id="sdk-terms-form">
+      <p>
+        <input id="agree" type="checkbox" name="agree" value="1" onclick="onAgreeChecked()" />
+        <label id="agreeLabel" for="agree">我已閱讀並同意上述條款和條件</label>
+      </p>
+      <p><a href="" class="button disabled" id="downloadForRealz" onclick="return onDownloadForRealz(this);"></a></p>
+    </div>
+
+
+  </div><!-- end TOS -->
+
+
+  <div id="landing">
+
+<div id="qv-wrapper">
+  <div id="qv">
+    <h2>此文件內容</h2>
+      <ol>
+        <li><a href="#device-preview">設定硬體裝置</a>
+          <ol>
+            <li><a href="#ota">取得隔空傳輸更新</a></li>
+            <li><a href="#flash">手動刷新裝置</a></li>
+            <li><a href="#revertDevice">解除安裝</a></li>
+          </ol>
+        </li>
+        <li><a href="#setupAVD">設定模擬器</a></li>
+      </ol>
+  </div>
+</div>
+
+<p>
+  如果要在新的平台上執行並測試您的應用程式,您需要設定 Android N 執行階段環境。您可以透過下列其中一種方式進行:
+
+</p>
+
+<ul>
+  <li>在支援的硬體裝置上安裝 Android N,或</li>
+  <li>設定執行 Android N 的 Android 模擬器</li>
+</ul>
+
+<p>
+  如果您想要有一個在新平台上為應用程式進行基本相容性測試的環境,您只需要最新的 APK 與一個硬體裝置或模擬器。執行基本測試並不需要更新整個開發環境。
+
+
+
+</p>
+
+<p>
+  如果您想要針對 Android N 修改應用程式或使用新的 Android N API,則需要設定已更新可支援 Android N 的開發環境。<a href="{@docRoot}preview/setup-sdk.html">設定以針對 Android N 開發</a>中提供詳細資訊。
+
+
+
+</p>
+
+
+<h2 id="device-preview">設定硬體裝置</h2>
+
+<p>
+  「N Developer Preview」為多種硬體裝置提供系統更新,您可以使用這些裝置 (從手機到平板電腦與電視) 來測試您的應用程式。
+
+</p>
+
+<p>
+  如果您使用支援的裝置,可以透過下列其中一個方式,將它更新到「Developer Preview」里程碑版本:
+
+</p>
+
+<ul>
+  <li>透過 <a href="https://g.co/androidbeta">Android Beta 計劃</a><strong>在自動 OTA 系統更新中註冊裝置</strong>。註冊之後,您的裝置將會定期透過隔空傳輸 (OTA) 更新方式收到「N Developer Preview」中的所有里程碑版本。建議您使用這個方法,因為它讓您透過「N Developer Preview」的多個版本,順暢地從目前的環境轉移。
+
+
+
+</li>
+  <li><strong>下載「Developer Preview」系統映像並更新裝置</strong>。當您手動更新時,不會自動為裝置提供 OTA 更新,但是您可以在「Android Beta 計劃」中註冊這些裝置來取得 OTA 更新。
+
+ </li>
+</ul>
+
+<h3 id="ota">在自動 OTA 更新中註冊裝置</h3>
+
+<p>
+  如果您使用支援的裝置 (請參閱「下載」表中的清單),可在 <a href="https://g.co/androidbeta">Android Beta 計劃</a>中註冊該裝置,然後接收 Android 預覽版的隔空傳輸更新。這些更新會自動下載並更新您的裝置,就像官方系統更新一樣。
+
+
+
+
+</p>
+
+<p>
+  您可以隨時取消註冊裝置。裝置會透過 OTA 更新方式接收提供給該裝置的最新 Android 生產版本 (例如 Android 6.0 Marshmallow)。更新要求重設整個裝置,所以裝置上的使用者資料會被移除。取消註冊裝置前,請務必<strong>備份重要資料</strong>。
+
+
+
+
+</p>
+
+<p>
+  如需註冊裝置的詳細資訊,請參閱 <a href="https://g.co/androidbeta">Android Beta 計劃</a>網站。
+
+</p>
+
+<p class="note"><strong>注意:</strong>取消註冊要求重設整個裝置。請先備份重要資料。
+
+
+</p>
+
+<h3 id="flash">手動更新裝置</h3>
+
+<p>
+  您可以隨時下載最新的「Developer Preview」系統映像並手動刷新到您的裝置。請參閱下表,下載適用於您測試裝置的系統映像。如果您需要確切控制測試環境或需要經常重新安裝 (例如自動化測試),則手動更新裝置是實用的做法。
+
+
+
+ 
+</p>
+
+<!-- You can flash by ota or system image --><p>
+  在裝置上安裝系統映像會<strong>移除裝置中的所有資料</strong>,因此您應該先備份您的資料。
+
+</p>
+
+<p>
+  備份裝置資料並下載下面符合您裝置的系統映像之後,請依照 <a href="https://developers.google.com/android/nexus/images#instructions">developers.google.com/android</a> 的指示,將映像刷新到您的裝置。
+
+
+</p>
+
+<p>
+  手動刷新系統映像<strong>不會自動透過 OTA 更新方式收到</strong>較新的「Developer Preview」里程碑版本。請務必讓環境保持在最新狀態,使用每個「Developer Preview」里程碑的新系統映像進行刷新。
+
+
+
+</p>
+
+<p>
+  如果您決定手動更新裝置後要接收 OTA 更新,您唯一要做的事是在 <a href="https://g.co/androidbeta">Android Beta 計劃</a>中註冊裝置。您可以隨時註冊裝置,以隔空傳輸方式接收下一個「Preview」更新。
+
+
+ 
+</p>
+
+<table>
+  <tr>
+    <th scope="col">裝置</th>
+    <th scope="col">下載 / 總和檢查碼</th>
+  </tr>
+
+  <tr id="bullhead">
+    <td>Nexus 5X <br>"bullhead"</td>
+    <td><a href="#top" onclick="onDownload(this)">bullhead-npc56p-preview-6c877a3d.tgz</a><br>
+      MD5:b5cf874021023b398f5b983b24913f5d<br>
+      SHA-1:6c877a3d9fae7ec8a1678448e325b77b7a7b143a
+    </td>
+  </tr>
+
+  <tr id="shamu">
+    <td>Nexus 6 <br>"shamu"</td>
+    <td><a href="#top" onclick="onDownload(this)">shamu-npc56p-preview-54b13c67.tgz</a><br>
+      MD5:af183638cf34e0eb944a1957d7696f60<br>
+      SHA-1:54b13c6703d369cc79a8fd8728fe4103c6343973
+    </td>
+  </tr>
+
+  <tr id="angler">
+    <td>Nexus 6P <br>"angler"</td>
+    <td><a href="#top" onclick="onDownload(this)">angler-npc56p-preview-85ffc1b1.tgz</a><br>
+      MD5:bc4934ea7bd325753eee1606d3725a24<br>
+      SHA-1:85ffc1b1be402b1b96f9ba10929e86bba6c6c588
+    </td>
+  </tr>
+
+  <tr id="volantis">
+    <td>Nexus 9 <br>"volantis"</td>
+    <td><a href="#top" onclick="onDownload(this)">volantis-npc56p-preview-0e8ec8ef.tgz</a><br>
+      MD5:c901334c6158351e945f188167ae56f4<br>
+      SHA-1:0e8ec8ef98c7a8d4f58d15f90afc5176303efca4
+    </td>
+  </tr>
+
+  <tr id="volantisg">
+    <td>Nexus 9G <br>"volantisg"</td>
+    <td><a href="#top" onclick="onDownload(this)">volantisg-npc56p-preview-1bafdbfb.tgz</a><br>
+      MD5:7bb95bebc478d7257cccb4652899d1b4<br>
+      SHA-1:1bafdbfb502e979a9fe4c257a379c4c7af8a3ae6
+    </td>
+  </tr>
+
+  <tr id="fugu">
+    <td>Nexus Player <br>"fugu"</td>
+    <td><a href="#top" onclick="onDownload(this)">fugu-npc56r-preview-7027d5b6.tgz</a><br>
+      MD5:f5d3d8f75836ccfe4c70e8162e498be4<br>
+      SHA-1:7027d5b662bceda4c80a91a0a14ef0e5a7ba795b
+    </td>
+  </tr>
+
+  <tr id="ryu">
+    <td>Pixel C <br>"ryu"</td>
+    <td><a href="#top" onclick="onDownload(this)">ryu-npc56p-preview-335a86a4.tgz</a><br>
+      MD5:4e21fb183bbbf467bee91598d587fd2e<br>
+      SHA-1:335a86a435ee51f18464de343ad2e071c38f0e92
+    </td>
+  </tr>
+  <tr id="seed">
+    <td>一般行動裝置 4G (Android One) <br>"seed"</td>
+    <td><a href="#top" onclick="onDownload(this)">seed_l8150-npc56p-preview-82472ebc.tgz</a><br>
+      MD5:983e083bc7cd0c4a2d39d6ebaa20202a<br>
+      SHA-1:82472ebc9a6054a103f53cb400a1351913c95127
+    </td>
+  </tr>
+
+</table>
+
+<h3 id="revertDevice">從裝置解除安裝 Preview</h3>
+
+<p>
+  如果您想要從裝置解除安裝預覽版,可以透過下列其中一方式執行:
+ </p>
+  <ul>
+    <li><strong>取得出廠規格系統映像</strong>,然後手動刷新到裝置。
+
+      <ul>
+          <li>對於 <strong>Nexus 裝置與 Pixel C 裝置</strong>,請查看 <a href="http://developers.google.com/android/nexus/images">Nexus 裝置原廠映像檔</a>頁面進行下載。
+
+ </li>
+        <li>對於<strong>其他裝置</strong>,請直接聯絡裝置製造商。或者,如果是「Android Beta 計劃」中支援的裝置,則可以在這個計劃中註冊裝置,然後再取消註冊 (請參閱下面的資訊)。
+
+
+</li>
+      </ul>
+    </li>
+    <li><strong>從「Android Beta 計劃」取消註冊裝置</strong>。如果在 <a href="https://g.co/androidbeta">Android Beta 計劃</a>中註冊裝置,則無論是什麼裝置,只需從這個計劃取消註冊即可。
+
+
+  <p>
+    裝置會透過 OTA 更新方式接收提供給該裝置的最新 Android 生產版本 (例如 Android 6.0 Marshmallow)。更新要求重設整個裝置,所以裝置上的使用者資料會被移除。取消註冊裝置前,請務必<strong>備份重要資料</strong>。
+
+
+
+
+  </p>
+  </li>
+</ul>
+
+<p class="note"><strong>注意:</strong>在計劃結束前解除安裝「Developer Preview」系統映像需要重設整個裝置,而且會移除裝置上的所有使用者資料。
+
+
+
+</p>
+
+
+<h2 id="setupAVD">設定模擬器</h2>
+
+<p>如果要使用 Android 模擬器來執行 Android N Preview,您需要下載 Android N Preview SDK 並為模擬器建立一個虛擬裝置。
+
+</p>
+
+<p>首先,遵循下列方式下載 Android N Preview SDK (如果您在<a href="{@docRoot}preview/setup-sdk.html">設定以針對 Android N 開發</a>時已經取得該 SDK,則可以略過這個部分):
+
+
+
+<ol>
+  <li>在 Android Studio 中,開啟 [Settings] 對話方塊 (在Windows/Linux 上是 [File] &gt; [Settings]<strong></strong>,在 Mac 上是 [Android Studio] &gt; [Preferences]<strong></strong>)。在左面板中,選取 [Appearance &amp; Behavior] &gt; [System Settings] &gt; [Android SDK]<strong></strong>。
+
+
+
+
+
+  <li>按一下 [SDK Platforms] 分頁,然後選取 [Android N Preview] 核取方塊。<strong></strong><strong></strong>
+</li>
+
+  <li>按一下 [SDK Tools]<strong></strong> 分頁,然後選取 [Android SDK Build Tools]<strong></strong>、[Android SDK Platform-Tools]<strong></strong> 與 [Android SDK Tools]<strong></strong> 核取方塊。
+
+
+
+  </li>
+
+  <li>按一下 [OK]<strong></strong>,接受要安裝之任何套件的授權合約。
+
+  </li>
+</ol>
+
+<p>您現在應該有 <strong>Android SDK Built-Tools 24.0 0 rc1</strong>、<strong>Platform-Tools 24.0.0 rc1</strong> 與 <strong>SDK Tools 25.0.9</strong>。如果您沒有將 SDK Tools 更新為 25.0.9,就無法執行 Android N 的 x86_64 系統映像。
+
+
+</p>
+
+
+<p>現在使用 Android N 系統映像建立一個虛擬裝置:</p>
+
+<ol>
+  <li>選取 [Tools] &gt; [Android] &gt; [AVD Manager]<strong></strong> 以開啟 AVD Manager。
+</li>
+  <li>按一下 [Create Virtual Device]<strong></strong>。</li>
+  <li>選取裝置 (例如 Nexus 5X、Nexus 6P、Nexus 9 或 Android TV),然後按一下 [Next]<strong></strong>。
+</li>
+  <li>選取 [N]<strong></strong> 系統映像 (含 <strong>x86</strong> ABI),然後按一下 [Next]<strong></strong> (Android N Preview 的 Android 模擬器目前只支援 x86 系統映像)。
+
+
+
+  <li>完成其餘的 AVD 設定,然後按一下 [Finish]<strong></strong>。
+</li>
+</ol>
+
+<p>您現在可以使用 Android N Preview AVD 啟動 Android 模擬器。</p>
+
+<p>
+為了在 Android 模擬器中獲得最佳體驗,請安裝 Android Studio 2.1 Preview,它支援 <a href="http://tools.android.com/tech-docs/emulator">Android Emulator 2.0 Beta</a>,效能比 Android Studio 1.5 中的模擬器快。
+
+
+</p>
+
+<p class="note"><strong>注意:</strong>如果您目前使用 Android Studio 2.0 Beta,它已知會出現阻止您使用 N Preview 系統映像建立 AVD 的問題,所以您目前需要使用 Android Studio 2.1 預覽版來建立 AVD。
+
+
+
+</p>
+
+<p>如需建立虛擬裝置的詳細資訊,請參閱<a href="{@docRoot}tools/devices/index.html">管理虛擬裝置</a>。
+</p>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+  </div><!-- landing -->
+
+</div><!-- relative wrapper -->
+
+
+
+<script>
+  var urlRoot = "http://storage.googleapis.com/androiddevelopers/shareables/preview/";
+  function onDownload(link) {
+
+    $("#downloadForRealz").html("Download " + $(link).text());
+    $("#downloadForRealz").attr('href', urlRoot + $(link).text());
+
+    $("#tos").fadeIn('fast');
+    $("#landing").fadeOut('fast');
+
+    return true;
+  }
+
+
+  function onAgreeChecked() {
+    /* verify that the TOS is agreed */
+    if ($("input#agree").is(":checked")) {
+      /* reveal the download button */
+      $("a#downloadForRealz").removeClass('disabled');
+    } else {
+      $("a#downloadForRealz").addClass('disabled');
+    }
+  }
+
+  function onDownloadForRealz(link) {
+    if ($("input#agree").is(':checked')) {
+    /*
+      $("#tos").fadeOut('fast');
+      $("#landing").fadeIn('fast');
+    */
+
+      ga('send', 'event', 'M Preview', 'System Image', $("#downloadForRealz").html());
+
+    /*
+      location.hash = "";
+    */
+      return true;
+    } else {
+      return false;
+    }
+  }
+
+  $(window).hashchange( function(){
+    if (location.hash == "") {
+      location.reload();
+    }
+  });
+
+</script>
diff --git a/docs/html-intl/intl/zh-tw/preview/features/background-optimization.jd b/docs/html-intl/intl/zh-tw/preview/features/background-optimization.jd
new file mode 100644
index 0000000..3a85c45
--- /dev/null
+++ b/docs/html-intl/intl/zh-tw/preview/features/background-optimization.jd
@@ -0,0 +1,388 @@
+page.title=背景最佳化
+page.metaDescription=對隱含式廣播的新限制。
+page.keywords="android N", "implicit broadcasts", "job scheduler"
+@jd:body
+
+<div id="qv-wrapper">
+  <div id="qv">
+    <h2>
+      此文件內容
+    </h2>
+
+    <ol>
+      <li>
+        <a href="#connectivity-action">CONNECTIVITY_ACTION 上的限制</a>
+      </li>
+
+      <li>
+        <a href="#sched-jobs">在非計量付費連線上排程網路工作</a>
+
+      </li>
+
+      <li>
+        <a href="#monitor-conn">監視應用程式執行時的網路連線能力</a>
+
+      </li>
+
+      <li>
+        <a href="#media-broadcasts">NEW_PICTURE 與 NEW_VIDEO 上的限制</a>
+
+      </li>
+
+      <li>
+        <a href="#new-jobinfo">新的 JobInfo 方法</a>
+      </li>
+
+      <li>
+        <a href="#new-jobparam">新的 JobParameter 方法</a>
+      </li>
+
+      <li>
+        <a href="#further-optimization">進一步最佳化您的應用程式</a>
+      </li>
+    </ol>
+  </div>
+</div>
+
+<p>
+  背景處理程序可能耗用大量的記憶體或電池電力。例如,隱含式廣播可能會啟動許多已註冊要接聽它的背景處理程序,即使那些處理程序可能不會執行太多工作。
+
+這可能會對裝置效能與使用者體驗兩者造成實質影響。
+
+</p>
+
+<p>
+  為減輕此問題,N Developer Preview 套用下列限制:
+
+</p>
+
+<ul>
+  <li>目標為 Preview 的應用程式,如果在宣示說明中註冊以接收廣播,則不會收到 {@link
+  android.net.ConnectivityManager#CONNECTIVITY_ACTION} 廣播。
+在前景執行的應用程式,只要使用 {@link
+  android.content.Context#registerReceiver Context.registerReceiver()} 註冊 {@link android.content.BroadcastReceiver},即可在主要執行緒中接聽 {@code CONNECTIVITY_CHANGE}。
+
+
+  </li>
+
+  <li>應用程式無法傳送或接收 {@link
+  android.hardware.Camera#ACTION_NEW_PICTURE} 或 {@link
+  android.hardware.Camera#ACTION_NEW_VIDEO} 廣播。這種最佳化方式會影響所有應用程式,而不只是目標為 Preview 的應用程式。
+
+  </li>
+</ul>
+
+<p>
+  Android 架構提供數種解決方案來減少這些隱含式廣播的需求。
+例如,{@link android.app.job.JobScheduler} 與 <a href="https://developers.google.com/android/reference/com/google/android/gms/gcm/GcmNetworkManager">
+  {@code GcmNetworkManager}</a> 提供的健全機制,可在符合指定條件 (例如,連線到非計量付費網路) 的情況下排程網路操作。
+
+
+您甚至可以使用 {@link android.app.job.JobScheduler} 對內容提供者的變更採取因應動作。{@link android.app.job.JobInfo} 物件會封裝 {@link android.app.job.JobScheduler} 用來排程您的工作的參數。
+
+
+符合工作的條件時,系統會在應用程式的 {@link android.app.job.JobService} 上執行此工作。
+
+</p>
+
+<p>
+  在此文件中,我們將學習如何使用替代方法 (例如 
+  {@link android.app.job.JobScheduler}) 改寫您的應用程式以配合這些新的限制。
+
+</p>
+
+<h2 id="connectivity-action">
+  CONNECTIVITY_ACTION 上的限制
+</h2>
+
+<p>
+  目標為 N Developer Preview 的應用程式,如果在宣示說明中註冊以接收廣播,則不會收到 {@link
+  android.net.ConnectivityManager#CONNECTIVITY_ACTION} 廣播,而相依於此廣播的處理程序將不會啟動。
+
+這可能會在裝置連線到非計量付費網路時,對想要接聽網路變更或執行大量網路活動的應用程式造成問題。
+
+Android 架構中已經有數個可以避過此限制的解決方案,但是選擇適當的方法取決於您想要應用程式完成什麼工作。
+
+
+</p>
+
+<p class="note">
+  <strong>注意:</strong>使用
+  {@link android.content.Context#registerReceiver Context.registerReceiver()}
+ 註冊的 {@link android.content.BroadcastReceiver} 會在應用程式位於前景時繼續接收這些廣播。
+</p>
+
+<h3 id="sched-jobs">
+  在非計量付費連線上排程網路工作
+</h3>
+
+<p>
+  使用 {@link android.app.job.JobInfo.Builder JobInfo.Builder} 類別建置 {@link android.app.job.JobInfo} 物件時,請套用 {@link
+  android.app.job.JobInfo.Builder#setRequiredNetworkType
+  setRequiredNetworkType()} 方法並傳遞 {@link android.app.job.JobInfo
+  JobInfo.NETWORK_TYPE_UNMETERED} 當做工作參數。
+下列程式碼範例會排程服務,讓它在裝置連線到非計量付費網路和收費時執行:
+
+
+</p>
+
+<pre>
+public static final int MY_BACKGROUND_JOB = 0;
+...
+public static void scheduleJob(Context context) {
+  JobScheduler js =
+      (JobScheduler) context.getSystemService(Context.JOB_SCHEDULER_SERVICE);
+  JobInfo job = new JobInfo.Builder(
+    MY_BACKGROUND_JOB,
+    new ComponentName(context, MyJobService.class))
+      .setRequiredNetworkType(JobInfo.NETWORK_TYPE_UNMETERED)
+      .setRequiresCharging(true)
+      .build();
+  js.schedule(job);
+}
+</pre>
+
+<p>
+  符合您工作的條件時,您的應用程式會收到一個回呼,在指定的 {@code JobService.class} 中執行{@link android.app.job.JobService#onStartJob onStartJob()} 方法。
+
+如果要檢視更多 {@link
+  android.app.job.JobScheduler} 實作的範例,請參閱 <a href="{@docRoot}samples/JobScheduler/index.html">JobScheduler 範例應用程式</a>。
+</p>
+
+<p>
+  使用 GMSCore 服務且目標為 Android 5.0 (API 層級 21) 或更低的應用程式,可以使用 <a href="https://developers.google.com/android/reference/com/google/android/gms/gcm/GcmNetworkManager">
+  {@code GcmNetworkManager}</a> 並指定 {@code Task.NETWORK_STATE_UNMETERED}。
+
+</p>
+
+<h3 id="monitor-conn">
+  監視應用程式執行時的網路連線能力
+</h3>
+
+<p>
+  在前景執行的應用程式,只要使用註冊的 {@link
+  android.content.BroadcastReceiver} ,仍然可以接聽 {@code
+  CONNECTIVITY_CHANGE}。然而,{@link
+  android.net.ConnectivityManager} API 提供更建全的方法,只在符合指定的網路條件時才要求回呼。
+
+</p>
+
+<p>
+  {@link android.net.NetworkRequest} 物件以 {@link android.net.NetworkCapabilities} 的方式定義網路回呼的參數。
+您使用 {@link
+  android.net.NetworkRequest.Builder NetworkRequest.Builder} 類別建立{@link android.net.NetworkRequest} 物件。接著 {@link
+  android.net.ConnectivityManager#registerNetworkCallback(android.net.NetworkRequest,
+  android.net.ConnectivityManager.NetworkCallback) registerNetworkCallback()}
+ 會將 {@link android.net.NetworkRequest} 物件傳遞到系統。
+符合網路條件時,應用程式會收到回呼,執行它的 {@link
+  android.net.ConnectivityManager.NetworkCallback} 類別中定義的
+  {@link android.net.ConnectivityManager.NetworkCallback#onAvailable
+  onAvailable()} 方法。
+
+</p>
+
+<p>
+  應用程式會持續收到回呼,直到應用程式結束或呼叫
+  {@link android.net.ConnectivityManager#unregisterNetworkCallback
+  unregisterNetworkCallback()} 才停止。
+</p>
+
+<h2 id="media-broadcasts">
+  NEW_PICTURE 與 NEW_VIDEO 上的限制
+</h2>
+
+<p>
+  在 N Developer Preview 中,應用程式無法傳送或接收 {@link
+  android.hardware.Camera#ACTION_NEW_PICTURE} 或 {@link
+  android.hardware.Camera#ACTION_NEW_VIDEO} 廣播。在必須喚醒數個應用程式來處理新的影像或視訊時,此限制有助於降低對效能與使用者體驗的影響。
+
+N Developer Preview 擴充 {@link android.app.job.JobInfo} 與 {@link
+  android.app.job.JobParameters} 來提供替代解決方案。
+
+</p>
+
+<h3 id="new-jobinfo">
+  新的 JobInfo 方法
+</h3>
+
+<p>
+  為了在內容 URI 變更時觸發工作,N Developer Preview 使用下列方法擴充 {@link android.app.job.JobInfo} API:
+
+</p>
+
+<dl>
+  <dt>
+    {@code JobInfo.TriggerContentUri()}
+  </dt>
+
+  <dd>
+    封裝在內容 URI 變更時觸發工作所需的參數。
+  </dd>
+
+  <dt>
+    {@code JobInfo.Builder.addTriggerContentUri()}
+  </dt>
+
+  <dd>
+    將 {@code TriggerContentUri} 物件傳遞到 {@link
+    android.app.job.JobInfo}。{@link android.database.ContentObserver} 會監視封裝的內容 URI。
+如果有多個 {@code
+    TriggerContentUri} 物件與工作關聯,即使系統只回報其中一個內容 URI 中的變更,也會提供一個回呼。
+
+  </dd>
+
+  <dd>
+    新增 {@code TriggerContentUri.FLAG_NOTIFY_FOR_DESCENDANTS} 旗標,以在特定 URI 的任何子系變更時觸發工作。
+此旗標對應傳遞到 {@link
+    android.content.ContentResolver#registerContentObserver
+    registerContentObserver()} 的 {@code notifyForDescendants} 參數。
+
+  </dd>
+</dl>
+
+<p class="note">
+  <strong>注意:</strong>{@code TriggerContentUri()} 無法與 {@link android.app.job.JobInfo.Builder#setPeriodic
+  setPeriodic()} 或 {@link android.app.job.JobInfo.Builder#setPersisted
+  setPersisted()} 結合使用。
+為了持續監視內容變更,請在應用程式的 {@link
+  android.app.job.JobService} 完成處理最近的回呼之前,排程新的
+  {@link android.app.job.JobInfo}。
+</p>
+
+<p>
+  下列範例程式碼會排程一個工作,在系統回報內容 URI {@code MEDIA_URI} 變更時觸發該工作:
+
+</p>
+
+<pre>
+public static final int MY_BACKGROUND_JOB = 0;
+...
+public static void scheduleJob(Context context) {
+  JobScheduler js =
+          (JobScheduler) context.getSystemService(Context.JOB_SCHEDULER_SERVICE);
+  JobInfo.Builder builder = new JobInfo.Builder(
+          MY_BACKGROUND_JOB,
+          new ComponentName(context, MediaContentJob.class));
+  builder.addTriggerContentUri(
+          new JobInfo.TriggerContentUri(MEDIA_URI,
+          JobInfo.TriggerContentUri.FLAG_NOTIFY_FOR_DESCENDANTS));
+  js.schedule(builder.build());
+}
+</pre>
+<p>
+  當系統回報指定內容 URI 中有變更時,您的應用程式會收到一個回呼,而且會傳遞一個 {@link android.app.job.JobParameters} 物件到 {@code MediaContentJob.class} 中的 {@link android.app.job.JobService#onStartJob onStartJob()} 方法。
+
+
+
+</p>
+
+<h3 id="new-jobparam">
+  新的 JobParameter 方法
+</h3>
+
+<p>
+  N Developer Preview 也擴充 {@link android.app.job.JobParameters} 以允許您的應用程式接收有關內容授權單位與觸發工作之 URI 的實用資訊:
+
+
+</p>
+
+<dl>
+  <dt>
+    {@code Uri[] getTriggeredContentUris()}
+  </dt>
+
+  <dd>
+    傳回觸發工作之 URI 的陣列。如果沒有 URI 觸發工作 (例如,工作是因為期限到了或一些其他原因而觸發),或是變更的 URI 數目大於 50 時,這將會是 {@code
+    null}。
+
+
+  </dd>
+
+  <dt>
+    {@code String[] getTriggeredContentAuthorities()}
+  </dt>
+
+  <dd>
+    傳回觸發工作之內容授權單位的字串陣列。
+    如果傳回的陣列不是 {@code null},請使用 {@code getTriggeredContentUris()} 來擷取變更的 URI 的詳細資訊。
+
+  </dd>
+</dl>
+
+<p>
+  下列範例程式碼會覆寫 {@link
+  android.app.job.JobService#onStartJob JobService.onStartJob()} 方法,並記錄觸發工作的內容授權單位與 URI:
+
+</p>
+
+<pre>
+&#64;Override
+public boolean onStartJob(JobParameters params) {
+  StringBuilder sb = new StringBuilder();
+  sb.append("Media content has changed:\n");
+  if (params.getTriggeredContentAuthorities() != null) {
+      sb.append("Authorities: ");
+      boolean first = true;
+      for (String auth :
+          params.getTriggeredContentAuthorities()) {
+          if (first) {
+              first = false;
+          } else {
+             sb.append(", ");
+          }
+           sb.append(auth);
+      }
+      if (params.getTriggeredContentUris() != null) {
+          for (Uri uri : params.getTriggeredContentUris()) {
+              sb.append("\n");
+              sb.append(uri);
+          }
+      }
+  } else {
+      sb.append("(No content)");
+  }
+  Log.i(TAG, sb.toString());
+  return true;
+}
+</pre>
+
+<h2 id="further-optimization">
+  進一步最佳化您的應用程式
+</h2>
+
+<p>
+  最佳化您的應用程式,讓它可以在低記憶體裝置上或低記憶體狀況下執行,這樣可以改進效能與使用者體驗。
+移除背景服務上的相依性與靜態註冊的隱含式廣播接收器,有助於讓您的應用程式在此類裝置上執行得更順暢。
+
+雖然 N Developer Preview 採取一些步驟來減少一些此類問題,但是還是建議您最佳化您的應用程式,讓它完全不必使用這些背景處理程序。
+
+
+
+</p>
+
+<p>
+  N Developer Preview 引進一些額外的 <a href="{@docRoot}tools/help/adb.html">Android Debug Bridge (ADB)</a> 命令,您可以使用這些命令測試在那些背景處理程序停用時的應用程式行為:
+
+</p>
+
+<ul>
+  <li>如果要模擬隱含式廣播與背景服務無法使用的情況,請輸入下列命令:
+
+  </li>
+
+  <li style="list-style: none; display: inline">
+<pre class="no-pretty-print">
+{@code $ adb shell cmd appops set RUN_IN_BACKGROUND ignore}
+</pre>
+  </li>
+
+  <li>如果要重新啟用隱含式廣播與背景服務,請輸入下列命令:
+
+  </li>
+
+  <li style="list-style: none; display: inline">
+<pre class="no-pretty-print">
+{@code $ adb shell cmd appops set RUN_IN_BACKGROUND allow}
+</pre>
+  </li>
+</ul>
\ No newline at end of file
diff --git a/docs/html-intl/intl/zh-tw/preview/features/direct-boot.jd b/docs/html-intl/intl/zh-tw/preview/features/direct-boot.jd
new file mode 100644
index 0000000..22865c0
--- /dev/null
+++ b/docs/html-intl/intl/zh-tw/preview/features/direct-boot.jd
@@ -0,0 +1,180 @@
+page.title=直接開機
+page.keywords=preview,sdk,direct boot
+page.tags=androidn
+
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+  <h2>此文件內容</h2>
+  <ol>
+    <li><a href="#run">要求直接開機期間的執行權限</a></li>
+    <li><a href="#access">存取裝置加密的儲存空間</a></li>
+    <li><a href="#notification">接收使用者解鎖的通知</a></li>
+    <li><a href="#migrating">遷移現有資料</a></li>
+    <li><a href="#testing">測試您的加密感知應用程式</a></li>
+  </ol>
+</div>
+</div>
+
+<p>Android N 會在一個安全的 <i>直接開機</i> 模式下執行,這是裝置已經開啟電源但使用者尚未解鎖裝置的期間。
+
+為了支援這種方式,系統為資料提供兩個儲存位置:</p>
+
+<ul>
+<li><i>認證加密的儲存空間</i>:這是預設的儲存位置,只有在使用者解鎖裝置之後才能使用。
+</li>
+<li><i>裝置加密的儲存空間</i>:這是「直接開機」模式期間與使用者解鎖裝置之後都可以使用的儲存位置。
+</li>
+</ul>
+
+<p>根據預設,應用程式不會在「直接開機」模式下執行。如果您的應用程式需要在「直接開機」模式期間執行動作,您可以註冊應該在此模式下執行的應用程式元件。
+
+需要在「直接開機」模式下執行的一些常見應用程式使用案例包括:
+</p>
+
+<ul>
+<li>已排程通知的應用程式,例如鬧鐘應用程式。
+</li>
+<li>提供重要使用者通知的應用程式,例如簡訊應用程式。</li>
+<li>提供協助工具服務的應用程式,例如 Talkback。</li>
+</ul>
+
+<p>如果您的應用程式需要在「直接開機」模式期間存取資料,請使用裝置加密的儲存空間。
+裝置加密的儲存空間包含以金鑰加密的資料,這個金錀只有在裝置執行成功的驗證開機之後才能使用。
+
+</p>
+
+<p>對於應該使用與使用者認證關聯之金鑰 (例如 PIN 或密碼) 加密的資料,請使用認證加密的儲存空間。認證加密的儲存空間只有在使用者成功解鎖裝置之後到使用者再次重新啟動裝置之間的時間可以使用。
+
+
+如果使用者在解鎖裝置之後啟用鎖定螢幕,並不會鎖定認證加密的儲存空間。
+
+</p>
+
+<h2 id="run">要求直接開機期間的執行權限</h2>
+
+<p>應用程式必須先向系統註冊其元件,這些元件才能在「直接開機」模式期間執行或存取裝置加密的儲存空間。
+
+向系統註冊的應用程式會將元件標記為
+<i>加密感知</i>。如果要將元件標記為加密感知,請將宣示說明中的
+<code>android:encryptionAware</code> 屬性設定為 true。<p>
+
+<p>當裝置重新啟動時,加密感知元件可以註冊為從系統接收
+<code>LOCKED_BOOT_COMPLETED</code> 廣播訊息。
+這個時候可以使用裝置加密的儲存空間,而且您的元件可以執行在「直接開機」模式期間需要執行的工作,例如觸發排程的鬧鐘。
+
+</p>
+
+<p>下列程式碼片段是一個範例,示範如何在應用程式宣示說明中將
+{@link android.content.BroadcastReceiver} 註冊為加密感知以及如何為
+<code>LOCKED_BOOT_COMPLETED</code> 新增意圖篩選器:</p>
+
+<pre>
+&lt;receiever
+  android:encryptionAware="true" &gt;
+  ...
+  &lt;intent-filter&gt;
+    &lt;action android:name="android.intent.action.LOCKED_BOOT_COMPLETED" /&gt;
+  &lt;/intent-filter&gt;
+&lt;/receiver&gt;
+</pre>
+
+<p>一旦使用者將裝置解鎖,所有元件都可存取裝置加密的儲存空間與認證加密的儲存空間。
+</p>
+
+<h2 id="access">存取裝置加密的儲存空間</h2>
+
+<p>如果要存取裝置加密的儲存空間,請透過呼叫
+<code>Context.createDeviceEncryptedStorageContext()</code> 以建立第二個 
+{@link android.content.Context} 實例。使用此內容建立的所有儲存 API 呼叫都可以存取裝置加密的儲存空間。
+下列範例會存取裝置加密的儲存空間並開啟現有的應用程式資料檔案:
+
+</p>
+
+<pre>
+Context directBootContext = Context.createDeviceEncryptedStorageContext();
+// Access appDataFilename that lives in device encrypted storage
+FileInputStream inStream = directBootContext.openFileInput(appDataFilename);
+// Use inStream to read content...
+</pre>
+
+<p>只針對必須在「直接開機」模式期間存取的資訊使用裝置加密的儲存空間。不要將裝置加密的儲存空間做為一般用途的加密存放區。對於私密使用者資訊或「直接開機」模式期間不需要的加密資料,請使用認證加密的儲存空間。
+
+
+
+</p>
+
+<h2 id="notification">接收使用者解鎖的通知</h2>
+
+<p>裝置重新啟動之後,一旦使用者將裝置解鎖,您的應用程式就可以切換為存取認證加密的儲存空間,並使用倚賴使用者認證的一般系統服務。
+
+</p>
+
+<p>如果要接收裝置重新開機後使用者解鎖裝置的通知,請從執行中元件註冊 {@link android.content.BroadcastReceiver} 以接聽 <code>ACTION_USER_UNLOCKED</code> 訊息。
+
+或者,您可以接收現有的 {@link android.content.Intent#ACTION_BOOT_COMPLETED
+ACTION_BOOT_COMPLETED} 訊息,它現在可以指出裝置已開機且使用者已解鎖裝置。
+
+</p>
+
+<p>您可以透過呼叫
+<code>UserManager.isUserUnlocked()</code>,以直接查詢使用者是否已將裝置解鎖。</p>
+
+<h2 id="migrating">遷移現有資料</h2>
+
+<p>如果使用者更新其裝置來使用「直接開機」模式,您可能有現有的資料必須遷移到裝置加密的儲存空間。
+使用
+<code>Context.migrateSharedPreferencesFrom()</code> 與
+<code>Context.migrateDatabaseFrom()</code>,在認證加密的儲存空間與裝置加密的儲存空間之間遷移偏好設定與資料庫資料。
+</p>
+
+<p>決定要將哪些資料從認證加密的儲存空間遷移到裝置加密的儲存空間時,請使用最佳判斷。
+您不應該將私密使用者資訊 (例如密碼或授權權杖) 遷移到裝置加密的儲存空間。
+
+在某些情況下,您需要在這兩種加密的存放區中管理不同的資料集。
+</p>
+
+<h2 id="testing">測試您的加密感知應用程式</h2>
+
+<p>使用新的「直接開機」模式測試您的加密感知應用程式。您可以透過兩種方式啟用「直接開機」。
+</p>
+
+<p class="caution"><strong>注意:</strong>啟用「直接開機」會清除裝置上的所有使用者資料。
+</p>
+
+<p>在已安裝 Android N 的支援裝置上,執行下列其中一個動作來啟用「直接開機」:
+</p>
+
+<ul>
+<li>在裝置上,請移至 [設定] &gt; [關於手機]<b></b>,然後點選 [Android 版本]<b></b> 7 次以啟用 [開發人員選項]<b></b> (如果尚未啟用)。
+
+當開發人員選項畫面可用時,請移至 [設定] &gt; [開發人員選項]<b></b>,然後選取 [轉換到檔案加密]<b></b>。
+
+</li>
+<li>使用下列 adb shell 命令來啟用「直接開機」模式:
+<pre class="no-pretty-print">
+$ adb reboot-bootloader
+$ fastboot --wipe-and-use-fbe
+</pre>
+</li>
+</ul>
+
+<p>另外也提供模擬的「直接開機」模式,如果您需要在測試裝置上切換模式時即可利用。
+模擬模式應該只在開發期間使用,而且它可能造成資料遺失。
+如果要啟用模擬的「直接開機」模式,請在裝置上設定鎖定模式;設定鎖定模式時如果系統提示您設定安全啟動畫面,請選擇 [No thanks],然後使用下列 adb shell 命令:
+
+
+</p>
+
+<pre class="no-pretty-print">
+$ adb shell sm set-emulate-fbe true
+</pre>
+
+<p>如果要關閉模擬的「直接開機」模式,請使用下列命令:</p>
+
+<pre class="no-pretty-print">
+$ adb shell sm set-emulate-fbe false
+</pre>
+
+<p>使用這些命令會使得裝置重新開機。</p>
diff --git a/docs/html-intl/intl/zh-tw/preview/features/icu4j-framework.jd b/docs/html-intl/intl/zh-tw/preview/features/icu4j-framework.jd
new file mode 100644
index 0000000..77bbc4d
--- /dev/null
+++ b/docs/html-intl/intl/zh-tw/preview/features/icu4j-framework.jd
@@ -0,0 +1,158 @@
+page.title=ICU4J Android 架構 API
+
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+<h2>此文件內容:</h2>
+<ol>
+    <li><a href="#relation">與 ICU4J 的關係</a></li>
+    <li><a href="#migration">從 ICU4J 遷移到 android.icu API</a></li>
+    <li><a href="#licence">授權</a></li>
+</ol>
+
+<h2>另請參閱</h2>
+<ol>
+  <li>
+    <a class="external-link" href="http://userguide.icu-project.org">ICU4J 文件</a>
+  </li>
+
+  <li>
+    <a class="external-link" href="http://site.icu-project.org/#TOC-What-is-ICU-">ICU4J 支援的最新標準</a>
+
+  </li>
+</ol>
+</div>
+</div>
+
+<p>
+  ICU4J 是廣為使用的一組開放原始碼 Java 程式庫,為軟體應用程式提供 Unicode 與全球化支援。
+Android N 在 Android 架構中公開一個 ICU4J API 的子集,供應用程式開發人員在 {@code android.icu} 套件下使用。
+
+這些 API 使用裝置上呈現的當地語系化資料。
+因此,您可以不用將 ICU4J 程式庫編譯到 APK 而降低 APK 的使用;相反地,您只需在架構中呼叫這些程式庫
+
+(在此情況中,您可能要提供<a href="{@docRoot}google/play/publishing/multiple-apks.html">多個版本的 APK</a>,這樣執行低於 Android N 之 Android 版本的使用者即可下載包含 ICU4J 程式庫的應用程式版本)。
+
+
+
+</p>
+
+<p>
+  此文件一開始先提供支援這些程式庫所需之最低 Android API 層級的一些基本資訊。
+接著它說明 Android 特定實作 ICU4J 的相關須知事項。
+最後,它告訴您如何在 Android 架構中使用 ICU4J API。
+
+</p>
+
+<h2 id="relation">與 ICU4J 的關係</h2>
+
+<p>
+  Android N 透過
+  <code>android.icu</code> 套件 (而非 <code>com.ibm.icu</code>) 公開一個 ICU4J API 的子集。Android 架構可能因為各種原因選擇不公開 ICU4J API;例如,Android N 沒有公開一些已過時的 API 或 ICU 團隊尚未宣布為穩定的 API。
+
+
+
+因為 ICU 團隊將來會將 API 視為過時,所以 Android 也會將這些 API 標示為已過時但繼續包含它們。
+
+</p>
+
+<p class="table-caption"><strong>表 1.</strong> Android N 中使用的 ICU 與 CLDR 版本。
+</p>
+<table>
+<tr>
+<th>Android API 層級</th>
+<th>ICU 版本</th>
+<th>CLDR 版本</th>
+</tr>
+<tr>
+<td>Android N</td>
+<td>56</td>
+<td>28</td>
+</tr>
+</table>
+
+<p>以下是一些必須注意的重要事項:</p>
+
+<ul>
+<li>ICU4J Android 架構 API 不包含所有 ICU4J API。</li>
+<li>NDK 開發人員應該知道 Android ICU4C 不被支援。</li>
+<li>Android 架構中的 API 沒有取代 Android 對<a href="{@docRoot}guide/topics/resources/localization.html">使用資源進行當地語系化</a>的支援。
+
+</li>
+</ul>
+
+<h2 id="migration">從 com.ibm.icu 遷移到 android.icu 套件</h2>
+
+<p>
+  如果您已經在應用程式中使用 ICU4J API,而且
+  <code>android.icu</code> API 符合您的需求,那麼遷移到架構 API 需要您將 Java 匯入從 <code>com.ibm.icu</code> 變更為 <code>android.icu</code>。
+
+接著您可以從 APK 移除您自己的 ICU4J 檔案。
+
+</p>
+
+<p class="note">
+  <b>注意</b>:ICU4J 架構 API 使用 {@code android.icu} 命名空間而非 {@code com.ibm.icu}。
+這是為了避免包含自己的 {@code com.ibm.icu} 程式庫的 APK 中發生命名空間衝突。
+
+</p>
+
+<h3 id="migrate-from-android">
+  從其他 Android SDK API 遷移到 android.icu API
+</h3>
+
+<p>
+  <code>java</code> 與 <code>android</code> 套件中的一些類別包含可在 ICU4J 中找到的同等項目。
+然而,ICU4J 通常為標準與語言提供更廣泛的支援。
+
+</p>
+<p>以下提供一些快速入門範例:</p>
+<table>
+<tr>
+<th>類別</th>
+<th>替代項目</th>
+</tr>
+<tr>
+<td><code>java.lang.Character</code> </td>
+<td><code>android.icu.lang.UCharacter</code> </td>
+</tr>
+<tr>
+<td><code>java.text.BreakIterator</code> </td>
+<td><code>android.icu.text.BreakIterator</code> </td>
+</tr>
+<tr>
+<td><code>java.text.DecimalFormat</code> </td>
+<td><code>android.icu.text.DecimalFormat</code> </td>
+</tr>
+<tr>
+<td><code>java.util.Calendar</code></td>
+<td>
+<code>android.icu.util.Calendar</code></td>
+</tr>
+<tr>
+<td><code>android.text.BidiFormatter</code>
+ </td>
+<td><code>android.icu.text.Bidi</code>
+ </td>
+</tr>
+<tr>
+<td><code>android.text.format.DateFormat</code>
+ </td>
+<td><code>android.icu.text.DateFormat</code>
+ </td>
+</tr>
+<tr>
+<td><code>android.text.format.DateUtils</code> </td>
+<td><code>android.icu.text.DateFormat</code>
+<code>android.icu.text.RelativeDateTimeFormatter</code>
+</td>
+</tr>
+</table>
+
+<h2 id="licence">授權</h2>
+
+<p>
+  ICU4J 是根據 ICU 授權而發行。如需詳細資料,請參閱 <a class="external-link" href="http://userguide.icu-project.org/icufaq#TOC-How-is-the-ICU-licensed-">ICU 使用者指南</a>。
+
+</p>
diff --git a/docs/html-intl/intl/zh-tw/preview/features/multi-window.jd b/docs/html-intl/intl/zh-tw/preview/features/multi-window.jd
new file mode 100644
index 0000000..788951c
--- /dev/null
+++ b/docs/html-intl/intl/zh-tw/preview/features/multi-window.jd
@@ -0,0 +1,582 @@
+page.title=多視窗支援
+page.metaDescription=Android N 新推出支援一次顯示多個應用程式。
+page.keywords="multi-window", "android N", "split screen", "free-form"
+
+@jd:body
+
+<div id="qv-wrapper">
+  <div id="qv">
+    <h2>此文件內容</h2>
+      <ol>
+        <li><a href="#overview">總覽</a></li>
+        <li><a href="#lifecycle">多視窗生命週期</a></li>
+        <li><a href="#configuring">針對多視窗模式設定應用程式
+</a></li>
+        <li><a href="#running">在多視窗模式中執行應用程式</a></li>
+        <li><a href="#testing">測試應用程式的多視窗支援</a></li>
+      </ol>
+    <h2>另請參閱</h2>
+      <ol>
+        <li><a class="external-link" href="https://github.com/googlesamples/android-MultiWindowPlayground">多視窗 Playground 範例應用程式
+</a></li>
+      </ol>
+  </div>
+</div>
+
+<p>
+  Android N 新增一次顯示多個應用程式的支援。
+在手持式裝置上,兩個應用程式可以在「分割畫面」模式中並排或上下排列。
+<em></em>在電視裝置上,應用程式能使用「子母畫面」模式,在使用者與另一個應用程式互動時持續播放影片。
+<em></em>
+
+</p>
+
+<p>
+  如使用 N Preview SDK 建置應用程式,您可以設定應用程式處理多視窗顯示的方式。
+例如,您可以指定活動的最小可允許尺寸。
+您也可以停用應用程式的多視窗顯示,確保系統只會以全螢幕模式顯示您的應用程式。
+
+
+</p>
+
+<h2 id="overview">總覽</h2>
+
+<p>
+  Android N 允許多個應用程式同時分享螢幕。例如,使用者可以分割畫面,在左邊檢視網頁,同時在右邊撰寫電子郵件。
+
+使用者體驗依裝置而異:
+
+</p>
+
+<ul>
+  <li>執行 Android N 的手持式裝置可提供分割畫面模式。
+處於此模式時,系統會以並排或上下排列的方式顯示兩個應用程式,將螢幕填滿。
+使用者可以拖曳將畫面一分為二的分隔線,加大一邊的應用程式,就會縮小另一邊。
+
+  </li>
+
+  <li>在執行 Android N 的 Nexus Player 上,當使用者瀏覽其他應用程式或與其互動時,應用程式會將本身放入<a href="picture-in-picture.html">子母畫面模式</a>以持續顯示內容。
+
+
+
+  </li>
+
+  <li>較大型裝置的製造商可選擇啟用自由形式模式,讓使用者自由調整每個活動的大小。
+若製造商啟用此功能,裝置除了分割畫面模式外,還會提供自由形式模式。
+
+
+  </li>
+</ul>
+
+<img src="{@docRoot}preview/images/mw-splitscreen.png" alt="" width="650" srcset="{@docRoot}preview/images/mw-splitscreen.png 1x,
+    {@docRoot}preview/images/mw-splitscreen_2x.png 2x," id="img-split-screen" />
+<p class="img-caption">
+  <strong>圖 1.</strong> 在分割畫面模式中並排執行的兩個應用程式。
+</p>
+
+<p>
+  使用者可以透過下列方式來切換多視窗模式:
+</p>
+
+<ul>
+  <li>如果使用者開啟<a href="{@docRoot}guide/components/recents.html">總覽畫面</a>並長按活動標題,就可以將該標題拖曳到畫面醒目提示的部分,將活動放入多視窗模式。
+
+
+
+  </li>
+
+  <li>如果使用者長按「總覽」按鈕,裝置會將目前的活動放入多視窗模式,並開啟總覽畫面,讓使用者選擇要分享螢幕的另一個活動。
+
+
+  </li>
+</ul>
+
+<p>
+  使用者可以在活動分享螢幕時,將一個活動中的資料<a href="{@docRoot}guide/topics/ui/drag-drop.html">拖放</a>到另一個活動。
+
+(之前,使用者只能在單一活動內拖放資料)。
+
+</p>
+
+<h2 id="lifecycle">多視窗生命週期</h2>
+
+<p>
+  多視窗模式不會變更<a href="{@docRoot}training/basics/activity-lifecycle/index.html">活動生命週期</a>。
+
+</p>
+
+<p>
+  在多視窗模式中,特定時間只有最近與使用者互動的活動才會處於使用中。
+這會視為「最上層」活動。<em></em>
+  即使能看到所有其他活動,但也處於暫停狀態。
+  然而,相較於看不到的活動,系統會給予這類暫停但可看見的活動較高的優先順序。
+若使用者改與其中一個暫停的活動互動,該活動就會恢復,使先前的最上層活動變成暫停。
+
+
+</p>
+
+<p class="note">
+  <strong>注意:</strong>在多視窗模式中,使用者仍能見到處於暫停狀態的應用程式。
+即使處於暫停,應用程式仍需要進行其活動。
+例如,處於暫停模式但仍可以看見的影片播放應用程式,應會持續顯示其影片。
+因此,建議您在播放影片的活動 {@link android.app.Activity#onPause onPause()} 處理常式中,「不要」暫停影片。
+<em></em>
+
+  應該改為在 {@link android.app.Activity#onStop
+  onStop()}, and resume playback in {@link android.app.Activity#onStart
+  onStart()} 中暫停影片。
+</p>
+
+<p>
+  當使用者將應用程式放入多視窗模式時,系統會通知活動發生設定變更,如<a href="{@docRoot}guide/topics/resources/runtime-changes.html">處理執行階段變更</a>所指定。
+
+基本上,此變更的活動生命週期和系統通知應用程式,裝置從垂直模式切換為水平模式時的生命週期相當,差別在於裝置尺寸會改變,而不只是切換。
+
+
+如<a href="{@docRoot}guide/topics/resources/runtime-changes.html">處理執行階段變更</a>中所述,您的活動能自行處理設定變更,或會允許系統終結活動並以新的尺寸重新建立。
+
+
+
+</p>
+
+<p>
+  如果使用者調整視窗大小並加大長或寬的尺寸,系統會根據使用者動作來調整活動大小,並視需要發出<a href="{@docRoot}guide/topics/resources/runtime-changes.html">執行階段變更</a>。
+
+若應用程式在新公開的區域中繪製發生延遲,系統會暫時使用 {@link
+  android.R.attr#windowBackground windowBackground} 所指定的色彩或預設的
+  <code>windowBackgroundFallback</code> 樣式屬性,填滿那些區域。
+
+</p>
+
+<h2 id="configuring">針對多視窗模式設定應用程式</h2>
+
+<p>
+  您的應用程式若以 Android N 為目標,您可以設定應用程式的活動是否支援多視窗顯示以及支援的方式。
+您可以在宣示說明中設定屬性,同時控制大小與版面配置。
+
+  根活動的屬性設定會套用到它工作堆疊內的所有活動。
+
+</p>
+
+<p class="note">
+  <strong>注意:</strong>如果您使用 Android N 以下的 SDK 版本建置多螢幕方向應用程式,而且使用者會在多視窗模式中使用該應用程式,系統會強制調整應用程式大小。
+
+系統會顯示對話方塊向使用者警告應用程式行為異常。
+系統「不會」調整螢幕方向固定的應用程式大小,如使用者嘗試在多視窗模式下開啟螢幕方向固定的應用程式,應用程式會佔滿整個螢幕。
+<em></em>
+
+
+</p>
+
+<h4 id="resizeableActivity">android:resizeableActivity</h4>
+<p>
+  在宣示說明的 <code>&lt;activity&gt;</code> 或 
+  <code>&lt;application&gt;</code> 節點中,設定此屬性以啟用或停用多視窗顯示:
+
+</p>
+
+<pre>
+android:resizeableActivity=["true" | "false"]
+</pre>
+
+<p>
+  如將此屬性設定為 true,就能以分割畫面和自由形式模式來啟動活動。
+如將屬性設定為 false,活動會不支援多視窗模式。
+如果此值為 false,而使用者嘗試以多視窗模式啟動活動,該活動會佔滿整個螢幕。
+
+
+</p>
+
+<p>
+  您的應用程式如以 Android N 為目標,但您並未指定此屬性的值,屬性的預設值為 true。
+
+</p>
+
+<h4 id="supportsPictureInPicture">android:supportsPictureInPicture</h4>
+
+<p>
+  在宣示說明的 <code>&lt;activity&gt;</code> 節點中,設定此屬性以指出活動是否支援子母畫面顯示:
+如果 <code>android:resizeableActivity</code> 為 false,則會忽略此屬性。
+
+</p>
+
+<pre>
+android:supportsPictureInPicture=["true" | "false"]
+</pre>
+
+<h3 id="layout">版面配置屬性</h3>
+
+<p>
+  使用 Android N,<code>&lt;layout&gt;</code> 宣示說明元素支援的數個屬性會影響多視窗模式中的活動行為。
+
+
+</p>
+
+<dl>
+  <dt>
+    <code>android:defaultWidth</code>
+  </dt>
+
+  <dd>
+    以自由形式模式啟動活動時的預設寬度。
+  </dd>
+
+  <dt>
+    <code>android:defaultHeight</code>
+  </dt>
+
+  <dd>
+    以自由形式模式啟動活動時的預設高度。
+  </dd>
+
+  <dt>
+    <code>android:gravity</code>
+  </dt>
+
+  <dd>
+    以自由形式模式啟動活動時的初始放置位置。請參閱
+    {@link android.view.Gravity} 參考資料以查看適當的值。
+  </dd>
+
+  <dt>
+    <code>android:minimalSize</code>
+  </dt>
+
+  <dd>
+    在分割畫面與自由形式模式中,活動的最小高度與最小寬度。
+如果使用者在分割畫面模式中移動分隔,而使活動小於指定的最小值,系統會將活動裁剪為使用者要求的大小。
+
+
+  </dd>
+</dl>
+
+<p>
+  例如,在自由形式模式中顯示活動時,下列程式碼顯示如何指定活動的預設大小與位置以及它的最小大小:
+
+
+</p>
+
+<pre>
+&lt;activity android:name=".MyActivity"&gt;
+    &lt;layout android:defaultHeight="500dp"
+          android:defaultWidth="600dp"
+          android:gravity="top|end"
+          android:minimalSize="450dp" /&gt;
+&lt;/activity&gt;
+</pre>
+
+<h2 id="running">在多視窗模式中執行應用程式</h2>
+
+<p>
+  Android N 提供的新功能支援在多視窗模式中執行應用程式。
+
+</p>
+
+<h3 id="disabled-features">可在多視窗模式中停用的功能</h3>
+
+<p>
+  當裝置處於多視窗模式時,有些功能無法用於會與其他活動或應用程式分享裝置螢幕的活動,因此會加以停用或忽略。
+
+這類功能包括:
+
+<ul>
+  <li>有些<a href="{@docRoot}training/system-ui/index.html">系統 UI</a>
+  自訂選項會停用。例如,不以全螢幕模式執行就無法隱藏狀態列的應用程式。
+
+  </li>
+
+  <li>系統會忽略對 <code><a href=
+  "{@docRoot}guide/topics/manifest/activity-element.html#screen"
+  >android:screenOrientation</a></code> 屬性的變更。
+  </li>
+</ul>
+
+<h3 id="change-notification">多視窗變更通知與查詢</h3>
+
+<p>
+  已將下列可支援多視窗顯示的新方法新增至 {@link android.app.Activity}
+  類別。如需每個方法的詳細資訊,請參閱
+  <a href="{@docRoot}preview/setup-sdk.html#docs-dl">N Preview SDK 參考資料</a>。
+</p>
+
+<dl>
+  <dt>
+    <code>Activity.inMultiWindow()</code>
+  </dt>
+
+  <dd>
+    呼叫即可知道活動是否處於多視窗模式。
+  </dd>
+
+  <dt>
+    <code>Activity.inPictureInPicture()</code>
+  </dt>
+
+  <dd>
+    呼叫即可知道活動是否處於子母畫面模式。
+
+    <p class="note">
+      <strong>注意:</strong>子母畫面模式為多視窗模式的特殊情況。
+如果 <code>myActivity.inPictureInPicture()</code>
+      傳回 true,那麼 <code>myActivity.inMultiWindow()</code> 也會傳回 true。
+
+    </p>
+  </dd>
+
+  <dt>
+    <code>Activity.onMultiWindowChanged()</code>
+  </dt>
+
+  <dd>
+    每當活動進入或離開多視窗模式,系統就會呼叫這個方法。
+如果活動正在進入多視窗模式,系統會將 true 的值傳遞給方法,若活動正要離開多視窗模式,則會傳遞 false。
+
+
+  </dd>
+
+  <dt>
+    <code>Activity.onPictureInPictureChanged()</code>
+  </dt>
+
+  <dd>
+    每當活動進入或離開子母畫面模式,系統就會呼叫這個方法。
+如果活動正在進入子母畫面模式,系統會將 true 的值傳遞給方法,若活動正要離開子母畫面模式,則會傳遞 false。
+
+
+  </dd>
+</dl>
+
+<p>
+  上述的每一個方法也都有 {@link android.app.Fragment} 版本,例如
+ <code>Fragment.inMultiWindow()</code>。
+</p>
+
+<h3 id="entering-pip">進入子母畫面模式</h3>
+
+<p>
+  呼叫新方法
+  <code>Activity.enterPictureInPicture()</code>,即可將活動放入子母畫面模式。如果裝置不支援子母畫面模式,這個方法就沒有作用。
+如需詳細資訊,請參閱<a href="picture-in-picture.html">子母畫面</a>文件。
+
+</p>
+
+<h3 id="launch">在多視窗模式中啟動新活動</h3>
+
+<p>
+  當您啟動新活動,可以提示系統應儘可能在目前活動的旁邊顯示新的活動。
+如要這樣做,請使用旗標
+  <code>Intent.FLAG_ACTIVITY_LAUNCH_TO_ADJACENT</code>。
+傳遞此旗標會要求下列行為:
+
+</p>
+
+<ul>
+  <li>如果裝置處於分割畫面模式中,系統會嘗試在啟動新活動的活動旁邊建立該活動,讓兩個活動分享螢幕。
+
+系統不保證一定能這樣做,但會儘可能讓活動相鄰。
+
+  </li>
+
+  <li>如果裝置未處於分割畫面模式,這個旗標就沒有作用。
+  </li>
+</ul>
+
+<p>
+  如果裝置處於自由形式模式,而您正在啟動新的活動,您可以呼叫
+  <code>ActivityOptions.setLaunchBounds()</code>,指定新活動的尺寸與畫面位置。
+如果裝置未處於多視窗模式,這個方法就沒有作用。
+
+</p>
+
+<p class="note">
+  <strong>注意:</strong>如果您在工作堆疊內啟動活動,該活動就會取代畫面上的活動,繼承它的所有多視窗屬性。
+
+如果您想要在多視窗模式中,以個別的視窗啟動活動,您必須在新的工作堆疊中啟動該活動。
+
+</p>
+
+<h3 id="dnd">支援拖放功能</h3>
+
+<p>
+  使用者可以在兩個活動分享螢幕時,將一個活動中的資料<a href="{@docRoot}guide/topics/ui/drag-drop.html">拖放</a>到另一個活動。
+
+(之前,使用者只能在單一活動內拖放資料)。
+因此,若您的應用程式目前不支援拖曳功能,建議您將該功能新增至應用程式。
+
+</p>
+
+<p>
+  N Preview SDK 擴充 <a href="{@docRoot}reference/android/view/package-summary.html"><code>android.view</code></a>
+  套件,支援跨應用程式的拖放功能。如需下列類別與方法的詳細資訊,請參閱 <a href="{@docRoot}preview/setup-sdk.html#docs-dl">N Preview SDK 參考資料</a>。
+
+
+</p>
+
+<dl>
+  <dt>
+    <code>android.view.DropPermissions</code>
+  </dt>
+
+  <dd>
+    語彙基元物件負責指定權限,授予給放下接收者應用程式。
+
+  </dd>
+
+  <dt>
+    <code>View.startDragAndDrop()</code>
+  </dt>
+
+  <dd>
+    {@link android.view.View#startDrag View.startDrag()} 的新別名。傳遞新旗標
+    <code>View.DRAG_FLAG_GLOBAL</code>,就可以啟用跨活動的拖放功能。
+如果您需要將 URI 權限授予接收者活動,請視需要傳遞新旗標
+    <code>View.DRAG_FLAG_GLOBAL_URI_READ</code> 或
+    <code>View.DRAG_FLAG_GLOBAL_URI_WRITE</code>。
+
+  </dd>
+
+  <dt>
+    <code>View.cancelDragAndDrop()</code>
+  </dt>
+
+  <dd>
+    取消目前進行中的拖曳操作。只能由產生拖曳操作的應用程式呼叫。
+
+  </dd>
+
+  <dt>
+    <code>View.updateDragShadow()</code>
+  </dt>
+
+  <dd>
+    取代目前所進行拖曳操作的拖曳陰影。只能由產生拖曳操作的應用程式呼叫。
+
+  </dd>
+
+  <dt>
+    <code>Activity.requestDropPermissions()</code>
+  </dt>
+
+  <dd>
+    針對利用 {@link android.view.DragEvent} 中包含的 {@link
+    android.content.ClipData} 傳遞的內容 URI,要求權限。
+  </dd>
+</dl>
+
+<h2 id="testing">測試應用程式的多視窗支援</h2>
+
+<p>
+  不論您是否針對 Android N 更新您的應用程式,都應該確認應用程式在多視窗模式中的行為為何,以免使用者試圖在執行 Android N 的裝置上以多視窗模式啟動應用程式。
+
+
+</p>
+
+<h3 id="configuring">設定測試裝置</h3>
+
+<p>
+  如果您在裝置上安裝 Android N,即自動支援分割畫面模式。
+
+</p>
+
+<h3 id="test-non-n">應用程式若非以 N Preview SDK 建置</h3>
+
+<p>
+  若您並非以 N Preview SDK 建置應用程式,而且使用者會試圖在多視窗模式中使用該應用程式,除非應用程式宣告螢幕方向固定,否則系統會強制調整應用程式大小。
+
+
+</p>
+
+<p>
+  若您的應用程式並未宣告螢幕方向固定,您應該在執行 Android N 的裝置上啟動應用程式,並嘗試將應用程式放入分割畫面模式。
+
+確認強制調整應用程式大小時的使用者體驗可以接受。
+
+</p>
+
+<p>
+  若您的應用程式宣告螢幕方向固定,您應該嘗試將應用程式放入多視窗模式。
+確認您這樣做時,應用程式依然會處於全螢幕模式。
+
+</p>
+
+<h3 id="test-mw">若您支援多視窗模式</h3>
+
+<p>
+  如果您以 N Preview SDK 建置應用程式且未停用多視窗支援,請在分割畫面與自由形式模式下,確認下列行為:
+
+
+</p>
+
+<ul>
+  <li>以全螢幕模式啟動應用程式,然後長按 [總覽] 按鈕以切換到多視窗模式。
+確認應用程式可以正確切換。
+  </li>
+
+  <li>以多視窗模式直接啟動應用程式,並確認應用程式可以正確啟動。
+您可以按下 [總覽] 按鈕,然後長按應用程式的標題欄,再拖曳到螢幕上其中一個醒目提示的區域,即可以多視窗模式啟動應用程式。
+
+
+  </li>
+
+  <li>在分割畫面模式中拖曳分隔線調整應用程式的大小。
+  確認可以調整應用程式大小而不會當機,同時可以看見必要的 UI 元素。
+
+  </li>
+
+  <li>如果您已指定應用程式的最小尺寸,請嘗試將應用程式的大小調整到低於指定的尺寸。
+確認您無法將應用程式的大小調整到小於指定的最小值。
+
+  </li>
+
+  <li>經由所有測試確認應用程式的效能可以接受。例如,確認在調整應用程式大小之後,不會遲遲不更新 UI。
+
+
+  </li>
+</ul>
+
+<h4 id="test-checklist">測試檢查清單</h4>
+
+<p>
+  若要確認應用程式在多視窗模式中的效能,請嘗試下列操作。
+除非另外註明,否則您應該在分割畫面與多視窗模式中嘗試這些操作。
+
+</p>
+
+<ul>
+  <li>進入和離開多視窗模式。
+  </li>
+
+  <li>從您的應用程式切換到另一個應用程式,並確認當應用程式不在使用中但可看見時,能正常運作。
+例如,如果是播放影片的應用程式,請確認當使用者與另一個應用程式互動時,影片會持續播放。
+
+
+  </li>
+
+  <li>在分割畫面模式中,嘗試移動分隔列以加大和縮小應用程式。
+在並排與上下排列設定都要嘗試這些操作。
+確認應用程式不會當機,可以看見基本功能,而且不會花太長的時間完成調整大小操作。
+
+
+  </li>
+
+  <li>快速連續執行數次調整大小操作。確認應用程式不會因此當機或流失記憶體。
+如需檢查應用程式記憶體使用量的詳細資訊,請參閱<a href="{@docRoot}tools/debugging/debugging-memory.html">調查 RAM 使用狀況</a>。
+
+
+  </li>
+
+  <li>以數個不同的視窗設定正常使用您的應用程式,並確認應用程式都能正常運作。
+確認文字可以閱讀,而且 UI 元素不會太小而無法與之互動。
+
+  </li>
+</ul>
+
+<h3 id="test-disabled-mw">若已停用多視窗支援</h3>
+
+<p>
+  若您已設定
+  <code>android:resizableActivity="false"</code> 來停用多視窗支援,您應該在執行 Android N 的裝置上啟動應用程式,並嘗試將應用程式放入自由形式與分割畫面模式。
+
+確認您這樣做時,應用程式依然會處於全螢幕模式。
+
+</p>
diff --git a/docs/html-intl/intl/zh-tw/preview/features/multilingual-support.jd b/docs/html-intl/intl/zh-tw/preview/features/multilingual-support.jd
new file mode 100644
index 0000000..aada78f
--- /dev/null
+++ b/docs/html-intl/intl/zh-tw/preview/features/multilingual-support.jd
@@ -0,0 +1,214 @@
+page.title=語言和地區設定
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+<h2>此文件內容:</h2>
+<ol>
+	  <li><a href="#preN">解析語言資源中的挑戰</a></li>
+    <li><a href="#postN">對資源解析策略所做的改進</a></li>
+    <li><a href="#design">設計您的應用程式支援其他地區設定</a>
+</li>
+
+</ol>
+
+</div>
+</div>
+
+<p>Android N 增強對多語言使用者的支援,讓他們可在設定中選取多個地區設定。
+Android N 藉由擴充支援的地區設定數量和改變系統解析資源的方式來提供多語言支援。
+
+解析資源的新方法更加健全,而且它的設計是與現有 APK 相容,但是您應該特別注意任何未預期的行為。
+
+例如,您應該進行測試,確認應用程式預設在預期的語言。
+此外,如果您的應用程式支援多個語言,則應該確保這項支援也能如預定方式運作。
+
+最後,您應該試著確認應用程式可以順暢地處理沒有明確設計要支援的語言。
+</p>
+
+<p>本文件一開始會先說明在 Android N 之前的資源解析策略。接下來,它會描述 Android N 的已改進的資源解析策略。
+
+最後,它會說明如何利用擴充的地區設定數量來支援更多的多語言使用者。
+</p>
+
+<h2 id="preN">解析語言資源中的挑戰</h2>
+
+<p>在 Android N 之前,Android 並不總能成功地對應應用程式與系統地區設定。
+舉例來說,假設您應用程式的預設語言的是 US English,但是它的 {@code es_ES} 資源檔案中也包含當地語言化的西班牙文字串。
+
+</p>
+<p>當您的 Java 程式碼參考這些字串時,它會以下列方式來解析字串語言:
+</p>
+<ul>
+<li>如果裝置設定為 {@code es_MX} (Spanish-Mexico),Android 會從 {@code es_ES} 資源檔案載入字串。
+</li>
+<li>如果裝置設定為 {@code en_AU},Android 會返回使用 {@code
+en_US}。如果使用者選擇應用程式完全不支援的語言 (如法文),系統也會預設成 {@code en_US}。
+</li>
+</ul>
+
+
+<p>出現這些解析問題的原因,是如果系統找不到符合的項目,它會剝除地區設定中的國家/地區代碼。
+例如:</p>
+<p class="table-caption" id="t-resource-res">
+<strong>表 1.</strong> 沒有完全符合的地區設定的資源解析。
+</p>
+<table>
+<tbody>
+<tr>
+<th>使用者設定</th>
+<th>應用程式資源</th>
+<th>資源解析</th>
+</tr>
+<tr>
+<td>fr_CH</td>
+<td>
+預設 (en)<br>
+de_DE<br>
+es_ES<br>
+fr_FR<br>
+it_IT<br>
+</td>
+ <td>
+嘗試 fr_CH =&gt; 失敗<br>
+嘗試 fr =&gt; 失敗<br>
+使用預設 (en)
+</td>
+ </tr>
+ </tbody>
+</table>
+
+
+<p>在此例中,系統會顯示英文字串,而不知道使用者是否了解英文。
+現在這種行為相當常見。
+Android N 可以大幅降低出現這類結果的頻率。
+</p>
+
+<h2 id="postN">對資源解析策略所做的改進</h2>
+<p>Android N 帶來更健全的資源解析,而且會自動發現更佳的遞補。
+然而,為了加速解析和改進維護能力,您應該將資源存放在最常用的父系語言中。
+
+ 例如,如果之前將西班牙文資源存放在 {@code es-US} 目錄,請將它們移到包含拉丁美洲西班牙文的 {@code es-419} 目錄。
+
+ 同樣地,如果在名為 {@code en-GB} 的資料夾中包含資源字串,請將資料夾重新命名為 {@code en-001} (國際英文),因為 <code>en-GB</code> 字串的最常見父系為 {@code en-001}。
+
+
+ 下列範例說明為什麼這些做法可改善資源解析的效能和可靠性。
+</p>
+
+<h3>資源解析範例</h3>
+
+<p>在 Android N 中,<strong>表 1</strong> 中所述的案例會用不同的方式解析:
+</p>
+
+<p class="table-caption" id="t-improved-res">
+<strong>表 2.</strong> 沒有完全符合的地區設定的已改進解析策略。
+</p>
+<table>
+<tr>
+<th>使用者設定</th>
+<th>應用程式資源</th>
+<th>資源解析</th>
+</tr>
+<tr>
+<td><ol>
+<li> fr_CH</li>
+</ol>
+</td>
+<td>
+預設 (en)<br>
+de_DE<br>
+es_ES<br>
+fr_FR<br>
+it_IT<br>
+</td>
+<td>
+嘗試 fr_CH =&gt; 失敗<br>
+嘗試 fr =&gt; 失敗<br>
+嘗試 fr 的子項 =&gt; fr_FR<br>
+使用 fr_FR
+</td>
+</tr>
+
+</table>
+
+
+<p>現在使用者會取得法文資源而非英文資源。這個範例也顯示為什麼在 Android N 中,您應該將法文字串存放在 {@code fr} 而非 {@code fr_FR} 中。以下是比對最接近父系語言的動作步驟,這些步驟可讓解析更快、更容易預測。
+
+
+</p>
+
+<p>除了這個已改進的解析邏輯之外,現在 Android 還提供更多使用者語言供您選擇。
+讓我們指定義大利文做為額外的使用者語言但應用程式不支援法文的情況,再試一次上述的範例。
+  </p>
+
+<p class="table-caption" id="t-2d-choice">
+<strong>表 3.</strong> 應用程式只比對到符合使用者第二個慣用地區設定時的資源解析。
+</p>
+<table>
+<tr>
+<th>使用者設定</th>
+<th>應用程式資源</th>
+<th>資源解析</th>
+
+</tr>
+<tr>
+<td><ol>
+<li> fr_CH</li>
+<li> it_CH</li>
+</ol>
+</td>
+<td>
+預設 (en)<br>
+de_DE<br>
+es_ES<br>
+it_IT<br>
+</td>
+<td>
+嘗試 fr_CH =&gt; 失敗<br>
+嘗試 fr =&gt; 失敗<br>
+嘗試 fr 的子項 =&gt; 失敗<br>
+嘗試 it_CH =&gt; 失敗<br>
+嘗試 it =&gt; 失敗<br>
+嘗試 it 的子項 =&gt; it_IT<br>
+使用 it_IT
+</td>
+
+</tr>
+
+</table>
+<p>即使應用程式不支援法文,但是使用者仍然取得他們了解的語言。
+</p>
+
+
+<h2 id="design">設計您的應用程式支援其他地區設定</h2>
+<h3>LocaleList API</h3>
+
+<p>Android N 增加了新的 API {@code LocaleList.GetDefault()}
+,讓應用程式直接查詢使用者指定的語言清單。這個 API 可讓您建立更精細的應用程式行為,也能更好的最佳化內容的顯示方式。
+
+例如,搜尋可以根據使用者的設定以多語言顯示結果。
+瀏覽器應用程式可以避免提供以使用者已知語言來翻譯網頁的選項,鍵盤應用程式可以自動啟用所有適當的版面配置。
+
+ </p>
+
+<h3>格式設定</h3>
+
+<p>直到 Android 6.0 (API 層級 23),Android 還只支援許多常用語言 (en、es、ar、fr、ru) 的一或兩個地區設定。
+
+因為每種語言只有幾種變體,所以應用程式不用在資源檔案中將一些數字和日期儲存為硬式編碼字串。
+
+然而,隨著 Android 擴充了支援的地區設定之後,即使在單一地區設定中,日期、時間、貨幣和類似資訊的格式可能會有顯著的差異。
+
+
+硬式編碼您的格式會對使用者產生令人混淆的體驗。
+因此,針對 Android N 進行開發時,請務必使用格式子,而不要硬式編碼數字和日期字串。
+</p>
+
+<p>最主要的範例是阿拉伯文,它對 Android N 的支援從一個 {@code ar_EG} 擴充到 27 個阿拉伯地區設定。
+這些地區設定可以共用大多數的資源,但是有些地區設定慣用 ASCII 數字,而其他地區設定慣用當地數字。
+例如,在您想要建立一個包含數字變數的句子時,例如 "Choose a 4 digit pin",請使用如下所示的格式設定:
+
+</p>
+
+<pre> format(locale, "Choose a %d-digit PIN", 4)</pre>
diff --git a/docs/html-intl/intl/zh-tw/preview/features/notification-updates.jd b/docs/html-intl/intl/zh-tw/preview/features/notification-updates.jd
new file mode 100644
index 0000000..5ebcebb
--- /dev/null
+++ b/docs/html-intl/intl/zh-tw/preview/features/notification-updates.jd
@@ -0,0 +1,328 @@
+page.title=通知
+page.tags=notifications
+helpoutsWidget=true
+page.image=/preview/images/notifications-card.png
+
+trainingnavtop=true
+
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+
+<!-- table of contents -->
+<h2>本文件包括</h2>
+<ol>
+  <li><a href="#direct">直接回覆</a></li>
+  <li><a href="#bundle">整合式通知</a></li>
+  <li><a href="#custom">自訂檢視</a></li>
+</ol>
+
+</div>
+</div>
+
+<p>Android N 引進數個新 API,允許應用程式張貼相當顯眼且互動式的通知。
+</p>
+
+<p>Android N 擴充現有的 {@link android.support.v4.app.RemoteInput}
+通知 API,支援在手機上內嵌回覆。此功能允許使用者從通知欄快速回應,而不必造訪您的應用程式。
+</p>
+
+<p>
+  Android N 也允許您將類似的通知結合成單一通知。
+Android N 使用現有的 {@link
+  android.support.v4.app.NotificationCompat.Builder#setGroup
+  NotificationCompat.Builder.setGroup()} 方法來實現此目標。使用者能擴充每個通知,並可個別從通知欄執行動作,例如回覆和關閉每一個通知。
+
+
+</p>
+
+<p>最後,Android N 還新增 API 讓您在應用程式的自訂通知檢視中利用系統的裝飾。
+這些 API 可協助確保通知檢視和標準範本的呈現方式一致。
+
+</p>
+
+<p>本文件將強調說明一些重要變更,您應該在應用程式中使用新的通知功能時納入考量。
+</p>
+
+<h2 id="direct">直接回覆</h2>
+
+<p>使用 Android N 中的直接回覆功能,使用者可直接在通知介面內快速回應文字訊息或更新工作清單。
+
+在手持式裝置上,內嵌回覆動作看起來就像是通知附加的額外按鈕。
+當使用者透過鍵盤回覆時,系統會在您為通知動作指定的意圖附加文字回應,然後將意圖傳送給您的手持裝置應用程式。
+
+
+
+
+
+<img id="fig-reply-button" src="{@docRoot}preview/images/inline-reply.png" srcset="{@docRoot}preview/images/inline-reply.png 1x,
+  {@docRoot}preview/images/inline-reply_2x.png 2x" width="400">
+<p class="img-caption">
+  <strong>圖 1.</strong> Android N 新增「回覆」<strong></strong>
+  操作按鈕.
+</p>
+
+<h3>新增內嵌回覆動作</h3>
+
+<p>建立支援直接回覆的通知動作:
+</p>
+
+<ol>
+<li>建立您可以新增至通知動作的 {@link android.support.v4.app.RemoteInput.Builder}
+  實例。
+此類別的建構函式接受字串,系統可當成文字輸入的金鑰使用。
+稍後,您的手持裝置應用程式會使用該金鑰,擷取輸入的文字。
+
+
+<pre>
+// Key for the string that's delivered in the action's intent
+private static final String KEY_TEXT_REPLY = "key_text_reply";
+String replyLabel = getResources().getString(R.string.reply_label);
+RemoteInput remoteInput = new RemoteInput.Builder(KEY_TEXT_REPLY)
+        .setLabel(replyLabel)
+        .build();
+</pre>
+</li>
+<li>使用 <code>addRemoteInput()</code> 將 {@link android.support.v4.app.RemoteInput}
+ 物件附加到動作。
+
+<pre>
+// Create the reply action and add the remote input
+Notification.Action action =
+        new Notification.Action.Builder(R.drawable.ic_reply_icon,
+                getString(R.string.label), replyPendingIntent)
+                .addRemoteInput(remoteInput)
+                .build();
+</pre>
+</li>
+
+<li>將動作套用到通知並發出通知。
+
+<pre>
+// Build the notification and add the action
+Notification notification =
+        new Notification.Builder(mContext)
+                .setSmallIcon(R.drawable.ic_message)
+                .setContentTitle(getString(R.string.title))
+                .setContentText(getString(R.string.content))
+                .addAction(action))
+                .build();
+
+// Issue the notification
+NotificationManager notificationManager =
+        NotificationManager.from(mContext);
+notificationManager.notify(notificationId, notification);
+
+</pre>
+</li>
+
+</ol>
+
+
+<p> 當使用者觸發通知動作時,系統會提示使用者輸入回應。
+ </p>
+
+<img id="fig-user-input" src="{@docRoot}preview/images/inline-type-reply.png" srcset="{@docRoot}preview/images/inline-type-reply.png 1x,
+    {@docRoot}preview/images/inline-type-reply_2x.png 2x" width="300">
+<p class="img-caption">
+  <strong>圖 2.</strong> 使用者從通知欄輸入文字。
+</p>
+
+<h3>從內嵌回覆擷取使用者輸入</h3>
+
+<p>從您在回覆動作的意圖中所宣告動作的通知介面接收使用者輸入:
+</p>
+<ol>
+<li> 透過將通知動作的意圖傳遞為輸入參數,來呼叫 {@link android.support.v4.app.RemoteInput#getResultsFromIntent
+  getResultsFromIntent()}。
+這個方法會傳回包含文字回應的 {@link android.os.Bundle}。
+
+</li>
+
+<pre>
+Bundle remoteInput = RemoteInput.getResultsFromIntent(intent);
+</pre>
+
+<li>使用 (提供給 {@link
+  android.support.v4.app.RemoteInput.Builder} 建構函式的) 結果金鑰查詢組合。
+</li>
+</ol>
+
+<p>下列程式碼片段說明方法如何從組合中擷取輸入文字:
+</p>
+
+<pre>
+// Obtain the intent that started this activity by calling
+// Activity.getIntent() and pass it into this method to
+// get the associated string.
+
+private CharSequence getMessageText(Intent intent) {
+    Bundle remoteInput = RemoteInput.getResultsFromIntent(intent);
+    if (remoteInput != null) {
+            return remoteInput.getCharSequence(KEY_TEXT_REPLY);
+            }
+    return null;
+ }
+</pre>
+
+<p>應用程式可以套用邏輯,決定擷取文字時要採取的動作。對於互動式應用程式 (像是聊天),要在通知本身提供更多內容 (例如,多行聊天歷程記錄,包括使用者自己的訊息),使用者才能適當回應。當使用者透過 {@link android.support.v4.app.RemoteInput} 回應時,請使用 {@code setRemoteInputHistory()}
+ 方法在回覆歷程記錄中包括文字。
+
+
+
+
+
+</p>
+
+<h2 id="bundle">整合式通知</h2>
+
+<p>Android N 提供開發人員呈現通知佇列的全新方式:
+ <i>整合式通知</i>。這類似於 Android Wear
+  中的<a href="{@docRoot}training/wearables/notifications/stacks.html">通知堆疊</a>。
+例如,若您的應用程式會為接收的訊息建立通知,收到多個訊息時,會將通知結合成單一群組。
+
+您可以使用現有的 {@link android.support.v4.app.NotificationCompat.Builder#setGroup
+Builder.setGroup()} 方法,結合類似的通知。
+</p>
+
+<p>
+  通知群組會對其中所含的通知強制施行階層。
+  階層的最上方是上層通知,顯示該群組的摘要資訊。
+使用者可以逐漸擴充通知群組,而系統會在使用者更深入探查時顯示更多資訊。
+
+當使用者擴充組合時,系統會為所有子通知揭露更多資訊。當使用者擴充當中的其中一個通知時,系統會顯示該通知的所有內容。
+
+
+</p>
+
+<img id="fig-bundles" src="{@docRoot}preview/images/bundles.png" srcset="{@docRoot}preview/images/bundles.png 1x,
+          {@docRoot}preview/images/bundles_2x.png 2x" width="300">
+<p class="img-caption">
+  <strong>圖 3.</strong> 使用者可以逐漸擴充通知群組。
+
+</p>
+
+<p>若要了解如何將通知新增至群組,請參閱<a href="{@docRoot}training/wearables/notifications/stacks.html#AddGroup">將每個通知新增至群組</a>。
+
+</p>
+
+
+<h3 id="best-practices">整合式通知最佳做法</h3>
+<p>本節提供使用通知群組時的指導方針,而不是舊版 Android 平台可用的 {@link android.app.Notification.InboxStyle InboxStyle}
+通知。
+
+</p>
+
+<h3>使用整合式通知的時機</h3>
+
+<p>只有當您的使用案例與下列條件全部相符時,才應該使用通知群組:
+</p>
+
+<ul>
+  <li>子通知是完整通知,也能個別顯示,而不需要群組摘要。
+</li>
+  <li>讓子通知個別出現有其優點。例如:
+
+  </li>
+  <ul>
+    <li>能以特定動作來對每個子通知執行動作。</li>
+    <li>可讓使用者想讀取的子通知能有更多資訊。</li>
+  </ul>
+</ul>
+
+<p>良好的通知群組使用案例範例包括:顯示一連串傳入訊息的訊息傳送應用程式,或顯示一系列所接收電子郵件清單的電子郵件應用程式。
+
+</p>
+
+<p>
+建議使用的單一通知案例範例包括:來自單人的個別訊息,或以清單呈現單行的文字項目。
+
+您可以使用
+({@link android.app.Notification.InboxStyle InboxStyle} 或
+{@link android.app.Notification.BigTextStyle BigTextStyle}) 來完成。
+
+</p>
+
+<h3 id ="post">顯示整合式通知</h3>
+
+<p>
+  應用程式應一律張貼群組摘要,即使群組當中只包含單一子項。
+如果只包含單一通知,系統會抑制摘要,並直接顯示子通知。
+這可確保當使用者滑動離開群組子項時,系統能提供一致的體驗。
+
+
+</p>
+
+<p class="note">
+  <strong>注意:</strong>本版 Android N 還不會抑制包含單一子通知的通知群組摘要。
+更新的 Android N 版本才會新增此功能。
+
+</p>
+
+<h3>預覽通知</h3>
+
+<p>雖然系統通常會將子通知顯示為群組,但您可以設定子通知,暫時顯示為<a href="{@docRoot}guide/topics/ui/notifiers/notifications.html#Heads-up">抬頭通知</a>
+。
+
+此功能允許立即存取最新的子通知和與它相關的動作,因此特別實用。
+
+</p>
+
+
+<h3>回溯相容性</h3>
+
+<p>
+  自從 Android 5.0 (API 層級 21) 支援 Android Wear 裝置以來,通知群組與遠端輸入都是 {@link
+  android.app.Notification} API 的一部分。
+如果您已使用這些 API 建置通知,您必須採取的動作只有確認應用程式行為符合上述的指導方針,以及考慮實作 {@code
+  setRemoteInputHistory()}。
+
+
+</p>
+
+<p>
+  為了支援回溯相容性,相同的 API 可與支援程式庫的 {@link android.support.v4.app.NotificationCompat}
+ 類別搭配使用,讓您建置能在舊版 Android 上運作的通知。
+
+在手持裝置與平板電腦上,使用者只會看到摘要通知,應用程式應仍要為群組的完整資訊內容提供收件匣樣式或同等的通知呈現方式。
+
+雖然 Android
+  Wear 裝置即使在較舊的平台層級上,也允許使用者查看所有子通知,但不論 API 層級為何,您都應該建置子通知。
+
+
+</p>
+
+<h2 id="custom"> 自訂檢視</h2>
+<p>從 Android N 開始,您可以自訂通知檢視,也仍然可以取得系統裝飾,例如通知標題、動作及可擴充的版面配置。
+
+</p>
+
+<p>若要啟用此功能,Android N 新增下列 API 供您設定自訂檢視的樣式:
+</p>
+
+<dl>
+<dt>
+{@code DecoratedCustomViewStyle()}</dt>
+<dd> 設定媒體通知以外的通知樣式。
+</dd>
+<dt>
+{@code DecoratedMediaCustomViewStyle()}</dt>
+<dd> 設定媒體通知樣式</dd>
+</dl>
+
+<p>若要使用這個新 API,請呼叫 {@code setStyle()} 方法,再傳遞給想要的自訂檢視樣式。
+</p>
+
+<p>此程式碼片段顯示如何使用
+{@code DecoratedCustomViewStyle()} 方法,建構自訂通知物件。</p>
+
+<pre>
+Notification noti = new Notification.Builder()
+           .setSmallIcon(R.drawable.ic_stat_player)
+           .setLargeIcon(albumArtBitmap))
+           .setCustomContentView(contentView);
+           .setStyle(new Notification.DecoratedCustomViewStyle())
+           .build();
+
+</pre>
diff --git a/docs/html-intl/intl/zh-tw/preview/features/picture-in-picture.jd b/docs/html-intl/intl/zh-tw/preview/features/picture-in-picture.jd
new file mode 100644
index 0000000..b0ee8b8
--- /dev/null
+++ b/docs/html-intl/intl/zh-tw/preview/features/picture-in-picture.jd
@@ -0,0 +1,186 @@
+page.title=子母畫面
+page.keywords=preview,sdk,PIP,Picture-in-picture
+page.tags=androidn
+
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+
+<h2>此文件內容</h2>
+<ol>
+  <li><a href="#declaring">宣告您的活動支援子母畫面</a>
+</li>
+  <li><a href="#pip_button">將您的活動切換到子母畫面</a>
+</li>
+  <li><a href="#handling_ui">處理子母畫面模式中的 UI</a>
+</li>
+  <li><a href="#continuing_playback">在子母畫面模式中繼續播放影片</a>
+</li>
+  <li><a href="#best">最佳做法</a></li>
+</ol>
+
+<h2>另請參閱</h2>
+<ol>
+  <li><a href="{@docRoot}preview/features/multi-window.html">多視窗支援</a>
+</li>
+</ol>
+
+</div>
+</div>
+
+<p>在 Android N 中,Android TV 使用者現在可以在應用程式內瀏覽時,同時觀賞螢幕角色中釘選視窗中的影片。
+
+子母畫面 (PIP) 模式讓應用程式在釘選視窗中執行影片活動,同時讓另一個活動在背景持續進行。
+
+PIP 視窗讓使用者在使用您的應用程式時同時多工處理,協助提高使用者的生產力。
+</p>
+
+<p>您的應用程式可決定何時觸發 PIP 模式。以下是一些何時進入 PIP 模式的範例:
+</p>
+
+<ul>
+<li>當使用者從影片返回瀏覽其他內容,您的應用程式可以將影片移入 PIP 模式。
+</li>
+<li>當使用者觀看到影片內容的結尾時,您的應用程式可將影片切換到 PIP 模式。
+主畫面顯示系列中下一集的預告或摘要資訊時。
+</li>
+<li>您的應用程式可以為使用者提供一個觀賞影片時佇列其他內容的方式。
+當主畫面顯示內容選擇活動時,影片繼續在 PIP 模式中播放。
+</li>
+</ul>
+
+<p>PIP 視窗為 240x135 dp,在系統所選的螢幕上四個角落之一的最上層顯示。
+使用者只要按住遙控器上的 <b>Home</b> 按鈕,即可帶出 PIP 選單,讓他們將 PIP 視窗切換成全螢幕或關閉 PIP 視窗。
+
+如果另一個影片開始在主畫面上播放,會自動關閉 PIP 視窗。
+
+使用者也可以透過 Recents 關閉 PIP 視窗。</p>
+
+<img src="{@docRoot}preview/images/pip-active.png" />
+<p class="img-caption"><strong>圖 1.</strong> 當使用者瀏覽主畫面上的內容時,可看到螢幕角落的子母畫面中的影片。
+
+</p>
+
+<p>PIP 利用 Android N 中提供的多視窗 API 來提供釘選影片疊加層視窗。
+若要將 PIP 新增到您的應用程式,您需要註冊支援 PIP 的活動,在需要時將活動切換到 PIP 模式,以及確定活動在 PIP 模式時會隱藏 UI 元素且影片繼續播放。
+
+
+</p>
+
+<h2 id="declaring">宣告您的活動支援子母畫面</h2>
+
+<p>根據預設,系統不會自動為應用程式支援 PIP。如果您想要應用程式 PIP,請將
+<code>android:supportsPictureInPicture</code> 和
+<code>android:resizeableActivity</code> 設定成 <code>true</code>,在宣示說明中註冊影片活動。
+
+另外也請指定您的活動處理版面配置設定變更,如此一來,在 PIP 模式轉換期間版面配置變更時,才不會重新啟動您的活動。
+
+</p>
+
+<pre>
+&lt;activity android:name="VideoActivity"
+    android:resizeableActivity="true"
+    android:supportsPictureInPicture="true"
+    android:configChanges=
+        "screenSize|smallestScreenSize|screenLayout|orientation"
+    ...
+</pre>
+
+<p>註冊您的活動時,請記住在 PIP 模式中,您的活動會顯示在電視螢幕上小的疊加層視窗中。
+顯示最少 UI 的影片播放活動可提供最佳的使用者體驗。
+包含小型 UI 元素的活動在切換到 PIP 模式時無法提供出色的使用者體驗,因為使用者在 PIP 視窗中看不到 UI 元素的詳細資訊。
+
+
+</p>
+
+<h2 id="pip_button">將您的活動切換到子母畫面</h2>
+
+您需要將活動切換到 PIP 模式時,請呼叫
+<code>Activity.enterPictureInPicture()</code>。下列範例會在使用者選取媒體控制列上的專用 PIP 按鈕時切換到 PIP 模式:
+
+</p>
+
+<pre>
+&#64;Override
+public void onActionClicked(Action action) {
+    if (action.getId() == R.id.lb_control_picture_in_picture) {
+        getActivity().enterPictureInPicture();
+        return;
+    }
+    ...
+</pre>
+
+<p>將 PIP 按鈕新增到媒體控制列,可讓您的使用者在控制影片播放時輕鬆地切換到 PIP 模式。
+</p>
+
+<img src="{@docRoot}preview/images/pip-button.png" />
+<p class="img-caption"><strong>圖 1.</strong> 媒體控制列上的子母畫面按鈕。
+</p>
+
+<p>Android N 包含新的
+<code>PlaybackControlsRow.PictureInPictureAction</code> 類別,它可定義控制列 PIP 動作和使用 PIP 圖示。
+</p>
+
+<h2 id="handling_ui">處理子母畫面模式中的 UI</h2>
+
+<p>當您的活動進入 PIP 模式時,您的活動應該只播放影片。
+在您的活動進入 PIP 時移除 UI 元素,並在您的活動重新進入全螢幕時還原這些元素。覆寫 <code>Activity.onPictureInPictureChanged()</code> 或
+<code>Fragment.onPictureInPictureChanged()</code> 並依需要啟用或停用 UI 元素,例如:
+
+
+</p>
+
+<pre>
+&#64;Override
+public void onPictureInPictureChanged(boolean inPictureInPicture) {
+    if (inPictureInPicture) {
+        // Hide the controls in picture-in-picture mode.
+        ...
+    } else {
+        // Restore the playback UI based on the playback status.
+        ...
+    }
+}
+</pre>
+
+<h2 id="continuing_playback">在子母畫面模式中繼續播放影片
+</h2>
+
+<p>當您的活動切換到 PIP 時,系統會將活動視為暫停狀態並呼叫您活動的 <code>onPause()</code> 方法。
+影片播放不應該暫停,而且活動因為 PIP 模式而暫停時,影片應該繼續播放。
+
+查看您活動的 
+<code>onPause()</code> 方法中的 PIP 並適當地處理播放,例如:
+</p>
+
+<pre>
+&#64;Override
+public void onPause() {
+    // If called due to PIP, do not pause playback
+    if (inPictureInPicture()) {
+        // Continue playback
+        ...
+    }
+    // If paused but not in PIP, pause playback if necessary
+    ...
+}
+</pre>
+
+<p>當您的活動從 PIP 模式切換回全螢幕模式時,系統會繼續您的活動並呼叫您的 <code>onResume()</code>方法。
+</p>
+
+<h2 id="best">最佳做法</h2>
+
+<p>PIP 主要針對播放全螢幕影片的活動。將您的活動切換到 PIP 模式時,避免顯示影片內容以外的任何項目。追蹤當您的活動進入 PIP 模式時隱藏 UI 元素,如<a href="#handling_ui">處理子母畫面模式中的 UI</a> 中所述。
+
+
+</p>
+
+<p>因為 PIP 視窗會在螢幕角落上以浮動視窗顯示,所以您應該避免在主畫面上 PIP 視窗可能遮蓋的任何地方顯示重要資訊。
+
+</p>
+
+<p>當活動處於 PIP 模式時,預設它不會取得輸入焦點。若要在處於 PIP 模式時接收輸入事件,請使用
+<code>MediaSession.setMediaButtonReceiver()</code>。
+</p>
diff --git a/docs/html-intl/intl/zh-tw/preview/features/scoped-folder-access.jd b/docs/html-intl/intl/zh-tw/preview/features/scoped-folder-access.jd
new file mode 100644
index 0000000..0a530d2
--- /dev/null
+++ b/docs/html-intl/intl/zh-tw/preview/features/scoped-folder-access.jd
@@ -0,0 +1,124 @@
+page.title=限定範圍目錄存取
+page.keywords=preview,sdk,scoped directory access
+page.tags=androidn
+
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+  <h2>此文件內容</h2>
+  <ol>
+    <li><a href="#accessing">存取外部儲存空間目錄</a></li>
+    <li><a href="#removable">存取抽取式媒體上的目錄</a></li>
+    <li><a href="#best">最佳做法</a></li>
+  </ol>
+</div>
+</div>
+
+<p>應用程式 (例如,相片應用程式) 通常只需要存取外部儲存空間中的特定目錄,例如 <code>Pictures</code> 目錄。
+目前用來存取外部儲存空間的方式並非設計來輕鬆地為這些類型的應用程式提供已設定目標的目錄存取。
+
+例如:</p>
+
+<ul>
+<li>在您的宣示說明中要求 {@link android.Manifest.permission#READ_EXTERNAL_STORAGE} 或 {@link android.Manifest.permission#WRITE_EXTERNAL_STORAGE} 可允許存取外部儲存空間ac上的所有公用目錄,但這可能超過您應用程式所需的存取權。
+
+
+</li>
+<li>使用<a href="{@docRoot}guide/topics/providers/document-provider.html">儲存空間存取架構</a>通常會使得您的使用者透過系統 UI 挑選目錄,這在您的應用程式一律存取相同外部目錄的情況下是不必要的。
+
+
+
+</li>
+</ul>
+
+<p>Android N 提供新的簡化 API,可用來存取常用外部儲存空間目錄。
+ </p>
+
+<h2 id="accessing">存取外部儲存空間目錄</h2>
+
+<p>使用 <code>StorageManager</code> 類別來取得適當的 <code>StorageVolume</code> 實例。
+接著,透過呼叫該實例的 <code>StorageVolume.createAccessIntent()</code> 方法以建立意圖。使用此意圖來存取外部儲存空間目錄。
+
+若要取得所有可用的磁碟區 (包括抽取式媒體磁碟區) 清單,請使用 <code>StorageManager.getVolumesList()</code>。
+
+</p>
+
+<p>下列程式碼片段是一個範例,它說明如何開啟主要共用儲存空間中的 <code>Pictures</code> 目錄:
+</p>
+
+<pre>
+StorageManager sm = (StorageManager)getSystemService(Context.STORAGE_SERVICE);
+StorageVolume volume = sm.getPrimaryVolume();
+Intent intent = volume.createAccessIntent(Environment.DIRECTORY_PICTURES);
+startActivityForResult(intent, request_code);
+</pre>
+
+<p>系統會嘗試授予對外部目錄的存取權,並在需要時使用簡化的 UI 向使用者確認存取權:
+</p>
+
+<img src="{@docRoot}preview/images/scoped-folder-access-framed.png" srcset="{@docRoot}preview/images/scoped-folder-access-framed.png 1x,
+{@docRoot}preview/images/scoped-folder-access-framed_2x.png 2x" />
+<p class="img-caption"><strong>圖 1.</strong> 應用程式要求對 [圖片] 目錄的存取權。
+</p>
+
+<p>若使用者授予存取權,系統會呼叫您的 <code>onActivityResult()</code> 覆寫並傳回 <code>Activity.RESULT_OK</code> 的結果代碼,以及包含 URI 的意圖資料。
+
+使用提供的 URI 來存取目錄資訊,這類似於使用<a href="{@docRoot}guide/topics/providers/document-provider.html">儲存空間存取架構</a>所傳回的 URI。
+
+
+
+</p>
+
+<p>若使用者未授予存取權,系統會呼叫您的 <code>onActivityResult()</code> 覆寫並傳回 <code>Activity.RESULT_CANCELED</code> 的結果代碼,以及 Null 意圖資料。
+
+</p>
+
+<p class="note"><b>注意</b>:取得對特定外部目錄的存取權也會取得對該目錄之子目錄的存取權。
+</p>
+
+<h2 id="removable">存取抽取式媒體上的目錄</h2>
+
+<p>若要使用「限定範圍目錄存取」來存取抽取式媒體上的目錄,請先新增會接聽 {@link android.os.Environment#MEDIA_MOUNTED} 通知的 {@link android.content.BroadcastReceiver},例如:
+
+</p>
+
+<pre>
+&lt;receiver
+    android:name=".MediaMountedReceiver"
+    android:enabled="true"
+    android:exported="true" &gt;
+    &lt;intent-filter&gt;
+        &lt;action android:name="android.intent.action.MEDIA_MOUNTED" /&gt;
+        &lt;data android:scheme="file" /&gt;
+    &lt;/intent-filter&gt;
+&lt;/receiver&gt;
+</pre>
+
+<p>當使用者掛接抽取式媒體 (例如 SD 卡) 時,系統會傳送 {@link android.os.Environment#MEDIA_MOUNTED} 通知。
+此通知會在意圖資料中提供 <code>StorageVolume</code> 物件,讓您用來存取抽取式媒體上的目錄。
+
+下列範例會存取抽取式媒體上的 <code>Pictures</code> 目錄:
+</p>
+
+<pre>
+// BroadcastReceiver has already cached the MEDIA_MOUNTED
+// notification Intent in mediaMountedIntent
+StorageVolume volume = (StorageVolume)
+    mediaMountedIntent.getParcelableExtra(StorageVolume.EXTRA_STORAGE_VOLUME);
+volume.createAccessIntent(Environment.DIRECTORY_PICTURES);
+startActivityForResult(intent, request_code);
+</pre>
+
+<h2 id="best">最佳做法</h2>
+
+<p>如果可能,請將外部目錄存取 URI 設定為持續性,這樣您就不需要重複地要求使用者授予存取權。
+一旦使用者授予存取權,請使用目錄存取 URI 呼叫 <code>getContentResolver().takePersistableUriPermssion()</code>。
+
+系統會將該 URI 設定為持續性,而且後續存取要求將會傳回 <code>RESULT_OK</code>,而且不會為使用者顯示確認 UI。
+
+</p>
+
+<p>若使用者拒絕對外部目錄的存取權,請勿立刻又要求存取權。
+重複堅持取得存取權會導致極差的使用者體驗。
+</p>
diff --git a/docs/html-intl/intl/zh-tw/preview/features/security-config.jd b/docs/html-intl/intl/zh-tw/preview/features/security-config.jd
new file mode 100644
index 0000000..a74712a
--- /dev/null
+++ b/docs/html-intl/intl/zh-tw/preview/features/security-config.jd
@@ -0,0 +1,744 @@
+page.title=網路安全性設定
+page.keywords=preview,security,network
+
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+
+<h2>此文件內容</h2>
+<ol>
+  <li><a href="#manifest">新增安全性設定檔</a></li>
+  <li><a href="#CustomTrust">自訂信任的 CA</a>
+      <ol>
+      <li><a href="#ConfigCustom">設定信任的自訂 CA</a></li>
+      <li><a href="#LimitingCas">限制信任的 CA 組</a></li>
+      <li><a href="#TrustingAdditionalCas">信任其他 CA</a></li>
+      </ol>
+  </li>
+  <li><a href="#TrustingDebugCa">僅偵錯 CA</a></li>
+  <li><a href="#UsesCleartextTraffic">退出明碼流量</a></li>
+  <li><a href="#CertificatePinning">關聯憑證</a></li>
+  <li><a href="#ConfigInheritance">設定繼承行為</a></li>
+  <li><a href="#FileFormat">設定檔案格式</a></li>
+</ol>
+</div>
+</div>
+
+
+<p>
+  Android N 包括網路安全性設定功能,讓應用程式在安全的宣告式設定檔中即可自訂網路安全性設定,而不必修改應用程式的程式碼。
+
+這些設定可以針對特定網域以及針對特定應用程式來設定。
+此功能的主要能力如下:
+
+</p>
+
+<ul>
+  <li>
+    <b>自訂信任錨點:</b>為應用程式的安全連線自訂信任的憑證授權單位 (CA)。
+例如,信任特定的自我簽署憑證,或限制應用程式信任的一組公用 CA。
+
+
+  </li>
+
+  <li>
+    <b>僅偵錯覆寫:</b>在應用程式中安全地為安全連線進行偵錯,而不會增加已安裝應用程式者的風險。
+
+  </li>
+
+  <li>
+    <b>退出明碼流量:</b>保護應用程式不受意外使用明碼流量危害。
+
+  </li>
+
+  <li>
+    <b>憑證關聯:</b>限制應用程式的安全連線只用特定憑證。
+
+  </li>
+</ul>
+
+
+<h2 id="manifest">新增安全性設定檔</h2>
+
+<p>
+  網路安全性設定功能會使用 XML 檔案,而您為應用程式指定的設定就在此。
+您必須在應用程式的宣示說明包括一個指向這個檔案的項目。
+以下節錄自宣示說明的程式碼,示範如何建立此項目:
+
+</p>
+
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?&gt;
+...
+&lt;app ...&gt;
+    &lt;meta-data android:name="android.security.net.config"
+               android:resource="@xml/network_security_config" /&gt;
+    ...
+&lt;/app&gt;
+</pre>
+
+<h2 id="CustomTrust">自訂信任的 CA</h2>
+
+<p>
+  應用程式會想要信任自訂的一組 CA,而不是平台預設的 CA。
+最常見的原因如下:
+</p>
+
+<ul>
+  <li>使用 (由內部公司 CA 等所自我簽署、發行的) 自訂憑證授權單位連線至主機。
+
+  </li>
+
+  <li>限制 CA 只用您信任的那組 CA,而不是所有人預先安裝的 CA。
+
+  </li>
+
+  <li>信任系統中所未包括的其他 CA。
+  </li>
+</ul>
+
+<p>
+  根據預設,來自所有應用程式的安全連線全都信任預先安裝的系統 CA,而目標為 API 層級 23 (Android M) 和以下版本的應用程式預設也會信任使用者新增的 CA 存放區。
+
+應用程式可以使用 {@code base-config} (針對整個應用程式自訂) 或 {@code domain-config} (針對每個網域自訂),自訂自己的連線。
+
+
+
+</p>
+
+
+<h3 id="ConfigCustom">設定自訂 CA</h3>
+
+<p>
+  假設您想要連線的主機使用自我簽署的 SSL 憑證,或要連線的主機使用 SSL 憑證是由您信任的非公用 CA 所發行,例如您公司的內部 CA。
+
+
+</p>
+
+<p>
+  <code>res/xml/network_security_config.xml</code>:
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?&gt;
+&lt;network-security-config&gt;
+    &lt;domain-config&gt;
+        &lt;domain includeSubdomains="true"&gt;example.com&lt;/domain&gt;
+        &lt;trust-anchors&gt;
+            &lt;certificates src="@raw/my_ca"/&gt;
+        &lt;/trust-anchors&gt;
+    &lt;/domain-config&gt;
+&lt;/network-security-config&gt;
+</pre>
+</p>
+
+<p>
+  將 PEM 或 DER 格式的自我簽署或非公用 CA 憑證新增至
+  {@code res/raw/my_ca}。
+</p>
+
+
+<h3 id="LimitingCas">限制信任的 CA 組</h3>
+
+<p>
+  應用程式若不想要信任系統所信任的所有 CA,可以自行指定一組範圍較小的信任 CA。
+如此可以保護應用程式,不受任何其他 CA 所發行的詐騙憑證危害。
+
+</p>
+
+<p>
+  限制信任的 CA 組,其設定類似於<a href="#TrustingACustomCa">信任自訂 CA</a> (針對特定網域),只不過多個 CA 都是資源所提供。
+
+</p>
+
+<p>
+<code>res/xml/network_security_config.xml</code>:
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?&gt;
+&lt;network-security-config&gt;
+    &lt;domain-config&gt;
+        &lt;domain includeSubdomains="true"&gt;secure.example.com&lt;/domain&gt;
+        &lt;domain includeSubdomains="true"&gt;cdn.example.com&lt;/domain&gt;
+        &lt;trust-anchors&gt;
+            &lt;certificates src="@raw/trusted_roots"/&gt;
+        &lt;/trust-anchors&gt;
+    &lt;/domain-config&gt;
+&lt;/network-security-config&gt;
+</pre>
+</p>
+
+<p>
+  將 PEM 或 DER 格式的信任 CA 新增至 {@code res/raw/trusted_roots}。
+  請注意,如果使用 PEM 格式,該檔案「只」能包含 PEM 資料,不能有額外的文字。<em></em>
+您還可以提供多個
+  <a href="#certificates"><code>&lt;certificates&gt;</code></a>
+元素,而不只一個。
+</p>
+
+
+<h3 id="TrustingAdditionalCas">
+  信任其他 CA
+</h3>
+
+<p>
+  應用程式會想要信任不受系統信任的其他 CA,這是因為系統尚未包括該 CA,或 CA 不符合納入 Android 系統的需求。
+
+應用程式可以為設定指定多個憑證來源,來完成此動作。
+
+
+</p>
+<p>
+<code>res/xml/network_security_config.xml</code>:
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?&gt;
+&lt;network-security-config&gt;
+    &lt;base-config&gt;
+        &lt;trust-anchors&gt;
+            &lt;certificates src="@raw/extracas"/&gt;
+            &lt;certificates src="system"/&gt;
+        &lt;/trust-anchors&gt;
+    &lt;/base-config&gt;
+&lt;/network-security-config&gt;
+</pre>
+</p>
+
+
+<h2 id="TrustingDebugCa">設定 CA 進行偵錯</h2>
+
+<p>
+  對透過 HTTPS 連線的應用程式進行偵錯時,您想要連線的本機開發伺服器並沒有生產伺服器的 SSL 憑證。
+
+若以不修改應用程式的程式碼為前提,為了支援此動作,您可以使用 {@code debug-overrides} 來指定僅偵錯 CA,「只」有在 <a href="{@docRoot}guide/topics/manifest/application-element.html#debug">
+android:debuggable</a>
+ 為 {@code true} 時才予以信任。<i></i>
+
+一般來說,IDE 和建置工具會為非發行版本自動設定此旗標。
+
+</p>
+
+<p>
+  因為應用程式商店採取的安全措施是,不接受標示為可偵錯的應用程式,所以這種方式會比條件式程式碼安全。
+
+
+</p>
+
+<p>
+<code>res/xml/network_security_config.xml</code>:
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?&gt;
+&lt;network-security-config&gt;
+    &lt;debug-overrides&gt;
+        &lt;trust-anchors&gt;
+            &lt;certificates src="@raw/debug_cas"/&gt;
+        &lt;/trust-anchors&gt;
+    &lt;/debug-overrides&gt;
+&lt;/network-security-config&gt;
+</pre>
+</p>
+
+
+<h2 id="UsesCleartextTraffic">退出明碼流量</h2>
+
+<p>
+  打算只使用安全連線連線至目的地的應用程式,可以針對那些目的地退出支援明碼 (使用未加密的 HTTP 通訊協定,而非 HTTPS)。
+
+此選項有助於避免應用程式由於外部來源 (例如,後端伺服器) 提供的 URL 中發生變更,而造成意外回復。
+
+
+  如需更多詳細資料,請參閱 {@link android.security.NetworkSecurityPolicy#isCleartextTrafficPermitted
+  NetworkSecurityPolicy.isCleartextTrafficPermitted()}。
+</p>
+
+<p>
+  例如,應用程式想要確保 的所有連線一律要透過 HTTPS 完成,以保護敏感流量不受惡意網路危害。
+
+
+</p>
+
+<p>
+<code>res/xml/network_security_config.xml</code>:
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?&gt;
+&lt;network-security-config&gt;
+    &lt;domain-config usesCleartextTraffic="false"&gt;
+        &lt;domain includeSubdomains="true"&gt;secure.example.com&lt;/domain&gt;
+    &lt;/domain-config&gt;
+&lt;/network-security-config&gt;
+</pre>
+</p>
+
+
+<h2 id="CertificatePinning">關聯憑證</h2>
+
+<p>
+  應用程式一般會信任所有預先安裝的 CA。若這類的任何 CA 意在發行詐騙憑證,應用程式會有遭受 MiTM 攻擊的風險。
+
+有些應用程式選擇透過限制所信任的 CA 組或關聯憑證,來限制可接受的憑證組。
+
+</p>
+
+<p>
+  憑證關聯的方法是,透過公用金鑰的雜湊 (X.509 憑證的 SubjectPublicKeyInfo) 來提供一組憑證。
+只有當憑證鏈至少包含一個關聯的公用金鑰時,才是有效的憑證鏈。
+
+
+</p>
+
+<p>
+  請注意,使用憑證關聯時,您務必要包括備份金鑰,這樣萬一強制您切換到新的金鑰或變更 CA (關聯到 CA 憑證或該 CA 的中繼者) 時,您的應用程式連線才不會受到影響。
+
+
+否則,您必須推出應用程式更新,才能還原連線。
+
+</p>
+
+<p>
+  此外,可為關聯設定到期時間,只要該關聯經過多久都未執行,即為到期。
+這有助於避免未經更新的應用程式發生連線問題。
+然而,針對關聯設定到期時間,會造成略過關聯。
+
+</p>
+
+<p>
+<code>res/xml/network_security_config.xml</code>:
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?&gt;
+&lt;network-security-config&gt;
+    &lt;domain-config&gt;
+        &lt;domain includeSubdomains="true"&gt;example.com&lt;/domain&gt;
+        &lt;pin-set expiration="2018-01-01"&gt;
+            &lt;pin digest="SHA-256"&gt;7HIpactkIAq2Y49orFOOQKurWxmmSFZhBCoQYcRhJ3Y=&lt;/pin&gt;
+            &lt;!-- backup pin --&gt
+            &lt;pin digest="SHA-256"&gt;fwza0LRMXouZHRC8Ei+4PyuldPDcf3UKgO/04cDM1oE=&lt;/pin&gt;
+    &lt;/domain-config&gt;
+&lt;/network-security-config&gt;
+</pre>
+</p>
+
+
+<h2 id="ConfigInheritance">設定繼承行為</h2>
+
+<p>
+  繼承的值都未設定在特定設定中。此行為允許有更複雜的設定,同時保持設定檔讓人看得懂。
+
+</p>
+
+<p>
+  如果值未設定在特定項目中時,就會使用下一個更一般項目的值。
+如為巢狀結構,就會從上層 {@code domain-config} 取得未在 {@code domain-config} 中設定的值,或非巢狀時,則會從 {@code
+  base-config} 取得值。
+未在 {@code base-config} 中設定的值會使用平台的預設值。
+
+</p>
+
+<p>
+  例如,假設所有連至 {@code
+  example.com} 子網域的連線都必須使用一組自訂 CA。此外,允許明碼流量送往這些網域,但連線到 {@code
+  secure.example.com} 時「除外」。
+<em></em>在 {@code example.com} 的設定內以巢狀方式排列 {@code
+  secure.example.com} 的設定,就不需要重複
+  {@code trust-anchors}。
+</p>
+
+<p>
+<code>res/xml/network_security_config.xml</code>:
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?&gt;
+&lt;network-security-config&gt;
+    &lt;domain-config&gt;
+        &lt;domain includeSubdomains="true"&gt;example.com&lt;/domain&gt;
+        &lt;trust-anchors&gt;
+            &lt;certificates src="@raw/my_ca"/&gt;
+        &lt;/trust-anchors&gt;
+        &lt;domain-config cleartextTrafficPermitted="false"&gt;
+            &lt;domain includeSubdomains="true"&gt;secure.example.com&lt;/domain&gt;
+        &lt;/domain-config&gt;
+    &lt;/domain-config&gt;
+&lt;/network-security-config&gt;
+</pre>
+</p>
+
+
+<h2 id="FileFormat">設定檔案格式</h2>
+
+<p>
+  網路安全性設定功能會使用 XML 檔案格式。
+  下列程式碼範例顯示檔案的整體結構:
+</p>
+
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?&gt;
+&lt;network-security-config&gt;
+    &lt;base-config&gt;
+        &lt;trust-anchors&gt;
+            &lt;certificates src="..."/&gt;
+            ...
+        &lt;/trust-anchors&gt;
+    &lt;/base-config&gt;
+
+    &lt;domain-config&gt;
+        &lt;domain&gt;android.com&lt;/domain&gt;
+        ...
+        &lt;trust-anchors&gt;
+            &lt;certificates src="..."/&gt;
+            ...
+        &lt;/trust-anchors&gt;
+        &lt;pin-set&gt;
+            &lt;pin digest="..."&gt;...&lt;/pin&gt;
+            ...
+        &lt;/pin-set&gt;
+    &lt;/domain-config&gt;
+    ...
+    &lt;debug-overrides&gt;
+        &lt;trust-anchors&gt;
+            &lt;certificates src="..."/&gt;
+            ...
+        &lt;/trust-anchors&gt;
+    &lt;/debug-overrides&gt;
+&lt;/network-security-config&gt;
+</pre>
+
+<p>
+  下列各區段描述檔案格式的語法與其他詳細資料。
+
+</p>
+
+<h3 id="network-security-config">
+  &lt;network-security-config&gt;
+</h3>
+
+<dl class="xml">
+  <dt>
+    可以包含:
+  </dt>
+
+  <dd>
+    0 或 1 個 <code><a href="#base-config">&lt;base-config&gt;</a></code><br>
+    任何數目的 <code><a href=
+    "#domain-config">&lt;domain-config&gt;</a></code><br>
+    0 或 1 個 <code><a href="#debug-overrides">&lt;debug-overrides&gt;</a></code>
+  </dd>
+</dl>
+
+<h3 id="base-config">
+  &lt;base-config&gt;
+</h3>
+
+<dl class="xml">
+  <dt>
+    語法:
+  </dt>
+</dl>
+
+<pre class="stx">
+&lt;base-config <a href=
+"#usesCleartextTraffic">usesCleartextTraffic</a>=["true" | "false"]&gt;
+    ...
+&lt;/base-config&gt;
+</pre>
+<dl class="xml">
+  <dt>
+    可以包含:
+  </dt>
+
+  <dd>
+    <code><a href="#trust-anchors">&lt;trust-anchors&gt;</a></code>
+  </dd>
+
+  <dt>
+    描述:
+  </dt>
+
+  <dd>
+    連線到 <a href="#domain-config"><code>domain-config</code></a> 所未涵蓋的目的地時使用的預設設定。
+
+
+<p>
+  任何未設定的值都會使用平台預設值。目標為 API 層級 24 和更新版本的應用程式預設設定:
+
+</p>
+
+<pre>
+&lt;base-config usesCleartextTraffic="true"&gt;
+    &lt;trust-anchors&gt;
+        &lt;certificates src="system" /&gt;
+    &lt;/trust-anchors&gt;
+&lt;/base-config&gt;
+</pre>
+目標為 API 層級 23 和以下版本的應用程式預設設定:
+<pre>
+&lt;base-config usesCleartextTraffic="true"&gt;
+    &lt;trust-anchors&gt;
+        &lt;certificates src="system" /&gt;
+        &lt;certificates src="user" /&gt;
+    &lt;/trust-anchors&gt;
+&lt;/base-config&gt;
+</pre>
+
+  </dd>
+</dl>
+
+<h3 id="domain-config">&lt;domain-config&gt;</h3>
+<dl class="xml">
+<dt>語法:</dt>
+<dd>
+<pre class="stx">&lt;domain-config <a href="#usesCleartextTraffic">usesCleartextTraffic</a>=["true" | "false"]&gt;
+    ...
+&lt;/domain-config&gt;</pre>
+</dd>
+
+<dt>可以包含:</dt>
+
+<dd>
+1 或更多個 <code><a href="#domain">&lt;domain&gt;</a></code>
+<br/>0 或 1 個 <code><a href="#trust-anchors">&lt;trust-anchors&gt;</a></code>
+<br/>0 或 1 個 <code><a href="#pin-set">&lt;pin-set&gt;</code></a>
+<br/>任何數目的巢狀 <code>&lt;domain-config&gt;</code></dd>
+
+<dt>描述</dt>
+<dd>依照 {@code domain} 元素所定義,連線至特定目的地時使用的設定。
+
+<p>請注意,如有多個 {@code domain-config} 元素涵蓋同一個目的地,則會使用含有最明確 (最長) 比對網域規則的設定。
+</p></dd>
+</dl>
+
+
+<h3 id="domain">&lt;domain&gt;</h3>
+
+<dl class="xml">
+  <dt>
+    語法:
+  </dt>
+
+  <dd>
+    <pre class="stx">
+&lt;domain includeSubdomains=["true" | "false"]&gt;example.com&lt;/domain&gt;
+</pre>
+  </dd>
+
+  <dt>
+    屬性:
+  </dt>
+
+  <dd>
+    <dl class="attr">
+      <dt>
+        {@code includeSubdomains}
+      </dt>
+
+      <dd>
+        如為 {@code "true"},表示此網域規則會比對網域和所有子網域,包括子網域的子網域在內,反之此規則只會套用到完全相符者。
+
+
+      </dd>
+    </dl>
+  </dd>
+
+  <dt>
+    描述:
+  </dt>
+</dl>
+
+<h3 id="debug-overrides">&lt;debug-overrides&gt;</h3>
+
+<dl class="xml">
+  <dt>
+    語法:
+  </dt>
+
+  <dd>
+    <pre class="stx">
+&lt;debug-overrides&gt;
+    ...
+&lt;/debug-overrides&gt;
+</pre>
+  </dd>
+
+  <dt>
+    可以包含:
+  </dt>
+
+  <dd>
+    0 或 1 個 <code><a href="#trust-anchors">&lt;trust-anchors&gt;</a></code>
+  </dd>
+
+  <dt>
+    描述:
+  </dt>
+
+  <dd>
+    當 <a href="{@docRoot}guide/topics/manifest/application-element.html#debug">android:debuggable</a>
+ 為 {@code "true"} (一般是在非發行版本由 IDE 與建置工具產生的情況下) 時所要套用的覆寫。
+{@code
+    debug-overrides} 中指定的信任錨點會新增至所有其他連線,而當伺服器的憑證鏈使用其中一個僅偵錯信任錨點時,即不會執行憑證關聯。
+
+如果 <a href="{@docRoot}guide/topics/manifest/application-element.html#debug">android:debuggable</a>
+ 為 {@code "false"},就會完全略過這個區段。
+  </dd>
+</dl>
+
+<h3 id="trust-anchors">&lt;trust-anchors&gt;</h3>
+<dl class="xml">
+  <dt>
+    語法:
+  </dt>
+
+  <dd>
+    <pre class="stx">
+&lt;trust-anchors&gt;
+...
+&lt;/trust-anchors&gt;
+</pre>
+  </dd>
+
+  <dt>
+    可以包含:
+  </dt>
+
+  <dd>
+    任何數目的 <code><a href="#certificates">&lt;certificates&gt;</a></code>
+  </dd>
+
+  <dt>
+    描述:
+  </dt>
+
+  <dd>
+    可供安全連線使用的信任錨點組。
+  </dd>
+</dl>
+
+
+<h3 id="certificates">&lt;certificates&gt;</h3>
+<dl class="xml">
+<dt>語法:</dt>
+<dd><pre class="stx">&lt;certificates src=["system" | "user" | "<i>raw resource</i>"]
+              overridePins=["true" | "false"] /&gt;
+</pre></dd>
+<dt>描述:</dt>
+<dd>可供 {@code trust-anchors} 元素使用的 X.509 憑證組。</dd>
+
+<dt>屬性:</dt>
+<dd><dl class="attr">
+<dt>{@code src}</dt>
+<dd>
+CA 憑證的來源,可以是其中一個原始資源識別碼,其指向含有 X.509 憑證的檔案。
+<ul>
+  <li>
+  憑證必須以 DER 或 PEM 格式編碼。如為 PEM 憑證,檔案中「不可」包含非 PEM 的額外資料,例如註解。
+<em></em>
+
+  </li>
+
+  <li>{@code "system"} 代表預先安裝的系統 CA 憑證
+  </li>
+
+  <li>{@code "user"} 代表使用者新增的 CA 憑證
+  </li>
+</ul>
+</dd>
+
+<dt>{@code overridePins}</dt>
+<dd>
+  <p>
+    指定來自此來源的 CA 是否要略過憑證關聯。如為 {@code
+    "true"},憑證鏈的鏈結若經過此來源的其中一個 CA,就不會執行關聯。
+這對偵錯 CA 會很實用,或支援讓使用者 MiTM 應用程式的安全流量。
+
+  </p>
+
+  <p>
+    預設為 {@code "false"},除非您在 {@code debug-overrides}
+ 元素中指定,而那種情況的預設為 {@code "true"}。
+  </p>
+</dd>
+</dl>
+</dd>
+
+
+<h3 id="pin-set">&lt;pin-set&gt;</h3>
+
+<dl class="xml">
+  <dt>
+    語法:
+  </dt>
+
+  <dd>
+<pre class="stx">
+&lt;pin-set expiration="date"&gt;
+...
+&lt;/pin-set&gt;
+</pre>
+  </dd>
+
+  <dt>
+    可以包含:
+  </dt>
+
+  <dd>
+    任何數目的 <code><a href="#pin">&lt;pin&gt;</a></code>
+  </dd>
+
+  <dt>
+    描述:
+  </dt>
+
+  <dd>
+    一組公用金鑰關聯。信任鏈中的其中一個公用金鑰必須要在這組關聯中,才是可信任的安全連線。
+如需關聯的格式,請參閱
+    <code><a href="#pin">&lt;pin&gt;</a></code>。
+  </dd>
+
+  <dt>
+    屬性:
+  </dt>
+
+  <dd>
+    <dl class="attr">
+      <dt>
+        {@code expiration}
+      </dt>
+
+      <dd>
+        到期之後就會停用關聯的日期,格式為 {@code yyyy-MM-dd}。
+如果未設定屬性,關聯就不會到期。
+
+        <p>
+          到期有助於避免因使用者停用應用程式更新,而無法取得關聯組更新的應用程式發生連線問題。
+
+
+        </p>
+      </dd>
+    </dl>
+  </dd>
+</dl>
+
+<h3 id="pin">&lt;pin&gt;</h3>
+<dl class="xml">
+  <dt>
+    語法:
+  </dt>
+
+  <dd>
+<pre class="stx">
+&lt;pin digest=["SHA-256"]&gt;base64 encoded digest of X.509
+    SubjectPublicKeyInfo (SPKI)&lt;/pin&gt;
+</pre>
+  </dd>
+
+  <dt>
+    屬性:
+  </dt>
+
+  <dd>
+    <dl class="attr">
+      <dt>
+        {@code digest}
+      </dt>
+
+      <dd>
+        用來產生關聯的摘要演算法。目前僅支援
+        {@code "SHA-256"}。
+      </dd>
+    </dl>
+  </dd>
+</dl>
diff --git a/docs/html-intl/intl/zh-tw/preview/features/tv-recording-api.jd b/docs/html-intl/intl/zh-tw/preview/features/tv-recording-api.jd
new file mode 100644
index 0000000..7d50a3c
--- /dev/null
+++ b/docs/html-intl/intl/zh-tw/preview/features/tv-recording-api.jd
@@ -0,0 +1,120 @@
+page.title=電視錄製
+page.keywords=preview,sdk,tv,recording
+page.tags=androidn
+
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+  <h2>此文件內容</h2>
+  <ol>
+    <li><a href="#supporting">指出錄製支援</a></li>
+    <li><a href="#recording">錄製工作階段</a></li>
+    <li><a href="#errors">處理錄製錯誤</a></li>
+    <li><a href="#sessions">管理已錄製的工作階段</a></li>
+    <li><a href="#best">最佳做法</a></li>
+  </ol>
+</div>
+</div>
+
+<p>電視輸入服務可讓使用者透過時間位移 API 來暫停及繼續頻道播放。
+Android N 透過讓使用者儲存多個已錄製的工作階段,以延伸時間位移功能。
+</p>
+
+<p>使用者可以事先排定錄製作業,或在觀看節目時開始錄製。
+一旦系統儲存錄製的內容,使用者可以使用系統電視應用程式來瀏覽、管理及播放錄製的內容。
+</p>
+
+<p>如果要為您的電視輸入服務提供錄製功能,您必須向系統指出您的應用程式支援錄製、實作錄製節目的功能、處理及溝通錄製期間可能發生的任何錯誤,以及管理您已錄製的工作階段。
+
+
+</p>
+
+<h2 id="supporting">指出錄製支援</h2>
+
+<p>若要告訴系統您的電視輸入服務支援錄製,請依照這些步驟執行:
+</p>
+
+<ol>
+<li>在您的 <code>TvInputService.onCreate()</code> 方法中,使用 <code>TvInputInfo.Builder</code> 類別建立新的 <code>TvInputInfo</code> 物件。
+
+</li>
+<li>建立新的 <code>TvInputInfo</code> 物件時,在呼叫 <code>build()</code> 之前先呼叫 <code>setCanRecord(true)</code>,以指出您的服務支援錄製。
+
+</li>
+<li>透過呼叫 <code>TvInputService.updateTvInputInfo()</code>,以向系統註冊您的 <code>TvInputInfo</code> 物件。
+</li>
+</ol>
+
+<h2 id="recording">錄製工作階段</h2>
+
+<p>在您的電視輸入服務註冊並告訴系統它支援錄製功能之後,系統會在需要存取您應用程式的錄製實作時呼叫您的 <code>TvInputService.onCreateRecordingSession()</code>。
+
+
+實作您自己的 <code>TvInputService.RecordingSession</code> 子類別,並在 <code>onCreateRecordingSession()</code> 回呼引發時傳回它。
+
+
+此子類別負責切換到正確的頻道資料、錄製要求的資料,並和系統溝通錄製狀態與錯誤。
+
+</p>
+
+<p>當系統透過傳入頻道 URI 以呼叫 <code>RecordingSession.onTune()</code> 時,會轉台到 URI 指定的頻道。
+透過呼叫 <code>notifyTuned()</code> 以通知系統您的應用程式已轉台到想要的頻道,或者,若您的應用程式無法轉台到適當的頻道,則呼叫 <code>notifyError()</code>。
+
+
+</p>
+
+<p>接著,系統會呼叫 <code>RecordingSession.onStartRecording()</code> 回呼。
+您的應用程式必須立即開始錄製。當系統呼叫此回呼時,它可能會提供包含將錄製之節目相關資訊的 URI。
+
+當錄製完成時,您必須將此資料複製到 <code>RecordedPrograms</code> 資料表格。
+</p>
+
+<p>最後,系統會呼叫 <code>RecordingSession.onStopRecording()</code>。此時,您的應用程式必須立即停止錄製。
+您也必須在 <code>RecordedPrograms</code> 表格中建立一個項目。
+此項目應該在 <code>RecordedPrograms.COLUMN_RECORDING_DATA_URI</code> 欄中包括已錄製的工作階段資料 URI,以及系統在對 <code>onStartRecording()</code> 的初始呼叫中提供的任何節目資訊。
+
+
+
+</p>
+
+<p>如需有關如何存取 <code>RecordedPrograms</code> 表格的詳細資料,請參閱<a href="#sessions">管理已錄製的工作階段</a>。
+</p>
+
+<h2 id="errors">處理錄製錯誤</h2>
+
+<p>如果錄製期間發生錯誤,造成已錄製的資料無法使用,請透過呼叫 <code>RecordingSession.notifyError()</code> 以通知系統。同樣地,您可以在建立錄製工作階段之後呼叫 <code>notifyError()</code>,以讓系統知道您的應用程式已無法再錄製工作階段。
+
+
+</p>
+
+<p>如果錄製期間發生錯誤,但您想要提供可用的部分錄製內容給使用者播放,請呼叫 <code>RecordingSession.notifyRecordingStopped()</code> 以讓系統使用該部分工作階段。
+
+
+</p>
+
+<h2 id="sessions">管理已錄製的工作階段</h2>
+
+<p>系統會從 <code>TvContract.RecordedPrograms</code> 內容提供者表格中所有支援錄製頻道的應用程式維護所有已錄製之工作階段的資訊。
+
+此資訊可透過 <code>RecordedPrograms.Uri</code> 內容 URI 來存取。
+使用內容提供者 API 來讀取、新增及刪除此表格中的項目。
+</p>
+
+<p>如需有關處理內容提供者資料的詳細資訊,請參閱<a href="{@docRoot}guide/topics/providers/content-provider-basics.html">內容提供者基礎知識</a>。
+
+</p>
+
+<h2 id="best">最佳做法</h2>
+
+<p>電視裝置的儲存空間可能有限,因此在配置儲存空間以儲存已錄製的工作階段時,請使用最佳判斷。
+當可用空間不足而無法儲存已錄製的工作階段時,請使用 <code>RecordingCallback.onError(RECORDING_ERROR_INSUFFICIENT_SPACE)</code>。
+
+</p>
+
+<p>當使用者起始錄製時,您應該儘快開始錄製資料。
+如果要加快此程序,請在系統呼叫 <code>onCreateRecordingSession()</code> 回呼時完成所有初期耗時工作 (例如,存取及配置儲存空間)。
+
+這樣做可讓您在 <code>onStartRecording()</code> 回呼引發時立即開始錄製。
+
+</p>
diff --git a/docs/html-intl/intl/zh-tw/preview/index.jd b/docs/html-intl/intl/zh-tw/preview/index.jd
new file mode 100644
index 0000000..e899bc0
--- /dev/null
+++ b/docs/html-intl/intl/zh-tw/preview/index.jd
@@ -0,0 +1,120 @@
+page.title=Android N Developer Preview
+page.tags="preview","developer"
+meta.tags="preview", "android"
+fullpage=true
+forcelocalnav=true
+header.hide=1
+footer.hide=1
+@jd:body
+
+<script>
+  $(document).ready(function() {
+    if (useUpdatedTemplates) {
+      $("#useUpdatedTemplates").css("display","block");
+    } else {
+      $("#useOldTemplates").css("display","block");
+    }
+  })
+</script>
+
+<section class="dac-expand dac-hero dac-light" style="background-color:#B2DFDB">
+  <div class="wrap" style="max-width:1100px;margin-top:0">
+    <div class="cols dac-hero-content" style="padding-bottom:1em;">
+
+      <div class="col-7of16 col-push-9of16" style="padding-left:2em">
+        <h1 class="dac-hero-title">Android N Developer Preview</h1>
+        <p class="dac-hero-description">
+          為 Android N 做好準備!
+          在 Nexus 與其他裝置上<strong>測試您的應用程式</strong>。支援新系統行為以<strong>節省電力與記憶體</strong>。使用<strong>多視窗 UI</strong>、<strong>直接回覆通知</strong>等延伸您的應用程式。
+
+
+
+        </p>
+
+        <a class="dac-hero-cta" href="{@docRoot}preview/overview.html">
+          <span class="dac-sprite dac-auto-chevron"></span>
+          開始使用</a>
+<!--<br>
+        <a class="dac-hero-cta" href="{@docRoot}preview/support.html">
+          <span class="dac-sprite dac-auto-chevron"></span>
+          Update to Android N (final SDK)
+        </a><br>-->
+      </div>
+      <div class="col-9of16 col-pull-7of16 dac-hero-figure" style="margin-top:1.5em;padding-right:1.5em;">
+        <img class="dac-hero-image" src="{@docRoot}images/home/n-preview-hero.png" srcset="{@docRoot}images/home/n-preview-hero.png 1x,
+             {@docRoot}images/home/n-preview-hero_2x.png 2x">
+      </div>
+    </div>
+    <div class="dac-section dac-small">
+      <div class="resource-widget resource-flow-layout col-16"
+           data-query="collection:preview/landing/resources"
+           data-cardSizes="6x2"
+           data-maxResults="6"></div>
+    </div>
+  </div>
+</section>
+
+<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="#build-apps">
+      <i class="dac-sprite dac-arrow-down-gray"></i>
+    </a>
+    <ul class="dac-actions">
+      <li class="dac-action">
+        <a class="dac-action-link" href="https://developer.android.com/preview/bug">
+          <i class="dac-action-sprite dac-sprite dac-auto-chevron-large"></i>
+          回報問題
+</a>
+      </li>
+      <li class="dac-action">
+        <a class="dac-action-link" href="{@docRoot}preview/support.html">
+          <i class="dac-action-sprite dac-sprite dac-auto-chevron-large"></i>
+          查看版本資訊</a>
+
+      </li>
+      <li class="dac-action">
+        <a class="dac-action-link" href="{@docRoot}preview/dev-community">
+          <i class="dac-action-sprite dac-sprite dac-auto-chevron-large"></i>
+          加入開發人員社群</a>
+
+      </li>
+    </ul>
+  </div><!-- end .wrap -->
+</div><!-- end .dac-actions -->
+
+<div id="useOldTemplates" style="display:none;color:black" class="actions-bar dac-expand dac-invert">
+  <div class="wrap dac-offset-parent">
+
+    <div class="actions">
+      <div><a href="https://developer.android.com/preview/bug">
+        <span class="dac-sprite dac-auto-chevron-large"></span>
+        回報問題</a>
+</div>
+      <div><a href="{@docRoot}preview/support.html">
+        <span class="dac-sprite dac-auto-chevron-large"></span>
+        查看版本資訊</a>
+</div>
+      <div><a href="{@docRoot}preview/dev-community">
+        <span class="dac-sprite dac-auto-chevron-large"></span>
+        加入開發人員社群</a>
+</div>
+    </div><!-- end .actions -->
+  </div><!-- end .wrap -->
+</div>
+
+<section class="dac-section dac-light"><div class="wrap">
+  <h1 class="dac-section-title">資源</h1>
+  <div class="dac-section-subtitle">
+    以下重要資訊可幫助您的應用程式準備好使用 Android N。
+  </div>
+
+  <div class="resource-widget resource-flow-layout col-16"
+       data-query="collection:preview/landing/more"
+       data-cardSizes="6x6"
+       data-items-per-page="6"
+       data-maxResults="15"
+       data-initial-results="6"></div>
+
+  </div>
+</section>
+
diff --git a/docs/html-intl/intl/zh-tw/preview/j8-jack.jd b/docs/html-intl/intl/zh-tw/preview/j8-jack.jd
new file mode 100644
index 0000000..91b65d0
--- /dev/null
+++ b/docs/html-intl/intl/zh-tw/preview/j8-jack.jd
@@ -0,0 +1,183 @@
+page.title=Java 8 語言功能
+page.keywords="android N", "Java 8", "Jack"
+@jd:body
+
+<div id="qv-wrapper">
+  <div id="qv">
+    <ol>
+      <li>
+        <a href="#supported-features">支援的 Java 8 語言功能與 API</a>
+      </li>
+      <li>
+        <a href="#configuration">啟用 Java 8 功能與 Jack 工具鏈</a>
+      </li>
+    </ol>
+  </div>
+</div>
+
+<p>Android N 引進對 Java 8 語言功能的支援,供您在開發目標為 Android N 的應用程式時使用。此頁面描述「Android N Preview」中支援的新語言功能、如何正確地設定您的專案以使用它們,以及您可能會遇到的所有已知問題。
+
+
+
+
+</p>
+
+<p>如果要開始使用這些功能,您必須下載並安裝 Android Studio 2.1 (預覽版) 與 Android N Preview SDK,其中包括必要的 Jack 工具鏈與適用於 Gradle 的已更新 Android 外掛程式。如果尚未安裝 Android N Preview SDK,請參閱<a href="{@docRoot}preview/setup-sdk.html">設定以針對 Android N 開發</a>。
+
+
+</p>
+
+
+
+<p class="note">
+  <strong>注意:</strong>使用新的 Java 8 語言功能並不是開發以 Android N 平台為目標之應用程式的需求。如果不想使用 Java 8 語言功能撰寫程式碼,您可以將專案的來源與目標相容性值維持設定為 Java 7,但仍必須與 JDK 8 相容,以針對 Android N 平台建置。
+
+
+
+
+</p>
+
+<h2 id="supported-features">
+  支援的 Java 8 語言功能與 API
+</h2>
+
+<p>
+  Android 目前不支援所有 Java 8 語言功能。然而,開發目標為「Android N Preview」的應用程式時,可以使用下列功能:
+
+
+</p>
+
+<ul>
+  <li>
+    <a class="external-link" href="https://docs.oracle.com/javase/tutorial/java/IandI/defaultmethods.html">預設與靜態介面方法</a>
+
+  </li>
+
+  <li>
+    <a class="external-link" href="https://docs.oracle.com/javase/tutorial/java/javaOO/lambdaexpressions.html">Lambda 運算式</a>
+
+  </li>
+
+  <li>
+    <a class="external-link" href="https://docs.oracle.com/javase/tutorial/java/annotations/repeating.html">可重複的註解</a>
+
+  </li>
+</ul>
+
+
+<p>
+  此外,下列 Java 8 語言功能 API 現已可用:
+</p>
+
+<ul>
+  <li>Reflection 與語言相關 API:
+  </li>
+
+  <li style="list-style: none; display: inline">
+    <ul>
+      <li>{@code java.lang.FunctionalInterface}
+      </li>
+
+      <li>{@code java.lang.annotation.Repeatable}
+      </li>
+
+      <li>{@code java.lang.reflect.Method.isDefault()}
+      </li>
+
+      <li>與 Reflection API (與可重複的註解關聯),例如 {@code AnnotatedElement.getAnnotationsByType(Class)}
+
+      </li>
+    </ul>
+  </li>
+  <li>公用程式 API:
+  </li>
+
+  <li style="list-style: none; display: inline">
+    <ul>
+      <li>{@code java.util.function}
+      </li>
+    </ul>
+  </li>
+</ul>
+
+<p class="note">
+  <strong>注意:</strong>Android N 的 Lambda 運算式實作是以匿名類別為基礎。此方法可讓它們向下相容並可在舊版 Android 上執行。如果要在舊版上測試 Lambda 運算式,請務必移至您的 {@code
+  build.gradle} 檔案,並將 {@code compileSdkVersion} 與 {@code
+  targetSdkVersion} 設定為 23 或更低的層級。
+
+
+
+</p>
+
+<h2 id="configuration">
+  啟用 Java 8 功能與 Jack 工具鏈
+</h2>
+
+<p>
+  如果要使用新的 Java 8 語言功能,您也必須使用新的 <a class="external-link" href="https://source.android.com/source/jack.html">Jack 工具鏈</a>。這個新的 Android 工具鏈可將 Java 語言原始程式碼編譯成 Android 可讀取的 Dex 位元組程式碼、具有其自己的 {@code .jack} 程式庫格式,並在單一工具之外提供最多工具鏈功能:重新封裝、縮減、混淆 (Obfuscation ) 與多 Dex (Multidex)。
+
+
+
+
+
+</p>
+
+<p>以下是用來建置 Android DEX 檔案之兩個工具鏈的比較:</p>
+<ul>
+  <li>傳統 javac 工具鏈:<br>
+  <b>javac</b> ({@code .java} --&gt; {@code .class}) --&gt; <b>dx</b> ({@code
+  .class} --&gt; {@code .dex})
+  </li>
+
+  <li>新的 Jack 工具鏈:<br>
+  <b>Jack</b> ({@code .java} --&gt; {@code .jack} --&gt; {@code .dex})
+  </li>
+</ul>
+
+<h3>
+  設定 Gradle
+</h3>
+
+<p>
+  如果要為您的專案啟用 Java 8 語言功能與 Jack,請在您的模組特定 {@code build.gradle} 檔案中輸入下列內容:
+
+</p>
+
+<pre>
+android {
+  ...
+  defaultConfig {
+    ...
+    jackOptions {
+      enabled true
+    }
+  }
+  compileOptions {
+    sourceCompatibility JavaVersion.VERSION_1_8
+    targetCompatibility JavaVersion.VERSION_1_8
+  }
+}
+</pre>
+
+<h3>
+  已知問題
+</h3>
+
+<p>
+  立即執行 (在 Android Studio 2.0 (Beta) 引進) 目前無法搭配 Jack 使用,而且會將它停用並使用新的工具鏈。
+
+</p>
+
+<p>因為 Jack 在編譯應用程式時不會產生中繼類別檔案,相依於這些檔案的工具目前無法搭配 Jack 使用。這些工具的某些範例為:
+
+</p>
+
+<ul>
+  <li>在類別檔案上運作的 Lint 偵測器
+  </li>
+
+  <li>需要應用程式類別檔案 (例如 JaCoCo 與 Mockito) 的工具與程式庫
+</li>
+</ul>
+
+<p>如果在使用 Jack 時發現任何問題,請<a href="http://tools.android.com/filing-bugs">回報錯誤</a>。</p>
\ No newline at end of file
diff --git a/docs/html-intl/intl/zh-tw/preview/overview.jd b/docs/html-intl/intl/zh-tw/preview/overview.jd
new file mode 100644
index 0000000..590afe5
--- /dev/null
+++ b/docs/html-intl/intl/zh-tw/preview/overview.jd
@@ -0,0 +1,440 @@
+page.title=計劃總覽
+page.metaDescription=讓您的應用程式為下一版 Android 做好準備。
+page.image=images/cards/card-n-overview_2x.png
+meta.tags="preview", "developer", "android"
+page.tags="preview", "developer", "android"
+
+@jd:body
+<!--
+<div class="cols" style=
+"background-color:#f2daf5; padding: 5px 0;margin-bottom:1em; text-align:center;">
+<h3>
+    Developer Preview 3 is now available
+  </h3>
+  <p>Includes final SDK and near-final system images</p>
+   <div style="margin:auto 1em">
+ <ul class="dac-section-links">
+    <li class="dac-section-link">
+      <a href="{@docRoot}preview/support.html#preview3-notes">
+      <span class="dac-sprite dac-auto-chevron"></span>
+      Read the Notes</a>
+    </li>
+
+    <li class="dac-section-link">
+      <a href="{@docRoot}preview/support.html#preview3-get">
+      <span class="dac-sprite dac-auto-chevron"></span>
+      Get the Update</a>
+    </li>
+
+    <li class="dac-section-link">
+      <a href="https://code.google.com/p/android-developer-preview/">
+      <span class="dac-sprite dac-auto-chevron"></span>
+      Report Issues</a>
+    </li>
+  </ul>
+  </div>
+</div>
+-->
+
+<p>
+  歡迎使用「Android N Developer Preview」<strong></strong>,本計劃提供為新版 Android 測試和最佳化您應用程式所需的一切。它是免費的,而且您可以下載「N Developer Preview」工具來立刻開始。
+
+
+
+</p>
+
+
+
+
+
+
+
+<div style="background-color:#eceff1;padding:1em;">
+<div class="wrap">
+  <div class="cols">
+    <div class="col-4of12">
+      <h5>
+        硬體與模擬器映像
+      </h5>
+
+      <p>
+        在各種裝置上或在模擬器上執行並測試您的應用程式。
+
+      </p>
+    </div>
+
+    <div class="col-4of12">
+      <h5>
+        最新的平台程式碼
+      </h5>
+
+      <p>
+        我們將在 Preview 期間提供每月更新,讓您能夠針對最新的平台變更進行測試。
+      </p>
+    </div>
+
+    <div class="col-4of12">
+      <h5>
+        開發人員問題的優先順序
+      </h5>
+
+      <p>
+        在前幾個星期內,我們將讓開發人員優先回報問題,因此請儘快測試並提供意見回饋。
+
+      </p>
+    </div>
+
+  </div>
+
+  <div class="cols">
+
+
+    <div class="col-4of12">
+      <h5>
+        新行為與功能
+      </h5>
+
+      <p>
+        儘早開始開發以支援新的平台行為,並使用新功能來開發。
+      </p>
+    </div>
+
+    <div class="col-4of12">
+        <h5>
+        更新是透過隔空傳輸 (OTA) 方式傳遞
+      </h5>
+
+      <p>
+        透過「Android Beta 計劃」,可以在任何支援的裝置上透過無接縫的隔空傳輸方式取得更新。不需要刷機。
+
+      </p>
+    </div>
+
+    <div class="col-4of12">
+      <h5>
+        意見回饋與支援
+      </h5>
+
+      <p>
+        使用我們的<a href="{@docRoot}preview/bug">問題追蹤器</a>回報問題並提供意見回饋。與 <a href="{@docRoot}preview/dev-community">N&nbsp;開發人員社群</a>中的開發人員互動。
+
+
+
+      </p>
+    </div>
+  </div>
+</div>
+</div>
+
+<!--
+<p>New in the Android N Developer Preview: </p>
+
+<ul>
+  <li> Accompanying Android Beta Program for consumers, starting later in the preview</li>
+  <li> More supported devices, including devices from OEM partners</li>
+  <li> Seamless OTAs for your devices, from initial release to final N release without flashing</li>
+</ul>
+-->
+
+<h2 id="timeline">時間軸與更新</h2>
+<img src="{@docRoot}images/n-preview-updates_2x.png">
+
+<p>
+  「N Developer Preview」計畫日期從 2016 年 3 月 9 日到最終 Android N 公開發行版釋出給 AOSP 與 OEM 為止 (預計是 2016 年第 3 季)。
+
+</p>
+
+<p>
+  在關鍵開發里程碑,我們將為您的開發與測試環境傳遞更新。一般而言,您可以預期每個月 (4 到 6 週的間隔) 都能收到更新。里程碑列出如下。
+
+
+</p>
+
+<ul>
+  <li><strong><a href="{@docRoot}preview/support.html">預覽版 1</a></strong> (初始版本,Alpha)</li>
+  <li><strong>預覽版 2</strong> (遞增更新,Beta)</li>
+  <li><strong>預覽版 3</strong> (遞增更新,Beta)</li>
+  <li><strong>預覽版 4</strong> (最終 API 與正式 SDK,Play 發佈)</li>
+  <li><strong>預覽版 5</strong> (用於最終測試的近最終系統映像)</li>
+  <li><strong>最終版本</strong> (推出給 AOSP 與生態系統)</li>
+</ul>
+
+<p>
+  每個更新都包括 SDK 工具、預覽版系統映像、模擬器、參考文件與 API 差異。
+
+</p>
+
+<p>
+  <strong>前三個預覽版里程碑</strong>提供<strong>早期測試與開發環境</strong>,可協助您發現目前應用程式中的相容性問題,並針對在新平台運作的目標規劃遷移或功能工作。您可以在這個優先順序期間將您對功能與 API 和檔案相容性問題的意見回饋提供給我們 &mdash; 對於上述所有問題,請使用<a href="{@docRoot}preview/bug">問題追蹤器</a>。您可以預期這些更新之間會有一些 API 變更。
+
+
+
+
+
+
+</p>
+
+<p>
+  在<strong>預覽版 4 與 5</strong>,您將能存取<strong>最終 N API 與 SDK</strong> 以進行開發,並存取接近最終系統映像來測試系統行為與功能。Android N 在此時將提供標準 API 層級。您可以開始為您的舊版應用程式執行最終相容性測試,並調整使用 N API 或功能的任何新程式碼。
+
+
+
+
+</p>
+
+<p>
+  此外,從預覽版 4 開始,您可以<strong>發佈應用程式到執行 Android N 的裝置 (在正式 API 層級)</strong>,例如已選擇加入 Android Beta 計劃的使用者裝置。您可以先發佈到 Google Play 的 Alpha 與 Beta 管道,以便在廣泛於商店中散佈之前,先透過 Android Beta 使用者測試您的應用程式。
+
+
+
+
+
+</p>
+
+<p>
+  當您在 Android N 上測試及開發時,強烈建議您在預覽版更新發行時立即更新,<strong>讓您的開發環境保持在最新狀態</strong>。為簡化此程序,您可以在 Android Beta 計劃中註冊您的測試裝置,並在每個里程碑取得<strong>隔空傳輸 (OTA) 更新</strong>。或者,我們也會提供已更新的預覽版映像讓您下載並手動刷新。
+
+
+
+
+
+</p>
+
+<p>
+  我們將透過 <a href="http://android-developers.blogspot.com/">Android 開發人員部落格</a>,還有此網站與 <a href="{@docRoot}preview/dev-community">Android N 開發人員社群</a>來通知您有可用的預覽版更新。
+
+
+</p>
+
+
+<h2 id="preview_tools">N Developer Preview 中有什麼?</h2>
+
+<p>
+  「N Developer Preview」包括您針對各種不同螢幕大小、網路技術、 CPU/GPU 晶片組與硬體架構,測試現有應用程式所需的一切。
+
+
+</p>
+
+<h3 id="sdk_tools">SDK 工具</h3>
+
+<p>您可以透過 <a href="{@docRoot}sdk/installing/adding-packages.html">Android Studio</a> 中的 SDK Manager 下載這些元件:</p>
+
+<ul>
+  <li> N Developer Preview <strong>SDK 工具</strong>
+  <li> N Developer Preview <strong>模擬器系統映像</strong> (32 位元與 64 位元)
+  <li> N Developer Preview <strong>模擬器系統映像 (適用於 Android TV)</strong> (32 位元)
+  <li> N Developer Preview 支援程式庫 (適用於新的應用程式範本)
+</ul>
+
+<p>
+  我們將視需要在每個里程碑提供這些開發工具的更新。
+</p>
+
+<h3 id="hardware_system_images">硬體系統映像</h3>
+
+<p>
+  「N Developer Preview」包括 Nexus 以及在實體裝置上測試及開發時可以使用的其他硬體系統映像。如需硬體映像的完整清單,請參閱<a href="{@docRoot}preview/download.html">裝置映像</a>頁面。
+
+
+</p>
+
+<p>
+  我們將在每個里程碑傳遞已更新的系統映像。您可以下載已更新的系統映像並手動將它刷到您的測試裝置,而且刷機頻率無限制。當您需要在自動化測試環境多次刷新您裝置時,這特別實用。
+
+
+
+
+</p>
+
+<p class="note"><strong>注意</strong>:<strong>手動刷新的裝置將無法像去年的預覽版一樣取得 OTA 更新</strong>。今年,您可以透過在「Android Beta 計劃」註冊裝置以取得 OTA &mdash; 請參閱下一節的詳細資料。
+
+
+
+</p>
+
+<h3 id="android_beta">透過 Android Beta 計劃取得 OTA 更新</h3>
+
+<p>
+  Android N 中的其中一個新功能是隔空傳輸 (OTA) 更新計劃,它可以自動將最新的 Android N 預覽版更新直接傳遞給已註冊此計劃的裝置。加入此計劃完全免費,而且此計劃開放給所有擁有支援裝置並已註冊 Google 帳戶的人。
+
+
+
+</p>
+
+<p>
+  如果要註冊此計劃,請瀏覽 <a href="https://g.co/androidbeta">Android Beta 計劃</a>網站。您將會看到已在您的帳戶註冊且符合加入 Android Beta 計劃的所有裝置。
+
+
+
+</p>
+
+<ol>
+  <li> 選擇要接收 Android N 更新的裝置
+  <li> 按一下 [Enroll],閱讀並同意服務條款,然後按一下 [OK]。
+</ol>
+
+<p>
+  一旦註冊,您的裝置很快就會收到更新。在大部分情況下,您不需要執行完整重設以將您的資料移到 Android N,但建議您先備份重要資料,再註冊裝置。
+
+
+
+</p>
+
+<p>
+  當更新傳遞到您的裝置之後,建議您儘快下載並安裝。您將能掌握系統 UI、行為、API 與功能的最新變更。
+
+
+</p>
+
+<p>
+  在「Developer Preview」結束時,您已註冊的裝置將會收到正式 Android N 版本的更新。
+
+</p>
+
+<p>
+  您可以隨時取消註冊 Android Beta 計劃。在取消註冊之前,請務必備份裝置上的資料。
+
+
+</p>
+
+  <p class="note"><strong>注意</strong>:當您取消註冊時,<strong>系統會將您的裝置還原為出廠預設值</strong>並更新到最新版本的 Android 6.0 Marshmallow (不一定是註冊裝置之前安裝的版本)。為確保乾淨的安裝,系統會將您的資料從裝置清除,包括聯絡人、訊息與相片等。
+
+
+
+
+
+
+</p>
+
+<h3 id="documentation_and_sample_code">文件與範例程式碼</h3>
+
+<p>
+  「Developer Preview」網站上提供這些文件資源,協助您了解 Android&nbsp;N:
+
+</p>
+
+<ul>
+  <li> <a href="{@docRoot}preview/setup-sdk.html">設定以針對 Android N 開發</a>提供逐步指示協助您開始。
+
+</li>
+  <li> <a href="{@docRoot}preview/behavior-changes.html">行為變更</a>指出要測試的關鍵區域。
+</li>
+  <li> 新 API 的文件,包括 <a href="{@docRoot}preview/api-overview.html">API 總覽</a>、可下載的 <a href="{@docRoot}preview/setup-sdk.html#docs-dl">API 參考資料</a>與詳細關鍵功能 (例如多視窗支援、整合式通知、多地區設定支援等) 的開發人員指南。
+
+
+
+  <li> 示範如何支援權限與其他新功能的<a href="{@docRoot}preview/samples.html">範例程式碼</a>。
+
+  <li> 適用於目前 N Developer Preview 的<a href="{@docRoot}preview/support.html#release-notes">版本資訊</a>,包括變更資訊與差異報告。
+
+
+</ul>
+
+<h4 id="reference">可下載的 API 參考資料</h4>
+
+<p>
+  在早期預覽版更新期間,您能以獨立 zip 壓縮檔的形式下載最新的 <a href="{@docRoot}preview/setup-sdk.html#docs-dl">Android N 平台 API 參考資料</a>。下載的參考資料也包括差異報告,可協助您瞭解自 API 23 與前次更新之後的 API 變更。
+
+
+
+
+</p>
+
+<p>
+  當 Android N API 邁入最終階段且我們為它指派正式 API 層級時,我們將在 <a href="https://developer.android.com">https://developer.android.com</a> 為您提供線上 API 參考資料。
+
+</p>
+
+<h3 id="support_resources">
+  支援資源
+</h3>
+
+<p>
+  在「N Developer Preview」上測試及開發時,請使用這些管道來回報問題及提供意見回饋:
+
+</p>
+
+<ul>
+  <li> <a href="https://code.google.com/p/android-developer-preview/">N Developer Preview 問題追蹤器</a>是您的<strong>主要意見回饋管道</strong>。您可以透過此問題追蹤器來回報錯誤、效能問題與一般意見回饋。您也可以檢查<a href="{@docRoot}preview/bug">已知問題</a>並尋找變通方式步驟。當您的問題經過分類並傳送給 Android 工程團隊檢閱時,我們會通知您。
+
+
+
+
+ </li>
+  <li> <a href="{@docRoot}preview/dev-community">Android N 開發人員社群</a>是您能<strong>與其他 Android N 開發人員聯絡</strong>的 Google+ 社群。您可以分享有關 Android N 的觀察或想法,或尋找解答。我們會主持社群並視需要提供解答與指導方針。
+
+
+
+</li>
+</ul>
+
+<h3 id="targeting">目標設定、預覽版 API 及發佈</h3>
+
+<p>
+  「N Developer Preview」提供僅供開發的系統與<strong>沒有標準 API 層級</strong>的 Android 程式庫。如果要選擇退出相容性行為以測試您的應用程式 (強烈建議),您可以透過將您應用程式的 <code><a href=
+  "{@docRoot}preview/setup-sdk.html#create-update">targetSdkVersion</a></code> 設定為 <code>“N”</code>,以便以 Android N 預覽版。做為目標。
+
+
+
+
+
+</p>
+
+<p>
+  「Android N Developer Preview」提供<strong>預覽版 API</strong> &mdash; 在最終版 SDK (目前規劃在 2016 年第 3 季) 發行之前的都不是正式 API。這表示您可以預期這段時間會有<strong>小幅度的 API 變更</strong>,特別是在計劃開始的前幾週。隨著每次更新「Android N Developer Preview」,我們將提供變更摘要。
+
+
+
+
+
+</p>
+
+<p class="note">
+  <strong>注意</strong>:雖然預覽版 API 可能會變更,基本系統行為均已穩定且能夠立即測試。
+
+
+</p>
+
+<p>
+  Google Play <strong>會防止發佈目標為 N Developer Preview 的應用程式</strong>。當 Android N 最終 SDK 可用時,您將能以正式 Android N API 層級做為目標,並透過 Alpha 與 Beta 發行管道將您的應用程式發佈到 Google Play。同時,如果要將目標為 Android N 的應用程式散佈給測試人員,您可以透過電子郵件或您網站的直接下載連結來完成。
+
+
+
+
+
+</p>
+
+<p>
+  在完全將 Android N 釋出給 AOSP 與 OEM 時 (預計是 2016 年第 3 季),您可以將以 Android N 為目標的發佈發佈給 Google Play 中的公開發行管道。
+
+
+</p>
+
+
+<h2 id="how_to_get_started">如何開始</h2>
+
+<p>
+  開始使用 Android N 測試您的應用程式:
+</p>
+
+<ol>
+  <li> 檢閱 <a href="{@docRoot}preview/api-overview.html">API 總覽</a>與<a href="{@docRoot}preview/behavior-changes.html">行為變更</a>以瞭解新功能,以及它會如何影響您的應用程式。特別是瞭解新的<a href="{@docRoot}preview/features/notification-updates.html">通知</a>功能與<a href="{@docRoot}preview/features/multi-window.html">多視窗支援</a>。
+
+
+
+</li>
+  <li> 依照<a href="{@docRoot}preview/setup-sdk.html">設定 Preview SDK</a> 的指示來設定您的環境,並設定測試裝置。
+</li>
+  <li> 依照<a href="https://developers.google.com/android/nexus/images">刷新指示</a>,將您的裝置刷新為最新的 Android N 系統映像。
+ </li>
+  <li> 檢閱 <a href="{@docRoot}preview/setup-sdk.html#docs-dl">API 參考資料</a>與 <a href="{@docRoot}preview/samples.html">Android N 範例</a>,以深入瞭解新的 API 功能以及如何在您的應用程式中運用。
+
+
+  <li> 加入 <a href="{@docRoot}preview/dev-community">Android N 開發人員社群</a>以取得最新消息,並與使用新平台的開發人員聯絡
+
+</li>
+</ol>
+
+<p>
+  感謝您參與「Android N Developer Preview」計劃!
+</p>
diff --git a/docs/html-intl/intl/zh-tw/preview/samples.jd b/docs/html-intl/intl/zh-tw/preview/samples.jd
new file mode 100644
index 0000000..265c0ff
--- /dev/null
+++ b/docs/html-intl/intl/zh-tw/preview/samples.jd
@@ -0,0 +1,85 @@
+page.title=範例
+page.tags="preview", "samples", "android"
+page.image=images/cards/card-n-samples_2x.png
+@jd:body
+
+<p>
+  下列程式碼範例是針對 Android N 提供。如果要在 Android Studio 中下載, 範例,請選取 [File] &gt; [Import Samples]<b></b> 選單選項。
+
+
+</p>
+
+<p class="note">
+  <strong>注意:</strong>這些可下載的專案是專為與 Gradle 和 Android Studio 一起使用而設計。
+
+</p>
+
+
+<h3 id="mw">多視窗 Playground</h3>
+<img src="{@docRoot}preview/images/sample-multiwindow.png" style="float: left; padding-right: 0.5em" height="250" width="156" />
+<p>
+  此範例示範如何在您的應用程式中發揮多視窗使用者介面的功能。
+
+</p>
+<p>
+  <a href="https://github.com/googlesamples/android-MultiWindowPlayground">在 GitHub 上取得</a>
+
+</p>
+
+<div style="clear: both;"></div>
+<h3 id="an">使用中通知</h3>
+<img src="{@docRoot}preview/images/sample-activenotifications.png" style="float: left; padding-right: 0.5em" height="250" width="141" />
+<p>
+  這是現有的範例,它會顯示使用 NotificationCompat 傳送通知的簡單服務。來自使用者的每個未閱讀交談都會以個別通知方式傳送。
+
+
+</p>
+<p>
+  已更新此範例以利用 Android N 中的新通知功能。
+
+</p>
+<p>
+  <a href="https://github.com/googlesamples/android-ActiveNotifications">在 GitHub 上取得</a>
+
+</p>
+
+<div style="clear: both;"></div>
+<h3 id="ms">簡訊服務</h3>
+<img src="{@docRoot}preview/images/sample-messagingservice.png" style="float: left; padding-right: 0.5em" height="250" width="150" />
+<p>
+  這是現有的範例,它示範如何使用 NotificationManager 告知使用者應用程式目前顯示的通知數目。
+
+
+</p>
+<p>
+  已更新此範例以利用 Android N 中的新通知功能。
+
+</p>
+<p>
+  <a href="https://github.com/googlesamples/android-MessagingService">在 GitHub 上取得</a>
+
+</p>
+
+<div style="clear: both;"></div>
+<h3 id="fbe">直接開機</h3>
+<img src="{@docRoot}preview/images/sample-directboot.png" style="float: left; padding-right: 0.5em" height="250" width="141" />
+<p>
+  此範例示範如何在裝置加密的儲存空間 (裝置開機後即一律可用) 中儲存及存取資料。
+
+</p>
+<p>
+  <a href="https://github.com/googlesamples/android-DirectBoot">在 GitHub 上取得</a>
+
+</p>
+
+<div style="clear: both;"></div>
+<h3 id="sda">限定範圍目錄存取</h3>
+<img src="{@docRoot}preview/images/sample-scopeddirectoryaccess.png" style="float: left; padding-right: 0.5em" height="250" width="141" />
+<p>
+  此範例示範如何讀取及寫入特定目錄的資料,同時要求較少的權限。
+
+</p>
+<p>
+  <a href="https://github.com/googlesamples/android-ScopedDirectoryAccess">在 GitHub 上取得</a>
+
+</p>
\ No newline at end of file
diff --git a/docs/html-intl/intl/zh-tw/preview/setup-sdk.jd b/docs/html-intl/intl/zh-tw/preview/setup-sdk.jd
new file mode 100644
index 0000000..a5ce556b
--- /dev/null
+++ b/docs/html-intl/intl/zh-tw/preview/setup-sdk.jd
@@ -0,0 +1,226 @@
+page.title=設定 Preview
+meta.keywords="preview", "android"
+page.tags="preview", "developer preview"
+page.image=images/cards/card-n-sdk_2x.png
+
+@jd:body
+
+
+<div id="qv-wrapper">
+  <div id="qv">
+<ol>
+  <li><a href="#get-as13">取得 Android Studio 2.1</a></li>
+  <li><a href="#get-sdk">取得 Android N SDK</a>
+    <ol>
+      <li><a href="#docs-dl">參考文件</a>
+    </ol>
+  </li>
+  <li><a href="#java8">取得 Java 8 JDK 與 JRE</a></li>
+  <li><a href="#create-update">更新或建立專案</a></li>
+  <li><a href="#next">後續步驟</a></li>
+</ol>
+  </div>
+</div>
+
+<p>如果要開發適用於「Android N Preview」的應用程式,您必須為您的開發人員環境進行一些更新,如此頁面上所述。
+</p>
+
+<p>如果只要在 Android N 系統映像上測試您應用程式的相容性,請依照<a href="{@docRoot}preview/download.html">在 Android N 裝置上測試</a>中的指南執行。
+</p>
+
+<img src="{@docRoot}preview/images/n-preview-setup.png" width="700" alt="" />
+
+
+<h2 id="get-as13">取得 Android Studio 2.1 (預覽版)</h2>
+
+<p>Android N 平台新增對 <a href="{@docRoot}preview/j8-jack.html">Java 8 語言功能</a>的支援,它需要名為 Jack 的新編譯器。目前,只有 Android Studio 2.1 中才支援最新的 Jack 版本。因此,如果要使用 Java 8 語言功能,您必須使用 Android Studio 2.1 來建置您的應用程式。否則,您不需要使用 Jack 編譯器,但您仍需要更新到 JDK 8 以針對 Android N 編譯,如下所述。
+
+
+
+
+
+
+</p>
+
+<iframe width="400" height="225" src="//www.youtube.com/embed/SBbWGxXCMqQ?autohide=1&amp;showinfo=0" frameborder="0" allowfullscreen="" style="float: right; margin: 0 0 20px 20px;"></iframe>
+
+<p>Android Studio 2.1 目前在早期測試發行管道中是以預覽版形式提供。如果您已經有 Android Studio 但不想要更新到早期測試管道,您可以下載 Android Studio 2.1 並另行安裝,並使用它來針對 Android N 進行開發,這樣並不會影響您的主要 Android Studio 環境。
+
+
+
+
+</p>
+
+<p>如果要下載 Android Studio 2.1 並另行安裝,請依照這些步驟執行 (或者,如果要以現有安裝之更新的形式接收 Android Studio 2.1,請跳到步驟 4):
+
+</p>
+
+<ol>
+  <li>編輯現有 Android Studio 安裝的名稱,並附加版本號碼。這樣,當您安裝新版本時,它將不會覆寫現有的版本。
+
+</li>
+  <li>從<a href="http://tools.android.com/download/studio/canary/latest">早期測試管道下載頁面</a>針對您的作業系統下載適當的 ZIP 檔案。
+
+  </li>
+  <li>將套件解壓縮,並將 Android Studio 2.1 內容移動到系統上應用程式的適當位置,然後將它啟動。
+</li>
+  <li>開啟 [Settings] 對話方塊 (在 Windows/Linux 上是 [File] &gt; [Settings]<strong></strong>,在 Mac 上是 [Android Studio] &gt; [Preferences]<strong></strong>)。在左面板中,選取 [Appearance &amp; Behavior] &gt; [System Settings] &gt; [Updates]<strong></strong>。
+
+
+
+
+  </li>
+  <li>在 [Updates] 面板上,選取 [Automatically check updates for]<strong></strong> 核取方塊,然後從下拉式清單選取 [Canary Channel]<strong></strong>。
+
+
+  </li>
+</ol>
+
+<p>針對下一個步驟,將此設定視窗維持開啟。</p>
+
+
+<h2 id="get-sdk">取得 N Preview SDK</h2>
+
+<p>如果要開始使用 Android N API 來開發,您必須在 Android Studio 中安裝 Android N Preview SDK,如下所示:
+</p>
+
+<ol>
+  <li>在仍於 [Updates] 面板 (上面的步驟 4) 中檢視時,選取 [Automatically check updates for Android SDK]<strong></strong> 核取方塊,然後從下拉式清單中選取 [Preview Channel]<strong></strong>。
+
+
+
+  </li>
+  <li>按一下 [Check Now]<strong></strong>。</li>
+
+  <li>在左面板中,選取 [Appearance &amp; Behavior] &gt; [System Settings] &gt; [Android SDK]<strong></strong>。
+
+
+  <li>按一下 [SDK Platforms]<strong></strong> 分頁,然後選取 [Android N Preview]<strong></strong> 核取方塊。
+</li>
+
+  <li>按一下 [SDK Tools]<strong></strong> 分頁,然後選取 [Android SDK Build Tools]<strong></strong>、[Android SDK Platform-Tools]<strong></strong> 與 [Android SDK Tools]<strong></strong> 核取方塊。
+
+
+
+  </li>
+
+  <li>按一下 [OK]<strong></strong>,然後接受要安裝之任何套件的授權合約。
+
+  </li>
+</ol>
+
+<h3 id="docs-dl">取得 N Preview 參考文件</h3>
+
+<p>
+  您可以在 N Preview 參考文件 (可從下表下載) 中找到有關 Android N API 的詳細資訊。此套件包含 Android 開發人員網站的已刪節離線版本,而且包括適用於 Android N API 的已更新 API 參考資料與 API 差異報告。
+
+
+
+
+</p>
+
+<table>
+  <tr>
+    <th scope="col">文件</th>
+    <th scope="col">總和檢查碼</th>
+  </tr>
+  <tr>
+    <td style="white-space: nowrap">
+    <a href="{@docRoot}shareables/preview/n-preview-1-docs.zip">n-preview-1-docs.zip</a></td>
+    <td width="100%">
+      MD5:4ab33ccbe698f46f125cc5b807cf9c2f<br>
+      SHA-1:6a3880b3ccd19614daae5a4d0698ea6ae11c20a5
+    </td>
+  </tr>
+<table>
+
+
+
+<h2 id="java8">取得 Java 8 JDK 與 JRE</h2>
+
+<p>如果要針對 Android N 平台編譯您的應用程式,您必須使用 Java 8 開發人員套件 (JDK 8),而且如果要使用某些工具來搭配 Android Studio 2.1,您必須安裝 Java 8 執行階段環境 (JRE 8)。因此,如果您沒有最新版本的 JDK 8 與 JRE 8,請立即下載。
+
+
+
+</p>
+
+<p>接著,在 Android Studio 中設定 JDK 版本,如下所示:</p>
+
+<ol>
+  <li>在 Android Studio 中開啟 Android 專案,然後選取 [File] &gt; [Project Structure] 以開啟 [Project Structure] 對話方塊 <strong></strong>(或者,您可以選取 [File] &gt; [Other Settings] &gt; [Default Project Structure]<strong></strong>,以針對所有專案設定預設值)。
+
+
+
+
+   </li>
+   <li>在對話方塊的左面板中,按一下 [SDK Location]<strong></strong>。
+   </li>
+   <li>在 [JDK Location]<strong></strong> 欄位中,輸入 Java 8 JDK 的位置 (按一下右邊的按鈕以瀏覽您的檔案),然後按一下 [OK]<strong></strong>8 。
+
+
+   </li>
+</ol>
+
+<img src="{@docRoot}preview/images/studio-jdk-location.jpg" width="700" alt="" />
+
+
+<h2 id="create-update">更新或建立專案</h2>
+
+<p>
+  如果要使用 Android N API,您必須適當地設定您的專案。
+</p>
+
+<p>如果計畫使用 Java 8 語言功能,您也應該閱讀 <a href="{@docRoot}preview/j8-jack.html">Java 8 語言功能</a>,以取得支援之 Java 8 功能以及如何搭配 Jack 編譯器設定您專案的詳細資訊。
+
+
+</p>
+
+
+<h3 id="update">更新現有的專案</h3>
+
+<p>開啟模組的 <code>build.gradle</code> 檔案並更新值,如下所示:
+
+
+</p>
+
+<pre>
+android {
+  compileSdkVersion <strong>'android-N'</strong>
+  buildToolsVersion <strong>'24.0.0-rc1'</strong>
+  ...
+
+  defaultConfig {
+     minSdkVersion <strong>'N'</strong>
+     targetSdkVersion <strong>'N'</strong>
+     ...
+  }
+  ...
+}</pre>
+
+
+<h3 id="create">建立新專案</h3>
+
+
+<p>使用 Android N Preview SDK 建立新的開發專案:</p>
+
+<ol>
+  <li>按一下 [File] &gt; [New Project]<strong></strong>,並依照步驟執行,直到到達 [Target Android Devices] 頁面。
+
+  </li>
+  <li>在此頁面上,選取 [Phone and Tablet]<strong></strong> 選項。</li>
+  <li>在 [Phone and Tablet]<strong></strong> 選項下,在 [Minimum SDK]<strong></strong> 選項清單中,選取 [N: Android API 23, N Preview (Preview)]<strong></strong>。
+
+</li>
+</ol>
+
+
+<h2 id="next">後續步驟</h2>
+
+<ul>
+  <li>依照<a href="{@docRoot}preview/download.html">在 Android N 裝置上測試</a>中的指南執行。</li>
+  <li>深入了解 Android N 平台的<a href="{@docRoot}preview/behavior-changes.html">行為變更</a>與 <a href="{@docRoot}preview/api-overview.html">Android N API 與功能</a>。
+
+
+</li>
+</ul>
+
diff --git a/docs/html/_redirects.yaml b/docs/html/_redirects.yaml
index 5ce98ff..545923f 100644
--- a/docs/html/_redirects.yaml
+++ b/docs/html/_redirects.yaml
@@ -1,412 +1,736 @@
-# WARNING: THIS FILE IS NOT USED IN PRODUCTION
-# CHANGES MADE HERE **DO NOT AFFECT** developer.android.com
-
-# Instead, update the following file in the current docs release branch:
-# <docs-release-branch>/vendor/google/docs/app-engine-server/v3/redirects.yaml
-
-#=============================================================================
-# Redirects file.
-# This file contains the list of rewrite rules that are applied when serving
-# pages. Add "pattern: True" to use python regex in to or from.
-#
-#   WATCH OUT -- FROM LINE HAS TO START WITH A HYPHEN
-
 redirects:
-- from: ^/sdk/android-(.*$)
-  to: /about/versions/android-\1
-  pattern: True
-
+- from: /sdk/android-
+  to: /about/versions/android-
 - from: /about/versions/index.html
   to: /about/index.html
-
 - from: /about/versions/api-levels.html
   to: /guide/topics/manifest/uses-sdk-element.html#ApiLevels
-
-- from: /sdk/adding-components.html
-  to: /sdk/exploring.html
-
-- from: /sdk/compatibility-library.html
-  to: /tools/support-library/index.html
-
-- from: /training/basics/fragments/support-lib.html
-  to: /tools/support-library/setup.html
-
-- from: /sdk/eclipse-adt.html
-  to: /tools/sdk/eclipse-adt.html
-
-- from: /sdk/installing.html
-  to: /sdk/installing/index.html
-
-- from: /sdk/installing/next.html
-  to: /training/basics/firstapp/index.html
-
-- from: /sdk/ndk/overview.html
-  to: /tools/sdk/ndk/index.html
-
-- from: /sdk/ndk/...
-  to: /tools/sdk/ndk/...
-
 - from: /sdk/oem-usb.html
   to: /tools/extras/oem-usb.html
-
+- from: /sdk/installing.html
+  to: /sdk/installing/index.html
+- from: /sdk/exploring.html
+  to: /tools/help/sdk-manager.html
+- from: /sdk/installing/adding-packages.html
+  to: /tools/help/sdk-manager.html
+- from: /sdk/installing/bundle.html
+  to: /sdk/index.html
+- from: /sdk/installing/studio.html
+  to: /sdk/index.html
+- from: /sdk/installing/studio-debug.html
+  to: /tools/debugging/debugging-studio.html
+- from: /tools/debugging/debugging-devtools.html
+  to: /tools/debugging/index.html
+- from: /tools/debugging/debugging-projects-cmdline.html
+  to: /tools/debugging/index.html
+- from: /sdk/compatibility-library.html
+  to: /go/libraries/support-library/index.html
+- from: /tools/extras/support-library.html
+  to: /go/libraries/support-library/index.html
+- from: /training/basics/fragments/support-lib.html
+  to: /go/libraries/support-library/setup.html
+- from: /sdk/eclipse-adt.html
+  to: /tools/sdk/eclipse-adt.html
+- from: /sdk/RELEASENOTES.html
+  to: /tools/sdk/tools-notes.html
 - from: /sdk/tools-notes.html
   to: /tools/sdk/tools-notes.html
-
+- from: /sdk/adding-components.html
+  to: /sdk/exploring.html
+- from: /sdk/ndk/overview.html
+  to: /tools/sdk/ndk/index.html
+- from: /sdk/ndk/
+  to: /tools/sdk/ndk/
+- from: /go/vulkan
+  to: /ndk/guides/graphics/index.html
+- from: /tools/sdk/win-usb.html
+  to: /sdk/win-usb.html
+- from: /tools/sdk/index.html
+  to: /sdk/index.html
+- from: /tools/index.html
+  to: /sdk/index.html
+- from: /tools/sdk/installing.html
+  to: /sdk/index.html
+- from: /tools/eclipse/installing-adt.html
+  to: /sdk/installing/index.html?pkg=adt
 - from: /sdk/requirements.html
   to: /sdk/index.html
-
-# ------------------- GUIDE -------------------
-
-- from: /guide/market/...
-  to: /google/play/...
-
-- from: /guide/google/gcm/client-javadoc/...
+- from: /sdk/installing/next.html
+  to: /training/basics/firstapp/index.html
+- from: /sdk/installing/installing-adt.html
+  to: /tools/help/adt.html
+- from: /tools/projects/projects-eclipse.html
+  to: /tools/help/adt.html
+- from: /tools/building/building-eclipse.html
+  to: /tools/help/adt.html
+- from: /tools/building/building-cmdline-ant.html
+  to: /tools/help/adt.html
+- from: /tools/testing/testing_eclipse.html
+  to: /tools/help/adt.html
+- from: /tools/debugging/debugging-projects.html
+  to: /tools/help/adt.html
+- from: /tools/publishing/app-signing-eclipse.html
+  to: /tools/help/adt.html
+- from: /tools/help/uiautomator/.*
+  to: /go/libraries/testing-support/library/
+- from: /tools/testing/testing_ui.html
+  to: /training/testing/ui-testing/index.html
+- from: /tools/testing/activity_test.html
+  to: /training/testing/ui-testing/index.html
+- from: /tools/testing/what_to_test.html
+  to: /distribute/essentials/quality/core.html
+- from: /tools/testing/testing_accessibility.html
+  to: /training/accessibility/testing.html
+- from: /tools/testing/contentprovider_testing.html
+  to: /training/testing/integration-testing/content-provider-testing.html
+- from: /tools/testing/service_testing.html
+  to: /training/testing/integration-testing/service-testing.html
+- from: /tools/testing/activity_testing.html
+  to: /training/testing/ui-testing/index.html
+- from: /training/testing.html
+  to: /training/testing/index.html
+- from: /training/activity-testing/index.html
+  to: /training/testing/start/index.html
+- from: /training/activity-testing/preparing-activity-testing.html
+  to: /training/testing/start/index.html
+- from: /training/activity-testing/activity-basic-testing.html
+  to: /training/testing/start/index.html
+- from: /training/activity-testing/activity-ui-testing.html
+  to: /training/testing/ui-testing/index.html
+- from: /training/activity-testing/activity-unit-testing.html
+  to: /training/testing/unit-testing/index.html
+- from: /training/activity-testing/activity-functional-testing.html
+  to: /training/testing/ui-testing/index.html
+- from: /guide/market/
+  to: /google/play/
+- from: /guide/google/gcm/client-javadoc/.*
   to: /reference/com/google/android/gcm/package-summary.html
-
-- from: /guide/google/gcm/server-javadoc/...
+- from: /guide/google/gcm/server-javadoc/.*
   to: /reference/com/google/android/gcm/server/package-summary.html
-
-- from: /google/play-services/auth.html
-  to: /google/auth/http-auth.html
-
 - from: /guide/google/play/services.html
-  to: /google/play-services/index.html
-
-- from: /guide/google/...
-  to: /google/...
-
+  to: https://developers.google.com/android/guides/overview
+- from: /guide/google/
+  to: /google/
+- from: /training/id-auth/.*
+  to: /google/auth/http-auth.html
+- from: /google/play-services/auth.html
+  to: https://developers.google.com/android/guides/http-auth
+- from: /google/play-services/games.html
+  to: https://developers.google.com/games/services/
+- from: /google/play-services/location.html
+  to: /training/location/index.html
+- from: /google/play-services/plus.html
+  to: /training/sign-in/index.html
+- from: /google/play-services/maps.html
+  to: /training/maps/index.html
+- from: /google/play-services/drive.html
+  to: https://developers.google.com/drive/android/
+- from: /google/play-services/cast.html
+  to: https://developers.google.com/cast/
+- from: /google/play-services/ads.html
+  to: https://developers.google.com/mobile-ads-sdk/
+- from: /google/play-services/wallet.html
+  to: https://developers.google.com/wallet/instant-buy/
+- from: /google/play/safetynet/.*
+  to: /training/safetynet/index.html
+- from: /google/gcm/.*
+  to: https://developers.google.com/cloud-messaging/
+- from: /google/gcs/.*
+  to: https://developers.google.com/datastore/
+- from: /google/play-services/safetynet.html
+  to: /training/safetynet/index.html
+- from: /google/play/billing/v2/api.html
+  to: /google/play/billing/api.html
+- from: /google/play/billing/v2/billing_integrate.html
+  to: /google/play/billing/billing_integrate.html
+- from: /google/play/billing/v2/billing_reference.html
+  to: /google/play/billing/billing_reference.html
+- from: /google/play/billing/v2/billing_subscriptions.html
+  to: /google/play/billing/billing_subscriptions.html
+- from: /google/play/billing/v2
+  to: /google/play/billing/index.html
+- from: /google/play/billing/billing-promos.html
+  to: /google/play/billing/billing_promotions.html
+- from: /reference/com/google/android/gms/location/LocationClient*.html
+  to: /reference/com/google/android/gms/location/package-summary.html
+- from: /reference/com/google/android/gms/plus/PlusClient*.html
+  to: /reference/com/google/android/gms/plus/package-summary.html
+- from: /reference/com/google/android/gms/location/ActivityRecognitionClient.html
+  to: /reference/com/google/android/gms/location/ActivityRecognition.html
 - from: /guide/publishing/licensing.html
   to: /google/play/licensing/index.html
-
 - from: /google/play/billing/billing_about.html
   to: /google/play/billing/index.html
-
-- from: /guide/developing/tools/...
-  to: /tools/help/...
-
-- from: /guide/developing/...
-  to: /tools/...
-
+- from: /guide/developing/tools/
+  to: /tools/help/
+- from: /guide/developing/
+  to: /tools/
 - from: /tools/aidl.html
   to: /guide/components/aidl.html
-
+- from: /guide/market/publishing/multiple-apks.html
+  to: /google/play/publishing/multiple-apks.html
 - from: /guide/publishing/publishing.html
   to: /distribute/tools/launch-checklist.html
-
-- from: /guide/publishing/...
-  to: /tools/publishing/...
-
+- from: /guide/publishing/
+  to: /tools/publishing/
 - from: /guide/topics/fundamentals.html
   to: /guide/components/fundamentals.html
-
 - from: /guide/topics/intents/intents-filters.html
   to: /guide/components/intents-filters.html
-
-- from: /guide/topics/fundamentals/...
-  to: /guide/components/...
-
+- from: /guide/topics/fundamentals/
+  to: /guide/components/
 - from: /guide/topics/clipboard/copy-paste.html
   to: /guide/topics/text/copy-paste.html
-
 - from: /guide/topics/ui/notifiers/index.html
   to: /guide/topics/ui/notifiers/notifications.html
-
-- from: /guide/topics/wireless/...
-  to: /guide/topics/connectivity/...
-
-- from: /guide/topics/drawing/...
+- from: /guide/topics/wireless/
+  to: /guide/topics/connectivity/
+- from: /guide/topics/drawing/.*
   to: /guide/topics/graphics/opengl.html
-
 - from: /guide/topics/connectivity/usb/adk.html
   to: /tools/adk/index.html
-
 - from: /tools/workflow/publishing/versioning.html
   to: /tools/publishing/versioning.html
-
 - from: /tools/workflow/publishing/publishing.html
   to: /tools/publishing/publishing_overview.html
-
 - from: /tools/workflow/publishing_overview.html
   to: /tools/publishing/publishing_overview.html
-
 - from: /tools/workflow/publishing/publishing_overview.html
   to: /tools/publishing/publishing_overview.html
-
 - from: /tools/workflow/app-signing.html
   to: /tools/publishing/app-signing.html
-
 - from: /tools/adk/aoa.html
-  to: http://source.android.com/tech/accessories/aoap/aoa.html
-
+  to: https://source.android.com/tech/accessories/aoap/aoa.html
 - from: /tools/adk/aoa2.html
-  to: http://source.android.com/tech/accessories/aoap/aoa2.html
-
-- from: /guide/topics/usb/...
-  to: /guide/topics/connectivity/usb/...
-
+  to: https://source.android.com/tech/accessories/aoap/aoa2.html
+- from: /sdk/exploring.html
+  to: /sdk/index.html
+- from: /tools/eclipse/migrate-adt.html
+  to: /sdk/installing/migrate.html
+- from: /guide/topics/usb
+  to: /guide/topics/connectivity/usb
 - from: /guide/appendix/api-levels.html
   to: /guide/topics/manifest/uses-sdk-element.html#ApiLevels
-
 - from: /guide/appendix/install-location.html
   to: /guide/topics/data/install-location.html
-
-- from: /guide/basics/...
+- from: /guide/appendix/g-app-intents.html
+  to: /guide/components/intents-common.html
+- from: /guide/basics/.*
   to: /about/index.html
-
 - from: /guide/topics/security/security.html
   to: /training/articles/security-tips.html
-
 - from: /guide/topics/security/index.html
   to: /training/articles/security-tips.html
-
 - from: /guide/appendix/market-filters.html
   to: /google/play/filters.html
-
-- from: /guide/topics/testing/...
-  to: /tools/testing/...
-
+- from: /guide/topics/testing/
+  to: /tools/testing/
 - from: /guide/topics/graphics/animation.html
   to: /guide/topics/graphics/overview.html
-
+- from: /guide/topics/graphics/renderscript/(compute.html|index.html|reference.html)
+  to: /guide/topics/renderscript/index.html
 - from: /guide/topics/graphics/renderscript.html
   to: /guide/topics/renderscript/index.html
-
-- from: /guide/topics/graphics/renderscript/
-  to: /guide/topics/renderscript/index.html
-
+- from: /reference/renderscript/.*
+  to: /guide/topics/renderscript/reference/overview.html
+- from: /guide/topics/renderscript/reference.html
+  to: /guide/topics/renderscript/reference/overview.html
 - from: /guide/topics/location/obtaining-user-location.html
   to: /guide/topics/location/strategies.html
-
-- from: /guide/topics/nfc/...
-  to: /guide/topics/connectivity/nfc/...
-
-- from: /guide/topics/wireless/...
-  to: /guide/topics/connectivity/...
-
-- from: /guide/topics/network/...
-  to: /guide/topics/connectivity/...
-
+- from: /guide/topics/nfc/
+  to: /guide/topics/connectivity/nfc/
+- from: /guide/topics/wireless/
+  to: /guide/topics/connectivity/
+- from: /guide/topics/network/
+  to: /guide/topics/connectivity/
 - from: /resources/articles/creating-input-method.html
   to: /guide/topics/text/creating-input-method.html
-
 - from: /resources/articles/spell-checker-framework.html
   to: /guide/topics/text/spell-checker-framework.html
-
-- from: /resources/tutorials/notepad/...
-  to: /training/notepad/...
-
-- from: /resources/faq/...
-  to: /guide/faq/...
-
+- from: /resources/tutorials/notepad/
+  to: https://developer.android.com/training/basics/firstapp/index.html
+- from: /resources/faq/
+  to: /guide/faq/
 - from: /resources/tutorials/hello-world.html
   to: /training/basics/firstapp/index.html
-
-# add the rest of the tutorials here
-
-- from: /guide/practices/design/...
-  to: /guide/practices/...
-
+- from: /guide/practices/design/
+  to: /guide/practices/
 - from: /guide/practices/accessibility.html
   to: /guide/topics/ui/accessibility/index.html
-
-# move best practices to training
-
 - from: /guide/practices/app-design/performance.html
   to: /training/articles/perf-tips.html
-
 - from: /guide/practices/performance.html
   to: /training/articles/perf-tips.html
-
 - from: /guide/practices/app-design/responsiveness.html
   to: /training/articles/perf-anr.html
-
 - from: /guide/practices/responsiveness.html
   to: /training/articles/perf-anr.html
-
 - from: /guide/practices/security.html
   to: /training/articles/security-tips.html
-
 - from: /guide/practices/jni.html
   to: /training/articles/perf-jni.html
-
-- from: /guide/tutorials/...
-  to: /resources/tutorials/...
-
-# move ui docs to design
-
 - from: /guide/practices/ui_guidelines/index.html
   to: /design/index.html
-
 - from: /guide/practices/ui_guidelines/icon_design.*
   to: /design/style/iconography.html
-
 - from: /guide/practices/ui_guidelines/activity_task_design.html
   to: /design/patterns/app-structure.html
-
 - from: /guide/practices/ui_guidelines/menu_design.html
   to: /design/patterns/actionbar.html
-
-
-# ------------------- RESOURCES -------------------
-
-- from: /resources/dashboard/...
+- from: /design/get-started/ui-overview.html
+  to: /design/handhelds/index.html
+- from: /design/building-blocks/buttons.html
+  to: https://www.google.com/design/spec/components/buttons.html
+- from: /design/building-blocks/dialogs.html
+  to: https://www.google.com/design/spec/components/dialogs.html
+- from: /design/building-blocks/grid-lists.html
+  to: https://www.google.com/design/spec/components/grid-lists.html
+- from: /design/building-blocks/index.html
+  to: https://www.google.com/design/spec/components/bottom-sheets.html
+- from: /design/building-blocks/lists.html
+  to: https://www.google.com/design/spec/components/lists.html
+- from: /design/building-blocks/pickers.html
+  to: https://www.google.com/design/spec/components/pickers.html
+- from: /design/building-blocks/progress.html
+  to: https://www.google.com/design/spec/components/progress-activity.html
+- from: /design/building-blocks/scrolling.html
+  to: https://www.google.com/design/spec/patterns/scrolling-techniques.html
+- from: /design/building-blocks/seek-bars.html
+  to: https://www.google.com/design/spec/components/sliders.html
+- from: /design/building-blocks/spinners.html
+  to: https://www.google.com/design/spec/components/pickers.html
+- from: /design/building-blocks/switches.html
+  to: https://www.google.com/design/spec/components/selection-controls.html
+- from: /design/building-blocks/tabs.html
+  to: https://www.google.com/design/spec/components/tabs.html
+- from: /design/building-blocks/text-fields.html
+  to: https://www.google.com/design/spec/components/text-fields.html
+- from: /design/patterns/app-structure.html
+  to: https://www.google.com/design/spec/patterns/app-structure.html
+- from: /design/patterns/buttons.html
+  to: https://www.google.com/design/spec/components/buttons.html
+- from: /design/patterns/gestures.html
+  to: https://www.google.com/design/spec/patterns/gestures.html
+- from: /design/patterns/index.html
+  to: https://www.google.com/design/spec/patterns/app-structure.html
+- from: /design/patterns/multi-pane-layouts.html
+  to: https://www.google.com/design/spec/layout/principles.html
+- from: /design/patterns/navigation-drawer.html
+  to: https://www.google.com/design/spec/patterns/navigation-drawer.html
+- from: /design/patterns/selection.html
+  to: https://www.google.com/design/spec/patterns/selection.html
+- from: /design/patterns/settings.html
+  to: https://www.google.com/design/spec/patterns/settings.html
+- from: /design/style/color.html
+  to: https://www.google.com/design/spec/style/color.html
+- from: /design/style/iconography.html
+  to: https://www.google.com/design/spec/style/icons.html
+- from: /design/style/index.html
+  to: https://www.google.com/design/spec/style/color.html
+- from: /design/style/metrics-grids.html
+  to: https://www.google.com/design/spec/layout/metrics-keylines.html
+- from: /design/style/themes.html
+  to: https://www.google.com/design/spec/style/color.html
+- from: /design/style/touch-feedback.html
+  to: https://www.google.com/design/spec/animation/responsive-interaction.html
+- from: /design/style/typography.html
+  to: https://www.google.com/design/spec/style/typography.html
+- from: /design/style/writing.html
+  to: https://www.google.com/design/spec/style/writing.html
+- from: /wear/preview/start.html
+  to: /training/building-wearables.html
+- from: /wear/design/user-interface.html
+  to: /design/wear/index.html
+- from: /wear/design/index.html
+  to: /design/wear/creative-vision.html
+- from: /wear/notifications/creating.html
+  to: /training/wearables/notifications/creating.html
+- from: /wear/notifications/remote-input.html
+  to: /training/wearables/notifications/voice-input.html
+- from: /wear/notifications/pages.html
+  to: /training/wearables/notifications/pages.html
+- from: /wear/notifications/stacks.html
+  to: /training/wearables/notifications/stacks.html
+- from: /reference/android/preview/support/
+  to: /reference/android/support/
+- from: /wear/license.html
+  to: /wear/index.html
+- from: /resources/dashboard/.*
   to: /about/dashboards/index.html
-
 - from: /resources/community-groups.html
   to: /support.html
-
+- from: /guide/tutorials/
+  to: /resources/tutorials/
 - from: /resources/tutorials/views/hello-linearlayout.html
   to: /guide/topics/ui/layout/linear.html
-
 - from: /resources/tutorials/views/hello-relativelayout.html
   to: /guide/topics/ui/layout/relative.html
-
 - from: /resources/tutorials/views/hello-listview.html
   to: /guide/topics/ui/layout/listview.html
-
 - from: /resources/tutorials/views/hello-gridview.html
   to: /guide/topics/ui/layout/gridview.html
-
+- from: /guide/webapps/overview.html
+  to: /guide/webapps/index.html
 - from: /resources/tutorials/views/hello-webview.html
   to: /guide/webapps/webview.html
-
 - from: /resources/tutorials/views/hello-formstuff.html
   to: /guide/topics/ui/controls.html
-
 - from: /resources/tutorials/views/hello-datepicker.html
   to: /guide/topics/ui/controls/pickers.html
-
 - from: /resources/tutorials/views/hello-timepicker.html
   to: /guide/topics/ui/controls/pickers.html
-
 - from: /resources/tutorials/views/hello-autocomplete.html
   to: /guide/topics/ui/controls/text.html
-
 - from: /resources/tutorials/views/hello-spinner.html
   to: /guide/topics/ui/controls/spinner.html
-
 - from: /resources/tutorials/opengl/opengl-es10.html
   to: /training/graphics/opengl/index.html
-
 - from: /resources/tutorials/opengl/opengl-es20.html
   to: /training/graphics/opengl/index.html
-
 - from: /resources/tutorials/views/hello-mapview.html
   to: https://developers.google.com/maps/documentation/android/hello-mapview
-
-- from: /resources/tutorials/views/...
+- from: /resources/tutorials/views/.*
   to: /guide/topics/ui/declaring-layout.html#CommonLayouts
-
 - from: /guide/topics/ui/layout-objects.html
   to: /guide/topics/ui/declaring-layout.html#CommonLayouts
-
-- from: /resources/tutorials/localization/...
+- from: /guide/faq/.*
+  to: /training/index.html
+- from: /resources/tutorials/localization/.*
   to: /training/basics/supporting-devices/languages.html
-
-- from: /resources/samples/...
-  to: /tools/samples/index.html
-
-- from: /guide/
-  to: /guide/components/index.html
-  # comment: this redirects guide/ and guide/index.html only
-
-# ------------------- TRAINING -------------------
-
+- from: /resources/samples/.*
+  to: /samples/index.html
+- from: /tools/samples/index.html
+  to: /samples/index.html
+- from: /resources/(?!articles)
+  to: /training/
+- from: /guide/publishing/publishing.html\#BuildaButton
+  to: https://play.google.com/intl/en_us/badges/
+- from: /distribute/essentials/best-practices/games.html
+  to: /distribute/googleplay/guide.html
+- from: /distribute/essentials/best-practices/apps.html
+  to: /distribute/googleplay/guide.html
+- from: /guide/topics/ui/actionbar.html
+  to: /training/appbar/index.html
+- from: /guide/topics/manifest/uses-permission-sdk23-element.html
+  to: /guide/topics/manifest/uses-permission-sdk-23-element.html
 - from: /guide/topics/ui/layout/tabs.html
   to: /training/implementing-navigation/lateral.html
-
 - from: /training/cloudsync/aesync.html
   to: /google/gcm/index.html
-
-- from: /training/basics/location/...
-  to: /training/location/...
-
-# -------------------- MISC ----------------------
-
-- from: /shareables/training/BitmapFun.zip
-  to: /downloads/samples/DisplayingBitmaps.zip
-
+- from: /training/basics/location/
+  to: /training/location/
+- from: /training/monetization/index.html
+  to: /distribute/monetize/index.html
+- from: /training/monetization/ads-and-ux.html
+  to: https://developers.google.com/mobile-ads-sdk/
+- from: /training/notepad/.*
+  to: https://developer.android.com/training/basics/firstapp/index.html
+- from: /training/basics/actionbar/setting-up.html
+  to: /training/appbar/setting-up.html
+- from: /training/basics/actionbar/adding-buttons.html
+  to: /training/appbar/actions.html
+- from: /training/basics/actionbar(/.*)?
+  to: /training/appbar/index.html
+- from: /distribute/open.html
+  to: /distribute/tools/open-distribution.html
+- from: /distribute/googleplay/promote/
+  to: /distribute/tools/promote/
+- from: /distribute/googleplay/publish/preparing.html
+  to: /distribute/tools/launch-checklist.html
+- from: /distribute/googleplay/publish/index.html
+  to: /distribute/googleplay/developer-console.html
+- from: /distribute/googleplay/publish/localizing.html
+  to: /distribute/tools/localization-checklist.html
+- from: /distribute/googleplay/publish/register.html
+  to: /distribute/googleplay/start.html
+- from: /distribute/googleplay/publish/console.html
+  to: /distribute/googleplay/developer-console.html
+- from: /distribute/googleplay/strategies/app-quality.html
+  to: /distribute/essentials/optimizing-your-app.html
+- from: /distribute/googleplay/quality/index.html
+  to: /distribute/essentials/index.html
+- from: /distribute/googleplay/quality/core.html
+  to: /distribute/essentials/quality/core.html
+- from: /distribute/googleplay/quality/tablet.html
+  to: /distribute/essentials/quality/tablets.html
+- from: /distribute/googleplay/quality/tablets.html
+  to: /distribute/essentials/quality/tablets.html
+- from: /distribute/googleplay/quality/auto.html
+  to: /distribute/essentials/quality/auto.html
+- from: /distribute/googleplay/about/visibility.html
+  to: /distribute/googleplay/about.html
+- from: /distribute/googleplay/about/monetizing.html
+  to: /distribute/monetize/index.html
+- from: /distribute/googleplay/about/distribution.html
+  to: /distribute/googleplay/developer-console.html
+- from: /distribute/googleplay/spotlight/
+  to: /distribute/stories/
+- from: /distribute/stories/localization.html
+  to: /distribute/stories/index.html
+- from: /distribute/stories/tablets.html
+  to: /distribute/stories/index.html
+- from: /distribute/googleplay/edu/index.html
+  to: /distribute/googleplay/edu/about.html
+- from: /distribute/googleplay/edu/contact.html
+  to: /distribute/googleplay/edu/about.html
+- from: /distribute/googleplay/edu/guidelines.html
+  to: https://developers.google.com/edu/guidelines
+- from: /distribute/essentials/gpfe-guidelines.html
+  to: https://developers.google.com/edu/guidelines
+- from: /distribute/googleplay/policies/.*
+  to: https://support.google.com/googleplay/android-developer/answer/4430948
+- from: /distribute/essentials/quality/index.html
+  to: /distribute/esentials/index.html
+- from: /distribute/tools/promote/index.html
+  to: /distribute/tools/index.html
+- from: /distribute/googleplay/edu/index.html
+  to: /distribute/googleplay/edu/about.html
+- from: /distribute/googleplay/edu/guidelines.html
+  to: https://developers.google.com/edu/guidelines
+- from: /distribute/essentials/gpfe-guidelines.html
+  to: https://developers.google.com/edu/guidelines
+- from: /distribute/engage/analytics.html
+  to: /distribute/analyze/index.html
+- from: /distribute/users/appindexing.html
+  to: /distribute/users/index.html
+- from: /engage/app-updates.html
+  to: /distribute/engage/index.html
+- from: /engage/community.html
+  to: /distribute/engage/index.html
+- from: /essentials/best-practices/*
+  to: /distribute/googleplay/guide.html
+- from: /tools/index.html
+  to: /distribute/essentials/index.html#tools
+- from: /users/build-buzz.html
+  to: /distribute/users/index.html
+- from: /users/build-community.html
+  to: /distribute/users/index.html
+- from: /distribute/users/build-community.html
+  to: /distribute/users/index.html
+- from: /users/know-your-user.html
+  to: /distribute/users/index.html
 - from: /shareables/auto/AndroidAuto-audio-apps.pdf
-  to: http://google.com/design/spec-auto/audio-apps/design-principles.html
-
+  to: https://google.com/design/spec-auto/audio-apps/audio-app-anatomy.html
 - from: /shareables/auto/AndroidAuto-messaging-apps.pdf
-  to: http://google.com/design/spec-auto/messaging-apps/voice-based-messaging.html
-
+  to: https://google.com/design/spec-auto/messaging-apps/voice-based-messaging.html
 - from: /shareables/auto/AndroidAuto-custom-colors.pdf
-  to: http://google.com/design/spec-auto/colors-branding/color-themes.html
-
-- from: /shareables/...
-  to: http://commondatastorage.googleapis.com/androiddevelopers/shareables/...
-
-- from: /downloads/...
-  to: http://commondatastorage.googleapis.com/androiddevelopers/...
-
+  to: https://google.com/design/spec-auto/colors-branding/color-themes.html
 - from: /search.html
   to: /index.html
-
 - from: /videos/index.html
   to: /develop/index.html
-
 - from: /live/index.html
   to: https://developers.google.com/live/
-
-# ---------- PLATFORM VERSIONS ----------------
-
+- from: /intl/zh-CN/
+  to: /intl/zh-cn/
+- from: /intl/zh-TW/
+  to: /intl/zh-tw/
 - from: /4.2
   to: /about/versions/android-4.2.html
-
 - from: /4.1
   to: /about/versions/android-4.1.html
-
 - from: /4.0
   to: /about/versions/android-4.0.html
-
+- from: /5/?$
+  to: /about/versions/android-5.0.html
+- from: /(m|mm|marshmallow)/?$
+  to: /about/versions/marshmallow/index.html
+- from: /(l|ll|lp|lollipop)/?$
+  to: /about/versions/lollipop.html
+- from: /(k|kk|kitkat)/?$
+  to: /about/versions/kitkat.html
 - from: /(j|jb|jellybean)/?$
   to: /about/versions/jelly-bean.html
-  pattern: True
-
 - from: /(i|ics|icecreamsandwich)/?$
   to: /about/versions/android-4.0-highlights.html
-  pattern: True
-
-- from: /(h|hc|honeycomb)/?$
-  to: /about/versions/android-3.0-highlights.html
-  pattern: True
-
-- from: /(g|gb|gingerbread)/?$
-  to: /about/versions/android-2.3-highlights.html
-  pattern: True
-
-# ---------- MISC -----------------
-
-- from: /\+/?$
+- from: /%2B/?$
   to: https://plus.google.com/108967384991768947849/posts
-  pattern: True
-
 - from: /blog
-  to: http://android-developers.blogspot.com
-
+  to: https://android-developers.blogspot.com/
 - from: /stats
   to: /about/dashboards/index.html
-
 - from: /youtube
-  to: http://www.youtube.com/user/androiddevelopers
-
-- from: /playbadge
-  to: http://developer.android.com/distribute/googleplay/promote/badges.html
-
-- from: /deviceart
-  to: http://developer.android.com/distribute/promote/device-art.html
-
+  to: https://www.youtube.com/user/androiddevelopers
+- from: /playbadge/?$
+  to: https://play.google.com/intl/en_us/badges/
+- from: /distribute/tools/promote/badges.html
+  to: https://play.google.com/intl/en_us/badges/
+- from: /deviceart/?$
+  to: /distribute/tools/promote/device-art.html
+- from: /distribute/promote/device-art.html
+  to: /distribute/tools/promote/device-art.html
+- from: /edu/signup/?$
+  to: https://services.google.com/fb/forms/playedu
+- from: /edu/?$
+  to: /distribute/googleplay/edu/about.html
 - from: /edu/signup
   to: https://services.google.com/fb/forms/playedu
-
-- from: /edu
-  to: /distribute/googleplay/edu/index.html
-
+- from: /families/?$
+  to: /distribute/googleplay/families/about.html
 - from: /preview/google-play-services-wear.html
   to: /training/building-wearables.html
-
-# ---------- DISTRIBUTE ------------------
+- from: /preview/notifications.html
+  to: /design/patterns/notifications.html
+- from: /preview/tv/start/hardware-features.html
+  to: /training/tv/start/hardware.html
+- from: /preview/tv/ui/layouts.html
+  to: /training/tv/start/layouts.html
+- from: /preview/tv/ui/navigation.html
+  to: /training/tv/start/navigation.html
+- from: /preview/tv/ui/browse.html
+  to: /training/tv/playback/browse.html
+- from: /preview/tv/ui/details.html
+  to: /training/tv/playback/details.html
+- from: /preview/tv/ui/in-app-search.html
+  to: /training/tv/discovery/in-app-search.html
+- from: /preview/tv/ui/recommendations.html
+  to: /training/tv/discovery/recommendations.html
+- from: /training/tv/optimizing-layouts-tv.html
+  to: /training/tv/start/layouts.html
+- from: /training/tv/optimizing-navigation-tv.html
+  to: /training/tv/start/navigation.html
+- from: /training/tv/unsupported-features-tv.html
+  to: /training/tv/start/hardware.html
+- from: /preview/tv/design/index.html
+  to: /design/tv/index.html
+- from: /preview/tv/start/index.html
+  to: /training/tv/start/index.html
+- from: /preview/tv/tif/index.html
+  to: /training/tv/tif/index.html
+- from: /preview/tv/games/index.html
+  to: /training/tv/games/index.html
+- from: /preview/tv/ui/index.html
+  to: /training/tv/start/layouts.html
+- from: /preview/tv/adt-1/index.html
+  to: /tv/adt-1/index.html
+- from: /preview/tv/publish/index.html
+  to: /distribute/essentials/quality/tv.html
+- from: /preview/tv/index.html
+  to: /training/tv/index.html
+- from: /preview/material/index.html
+  to: /design/material/index.html
+- from: /preview/material/get-started.html
+  to: /training/material/get-started.html
+- from: /preview/material/theme.html
+  to: /training/material/theme.html
+- from: /preview/material/ui-widgets.html
+  to: /training/material/lists-cards.html
+- from: /preview/material/views-shadows.html
+  to: /training/material/shadows-clipping.html
+- from: /preview/material/animations.html
+  to: /training/material/animations.html
+- from: /preview/material/compatibility.html
+  to: /training/material/compatibility.html
+- from: /preview/material/
+  to: /design/material/index.html
+- from: /auto/overview/
+  to: /training/auto/start/index.html
+- from: /training/location/activity-recognition.html
+  to: /training/location/index.html
+- from: /training/location/location-testing.html
+  to: /training/location/index.html
+- from: /google/gcm/adv.html
+  to: /google/gcm/gcm.html
+- from: /work
+  to: /training/enterprise/index.html
 - from: /distribute/tools/promote/badge-files.html
-  to: /distribute/tools/promote/badges.html
+  to: https://play.google.com/intl/en_us/badges/
+- from: /google/gcm/.*
+  to: https://developers.google.com/cloud-messaging/
+- from: /training/cloudsync/gcm.html
+  to: /training/cloudsync/index.html
+- from: /sdk/api_diff/([3-9]|1[0-8])/.*
+  to: https://commondatastorage.googleapis.com/androiddevelopers/api_diff/\1.tar.gz
+- from: /android-pay
+  to: https://developers.google.com/android-pay
+- from: /google/play/billing/gp-purchase-status-api.html
+  to: /google/play/developer-api.html
+- from: /about/index.html
+  to: /about/versions/lollipop.html
+- from: /google/play-services/index.html
+  to: https://developers.google.com/android/guides/overview
+- from: /google/play-services/setup.html
+  to: https://developers.google.com/android/guides/setup
+- from: /google/auth/api-client.html
+  to: https://developers.google.com/android/guides/api-client
+- from: /google/auth/http-auth.html
+  to: https://developers.google.com/android/guides/http-auth
+- from: /reference/gms-packages.html
+  to: https://developers.google.com/android/reference/packages
+- from: /reference/com/google/android/gms/
+  to: https://developers.google.com/android/reference/com/google/android/gms/
+- from: /preview/features/runtime-permissions.html
+  to: /training/permissions/index.html
+- from: /preview/features/app-linking.html
+  to: /training/app-links/index.html
+- from: /preview/backup/index.html
+  to: /training/backup/autosyncapi.html
+- from: /preview/features/power-mgmt.html
+  to: /training/monitoring-device-state/doze-standby.html
+- from: /preview/dev-community
+  to: https://plus.google.com/communities/103655397235276743411
+- from: /preview/(bug|bugreport)/?$
+  to: https://code.google.com/p/android/issues/entry?template=Developer%20preview%20report
+- from: /preview/(bugs|bugreports)/?$
+  to: https://code.google.com/p/android/issues/list?can=2&q=label%3ADevPreview-N
+- from: /2016/03/first-preview-of-android-n-developer.html
+  to: http://android-developers.blogspot.com/2016/03/first-preview-of-android-n-developer.html
+- from: /r/studio-ui/vector-asset-studio.html
+  to: /tools/help/vector-asset-studio.html
+- from: /r/studio-ui/image-asset-studio.html
+  to: /tools/help/image-asset-studio.html
+- from: /r/studio-ui/project-structure.html
+  to: /tools/help/project-mgmt.html
+- from: /r/studio-ui/android-monitor.html
+  to: /tools/help/android-monitor.html
+- from: /r/studio-ui/am-logcat.html
+  to: /tools/help/am-logcat.html
+- from: /r/studio-ui/am-memory.html
+  to: /tools/help/am-memory.html
+- from: /r/studio-ui/am-cpu.html
+  to: /tools/help/am-cpu.html
+- from: /r/studio-ui/am-gpu.html
+  to: /tools/help/am-gpu.html
+- from: /r/studio-ui/am-network.html
+  to: /tools/help/am-network.html
+- from: /r/studio-ui/am-hprof.html
+  to: /tools/help/am-memory.html
+- from: /r/studio-ui/am-allocation.html
+  to: /tools/help/am-memory.html
+- from: /r/studio-ui/am-methodtrace.html
+  to: /tools/help/am-cpu.html
+- from: /r/studio-ui/am-sysinfo.html
+  to: /tools/help/android-monitor.html
+- from: /r/studio-ui/am-screenshot.html
+  to: /tools/help/android-monitor.html
+- from: /r/studio-ui/am-video.html
+  to: /tools/help/android-monitor.html
+- from: /r/studio-ui/avd-manager.html
+  to: /tools/help/avd-manager.html
+- from: /r/studio-ui/rundebugconfig.html
+  to: /tools/devices/emulator.html
+- from: /r/studio-ui/devicechooser.html
+  to: /tools/devices/emulator.html
+- from: /r/studio-ui/virtualdeviceconfig.html
+  to: /tools/devices/emulator.html
+- from: /r/studio-ui/emulator.html
+  to: /tools/devices/emulator.html
+- from: /r/studio-ui/instant-run.html
+  to: /tools/building/building-studio.html#instant-run
+- from: /reference/org/apache/http/.*
+  to: /about/versions/marshmallow/android-6.0-changes.html#behavior-apache-http-client
+- from: /shareables/
+  to: https://commondatastorage.googleapis.com/androiddevelopers/shareables/
+- from: /downloads/
+  to: https://commondatastorage.googleapis.com/androiddevelopers/
+
+# Redirects for the new go/libraries/ area
+
+- from: /tools/support-library
+  to: /go/libraries/support-library
+
+- from: /tools/data-binding/...
+  to: /go/libraries/data-binding
+
+- from: /tools/testing-support-library
+  to: /go/libraries/testing-support-library
diff --git a/docs/html/about/_book.yaml b/docs/html/about/_book.yaml
index 04150bd..fdbe53f 100644
--- a/docs/html/about/_book.yaml
+++ b/docs/html/about/_book.yaml
@@ -16,13 +16,19 @@
     path: /about/versions/android-5.1.html
   - title: Android 5.0 APIs
     path: /about/versions/android-5.0.html
-    custom_link_attributes:
-    - es-lang="API de Android 5.0"
-    - ja-lang="Android 5.0 API"
-    - ko-lang="Android 5.0 API"
-    - ru-lang="API для Android 5.0"
-    - zh-cn-lang="Android 5.0 API"
-    - zh-tw-lang="Android 5.0 API"
+    path_attributes:
+    - name: es-lang
+      value: API de Android 5.0
+    - name: ja-lang
+      value: Android 5.0 API
+    - name: ko-lang
+      value: Android 5.0 API
+    - name: ru-lang
+      value: API для Android 5.0
+    - name: zh-cn-lang
+      value: Android 5.0 API
+    - name: zh-tw-lang
+      value: Android 5.0 API
   - title: Android 5.0 Changes
     path: /about/versions/android-5.0-changes.html
 
diff --git a/docs/html/about/dashboards/index.jd b/docs/html/about/dashboards/index.jd
index f0e1a3c..f5e21e3 100644
--- a/docs/html/about/dashboards/index.jd
+++ b/docs/html/about/dashboards/index.jd
@@ -1,5 +1,5 @@
 page.title=Dashboards
-page.metaDescription=page.metaDescription=An overview of device characteristics and platform versions that are active in the Android ecosystem.
+page.metaDescription=An overview of device characteristics and platform versions that are active in the Android ecosystem.
 page.tags="android, dashboard, platforms, versions"
 meta.tags="ecosystem, versions, whatsnew, dashboards"
 page.image=https://chart.googleapis.com/chart?chl=GL%202.0%7CGL%203.0%7CGL%203.1&chf=bg%2Cs%2C00000000&chd=t%3A51.6%2C40.7%2C7.7&chco=c4df9b%2C6fad0c&cht=p&chs=400x250
diff --git a/docs/html/tools/adk/adk.jd b/docs/html/adk/adk.jd
similarity index 100%
rename from docs/html/tools/adk/adk.jd
rename to docs/html/adk/adk.jd
diff --git a/docs/html/tools/adk/adk2.jd b/docs/html/adk/adk2.jd
similarity index 100%
rename from docs/html/tools/adk/adk2.jd
rename to docs/html/adk/adk2.jd
diff --git a/docs/html/tools/adk/index.jd b/docs/html/adk/index.jd
similarity index 100%
rename from docs/html/tools/adk/index.jd
rename to docs/html/adk/index.jd
diff --git a/docs/html/design/_book.yaml b/docs/html/design/_book.yaml
index 4575475..df5406f 100644
--- a/docs/html/design/_book.yaml
+++ b/docs/html/design/_book.yaml
@@ -4,24 +4,35 @@
   section:
   - title: Design Principles
     path: /design/get-started/principles.html
-    custom_link_attributes:
-    - es-lang="Principios de diseño para Android"
-    - ja-lang="Android デザイン指針"
-    - ko-lang="Android 디자인 원칙"
-    - pt-br-lang="Princípios de projeto para Android"
-    - ru-lang="Принципы проектирования Android"
-    - zh-cn-lang="Android 设计原则"
-    - zh-tw-lang="Android 設計原則"
+    path_attributes:
+    - name: es-lang
+      value: Principios de diseño para Android
+    - name: ja-lang
+      value: Android デザイン指針
+    - name: ko-lang
+      value: Android 디자인 원칙
+    - name: pt-br-lang
+      value: Princípios de projeto para Android
+    - name: ru-lang
+      value: Принципы проектирования Android
+    - name: zh-cn-lang
+      value: Android 设计原则
+    - name: zh-tw-lang
+      value: Android 設計原則
   - title: New in Android
     path: /design/patterns/new.html
 
 - title: Material for Android
   path: /design/material/index.html
-  custom_link_attributes:
-  - ja-lang="マテリアル デザイン"
-  - ko-lang="머티어리얼 디자인"
-  - zh-cn-lang="材料设计"
-  - zh-tw-lang="材料設計"
+  path_attributes:
+  - name: ja-lang
+    value: マテリアル デザイン
+  - name: ko-lang
+    value: 머티어리얼 디자인
+  - name: zh-cn-lang
+    value: 材料设计
+  - name: zh-tw-lang
+    value: 材料設計
 
 - title: Devices
   path: /design/devices.html
@@ -64,24 +75,38 @@
     path: /design/style/devices-displays.html
   - title: Navigation
     path: /design/patterns/navigation.html
-    custom_link_attributes:
-    - es-lang="Navegación con los botones Back y Up"
-    - ja-lang="Back と Up を使用したナビゲーション"
-    - ko-lang="뒤로 및 위로 탐색 기능이 포함된 탐색"
-    - pt-br-lang="Navegação com Voltar e Para cima"
-    - ru-lang="Навигация с помощью кнопок \"Назад\" и \"Вверх\""
-    - zh-cn-lang="使用返回和向上导航"
-    - zh-tw-lang="使用 [返回] 及 [上一層] 導覽"
+    path_attributes:
+    - name: es-lang
+      value: Navegación con los botones Back y Up
+    - name: ja-lang
+      value: Back と Up を使用したナビゲーション
+    - name: ko-lang
+      value: 뒤로 및 위로 탐색 기능이 포함된 탐색
+    - name: pt-br-lang
+      value: Navegação com Voltar e Para cima
+    - name: ru-lang
+      value: Навигация с помощью кнопок "Назад" и "Вверх"
+    - name: zh-cn-lang
+      value: 使用返回和向上导航
+    - name: zh-tw-lang
+      value: 使用 [返回] 及 [上一層] 導覽
   - title: Notifications
     path: /design/patterns/notifications.html
-    custom_link_attributes:
-    - es-lang="Notificaciones"
-    - ja-lang="通知"
-    - ko-lang="알림"
-    - pt-br-lang="Notificações"
-    - ru-lang="Уведомления"
-    - zh-cn-lang="通知"
-    - zh-tw-lang="通知"
+    path_attributes:
+    - name: es-lang
+      value: Notificaciones
+    - name: ja-lang
+      value: 通知
+    - name: ko-lang
+      value: 알림
+    - name: pt-br-lang
+      value: Notificações
+    - name: ru-lang
+      value: Уведомления
+    - name: zh-cn-lang
+      value: 通知
+    - name: zh-tw-lang
+      value: 通知
   - title: Widgets
     path: /design/patterns/widgets.html
   - title: Swipe Views
@@ -90,14 +115,21 @@
     path: /design/patterns/fullscreen.html
   - title: Confirming & Acknowledging
     path: /design/patterns/confirming-acknowledging.html
-    custom_link_attributes:
-    - es-lang="Confirmación y reconocimiento"
-    - ja-lang="確認と通知"
-    - ko-lang="확인 및 승인하기"
-    - pt-br-lang="Confirmação e reconhecimento"
-    - ru-lang="Подтверждение и уведомление"
-    - zh-cn-lang="确认和确知"
-    - zh-tw-lang="確認及確認完成"
+    path_attributes:
+    - name: es-lang
+      value: Confirmación y reconocimiento
+    - name: ja-lang
+      value: 確認と通知
+    - name: ko-lang
+      value: 확인 및 승인하기
+    - name: pt-br-lang
+      value: Confirmação e reconhecimento
+    - name: ru-lang
+      value: Подтверждение и уведомление
+    - name: zh-cn-lang
+      value: 确认和确知
+    - name: zh-tw-lang
+      value: 確認及確認完成
   - title: Pure Android
     path: /design/patterns/pure-android.html
   - title: Compatibility
diff --git a/docs/html/design/tv/patterns.jd b/docs/html/design/tv/patterns.jd
index 622e678..53bdd05 100644
--- a/docs/html/design/tv/patterns.jd
+++ b/docs/html/design/tv/patterns.jd
@@ -23,14 +23,15 @@
 
 <h2 id="banner">App and Game Banners</h3>
 
-<p>App Banners represent your app or game on the home screens of TV devices and serve and as a way for
-  users to launch your app. Here are the specific requirements for a banner image:
-</p>
+<p>Banners are images that represent the face of your app or game on the home
+  screens of Android TV devices and serve as a way for users to launch your app.
+  Here are the requirements for your banner image:</p>
 
 <ul>
   <li>Size: 320 x 180 px, xhdpi resource</li>
-  <li>Text should be included in the image. If your app is available in more than one
-      language, you must provide versions of the banner image for each supported language.</li>
+  <li>Text must be included in the image. If your app is available in more than
+  one language, you must provide versions of the banner image for each supported
+  language.</li>
 </ul>
 
 <p>See <a href="{@docRoot}training/tv/start/start.html#banner">Provide a home screen banner</a>
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/distribute/essentials/_book.yaml b/docs/html/distribute/essentials/_book.yaml
index e8b7811..6a2c8f5 100644
--- a/docs/html/distribute/essentials/_book.yaml
+++ b/docs/html/distribute/essentials/_book.yaml
@@ -1,13 +1,15 @@
 toc:
 - title: Core App Quality
   path: /distribute/essentials/quality/core.html
-  custom_link_attributes:
-  - zh-cn-lang="应用的核心质量"
+  path_attributes:
+  - name: zh-cn-lang
+    value: 应用的核心质量
 
 - title: Tablet App Quality
   path: /distribute/essentials/quality/tablets.html
-  custom_link_attributes:
-  - zh-cn-lang="平板电脑应用的质量"
+  path_attributes:
+  - name: zh-cn-lang
+    value: 平板电脑应用的质量
 
 - title: Wear App Quality
   path: /distribute/essentials/quality/wear.html
@@ -20,31 +22,36 @@
 
 - title: Launch Checklist
   path: /distribute/tools/launch-checklist.html
-  custom_link_attributes:
-  - zh-cn-lang="发布检查清单"
+  path_attributes:
+  - name: zh-cn-lang
+    value: 发布检查清单
 
 - title: Localization Checklist
   path: /distribute/tools/localization-checklist.html
-  custom_link_attributes:
-  - zh-cn-lang="本地化检查清单"
+  path_attributes:
+  - name: zh-cn-lang
+    value: 本地化检查清单
 
 - title: Brand Guidelines
   path: /distribute/tools/promote/brand.html
-  custom_link_attributes:
-  - zh-cn-lang="品牌指南"
+  path_attributes:
+  - name: zh-cn-lang
+    value: 品牌指南
 
 - title: Device Art Generator
   path: /distribute/tools/promote/device-art.html
 
 - title: Google Play Badges
   path: https://play.google.com/intl/en_us/badges/
-  custom_link_attributes:
-  - zh-cn-lang="Google Play 徽章生成器"
+  path_attributes:
+  - name: zh-cn-lang
+    value: Google Play 徽章生成器
 
 - title: Linking to Your Products
   path: /distribute/tools/promote/linking.html
-  custom_link_attributes:
-  - zh-cn-lang="链接到您的商品"
+  path_attributes:
+  - name: zh-cn-lang
+    value: 链接到您的商品
 
 - title: Alternative Distribution
   path: /distribute/tools/open-distribution.html
diff --git a/docs/html/distribute/essentials/quality/tv.jd b/docs/html/distribute/essentials/quality/tv.jd
index 18c7a32..9ed88d1 100644
--- a/docs/html/distribute/essentials/quality/tv.jd
+++ b/docs/html/distribute/essentials/quality/tv.jd
@@ -80,7 +80,7 @@
 </tr>
 
 <tr>
-  <td rowspan="4" id="launcher">
+  <td rowspan="5" id="launcher">
     Launcher
   </td>
 
@@ -132,6 +132,18 @@
 </tr>
 
 <tr>
+  <td id="TV-LS">
+    TV-LS
+  </td>
+  <td>
+    <p style="margin-bottom:.5em;">
+      App runs successfully when the user selects the application banner from the home screen.
+      (<a href="{@docRoot}training/tv/start/start.html#run">Learn how</a>)
+    </p>
+  </td>
+</tr>
+
+<tr>
   <td rowspan="5" id="layout">
     Layout
   </td>
@@ -239,6 +251,36 @@
   </td>
 </tr>
 
+<tr>
+  <td rowspan="2" id="search">
+    Search
+  </td>
+
+  <td id="TV-SD">
+    TV-SD
+  </td>
+  <td>
+    <p style="margin-bottom:.5em;">
+      In-app search results are navigable using D-pad controls, unless the app
+      requires a gamepad controller, as specified in <a href="#TV-GP">TV-GP</a>.
+      (<a href="{@docRoot}training/tv/start/navigation.html#d-pad-navigation">Learn how</a>)
+    </p>
+  </td>
+</tr>
+
+<tr>
+  <td id="TV-SB">
+    TV-SB
+  </td>
+  <td>
+    <p style="margin-bottom:.5em;">
+      An in-app search query should show up in the search box, similar to the user interface provided
+      by {@link android.support.v17.leanback.app.SearchFragment}, and results should be relevant to
+      that query.
+      (<a href="{@docRoot}training/tv/discovery/in-app-search.html">Learn how</a>)
+    </p>
+  </td>
+</tr>
 
 </table>
 
diff --git a/docs/html/distribute/googleplay/_book.yaml b/docs/html/distribute/googleplay/_book.yaml
index 009d1c07..ede18f4 100644
--- a/docs/html/distribute/googleplay/_book.yaml
+++ b/docs/html/distribute/googleplay/_book.yaml
@@ -1,75 +1,119 @@
 toc:
 - title: The Google Play Opportunity
   path: /distribute/googleplay/about.html
-  custom_link_attributes:
-  - es-lang="La oportunidad de Google Play"
-  - ja-lang="Google Play の可能性"
-  - ko-lang="Google Play 활용 기회"
-  - pt-br-lang="A oportunidade do Google Play"
-  - ru-lang="Возможности Google Play"
-  - zh-cn-lang="Google Play 蕴藏的机会"
-  - zh-tw-lang="Google Play商機"
+  path_attributes:
+  - name: es-lang
+    value: La oportunidad de Google Play
+  - name: ja-lang
+    value: Google Play の可能性
+  - name: ko-lang
+    value: Google Play 활용 기회
+  - name: pt-br-lang
+    value: A oportunidade do Google Play
+  - name: ru-lang
+    value: Возможности Google Play
+  - name: zh-cn-lang
+    value: Google Play 蕴藏的机会
+  - name: zh-tw-lang
+    value: Google Play商機
 
 - title: Get Started with Publishing
   path: /distribute/googleplay/start.html
-  custom_link_attributes:
-  - es-lang="Comienza a publicar"
-  - ja-lang="アプリを公開する"
-  - ko-lang="게시 시작하기"
-  - pt-br-lang="Introdução à publicação"
-  - ru-lang="Первые шаги в публикациях"
-  - zh-cn-lang="开始发布"
-  - zh-tw-lang="開始發行"
+  path_attributes:
+  - name: es-lang
+    value: Comienza a publicar
+  - name: ja-lang
+    value: アプリを公開する
+  - name: ko-lang
+    value: 게시 시작하기
+  - name: pt-br-lang
+    value: Introdução à publicação
+  - name: ru-lang
+    value: Первые шаги в публикациях
+  - name: zh-cn-lang
+    value: 开始发布
+  - name: zh-tw-lang
+    value: 開始發行
 
 - title: Developer Console
   path: /distribute/googleplay/developer-console.html
-  custom_link_attributes:
-  - es-lang="Consola para desarrolladores"
-  - ja-lang="デベロッパー コンソール"
-  - ko-lang="개발자 콘솔"
-  - pt-br-lang="Console do Desenvolvedor"
-  - ru-lang="Консоль разработчика"
-  - zh-cn-lang="开发者控制台"
+  path_attributes:
+  - name: es-lang
+    value: Consola para desarrolladores
+  - name: ja-lang
+    value: デベロッパー コンソール
+  - name: ko-lang
+    value: 개발자 콘솔
+  - name: pt-br-lang
+    value: Console do Desenvolvedor
+  - name: ru-lang
+    value: Консоль разработчика
+  - name: zh-cn-lang
+    value: 开发者控制台
 
 - title: Distribute to Android Wear
   path: /distribute/googleplay/wear.html
-  custom_link_attributes:
-  - es-lang="Distribución para Android Wear"
-  - ja-lang="Android Wear への配布"
-  - ko-lang="Android Wear에 배포"
-  - pt-br-lang="Distribuindo para Android Wear"
-  - ru-lang="Распространение приложений Android Wear"
-  - zh-cn-lang="分发到 Android Wear"
-  - zh-tw-lang="散佈至 Android Wear"
+  path_attributes:
+  - name: es-lang
+    value: Distribución para Android Wear
+  - name: ja-lang
+    value: Android Wear への配布
+  - name: ko-lang
+    value: Android Wear에 배포
+  - name: pt-br-lang
+    value: Distribuindo para Android Wear
+  - name: ru-lang
+    value: Распространение приложений Android Wear
+  - name: zh-cn-lang
+    value: 分发到 Android Wear
+  - name: zh-tw-lang
+    value: 散佈至 Android Wear
 
 - title: Distribute to Android TV
   path: /distribute/googleplay/tv.html
-  custom_link_attributes:
-  - es-lang="Distribución para Android TV"
-  - ja-lang="Android TV への配布"
-  - ko-lang="Android TV에 배포"
-  - pt-br-lang="Distribuindo para Android TV"
-  - ru-lang="Распространение приложений в Android TV"
-  - zh-cn-lang="分发到 Android TV"
-  - zh-tw-lang="散佈至 Android 電視"
+  path_attributes:
+  - name: es-lang
+    value: Distribución para Android TV
+  - name: ja-lang
+    value: Android TV への配布
+  - name: ko-lang
+    value: Android TV에 배포
+  - name: pt-br-lang
+    value: Distribuindo para Android TV
+  - name: ru-lang
+    value: Распространение приложений в Android TV
+  - name: zh-cn-lang
+    value: 分发到 Android TV
+  - name: zh-tw-lang
+    value: 散佈至 Android 電視
 
 - title: Distribute to Android Auto
   path: /distribute/googleplay/auto.html
-  custom_link_attributes:
-  - es-lang="Distribución para Android Auto"
-  - ja-lang="Android Auto への配布"
-  - ko-lang="Android Auto에 배포"
-  - pt-br-lang="Distribuindo para o Android Auto"
-  - ru-lang="Распространение приложений для Android Auto"
-  - zh-cn-lang="分发到 Android Auto"
-  - zh-tw-lang="散佈至 Android Auto"
+  path_attributes:
+  - name: es-lang
+    value: Distribución para Android Auto
+  - name: ja-lang
+    value: Android Auto への配布
+  - name: ko-lang
+    value: Android Auto에 배포
+  - name: pt-br-lang
+    value: Distribuindo para o Android Auto
+  - name: ru-lang
+    value: Распространение приложений для Android Auto
+  - name: zh-cn-lang
+    value: 分发到 Android Auto
+  - name: zh-tw-lang
+    value: 散佈至 Android Auto
 
 - title: Designed for Families
   path: /distribute/googleplay/families/about.html
-  custom_link_attributes:
-  - es-lang="Diseñado para la familia"
-  - ru-lang="Для всей семьи"
-  - zh-cn-lang="为家庭设计"
+  path_attributes:
+  - name: es-lang
+    value: Diseñado para la familia
+  - name: ru-lang
+    value: Для всей семьи
+  - name: zh-cn-lang
+    value: 为家庭设计
 
 - title: Google Play for Work
   path: /distribute/googleplay/work/about.html
@@ -90,11 +134,18 @@
 
 - title: Find Success on Google Play
   path: /distribute/googleplay/guide.html
-  custom_link_attributes:
-  - es-lang="Cómo tener éxito en Google Play"
-  - ja-lang="Google Play で成功を手にする"
-  - ko-lang="Google Play에서 성공 모색"
-  - pt-br-lang="Obtendo sucesso no Google Play"
-  - ru-lang="Найдите свой путь к успеху в Google Play"
-  - zh-cn-lang="在 Google Play 上取得成功"
-  - zh-tw-lang="在 Google Play 上尋找成功"
+  path_attributes:
+  - name: es-lang
+    value: Cómo tener éxito en Google Play
+  - name: ja-lang
+    value: Google Play で成功を手にする
+  - name: ko-lang
+    value: Google Play에서 성공 모색
+  - name: pt-br-lang
+    value: Obtendo sucesso no Google Play
+  - name: ru-lang
+    value: Найдите свой путь к успеху в Google Play
+  - name: zh-cn-lang
+    value: 在 Google Play 上取得成功
+  - name: zh-tw-lang
+    value: 在 Google Play 上尋找成功
diff --git a/docs/html/distribute/tools/_book.yaml b/docs/html/distribute/tools/_book.yaml
index 57e03ba..4064c34 100644
--- a/docs/html/distribute/tools/_book.yaml
+++ b/docs/html/distribute/tools/_book.yaml
@@ -1,31 +1,36 @@
 toc:
 - title: Launch Checklist
   path: /distribute/tools/launch-checklist.html
-  custom_link_attributes:
-  - zh-cn-lang="发布检查清单"
+  path_attributes:
+  - name: zh-cn-lang
+    value: 发布检查清单
 
 - title: Localization Checklist
   path: /distribute/tools/localization-checklist.html
-  custom_link_attributes:
-  - zh-cn-lang="本地化检查清单"
+  path_attributes:
+  - name: zh-cn-lang
+    value: 本地化检查清单
 
 - title: Device Art Generator
   path: /distribute/tools/promote/device-art.html
 
 - title: Google Play Badges
   path: /distribute/tools/promote/badges.html
-  custom_link_attributes:
-  - zh-cn-lang="Google Play 徽章生成器"
+  path_attributes:
+  - name: zh-cn-lang
+    value: Google Play 徽章生成器
 
 - title: Linking to Your Products
   path: /distribute/tools/promote/linking.html
-  custom_link_attributes:
-  - zh-cn-lang="链接到您的商品"
+  path_attributes:
+  - name: zh-cn-lang
+    value: 链接到您的商品
 
 - title: Brand Guidelines
   path: /distribute/tools/promote/brand.html
-  custom_link_attributes:
-  - zh-cn-lang="品牌指南"
+  path_attributes:
+  - name: zh-cn-lang
+    value: 品牌指南
 
 - title: Alternative Distribution
   path: /distribute/tools/open-distribution.html
diff --git a/docs/html/go/libraries/_book.yaml b/docs/html/go/libraries/_book.yaml
new file mode 100644
index 0000000..209dae5
--- /dev/null
+++ b/docs/html/go/libraries/_book.yaml
@@ -0,0 +1,17 @@
+toc:
+- title: Support Library
+  path: /tools/support-library/index.html
+  section:
+  - title: Features
+    path: /tools/support-library/features.html
+  - title: Setup
+    path: /tools/support-library/setup.html
+
+- title: Data Binding Library
+  path: /tools/data-binding/guide.html
+
+- title: Testing Support Library
+  path: /tools/testing-support-library/index.html
+  section:
+  - title: API Reference
+    path: /reference/android/support/test/package-summary.html
diff --git a/docs/html/tools/data-binding/guide.jd b/docs/html/go/libraries/data-binding/index.jd
similarity index 96%
rename from docs/html/tools/data-binding/guide.jd
rename to docs/html/go/libraries/data-binding/index.jd
index b57fba7..ca8784e 100644
--- a/docs/html/tools/data-binding/guide.jd
+++ b/docs/html/go/libraries/data-binding/index.jd
@@ -1,4 +1,5 @@
-page.title=Data Binding Guide
+page.title=Data Binding Library
+page.metaDescription=The Data Binding Library enables you to write declarative layouts.
 page.tags="databinding", "layouts"
 @jd:body
 
@@ -1655,13 +1656,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 +1690,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/go/libraries/index.jd b/docs/html/go/libraries/index.jd
new file mode 100644
index 0000000..2831d15
--- /dev/null
+++ b/docs/html/go/libraries/index.jd
@@ -0,0 +1,14 @@
+page.title=Android Libraries
+
+@jd:body
+
+<p>This section describes several useful Android libraries that are not
+included with the Android Framework.</p>
+
+<div class="dynamic-grid">
+  <div class="resource-widget resource-flow-layout landing col-12"
+    data-query="collection:go/libraries"
+    data-cardSizes="6x6"
+    data-maxResults="6">
+  </div>
+</div>
diff --git a/docs/html/tools/support-library/features.jd b/docs/html/go/libraries/support-library/features.jd
similarity index 96%
rename from docs/html/tools/support-library/features.jd
rename to docs/html/go/libraries/support-library/features.jd
index fa5a8b4..089357a 100755
--- a/docs/html/tools/support-library/features.jd
+++ b/docs/html/go/libraries/support-library/features.jd
@@ -34,11 +34,11 @@
 
     <h2>See also</h2>
     <ol>
-      <li><a href="{@docRoot}tools/support-library/index.html#revisions">
+      <li><a href="{@docRoot}go/libraries/support-library/index.html#revisions">
         Support Library Revisions</a></li>
-      <li><a href="{@docRoot}tools/support-library/setup.html">
+      <li><a href="{@docRoot}go/libraries/support-library/setup.html">
         Support Library Setup</a></li>
-      <li><a href="{@docRoot}tools/testing-support-library/index.html">
+      <li><a href="{@docRoot}go/libraries/testing-support-library/index.html">
         Testing Support Library</a></li>
     </ol>
 
@@ -153,7 +153,7 @@
 <p>The Gradle build script dependency identifier for this library is as follows:</p>
 
 <pre>
-com.android.support:support-v4:23.2.1
+com.android.support:support-v4:23.3.0
 </pre>
 
 
@@ -164,7 +164,7 @@
   This library provides support for building apps with multiple Dalvik Executable (DEX) files.
   Apps that reference more than 65536 methods are required to use multidex configurations. For
   more information about using multidex, see <a href="{@docRoot}tools/building/multidex.html">
-  Building Apps with Over 65K Methods</a>.
+  Building Apps with Over 64K Methods</a>.
 </p>
 
 <p>
@@ -237,7 +237,7 @@
 <p>The Gradle build script dependency identifier for this library is as follows:</p>
 
 <pre>
-com.android.support:appcompat-v7:23.2.1
+com.android.support:appcompat-v7:23.3.0
 </pre>
 
 
@@ -258,7 +258,7 @@
 <p>The Gradle build script dependency identifier for this library is as follows:</p>
 
 <pre>
-com.android.support:cardview-v7:23.2.1
+com.android.support:cardview-v7:23.3.0
 </pre>
 
 
@@ -280,7 +280,7 @@
 <p>The Gradle build script dependency identifier for this library is as follows:</p>
 
 <pre>
-com.android.support:gridlayout-v7:23.2.1
+com.android.support:gridlayout-v7:23.3.0
 </pre>
 
 
@@ -314,7 +314,7 @@
 where "&lt;revision&gt;" is the minimum revision at which the library is available. For example:</p>
 
 <pre>
-com.android.support:mediarouter-v7:23.2.1
+com.android.support:mediarouter-v7:23.3.0
 </pre>
 
 <p class="caution">The v7 mediarouter library APIs introduced in Support Library
@@ -340,7 +340,7 @@
 <p>The Gradle build script dependency identifier for this library is as follows:</p>
 
 <pre>
-com.android.support:palette-v7:23.2.1
+com.android.support:palette-v7:23.3.0
 </pre>
 
 
@@ -362,7 +362,7 @@
 <p>The Gradle build script dependency identifier for this library is as follows:</p>
 
 <pre>
-com.android.support:recyclerview-v7:23.2.1
+com.android.support:recyclerview-v7:23.3.0
 </pre>
 
 
@@ -391,7 +391,7 @@
 <p>The Gradle build script dependency identifier for this library is as follows:</p>
 
 <pre>
-com.android.support:preference-v7:23.2.1
+com.android.support:preference-v7:23.3.0
 </pre>
 
 
@@ -455,7 +455,7 @@
 <p>The Gradle build script dependency identifier for this library is as follows:</p>
 
 <pre>
-com.android.support:support-v13:23.2.1
+com.android.support:support-v13:23.3.0
 </pre>
 
 
@@ -487,7 +487,7 @@
 <p>The Gradle build script dependency identifier for this library is as follows:</p>
 
 <pre>
-com.android.support:preference-v14:23.2.1
+com.android.support:preference-v14:23.3.0
 </pre>
 
 
@@ -516,7 +516,7 @@
 <p>The Gradle build script dependency identifier for this library is as follows:</p>
 
 <pre>
-com.android.support:preference-leanback-v17:23.2.1
+com.android.support:preference-leanback-v17:23.3.0
 </pre>
 
 
@@ -558,7 +558,7 @@
 <p>The Gradle build script dependency identifier for this library is as follows:</p>
 
 <pre>
-com.android.support:leanback-v17:23.2.1
+com.android.support:leanback-v17:23.3.0
 </pre>
 
 
@@ -579,7 +579,7 @@
 <p>The Gradle build script dependency identifier for this library is as follows:</p>
 
 <pre>
-com.android.support:support-annotations:23.2.1
+com.android.support:support-annotations:23.3.0
 </pre>
 
 
@@ -604,7 +604,7 @@
 <p>The Gradle build script dependency identifier for this library is as follows:</p>
 
 <pre>
-com.android.support:design:23.2.1
+com.android.support:design:23.3.0
 </pre>
 
 
@@ -632,7 +632,7 @@
 <p>The Gradle build script dependency identifier for this library is as follows:</p>
 
 <pre>
-com.android.support:customtabs:23.2.1
+com.android.support:customtabs:23.3.0
 </pre>
 
 
@@ -663,7 +663,7 @@
 <p>The Gradle build script dependency identifier for this library is as follows:</p>
 
 <pre>
-com.android.support:percent:23.2.1
+com.android.support:percent:23.3.0
 </pre>
 
 
@@ -693,5 +693,5 @@
 <p>The Gradle build script dependency identifier for this library is as follows:</p>
 
 <pre>
-com.android.support:recommendation:23.2.1
+com.android.support:recommendation:23.3.0
 </pre>
diff --git a/docs/html/tools/support-library/index.jd b/docs/html/go/libraries/support-library/index.jd
similarity index 87%
rename from docs/html/tools/support-library/index.jd
rename to docs/html/go/libraries/support-library/index.jd
index 1152eac4..61f0bc2 100644
--- a/docs/html/tools/support-library/index.jd
+++ b/docs/html/go/libraries/support-library/index.jd
@@ -1,4 +1,5 @@
 page.title=Support Library
+page.metaDescription=The Android Support Library offers backward-compatible versions of a number of features that are not built into the framework.
 
 @jd:body
 
@@ -8,7 +9,11 @@
     <h2>In this document</h2>
     <ol>
       <li><a href="#overview">Overview</a></li>
-      <li><a href="#revisions">Revisions</a></li>
+      <li><a href="#backward">Backward Compatibility</a></li>
+      <li><a href="#layout-patterns">Support for General Layout Patterns</a></li>
+      <li><a href="#form-factors">Support for Different Form Factors</a></li>
+      <li><a href="#utils">General Utilities</a></li>
+      <li><a href="#revisions">Support Library Revision History</a></li>
     </ol>
 
     <h2>See also</h2>
@@ -22,46 +27,384 @@
   </div>
 </div>
 
-<p>The Android Support Library package is a set of code libraries that provide
-  backward-compatible versions of Android framework APIs as well as features that are only available
-  through the library APIs. Each Support Library is backward-compatible to a specific Android API
-  level. This design means that your applications can use the libraries' features and still be
-  compatible with devices running Android 1.6 (API level 4) and up.</p>
-
-<p>This guide provides information about what features are enabled by the Support Libraries,
-  how to use them in your development environment and information about library releases.</p>
-
+<p>
+  The Android Support Library offers a number of features that are not built
+  into the framework. These libraries offer backward-compatible versions of
+  new features, provide useful UI elements that are not included in the
+  framework, and provide a range of utilities that apps can draw on.
+</p>
 
 <h2 id="overview">Overview</h2>
 
-<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.
-  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>
+<p>
+  In many cases, a feature may be valuable to many app developers, but not
+  appropriate to include in the Android framework itself. For example, an app
+  might only need a feature for specialized use cases, such as to smooth the
+  transition between different versions of the Android system.
+</p>
 
-<p>The Support Libraries each target a base Android API level and each provides a different set
-  of features. In order to effectively use the libraries, it is important to consider what features
-  you want to support and understand what features are supported by each library at what Android
-  API level. To get started, review the
-  <a href="{@docRoot}tools/support-library/features.html">Support Library Features</a> guide.
-  After that, go to the
-  <a href="{@docRoot}tools/support-library/setup.html">Support Library Setup</a> topic to
-  learn how to incorporate the Support Libraries into your application. For more details
-  about Support Library APIs, see the {@link android.support.v4.app android.support}
-  packages in the API reference.</p>
+<p>
+  To address these situations, the Android SDK includes several libraries
+  collectively called the <em>Android Support Library</em>. App developers
+  can include any of these libraries if they want to incorporate the
+  library functionality into their apps.
+</p>
+
+<p>
+  Support libraries provide a range of different features:
+</p>
+
+<ul>
+  <li>
+    <a href="#backward">Backward-compatible</a> versions of framework
+    components.
+  </li>
+
+  <li>UI elements to implement the recommended Android <a href=
+  "#layout-patterns">layout patterns</a>.
+  </li>
+
+  <li>Support for different <a href="#form-factors">form factors</a>.
+  </li>
+
+  <li>Miscellaneous <a href="#utils">utility</a> functions.
+  </li>
+</ul>
+
+<h2 id="backward">Backward Compatibility</h2>
+
+<div class="figure" style="width:300px">
+  <img src="{@docRoot}images/tools/support-library/appbar-kitkat.png"
+    srcset="{@docRoot}images/tools/support-library/appbar-kitkat.png 1x,
+        {@docRoot}images/tools/support-library/appbar-kitkat_2x.png 2x"
+    alt="" width="300">
+  <p class="img-caption">
+    <strong>Figure 1.</strong> Because this app uses support library UI
+    elements its interface incorporates material design principles, even though
+    it is running on Android 4.4, which does not include native support for
+    material design.
+  </p>
+</div>
+
+<p>
+  Support libraries allow apps running on older versions of the Android
+  platform to support features made available on newer versions of the
+  platform. For example, an app running on a version of Android lower than 5.0
+  (API level 21) that relies on framework classes cannot display
+  material-design elements, as that version of the Android framework doesn't
+  support material design. However, if the app incorporates the Support
+  Library's <a href="{@docRoot}tools/support-library/features.html">appcompat
+  library</a>, the app has access to many of the features available in API
+  level 21, including support for material design. As a result, your app can
+  deliver a more consistent experience across a broader range of platform
+  versions.
+</p>
 
 
-<h2 id="revisions">Revisions</h2>
+<p>
+  In some cases, the support library version of a class depends as much as
+  possible on the functionality that the framework provides. In these cases,
+  if an app calls one of the support class's methods, the support library's
+  behavior depends on what version of Android the app is running on. If the
+  framework provides the necessary functionality, the support library calls on
+  the framework to perform the task. If the app is running on an earlier
+  version of Android, and the framework doesn't expose the needed
+  functionality, the support library may try to provide the functionality
+  itself, or may act as a no-op. In either case, the app generally doesn't
+  need to check what version of Android it's running on; instead, the app
+  can rely on the support library to do those checks and choose appropriate
+  behavior. Generally, classes whose names end in
+  <code>…Compat</code> (like {@link android.support.v4.app.ActivityCompat})
+  behave this way.
+</p>
+
+<p>
+  In other cases, the support library class provides a complete, standalone
+  version of a framework class that does not rely on the availability of
+  any framework APIs. These
+  methods provide consistent behavior across all supported platforms.
+</p>
+
+<p>
+  In either case, the app does not need to check the system version at run
+  time. The app can rely on the support library class to do the appropriate
+  system checks, and modify its behavior as necessary.
+</p>
+
+<h2 id="layout-patterns">Support for General Layout Patterns</h2>
+
+<p>
+  Support libraries provide user interface elements not offered by
+  the Android framework. For example, the Android Support Library offers additional
+  layout classes, like {@link android.support.v4.widget.DrawerLayout}. These
+  classes follow recommended Android design practices; for example, the Design
+  Library follows the principles of material design in a way that works across
+  many versions of Android.
+</p>
+
+<p>
+  By using these support library classes, you can avoid having to reinvent the
+  wheel; if your app has a particular user interface requirement, you can draw
+  on existing code, which provides a user interface that users will already be
+  familiar with. These elements also help you build an app that looks and feels
+  like a part of the Android ecosystem. For example, many apps need to display
+  arbitrarily long lists of elements, and need to be able to quickly and
+  efficiently reuse those elements as the list changes; this might be a list of
+  emails, contacts, music albums, and so on. Those apps can use the support
+  library {@link android.support.v7.widget.RecyclerView} widget to display the
+  list. This saves the app developer from having to develop the list from
+  scratch, and also ensures that the user will see a list that looks and
+  behaves like lists in other apps.
+</p>
+
+<h2 id="form-factors">Support for Different Form Factors</h2>
+
+<p>
+  The Android SDK provides libraries for a number of different form factors,
+  such as TV and wearables. An app can depend on the appropriate support
+  library to provide functionality across a wide range of platform versions,
+  and can provide content on external screens, speakers, and other destination
+  devices.
+</p>
+
+<h2 id="utils">General Utilities</h2>
+
+<p>
+  The Android Support Library provides backward-compatible utility functions.
+  Apps can use these utility functions to provide an appropriate user
+  experience across a wide range of Android system versions. For example,
+  support library permission methods behave appropriately depending on what
+  platform version your app is running on. If the platform supports the
+  runtime permissions model, these methods request the appropriate permission
+  from the user; on platform versions that do not support the runtime
+  permissions model, the methods check whether the appropriate permission was
+  granted at install time.
+</p>
+
+<h2 id="revisions">Support Library Revision History</h2>
 
 <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 +704,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 +1061,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/support-library/setup.jd b/docs/html/go/libraries/support-library/setup.jd
similarity index 100%
rename from docs/html/tools/support-library/setup.jd
rename to docs/html/go/libraries/support-library/setup.jd
diff --git a/docs/html/tools/testing-support-library/index.jd b/docs/html/go/libraries/testing-support-library/index.jd
similarity index 99%
rename from docs/html/tools/testing-support-library/index.jd
rename to docs/html/go/libraries/testing-support-library/index.jd
index 35a3c7d..f69a35b7 100644
--- a/docs/html/tools/testing-support-library/index.jd
+++ b/docs/html/go/libraries/testing-support-library/index.jd
@@ -1,4 +1,5 @@
 page.title=Testing Support Library
+page.metaDescription=The Android Testing Support Library provides an extensive framework for testing Android apps.
 page.image=images/tools/studio-test-module.png
 
 @jd:body
diff --git a/docs/html/google/_book.yaml b/docs/html/google/_book.yaml
index 01efa4f..92357e9 100644
--- a/docs/html/google/_book.yaml
+++ b/docs/html/google/_book.yaml
@@ -1,17 +1,20 @@
 toc:
 - title: Google Play In-app Billing
   path: /google/play/billing/index.html
-  custom_link_attributes:
-  - zh-cn-lang="应用内结算"
+  path_attributes:
+  - name: zh-cn-lang
+    value: 应用内结算
   section:
   - title: Overview
     path: /google/play/billing/billing_overview.html
-    custom_link_attributes:
-    - zh-cn-lang="应用内结算概述"
+    path_attributes:
+    - name: zh-cn-lang
+      value: 应用内结算概述
   - title: Version 3 API
     path: /google/play/billing/api.html
-    custom_link_attributes:
-    - zh-cn-lang="应用内结算 API"
+    path_attributes:
+    - name: zh-cn-lang
+      value: 应用内结算 API
     section:
     - title: Implementing the API
       path: /google/play/billing/billing_integrate.html
@@ -23,29 +26,39 @@
     path: /google/play/billing/billing_promotions.html
   - title: Security and Design
     path: /google/play/billing/billing_best_practices.html
-    custom_link_attributes:
-    - zh-cn-lang="安全性和设计"
+    path_attributes:
+    - name: zh-cn-lang
+      value: 安全性和设计
   - title: Testing In-app Billing
     path: /google/play/billing/billing_testing.html
-    custom_link_attributes:
-    - zh-cn-lang="测试应用内结算"
+    path_attributes:
+    - name: zh-cn-lang
+      value: 测试应用内结算
   - title: Administering In-app Billing
     path: /google/play/billing/billing_admin.html
-    custom_link_attributes:
-    - zh-cn-lang="管理应用内结算"
+    path_attributes:
+    - name: zh-cn-lang
+      value: 管理应用内结算
   - title: Version Notes
     path: /google/play/billing/versions.html
 
 - title: Filters on Google Play
   path: /google/play/filters.html
-  custom_link_attributes:
-  - es-lang="Filtros en Google Play"
-  - ja-lang="Google Play 上のフィルタ"
-  - ko-lang="Google Play 필터"
-  - pt-br-lang="Filtros no Google Play"
-  - ru-lang="Фильтры в Google Play"
-  - zh-cn-lang="Google Play 上的筛选器"
-  - zh-tw-lang="Google Play 上的篩選器"
+  path_attributes:
+  - name: es-lang
+    value: Filtros en Google Play
+  - name: ja-lang
+    value: Google Play 上のフィルタ
+  - name: ko-lang
+    value: Google Play 필터
+  - name: pt-br-lang
+    value: Filtros no Google Play
+  - name: ru-lang
+    value: Фильтры в Google Play
+  - name: zh-cn-lang
+    value: Google Play 上的筛选器
+  - name: zh-tw-lang
+    value: Google Play 上的篩選器
 
 - title: Google Play Developer API
   path: /google/play/developer-api.html
diff --git a/docs/html/guide/_book.yaml b/docs/html/guide/_book.yaml
index 5017376..4163f0f 100644
--- a/docs/html/guide/_book.yaml
+++ b/docs/html/guide/_book.yaml
@@ -365,6 +365,12 @@
   - title: App Install Location
     path: /guide/topics/data/install-location.html
 
+
+- title: Libraries
+  path: /go/libraries/index.html
+  section:
+  - include: /go/libraries/_book.yaml
+
 - title: Administration
   path: /guide/topics/admin/index.html
   section:
@@ -387,14 +393,21 @@
 
 - title: Best Practices
   path: /guide/practices/index.html
-  custom_link_attributes:
-  - de-lang="Bewährte Verfahren"
-  - es-lang="Prácticas recomendadas"
-  - fr-lang="Meilleures pratiques"
-  - it-lang="Best practice"
-  - ja-lang="ベスト プラクティス"
-  - zh-cn-lang="最佳实践"
-  - zh-tw-lang="最佳實務"
+  path_attributes:
+  - name: de-lang
+    value: Bewährte Verfahren
+  - name: es-lang
+    value: Prácticas recomendadas
+  - name: fr-lang
+    value: Meilleures pratiques
+  - name: it-lang
+    value: Best practice
+  - name: ja-lang
+    value: ベスト プラクティス
+  - name: zh-cn-lang
+    value: 最佳实践
+  - name: zh-tw-lang
+    value: 最佳實務
   section:
   - title: Supporting Multiple Screens
     path: /guide/practices/screens_support.html
diff --git a/docs/html/guide/guide_toc.cs b/docs/html/guide/guide_toc.cs
index 549a1b6..9257a76 100644
--- a/docs/html/guide/guide_toc.cs
+++ b/docs/html/guide/guide_toc.cs
@@ -121,7 +121,7 @@
       <li><a href="<?cs var:toroot ?>guide/topics/resources/overview.html">
           <span class="en">Overview</span>
         </a></li>
-        <li><a href="<?cs var:toroot ?>guide/topics/resources/providing-resources.html">
+      <li><a href="<?cs var:toroot ?>guide/topics/resources/providing-resources.html">
           <span class="en">Providing Resources</span>
         </a></li>
       <li><a href="<?cs var:toroot ?>guide/topics/resources/accessing-resources.html">
@@ -129,10 +129,13 @@
         </a></li>
       <li><a href="<?cs var:toroot ?>guide/topics/resources/runtime-changes.html">
             <span class="en">Handling Runtime Changes</span>
-          </a></li>
+        </a></li>
       <li><a href="<?cs var:toroot ?>guide/topics/resources/localization.html">
           <span class="en">Localization</span>
         </a></li>
+      <li><a href="<?cs var:toroot ?>guide/topics/resources/complex-xml-resources.html">
+          <span class="en">Complex XML Resources</span>
+        </a></li>
       <li class="nav-section">
         <div class="nav-section-header"><a href="<?cs var:toroot ?>guide/topics/resources/available-resources.html">
             <span class="en">Resource Types</span>
diff --git a/docs/html/guide/practices/screens-distribution.jd b/docs/html/guide/practices/screens-distribution.jd
index 92416e0..2e8c5b67 100644
--- a/docs/html/guide/practices/screens-distribution.jd
+++ b/docs/html/guide/practices/screens-distribution.jd
@@ -25,8 +25,6 @@
   <ol>
     <li><a
 href="{@docRoot}guide/practices/screens_support.html">Supporting Multiple Screens</a></li>
-    <li><a
-href="{@docRoot}guide/practices/optimizing-for-3.0.html">Optimizing Apps for Android 3.0</a></li>
   </ol>
 
 </div>
diff --git a/docs/html/guide/topics/graphics/opengl.jd b/docs/html/guide/topics/graphics/opengl.jd
index 80b3c2b..d7fb143 100644
--- a/docs/html/guide/topics/graphics/opengl.jd
+++ b/docs/html/guide/topics/graphics/opengl.jd
@@ -545,14 +545,15 @@
   </li>
   <li><strong>S3TC (DXT<em>n</em>/DXTC)</strong> - S3 texture compression (S3TC) has several
 format variations (DXT1 to DXT5) and is less widely available. The format supports RGB textures with
-4-bit alpha or 8-bit alpha channels. This format may be represented by several OpenGL extension
-names, for example:
+4-bit alpha or 8-bit alpha channels. These formats are represented by the following OpenGL extension
+name:
     <ul>
-      <li>{@code GL_OES_texture_compression_S3TC}</li>
       <li>{@code GL_EXT_texture_compression_s3tc}</li>
+    </ul>
+    Some devices only support the DXT1 format variation; this limited support is represented by the
+following OpenGL extension name:
+    <ul>
       <li>{@code GL_EXT_texture_compression_dxt1}</li>
-      <li>{@code GL_EXT_texture_compression_dxt3}</li>
-      <li>{@code GL_EXT_texture_compression_dxt5}</li>
     </ul>
   </li>
   <li><strong>3DC</strong> - 3DC texture compression (3DC) is a less widely available format that
diff --git a/docs/html/guide/topics/graphics/overview.jd b/docs/html/guide/topics/graphics/overview.jd
index a53cd3f..66a675d 100644
--- a/docs/html/guide/topics/graphics/overview.jd
+++ b/docs/html/guide/topics/graphics/overview.jd
@@ -8,7 +8,7 @@
   <h3 id="animation">Animation</h3>
   
   <p>The Android framework provides two animation systems: property animation
-  (introduced in Android 3.0) and view animation. Both animation systems are viable options,
+  and view animation. Both animation systems are viable options,
   but the property animation system, in general, is the preferred method to use, because it
   is more flexible and offers more features. In addition to these two systems, you can utilize Drawable
   animation, which allows you to load drawable resources and display them one frame after
diff --git a/docs/html/guide/topics/manifest/manifest-element.jd b/docs/html/guide/topics/manifest/manifest-element.jd
index 5968548..7e4b21d 100644
--- a/docs/html/guide/topics/manifest/manifest-element.jd
+++ b/docs/html/guide/topics/manifest/manifest-element.jd
@@ -41,21 +41,21 @@
 <p>
 <dt>description:</dt>
 <dd itemprop="description">The root element of the AndroidManifest.xml file.  It must
-contain an <code><a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code> element 
+contain an <code><a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code> element
 and specify {@code xmlns:android} and {@code package} attributes.</dd>
 
 <dt>attributes:</dt>
 <dd>
 <dl class="attr">
 <dt><a name="nspace"></a>{@code xmlns:android}</dt>
-<dd>Defines the Android namespace.  This attribute should always be set 
+<dd>Defines the Android namespace.  This attribute should always be set
 to "{@code http://schemas.android.com/apk/res/android}".</dd>
 
 <dt><a name="package"></a>{@code package}</dt>
-<dd>A full Java-language-style package name for the application.  The name should 
-be unique.  The name may contain uppercase or lowercase letters ('A'
-through 'Z'), numbers, and underscores ('_').  However, individual
-package name parts may only start with letters.
+<dd>A full Java-language-style package name for the Android application. The
+  name should be unique.  The name may contain uppercase or lowercase letters
+  ('A' through 'Z'), numbers, and underscores ('_').  However, individual
+  package name parts may only start with letters.
 
 <p>To avoid conflicts with other developers, you should use Internet domain ownership as the
 basis for your package names (in reverse). For example, applications published by Google start with
@@ -83,11 +83,11 @@
 </dd>
 
 <dt><a name="uid"></a>{@code android:sharedUserId}</dt>
-<dd>The name of a Linux user ID that will be shared with other applications.  
-By default, Android assigns each application its own unique user ID.  
-However, if this attribute is set to the same value for two or more applications, 
-they will all share the same ID &mdash; provided that they are also signed 
-by the same certificate.  Application with the same user ID can access each 
+<dd>The name of a Linux user ID that will be shared with other applications.
+By default, Android assigns each application its own unique user ID.
+However, if this attribute is set to the same value for two or more applications,
+they will all share the same ID &mdash; provided that they are also signed
+by the same certificate.  Application with the same user ID can access each
 other's data and, if desired, run in the same process.</dd>
 
 <dt><a name="uidlabel"></a>{@code android:sharedUserLabel}</dt>
@@ -103,8 +103,8 @@
 
 <dt><a name="vcode"></a>{@code android:versionCode}</dt>
 <dd>An internal version number.  This number is used only to determine whether
-one version is more recent than another, with higher numbers indicating more 
-recent versions.  This is not the version number shown to users; that number 
+one version is more recent than another, with higher numbers indicating more
+recent versions.  This is not the version number shown to users; that number
 is set by the {@code versionName} attribute.
 
   <p>
@@ -118,9 +118,9 @@
 </dd>
 
 <dt><a name="vname"></a>{@code android:versionName}</dt>
-<dd>The version number shown to users.  This attribute can be set as a raw 
-string or as a reference to a string resource.  The string has no other purpose 
-than to be displayed to users.  The {@code versionCode} attribute holds 
+<dd>The version number shown to users.  This attribute can be set as a raw
+string or as a reference to a string resource.  The string has no other purpose
+than to be displayed to users.  The {@code versionCode} attribute holds
 the significant version number used internally.
 </dd>
 
diff --git a/docs/html/guide/topics/media/mediarouter.jd b/docs/html/guide/topics/media/mediarouter.jd
index 54d52a6..dcb5f9d 100644
--- a/docs/html/guide/topics/media/mediarouter.jd
+++ b/docs/html/guide/topics/media/mediarouter.jd
@@ -458,8 +458,8 @@
 <p class="note">
   <strong>Note:</strong> In order for Wireless Display routes to show up in the media route
   selection dialog, users must enable this option in the Settings app. The option is under
-  the <em>Display</em> category and is called <em>Cast screen</em> on Android 4.4 (KitKat) and higher
-  devices and <em>Wireless Display</em> on Android 4.2.x (Jelly Bean) devices. For more information
+  the <em>Display</em> category and is called <em>Cast screen</em> on Android 4.4 (KitKat)
+  and higher devices. For more information
   on enabling this feature see this
   <a href="https://support.google.com/nexus/answer/2865484">Wireless display</a> support page.
 </p>
diff --git a/docs/html/guide/topics/resources/complex-xml-resources.jd b/docs/html/guide/topics/resources/complex-xml-resources.jd
new file mode 100644
index 0000000..66dcb58
--- /dev/null
+++ b/docs/html/guide/topics/resources/complex-xml-resources.jd
@@ -0,0 +1,117 @@
+page.title=Inline Complex XML Resources
+parent.title=Application Resources
+parent.link=index.html
+@jd:body
+
+<p>Certain resource types are a composition of multiple complex resources represented by XML files.
+One example is an animated vector drawable, which is a drawable resource encapsulating a vector
+drawable and an animation. This requires the use of at least three XML files.</p>
+
+<dl>
+
+<dt><code>res/drawable/avd.xml</code></dt>
+<dd>
+<pre class="stx">
+&lt;?xml version="1.0" encoding="utf-8"?&gt;
+&lt;animated-vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:drawable="@drawable/vectordrawable" &gt;
+    &lt;target
+        android:name="rotationGroup"
+        android:animation="@anim/rotation" /&gt;
+&lt;/animated-vector&gt;
+</pre>
+</dd>
+
+<dt><code>res/drawable/vectordrawable.xml</code></dt>
+<dd>
+<pre class="stx">
+&lt;?xml version="1.0" encoding="utf-8"?&gt;
+&lt;vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:height="64dp"
+    android:width="64dp"
+    android:viewportHeight="600"
+    android:viewportWidth="600" &gt;
+
   &lt;group
+        android:name="rotationGroup"
+        android:pivotX="300.0"
+        android:pivotY="300.0"
+        android:rotation="45.0" &gt;
+        &lt;path
+            android:fillColor="#000000"
+            android:pathData="M300,70 l 0,-70 70,70 0,0 -70,70z" /&gt;
+
   &lt;/group&gt;
+&lt;/vector&gt;
+</pre>
+</dd>
+
+<dt><code>res/anim/rotation.xml</code></dt>
+<dd>
+<pre class="stx">
+&lt;?xml version="1.0" encoding="utf-8"?&gt;
+&lt;objectAnimator xmlns:android="http://schemas.android.com/apk/android"
+    android:duration="6000"
+    android:propertyName="rotation"
+    android:valueFrom="0"
+
   android:valueTo="360" /&gt;
+</pre>
+</dd>
+
+</dl>
+
+<p>There are a lot of files here just to make a single animated vector drawable!
+If the vector drawable and animations are re-used elsewhere, this is the best way to implement an
+animated vector drawable. If they’re only ever used for this animated vector drawable, then there is
+a more compact way to implement them.</p>
+
+<p>Using AAPT’s inline resource format, you can define all three resources in the same XML file.
+Since we’re making an animated vector drawable, we put the file under <code>res/drawable/</code>.</p>
+
+<dl>
+
+<dt><code>res/drawable/avd.xml</code></dt>
+<dd>
+<pre class="stx">
+&lt;?xml version="1.0" encoding="utf-8"?&gt;
+&lt;animated-vector xmlns:android="http://schemas.android.com/apk/res/android"
+    <strong>xmlns:aapt="http://schemas.android.com/aapt"</strong> &gt;
+
+    <strong>&lt;aapt:attr name="android:drawable" &gt;</strong>
+        &lt;vector
+            android:height="64dp"
+            android:width="64dp"
+            android:viewportHeight="600"
+            android:viewportWidth="600" &gt;
+
           &lt;group
+                android:name="rotationGroup"
+                android:pivotX="300.0"
+                android:pivotY="300.0"
+                android:rotation="45.0" &gt;
+                &lt;path
+                    android:fillColor="#000000"
+                    android:pathData="M300,70 l 0,-70 70,70 0,0 -70,70z" /&gt;
+
           &lt;/group&gt;
+        &lt;/vector&gt;
+    <strong>&lt;aapt:attr /&gt;</strong>
+
+    &lt;target
+        android:name="rotationGroup" /&gt;
+        <strong>&lt;aapt:attr name="android:animation" &gt;</strong>
+            &lt;objectAnimator
+                android:duration="6000"
+                android:propertyName="rotation"
+                android:valueFrom="0"
+
               android:valueTo="360" /&gt;
+        <strong>&lt;aapt:attr&gt;</strong>
+&lt;/animated-vector&gt;
+</pre>
+</dd>
+
+</dl>
+
+<p>The XML tag <code>&lt;aapt:attr &gt;</code> tells AAPT that the tag’s child shall be treated as a
+resource and extracted into its own resource file. The value in the attribute name specifies where
+to use the inline resource within the parent tag.</p>
+
+<p>AAPT will generate resource files and names for all of the inline resources.
+Applications built using this inline format are compatible with all versions of Android.</p>
+
diff --git a/docs/html/guide/topics/resources/menu-resource.jd b/docs/html/guide/topics/resources/menu-resource.jd
index 53ff276..3c4c8b8 100644
--- a/docs/html/guide/topics/resources/menu-resource.jd
+++ b/docs/html/guide/topics/resources/menu-resource.jd
@@ -300,8 +300,7 @@
     // All other menu item clicks are handled by {@link android.app.Activity#onOptionsItemSelected onOptionsItemSelected()}
 }
 </pre>
-<p class="note"><strong>Note:</strong> The {@code android:showAsAction} attribute is
-available only on Android 3.0 (API Level 11) and greater.</p>
+
 </dd> <!-- end example -->
 
 
diff --git a/docs/html/guide/topics/resources/overview.jd b/docs/html/guide/topics/resources/overview.jd
index c3bd0bf..c496797 100644
--- a/docs/html/guide/topics/resources/overview.jd
+++ b/docs/html/guide/topics/resources/overview.jd
@@ -9,6 +9,7 @@
     <li><a href="accessing-resources.html">Accessing Resources</a></li>
     <li><a href="runtime-changes.html">Handling Runtime Changes</a></li>
     <li><a href="localization.html">Localization</a></li>
+    <li><a href="complex-xml-resources.html">Complex XML Resources</a></li>
   </ol>
 
   <h2>Reference</h2>
@@ -79,6 +80,9 @@
   <dd>A bottom-up guide to localizing your application using alternative resources. While this is
 just one specific use of alternative resources, it is very important in order to reach more
 users.</dd>
+  <dt><strong><a href="complex-xml-resources.html">Complex XML Resources</a></strong></dt>
+  <dd>An XML format for building complex resources like animated vector drawables in a single
+XML file.</dd>
   <dt><strong><a href="available-resources.html">Resource Types</a></strong></dt>
   <dd>A reference of various resource types you can provide, describing their XML elements,
 attributes, and syntax. For example, this reference shows you how to create a resource for
diff --git a/docs/html/guide/topics/search/search-dialog.jd b/docs/html/guide/topics/search/search-dialog.jd
index 389fc1d..4d6b400 100644
--- a/docs/html/guide/topics/search/search-dialog.jd
+++ b/docs/html/guide/topics/search/search-dialog.jd
@@ -102,8 +102,7 @@
 you can place anywhere in your layout. By default, the search widget behaves like a standard {@link
 android.widget.EditText} widget and doesn't do anything, but you can configure it so that the
 Android system handles all input events, delivers queries to the appropriate activity, and provides
-search suggestions (just like the search dialog). However, the search widget is available only in
-Android 3.0 (API Level 11) and higher.
+search suggestions (just like the search dialog).
 
 <p class="note"><strong>Note:</strong> If you want, you can handle all user input into the
 search widget yourself, using various callback methods and listeners. This document, however,
@@ -376,30 +375,13 @@
 
 <h2 id="SearchDialog">Using the Search Dialog</h2>
 
-<div class="sidebox-wrapper">
-<div class="sidebox">
-  <h2>Should I use the search dialog or the widget?</h2>
-  <p>The answer depends mostly on whether you are developing for Android 3.0 (API Level 11 or
-higher), because the {@link android.widget.SearchView} widget was introduced in Android 3.0. So,
-if you are developing your application for a version of Android lower than 3.0, the search widget is
-not an option and you should use the search dialog to implement your search interface.</p>
-  <p>If you <em>are</em> developing for Android 3.0 or higher, then the decision depends more on
-your needs. In most cases, we recommend that you use the search widget as an "action view" in the
-Action Bar. However, it might not be an option for you to put the search
-widget in the Action Bar for some reason (perhaps there's not enough space or you don't use the
-Action Bar). So, you might instead want to put the search widget somewhere in your activity layout.
-And if all else fails, you can still use the search dialog if you prefer to keep the search box
-hidden. In fact, you might want to offer both the dialog and the widget in some cases. For more
-information about the widget, skip to <a href="#UsingSearchWidget">Using the Search Widget</a>.</p>
-</div>
-</div>
 
 <p>The search dialog provides a floating search box at the top of the screen, with the application
 icon on the left. The search dialog can provide search suggestions as the user types and, when
 the user executes a search, the system sends the search query to a
 searchable activity that performs the search. However, if you are developing
 your application for devices running Android 3.0, you should consider using the search widget
-instead (see the side box).</p>
+instead (see <a href="#UsingSearchWidget">Using the Search Widget</a> section).</p>
 
 <p>The search dialog is always hidden by default, until the user activates it. Your application
 can activate the search dialog by calling {@link
@@ -685,14 +667,14 @@
 
 <p>The search widget provides the same functionality as the search dialog. It starts the appropriate
 activity when the user executes a search, and it can provide search suggestions and perform voice
-search.</p>
+search. If it's not an option for you to put the search widget in the Action Bar, you can instead
+put the search widget somewhere in your activity layout.</p>
 
 <p class="note"><strong>Note:</strong> When you use the search widget as an action view, you
 still might need to support using the search dialog, for cases in which the search widget does
 not fit in the Action Bar. See the following section about <a href="#UsingBoth">Using both
 the widget and the dialog</a>.</p>
 
-
 <h3 id="ConfiguringWidget">Configuring the search widget</h3>
 
 <p>After you've created a  <a href="#SearchableConfiguration">searchable configuration</a> and a <a
diff --git a/docs/html/guide/topics/ui/accessibility/apps.jd b/docs/html/guide/topics/ui/accessibility/apps.jd
index 567dc5b..90781f7 100644
--- a/docs/html/guide/topics/ui/accessibility/apps.jd
+++ b/docs/html/guide/topics/ui/accessibility/apps.jd
@@ -532,21 +532,12 @@
 }
 </pre>
 
-<p>In applications targeting Android 4.0 (API Level 14) and higher, you can implement these methods
+<p>You can implement these methods
 directly in your custom view class. For another example of this approach, see the Android
 <a href="{@docRoot}tools/support-library/index.html">Support Library</a> (revision 5 or higher)
 sample {@code AccessibilityDelegateSupportActivity} in
 ({@code <sdk>/extras/android/support/v4/samples/Support4Demos/}).</p>
 
-<p class="note"><strong>Note:</strong> You may find information on implementing accessibility for
-custom views written prior to Android 4.0 that describes the use of the
-{@link android.view.View#dispatchPopulateAccessibilityEvent dispatchPopulateAccessibilityEvent()}
-method for populating AccessibilityEvents. As of the Android 4.0 release, however, the recommended
-approach is to use the
-{@link android.view.View#onPopulateAccessibilityEvent onPopulateAccessibilityEvent()} and
-{@link android.view.View#onInitializeAccessibilityEvent onInitializeAccessibilityEvent()}
-methods.</p>
-
 
 <h3 id="virtual-hierarchy">Providing a customized accessibility context</h3>
 
diff --git a/docs/html/guide/topics/ui/accessibility/services.jd b/docs/html/guide/topics/ui/accessibility/services.jd
index 3ccdbc4..f91a979 100644
--- a/docs/html/guide/topics/ui/accessibility/services.jd
+++ b/docs/html/guide/topics/ui/accessibility/services.jd
@@ -409,7 +409,7 @@
 <h3 id="focus-types">Using focus types</h3>
 
 <p>Android 4.1 (API Level 16) introduces a new type of user interface focus called <em>Accessibility
-  Focus</em>. This type of focus can be used by accessibility services to select any visible user
+  Focus</em>. Accessibility services can used this type of focus to select any visible user
   interface element and act on it. This focus type is different from the more well known <em>Input
   Focus</em>, which determines what on-screen user interface element receives input when a user
   types characters, presses <strong>Enter</strong> on a keyboard or pushes the center button of a
diff --git a/docs/html/guide/topics/ui/controls/pickers.jd b/docs/html/guide/topics/ui/controls/pickers.jd
index 31e4d3f5..c0667ad 100644
--- a/docs/html/guide/topics/ui/controls/pickers.jd
+++ b/docs/html/guide/topics/ui/controls/pickers.jd
@@ -170,10 +170,6 @@
 android.support.v4.app.DialogFragment} and return a {@link android.app.DatePickerDialog} from the
 fragment's {@link android.support.v4.app.DialogFragment#onCreateDialog onCreateDialog()} method.</p>
 
-<p class="note"><strong>Note:</strong> If your app supports versions of Android older than 3.0,
-be sure you've set up your Android project with the support library as described in <a
-href="{@docRoot}tools/support-library/setup.html">Setting Up a Project to Use a
-Library</a>.</p>
 
 <h3 id="DatePickerFragment">Extending DialogFragment for a date picker</h3>
 
@@ -250,9 +246,4 @@
 android.support.v4.app.DialogFragment#show show()} method requires an instance of {@link
 android.support.v4.app.FragmentManager} and a unique tag name for the fragment.</p>
 
-<p class="caution"><strong>Caution:</strong> If your app supports versions of Android lower than
-3.0, be sure that you call {@link
-android.support.v4.app.FragmentActivity#getSupportFragmentManager()} to acquire an instance of
-{@link android.support.v4.app.FragmentManager}. Also make sure that your activity that displays the
-time picker extends {@link android.support.v4.app.FragmentActivity} instead of the standard {@link
-android.app.Activity} class.</p>
+
diff --git a/docs/html/guide/topics/ui/declaring-layout.jd b/docs/html/guide/topics/ui/declaring-layout.jd
index 2d4134d..bf0db57 100755
--- a/docs/html/guide/topics/ui/declaring-layout.jd
+++ b/docs/html/guide/topics/ui/declaring-layout.jd
@@ -211,7 +211,7 @@
 <ul>
   <li><var>wrap_content</var> tells your view to size itself to the dimensions
 required by its content.</li>
-  <li><var>match_parent</var> (named <var>fill_parent</var> before API Level 8)
+  <li><var>match_parent</var>
 tells your view to become as big as its parent view group will allow.</li>
 </ul>
 
diff --git a/docs/html/guide/topics/ui/menus.jd b/docs/html/guide/topics/ui/menus.jd
index 11e84f1..ad2aa9b 100644
--- a/docs/html/guide/topics/ui/menus.jd
+++ b/docs/html/guide/topics/ui/menus.jd
@@ -75,14 +75,6 @@
     <dd>The <a href="#options-menu">options menu</a> is the primary collection of menu items for an
 activity. It's where you should place actions that have a global impact on the app, such as
 "Search," "Compose email," and "Settings."
-  <p>If you're developing for Android 2.3 or lower, users can
-reveal the options menu panel by pressing the <em>Menu</em> button.</p>
-  <p>On Android 3.0 and higher, items from the options menu are presented by the
-  app bar as a combination of on-screen action
-items and overflow options. Beginning with Android 3.0, the <em>Menu</em> button is deprecated (some
-devices
-don't have one), so you should migrate toward using the action bar to provide access to actions and
-other options.</p>
   <p>See the section about <a href="#options-menu">Creating an Options Menu</a>.</p>
     </dd>
     
@@ -91,8 +83,7 @@
    <dd>A context menu is a <a href="#FloatingContextMenu">floating menu</a> that appears when the
 user performs a long-click on an element. It provides actions that affect the selected content or
 context frame.
-  <p>When developing for Android 3.0 and higher, you should instead use the <a
-href="#CAB">contextual action mode</a> to enable actions on selected content. This mode displays
+  <p>The <a href="#CAB">contextual action mode</a> displays
 action items that affect the selected content in a bar at the top of the screen and allows the user
 to select multiple items.</p>
   <p>See the section about <a href="#context-menu">Creating Contextual Menus</a>.</p>
@@ -278,8 +269,8 @@
 
 <p>If you've developed your application for Android 2.3.x and lower, the system calls {@link
 android.app.Activity#onCreateOptionsMenu(Menu) onCreateOptionsMenu()} to create the options menu
-when the user opens the menu for the first time. If you've developed for Android 3.0 and higher, the
-system calls {@link android.app.Activity#onCreateOptionsMenu(Menu) onCreateOptionsMenu()} when
+when the user opens the menu for the first time. If you've developed for Android 3.0 and higher,
+the system calls {@link android.app.Activity#onCreateOptionsMenu(Menu) onCreateOptionsMenu()} when
 starting the activity, in order to show items to the app bar.</p>
 
 
@@ -504,10 +495,6 @@
 independently, even though the contextual action bar visually overtakes the app bar
 position.</p>
 
-<p>If you're developing for Android 3.0 (API level 11) or higher, you
-should usually use the contextual action mode to present contextual actions, instead of the <a
-href="#FloatingContextMenu">floating context menu</a>.</p>
-
 <p>For views that provide contextual actions, you should usually invoke the contextual action mode
 upon one of two events (or both):</p>
 <ul>
@@ -737,13 +724,12 @@
 
 <p>If you <a href="#xml">define your menu in XML</a>, here's how you can show the popup menu:</p>
 <ol>
-  <li>Instantate a {@link android.widget.PopupMenu} with its constructor, which takes the
+  <li>Instantiate a {@link android.widget.PopupMenu} with its constructor, which takes the
 current application {@link android.content.Context} and the {@link android.view.View} to which the
 menu should be anchored.</li>
   <li>Use {@link android.view.MenuInflater} to inflate your menu resource into the {@link
 android.view.Menu} object returned by {@link
-android.widget.PopupMenu#getMenu() PopupMenu.getMenu()}. On API level 14 and above, you can use
-{@link android.widget.PopupMenu#inflate PopupMenu.inflate()} instead.</li>
+android.widget.PopupMenu#getMenu() PopupMenu.getMenu()}.</li>
   <li>Call {@link android.widget.PopupMenu#show() PopupMenu.show()}.</li>
 </ol>
 
diff --git a/docs/html/guide/topics/ui/notifiers/notifications.jd b/docs/html/guide/topics/ui/notifiers/notifications.jd
index da10dbc..6cd63f3 100644
--- a/docs/html/guide/topics/ui/notifiers/notifications.jd
+++ b/docs/html/guide/topics/ui/notifiers/notifications.jd
@@ -95,9 +95,9 @@
 
 <p>Notifications, as an important part of the Android user interface, have their own design guidelines.
 The material design changes introduced in Android 5.0 (API level 21) are of particular
-importance, and you should review the <a href="{@docRoot}training/material/index.html">Material Design</a>
-training for more information. To learn how to design notifications and their interactions, read the
-<a href="{@docRoot}design/patterns/notifications.html">Notifications</a> design guide.</p>
+importance, and you should review the <a href="{@docRoot}training/material/index.html">Material
+Design</a> training for more information. To learn how to design notifications and their interactions,
+read the <a href="{@docRoot}design/patterns/notifications.html">Notifications</a> design guide.</p>
 
 <h2 id="CreateNotification">Creating a Notification</h2>
 
@@ -326,8 +326,8 @@
     <a href="{@docRoot}design/patterns/notifications.html">Notifications</a> Design guide.
 </p>
 <p class="note">
-    <strong>Note:</strong> This Gmail feature requires the "inbox" expanded layout, which is
-    part of the expanded notification feature available starting in Android 4.1.
+    <strong>Note:</strong> This Gmail feature requires the "inbox" expanded layout, which is part
+    of the expanded notification feature.
 </p>
 <p>
     The following section describes how to update notifications and also how to remove them.
@@ -892,7 +892,8 @@
 {@link android.app.Notification.Builder#addAction(android.app.Notification.Action) addAction()}
 method, which converts actions into clickable icons.</p>
 
-<p class="note"><strong>Note:</strong> The template and the {@link android.app.Notification.Builder#addAction(android.app.Notification.Action) addAction()}
+<p class="note"><strong>Note:</strong> The template and the
+{@link android.app.Notification.Builder#addAction(android.app.Notification.Action) addAction()}
 method are not included in the support library, so these features run in Android 5.0 and higher
 only.</p>
 
diff --git a/docs/html/guide/topics/ui/settings.jd b/docs/html/guide/topics/ui/settings.jd
index 89960bb..243c1c3 100644
--- a/docs/html/guide/topics/ui/settings.jd
+++ b/docs/html/guide/topics/ui/settings.jd
@@ -549,7 +549,7 @@
 <p>In rare cases, you might want to design your settings such that the first screen
 displays only a list of <a href="#Subscreens">subscreens</a> (such as in the system Settings app,
 as shown in figures 4 and 5). When you're developing such a design for Android 3.0 and higher, you
-should use a new "headers" feature in Android 3.0, instead of building subscreens with nested
+should use the "headers" feature instead of building subscreens with nested
 {@link android.preference.PreferenceScreen} elements.</p>
 
 <p>To build your settings with headers, you need to:</p>
@@ -719,7 +719,7 @@
 
 <p>Because support for {@code <preference-headers>} was added in Android 3.0, the system calls
 {@link android.preference.PreferenceActivity#onBuildHeaders onBuildHeaders()} in your {@link
-android.preference.PreferenceActivity} only when running on Androd 3.0 or higher. In order to load
+android.preference.PreferenceActivity} only when running on Android 3.0 or higher. In order to load
 the "legacy" headers file ({@code preference_headers_legacy.xml}), you must check the Android
 version and, if the version is older than Android 3.0 ({@link
 android.os.Build.VERSION_CODES#HONEYCOMB}), call {@link
diff --git a/docs/html/images/debug-ddms.png b/docs/html/images/debug-ddms.png
index d92fb3c..53121db 100644
--- a/docs/html/images/debug-ddms.png
+++ b/docs/html/images/debug-ddms.png
Binary files differ
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/am-androidmon2.png b/docs/html/images/tools/am-androidmon2.png
new file mode 100644
index 0000000..a4a7571
--- /dev/null
+++ b/docs/html/images/tools/am-androidmon2.png
Binary files differ
diff --git a/docs/html/images/tools/am-cpumon2.png b/docs/html/images/tools/am-cpumon2.png
new file mode 100644
index 0000000..6ac6e02
--- /dev/null
+++ b/docs/html/images/tools/am-cpumon2.png
Binary files differ
diff --git a/docs/html/images/tools/am-dumpalloc2.png b/docs/html/images/tools/am-dumpalloc2.png
new file mode 100644
index 0000000..d936aa8
--- /dev/null
+++ b/docs/html/images/tools/am-dumpalloc2.png
Binary files differ
diff --git a/docs/html/images/tools/am-gc2.png b/docs/html/images/tools/am-gc2.png
new file mode 100644
index 0000000..a5e8b6e
--- /dev/null
+++ b/docs/html/images/tools/am-gc2.png
Binary files differ
diff --git a/docs/html/images/tools/am-gpumon2.png b/docs/html/images/tools/am-gpumon2.png
new file mode 100644
index 0000000..5cf51d9
--- /dev/null
+++ b/docs/html/images/tools/am-gpumon2.png
Binary files differ
diff --git a/docs/html/images/tools/am-icaptures.png b/docs/html/images/tools/am-icaptures.png
new file mode 100644
index 0000000..cf288d6
--- /dev/null
+++ b/docs/html/images/tools/am-icaptures.png
Binary files differ
diff --git a/docs/html/images/tools/am-igraphic.png b/docs/html/images/tools/am-igraphic.png
new file mode 100644
index 0000000..a3c43fa
--- /dev/null
+++ b/docs/html/images/tools/am-igraphic.png
Binary files differ
diff --git a/docs/html/images/tools/am-imaximize.png b/docs/html/images/tools/am-imaximize.png
new file mode 100644
index 0000000..38a6c6c
--- /dev/null
+++ b/docs/html/images/tools/am-imaximize.png
Binary files differ
diff --git a/docs/html/images/tools/am-imaxlogcat.png b/docs/html/images/tools/am-imaxlogcat.png
new file mode 100644
index 0000000..4522bd4
--- /dev/null
+++ b/docs/html/images/tools/am-imaxlogcat.png
Binary files differ
diff --git a/docs/html/images/tools/am-iminimize.png b/docs/html/images/tools/am-iminimize.png
new file mode 100644
index 0000000..d0bbe4c
--- /dev/null
+++ b/docs/html/images/tools/am-iminimize.png
Binary files differ
diff --git a/docs/html/images/tools/am-imovedown.png b/docs/html/images/tools/am-imovedown.png
new file mode 100644
index 0000000..802c13b
--- /dev/null
+++ b/docs/html/images/tools/am-imovedown.png
Binary files differ
diff --git a/docs/html/images/tools/am-imoveup.png b/docs/html/images/tools/am-imoveup.png
new file mode 100644
index 0000000..95f6ef3
--- /dev/null
+++ b/docs/html/images/tools/am-imoveup.png
Binary files differ
diff --git a/docs/html/images/tools/am-logcatmon2.png b/docs/html/images/tools/am-logcatmon2.png
new file mode 100644
index 0000000..5635935
--- /dev/null
+++ b/docs/html/images/tools/am-logcatmon2.png
Binary files differ
diff --git a/docs/html/images/tools/am-networkmon.png b/docs/html/images/tools/am-networkmon.png
index 95b3a5b..f55f853 100644
--- a/docs/html/images/tools/am-networkmon.png
+++ b/docs/html/images/tools/am-networkmon.png
Binary files differ
diff --git a/docs/html/images/tools/am-networkmon2.png b/docs/html/images/tools/am-networkmon2.png
new file mode 100644
index 0000000..d05fcd4
--- /dev/null
+++ b/docs/html/images/tools/am-networkmon2.png
Binary files differ
diff --git a/docs/html/images/tools/am-screenshot.png b/docs/html/images/tools/am-screenshot.png
new file mode 100644
index 0000000..5c27617
--- /dev/null
+++ b/docs/html/images/tools/am-screenshot.png
Binary files differ
diff --git a/docs/html/images/tools/am-sysinfo.png b/docs/html/images/tools/am-sysinfo.png
new file mode 100644
index 0000000..9b5cd17
--- /dev/null
+++ b/docs/html/images/tools/am-sysinfo.png
Binary files differ
diff --git a/docs/html/images/tools/am-video.png b/docs/html/images/tools/am-video.png
new file mode 100644
index 0000000..9787ef8
--- /dev/null
+++ b/docs/html/images/tools/am-video.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/db-attachprocess.png b/docs/html/images/tools/db-attachprocess.png
new file mode 100644
index 0000000..ca5418e
--- /dev/null
+++ b/docs/html/images/tools/db-attachprocess.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..0754afa
--- /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/sdk-iadd.png b/docs/html/images/tools/sdk-iadd.png
new file mode 100644
index 0000000..7e35521
--- /dev/null
+++ b/docs/html/images/tools/sdk-iadd.png
Binary files differ
diff --git a/docs/html/images/tools/studio-sdk-manager-packages.png b/docs/html/images/tools/studio-sdk-manager-packages.png
index 356073e..79ea912 100644
--- a/docs/html/images/tools/studio-sdk-manager-packages.png
+++ b/docs/html/images/tools/studio-sdk-manager-packages.png
Binary files differ
diff --git a/docs/html/images/tools/support-library/appbar-kitkat.png b/docs/html/images/tools/support-library/appbar-kitkat.png
new file mode 100644
index 0000000..c89fd87
--- /dev/null
+++ b/docs/html/images/tools/support-library/appbar-kitkat.png
Binary files differ
diff --git a/docs/html/images/tools/support-library/appbar-kitkat_2x.png b/docs/html/images/tools/support-library/appbar-kitkat_2x.png
new file mode 100644
index 0000000..c9718e6
--- /dev/null
+++ b/docs/html/images/tools/support-library/appbar-kitkat_2x.png
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 863d235..f155521 100644
--- a/docs/html/jd_collections.js
+++ b/docs/html/jd_collections.js
@@ -1,3 +1,11 @@
+/*
+ * THIS FILE IS DEPRECATED.
+ *
+ * Please add and edit resource collections in jd_extras_<lang>.js
+ * where lang matches the language code appropriate for the resource.
+ * Last sync'd with jd_extras_<lang>.js on 29 Apr 2016.
+ *
+ */
 var RESOURCE_COLLECTIONS = {
   "index/carousel": {
     "title": "",
@@ -372,7 +380,6 @@
       "distribute/googleplay/index.html#opportunities",
       "distribute/analyze/improve-roi.html",
       "distribute/users/expand-to-new-markets.html",
-      "distribute/users/promote-with-ads.html",
       "distribute/analyze/index.html",
       "distribute/users/app-invites.html",
       "distribute/users/ota-installs.html",
@@ -1469,6 +1476,7 @@
       "https://support.google.com/admob/topic/2784623",
       "https://admob.blogspot.com/",
       "https://analyticsacademy.withgoogle.com/mobile-app",
+      "https://www.udacity.com/courses/ud876-3"
     ]
   },
   "distribute/monetize/paymentmethods": {
@@ -1699,6 +1707,37 @@
       "https://www.youtube.com/watch?v=j3QC6hcpy90"
     ]
   },
+"tools/help/log": {
+    "title": "",
+    "resources": [
+       "tools/help/am-logcat.html"
+    ]
+  },
+"tools/help/monitor": {
+    "title": "",
+    "resources": [
+       "tools/help/am-memory.html",
+       "tools/help/am-cpu.html",
+       "tools/help/am-gpu.html",
+       "tools/help/am-network.html"
+    ]
+  },
+ "tools/help/data": {
+    "title": "",
+    "resources": [
+       "tools/help/am-hprof.html",
+       "tools/help/am-allocation.html",
+       "tools/help/am-methodtrace.html",
+       "tools/help/am-sysinfo.html"
+    ]
+  },
+  "tools/help/shot": {
+    "title": "",
+    "resources": [
+       "tools/help/am-screenshot.html",
+       "tools/help/am-video.html"
+    ]
+  },
   "tools/performance/rendering": {
     "title": "",
     "resources": [
@@ -1782,7 +1821,7 @@
     "title": "",
     "resources": [
     "https://medium.com/google-developers/how-often-should-you-update-android-studio-db25785c488e#.8blbql35x",
-    "http://android-developers.blogspot.com/2016/02/android-studio-20-beta.html",
+    "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 eb21dd9..d176883 100644
--- a/docs/html/jd_extras.js
+++ b/docs/html/jd_extras.js
@@ -1,18 +1,11 @@
-/* Metadata represendations of resources that are outside of the autogenerated
-   local resource lists, or that override local resource representations.
-
-   Resources listed here are referenced from sitemap sections and collections,
-   matched by url string if there is no resource existing in ALL_RESOURCES.
-
-   Currently, these articles can override only the generated resources
-   in DISTRIBUTE_RESOURCES. A representation defined here will not be applied
-   when a collection or section specifies a url that's not in DISTRIBUTE_RESOURCEs.
-   Also
-   So if a section url refers to a static doc that's
-   not in a distribute section, you need to create an item for
-   it in this file. Fix is to compare across
-   ALL_RESOURCES_BY_URL.  */
-
+/*
+ * THIS FILE IS DEPRECATED.
+ *
+ * Please add and edit resource collections in jd_extras_<lang>.js
+ * where lang matches the language code appropriate for the resource.
+ * Last sync'd with jd_extras_<lang>.js on 29 Apr 2016.
+ *
+ */
 DISTRIBUTE_RESOURCES = DISTRIBUTE_RESOURCES.concat([
  /* TODO Remove standard resources from here, such as below
  */
@@ -2783,6 +2776,19 @@
     "lang": "en",
     "group": "",
     "tags": [],
+    "url": "https://www.udacity.com/courses/ud876-3",
+    "timestamp": null,
+    "image": "distribute/images/advertising.jpg",
+    "title": "Learn how to show ads in your Android app",
+    "summary": "Take this online course to learn how to use AdMob to display ads in your Android app.",
+    "keywords": ["marketing", "analytics"],
+    "type": "distribute",
+    "titleFriendly": ""
+  },
+  {
+    "lang": "en",
+    "group": "",
+    "tags": [],
     "url": "https://developers.google.com/mobile-ads-sdk/download",
     "timestamp": null,
     "image": "distribute/images/advertising.jpg",
diff --git a/docs/html/jd_extras_en.js b/docs/html/jd_extras_en.js
index 54b77b0..f11da20 100644
--- a/docs/html/jd_extras_en.js
+++ b/docs/html/jd_extras_en.js
@@ -1,22 +1,55 @@
-/* Metadata represendations of resources that are outside of the autogenerated
-   local resource lists, or that override local resource representations.
+/* Metadata extensions for the specified language
+   as well as resource collection definitions.
 
-   Resources listed here are referenced from queries and collections,
-   matched by url string.
+   'Extras' defined in this file are metadata represendations of
+   resources that are outside the autogenerated local resource lists,
+   or representations that override the default representations. 
+   (Overriding the default is not recommended)
 
-   Currently, these articles can override only the generated resources
-   in DISTRIBUTE_RESOURCES. A representation defined here will not be applied
-   when a collection or section specifies a url that's not in DISTRIBUTE_RESOURCEs.
-   Also
-   So if a section url refers to a static doc that's
-   not in a distribute section, you need to create an item for
-   it in this file. Fix is to compare across
-   ALL_RESOURCES_BY_URL.  */
+   'Collections' are a predefined set of resources that pages can
+   display by referencing the collection name in a data query. Urls
+   listed in a collection must map exactly to urls in local metadata
+   resources (either default or extras).
+
+   'Carousel overrides' are extras that override a default resource
+   for the purpose of customizing the text and display in carousels/heros.
+   Urls referenced must map exactly to urls in local metadata
+   resources (either default or extras).
+
+   'Static search results' are metadata objects that are returned in
+   the search results page when the user enters the object's keyword.
+
+   The extras, collections, carousel overrides, and static search results
+   listed here are referenced from dynamic content queries, matched by
+   url string.
+  */
 
 METADATA['en'].extras = METADATA['en'].extras.concat([
  /* TODO Remove standard resources from here, such as below
  */
   {
+    "title":"Writing More Code by Writing Less Code with Android Studio Live Templates",
+    "category":"",
+    "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?",
+    "category":"",
+    "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",
     "category":"google",
     "summary":"Get details on how to use the Developer Console User Acquisitions reports to discover where your users come from.",
@@ -642,7 +675,18 @@
     "keywords": [],
     "tags": [],
     "image":"distribute/images/gp-edu-apps-image.jpg",
-    "type":"distribute"
+    "type":"google"
+  },
+  {
+    "title":"Keeping Your App Responsive",
+    "category":"performance",
+    "summary":"This document describes how the Android system determines whether an application is not responding and provides guidelines for ensuring that your application stays responsive.",
+    "url":"training/articles/perf-anr.html",
+    "group":"",
+    "keywords": [],
+    "tags": [],
+    "image":"",
+    "type":"google"
   },
   {
     "title":"Google Play Game Services",
@@ -770,7 +814,7 @@
     "type": "distribute",
     "category": "google play"
   },
-{
+  {
     "lang": "en",
     "group": "",
     "tags": [],
@@ -1266,7 +1310,7 @@
     "lang": "en",
     "group": "",
     "tags": [
-      "#gcm",
+      "gcm",
     ],
     "url": "https://developer.chrome.com/apps/cloudMessagingV2",
     "timestamp": 1383243492000,
@@ -1277,12 +1321,11 @@
     "type": "distribute",
     "category": "google"
   },
-
   {
     "lang": "en",
     "group": "",
     "tags": [
-      "#sdkupdates"
+      ""
     ],
     "url": "https://android-developers.blogspot.com/2013/07/making-beautiful-android-app-icons.html",
     "timestamp": 1194884220000,
@@ -1293,11 +1336,11 @@
     "type": "blog",
     "category": ""
   },
-     {
+  {
     "lang": "en",
     "group": "",
     "tags": [
-      "#sdkupdates"
+      ""
     ],
     "url": "https://android-developers.blogspot.com/2012/12/localize-your-promotional-graphics-on.html",
     "timestamp": 1194884220000,
@@ -1308,11 +1351,11 @@
     "type": "blog",
     "category": ""
   },
-   {
+  {
     "lang": "en",
     "group": "",
     "tags": [
-      "#sdkupdates"
+      ""
     ],
     "url": "https://android-developers.blogspot.com/2013/10/making-your-app-content-more-accessible.html",
     "timestamp": 1194884220000,
@@ -2901,6 +2944,18 @@
     "type":"distribute"
   },
   {
+    "title":"What’s New in Android N Developer Preview",
+    "category":"preview",
+    "summary":"Learn all about the new features in the Android N Preview.",
+    "url":"https://www.youtube.com/watch?v=CsulIu3UaUM",
+    "group":"",
+    "keywords": ["androidn"],
+    "tags": [],
+    "image":"https://i1.ytimg.com/vi/CsulIu3UaUM/maxresdefault.jpg",
+    "lang":"en",
+    "type":"youtube"
+  },
+  {
     "title":"Developing for Android 6.0 (Marshmallow)",
     "category":"",
     "summary":"This video covers how to get started with the preview, important APIs to test and how to provide feedback on the preview.",
@@ -3120,6 +3175,19 @@
     "summary": "Learn how to get new users, using Universal app campaigns directly within the Google Play Developer Console to increase your installs from ads, and find out how your acquisition channels perform.",
   },
   {
+    "lang": "en",
+    "group": "",
+    "tags": ["play,protips"],
+    "url": "shareables/distribute/secrets_play/v2/web/secrets_to_app_success_v2_en.pdf",
+    "timestamp": 1447437450,
+    "image": "images/distribute/secrets_v2_banner.jpg",
+    "title": "The Secrets to App Success on Google Play",
+    "summary": "Get the updated guide full of useful features, tips, and best practices that will help you grow a successful app or game business on Google Play.",
+    "keywords": ["secrets, success, play, google"],
+    "type": "Book",
+    "category": "distribute"
+  },
+  {
     "url":"panel1",
     "image": "",
     "title": "",
@@ -3198,28 +3266,28 @@
     "title": "Android 5.0 Lollipop",
     "summary": "The Android 5.0 update adds a variety of new features for your apps, such as notifications on the lock screen, an all-new camera API, OpenGL ES 3.1, the new naterial design interface, and much more.",
   },
-  "http://www.youtube.com/watch?v=Pms0pcyPbAM": {
+  "https://www.youtube.com/watch?v=Pms0pcyPbAM": {
     "url":"https://www.youtube.com/watch?v=Pms0pcyPbAM&list=PLWz5rJ2EKKc9ofd2f-_-xmUi07wIGZa1c]",
     "image": "images/distribute/hero-carousel-giftedmom.jpg",
     "title": "Gifted Mom reaches more mothers across Africa with Android",
     "type":"youtube",
     "summary": "Gifted Mom is an app developed in Cameroon which provides users with critical information about pregnancy, breastfeeding and child vaccinations. Hear the creators explain how they built their business and launched on Google Play.",
   },
-  "http://www.youtube.com/watch?v=9m6MoBM-sFI": {
+  "https://www.youtube.com/watch?v=9m6MoBM-sFI": {
     "url":"https://www.youtube.com/watch?v=9m6MoBM-sFI&list=PLWz5rJ2EKKc9ofd2f-_-xmUi07wIGZa1c&index=3",
     "image": "images/distribute/hero-carousel-sgn.jpg",
     "title": "SGN increases installs with Store Listing Experiments",
     "type" : "youtube",
     "summary": "Watch mobile game developer SGN talk about how using Store Listing Experiments to test multiple variants across their portfolio of games helped improve their ROI, conversion rates and gamer retention.",
   },
-  "http://www.youtube.com/watch?v=e7t3svG9PTk": {
+  "https://www.youtube.com/watch?v=e7t3svG9PTk": {
     "url":"https://www.youtube.com/watch?v=e7t3svG9PTk&index=2&list=PLWz5rJ2EKKc9ofd2f-_-xmUi07wIGZa1c",
     "image": "images/distribute/hero-carousel-djit.jpg",
     "title": "DJiT builds higher quality experiences on Android",
     "type" : "youtube",
     "summary": "Learn how Music app developer DJiT create higher quality apps with improved latency on Android Marshmallow, as well as other Android and Google Play features.",
   },
-  "http://www.youtube.com/watch?v=J3IvOfvH1ys": {
+  "https://www.youtube.com/watch?v=J3IvOfvH1ys": {
     "url":"https://www.youtube.com/watch?v=J3IvOfvH1ys&list=PLWz5rJ2EKKc9ofd2f-_-xmUi07wIGZa1c&index=1",
     "image": "images/distribute/hero-carousel-wego.jpg",
     "title": "Wego increases user retention with material design",
@@ -3275,10 +3343,10 @@
   "index/secondary/carousel": {
     "title": "",
     "resources": [
-      "http://www.youtube.com/watch?v=Pms0pcyPbAM",
-      "http://www.youtube.com/watch?v=9m6MoBM-sFI",
-      "http://www.youtube.com/watch?v=e7t3svG9PTk",
-      "http://www.youtube.com/watch?v=J3IvOfvH1ys"
+      "https://www.youtube.com/watch?v=9m6MoBM-sFI",
+      "https://www.youtube.com/watch?v=Pms0pcyPbAM",
+      "https://www.youtube.com/watch?v=e7t3svG9PTk",
+      "https://www.youtube.com/watch?v=J3IvOfvH1ys"
     ]
   },
   "index/multiscreen": {
@@ -3379,7 +3447,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",
@@ -3530,7 +3597,6 @@
       "distribute/googleplay/index.html#opportunities",
       "distribute/analyze/improve-roi.html",
       "distribute/users/expand-to-new-markets.html",
-      "distribute/users/promote-with-ads.html",
       "distribute/analyze/index.html",
       "distribute/users/app-invites.html",
       "distribute/users/ota-installs.html",
@@ -4447,6 +4513,7 @@
       "https://support.google.com/admob/topic/2784623",
       "https://admob.blogspot.com/",
       "https://analyticsacademy.withgoogle.com/mobile-app",
+      "https://www.udacity.com/courses/ud876-3"
     ]
   },
   "distribute/monetize/paymentmethods": {
@@ -4456,6 +4523,14 @@
       "https://support.google.com/googleplay/answer/2651410"
     ]
   },
+  "go/libraries": {
+    "title": "",
+    "resources": [
+      "go/libraries/support-library/index.html",
+      "go/libraries/testing-support-library/index.html",
+      "go/libraries/data-binding/index.html"
+    ]
+  },
   "autolanding": {
     "title": "",
     "resources": [
@@ -4614,10 +4689,11 @@
     "resources": [
       "training/enterprise/app-compatibility.html",
       "training/enterprise/app-restrictions.html",
+      "training/enterprise/cosu.html",
       "https://www.youtube.com/watch?v=39NkpWkaH8M&index=2&list=PLOU2XLYxmsIKAK2Bhv19H2THwF-22O5WX",
       "samples/AppRestrictionSchema/index.html",
-      "samples/AppRestrictionEnforcer/index.html",
-      "https://www.youtube.com/watch?v=dH41OutAMNM"
+      "https://www.youtube.com/watch?v=dH41OutAMNM",
+      "samples/AppRestrictionEnforcer/index.html"
     ]
   },
   "training/work/admin": {
@@ -4628,6 +4704,37 @@
       "https://www.youtube.com/watch?v=j3QC6hcpy90"
     ]
   },
+"tools/help/log": {
+    "title": "",
+    "resources": [
+       "tools/help/am-logcat.html"
+    ]
+  },
+"tools/help/monitor": {
+    "title": "",
+    "resources": [
+       "tools/help/am-memory.html",
+       "tools/help/am-cpu.html",
+       "tools/help/am-gpu.html",
+       "tools/help/am-network.html"
+    ]
+  },
+ "tools/help/data": {
+    "title": "",
+    "resources": [
+       "tools/help/am-hprof.html",
+       "tools/help/am-allocation.html",
+       "tools/help/am-methodtrace.html",
+       "tools/help/am-sysinfo.html"
+    ]
+  },
+  "tools/help/shot": {
+    "title": "",
+    "resources": [
+       "tools/help/am-screenshot.html",
+       "tools/help/am-video.html"
+    ]
+  },
   "tools/performance/rendering": {
     "title": "",
     "resources": [
@@ -4730,6 +4837,7 @@
   "preview/landing/more": {
     "title": "",
     "resources": [
+      "https://www.youtube.com/watch?v=CsulIu3UaUM",
       "preview/features/multi-window.html",
       "preview/features/notification-updates.html",
       "preview/features/background-optimization.html",
@@ -4746,6 +4854,9 @@
 
 /**
  * Static search results.
+
+   Metadata objects returned in search results page when the user enters
+   each object's keyword.
  */
 METADATA['en'].searchHeroCollections = {
   "material": {
diff --git a/docs/html/ndk/guides/_book.yaml b/docs/html/ndk/guides/_book.yaml
index fdcfe46..287a92d 100644
--- a/docs/html/ndk/guides/_book.yaml
+++ b/docs/html/ndk/guides/_book.yaml
@@ -61,5 +61,14 @@
   - title: OpenSL ES for Android
     path: /ndk/guides/audio/opensl-for-android.html
 
-- title: Graphics
+- title: Vulkan
   path: /ndk/guides/graphics/index.html
+  section:
+  - title: Getting Started
+    path: /ndk/guides/graphics/getting-started.html
+  - title: Design Guidelines
+    path: /ndk/guides/graphics/design-notes.html
+  - title: Shader Compilers
+    path: /ndk/guides/graphics/shader-compilers.html
+  - title: Validation Layers
+    path: /ndk/guides/graphics/validation-layer.html
diff --git a/docs/html/ndk/guides/abis.jd b/docs/html/ndk/guides/abis.jd
index e5c65ef..306cfdb 100644
--- a/docs/html/ndk/guides/abis.jd
+++ b/docs/html/ndk/guides/abis.jd
@@ -59,14 +59,13 @@
 </tr>
 
 <tr>
-<td><a href="#v7a">{@code armeabi-v7a} ({@code armeabi-v7a-hard)}</a></td>
+<td><a href="#v7a">{@code armeabi-v7a}</a></td>
 <td>
 <li>armeabi</li>
 <li>Thumb-2</li>
 <li>VFPv3-D16</li>
 <li>Other, optional</li></td>
-<td>Hard float when specified as {@code armeabi-v7a-hard}.
-Incompatible with ARMv5, v6 devices.</td>
+<td>Incompatible with ARMv5, v6 devices.</td>
 </tr>
 
 <tr>
@@ -162,7 +161,7 @@
 <a href="{@docRoot}ndk/guides/android_mk.html">{@code Android.mk}</a>
 file.</p>
 
-<h3 id="v7a">armeabi-v7a (armeabi-v7a-hard)</h3>
+<h3 id="v7a">armeabi-v7a</h3>
 <p>This ABI extends armeabi to include several
 <a href="http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ddi0406c/index.html">
 CPU instruction set extensions</a>. The instruction extensions that this Android-specific
@@ -197,31 +196,6 @@
 function calls, instead of dedicated floating-point ones. The system can perform all internal
 computations using the FP registers. Doing so speeds up the computations greatly.</p>
 
-<p>Although the requirement to use core register pairs produces a modest performance hit, it ensures
-compatibility with all existing armeabi binaries. If you need the additional
-performance, you can specify your ABI as {@code armeabi-v7a-hard} instead. Doing so
-allows you to use hard floats, while still linking with Android native APIs
-that use {@code softfp}. For more information, refer to the comments in
-{@code $NDK/tests/device/hard-float/jni/android.mk}.</p>
-
-<p class="note"><strong>Note:</strong> You cannot specify {@code APP_ABI} as both
-{@code armeabi-v7a} and {@code armeabi-v7a-hard}. In either case, the build system places the
-shared libraries in the {@code armeabi-v7a/} directory.</p>
-
-<h3 id="hard">armeabi-v7a-hard</h3>
-<p>This variant of the {@code armeabi-v7a} ABI is unique to the NDK. The NDK build
-system adds the following flags in addition to those that it uses for the
-{@code armeabi-v7a} ABI:</p>
-
-<pre class="no-pretty-print">
-TARGET_CFLAGS += -mhard-float -D_NDK_MATH_NO_SOFTFP=1
-TARGET_LDFLAGS += -Wl,--no-warn-mismatch -lm_hard
-</pre>
-
-<p>The compiler compiles all code with hard-float, and links it with {@code libm_hard.a}.
-This math library is the same one as {@code libm.a}, except that it follows hard-float ABI
-conventions. In the APK, the generated shared libraries reside in {@code /lib/armeabi-v7a/}.</p>
-
 <h3 id="arm64-v8a">arm64-v8a</h3>
 <p>This ABI is for ARMv8-based CPUs that support AArch64. It also includes the NEON and
 VFPv4 instruction sets.</p>
diff --git a/docs/html/ndk/guides/cpp-support.jd b/docs/html/ndk/guides/cpp-support.jd
index 21df6af..6e902f5 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 <atomic>}, it's likely that you also need {@code libatomic}.
 If you are using {@code ndk-build}, add the following line:</p>
@@ -201,30 +201,28 @@
 -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>
 
-<p>Around 99% of tests pass when compiling {@code libc++} with Clang 3.4 for all supported ABIs.
-The failures are mostly in the areas of {@code wchar_t} and locales that Android bionic
-doesn't support. Switching locale from the default produces the following warning in
-{@code logcat}:</p>
+<p>The NDK's libc++ is not stable. Not all the tests pass, and the test suite is not comprehensive.
+Some known issues are:</p>
+
+<ul>
+    <li>Using {@code c++_shared} on ARM can crash when an exception is thrown.</li>
+    <li>Support for {@code wchar_t} and the locale APIs is limited.</li>
+</ul>
+
+<p>You should also make sure to check the "Known Issues" section of the changelog for the NDK
+release you are using.</p>
+
+<p class="note"><strong>Warning: </strong>Attempting to change to an unsupported locale will
+<strong>not</strong> fail. The operation will succeed, but the locale will not change and the
+following message will appear in {@code logcat}.</p>
 
 <pre>
 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/ndk/guides/graphics/design-notes.jd b/docs/html/ndk/guides/graphics/design-notes.jd
new file mode 100644
index 0000000..272bd2d
--- /dev/null
+++ b/docs/html/ndk/guides/graphics/design-notes.jd
@@ -0,0 +1,121 @@
+page.title=Vulkan Design Guidelines
+@jd:body
+
+<div id="qv-wrapper">
+    <div id="qv">
+      <h2>On this page</h2>
+
+      <ol>
+        <li><a href="#apply">Apply Display Rotation During Rendering</a></li>
+        <li><a href="#minimize">Minimize Render Passes Per Frame</a></li>
+        <li><a href="#choose">Choose Appropriate Memory Types</a></li>
+        <li><a href="#group">Group Descriptor Sets by Frequency</a></li>
+      </ol>
+    </div>
+  </div>
+
+<p>
+Vulkan is unlike earlier graphics APIs in that drivers do not perform certain
+optimizations, such as pipeline reuse, for apps. Instead, apps using Vulkan must
+implement such optimizations themselves. If they do not, they may exhibit worse
+performance than apps running OpenGL ES.
+</p>
+
+<p>
+When apps implement these optimizations themselves, they have the potential
+to do so more successfully than the driver can, because they have access to
+more specific information for a given use case. As a result, skillfully
+optimizing an app that uses Vulkan can yield better performance than if the
+app were using OpenGL ES.
+</p>
+
+<p>
+This page introduces several optimizations that your Android app can implement
+to gain performance boosts from Vulkan.
+</p>
+
+<h2 id="apply">Apply Display Rotation During Rendering</h2>
+
+<p>
+When the upward-facing direction of an app doesn’t match the orientation of the device’s
+display, the compositor rotates the application’s swapchain images so that it
+does match. It performs this rotation as it displays the images, which results
+in more power consumption&mdash;sometimes significantly more&mdash;than if it were not
+rotating them.
+</p>
+
+<p>
+By contrast, rotating swapchain images while generating them results in
+little, if any, additional power consumption. The
+{@code VkSurfaceCapabilitiesKHR::currentTransform} field indicates the rotation
+that the compositor applies to the window. After an app applies that rotation
+during rendering, the app uses the {@code VkSwapchainCreateInfoKHR::preTransform}
+field to report that the rotation is complete.
+</p>
+
+<h2 id="minimize">Minimize Render Passes Per Frame</h2>
+
+<p>
+On most mobile GPU architectures, beginning and ending a render pass is an
+expensive operation. Your app can improve performance by organizing rendering operations into
+as few render passes as possible.
+</p>
+
+<p>
+Different attachment-load and attachment-store ops offer different levels of
+performance. For example, if you do not need to preserve the contents of an attachment, you
+can use the much faster {@code VK_ATTACHMENT_LOAD_OP_CLEAR} or
+{@code VK_ATTACHMENT_LOAD_OP_DONT_CARE} instead of {@code VK_ATTACHMENT_LOAD_OP_LOAD}. Similarly, if
+you don't need to write the attachment's final values to memory for later use, you can use
+{@code VK_ATTACHMENT_STORE_OP_DONT_CARE} to attain much better performance than
+{@code VK_ATTACHMENT_STORE_OP_STORE}.
+</p>
+
+<p>
+Also, in most render passes, your app doesn’t need to load or store the
+depth/stencil attachment. In such cases, you can avoid having to allocate physical memory for
+the attachment by using the {@code VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT}
+flag when creating the attachment image. This bit provides the same benefits as does
+{@code glFramebufferDiscard} in OpenGL ES.
+</p>
+
+<h2 id="choose">Choose Appropriate Memory Types</h2>
+
+<p>
+When allocating device memory, apps must choose a memory type. Memory type
+determines how an app can use the memory, and also describes caching and
+coherence properties of the memory.  Different devices have different memory
+types available; different memory types exhibit different performance
+characteristics.
+</p>
+
+<p>
+An app can use a simple algorithm to pick the best memory type for a given
+use. This algorithm picks the first memory type in the
+{@code VkPhysicalDeviceMemoryProperties::memoryTypes} array that meets two criteria:
+The memory type must be allowed for the buffer
+or image, and must have the minimum properties that the app requires.
+</p>
+
+<p>
+Mobile systems generally don’t have separate physical memory heaps for the
+CPU and GPU. On such systems, {@code VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT} is not as
+significant as it is on systems that have discrete GPUs with their own, dedicated
+memory. An app should not assume this property is required.
+</p>
+
+<h2 id="group">Group Descriptor Sets by Frequency</h2>
+
+<p>
+If you have resource bindings that change at different frequencies, use
+multiple descriptor sets per pipeline rather than rebinding all resources for
+each draw. For example, you can have one set of descriptors for per-scene
+bindings, another set for per-material bindings, and a third set for
+per-mesh-instance bindings.
+</p>
+
+<p>
+Use immediate constants for the highest-frequency changes, such as changes
+executed with each draw call.
+</p>
+
diff --git a/docs/html/ndk/guides/graphics/getting-started.jd b/docs/html/ndk/guides/graphics/getting-started.jd
new file mode 100644
index 0000000..9099b03
--- /dev/null
+++ b/docs/html/ndk/guides/graphics/getting-started.jd
@@ -0,0 +1,200 @@
+page.title=Vulkan Setup
+@jd:body
+
+
+<div id="qv-wrapper">
+    <div id="qv">
+      <h2>On this page</h2>
+
+      <ol>
+        <li><a href="#downloading">Downloading</a></li>
+        <li><a href="#testing">Testing Installation</a></li>
+        <li><a href="#compiling">Compiling Your Project</a></li>
+        <li><a href="#running">Running Your Project</a></li>
+        <li><a href="#using">Using the Dynamic Loader</a></li>
+      </ol>
+
+    </div>
+  </div>
+
+<p>
+This document explains how to get started with the Vulkan graphics library by downloading,
+compiling, and running several sample apps.
+</p>
+
+<p>
+Before beginning, make sure you have the right hardware and platform version prepared. You should
+be using one of the following devices, running at least Android N, Developer Preview 2:
+</p>
+
+<ul>
+   <li>Nexus 6P.</li>
+   <li>Nexus 5X.</li>
+</ul>
+
+<p>
+You can confirm your Android version by going to the <strong>Settings</strong> menu, and
+selecting <strong>About &lt;device&gt;</strong> > <strong>Android Version</strong>.
+Once you’ve confirmed that you have the right hardware and platform version set up, you can
+download the necessary software.
+</p>
+
+<h2 id="downloading">Downloading</h2>
+
+<p>
+Before getting started, you must download several tools and other software.
+</p>
+
+<ol style="1">
+   <li>If you don’t already have Android Studio,
+   <a href="{@docRoot}sdk/index.html">download it.</a></li>
+
+<li><a href="https://github.com/android-ndk/ndk/wiki">Download</a> NDK r12-beta.</li>
+
+<li><a href="{@docRoot}preview/setup-sdk.html">Download and install
+the Android N-Preview SDK.</a></li>
+
+<li>(Optional) Build shaderc in NDK r12-beta by navigating to
+{@code &lt;ndk-root&gt;/sources/third_party/shaderc/},
+and running the following command:
+
+<pre class="no-pretty-print">
+../../../ndk-build NDK_PROJECT_PATH=. APP_BUILD_SCRIPT=Android.mk \
+ APP_STL:=c++_shared APP_ABI=all libshaderc_combined
+</pre>
+
+You can specify {@code APP_STL} as {@code gnustl_static},
+{@code gnustl_shared}, {@code c++_static},
+or {@code c++_shared}.</li>
+
+<li>Open a terminal window, and use git to clone the Android Vulkan samples from the
+repository in which they reside.
+
+<pre class="no-pretty-print">
+$ git clone https://github.com/googlesamples/vulkan-basic-samples.git
+</pre>
+</li>
+
+<li>
+Navigate to the {@code LunarGSamples/} directory, which is in the local repository
+that you checked out in the previous step.
+</li>
+
+<li>Update the gslang source by entering the following command:
+
+<pre class="no-pretty-print">
+$ ./update_external_sources.sh -s -g
+</pre>
+</li>
+
+</ol>
+
+
+<h2 id="testing">Testing Installation</h2>
+
+<p>
+To confirm that Vulkan is set up properly, you can test it with
+the set of Vulkan API samples provided partly for that purpose. Follow these steps to
+build and execute these samples:
+</p>
+
+<ol style="1">
+
+
+<li>(Optional) Build the source by entering the following commands:
+
+<pre class="no-pretty-print">
+$ cd API-samples
+$ cmake -DANDROID=ON -DANDROID_ABI=[armeabi-v7a|arm64-v8a| x86|x86_64|all(default)]
+</pre>
+</li>
+
+<li>
+Import the samples into Android Studio. To do so, choose <strong>File</strong> >
+<strong>Import
+project (Eclipse, ADT, Gradle)</strong> and
+select the {@code LunarGSamples/API-Samples/android} directory.
+
+<p>You may see an error about missing components or missing SDK version.
+Ignore this error message, and follow the installation prompts.</p>
+
+<p>After several minutes, the <em>Project</em> pane should
+resemble the window shown in Figure 1.</p>
+
+<img src="../images/project-pane.png"
+alt="Project pane after importing samples into Android Studio" id="figure1" />
+
+<p class="img-caption">
+<strong>Figure 1.</strong> Project pane displaying samples after they've been imported.
+
+</li>
+</ol>
+
+<h2 id="compiling">Compiling Your Project</h2>
+
+<p>To compile your project, follow these steps:</p>
+
+<ol style="1">
+<li>Select your project in the Android Studio <em>Project</em> panel.</li>
+<li>From the <strong>Build</strong> menu, choose <strong>Make Module &lt;module-name&gt; </strong>.</li>
+<li>Resolve any dependency issues, and then compile. As Figure 2 shows, you can select individual projects to compile by choosing them from the configuration pulldown.</li>
+
+<img src="../images/config-pulldown.png"
+alt="Selecting the "drawcube" project from the config pulldown id="figure2" />
+
+<p class="img-caption">
+<strong>Figure 2.</strong> Selecting an individual project to compile.
+
+</ol>
+
+<p class="note"><strong>Note: </strong>
+<a href="https://github.com/googlesamples/android-vulkan-tutorials">Additional
+tutorial samples</a> illustrate the use of shaders compiled with off-line
+compilation integrated into Android Studio. For simplicity, each tutorial
+is self-contained, and builds according to standard Android Studio
+<a href="{@docRoot}tools/studio/index.html">build procedures.</a>
+</p>
+
+<h2 id="running">Running Your Project</h2>
+
+<p>To run your project, choose an APK to run by choosing <strong>Run</strong> > <strong>Run &lt;project-name&gt;</strong>.</p>
+
+<p>To debug an APK, choose <strong>Run</strong> >
+<strong>Debug &lt;project-name&gt;</strong>.  For each project,
+there’s a Java version and a native (C or C++) version.  Run the
+native version of the app. For example, for drawcube,
+run drawcube-native.</p>
+
+<p>Most of the samples have simple functionality, and most stop
+automatically after running.  The drawcube example is one of
+the more visually interesting examples. When you run it, it
+should display the image in Figure 3</p>.
+
+<img src="../images/drawcube-output.png"
+alt="Successfully running shows a multicolored cube" id="figure3" />
+
+<p class="img-caption">
+<strong>Figure 3.</strong> The successfully compiled program runs and produces a display.
+</p>
+
+<h2 id="using">Using the Dynamic Loader</h2>
+<p>
+The samples use a dynamic loader helper function defined in {@code vulkan_wrapper.h/cpp} to
+retrieve Vulkan API pointers using {@code dlopen()} and {@code dlsym()}. It does this rather
+than statically linking them with {@code vulkan.so}.
+</p>
+
+<p>
+Using this loader allows the code to link against API level 23 and earlier versions of the platform, which don’t include the {@code vulkan.so} shared library, but can run on devices that support Vulkan API.
+</p>
+
+<p>
+The following snippet shows how to use the dynamic loader.
+</p>
+
+<pre>
+#include "vulkan_wrapper.h" // Include Vulkan_wrapper and dynamically load symbols.
+...
+// Before any Vulkan API usage,
+InitVulkan();
+</pre>
diff --git a/docs/html/ndk/guides/graphics/index.jd b/docs/html/ndk/guides/graphics/index.jd
index f3cf9dc..cbd4b9c 100644
--- a/docs/html/ndk/guides/graphics/index.jd
+++ b/docs/html/ndk/guides/graphics/index.jd
@@ -1,10 +1,12 @@
 page.title=Vulkan Graphics API
 @jd:body
 
-<p>
-<a class="external-link" href="https://www.khronos.org/vulkan/">Vulkan</a> is a
-low-overhead, cross-platform API for high-performance, 3D graphics. Like OpenGL
-ES, Vulkan provides tools for creating high-quality, real-time graphics in
+
+<p>The Android platform includes an Android-specific implementation of the
+<a class="external-link" href="https://www.khronos.org/vulkan/">Vulkan</a> API
+specification from the Khronos Group. Vulkan is a
+low-overhead, cross-platform API for high-performance, 3D graphics. It provides tools
+for creating high-quality, real-time graphics in
 applications. Vulkan also provides advantages such as reducing
 CPU overhead and providing support for the
 <a class="external-link" href="https://www.khronos.org/spir">SPIR-V Binary
@@ -12,7 +14,19 @@
 </p>
 
 <p>
-For general information about this cross-platform API specification, see
+This section begins with information on how to
+<a href="{@docRoot}ndk/guides/graphics/getting-started.html">get started</a> using Vulkan in your
+Android app. Next, it provides useful information that you should know about
+<a href="{@docRoot}ndk/guides/graphics/design-notes.html">Vulkan design guidelines</a>
+on the Android platform. From there, it explains how
+to use Vulkan's <a href="{@docRoot}ndk/guides/graphics/shader-compilers.html">shader compilers</a>.
+Last, it teaches you how to use
+<a href="{@docRoot}ndk/guides/graphics/validation-layer.html">validation layers</a>
+to help assure stability in apps using Vulkan.
+</p>
+
+<p>
+For more general information about this cross-platform API specification, see
 Khronos's
 <a class="external-link" href="http://khr.io/vulkanlaunchoverview">
 Vulkan Overview</a>.
diff --git a/docs/html/ndk/guides/graphics/shader-compilers.jd b/docs/html/ndk/guides/graphics/shader-compilers.jd
new file mode 100644
index 0000000..c51c21c
--- /dev/null
+++ b/docs/html/ndk/guides/graphics/shader-compilers.jd
@@ -0,0 +1,194 @@
+page.title=Vulkan Shader Compilers on Android
+@jd:body
+
+<div id="qv-wrapper">
+    <div id="qv">
+      <h2>On this page</h2>
+
+      <ol>
+        <li><a href="#aot">AOT Compilation</a></li>
+        <li><a href="#runtime">Runtime Compilation</a></li>
+        <li><a href="#integrating">Integrating Into your Project</a></li>
+      </ol>
+    </div>
+  </div>
+
+<p>
+A Vulkan app must manage shaders differently from the way an OpenGL ES app does so:
+In OpenGL ES, you provide a shader as a set of strings forming the source text of a
+GLSL shader program. By contrast, the Vulkan API requires you to provide a shader in
+the form of an entry point in a <a href=”https://www.khronos.org/spir”>SPIR-V</a> module.
+</p>
+
+<p>
+The NDK includes a runtime library for compiling GLSL into SPIR-V.
+The runtime library is the same as the one in the
+<a href="https://github.com/google/shaderc">Shaderc</a> open source project, and use the same
+<a href="https://github.com/KhronosGroup/glslang">Glslang GLSL</a> reference compiler as a
+back end. By default, the Shaderc version of the
+compiler assumes you are compiling for Vulkan.  After checking whether your code is valid for
+Vulkan, the compiler automatically enables the {@code KHR_vulkan_glsl} extension. The Shaderc
+version of the compiler also generates Vulkan-compliant SPIR-V code.
+</p>
+
+<p>
+You can choose to compile SPIR-V modules into your Vulkan app during development, a
+practice called <em>ahead-of-time</em>, or <em>AOT</em>, compiling. Alternatively,
+you can have your app compile them from shipped or procedurally generated shader
+source when needed during runtime. This practice is called <em>runtime compiling</em>.
+</p>
+
+<p>
+The rest of this page provides more detail about each practice, and then explains
+how to integrate shader compilation into your Vulkan app.
+</p>
+
+<h2 id=”aot”>AOT Compilation</h2>
+
+<p>
+For AOT compilation, we recommend the <em>glslc</em> command-line compiler from GLSL to SPIR-V.
+This compiler is available from the <a href="https://github.com/google/shaderc">Shaderc</a>
+project.</a>Many of its command-line options are similar to those of GCC and Clang, allowing
+you to integrate glslc into build systems easily.
+</p>
+
+<p>
+The glslc tool compiles a single-source file to a SPIR-V module with a single shader
+entry point.  By default, the output file has the same name as that of the source file,
+but with the {@code .spv} extension appended.
+</p>
+
+<p>
+You use filename extensions to tell the glslc tool which graphics shader stage to compile,
+or whether a compute shader is being compiled. For information on how to use these filename
+extensions, and options you can use with the tool, see
+<a href="https://github.com/google/shaderc/tree/master/glslc#user-content-shader-stage-specification">
+Shader stage specification</a> in the
+<a href="https://github.com/google/shaderc/tree/master/glslc">
+glslc</a> manual.
+</p>
+
+<h2 id="runtime">Runtime Compilation</h2>
+
+<p>
+For JIT compilation of shaders during runtime, the NDK provides the libshaderc library,
+which has both C and C++ APIs.
+</p>
+
+<p>
+C++ applications should use the C++ API. We recommend that apps in other languages
+use the C API, because the C ABI is lower level, and likely to provide better stability.
+</p>
+
+<p>
+The following example shows how to use the C++ API:
+</p>
+
+<pre>
+#include &lt;iostream&gt;
+#include &lt;string&gt;
+#include &lt;vector&gt;
+#include &lt;shaderc/shaderc.hpp&gt;
+
+std::vector&lt;uint32_t&gt; compile_file(const std::string& name,
+                                   shaderc_shader_kind kind,
+                                   const std::string& data) {
+  shaderc::Compiler compiler;
+  shaderc::CompileOptions options;
+
+  // Like -DMY_DEFINE=1
+  options.AddMacroDefinition("MY_DEFINE", "1");
+
+  shaderc::SpvCompilationResult module = compiler.CompileGlslToSpv(
+      data.c_str(), data.size(), kind, name.c_str(), options);
+
+  if (module.GetCompilationStatus() !=
+      shaderc_compilation_status_success) {
+    std::cerr << module.GetErrorMessage();
+  }
+
+  std::vector&lt;uint32_t&gt; result(module.cbegin(), module.cend());
+  return result;
+}
+</pre>
+
+
+
+<h2 id=”integrating”>Integrating into Your Projects</h2>
+
+<p>
+You can integrate the Vulkan shader compiler into your app using either the project's
+{@code Android.mk} file or Gradle.
+</p>
+
+<h3 id=”androidmk”>Android.mk</h3>
+
+<p>
+Perform the following steps to use your project's {@code Android.mk}
+file to integrate the shader compiler.
+</p>
+
+<ol>
+<li>
+Include the following lines in your Android.mk file:
+<pre class="no-pretty-print">
+include $(CLEAR_VARS)
+     ...
+LOCAL_STATIC_LIBRARIES := shaderc
+     ...
+include $(BUILD_SHARED_LIBRARY)
+
+$(call import-module, third_party/shaderc)
+</pre>
+</li>
+
+<li>
+Set APP_STL to one of {@code c++_static}, {@code c++_shared}, {@code gnustl_static},
+or {@code gnustl_shared}.
+</li>
+</ol>
+
+
+
+<h3 id=”gradle”>Gradle</h3>
+
+<ol>
+<li>
+In a terminal window, navigate to
+{@code &lt;ndk_root&gt;/sources/third_party/shaderc/}.
+</li>
+
+<li>
+Run the following command:
+
+<pre class="no-pretty-print">
+$ ../../../ndk-build NDK_PROJECT_PATH=. APP_BUILD_SCRIPT=Android.mk \
+APP_STL:=&lt;stl_version&gt; APP_ABI=all libshaderc_combined
+</pre>
+
+<p>
+This command places two folders in &lt;ndk_root&gt;/sources/third_party/shaderc/. The directory
+structure is as follows:
+</p>
+
+<pre class="no-pretty-print">
+include/
+  shaderc/
+    shaderc.h
+    shaderc.hpp
+libs/
+  &lt;stl_version&gt;/
+    {all of the abis}
+       libshaderc.a
+</pre>
+</li>
+
+<li>
+Add includes and link lines as you normally would for external libraries.
+</li>
+<p>
+The STL that you use to build your program must match the {@code stl} specified in
+{@code stl_version}.
+Only {@code c++_static}, {@code c++_shared}, {@code gnustl_static}, and
+{@code gnustl_shared} are supported.
+</p>
diff --git a/docs/html/ndk/guides/graphics/validation-layer.jd b/docs/html/ndk/guides/graphics/validation-layer.jd
new file mode 100644
index 0000000..beac1c0
--- /dev/null
+++ b/docs/html/ndk/guides/graphics/validation-layer.jd
@@ -0,0 +1,621 @@
+page.title=Vulkan Validation Layers on Android
+@jd:body
+
+<div id="qv-wrapper">
+    <div id="qv">
+      <h2>On this page</h2>
+
+      <ol>
+        <li><a href="#gls">Getting Layer Source</a></li>
+        <li><a href="#ias">Android Studio Integration</a>
+        <ol>
+            <li><a href="#asbl">Building Layers</a></li>
+            <li><a href="#asil">Installing Layers</a></li>
+        </ol>
+        </li>
+        <li><a href="#cli">Integrating on the Command Line</a>
+            <ol>
+            <li><a href="#clibl">Building Layers</a></li>
+            <li><a href="#cliil">Installing Layers</a></li>
+            </ol>
+        </li>
+        <li><a href="#verifying">Verifying Layer Build</a></li>
+        <li><a href="#enabling">Enabling Layers</a></li>
+        <li><a href="#debug">Enabling the Debug Callback</a></li>
+      </ol>
+    </div>
+  </div>
+
+<p>
+Most explicit graphics APIs do not perform error-checking, because doing so can result in a
+performance penalty. Vulkan provides error-checking in a manner that lets you use this feature at
+development time, but exclude it from the release build of your app, thus avoiding the penalty when
+it matters most. You do this by enabling <em>validation layers</em>. Validation layers intercept
+or hook Vulkan entry points for various debug and validation purposes.
+</p>
+
+<p>
+Each validation layer can contain definitions for one or more of these entry points, and
+intercepts the entry points for which it contains definitions. When a validation
+layer does not define an entry point, the system passes the entry point on to the next
+layer. Ultimately, an entry point not defined in any layer reaches the driver, the
+base level, unvalidated.
+</p>
+
+<p>
+The Android SDK, NDK, and Vulkan samples include Vulkan validation layers for
+use during development. You can hook these validation layers into the graphics stack, allowing
+them to report validation issues.  This instrumentation allows you to catch and fix misuses
+during development.
+</p>
+
+<p>
+This page explains how to:
+<ul>
+   <li>Get source code for validation layers.</li>
+   <li>Build the layers.</li>
+   <li>Incorporate the layers into your app.</li>
+</ul>
+</p>
+
+<h2 id="gls">Getting Layer Source</h2>
+<p>
+This section explains how to build layers from source.
+If you have precompiled layers, you can skip this section, and instead read about how to
+install your layers using <a href="#asil">Android Studio</a> or from the <a href="cliil">
+command line</a>.
+</p>
+<h3 id="ftn">From the NDK (Recommended)</h3>
+
+<p>
+<a href="{@docRoot}ndk/downloads/index.html">NDK Revision 12</a> and later contains source
+code for Android validation layers that is known-good, and ready to build. This code resides under
+the {@code &lt;ndk-root&gt;/sources/third_party/vulkan/src/build-android/generated/gradle-build}
+directory. This version of the layers should be sufficient for most needs. If so, your next task is
+to <a href="#building">build them</a>. Alternatively, you can pull source code from the
+Khronos Group repository.
+</pre>
+</p>
+
+<h3 id="ftr">From the repository</h3>
+
+<p>
+Although we recommend that you use the source code provided with the NDK, you can also pull more
+recent versions of the source code directly from the
+<a class="external-link" href="https://github.com/KhronosGroup/Vulkan-LoaderAndValidationLayers">
+GitHub repository</a> belonging to the Khronos Group. To do so, perform the following steps.
+</p>
+
+<ol style="1">
+<li>
+Clone the Vulkan directory by entering the following command in your terminal window:
+
+<pre class="no-pretty-print">
+$ git clone git@github.com:KhronosGroup/Vulkan-LoaderAndValidationLayers.git
+</pre>
+
+<p class="note"><strong>Note: </strong>You must have a private SSH key associated with
+GitHub, or this command fails with a {@code Permission denied (publickey)} message.</p>
+</li>
+
+<li>
+Navigate to the directory containing the layer source code, and
+check out the repo's stable Android branch, called {@code android_layers}:
+
+<pre class="no-pretty-print">
+$ cd Vulkan-LoaderAndValidationLayers
+$ git checkout android_layers
+</pre>
+</li>
+
+<li>
+Begin preparation for building by entering the following commands on the command line:
+<ul>
+   <li>For Linux or OS X:
+   <ul>
+      <li>
+      <pre class="no-pretty-print">
+$ cd build-android
+$ ./android-generate</pre>
+      </li>
+   </ul>
+   </li>
+
+   <li>For Windows:
+   <ul>
+      <li>
+<pre class="no-pretty-print">
+&gt; cd build-android
+&gt; android-generate.bat</pre>
+      </li>
+   </ul>
+   </li>
+</ul>
+</li>
+
+<li>
+Continue by following the build instructions for your platform.
+These instructions are in the {@code BUILD.md} file contained in the local instance of the
+repository you cloned.
+</li>
+</ul>
+
+</ol>
+
+<h3 id="ias">Android Studio Integration</h3>
+<p>
+Android Studio builds the validation layers when it builds the rest of the app.
+This flow makes it easier for you to trace through the layers at runtime. Each layer's
+source code corresponds to a single Gradle project, which you can specify directly in your Android
+Studio app. For example, there is a {@code build.gradle} project for threading, and another
+one for parameter validation.
+</p>
+
+<h4 id="asbl">Building layers</h4>
+
+<p>
+To integrate layers directory into Android Studio application, perform these steps:
+</p>
+<li>
+Add layers to your Android Studio application's project by specifying their corresponding
+Gradle projects in {@code settings.gradle}, which is normally a peer to app directory.
+The following example shows how to do this, based on the assumption that you're
+<a href="#ftn">using the {@code build.gradle} files from the NDK</a>.
+
+<pre>
+// configure your path to the source code generated on your machine
+def layerProjRoot = file('/path/to/ndk-root/.../build-android/generated/gradle-build')
+String[] layers = ['threading',
+                   'parameter_validation',
+                   'object_tracker',
+                   'core_validation',
+                   'device_limits',
+                   'image',
+                   'swapchain',
+                   'unique_objects']
+for (layer in layers) {
+    include ":"+ layer
+    project(":" + layer.toString()).projectDir = new File("${layerProjRoot}/${layer}")
+}
+</pre>
+</li>
+
+Your next step is to provide the built layers to the app by installing them.
+
+<h4 id="asil">Installing layers</h4>
+
+<li>
+To install your layers, add the layer Gradle projects to your application's jniLibs dependencies
+in your {@code build.gradle} module. This module normally resides under the {@code app/} directory.
+The following example shows how to do this:
+
+<pre>
+android.sources {
+    main {
+        jni { ... }
+        jniLibs {
+            dependencies {
+                project ":threading"
+                project ":parameter_validation"
+                project ":object_tracker"
+                project ":core_validation"
+                project ":device_limits"
+                project ":image"
+                project ":swapchain"
+                project ":unique_objects"
+            }
+        }
+    }
+} // android.sources
+</pre>
+</li>
+<li>
+Develop, build, and debug as you usually would. When you build, Android Studio automatically
+builds the layers and copies them into your APK.
+</li>
+<li>
+Debug your application. Android Studio allows you to trace through the layer source code.
+</li>
+<li>
+For best performance, remove the layers before you do your release build.
+</li>
+</ol>
+
+
+<h3 id="cli">From the Command Line</h3>
+
+This section explains how to build and install your layers if your project does not use
+Android Studio.
+
+<h4 id="clibl">Building layers</h4>
+
+<p>
+To build validation layers on Linux or OS X, enter these commands on the command line:
+</p>
+<ul>
+<li>
+Using Gradle:
+<pre class="no-pretty-print">
+$ cd generated/gradle-build
+$ # configure SDK and NDK path in local.properties
+$ gradlew assembleAllDebug
+</pre>
+</li>
+<li>
+Using Android makefiles:
+<pre class="no-pretty-print">
+$ ndk-build</pre>
+</li>
+</ul>
+
+<p>
+To build validation layers on Windows, enter these commands on the command line:
+</p>
+<ul>
+<li>
+Using Gradle:
+<pre class="no-pretty-print">
+&gt; cd generated\gradle-build
+&gt; REM configure SDK and NDK path in local.properties
+&gt; gradlew.bat assembleAllDebug
+</pre>
+</li>
+<li>
+Using Android makefiles:
+<pre class="no-pretty-print">
+&gt; ndk-build.cmd
+</pre>
+</li>
+</ul>
+
+
+
+</p>
+</li>
+</ol>
+
+<h4 id="cliil">Installing layers</h4>
+
+<p>
+After building the layers, you must provide them to your app. To do so, you must first
+create a {@code jniLibs} folder in your app's project directory under
+{@code ./src/main/}, and copy the libs to it. The following example shows how to do this.
+</p>
+
+<pre class="no-pretty-print">
+$ mkdir ./src/main/jniLibs
+</pre>
+
+<p>
+The next step depends on whether you are using Gradle or Android makefiles. If you're using
+Gradle, each built layer resides in its own directory. Consolidate the layers into a single
+directory, as the following example shows:
+</p>
+
+<pre class="no-pretty-print">
+$ cp -r .../build-android/generated/gradle-build/threading/build/outputs/native/debug/all/lib/* ./src/main/jniLibs/
+$ cp -r .../build-android/generated/gradle-build/parameter_validation/build/outputs/native/debug/all/lib/* ./src/main/jniLibs/
+$ cp -r .../build-android/generated/gradle-build/object_tracker/build/outputs/native/debug/all/lib/* ./src/main/jniLibs/
+$ cp -r .../build-android/generated/gradle-build/core_validation/build/outputs/native/debug/all/lib/* ./src/main/jniLibs/
+$ cp -r .../build-android/generated/gradle-build/device_limits/build/outputs/native/debug/all/lib/* ./src/main/jniLibs/
+$ cp -r .../build-android/generated/gradle-build/image/build/outputs/native/debug/all/lib/* ./src/main/jniLibs/
+$ cp -r .../build-android/generated/gradle-build/swapchain/build/outputs/native/debug/all/lib/* ./src/main/jniLibs/
+$ cp -r .../build-android/generated/gradle-build/unique_objects/build/outputs/native/debug/all/lib/* ./src/main/jniLibs/
+</pre>
+
+If you're using Android makefiles, the built layers reside in {@code lib} folders,
+with one {@code lib} folder under each architecture’s root directory. Consolidate the
+makefiles under the {@code jniLibs} directory as this example shows:
+</p>
+<pre class="no-pretty-print">
+$ cp -r .../build-android/libs/* ./src/main/jniLibs/
+</pre>
+</li>
+</ol>
+
+<h2 id="verifying">Verifying Layer Build</h2>
+
+<p>
+Regardless of whether you build using Gradle or Android makefiles, the build process produces
+a file structure like the following:
+</p>
+
+<pre class="no-pretty-print">
+src/main/jniLibs/
+  arm64-v8a/
+    libVkLayer_core_validation.so
+    libVkLayer_device_limits.so
+    libVkLayer_image.so
+    libVkLayer_object_tracker.so
+    libVkLayer_parameter_validation.so
+    libVkLayer_swapchain.so
+    libVkLayer_threading.so
+    libVkLayer_unique_objects.so
+  armeabi-v7a/
+    libVkLayer_core_validation.so
+    ...
+</pre>
+
+<p>
+The following example shows how to verify that your APK contains the validation layers
+as expected:
+</p>
+
+<pre class="no-pretty-print">
+$ jar -xvf project.apk
+ ...
+ inflated: lib/arm64-v8a/libVkLayer_threading.so
+ inflated: lib/arm64-v8a/libVkLayer_object_tracker.so
+ inflated: lib/arm64-v8a/libVkLayer_swapchain.so
+ inflated: lib/arm64-v8a/libVkLayer_unique_objects.so
+ inflated: lib/arm64-v8a/libVkLayer_parameter_validation.so
+ inflated: lib/arm64-v8a/libVkLayer_image.so
+ inflated: lib/arm64-v8a/libVkLayer_core_validation.so
+ inflated: lib/arm64-v8a/libVkLayer_device_limits.so
+ ...
+</pre>
+
+
+<h2 id="enabling">Enabling Layers</h2>
+
+<p>The Vulkan API allows an app to enable both instance layers and device layers.</p>
+
+<h3>Instance layers</h3>
+
+<p>
+A layer that can intercept Vulkan instance-level entry points is called an instance layer.
+Instance-level entry points are those with {@code VkInstance} or {@code VkPhysicalDevice}
+as the first parameter.
+</p>
+
+<p>
+You can call {@code vkEnumerateInstanceLayerProperties()} to list the available instance layers
+and their properties. The system enables instance layers when {@code vkCreateInstace()} executes.
+</p>
+
+<p>
+The following code snippet shows how an app can use the Vulkan API to programmatically enable and
+query an instance layer:
+</p>
+
+<pre>
+// Get instance layer count using null pointer as last parameter
+uint32_t instance_layer_present_count = 0;
+vkEnumerateInstanceLayerProperties(&instance_layer_present_count, nullptr);
+
+// Enumerate instance layers with valid pointer in last parameter
+VkLayerProperties* layer_props =
+    (VkLayerProperties*)malloc(instance_layer_present_count * sizeof(VkLayerProperties));
+vkEnumerateInstanceLayerProperties(&instance_layer_present_count, layer_props));
+
+// Make sure the desired instance validation layers are available
+// NOTE:  These are not listed in an arbitrary order.  Threading must be
+//        first, and unique_objects must be last.  This is the order they
+//        will be inserted by the loader.
+const char *instance_layers[] = {
+    "VK_LAYER_GOOGLE_threading",
+    "VK_LAYER_LUNARG_parameter_validation",
+    "VK_LAYER_LUNARG_object_tracker",
+    "VK_LAYER_LUNARG_core_validation",
+    "VK_LAYER_LUNARG_device_limits",
+    "VK_LAYER_LUNARG_image",
+    "VK_LAYER_LUNARG_swapchain",
+    "VK_LAYER_GOOGLE_unique_objects"
+};
+
+uint32_t instance_layer_request_count =
+    sizeof(instance_layers) / sizeof(instance_layers[0]);
+for (uint32_t i = 0; i < instance_layer_request_count; i++) {
+    bool found = false;
+    for (uint32_t j = 0; j < instance_layer_present_count; j++) {
+        if (strcmp(instance_layers[i], layer_props[j].layerName) == 0) {
+            found = true;
+        }
+    }
+    if (!found) {
+        error();
+    }
+}
+
+// Pass desired instance layers into vkCreateInstance
+VkInstanceCreateInfo instance_info = {};
+instance_info.sType = VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO;
+instance_info.enabledLayerCount = instance_layer_request_count;
+instance_info.ppEnabledLayerNames = instance_layers;
+...
+</pre>
+
+<h3>Device layers</h3>
+
+<p>
+A layer that can intercept device-level entry points is called a device layer. Device-level entry
+points are those whose first parameter is {@code VkDevice}, {@code VkCommandBuffer},
+or {@code VkQueue}. The list of
+device layers to enable is included in the {@code ppEnabledLayerNames} field of the
+{@code VkDeviceCreateInfo}
+struct that the app passes into {@code vkCreateDevice()}.
+</p>
+
+<p>
+You can call {@code vkEnumerateDeviceLayerProperties} to list the available layers
+and their properties. The system enables device layers when it calls {@code vkCreateDevice()}.
+</p>
+
+<p>
+The following code snippet shows how an app can use the Vulkan API to programmatically enable a
+device layer.
+</p>
+
+<pre>
+
+// Get device layer count using null as last parameter
+uint32_t device_layer_present_count = 0;
+vkEnumerateDeviceLayerProperties(&device_layer_present_count, nullptr);
+
+// Enumerate device layers with valid pointer in last parameter
+VkLayerProperties* layer_props =
+   (VkLayerProperties *)malloc(device_layer_present_count * sizeof(VkLayerProperties));
+vkEnumerateDeviceLayerProperties(physical_device, device_layer_present_count, layer_props));
+
+// Make sure the desired device validation layers are available
+// Ensure threading is first and unique_objects is last!
+const char *device_layers[] = {
+    "VK_LAYER_GOOGLE_threading",
+    "VK_LAYER_LUNARG_parameter_validation",
+    "VK_LAYER_LUNARG_object_tracker",
+    "VK_LAYER_LUNARG_core_validation",
+    "VK_LAYER_LUNARG_device_limits",
+    "VK_LAYER_LUNARG_image",
+    "VK_LAYER_LUNARG_swapchain",
+    "VK_LAYER_GOOGLE_unique_objects"
+};
+
+uint32_t device_layer_request_count =
+   sizeof(device_layers) / sizeof(device_layers[0]);
+for (uint32_t i = 0; i < device_layer_request_count; i++) {
+    bool found = false;
+    for (uint32_t j = 0; j < device_layer_present_count; j++) {
+        if (strcmp(device_layers[i],
+           layer_props[j].layerName) == 0) {
+            found = true;
+        }
+    }
+    if (!found) {
+        error();
+    }
+}
+
+// Pass desired device layers into vkCreateDevice
+VkDeviceCreateInfo device_info = {};
+device_info.sType = VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO;
+device_info.enabledLayerCount = device_layer_request_count;
+device_info.ppEnabledLayerNames = device_layers;
+...
+</pre>
+
+<h2 id="debug">Enabling the Debug Callback</h2>
+
+<p>
+The Debug Report extension {@code VK_EXT_debug_report} allows your application to control
+layer behavior when an event occurs.</p>
+
+<p>
+Before using this extension, you must first make sure that the platform supports it.
+The following example shows how to check for debug extension support and
+register a callback if the extension is supported.
+</p>
+
+<pre>
+// Get the instance extension count
+uint32_t inst_ext_count = 0;
+vkEnumerateInstanceExtensionProperties(nullptr, &inst_ext_count, nullptr);
+
+// Enumerate the instance extensions
+VkExtensionProperties* inst_exts =
+    (VkExtensionProperties *)malloc(inst_ext_count * sizeof(VkExtensionProperties));
+vkEnumerateInstanceExtensionProperties(nullptr, &inst_ext_count, inst_exts);
+
+const char * enabled_inst_exts[16] = {};
+uint32_t enabled_inst_ext_count = 0;
+
+// Make sure the debug report extension is available
+for (uint32_t i = 0; i < inst_ext_count; i++) {
+    if (strcmp(inst_exts[i].extensionName,
+    VK_EXT_DEBUG_REPORT_EXTENSION_NAME) == 0) {
+        enabled_inst_exts[enabled_inst_ext_count++] =
+            VK_EXT_DEBUG_REPORT_EXTENSION_NAME;
+    }
+}
+
+if (enabled_inst_ext_count == 0)
+    return;
+
+// Pass the instance extensions into vkCreateInstance
+VkInstanceCreateInfo instance_info = {};
+instance_info.sType = VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO;
+instance_info.enabledExtensionCount = enabled_inst_ext_count;
+instance_info.ppEnabledExtensionNames = enabled_inst_exts;
+
+PFN_vkCreateDebugReportCallbackEXT vkCreateDebugReportCallbackEXT;
+PFN_vkDestroyDebugReportCallbackEXT vkDestroyDebugReportCallbackEXT;
+
+vkCreateDebugReportCallbackEXT = (PFN_vkCreateDebugReportCallbackEXT)
+    vkGetInstanceProcAddr(instance, "vkCreateDebugReportCallbackEXT");
+vkDestroyDebugReportCallbackEXT = (PFN_vkDestroyDebugReportCallbackEXT)
+    vkGetInstanceProcAddr(instance, "vkDestroyDebugReportCallbackEXT");
+
+assert(vkCreateDebugReportCallbackEXT);
+assert(vkDestroyDebugReportCallbackEXT);
+
+// Create the debug callback with desired settings
+VkDebugReportCallbackEXT debugReportCallback;
+if (vkCreateDebugReportCallbackEXT) {
+    VkDebugReportCallbackCreateInfoEXT debugReportCallbackCreateInfo;
+    debugReportCallbackCreateInfo.sType =
+        VK_STRUCTURE_TYPE_DEBUG_REPORT_CREATE_INFO_EXT;
+    debugReportCallbackCreateInfo.pNext = NULL;
+    debugReportCallbackCreateInfo.flags = VK_DEBUG_REPORT_ERROR_BIT_EXT |
+                                          VK_DEBUG_REPORT_WARNING_BIT_EXT |
+                                          VK_DEBUG_REPORT_PERFORMANCE_WARNING_BIT_EXT;
+    debugReportCallbackCreateInfo.pfnCallback = DebugReportCallback;
+    debugReportCallbackCreateInfo.pUserData = NULL;
+
+    vkCreateDebugReportCallbackEXT(instance, &debugReportCallbackCreateInfo,
+                                   nullptr, &debugReportCallback);
+}
+
+// Later, when shutting down Vulkan, call the following
+if (vkDestroyDebugReportCallbackEXT) {
+   vkDestroyDebugReportCallbackEXT(instance, debugReportCallback, nullptr);
+}
+
+</pre>
+
+Once your app has registered and enabled the debug callback, the system routes debugging
+messages to a callback that you register. An example of such a callback appears below:
+</p>
+
+
+<pre>
+#include &lt;android/log.h&gt;
+
+static VKAPI_ATTR VkBool32 VKAPI_CALL DebugReportCallback(
+                                   VkDebugReportFlagsEXT msgFlags,
+                                   VkDebugReportObjectTypeEXT objType,
+                                   uint64_t srcObject, size_t location,
+                                   int32_t msgCode, const char * pLayerPrefix,
+                                   const char * pMsg, void * pUserData )
+{
+   if (msgFlags & VK_DEBUG_REPORT_ERROR_BIT_EXT) {
+       __android_log_print(ANDROID_LOG_ERROR,
+                           "AppName",
+                           "ERROR: [%s] Code %i : %s",
+                           pLayerPrefix, msgCode, pMsg);
+   } else if (msgFlags & VK_DEBUG_REPORT_WARNING_BIT_EXT) {
+       __android_log_print(ANDROID_LOG_WARN,
+                           "AppName",
+                           "WARNING: [%s] Code %i : %s",
+                           pLayerPrefix, msgCode, pMsg);
+   } else if (msgFlags & VK_DEBUG_REPORT_PERFORMANCE_WARNING_BIT_EXT) {
+       __android_log_print(ANDROID_LOG_WARN,
+                           "AppName",
+                           "PERFORMANCE WARNING: [%s] Code %i : %s",
+                           pLayerPrefix, msgCode, pMsg);
+   } else if (msgFlags & VK_DEBUG_REPORT_INFORMATION_BIT_EXT) {
+       __android_log_print(ANDROID_LOG_INFO,
+                           "AppName", "INFO: [%s] Code %i : %s",
+                           pLayerPrefix, msgCode, pMsg);
+   } else if (msgFlags & VK_DEBUG_REPORT_DEBUG_BIT_EXT) {
+       __android_log_print(ANDROID_LOG_VERBOSE,
+                           "AppName", "DEBUG: [%s] Code %i : %s",
+                           pLayerPrefix, msgCode, pMsg);
+   }
+
+   // Returning false tells the layer not to stop when the event occurs, so
+   // they see the same behavior with and without validation layers enabled.
+   return VK_FALSE;
+}
+</pre>
+
+
+
diff --git a/docs/html/ndk/guides/guides_toc.cs b/docs/html/ndk/guides/guides_toc.cs
index 2f31b4b..98fc54d 100644
--- a/docs/html/ndk/guides/guides_toc.cs
+++ b/docs/html/ndk/guides/guides_toc.cs
@@ -74,9 +74,20 @@
    </li>
 
       <li class="nav-section">
-      <div class="nav-section-header empty">
+      <div class="nav-section-header">
       <a href="<?cs var:toroot ?>ndk/guides/graphics/index.html">
-      <span class="en">Graphics</span></a></div>
+      <span class="en">Vulkan</span></a></div>
+      <ul>
+      <li><a href="<?cs var:toroot ?>ndk/guides/graphics/getting-started.html">
+      Getting Started</a></li>
+      <li><a href="<?cs var:toroot ?>ndk/guides/graphics/design-notes.html">
+      Design Guidelines</a></li>
+      <li><a href="<?cs var:toroot ?>ndk/guides/graphics/shader-compilers.html">
+      Shader Compilers</a></li>
+      <li><a href="<?cs var:toroot ?>ndk/guides/graphics/validation-layer.html">
+      Validation Layers</a></li>
+      </ul>
+      </ul>
    </li>
 
 
diff --git a/docs/html/ndk/guides/images/config-pulldown.png b/docs/html/ndk/guides/images/config-pulldown.png
new file mode 100644
index 0000000..5af0870
--- /dev/null
+++ b/docs/html/ndk/guides/images/config-pulldown.png
Binary files differ
diff --git a/docs/html/ndk/guides/images/drawcube-output.png b/docs/html/ndk/guides/images/drawcube-output.png
new file mode 100644
index 0000000..3b7f775
--- /dev/null
+++ b/docs/html/ndk/guides/images/drawcube-output.png
Binary files differ
diff --git a/docs/html/ndk/guides/images/project-pane.png b/docs/html/ndk/guides/images/project-pane.png
new file mode 100644
index 0000000..f6d624b
--- /dev/null
+++ b/docs/html/ndk/guides/images/project-pane.png
Binary files differ
diff --git a/docs/html/ndk/samples/index.jd b/docs/html/ndk/samples/index.jd
index 721ea18..d2e6dc3 100644
--- a/docs/html/ndk/samples/index.jd
+++ b/docs/html/ndk/samples/index.jd
@@ -23,3 +23,11 @@
       <p><a href="https://github.com/googlesamples/android-ndk/tree/android-mk" class="button">
       Browse NDK samples</a></p>
  </div>
+
+<p>Vulkan samples are located separately from those for the rest of the NDK. To explore them,
+access the link below.</p>
+
+ <div id="Vulkan-terms-form">
+      <p><a href="https://github.com/LunarG/VulkanSamples" class="button">
+      Browse Vulkan samples</a></p>
+ </div>
\ No newline at end of file
diff --git a/docs/html/preview/_book.yaml b/docs/html/preview/_book.yaml
index e4f1aba..cac6d13 100644
--- a/docs/html/preview/_book.yaml
+++ b/docs/html/preview/_book.yaml
@@ -1,94 +1,342 @@
 toc:
 - title: Program Overview
   path: /preview/overview.html
-  custom_link_attributes:
-  - es-lang="Información general del programa"
-  - ja-lang="プログラム概要"
-  - ko-lang="프로그램 개요"
-  - pt-br-lang="Visão geral do programa"
-  - ru-lang="Обзор программы"
-  - zh-cn-lang="计划概览"
-  - zh-tw-lang="程式總覽"
+  path_attributes:
+  - name: es-lang
+    value: Información general del programa
+  - name: in-lang
+    value: Ikhtisar Program
+  - name: ja-lang
+    value: プログラム概要
+  - name: ko-lang
+    value: 프로그램 개요
+  - name: pt-br-lang
+    value: Visão geral do programa
+  - name: ru-lang
+    value: Обзор программы
+  - name: vi-lang
+    value: Tổng quan về Chương trình
+  - name: zh-cn-lang
+    value: 计划概览
+  - name: zh-tw-lang
+    value: 程式總覽
 
 - title: Support and Release Notes
   path: /preview/support.html
 
 - title: Set Up to Develop
   path: /preview/setup-sdk.html
-  custom_link_attributes:
-  - es-lang="Configurar el SDK de la versión preliminar"
-  - ja-lang="Preview SDK のセットアップ"
-  - ko-lang="미리 보기 SDK 설정하기"
-  - pt-br-lang="Configuração do Preview SDK"
-  - ru-lang="Настройка пакета SDK Preview"
-  - zh-cn-lang="设置预览版 SDK"
-  - zh-tw-lang="設定預覽版 SDK"
+  path_attributes:
+  - name: es-lang
+    value: Configurar el SDK de la versión preliminar
+  - name: in-lang
+    value: Menyiapkan Preview
+  - name: ja-lang
+    value: Preview SDK のセットアップ
+  - name: ko-lang
+    value: 미리 보기 SDK 설정하기
+  - name: pt-br-lang
+    value: Configuração do Preview SDK
+  - name: ru-lang
+    value: Настройка пакета SDK Preview
+  - name: vi-lang
+    value: Kiểm thử trên Thiết bị
+  - name: zh-cn-lang
+    value: 设置预览版 SDK
+  - name: zh-tw-lang
+    value: 設定預覽版 SDK
 
 - title: Test on a Device
   path: /preview/download.html
+  path_attributes:
+  - name: es-lang
+    value: Pruebe en un dispositivo
+  - name: in-lang
+    value: Menguji pada Perangkat
+  - name: ja-lang
+    value: デバイス上でテストする
+  - name: ko-lang
+    value: 기기에서 테스트
+  - name: pt-br-lang
+    value: Testar em um dispositivo
+  - name: ru-lang
+    value: Тестирование на устройстве
+  - name: vi-lang
+    value: Kiểm thử trên Thiết bị
+  - name: zh-cn-lang
+    value: 在设备上测试
+  - name: zh-tw-lang
+    value: 在裝置上測試
 
 - title: Behavior Changes
   path: /preview/behavior-changes.html
-  custom_link_attributes:
-  - es-lang="Cambios en los comportamientos"
-  - ja-lang="動作の変更点"
-  - ko-lang="동작 변경"
-  - pt-br-lang="Mudanças de comportamento"
-  - ru-lang="Изменения в работе"
-  - zh-cn-lang="行为变更"
-  - zh-tw-lang="行為變更"
+  path_attributes:
+  - name: es-lang
+    value: Cambios en los comportamientos
+  - name: in-lang
+    value: Perubahan Perilaku
+  - name: ja-lang
+    value: 動作の変更点
+  - name: ko-lang
+    value: 동작 변경
+  - name: pt-br-lang
+    value: Mudanças de comportamento
+  - name: ru-lang
+    value: Изменения в работе
+  - name: vi-lang
+    value: Các thay đổi Hành vi
+  - name: zh-cn-lang
+    value: 行为变更
+  - name: zh-tw-lang
+    value: 行為變更
   section:
   - title: Background Optimizations
     path: /preview/features/background-optimization.html
+    path_attributes:
+    - name: es-lang
+      value: Optimizaciones en segundo plano
+    - name: in-lang
+      value: Optimisasi Latar Belakang
+    - name: ja-lang
+      value: バックグラウンド処理の最適化
+    - name: ko-lang
+      value: 백그라운드 최적화
+    - name: pt-br-lang
+      value: Otimizações em segundo plano
+    - name: ru-lang
+      value: Оптимизация фоновых процессов
+    - name: vi-lang
+      value: Tối ưu hóa Chạy ngầm
+    - name: zh-cn-lang
+      value: 后台优化
+    - name: zh-tw-lang
+      value: 背景最佳化
   - title: Language and Locale
     path: /preview/features/multilingual-support.html
+    path_attributes:
+    - name: es-lang
+      value: Idioma y configuración regional
+    - name: in-lang
+      value: Bahasa dan Lokal
+    - name: ja-lang
+      value: 言語とロケール
+    - name: ko-lang
+      value: 언어 및 로케일
+    - name: pt-br-lang
+      value: Idioma e localidade
+    - name: ru-lang
+      value: Язык и языковой стандарт
+    - name: vi-lang
+      value: Ngôn ngữ và Bản địa
+    - name: zh-cn-lang
+      value: 语言和区域设置
+    - name: zh-tw-lang
+      value: 語言和地區設定
 
 - title: Android N for Developers
   path: /preview/api-overview.html
-  custom_link_attributes:
-  - es-lang="Información general de la API"
-  - ja-lang="API の概要"
-  - ko-lang="API 개요"
-  - pt-br-lang="Visão geral da API"
-  - ru-lang="Обзор API-интерфейсов"
-  - zh-cn-lang="API 概览"
-  - zh-tw-lang="API 總覽"
+  path_attributes:
+  - name: es-lang
+    value: Información general de la API
+  - name: in-lang
+    value: Android N untuk Pengembang
+  - name: ja-lang
+    value: API の概要
+  - name: ko-lang
+    value: API 개요
+  - name: pt-br-lang
+    value: Visão geral da API
+  - name: ru-lang
+    value: Обзор API-интерфейсов
+  - name: vi-lang
+    value: Android N cho Nhà phát triển
+  - name: zh-cn-lang
+    value: API 概览
+  - name: zh-tw-lang
+    value: API 總覽
   section:
   - title: Multi-Window Support
     path: /preview/features/multi-window.html
+    path_attributes:
+    - name: es-lang
+      value: Compatibilidad con ventanas múltiples
+    - name: in-lang
+      value: Dukungan Multi-Jendela
+    - name: ja-lang
+      value: マルチ ウィンドウのサポート
+    - name: ko-lang
+      value: 다중 창 지원
+    - name: pt-br-lang
+      value: Suporte a várias janelas
+    - name: ru-lang
+      value: Поддержка многооконного режима
+    - name: vi-lang
+      value: Hỗ trợ đa cửa sổ
+    - name: zh-cn-lang
+      value: 多窗口支持
+    - name: zh-tw-lang
+      value: 多視窗支援
   - title: Notifications
     path: /preview/features/notification-updates.html
+    path_attributes:
+    - name: es-lang
+      value: Notificaciones
+    - name: in-lang
+      value: Pemberitahuan
+    - name: ja-lang
+      value: 通知
+    - name: ko-lang
+      value: 알림
+    - name: pt-br-lang
+      value: Notificações
+    - name: ru-lang
+      value: Уведомления
+    - name: vi-lang
+      value: Thông báo
+    - name: zh-cn-lang
+      value: 通知
+    - name: zh-tw-lang
+      value: 通知
   - title: Data Saver
     path: /preview/features/data-saver.html
   - title: TV Recording
     path: /preview/features/tv-recording-api.html
+    path_attributes:
+    - name: es-lang
+      value: Grabación de TV
+    - name: in-lang
+      value: Perekaman TV
+    - name: ja-lang
+      value: TV の録画
+    - name: ko-lang
+      value: TV 녹화
+    - name: pt-br-lang
+      value: Gravação para TV
+    - name: ru-lang
+      value: Запись ТВ
+    - name: vi-lang
+      value: Ghi lại TV
+    - name: zh-cn-lang
+      value: TV 录制
+    - name: zh-tw-lang
+      value: 電視錄製
   - title: Network Security Configuration
     path: /preview/features/security-config.html
+    path_attributes:
+    - name: es-lang
+      value: Configuración de seguridad de la red
+    - name: ja-lang
+      value: ネットワーク セキュリティ構成
+    - name: ko-lang
+      value: 네트워크 보안 구성
+    - name: pt-br-lang
+      value: Configurações de segurança de rede
+    - name: ru-lang
+      value: Конфигурация сетевой безопасности
+    - name: vi-lang
+      value: Cấu hình Bảo mật mạng
+    - name: zh-cn-lang
+      value: 网络安全配置
+    - name: zh-tw-lang
+      value: 網路安全性設定
   - title: ICU4J Support
     path: /preview/features/icu4j-framework.html
+    path_attributes:
+    - name: es-lang
+      value: API de ICU4J del framework de Android
+    - name: in-lang
+      value: ICU4J Android Framework API
+    - name: ja-lang
+      value: ICU4J Android フレームワーク API
+    - name: ko-lang
+      value: ICU4J Android 프레임워크 API
+    - name: pt-br-lang
+      value: APIs de estrutura do Android para ICU4J
+    - name: ru-lang
+      value: API-интерфейсы ICU4J в платформе Android
+    - name: vi-lang
+      value: API Khuôn khổ Android ICU4J
+    - name: zh-cn-lang
+      value: ICU4J Android 框架 API
+    - name: zh-tw-lang
+      value: ICU4J Android 架構 API
   - title: Java 8 Language Features
     path: /preview/j8-jack.html
+    path_attributes:
+    - name: es-lang
+      value: Funciones del lenguaje Java 8
+    - name: in-lang
+      value: Fitur Bahasa Java 8
+    - name: ja-lang
+      value: Java 8 の機能
+    - name: ko-lang
+      value: Java 8 언어 기능
+    - name: pt-br-lang
+      value: Recursos de linguagem do Java 8
+    - name: ru-lang
+      value: Возможности языка Java 8
+    - name: vi-lang
+      value: Tính năng của Ngôn ngữ Java 8
+    - name: zh-cn-lang
+      value: Java 8 语言功能
+    - name: zh-tw-lang
+      value: Java 8 語言功能
   - title: Android for Work Updates
     path: /preview/features/afw.html
+  - title: Scoped Directory Access
+    path: /preview/features/scoped-folder-access.html
+    path_attributes:
+    - name: es-lang
+      value: Acceso a directorios determinados
+    - name: ja-lang
+      value: 特定のディレクトリへのアクセス
+    - name: ko-lang
+      value: 범위가 지정된 디렉터리 액세스
+    - name: pt-br-lang
+      value: Acesso a diretórios com escopo
+    - name: ru-lang
+      value: Доступ к выделенным каталогам
+    - name: vi-lang
+      value: Truy cập Thư mục theo Phạm vi
+    - name: zh-cn-lang
+      value: 作用域目录访问
+    - name: zh-tw-lang
+      value: 限定範圍目錄存取
 
 - title: Samples
   path: /preview/samples.html
-  custom_link_attributes:
-  - es-lang="Ejemplos"
-  - ja-lang="サンプル"
-  - ko-lang="샘플"
-  - pt-br-lang="Exemplos"
-  - ru-lang="Примеры"
-  - zh-cn-lang="示例"
-  - zh-tw-lang="範例"
+  path_attributes:
+  - name: es-lang
+    value: Ejemplos
+  - name: in-lang
+    value: Contoh
+  - name: ja-lang
+    value: サンプル
+  - name: ko-lang
+    value: 샘플
+  - name: pt-br-lang
+    value: Exemplos
+  - name: ru-lang
+    value: Примеры
+  - name: zh-cn-lang
+    value: 示例
+  - name: zh-tw-lang
+    value: 範例
 
 - title: License Agreement
   path: /preview/license.html
-  custom_link_attributes:
-  - es-lang="Contrato de licencia"
-  - ja-lang="使用許諾契約"
-  - ko-lang="라이선스 계약"
-  - pt-br-lang="Contrato de licença"
-  - ru-lang="Лицензионное соглашение"
-  - zh-cn-lang="许可协议"
-  - zh-tw-lang="授權協議"
+  path_attributes:
+  - name: es-lang
+    value: Contrato de licencia
+  - name: ja-lang
+    value: 使用許諾契約
+  - name: ko-lang
+    value: 라이선스 계약
+  - name: pt-br-lang
+    value: Contrato de licença
+  - name: ru-lang
+    value: Лицензионное соглашение
+  - name: zh-cn-lang
+    value: 许可协议
+  - name: zh-tw-lang
+    value: 授權協議
diff --git a/docs/html/preview/api-overview.jd b/docs/html/preview/api-overview.jd
index 478f068..55b4eb5 100644
--- a/docs/html/preview/api-overview.jd
+++ b/docs/html/preview/api-overview.jd
@@ -19,6 +19,7 @@
         <li><a href="#doze_on_the_go">Doze on the go</a></li>
         <li><a href="#background_optimizations">Background optimizations</a></li>
         <li><a href="#data_saver">Data Saver</a></li>
+        <li><a href="#vulkan">Vulkan API</a></li>
         <li><a href="#tile_api">Quick Settings Tile API</a></li>
         <li><a href="#number-blocking">Number-blocking</a></li>
         <li><a href="#call_screening">Call screening</a></li>
@@ -32,8 +33,10 @@
         <li><a href="#key_attestation">Key Attestation</a></li>
         <li><a href="#network_security_config">Network Security Config</a></li>
         <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="#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>
+        <li><a href="#print_svc">Print service enhancements</a></li>
       </ol>
 </div>
 </div>
@@ -305,6 +308,53 @@
 Saver and make an effort to limit foreground and background data usage.</p>
 
 
+<h2 id="vulkan">Vulkan API</h2>
+
+<p>
+  Android N integrates <a href="http://www.khronos.org/vulkan" class=
+  "external-link">Vulkan™</a>, a new 3D rendering API, into the platform. Like
+  <a href="https://www.khronos.org/opengles/" class="external-link">OpenGL™
+  ES</a>, Vulkan is an open standard for 3D graphics and rendering maintained
+  by the Khronos Group.
+</p>
+
+<p>
+  Vulkan is designed from the ground up to minimize CPU overhead in the driver,
+  and allow your application to control GPU operation more directly. Vulkan
+  also enables better parallelization by allowing multiple threads to perform
+  work such as command buffer construction at once.
+</p>
+
+<p>
+  Vulkan development tools and libraries are rolled into the Android NDK. They
+  include:
+</p>
+
+<ul>
+  <li>Headers
+  </li>
+
+  <li>Validation layers (debug libraries)
+  </li>
+
+  <li>SPIR-V shader compiler
+  </li>
+
+  <li>SPIR-V runtime shader compilation library
+  </li>
+</ul>
+
+<p>
+  Vulkan is only available to apps on devices with Vulkan-capable hardware,
+  such as Nexus 5X and Nexus 6P. We're working closely with our
+  partners to bring Vulkan to more devices as soon as possible.
+</p>
+
+<p>
+  For more information, see the the <a href=
+  "{@docRoot}ndk/guides/graphics/index.html">API documentation</a>.
+</p>
+
 <h2 id="tile_api">Quick Settings Tile API</h2>
 
 
@@ -482,7 +532,8 @@
 <h3 id="work_profile_security_challenge">Work profile security challenge </h3>
 
 <p>
-  Profile owners can specify a separate security challenge for apps running in
+  Profile owners targeting the N SDK
+  can specify a separate security challenge for apps running in
   the work profile. The work challenge is shown when a user attempts to open
   any work apps. Successful completion of the security challenge unlocks the
   work profile and decrypts it if necessary. For profile owners,
@@ -492,7 +543,7 @@
 </p>
 
 <p>
-  Profile owners can set distinct password policies for the work challenge
+  Profile owners can set distinct passcode policies for the work challenge
   (such as how long the PIN needs to be, or whether a fingerprint can be used
   to unlock the profile) using the <code>setPasswordQuality()</code>,
   <code>setPasswordMinimumLength()</code> and related methods. The profile
@@ -534,6 +585,16 @@
   <strong>Settings&gt;More&gt;Vpn</strong>.
 </p>
 
+<h3 id="custom_provisioning">Customized provisioning</h3>
+
+<p>
+  An application can customize the profile owner and device owner provisioning
+  flows with corporate colors and logos.
+  <code>DevicePolicyManager.EXTRA_PROVISIONING_MAIN_COLOR</code> customizes
+  flow color. <code>DevicePolicyManager.EXTRA_PROVISIONING_LOGO_URI</code>
+  customizes the flow with a corporate logo.
+</p>
+
 <h2 id="accessibility_enhancements">Accessibility enhancements</h2>
 
 <p>Android N now offers Vision Settings directly on the Welcome screen for new
@@ -696,8 +757,99 @@
 <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>
+
+<h2 id="print_svc">Print Service Enhancements</h2>
+
+<p>
+  In Android N, print service developers can now surface additional information
+  about individual printers and print jobs.
+</p>
+
+<p>
+  When listing individual printers, a print service can now set per-printer
+  icons in two ways:
+</p>
+
+<ul>
+  <li>You can set an icon from a resource ID by calling
+  <code>PrinterInfo.Builder.setResourceIconId()</code>
+  </li>
+
+  <li>You can show an icon from the network by calling
+  <code>PrinterInfo.Builder.setHasCustomPrinterIcon()</code>, and setting a
+  callback for when the icon is requested using
+  <code>android.printservice.PrinterDiscoverySession.onRequestCustomPrinterIcon()</code>
+  </li>
+</ul>
+
+<p>
+  In addition, you can provide a per-printer activity to display additional
+  information by calling <code>PrinterInfo.Builder.setInfoIntent()</code>.
+</p>
+
+<p>
+  You can indicate the progress and status of print jobs in the print job
+  notification by calling
+  <code>android.printservice.PrintJob.setProgress()</code> and
+  <code>android.printservice.PrintJob.setStatus()</code>, respectively.
+</p>
+
+<p>
+  For more information about these methods, see the downloadable <a href=
+  "{@docRoot}preview/setup-sdk.html#docs-dl">API Reference</a>.
+</p>
diff --git a/docs/html/preview/behavior-changes.jd b/docs/html/preview/behavior-changes.jd
index 245fa88..7c8bfe8 100644
--- a/docs/html/preview/behavior-changes.jd
+++ b/docs/html/preview/behavior-changes.jd
@@ -31,6 +31,8 @@
   </li>
   <li><a href="#ndk">NDK Apps Linking to Platform Libraries</a></li>
   <li><a href="#afw">Android for Work</a></li>
+  <li><a href="#annotations">Annotations Retention</a></li>
+  <li><a href="#other">Other Important Points</a></li>
 </ol>
 
 <h2>See Also</h2>
@@ -154,10 +156,9 @@
 <ul>
   <li>Apps targeting Android N do not receive {@link
   android.net.ConnectivityManager#CONNECTIVITY_ACTION} broadcasts, even if they
-  have manifest entries to request notification of these events. Apps running
-  in the foreground can still listen for {@code CONNECTIVITY_CHANGE} on their
-  main thread if they request notification with a {@link
-  android.content.BroadcastReceiver}.
+  have manifest entries to request notification of these events. Apps that are
+  running can still listen for {@code CONNECTIVITY_CHANGE} on their main thread
+  if they request notification with a {@link android.content.BroadcastReceiver}.
   </li>
 
   <li>Apps cannot send or receive {@link
@@ -184,7 +185,6 @@
   Optimizations</a>.
 </p>
 
-
 <h2 id="perm">Permissions Changes</h2>
 
 <p>
@@ -215,11 +215,17 @@
 
 <ul>
   <li>
-    Private files’ file permissions can no longer be relaxed by the owner, and
-    an attempt to do so using
+    Private files’ file permissions should no longer be relaxed by the owner,
+    and an attempt to do so using
     {@link android.content.Context#MODE_WORLD_READABLE} and/or
     {@link android.content.Context#MODE_WORLD_WRITEABLE}, will trigger a
     {@link java.lang.SecurityException}.
+    <p class="note">
+      <strong>Note:</strong> As of yet, this restriction is not fully enforced.
+      Apps may still modify permissions to their private directory using
+      native APIs or the {@link java.io.File File} API. However, we strongly
+      discourage relaxing the permissions to the private directory.
+    </p>
   </li>
   <li>
     Passing <code>file://</code> URIs outside the package domain may leave the
@@ -467,7 +473,7 @@
 
   <li>Reset password restrictions for device admins now apply to profile
   owners. Device admins can no longer use
-  <code>DevicePolicyManager.resetPassword()</code> to clear passwords or change
+  {@code DevicePolicyManager.resetPassword()} to clear passwords or change
   ones that are already set. Device admins can still set a password, but only
   when the device has no password, PIN, or pattern.
   </li>
@@ -497,7 +503,26 @@
   <a href="{@docRoot}preview/features/afw.html">Android for Work Updates</a>.
 </p>
 
-<h2 id="other">Other important points</h2>
+<h2 id="annotations">Annotations Retention</h2>
+
+<p>
+Android N fixes a bug where the visibility of annotations was being ignored.
+This issue enabled the runtime to access annotations that it should not have been
+able to. These annotations included:
+</p>
+
+<ul>
+   <li>{@code VISIBILITY_BUILD}: Intended to be visible only at build time.</li>
+   <li>{@code VISIBILITY_SYSTEM}: Intended to be visible at runtime, but only to the
+   underlying system.</li>
+</ul>
+
+<p>
+If your app has relied on this behavior, please add a retention policy to annotations that must
+be available at runtime. You do so by using {@code @Retention(RetentionPolicy.RUNTIME)}.
+</p>
+
+<h2 id="other">Other Important Points</h2>
 
 <ul>
 <li>When an app is running on Android N, but targets a lower API level,
@@ -525,5 +550,31 @@
 <strong>Display</strong> > <strong>Font size</strong>), and then restoring
 the app from Recents.
 </li>
+
+<li>
+Due to a bug in previous versions of Android, the system did not flag writing
+to a TCP socket on the main thread as a strict-mode violation. Android N fixes this bug.
+Apps that exhibit this behavior now throw an {@code android.os.NetworkOnMainThreadException}.
+Generally, performing network operations on the main thread is a bad idea because these operations
+usually have a high tail latency that causes ANRs and jank.
+</li>
+
+<li>
+The {@code Debug.startMethodTracing()} family of methods now defaults to
+storing output in your package-specific directory on shared storage,
+instead of at the top level
+of the SD card.  This means apps no longer need to request the {@code WRITE_EXTERNAL_STORAGE} permission to use these APIs.
+</li>
+
+<li>
+Many platform APIs have now started checking for large payloads being sent
+across {@link android.os.Binder} transactions, and the
+system now rethrows {@code TransactionTooLargeExceptions}
+as {@code RuntimeExceptions}, instead of silently logging or suppressing them.  One
+common example is storing too much data in
+{@link android.app.Activity#onSaveInstanceState Activity.onSaveInstanceState()},
+which causes {@code ActivityThread.StopInfo} to throw a
+{@code RuntimeException} when your app targets Android N.
+</li>
 </ul>
 
diff --git a/docs/html/preview/download-ota.jd b/docs/html/preview/download-ota.jd
index d52a9771..7e70f57 100644
--- a/docs/html/preview/download-ota.jd
+++ b/docs/html/preview/download-ota.jd
@@ -203,63 +203,72 @@
   <tr id="bullhead">
     <td>Nexus 5X <br>"bullhead"</td>
     <td><a href="#top" onclick="onDownload(this)"
-      >bullhead-ota-2659757-4fab1a6f.zip</a><br>
-      MD5: 2a3263bb4935cdc7a326298f2cf13535<br>
-      SHA-1: 4fab1a6f1a68d94c02500d7acb15503192455f20
+      >bullhead-ota-npc91k-dfcbfda0.zip</a><br>
+      MD5: af537dc0c06e85f32a929c10aaf12e0a<br>
+      SHA-1: 12a32b09223eb8f98bc0f0f05d951789d5fbe12e
     </td>
   </tr>
 
   <tr id="shamu">
     <td>Nexus 6 <br>"shamu"</td>
     <td><a href="#top" onclick="onDownload(this)"
-      >shamu-ota-2659757-073c33ae.zip</a><br>
-      MD5: c201a9ccdfa5afdd2f1a9967e462098f<br>
-      SHA-1: 073c33aef3ecc5961e0ba92c5611b98f7750fa94
+      >shamu-ota-npc91k-201dd8d1.zip</a><br>
+      MD5: 016d60b4734151ca70d977c04d737487<br>
+      SHA-1: 09ca7c0712366c53e61abb7a6142ce703e2ac62c
     </td>
   </tr>
 
   <tr id="angler">
     <td>Nexus 6P <br>"angler"</td>
     <td><a href="#top" onclick="onDownload(this)"
-      >angler-ota-2659757-938ecff3.zip</a><br>
-      MD5: 3363c343fafe03b118776738a37623a8<br>
-      SHA-1: 938ecff398f896c21c03615942727493aeae3556
+      >angler-ota-npc91k-7399f083.zip</a><br>
+      MD5: eacc5307ef4f00ba4b61ac9c1620def9<br>
+      SHA-1: 6a9f36cad4bd8fd63e7719c00e0b75bd991614ff
     </td>
   </tr>
 
   <tr id="volantis">
     <td>Nexus 9 <br>"volantis"</td>
     <td><a href="#top" onclick="onDownload(this)"
-      >volantis-ota-NPC56X-2-3fa71d1a.zip</a><br>
-      MD5: 7221f249ab2a48faf7ca4dc275d8f79c<br>
-      SHA-1: 3fa71d1af634db140267133e220038a63e3d1749
+      >volantis-ota-npc91k-42fc9c84.zip</a><br>
+      MD5: e1f3f5504aa3389ef4fbac7ac42a995f<br>
+      SHA-1: 1e49e2867479ad1a1c58f52584c62575bb9c2c3b
     </td>
   </tr>
 
   <tr id="volantisg">
     <td>Nexus 9G <br>"volantisg"</td>
     <td><a href="#top" onclick="onDownload(this)"
-      >volantisg-ota-NPC56X-2-2edd174f.zip</a><br>
-      MD5: aff8190e0522c386d6b2e66908671377<br>
-      SHA-1: 2edd174f9a4d10ba3ed75643aa16a3f635451631
+      >volantisg-ota-npc91k-4aa98b9f.zip</a><br>
+      MD5: ad2e60aa9b1a063f906eb8904388e5f8<br>
+      SHA-1: 4edfa8ab5d2d02ec46afffce62466aa715420558
     </td>
   </tr>
 
   <tr id="fugu">
     <td>Nexus Player <br>"fugu"</td>
     <td><a href="#top" onclick="onDownload(this)"
-      >fugu-ota-2665432-f0f8fea4.zip</a><br>
-      MD5: 4403af764b57502d89111fd68ecb7da5<br>
-      SHA-1: f0f8fea49ea3874b751cf67462ecc5d8e039875e
+      >fugu-ota-npc91o-b1d73dd5.zip</a><br>
+      MD5: d7fbccde75e0b6d860102320ea76d58f<br>
+      SHA-1: b1d73dd5a6498fb6c66e022bd0a6c8b6a6a2374b
     </td>
   </tr>
 
   <tr id="ryu">
     <td>Pixel C <br>"ryu"</td>
     <td><a href="#top" onclick="onDownload(this)"
-      >ryu-ota-2659757-1e496acd.zip</a><br>
-      MD5: 1ebd7fddb52cba59b7f686a972e023db<br>
-      SHA-1: 1e496acd67b8fdbee7b5c6ef721746f8e98e704f
+      >ryu-ota-npc91k-80971fa8.zip</a><br>
+      MD5: 9d66ca3c5673586bb5ade9fdda6fb924<br>
+      SHA-1: 329209b6f1ee08a29e4be32139672a30901a19b7
+    </td>
+  </tr>
+
+  <tr id="seed">
+    <td>General Mobile 4G (Android One) <br>"seed"</td>
+    <td><a href="#top" onclick="onDownload(this)"
+      >seed_l8150-ota-npc91k-8e8c8777.zip</a><br>
+      MD5: d21d417d7b5525633b5f7bcfa8b23245<br>
+      SHA-1: bfe42c7e291ca667d3f4d7c80825e5cf8830fc9a
     </td>
   </tr>
 
diff --git a/docs/html/preview/download.jd b/docs/html/preview/download.jd
index 59b1cf7..b0f5369 100644
--- a/docs/html/preview/download.jd
+++ b/docs/html/preview/download.jd
@@ -302,71 +302,72 @@
   <tr id="bullhead">
     <td>Nexus 5X <br>"bullhead"</td>
     <td><a href="#top" onclick="onDownload(this)"
-      >bullhead-npc56w-preview-d86c7559.tgz</a><br>
-      MD5: d84b6c31a7754e505149594887b3481a<br>
-      SHA-1: d86c7559c93724cca6af91040b012c48529f2c94
+      >bullhead-npc91k-factory-d09b15b5.tgz</a><br>
+      MD5: f5aa4b0b10213435569ed4833dd973f8<br>
+      SHA-1: d09b15b5f8978e2fee3fbd799554de90b7012d64
     </td>
   </tr>
 
   <tr id="shamu">
     <td>Nexus 6 <br>"shamu"</td>
     <td><a href="#top" onclick="onDownload(this)"
-      >shamu-npc56p-preview-54b13c67.tgz</a><br>
-      MD5: af183638cf34e0eb944a1957d7696f60<br>
-      SHA-1: 54b13c6703d369cc79a8fd8728fe4103c6343973
+      >shamu-npc91k-factory-7c9936dc.tgz</a><br>
+      MD5: 271b758d01f61cdef71a3e4c14e90e85<br>
+      SHA-1: 7c9936dca492dd9a5b279612962e3439031fcc06
     </td>
   </tr>
 
   <tr id="angler">
     <td>Nexus 6P <br>"angler"</td>
     <td><a href="#top" onclick="onDownload(this)"
-      >angler-npc56w-preview-2834ca3c.tgz</a><br>
-      MD5: fd5c74f256cf82262779513854869570<br>
-      SHA-1: 2834ca3c425d7a61f5dfabb9d8dd108aec1ab58b
+      >angler-npc91k-factory-dcd13c44.tgz</a><br>
+      MD5: 3f304dc1d5044768af26c8503d3fbf18<br>
+      SHA-1: dcd13c44e7254916fcf7cb7fa31e0dc03737a3f5
     </td>
   </tr>
 
   <tr id="volantis">
     <td>Nexus 9 <br>"volantis"</td>
     <td><a href="#top" onclick="onDownload(this)"
-      >volantis-npc56x-preview-5c323abd.tgz</a><br>
-      MD5: 474a13915e22d683cab5cf59ed868157<br>
-      SHA-1: 5c323abdec121b2f07fdabaa3d70d12106e450ad
+      >volantis-npc91k-factory-ed835af7.tgz</a><br>
+      MD5: 466a9873111a320e5a19891de61e5609<br>
+      SHA-1: ed835af7bebf26d4c12b5c30c8b1a337c06c9623
     </td>
   </tr>
 
   <tr id="volantisg">
     <td>Nexus 9G <br>"volantisg"</td>
     <td><a href="#top" onclick="onDownload(this)"
-      >volantisg-npc56x-preview-41ae398c.tgz</a><br>
-      MD5: 5a145a546a4a9f68c2b8e2624cf9832b<br>
-      SHA-1: 41ae398c30536a2d96b04d61b9ef97a043bf59cf
+      >volantisg-npc91k-factory-6f20b9f6.tgz</a><br>
+      MD5: 419f76cdf886b18d2e7281915b9c77b0<br>
+      SHA-1: 6f20b9f6b0d77dc17793db32cd2da5a0b0aa63c9
     </td>
   </tr>
 
   <tr id="fugu">
     <td>Nexus Player <br>"fugu"</td>
     <td><a href="#top" onclick="onDownload(this)"
-      >fugu-npc56r-preview-7027d5b6.tgz</a><br>
-      MD5: f5d3d8f75836ccfe4c70e8162e498be4<br>
-      SHA-1: 7027d5b662bceda4c80a91a0a14ef0e5a7ba795b
+      >fugu-npc91o-factory-3b8e3f56.tgz</a><br>
+      MD5: b88b70ecbfb80c983c90b97cb243628b<br>
+      SHA-1: 3b8e3f56a4c35b559783c2928e740df2aab8b377
     </td>
   </tr>
 
   <tr id="ryu">
     <td>Pixel C <br>"ryu"</td>
     <td><a href="#top" onclick="onDownload(this)"
-      >ryu-npc56p-preview-335a86a4.tgz</a><br>
-      MD5: 4e21fb183bbbf467bee91598d587fd2e<br>
-      SHA-1: 335a86a435ee51f18464de343ad2e071c38f0e92
+      >ryu-npc91k-factory-463030f2.tgz</a><br>
+      MD5: 24e8981a3c95637867eb768c0f84c96c<br>
+      SHA-1: 463030f2ecdcfe9e92ddf9f3a224ac7aa5ed5866
     </td>
   </tr>
+
   <tr id="seed">
     <td>General Mobile 4G (Android One) <br>"seed"</td>
     <td><a href="#top" onclick="onDownload(this)"
-      >seed_l8150-npc56p-preview-82472ebc.tgz</a><br>
-      MD5: 983e083bc7cd0c4a2d39d6ebaa20202a<br>
-      SHA-1: 82472ebc9a6054a103f53cb400a1351913c95127
+      >seed_l8150-npc91k-factory-7026d89d.tgz</a><br>
+      MD5: a614984799c887d9b5af2d366fefc8e3<br>
+      SHA-1: 7026d89d79decd8421da8df844a1fcd9e27df163
     </td>
   </tr>
 
@@ -466,18 +467,12 @@
 <p>You can now launch the Android Emulator with the Android N Preview AVD.</p>
 
 <p>
-For the best experience in the Android Emulator, install
-Android Studio 2.1 Preview, which supports the <a
-href="http://tools.android.com/tech-docs/emulator">Android Emulator 2.0 Beta</a>
-with much faster performance compared to the Emulator in
+For the best experience in the Android Emulator, make sure you're using
+Android Studio 2.1 or higher, which supports <a
+href="http://tools.android.com/tech-docs/emulator">Android Emulator 2.0</a>
+with much faster performance compared to the emulator in
 Android Studio 1.5.</p>
 
-<p class="note"><strong>Note:</strong>
-  If you're currently using Android Studio 2.0 Beta, there's a known issue
-  that prevents you from creating AVDs with the N Preview system images, so
-  you currently need to use the Android Studio 2.1 preview to create AVDs.
-</p>
-
 <p>For more information about creating virtual devices, see <a href=
   "{@docRoot}tools/devices/index.html">Managing Virtual Devices</a>.
 </p>
diff --git a/docs/html/preview/features/afw.jd b/docs/html/preview/features/afw.jd
index 24f67ef..dc53bd9 100644
--- a/docs/html/preview/features/afw.jd
+++ b/docs/html/preview/features/afw.jd
@@ -142,13 +142,15 @@
 
 <p>
   Device owners and profile owners can temporarily suspend access to packages
-  by calling the new <code>DevicePolicyManager.getPackagesSuspended()</code>
-  method.Owners can use the same method to re-enable those packages.
+  by calling the new <code>DevicePolicyManager.setPackagesSuspended()</code>
+  method. Owners can use the same method to re-enable those packages.
 </p>
 
 <p>
-  While a package is suspended, it cannot start activities, and notifications
-  to the package are suppressed. Suspended packages do not show in the <a href=
+  While a package is suspended, it cannot start activities, notifications to
+  the package are suppressed, and the app's entry in the <a
+  href="{@docRoot}guide/components/recents.html">overview screen</a> is hidden.
+  Suspended packages do not show in the <a href=
   "{@docRoot}guide/components/recents.html">overview screen</a>, and they
   cannot show dialogs (including toasts and snackbars). They also cannot play
   audio or vibrate the device.
@@ -157,19 +159,22 @@
 <p>
   Launchers should apply a distinctive UI to suspended apps to show that the
   apps aren't currently available; for example, they might render the app icon
-  in gray. Launchers can find out which apps are suspended by calling the new
-  <code>DevicePolicyManager.getPackagesSuspended()</code> method.
+  in gray. Launchers can find out if an app is suspended by calling the new
+  <code>DevicePolicyManager.getPackageSuspended()</code> method.
 </p>
 
 <h2 id="toggle-work">Toggle Work Mode</h2>
 
-<p>On dual-profile devices, users can toggle work mode on and off. While work
-  mode is turned off, the managed profile is temporarily shut down. Work profile apps, background sync, and notifications are all disabled, including the profile
-  owner app. While the work profile is disabled, the system  displays a persistent status icon to remind users that they can't launch work apps. The system launcher
-  indicates that work apps and widgets are not accessible.
+<p>
+  On dual-profile devices, users can toggle work mode on and off. While work
+  mode is turned off, the managed profile is temporarily shut down. Work
+  profile apps, background sync, and notifications are all disabled, including
+  the profile owner app. While the work profile is disabled, the system
+  displays a persistent status icon to remind users that they can't launch work
+  apps. The system launcher indicates that work apps and widgets are not
+  accessible.
 </p>
 
-
 <h2 id="always-on-vpn">Always-On VPN</h2>
 
 <p>
@@ -270,29 +275,36 @@
   Device owners can identify suspicious activity by remotely tracking device
   activity, including app launches, adb activity, and screen unlocks. Process
   logs don’t require user consent. To retrieve logs, device owners enable
-  device logging using <code>setDeviceLoggingEnabled()</code>.
+  device logging using <code>DevicePolicyManager.setSecurityLoggingEnabled()</code>.
 </p>
 
 <p>
-  The new <code>android.auditing.SecurityLog</code> class includes these
-  methods:
+  API changes include:
 </p>
 
 <ul>
+
   <li>
-    <code>void DevicePolicyManager.setDeviceLoggingEnabled()</code>
+    The new class <code>android.app.admin.SecurityLog</code> and its
+    methods
   </li>
 
   <li>
-    <code>boolean DevicePolicyManager.getDeviceLoggingEnabled()</code>
+    <code>void DevicePolicyManager.setSecurityLoggingEnabled()</code>
   </li>
 
   <li>
-    <code>List DevicePolicyManager.retrieveDeviceLogs()</code>
+    <code>boolean DevicePolicyManager.isSecurityLoggingEnabled()</code>
   </li>
 
   <li>
-    <code>List DevicePolicyManager.retrievePreviousDeviceLogs()</code>
+    <code>List&lt;SecurityEvent&gt;
+      DevicePolicyManager.retrieveSecurityLogs()</code>
+  </li>
+
+  <li>
+    <code>List&lt;SecurityEvent&gt;
+      DevicePolicyManager.retrievePreRebootSecurityLogs()</code>
   </li>
 
   <li>
@@ -475,7 +487,7 @@
 
 <p>
   Device owners can provide owner information to be shownon the lockscreen.
-  This information takes precedence the user lock screen message (if one is
+  This information takes precedence over the user lock screen message (if one is
   set). New {@link android.app.admin.DevicePolicyManager} methods are:
 </p>
 
diff --git a/docs/html/preview/features/background-optimization.jd b/docs/html/preview/features/background-optimization.jd
index e415bd3..810d283 100644
--- a/docs/html/preview/features/background-optimization.jd
+++ b/docs/html/preview/features/background-optimization.jd
@@ -59,9 +59,9 @@
 <ul>
   <li>Apps targeting the Preview do not receive {@link
   android.net.ConnectivityManager#CONNECTIVITY_ACTION} broadcasts if they
-  register to receive them in their manifest. Apps running in the foreground
-  can still listen for {@code CONNECTIVITY_CHANGE} on their main thread by
-  registering a {@link android.content.BroadcastReceiver} with {@link
+  register to receive them in their manifest. Apps that are running can still
+  listen for {@code CONNECTIVITY_CHANGE} on their main thread by registering a
+  {@link android.content.BroadcastReceiver} with {@link
   android.content.Context#registerReceiver Context.registerReceiver()}.
   </li>
 
@@ -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">
@@ -165,9 +165,8 @@
 </h3>
 
 <p>
-  Apps running in the foreground can still listen for {@code
-  CONNECTIVITY_CHANGE} with a registered {@link
-  android.content.BroadcastReceiver}. However, the {@link
+  Apps that are running can still listen for {@code CONNECTIVITY_CHANGE} with a
+  registered {@link android.content.BroadcastReceiver}. However, the {@link
   android.net.ConnectivityManager} API provides a more robust method to request
   a callback only when specified network conditions are met.
 </p>
@@ -269,7 +268,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..e6800fd 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
@@ -71,8 +71,8 @@
 intent filter for <code>LOCKED_BOOT_COMPLETED</code>, in the app manifest:</p>
 
 <pre>
-&lt;receiever
-  android:encryptionAware="true" &gt;
+&lt;receiver
+  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/multi-window.jd b/docs/html/preview/features/multi-window.jd
index 0fe5ecf..0773b32 100644
--- a/docs/html/preview/features/multi-window.jd
+++ b/docs/html/preview/features/multi-window.jd
@@ -251,7 +251,7 @@
   </dd>
 
   <dt>
-    <code>android:minimalSize</code>
+    <code>android:minimalHeight</code>, <code>android:minimalWidth</code>
   </dt>
 
   <dd>
@@ -273,7 +273,8 @@
     &lt;layout android:defaultHeight="500dp"
           android:defaultWidth="600dp"
           android:gravity="top|end"
-          android:minimalSize="450dp" /&gt;
+          android:minimalHeight="450dp"
+          android:minimalWidth="300dp" /&gt;
 &lt;/activity&gt;
 </pre>
 
@@ -308,12 +309,13 @@
 <p>
   The following new methods have been added to the {@link android.app.Activity}
   class to support multi-window display. For details on each method, see the
-  <a href="{@docRoot}preview/setup-sdk.html#docs-dl">N Preview SDK Reference</a>.
+  <a href="{@docRoot}preview/setup-sdk.html#docs-dl">N Preview SDK
+  Reference</a>.
 </p>
 
 <dl>
   <dt>
-    <code>Activity.inMultiWindow()</code>
+    <code>Activity.isInMultiWindowMode()</code>
   </dt>
 
   <dd>
@@ -321,7 +323,7 @@
   </dd>
 
   <dt>
-    <code>Activity.inPictureInPicture()</code>
+    <code>Activity.isInPictureInPictureMode()</code>
   </dt>
 
   <dd>
@@ -329,14 +331,14 @@
 
     <p class="note">
       <strong>Note:</strong> Picture-in-picture mode is a special case of
-      multi-window mode. If <code>myActivity.inPictureInPicture()</code>
-      returns true, then <code>myActivity.inMultiWindow()</code> also returns
-      true.
+      multi-window mode. If <code>myActivity.isInPictureInPictureMode()</code>
+      returns true, then <code>myActivity.isInMultiWindowMode()</code> also
+      returns true.
     </p>
   </dd>
 
   <dt>
-    <code>Activity.onMultiWindowChanged()</code>
+    <code>Activity.onMultiWindowModeChanged()</code>
   </dt>
 
   <dd>
@@ -347,7 +349,7 @@
   </dd>
 
   <dt>
-    <code>Activity.onPictureInPictureChanged()</code>
+    <code>Activity.onPictureInPictureModeChanged()</code>
   </dt>
 
   <dd>
@@ -360,14 +362,14 @@
 
 <p>
   There are also {@link android.app.Fragment} versions of each of these
-  methods, for example <code>Fragment.inMultiWindow()</code>.
+  methods, for example <code>Fragment.isInMultiWindowMode()</code>.
 </p>
 
 <h3 id="entering-pip">Entering picture-in-picture mode</h3>
 
 <p>
   To put an activity in picture-in-picture mode, call the new method
-  <code>Activity.enterPictureInPicture()</code>. This method has no effect if
+  <code>Activity.enterPictureInPictureMode()</code>. This method has no effect if
   the device does not support picture-in-picture mode. For more information,
   see the <a href="picture-in-picture.html">Picture-in-Picture</a> documentation.
 </p>
diff --git a/docs/html/preview/features/multilingual-support.jd b/docs/html/preview/features/multilingual-support.jd
index ac96452..89ecd5d 100644
--- a/docs/html/preview/features/multilingual-support.jd
+++ b/docs/html/preview/features/multilingual-support.jd
@@ -188,7 +188,7 @@
 <h2 id="design">Designing your App to Support Additional Locales</h2>
 <h3>LocaleList API</h3>
 
-<p>Android N adds a new API {@code LocaleList.GetDefault()}
+<p>Android N adds a new API {@code LocaleList.getDefault()}
 that lets apps directly query the list of languages a user has specified. This API
 allows you to create more sophisticated
  app behavior and better-optimized display of content. For example, Search
diff --git a/docs/html/preview/features/notification-updates.jd b/docs/html/preview/features/notification-updates.jd
index d3042ad..7ee0954 100644
--- a/docs/html/preview/features/notification-updates.jd
+++ b/docs/html/preview/features/notification-updates.jd
@@ -78,7 +78,7 @@
   of the input.
 
 <pre>
-// Key for the string that's delivered in the action's intent
+// Key for the string that's delivered in the action's intent.
 private static final String KEY_TEXT_REPLY = "key_text_reply";
 String replyLabel = getResources().getString(R.string.reply_label);
 RemoteInput remoteInput = new RemoteInput.Builder(KEY_TEXT_REPLY)
@@ -90,7 +90,7 @@
  object to an action using <code>addRemoteInput()</code>.
 
 <pre>
-// Create the reply action and add the remote input
+// Create the reply action and add the remote input.
 Notification.Action action =
         new Notification.Action.Builder(R.drawable.ic_reply_icon,
                 getString(R.string.label), replyPendingIntent)
@@ -102,8 +102,8 @@
 <li>Apply the action to a notification and issue the notification.
 
 <pre>
-// Build the notification and add the action
-Notification notification =
+// Build the notification and add the action.
+Notification newMessageNotification =
         new Notification.Builder(mContext)
                 .setSmallIcon(R.drawable.ic_message)
                 .setContentTitle(getString(R.string.title))
@@ -111,10 +111,10 @@
                 .addAction(action))
                 .build();
 
-// Issue the notification
+// Issue the notification.
 NotificationManager notificationManager =
         NotificationManager.from(mContext);
-notificationManager.notify(notificationId, notification);
+notificationManager.notify(notificationId, newMessageNotification);
 
 </pre>
 </li>
@@ -133,30 +133,32 @@
   <strong>Figure 2.</strong> The user inputs text from the notification shade.
 </p>
 
-<h3>Retrieving user input from the inline reply</h3>
+<h3>
+  Retrieving user input from the inline reply
+</h3>
 
-<p>To receive user input from the notification interface to the activity you
-declared in the reply action's intent:</p>
+<p>
+  To receive user input from the notification interface to the activity you
+  declared in the reply action's intent:
+</p>
+
 <ol>
-<li> Call {@link android.support.v4.app.RemoteInput#getResultsFromIntent
-  getResultsFromIntent()} by passing the notification action’s intent as
- the input parameter. This method returns a {@link android.os.Bundle} that
- contains the text response.
-</li>
+  <li>Call {@link android.support.v4.app.RemoteInput#getResultsFromIntent
+  getResultsFromIntent()} by passing the notification action’s intent as the
+  input parameter. This method returns a {@link android.os.Bundle} that
+  contains the text response.
 
-<pre>
+    <pre>
 Bundle remoteInput = RemoteInput.getResultsFromIntent(intent);
 </pre>
+  </li>
 
-<li>Query the bundle using the result key (provided to the {@link
-  android.support.v4.app.RemoteInput.Builder} constructor).
-</li>
-</ol>
+  <li>Query the bundle using the result key (provided to the {@link
+  android.support.v4.app.RemoteInput.Builder} constructor). You can complete
+  this process and retrieve the input text by creating a method, as in the
+  following code snippet:
 
-<p>The following code snippet illustrates how a method retrieves the input text
-from a bundle:</p>
-
-<pre>
+    <pre>
 // Obtain the intent that started this activity by calling
 // Activity.getIntent() and pass it into this method to
 // get the associated string.
@@ -164,21 +166,43 @@
 private CharSequence getMessageText(Intent intent) {
     Bundle remoteInput = RemoteInput.getResultsFromIntent(intent);
     if (remoteInput != null) {
-            return remoteInput.getCharSequence(KEY_TEXT_REPLY);
-            }
+        return remoteInput.getCharSequence(KEY_TEXT_REPLY);
+    }
     return null;
  }
 </pre>
+  </li>
 
-<p>Apps can apply logic to decide what actions to take on the retrieved
-text.
-For interactive apps (like chats), provide more context in the notification itself
- (for example, multiple lines of chat history, including the user’s own messages)
-  so that the user can respond appropriately.
-When the user responds via {@link android.support.v4.app.RemoteInput},
- include the text in the reply history with the {@code setRemoteInputHistory()}
- method.</p>
+  <li>Build and issue another notification, using the same notification ID that
+    you provided for the previous notification. The progress indicator
+    disappears from the notification interface to inform users of a successful
+    reply. When working with this new notification, use the context that gets
+    passed to the receiver's {@code onReceive()} method.
 
+    <pre>
+// Build a new notification, which informs the user that the system
+// handled their interaction with the previous notification.
+Notification repliedNotification =
+        new Notification.Builder(context)
+                .setSmallIcon(R.drawable.ic_message)
+                .setContentText(getString(R.string.replied))
+                .build();
+
+// Issue the new notification.
+NotificationManager notificationManager =
+        NotificationManager.from(context);
+notificationManager.notify(notificationId, repliedNotification);
+</pre>
+  </li>
+</ol>
+
+<p>
+  For interactive apps, such as chats, it could be useful to include additional
+  context when handling retrieved text. For example, these apps could show
+  multiple lines of chat history. When the user responds via {@link
+  android.support.v4.app.RemoteInput}, you can update the reply history
+  using the {@code setRemoteInputHistory()} method.
+</p>
 <h2 id="bundle">Bundled Notifications</h2>
 
 <p>Android N provides developers with a new way to represent
diff --git a/docs/html/preview/features/picture-in-picture.jd b/docs/html/preview/features/picture-in-picture.jd
index 106ad8b..893f8c1 100644
--- a/docs/html/preview/features/picture-in-picture.jd
+++ b/docs/html/preview/features/picture-in-picture.jd
@@ -99,15 +99,15 @@
 <h2 id="pip_button">Switching Your Activity to Picture-in-picture</h2>
 
 When you need to switch your activity into PIP mode, call
-<code>Activity.enterPictureInPicture()</code>. The following example switches
-to PIP mode when the user selects a dedicated PIP button on a media control
-bar:</p>
+<code>Activity.enterPictureInPictureMode()</code>. The following example
+switches to PIP mode when the user selects a dedicated PIP button on a media
+control bar:</p>
 
 <pre>
 &#64;Override
 public void onActionClicked(Action action) {
     if (action.getId() == R.id.lb_control_picture_in_picture) {
-        getActivity().enterPictureInPicture();
+        getActivity().enterPictureInPictureMode();
         return;
     }
     ...
@@ -129,14 +129,14 @@
 <p>When your activity enters PIP mode, your activity should only show video
 playback. Remove UI elements before your activity enters PIP,
 and restore these elements when your activity becomes full-screen again.
-Override <code>Activity.onPictureInPictureChanged()</code> or
-<code>Fragment.onPictureInPictureChanged()</code> and enable or
+Override <code>Activity.onPictureInPictureModeChanged()</code> or
+<code>Fragment.onPictureInPictureModeChanged()</code> and enable or
 disable your UI elements as needed, for example:</p>
 
 <pre>
 &#64;Override
-public void onPictureInPictureChanged(boolean inPictureInPicture) {
-    if (inPictureInPicture) {
+public void onPictureInPictureModeChanged(boolean isInPictureInPictureMode) {
+    if (isInPictureInPictureMode) {
         // Hide the controls in picture-in-picture mode.
         ...
     } else {
@@ -159,8 +159,8 @@
 <pre>
 &#64;Override
 public void onPause() {
-    // If called due to PIP, do not pause playback
-    if (inPictureInPicture()) {
+    // If called while in PIP mode, do not pause playback
+    if (isInPictureInPictureMode()) {
         // Continue playback
         ...
     }
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/features/security-config.jd b/docs/html/preview/features/security-config.jd
index 607e8f3..42c4ff5 100644
--- a/docs/html/preview/features/security-config.jd
+++ b/docs/html/preview/features/security-config.jd
@@ -70,12 +70,13 @@
 
 <pre>
 &lt;?xml version="1.0" encoding="utf-8"?&gt;
-...
-&lt;application ...&gt;
+&lt;manifest ... &gt;
+  &lt;application ... &gt;
     &lt;meta-data android:name="android.security.net.config"
                android:resource="@xml/network_security_config" /&gt;
     ...
-&lt;/application&gt;
+  &lt;/application&gt;
+&lt;/manifest&gt;
 </pre>
 
 <h2 id="CustomTrust">Customizing Trusted CAs</h2>
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/j8-jack.jd b/docs/html/preview/j8-jack.jd
index 78252f0..1f10efa 100644
--- a/docs/html/preview/j8-jack.jd
+++ b/docs/html/preview/j8-jack.jd
@@ -23,7 +23,7 @@
 </p>
 
 <p>To start using these features, you need to download and set up Android
-Studio 2.1 (preview) and the Android N Preview SDK, which includes the required
+Studio 2.1 and the Android N Preview SDK, which includes the required
 Jack toolchain and updated Android Plugin for Gradle. If you haven't yet
 installed the Android N Preview SDK, see <a href=
 "{@docRoot}preview/setup-sdk.html">Set Up to Develop for Android N</a>.</p>
@@ -58,7 +58,7 @@
   <li>
     <a class="external-link" href=
     "https://docs.oracle.com/javase/tutorial/java/javaOO/lambdaexpressions.html">
-    Lambda expressions</a>
+    Lambda expressions</a> (also available on API level 23 and lower)
   </li>
 
   <li>
@@ -66,8 +66,21 @@
     "https://docs.oracle.com/javase/tutorial/java/annotations/repeating.html">Repeatable
     annotations</a>
   </li>
+
+  <li>
+    <a class="external-link" href=
+    "https://docs.oracle.com/javase/tutorial/java/javaOO/methodreferences.html">
+    Method References</a> (also available on API level 23 and lower)
+  </li>
 </ul>
 
+<p class="note">
+  <strong>Note:</strong> To test lambda expressions and method references on
+  earlier versions of Android, go to your {@code build.gradle}
+  file, and set {@code compileSdkVersion} and {@code targetSdkVersion} to 23 or
+  lower. You will still need to <a href="#configuration">enable the Jack
+  toolchain</a> to use these Java 8 features.
+</p>
 
 <p>
   Additionally, the following Java 8 language feature APIs are now available:
@@ -75,44 +88,50 @@
 
 <ul>
   <li>Reflection and language-related APIs:
-  </li>
-
-  <li style="list-style: none; display: inline">
     <ul>
-      <li>{@code java.lang.FunctionalInterface}
+      <li>
+        <a class="external-link" href=
+        "https://docs.oracle.com/javase/8/docs/api/java/lang/FunctionalInterface.html">
+        {@code java.lang.FunctionalInterface}</a>
       </li>
 
-      <li>{@code java.lang.annotation.Repeatable}
+      <li>
+        <a class="external-link" href=
+        "https://docs.oracle.com/javase/8/docs/api/java/lang/annotation/Repeatable.html">
+        {@code java.lang.annotation.Repeatable}</a>
       </li>
 
-      <li>{@code java.lang.reflect.Method.isDefault()}
+      <li>
+        <a class="external-link" href=
+        "https://docs.oracle.com/javase/8/docs/api/java/lang/reflect/Method.html#isDefault--">
+        {@code java.lang.reflect.Method.isDefault()}</a>
       </li>
 
       <li>and Reflection APIs associated with repeatable annotations, such as
-      {@code AnnotatedElement.getAnnotationsByType(Class)}
+      <a class="external-link" href=
+      "https://docs.oracle.com/javase/8/docs/api/java/lang/reflect/AnnotatedElement.html#getAnnotationsByType-java.lang.Class-">
+        {@code AnnotatedElement.getAnnotationsByType(Class)}</a>
       </li>
     </ul>
   </li>
-  <li>Utility APIs:
-  </li>
 
-  <li style="list-style: none; display: inline">
+  <li>Utility APIs:
     <ul>
-      <li>{@code java.util.function}
+      <li>
+        <a class="external-link" href=
+        "https://docs.oracle.com/javase/8/docs/api/java/util/function/package-summary.html">
+        {@code java.util.function}</a>
+      </li>
+
+      <li>
+        <a class="external-link" href=
+        "https://docs.oracle.com/javase/8/docs/api/java/util/stream/package-summary.html">
+        {@code java.util.stream}</a>
       </li>
     </ul>
   </li>
 </ul>
 
-<p class="note">
-  <strong>Note:</strong> The Android N bases its implementation of
-  lambda expressions on anonymous classes. This approach allows them to be
-  backwards compatible and executable on earlier versions of Android. To test
-  lambda expressions on earlier versions, remember to go to your {@code
-  build.gradle} file, and set {@code compileSdkVersion} and {@code
-  targetSdkVersion} to 23 or lower.
-</p>
-
 <h2 id="configuration">
   Enabling Java 8 Features and the Jack Toolchain
 </h2>
@@ -145,7 +164,7 @@
 
 <p>
   To enable the Java 8 language features and Jack for your project, enter the
-  following in your module-specific {@code build.gradle} file:
+  following in your module-level {@code build.gradle} file:
 </p>
 
 <pre>
@@ -164,13 +183,14 @@
 }
 </pre>
 
-<h3>
+<h3 id="known-issues">
   Known Issues
 </h3>
 
 <p>
-  Instant Run, introduced in Android Studio 2.0 (Beta), does not currently work
-  with Jack and will be disabled while using the new toolchain.
+  <a href="{@docRoot}tools/building/building-studio.html#instant-run">Instant
+  Run</a> does not currently work with Jack and will be disabled while using
+  the new toolchain.
 </p>
 
 <p>Because Jack does not generate intermediate class files when compiling an
@@ -186,11 +206,5 @@
   </li>
 </ul>
 
-<p>
-  Calls to an interface's default method on a <a class="external-link" href=
-  "https://docs.oracle.com/javase/7/docs/api/java/lang/reflect/Proxy.html"><code>
-  Proxy</code></a> instance fail with an exception.
-</p>
-
 <p>If you find other problems while using Jack, <a href=
-"http://tools.android.com/filing-bugs">please report bugs</a>.</p>
\ No newline at end of file
+"http://tools.android.com/filing-bugs">please file a bug</a>.</p>
\ No newline at end of file
diff --git a/docs/html/preview/overview.jd b/docs/html/preview/overview.jd
index 935eb1a..57b6b9b 100644
--- a/docs/html/preview/overview.jd
+++ b/docs/html/preview/overview.jd
@@ -151,8 +151,8 @@
 </p>
 
 <ul>
-  <li><strong><a href="{@docRoot}preview/support.html">Preview 1</a></strong> (initial release, alpha)</li>
-  <li><strong>Preview 2</strong> (incremental update, beta)</li>
+  <li><strong><a href="{@docRoot}preview/support.html#dp1">Preview 1</a></strong> (initial release, alpha)</li>
+  <li><strong><a href="{@docRoot}preview/support.html">Preview 2</a></strong> (incremental update, beta)</li>
   <li><strong>Preview 3</strong> (incremental update, beta)</li>
   <li><strong>Preview 4</strong> (final APIs and official SDK, Play publishing)</li>
   <li><strong>Preview 5</strong> (near-final system images for final testing)</li>
@@ -362,7 +362,7 @@
   <li> <a href="https://code.google.com/p/android-developer-preview/">N Developer Preview Issue
     Tracker</a> is your <strong>primary feedback channel.</strong> You can report bugs, performance
     issues, and general feedback through the issue tracker. You can also check for
-<a href="{@docRoot}preview/bug">known issues</a> and
+<a href="{@docRoot}preview/bugs">known issues</a> and
     find workaround steps. We’ll keep you updated on your issue as it’s triaged and sent to
     the Android engineering team for review. </li>
   <li> The <a href="{@docRoot}preview/dev-community">Android N Developer Community</a> is
diff --git a/docs/html/preview/preview_toc.cs b/docs/html/preview/preview_toc.cs
index f96bf1f..ad8d45f 100644
--- a/docs/html/preview/preview_toc.cs
+++ b/docs/html/preview/preview_toc.cs
@@ -3,10 +3,12 @@
   <li class="nav-section">
     <div class="nav-section-header empty"><a href="<?cs var:toroot ?>preview/overview.html"
    es-lang="Información general del programa"
+   in-lang="Ikhtisar Program"
    ja-lang="プログラム概要"
    ko-lang="프로그램 개요"
    pt-br-lang="Visão geral do programa"
    ru-lang="Обзор программы"
+   vi-lang="Tổng quan về Chương trình"
    zh-cn-lang="计划概览"
    zh-tw-lang="程式總覽">
    Program Overview</a></div>
@@ -17,20 +19,32 @@
     <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"
+      in-lang="Menyiapkan Preview"
       ja-lang="Preview SDK のセットアップ"
       ko-lang="미리 보기 SDK 설정하기"
       pt-br-lang="Configuração do Preview SDK"
       ru-lang="Настройка пакета SDK Preview"
+      vi-lang="Kiểm thử trên Thiết bị"
       zh-cn-lang="设置预览版 SDK"
       zh-tw-lang="設定預覽版 SDK">
       Set Up to Develop</a></div>
   </li>
+
   <li class="nav-section">
-    <div class="nav-section-header empty"><a href="<?cs var:toroot ?>preview/download.html">
+    <div class="nav-section-header empty"><a href="<?cs var:toroot ?>preview/download.html"
+      es-lang="Pruebe en un dispositivo"
+      in-lang="Menguji pada Perangkat"
+      ja-lang="デバイス上でテストする"
+      ko-lang="기기에서 테스트"
+      pt-br-lang="Testar em um dispositivo"
+      ru-lang="Тестирование на устройстве"
+      vi-lang="Kiểm thử trên Thiết bị"
+      zh-cn-lang="在设备上测试"
+      zh-tw-lang="在裝置上測試">
       Test on a Device</a></div>
   </li>
 
@@ -38,56 +52,144 @@
   <li class="nav-section">
     <div class="nav-section-header"><a href="<?cs var:toroot ?>preview/behavior-changes.html"
       es-lang="Cambios en los comportamientos"
+      in-lang="Perubahan Perilaku"
       ja-lang="動作の変更点"
       ko-lang="동작 변경"
       pt-br-lang="Mudanças de comportamento"
       ru-lang="Изменения в работе"
+      vi-lang="Các thay đổi Hành vi"
       zh-cn-lang="行为变更"
       zh-tw-lang="行為變更">Behavior Changes
        </a></div>
       <ul>
         <li><a href="<?cs var:toroot ?>preview/features/background-optimization.html"
-        >Background Optimizations</a></li>
+              es-lang="Optimizaciones en segundo plano"
+              in-lang="Optimisasi Latar Belakang"
+              ja-lang="バックグラウンド処理の最適化"
+              ko-lang="백그라운드 최적화"
+              pt-br-lang="Otimizações em segundo plano"
+              ru-lang="Оптимизация фоновых процессов"
+              vi-lang="Tối ưu hóa Chạy ngầm"
+              zh-cn-lang="后台优化"
+              zh-tw-lang="背景最佳化">Background Optimizations
+              </a></li>
         <li><a href="<?cs var:toroot ?>preview/features/multilingual-support.html"
-        >Language and Locale</a></li>
+              es-lang="Idioma y configuración regional"
+              in-lang="Bahasa dan Lokal"
+              ja-lang="言語とロケール"
+              ko-lang="언어 및 로케일"
+              pt-br-lang="Idioma e localidade"
+              ru-lang="Язык и языковой стандарт"
+              vi-lang="Ngôn ngữ và Bản địa"
+              zh-cn-lang="语言和区域设置"
+              zh-tw-lang="語言和地區設定">Language and Locale
+              </a></li>
       </ul>
   </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="<?cs var:toroot ?>preview/api-overview.html"
       es-lang="Información general de la API"
+      in-lang="Android N untuk Pengembang"
       ja-lang="API の概要"
       ko-lang="API 개요"
       pt-br-lang="Visão geral da API"
       ru-lang="Обзор API-интерфейсов"
+      vi-lang="Android N cho Nhà phát triển"
       zh-cn-lang="API 概览"
       zh-tw-lang="API 總覽">Android N for Developers
       </a></div>
       <ul>
 
         <li><a href="<?cs var:toroot ?>preview/features/multi-window.html"
-        >Multi-Window Support</a></li>
+              es-lang="Compatibilidad con ventanas múltiples"
+              in-lang="Dukungan Multi-Jendela"
+              ja-lang="マルチ ウィンドウのサポート"
+              ko-lang="다중 창 지원"
+              pt-br-lang="Suporte a várias janelas"
+              ru-lang="Поддержка многооконного режима"
+              vi-lang="Hỗ trợ đa cửa sổ"
+              zh-cn-lang="多窗口支持"
+              zh-tw-lang="多視窗支援">
+        Multi-Window Support</a></li>
 
         <li><a href="<?cs var:toroot ?>preview/features/notification-updates.html"
-        >Notifications</a></li>
+              es-lang="Notificaciones"
+              in-lang="Pemberitahuan"
+              ja-lang="通知"
+              ko-lang="알림"
+              pt-br-lang="Notificações"
+              ru-lang="Уведомления"
+              vi-lang="Thông báo"
+              zh-cn-lang="通知"
+              zh-tw-lang="通知">
+        Notifications</a></li>
 
-        <li><a href="<?cs var:toroot ?>preview/features/data-saver.html"
-        >Data Saver</a></li>
+        <li><a href="<?cs var:toroot ?>preview/features/data-saver.html">
+        Data Saver</a></li>
 
         <li><a href="<?cs var:toroot ?>preview/features/tv-recording-api.html"
-        >TV Recording</a></li>
+              es-lang="Grabación de TV"
+              in-lang="Perekaman TV"
+              ja-lang="TV の録画"
+              ko-lang="TV 녹화"
+              pt-br-lang="Gravação para TV"
+              ru-lang="Запись ТВ"
+              vi-lang="Ghi lại TV"
+              zh-cn-lang="TV 录制"
+              zh-tw-lang="電視錄製">
+        TV Recording</a></li>
 
         <li><a href="<?cs var:toroot ?>preview/features/security-config.html"
-        >Network Security Configuration</a></li>
+              es-lang="Configuración de seguridad de la red"
+              in-lang="Network Security Configuration"
+              ja-lang="ネットワーク セキュリティ構成"
+              ko-lang="네트워크 보안 구성"
+              pt-br-lang="Configurações de segurança de rede"
+              ru-lang="Конфигурация сетевой безопасности"
+              vi-lang="Cấu hình Bảo mật mạng"
+              zh-cn-lang="网络安全配置"
+              zh-tw-lang="網路安全性設定">
+        Network Security Configuration</a></li>
 
         <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>
+              es-lang="API de ICU4J del framework de Android"
+              in-lang="ICU4J Android Framework API"
+              ja-lang="ICU4J Android フレームワーク API"
+              ko-lang="ICU4J Android 프레임워크 API"
+              pt-br-lang="APIs de estrutura do Android para ICU4J"
+              ru-lang="API-интерфейсы ICU4J в платформе Android"
+              vi-lang="API Khuôn khổ Android ICU4J"
+              zh-cn-lang="ICU4J Android 框架 API"
+              zh-tw-lang="ICU4J Android 架構 API">
+        ICU4J Support</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/j8-jack.html"
+              es-lang="Funciones del lenguaje Java 8"
+              in-lang="Fitur Bahasa Java 8"
+              ja-lang="Java 8 の機能"
+              ko-lang="Java 8 언어 기능"
+              pt-br-lang="Recursos de linguagem do Java 8"
+              ru-lang="Возможности языка Java 8"
+              vi-lang="Tính năng của Ngôn ngữ Java 8"
+              zh-cn-lang="Java 8 语言功能"
+              zh-tw-lang="Java 8 語言功能">
+        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"
+              es-lang="Acceso a directorios determinados"
+              in-lang="Scoped Directory Access"
+              ja-lang="特定のディレクトリへのアクセス"
+              ko-lang="범위가 지정된 디렉터리 액세스"
+              pt-br-lang="Acesso a diretórios com escopo"
+              ru-lang="Доступ к выделенным каталогам"
+              vi-lang="Truy cập Thư mục theo Phạm vi"
+              zh-cn-lang="作用域目录访问"
+              zh-tw-lang="限定範圍目錄存取">
+        Scoped Directory Access</a></li>
       </ul>
   </li>
 
@@ -108,6 +210,7 @@
   <li class="nav-section">
     <div class="nav-section-header empty"><a href="<?cs var:toroot ?>preview/samples.html"
       es-lang="Ejemplos"
+      in-lang="Contoh"
       ja-lang="サンプル"
       ko-lang="샘플"
       pt-br-lang="Exemplos"
diff --git a/docs/html/preview/setup-sdk.jd b/docs/html/preview/setup-sdk.jd
index bc40ebd..60568ac 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>
@@ -32,7 +32,7 @@
 <img src="{@docRoot}preview/images/n-preview-setup.png" width="700" alt="" />
 
 
-<h2 id="get-as13">Get Android Studio 2.1 (preview)</h2>
+<h2 id="get-as13">Get Android Studio 2.1</h2>
 
 <p>The Android N platform adds support for <a
 href="{@docRoot}preview/j8-jack.html">Java 8 language features</a>,
@@ -41,45 +41,14 @@
 use Java 8 language features, you need to use Android Studio 2.1 to
 build your app. Otherwise, you don't need to use the Jack compiler, but you
 still need to update to JDK 8 to compile against the Android N platform,
-as described below.
-</p>
+as described below.</p>
 
-<iframe width="400" height="225" src="//www.youtube.com/embed/SBbWGxXCMqQ?autohide=1&amp;showinfo=0" frameborder="0" allowfullscreen="" style="float: right; margin: 0 0 20px 20px;"></iframe>
+<p>If you already have Android Studio installed, make sure you have Android
+Studio 2.1 or higher by clicking <strong>Help > Check for Update</strong>
+(on Mac, <strong>Android Studio > Check for Updates</strong>).</p>
 
-<p>Android Studio 2.1 is currently available as a preview in the canary
-release channel. If you already
-have Android Studio and don't want to update to the canary channel, you can
-download Android Studio 2.1 as a separate installation and use it
-for development with Android N, leaving your primary Android Studio
-environment unaffected.</p>
-
-<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>
-
-<ol>
-  <li>Edit the name of your
-  existing Android Studio installation and append the version number. This way,
-  when you install the new version, it will not override the existing one.</li>
-  <li>Download the appropriate ZIP file for your operating system from the
-    <a href="http://tools.android.com/download/studio/canary/latest"
-    >canary channel download page</a>.
-  </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>Open the Settings dialog
-    (<strong>File &gt; Settings</strong> on Windows/Linux, or
-    <strong>Android Studio &gt; Preferences</strong> on Mac). In the left
-    panel, select <strong>Appearance &amp; Behavior &gt; System Settings &gt;
-    Updates</strong>.
-  </li>
-  <li>On the Updates panel, select the <strong>Automatically
-    check updates for</strong> check box and select
-    <strong>Canary Channel</strong> from the drop-down list.
-  </li>
-</ol>
-
-<p>Keep this settings window open for the next step.</p>
+<p>If you don't have it, <a href="{@docRoot}sdk/">download Android Studio
+2.1 here</a>.</p>
 
 
 <h2 id="get-sdk">Get the N Preview SDK</h2>
@@ -88,17 +57,10 @@
 Android N Preview SDK in Android Studio as follows:</p>
 
 <ol>
-  <li>While still viewing the Updates panel (step 4 from above),
-  select the <strong>Automatically
-    check updates for Android SDK</strong> check box and select
-    <strong>Preview Channel</strong> from the drop-down list.
-  </li>
-  <li>Click <strong>Check Now</strong>.</li>
+  <li>Open the SDK Manager by clicking <strong>Tools > Android >
+  SDK Manager</strong>.</li>
 
-  <li>In the left panel, select <strong>Appearance &amp; Behavior &gt;
-  System Settings &gt; Android SDK</strong>.
-
-  <li>Click the <strong>SDK Platforms</strong> tab, then select the
+  <li>In the <strong>SDK Platforms</strong> tab, select the
   <strong>Android N Preview</strong> check box.</li>
 
   <li>Click the <strong>SDK Tools</strong> tab, then select the
@@ -129,24 +91,22 @@
   </tr>
   <tr>
     <td style="white-space: nowrap">
-    <a href="{@docRoot}shareables/preview/n-preview-1-docs.zip"
-      >n-preview-1-docs.zip</a></td>
+    <a href="{@docRoot}shareables/preview/n-preview-2-docs.zip"
+      >n-preview-2-docs.zip</a></td>
     <td width="100%">
-      MD5: 4ab33ccbe698f46f125cc5b807cf9c2f<br>
-      SHA-1: 6a3880b3ccd19614daae5a4d0698ea6ae11c20a5
+      MD5: c02732760f468bd97cd94c1b76361229<br>
+      SHA-1: 591eabe168c909799f6d8dcbe7b126c25ea8b04d
     </td>
   </tr>
 <table>
 
 
 
-<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>
 
@@ -191,7 +151,7 @@
 <pre>
 android {
   compileSdkVersion <strong>'android-N'</strong>
-  buildToolsVersion <strong>'24.0.0-rc1'</strong>
+  buildToolsVersion <strong>'24.0.0-rc3'</strong>
   ...
 
   defaultConfig {
diff --git a/docs/html/preview/support.jd b/docs/html/preview/support.jd
index 3945ecd..f0da709 100644
--- a/docs/html/preview/support.jd
+++ b/docs/html/preview/support.jd
@@ -16,6 +16,329 @@
 <p>To discuss issues or ideas with other developers working with Android N, join the
 <a href="{@docRoot}preview/dev-community">Developer Preview Google+ community</a>.</p>
 
+<h2 id="dp2">Developer Preview 2</h2>
+
+<div class="wrap">
+  <div class="cols">
+    <div class="col-6of12">
+      <p>
+        <em>Date: April 2016<br>
+        Builds: NPC91K, NPC91O<br>
+        Emulator support: x86 &amp; ARM (32/64-bit)<br>
+        Google Play services: 8.4</em>
+      </p>
+    </div>
+  </div>
+</div>
+
+<h3 id="new">New in DP2</h3>
+
+<ul>
+  <li>Platform support for Vulkan, a new 3D rendering API that provides
+  explicit, low-overhead GPU (Graphics Processor Unit) control and offers
+  improved performance for draw-call heavy applications. For details, see the
+  <a href="{@docRoot}ndk/guides/graphics/index.html">documentation</a>.
+  </li>
+
+  <li>New people emoji with support for skin tones, and new Unicode 9 glyphs.
+  Skin tone and new emoji will not show up until keyboards build support for
+  them in the palette. Apps should not need to take any action to take
+  advantage of these new emoji, unless the apps use a non-system font. IME
+  developers need to incorporate support for the new emoji.
+  </li>
+
+  <li>
+    <a href="{@docRoot}preview/api-overview.html#launcher_shortcuts">Launcher
+    Shortcuts API</a>: Apps can use <code>ShortcutManager</code> to send
+    shortcuts to starting points within themselves to the launcher.
+  </li>
+
+  <li>
+    <a href="{@docRoot}preview/features/multi-window.html">Multi-Window</a>:
+    You can now specify a separate minimum height and minimum width for an
+    activity. In addition, several API names have been slightly changed.
+  </li>
+</ul>
+
+<h4 id="dp2-fixes">Fixes for issues reported by developers</h4>
+
+<p>
+  A number of issues reported by developers have been fixed, including:
+</p>
+
+<ul>
+  <li>Can’t connect to hidden SSID or non-broadcast Wi-Fi. (bug <a href=
+  "https://code.google.com/p/android/issues/detail?id=203116">203116</a>)
+  </li>
+
+  <li>Microphone mute state persists across activities. (bug <a href=
+  "https://code.google.com/p/android/issues/detail?id=205922">205922</a>)
+  </li>
+
+  <li>Changing multi-window focus pauses YouTube. (bug <a href=
+  "https://code.google.com/p/android/issues/detail?id=203424">203424</a>)
+  </li>
+
+  <li>Direct Reply may close open activity. (bug <a href=
+  "https://code.google.com/p/android/issues/detail?id=204411">204411</a>)
+  </li>
+
+  <li>Various stability fixes.
+  </li>
+</ul>
+
+<h3 id="general">General advisories</h3>
+
+<p>
+  This Developer Preview release is for <strong>app developers only</strong>
+  and is designed for use in compatibility testing and early development only.
+  Please be aware of these general notes about the release:
+</p>
+
+<ul>
+
+  <li>The development tool components and support libraries have been updated
+  for the DP2 release. Make sure to update your preview development environment
+  before developing for DP2. For instructions on setting up your development
+  environment, see
+  <a href="{@docRoot}preview/setup-sdk.html">Set Up the Preview</a>.
+  </li>
+
+  <li>This release has various stability and performance issues on all devices
+  that make it <strong>not suitable for daily use on phone or tablet</strong>,
+  especially for non-developers.
+  </li>
+
+  <li>Battery life and performance have not yet been optimized with this
+  release:
+
+    <ul>
+      <li>System and app <strong>performance is known to be periodically slow /
+      janky</strong>, and devices may become occasionally unresponsive. These
+      problems may become more acute with prolonged use.
+      </li>
+
+      <li>Battery life may be regressed in this release for screen-on and
+      screen-off use cases.
+      </li>
+    </ul>
+  </li>
+
+  <li>Some <strong>apps may not function normally</strong> on Developer Preview
+  2. This includes Google’s apps as well as other apps.
+  </li>
+
+  <li>This early build is not <strong>Compatibility Test Suite (CTS)
+  approved</strong>. Apps that depend on CTS approved builds won’t work
+  (Android Pay for example).
+  </li>
+
+  <li>This preview release supports the following devices: Nexus 5X, Nexus 6,
+  Nexus 6P, Nexus 9, and Pixel C, as well as General Mobile 4G
+  (Android One). Support for Nexus Player is coming soon.
+  </li>
+
+
+  <li><a href=
+  "https://github.com/googlesamples/android-testdpc/releases">TestDPC</a> has
+  been updated to handle API changes between DP1 and DP2.
+  </li>
+</ul>
+
+<h3 id="ki">Known Issues</h3>
+
+<h4>Performance and battery</h4>
+
+<ul>
+  <li>System and app performance is known to be <strong>periodically slow /
+  janky</strong>, and device may become occasionally unresponsive. These
+  problems may become more acute with prolonged use.
+  </li>
+</ul>
+
+<h4>Google accounts</h4>
+
+<ul>
+  <li>In some circumstances, there can be issues with
+  <code>AccountManagerService</code> that prevent logging in to Google accounts
+  </li>
+</ul>
+
+<h4>System update</h4>
+
+<ul>
+  <li>Device may restart immediately after updating to DP2.
+  </li>
+</ul>
+
+<h4>Accessibility</h4>
+
+<ul>
+  <li>Problem with listening to text-to-speech (TTS) output when pitch is set
+  near maximum level.
+  </li>
+</ul>
+
+<h4>Bluetooth</h4>
+
+<ul>
+  <li>Bluetooth Low Energy (LE) GATT characteristics are using the wrong write
+  type and will not be sent to a remote device. Thus, for example, some fitness
+  devices will not work.
+  </li>
+</ul>
+
+<h4>Setup wizard</h4>
+
+<ul>
+  <li>The option to restore data on a new device (or newly reset device) from
+  "Your Google Account" is not actionable in the setup wizard. You must restore
+  data from an existing device by selecting "another Android device" in the
+  setup wizard, or else set it up as a new device.
+  </li>
+</ul>
+
+<h4>OEM unlock</h4>
+
+<ul>
+  <li>On some devices, <strong>Enable OEM unlock</strong> is grayed out in
+  "Developer Options" while running DP2.<br>
+  <strong>Workaround:</strong> Opt in to
+  the Android Beta Program (if you are not already opted in) by visiting
+  <a href="https://www.google.com/android/beta" class=
+  "external-link">www.google.com/android/beta</a>. Then, opt out and accept the
+  downgrade OTA. Opting out causes the device to downgrade to Android 6.0. You
+  should now be able to choose <strong>Enable OEM unlock</strong> in
+  "Developer Options". Personal data is erased when you downgrade the
+  device; however, unlocking the bootloader would have erased this data anyway.
+  </li>
+</ul>
+
+<h4>Android for Work</h4>
+
+<ul>
+  <li>Work Security Challenge
+    <ul>
+      <li>After migration to N, or after the user creates work profiles, work
+      profiles can't create keys in the keystore until the user changes their
+      pattern, PIN, or password, or sets up a Work Challenge.
+      </li>
+
+      <li>In Direct boot mode, applying the passcode restrictions to the device
+      causes the work profile to be unlocked, even though the device is locked.
+      This makes the work profile accessible even though it should be protected
+      by the device lock screen.
+      </li>
+    </ul>
+  </li>
+
+  <li>Always On VPN
+    <ul>
+      <li>If Always On VPN mode is turned on, but VPN is not available, apps
+      connect over the ordinary network. Apps should be offline if they have no
+      VPN connection available.
+      </li>
+
+      <li>When Always On mode is on, a VPN connection is not established after
+      a device reboots into Direct boot mode, even after the user unlocks the
+      secure lock screen.
+      </li>
+    </ul>
+  </li>
+
+  <li>Suspend Packages
+    <ul>
+      <li>Device admins can suspend critical system packages, which may lead to
+      unexpected behavior, such as placing calls despite the "Telephone
+      disabled" dialog being displayed.
+      </li>
+    </ul>
+  </li>
+
+  <li>Other
+    <ul>
+      <li>The Settings app crashes on launch if {@link
+      android.os.UserManager#DISALLOW_MOUNT_PHYSICAL_MEDIA} is set to true when
+      the user inserts physical media such as an SD card.
+      </li>
+
+      <li>The first check-in in a Work Profile takes several minutes to
+      complete.
+      </li>
+    </ul>
+  </li>
+</ul>
+
+<h4 id="vulkan">Vulkan</h4>
+
+<ul>
+   <li>Nexus 5X/6P</li>
+   <ul>
+      <li>Gaps between binding numbers and non-zero
+      as the first binding number causes {@code vkCreateGraphicsPipeline()} to fail.</li>
+      <li>Vulkan exhibits incorrect sampling behavior on projected texture coordinates.</li>
+      <li>in the multithreadCmdBuffer sample, {@code vkCmdClearColorImage()} crashes when
+      running with the N-DP2 driver.</li>
+      <li>Return values from {@code vkGetPhysicalDeviceFormatProperties()} do not set a value
+      for {@code VkFormatProperties::linearTilingFeatures}, which takes a value of 0 as
+      a result.</li>
+      <li>Vulkan floating point frame buffer attachments are not handled correctly.</li>
+    </ul>
+   <li>Nexus Player</li>
+   <ul>
+      <li>SPIR-V shaders may trigger driver asserts.</li>
+      <li>Some pipeline configurations may cause {@code vkCreateGraphicsPipeline()}
+      to crash.</li>
+  </ul>
+</ul>
+
+<h4>Device-specific issues</h4>
+
+<dl>
+  <dt>
+    <strong>Android One</strong>
+  </dt>
+
+  <dd>
+    Data connection fails when device is switched from slot 1 to slot 2 SIM.
+  </dd>
+
+  <dt>
+    <strong>Pixel C</strong>
+  </dt>
+
+  <dd>
+    Unable to toggle Voice Search "Always On" option.
+  </dd>
+
+  <dt>
+    <strong>Nexus 6</strong>
+  </dt>
+
+  <dd>
+    Camera pictures in portrait orientation are corrupted, except for HDR+
+    photos.
+  </dd>
+
+  <dt>
+    <strong>Nexus Player</strong>
+  </dt>
+
+  <dd>
+    Playback of Netflix HD content may fail on Nexus Player.
+  </dd>
+
+  <dd>
+    Any application that relies on dynamic video resolution changes may fail on
+    Nexus Player.
+  </dd>
+
+  <dd>
+    Any application that use the VP9 video codec may fail on Nexus Player.
+  </dd>
+</dl>
+
+<!-- DP 1 release notes archive -->
 
 <h2 id="dp1">Developer Preview 1</h2>
 
@@ -32,7 +355,7 @@
   </div>
 </div>
 
-<h3 id="general">General advisories</h3>
+<h3 id="dp1-general">General advisories</h3>
 
 <p>
   This Developer Preview release is for app developers only and is designed for
@@ -68,7 +391,7 @@
   </li>
 </ul>
 
-<h3 id="platform">Platform Issues</h3>
+<h3 id="dp1-platform">Platform Issues</h3>
 
 <h4 id="performance">Performance and battery</h4>
 
@@ -122,7 +445,7 @@
   </li>
 </ul>
 
-<h4 id="afw">Android for Work</h4>
+<h4>Android for Work</h4>
 
 <ul>
   <li>Work Security Challenge
@@ -152,7 +475,7 @@
         Google Apps Device Policy</a> that is bundled with N Developer Preview
         does not yet support the Work Profile Security Challenge feature.
         Developers should instead use <a href=
-        "https://play.google.com/store/apps/details?id=com.afwsamples.testdpc">TestDPC</a>
+        "https://github.com/googlesamples/android-testdpc/releases">TestDPC</a>
         to test this feature.
       </li>
     </ul>
@@ -225,11 +548,6 @@
       not display Notifications as expected.
       </li>
 
-      <li>The version of Google Apps Device Policy that is bundled with N
-      Developer Preview does not yet support the Work Profile Security
-      Challenge feature. Developers should instead use TestDPC to test this
-      feature.
-      </li>
     </ul>
   </li>
 </ul>
diff --git a/docs/html/samples/_book.yaml b/docs/html/samples/_book.yaml
deleted file mode 100644
index 3fe0d19..0000000
--- a/docs/html/samples/_book.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-toc:
-- title: About the Samples
-  path: /samples/index.html
-
-- title: What's New
-  path: /samples/new/index.html
diff --git a/docs/html/sdk/index.jd b/docs/html/sdk/index.jd
deleted file mode 100644
index 0250c1e..0000000
--- a/docs/html/sdk/index.jd
+++ /dev/null
@@ -1,529 +0,0 @@
-page.title=Download Android Studio and SDK Tools
-page.tags=sdk, android studio
-page.template=sdk
-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>
-.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>
-
-
-
-
-<!-- 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>
-This is the Android Software Development Kit License Agreement
-
-<h3>1. Introduction</h3>
-1.1 The Android Software Development Kit (referred to in the License Agreement as the "SDK" and specifically including the Android system files, packaged APIs, and Google APIs add-ons) is licensed to you subject to the terms of the License Agreement. The License Agreement forms a legally binding contract between you and Google in relation to your use of the SDK.
-
-1.2 "Android" means the Android software stack for devices, as made available under the Android Open Source Project, which is located at the following URL: http://source.android.com/, as updated from time to time.
-
-1.3 A "compatible implementation" means any Android device that (i) complies with the Android Compatibility Definition document, which can be found at the Android compatibility website (http://source.android.com/compatibility) and which may be updated from time to time; and (ii) successfully passes the Android Compatibility Test Suite (CTS).
-
-1.4 "Google" means Google Inc., a Delaware corporation with principal place of business at 1600 Amphitheatre Parkway, Mountain View, CA 94043, United States.
-
-
-<h3>2. Accepting this License Agreement</h3>
-2.1 In order to use the SDK, you must first agree to the License Agreement. You may not use the SDK if you do not accept the License Agreement.
-
-2.2 By clicking to accept, you hereby agree to the terms of the License Agreement.
-
-2.3 You may not use the SDK and may not accept the License Agreement if you are a person barred from receiving the SDK under the laws of the United States or other countries, including the country in which you are resident or from which you use the SDK.
-
-2.4 If you are agreeing to be bound by the License Agreement on behalf of your employer or other entity, you represent and warrant that you have full legal authority to bind your employer or such entity to the License Agreement. If you do not have the requisite authority, you may not accept the License Agreement or use the SDK on behalf of your employer or other entity.
-
-
-<h3>3. SDK License from Google</h3>
-3.1 Subject to the terms of the License Agreement, Google grants you a limited, worldwide, royalty-free, non-assignable, non-exclusive, and non-sublicensable license to use the SDK solely to develop applications for compatible implementations of Android.
-
-3.2 You may not use this SDK to develop applications for other platforms (including non-compatible implementations of Android) or to develop another SDK. You are of course free to develop applications for other platforms, including non-compatible implementations of Android, provided that this SDK is not used for that purpose.
-
-3.3 You agree that Google or third parties own all legal right, title and interest in and to the SDK, including any Intellectual Property Rights that subsist in the SDK. "Intellectual Property Rights" means any and all rights under patent law, copyright law, trade secret law, trademark law, and any and all other proprietary rights. Google reserves all rights not expressly granted to you.
-
-3.4 You may not use the SDK for any purpose not expressly permitted by the License Agreement.  Except to the extent required by applicable third party licenses, you may not: (a) copy (except for backup purposes), modify, adapt, redistribute, decompile, reverse engineer, disassemble, or create derivative works of the SDK or any part of the SDK; or (b) load any part of the SDK onto a mobile handset or any other hardware device except a personal computer, combine any part of the SDK with other software, or distribute any software or device incorporating a part of the SDK.
-
-3.5 Use, reproduction and distribution of components of the SDK licensed under an open source software license are governed solely by the terms of that open source software license and not the License Agreement.
-
-3.6 You agree that the form and nature of the SDK that Google provides may change without prior notice to you and that future versions of the SDK may be incompatible with applications developed on previous versions of the SDK. You agree that Google may stop (permanently or temporarily) providing the SDK (or any features within the SDK) to you or to users generally at Google's sole discretion, without prior notice to you.
-
-3.7 Nothing in the License Agreement gives you a right to use any of Google's trade names, trademarks, service marks, logos, domain names, or other distinctive brand features.
-
-3.8 You agree that you will not remove, obscure, or alter any proprietary rights notices (including copyright and trademark notices) that may be affixed to or contained within the SDK.
-
-
-<h3>4. Use of the SDK by You</h3>
-4.1 Google agrees that it obtains no right, title or interest from you (or your licensors) under the License Agreement in or to any software applications that you develop using the SDK, including any intellectual property rights that subsist in those applications.
-
-4.2 You agree to use the SDK and write applications only for purposes that are permitted by (a) the License Agreement and (b) any applicable law, regulation or generally accepted practices or guidelines in the relevant jurisdictions (including any laws regarding the export of data or software to and from the United States or other relevant countries).
-
-4.3 You agree that if you use the SDK to develop applications for general public users, you will protect the privacy and legal rights of those users. If the users provide you with user names, passwords, or other login information or personal information, you must make the users aware that the information will be available to your application, and you must provide legally adequate privacy notice and protection for those users. If your application stores personal or sensitive information provided by users, it must do so securely. If the user provides your application with Google Account information, your application may only use that information to access the user's Google Account when, and for the limited purposes for which, the user has given you permission to do so.
-
-4.4 You agree that you will not engage in any activity with the SDK, including the development or distribution of an application, that interferes with, disrupts, damages, or accesses in an unauthorized manner the servers, networks, or other properties or services of any third party including, but not limited to, Google or any mobile communications carrier.
-
-4.5 You agree that you are solely responsible for (and that Google has no responsibility to you or to any third party for) any data, content, or resources that you create, transmit or display through Android and/or applications for Android, and for the consequences of your actions (including any loss or damage which Google may suffer) by doing so.
-
-4.6 You agree that you are solely responsible for (and that Google has no responsibility to you or to any third party for) any breach of your obligations under the License Agreement, any applicable third party contract or Terms of Service, or any applicable law or regulation, and for the consequences (including any loss or damage which Google or any third party may suffer) of any such breach.
-
-
-<h3>5. Your Developer Credentials</h3>
-5.1 You agree that you are responsible for maintaining the confidentiality of any developer credentials that may be issued to you by Google or which you may choose yourself and that you will be solely responsible for all applications that are developed under your developer credentials.
-
-
-<h3>6. Privacy and Information</h3>
-6.1 In order to continually innovate and improve the SDK, Google may collect certain usage statistics from the software including but not limited to a unique identifier, associated IP address, version number of the software, and information on which tools and/or services in the SDK are being used and how they are being used. Before any of this information is collected, the SDK will notify you and seek your consent. If you withhold consent, the information will not be collected.
-
-6.2 The data collected is examined in the aggregate to improve the SDK and is maintained in accordance with Google's Privacy Policy.
-
-
-<h3>7. Third Party Applications</h3>
-7.1 If you use the SDK to run applications developed by a third party or that access data, content or resources provided by a third party, you agree that Google is not responsible for those applications, data, content, or resources. You understand that all data, content or resources which you may access through such third party applications are the sole responsibility of the person from which they originated and that Google is not liable for any loss or damage that you may experience as a result of the use or access of any of those third party applications, data, content, or resources.
-
-7.2 You should be aware the data, content, and resources presented to you through such a third party application may be protected by intellectual property rights which are owned by the providers (or by other persons or companies on their behalf). You may not modify, rent, lease, loan, sell, distribute or create derivative works based on these data, content, or resources (either in whole or in part) unless you have been specifically given permission to do so by the relevant owners.
-
-7.3 You acknowledge that your use of such third party applications, data, content, or resources may be subject to separate terms between you and the relevant third party. In that case, the License Agreement does not affect your legal relationship with these third parties.
-
-
-<h3>8. Using Android APIs</h3>
-8.1 Google Data APIs
-
-8.1.1 If you use any API to retrieve data from Google, you acknowledge that the data may be protected by intellectual property rights which are owned by Google or those parties that provide the data (or by other persons or companies on their behalf). Your use of any such API may be subject to additional Terms of Service. You may not modify, rent, lease, loan, sell, distribute or create derivative works based on this data (either in whole or in part) unless allowed by the relevant Terms of Service.
-
-8.1.2 If you use any API to retrieve a user's data from Google, you acknowledge and agree that you shall retrieve data only with the user's explicit consent and only when, and for the limited purposes for which, the user has given you permission to do so.
-
-
-<h3>9. Terminating this License Agreement</h3>
-9.1 The License Agreement will continue to apply until terminated by either you or Google as set out below.
-
-9.2 If you want to terminate the License Agreement, you may do so by ceasing your use of the SDK and any relevant developer credentials.
-
-9.3 Google may at any time, terminate the License Agreement with you if:
-(A) you have breached any provision of the License Agreement; or
-(B) Google is required to do so by law; or
-(C) the partner with whom Google offered certain parts of SDK (such as APIs) to you has terminated its relationship with Google or ceased to offer certain parts of the SDK to you; or
-(D) Google decides to no longer provide the SDK or certain parts of the SDK to users in the country in which you are resident or from which you use the service, or the provision of the SDK or certain SDK services to you by Google is, in Google's sole discretion, no longer commercially viable.
-
-9.4 When the License Agreement comes to an end, all of the legal rights, obligations and liabilities that you and Google have benefited from, been subject to (or which have accrued over time whilst the License Agreement has been in force) or which are expressed to continue indefinitely, shall be unaffected by this cessation, and the provisions of paragraph 14.7 shall continue to apply to such rights, obligations and liabilities indefinitely.
-
-
-<h3>10. DISCLAIMER OF WARRANTIES</h3>
-10.1 YOU EXPRESSLY UNDERSTAND AND AGREE THAT YOUR USE OF THE SDK IS AT YOUR SOLE RISK AND THAT THE SDK IS PROVIDED "AS IS" AND "AS AVAILABLE" WITHOUT WARRANTY OF ANY KIND FROM GOOGLE.
-
-10.2 YOUR USE OF THE SDK AND ANY MATERIAL DOWNLOADED OR OTHERWISE OBTAINED THROUGH THE USE OF THE SDK IS AT YOUR OWN DISCRETION AND RISK AND YOU ARE SOLELY RESPONSIBLE FOR ANY DAMAGE TO YOUR COMPUTER SYSTEM OR OTHER DEVICE OR LOSS OF DATA THAT RESULTS FROM SUCH USE.
-
-10.3 GOOGLE FURTHER EXPRESSLY DISCLAIMS ALL WARRANTIES AND CONDITIONS OF ANY KIND, WHETHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO THE IMPLIED WARRANTIES AND CONDITIONS OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
-
-
-<h3>11. LIMITATION OF LIABILITY</h3>
-11.1 YOU EXPRESSLY UNDERSTAND AND AGREE THAT GOOGLE, ITS SUBSIDIARIES AND AFFILIATES, AND ITS LICENSORS SHALL NOT BE LIABLE TO YOU UNDER ANY THEORY OF LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, CONSEQUENTIAL OR EXEMPLARY DAMAGES THAT MAY BE INCURRED BY YOU, INCLUDING ANY LOSS OF DATA, WHETHER OR NOT GOOGLE OR ITS REPRESENTATIVES HAVE BEEN ADVISED OF OR SHOULD HAVE BEEN AWARE OF THE POSSIBILITY OF ANY SUCH LOSSES ARISING.
-
-
-<h3>12. Indemnification</h3>
-12.1 To the maximum extent permitted by law, you agree to defend, indemnify and hold harmless Google, its affiliates and their respective directors, officers, employees and agents from and against any and all claims, actions, suits or proceedings, as well as any and all losses, liabilities, damages, costs and expenses (including reasonable attorneys fees) arising out of or accruing from (a) your use of the SDK, (b) any application you develop on the SDK that infringes any copyright, trademark, trade secret, trade dress, patent or other intellectual property right of any person or defames any person or violates their rights of publicity or privacy, and (c) any non-compliance by you with the License Agreement.
-
-
-<h3>13. Changes to the License Agreement</h3>
-13.1 Google may make changes to the License Agreement as it distributes new versions of the SDK. When these changes are made, Google will make a new version of the License Agreement available on the website where the SDK is made available.
-
-
-<h3>14. General Legal Terms</h3>
-14.1 The License Agreement constitutes the whole legal agreement between you and Google and governs your use of the SDK (excluding any services which Google may provide to you under a separate written agreement), and completely replaces any prior agreements between you and Google in relation to the SDK.
-
-14.2 You agree that if Google does not exercise or enforce any legal right or remedy which is contained in the License Agreement (or which Google has the benefit of under any applicable law), this will not be taken to be a formal waiver of Google's rights and that those rights or remedies will still be available to Google.
-
-14.3 If any court of law, having the jurisdiction to decide on this matter, rules that any provision of the License Agreement is invalid, then that provision will be removed from the License Agreement without affecting the rest of the License Agreement. The remaining provisions of the License Agreement will continue to be valid and enforceable.
-
-14.4 You acknowledge and agree that each member of the group of companies of which Google is the parent shall be third party beneficiaries to the License Agreement and that such other companies shall be entitled to directly enforce, and rely upon, any provision of the License Agreement that confers a benefit on (or rights in favor of) them. Other than this, no other person or company shall be third party beneficiaries to the License Agreement.
-
-14.5 EXPORT RESTRICTIONS. THE SDK IS SUBJECT TO UNITED STATES EXPORT LAWS AND REGULATIONS. YOU MUST COMPLY WITH ALL DOMESTIC AND INTERNATIONAL EXPORT LAWS AND REGULATIONS THAT APPLY TO THE SDK. THESE LAWS INCLUDE RESTRICTIONS ON DESTINATIONS, END USERS AND END USE.
-
-14.6 The rights granted in the License Agreement may not be assigned or transferred by either you or Google without the prior written approval of the other party. Neither you nor Google shall be permitted to delegate their responsibilities or obligations under the License Agreement without the prior written approval of the other party.
-
-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><!-- close sdk-terms -->
-
-
-
-<div id="next-steps" style="display:none;position:absolute;width:inherit">
-  <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 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 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>
-
-<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">
-
-<div class="col-2of6">
-<h4>Windows</h4>
-<ul>
-<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 (500 MB for IDE + 1.5 GB for
-Android SDK and emulator system image). 4 GB Recommended.</li>
-<li>1280 x 800  minimum screen resolution</li>
-<li>Java Development Kit (JDK) 8</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>
-</ul>
-</div>
-
-<div class="col-2of6">
-<h4>Mac</h4>
-<ul>
-<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 (500 MB for IDE + 1.5 GB for
-Android SDK and emulator system image). 4 GB Recommended.</li>
-<li>1280 x 800 minimum screen resolution</li>
-<li>Java Development Kit (JDK) 8</li>
-</ul>
-</div>
-
-<div class="col-2of6">
-<h4>Linux</h4>
-<ul>
-<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>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 (500 MB for IDE + 1.5 GB for
-Android SDK and emulator system image). 4 GB Recommended.</li>
-<li>1280 x 800 minimum screen resolution</li>
-<li>Java Development Kit (JDK) 8</li>
-</ul>
-</div>
-
-</div>
-</div>
-
-</section>
-
diff --git a/docs/html/sdk/installing/bundle.jd b/docs/html/sdk/installing/bundle.jd
deleted file mode 100644
index 22bdd11..0000000
--- a/docs/html/sdk/installing/bundle.jd
+++ /dev/null
@@ -1,3 +0,0 @@
-page.title=Setting Up the ADT Bundle
-
-@jd:body
diff --git a/docs/html/sdk/installing/create-project.jd b/docs/html/sdk/installing/create-project.jd
deleted file mode 100644
index a4de85c..0000000
--- a/docs/html/sdk/installing/create-project.jd
+++ /dev/null
@@ -1,377 +0,0 @@
-page.title=Managing Projects with Android Studio
-
-@jd:body
-
- <div id="qv-wrapper">
-    <div id="qv">
-      <h2>In this document</h2>
-
-      <ol>
-        <li><a href="#CreatingAProject">Creating an Android Project</a></li>
-
-        <li><a href="#CreatingAModule">Creating an Android Module</a></li>
-
-        <li><a href="#SettingUpLibraryModule">Setting up a Library Module</a></li>
-
-        <li><a href="#ReferencingLibraryModule">Referencing a Library Module</a></li>
-
-        <li><a href="#ReferencingAppEngModule">Setting up an App Eng Module</a></li>
-
-        <li><a href="#ProjectView">Using the Android Project View</a></li>
-
-      </ol>
-
-    </div>
-  </div>
-
-
-<p>Android Studio provides graphical tools for creating and managing Android projects, which
-contain everything that define your Android apps, from app source code to build configurations and
-test code. Each project contains one or more different types of modules, such as
-  application modules, library modules, and test modules.</p>
-
-<p>This guide explains how to create Android projects and different modules using
-<a href="{@docRoot}tools/studio/index.html">Android Studio</a>.
-For more information about the Android project structure and module types, read <a href=
-"{@docRoot}tools/projects/index.html">Managing Projects Overview</a>.</p>
-
-
-
-<h2 id="CreatingAProject">Creating an Android Project</h2>
-
-<p>Android Studio makes it easy to create Android apps for several form factors, such as phone,
-tablet, TV, Wear, and Google Glass. The <em>New Project</em> wizard lets you choose the form factors
-for your app and populates the project structure with everything you need to get started.</p>
-
-<p>Follow the steps in this section to create a project in Android Studio.</p>
-
-<h3 id="Step1CreatingAProject">Step 1: Create a New Project</h2>
-
-<p>If you didn't have a project opened, Android Studio shows the Welcome screen.
-To create a new project, click <strong>New Project</strong>.</p>
-
-<p>If you had a project opened, Android Studio shows the development environment.
-To create a new project, click <strong>File</strong> > <strong>New Project</strong>.</p>
-
-<p>The next window lets you configure the name of your app, the package name, and the location
-of your project.</p>
-
-<img src="{@docRoot}images/tools/wizard2.png" alt="" width="500" height="381">
-<p class="img-caption"><strong>Figure 1.</strong> Choose a name for your project.</p>
-
-<p>Enter the values for your project then click <strong>Next</strong>.</p>
-
-<h3 id="Step2SelectFormFactor">Step 2: Select Form Factors and API Level</h2>
-
-<p>The next window lets you select the form factors supported by your app, such as phone, tablet,
-TV, Wear, and Google Glass. The selected form factors become the application modules within the
-project. For each form factor, you can also select the API Level for that app. To get more information,
-click <strong>Help me choose</strong>.</p>
-
-<img src="{@docRoot}images/tools/wizard4.png" alt="" width="750" height="510">
-<p class="img-caption"><strong>Figure 2.</strong> Select the API Level.</p>
-
-<p>The API Level window shows the distribution of mobile devices running each version of Android,
-as shown in figure 3. Click on an API level to see a list of features introduced in the corresponding
-version of Android. This helps you choose the minimum API Level that has all the features that
-your apps needs, so you can reach as many devices as possible. Then click <strong>OK</strong>.</p>
-
-<img src="{@docRoot}images/tools/wizard3.png" alt="" width="500" height="480">
-<p class="img-caption"><strong>Figure 3.</strong> Choose form factors for your app.</p>
-
-<p>Then, on the Form Factors Window, click <strong>Next</strong>.</p>
-
-
-<h3 id="Step3AddActivity">Step 3: Add an Activity</h2>
-
-<p>The next screen lets you select an activity type to add to your app, as shown in figure 4.
-This screen displays a different set of activities for each of the form factors you selected earlier.</p>
-
-<img src="{@docRoot}images/tools/wizard5.png" alt="" width="720" height="504">
-<p class="img-caption"><strong>Figure 4.</strong> Add an activity to your app.</p>
-
-<p>Choose an activity type then click <strong>Next</strong>.</p>
-
- <p class="note"><strong>Note:</strong> If you choose "Add No Activity", click <strong>Finish</strong>
- to create the project.</p>
-
-
-<h3 id="Step4ConfigureActivity">Step 4: Configure Your Activity</h2>
-
-<p>The next screen lets you configure the activity to add to your app, as shown in figure 5.</p>
-
-<img src="{@docRoot}images/tools/wizard6.png" alt="" width="450" height="385">
-<p class="img-caption"><strong>Figure 5.</strong> Choose a name for your activity.</p>
-
-<p>Enter the activity name, the layout name, and the activity title. Then click
-<strong>Finish</strong>.</p>
-
-
-<h3 id="Step5DevelopYourApp">Step 5: Develop Your App</h2>
-
-<p>Android Studio creates the default structure for your project and opens the development
-environment. If your app supports more than one form factor, Android Studio creates a module folder
-with complete source files for each of them as shown in figure 6.</p>
-
-<img src="{@docRoot}images/tools/wizard7.png" alt="" width="750" height="509">
-<p class="img-caption"><strong>Figure 6.</strong> The default project structure for a mobile app.</p>
-
-<p>Now you are ready to develop your app. For more information, see the following links:</p>
-
-<ul>
-<li><a href="{@docRoot}training/">Training Lessons</a></li>
-<li><a href="{@docRoot}training/building-wearables.html">Building Apps for Wearables</a></li>
-<li><a href="{@docRoot}tv/">Android TV</a></li>
-<li><a href="https://developers.google.com/glass/">Google Glass</a></li>
-</ul>
-
-
-  <h2 id="CreatingAModule">Creating an Android Module</h2>
-
-  <p>Android application modules contain the <code>src/main/</code>, <code>AndroidManifest.xml</code>,
-  <code>build.gradle</code>, build output and other files you need to generate your app's APK files.
-  Android Studio provides a <em>New Module Wizard</em> that you can use to quickly create a new
-  Android module (or a module from existing code) based on selected application settings, such as
-  minimum SDK level and activity template.</p>
-
-  <p>To create a new module, select <strong>File</strong> &gt; <strong>New</strong> &gt;
-  <strong>Module</strong>. Select the desire module type then click Next to enter the basic module
-  settings:</p>
-
-      <ul>
-        <li>Enter an <strong>Application Name</strong>. This name is used as the title of your
-        application launcher icon when it is installed on a device.</li>
-
-        <li>Enter a <strong>Module Name</strong>. This text is used as the name of the folder where
-        your Java-based activity files are stored.</li>
-
-        <li>Enter a <strong>Package Name</strong> and <strong>Package Location</strong>. This class
-        package namespace creates the initial
-        package structure for your applications code files and is added as the
-        <a href="{@docRoot}guide/topics/manifest/manifest-element.html#package">{@code package}</a>
-        attribute in your application's
-        <a href="{@docRoot}guide/topics/manifest/manifest-intro.html">Android manifest file</a>.
-        This manifest value serves as the unique identifier for your application app when you
-        distribute it to users. The package name must follow the same rules as packages in the Java
-        programming language.</li>
-
-        <li>Select the <strong>Minimum required SDK</strong>.
-        This setting indicates the lowest version of the Android platform that your application
-        supports for the selected form factor. This value sets the
-        <code>minSdkVersion</code> attribute in the build.gradle file.</li>
-
-          <p class="note"><strong>Note:</strong> You can manually change the minimum and target SDK
-          for your module at any time: Double-click the module's build.gradle in the Project Explorer,
-          set the <strong>targetSdkVersion</strong> and  <em>targetSdkVersion</em> in the
-          <em>defaultConfig</em> section.</p>
-
-
-        <li>Select a <strong>Target SDK</strong>. This setting indicates the highest version of
-        Android with which you have tested with your application and sets the
-        <a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#target">{@code
-        targetSdkVersion}</a> attribute in your application's' build.gradle file.
-
-
-        <li>Select a <strong>Compile With</strong> API version. This setting specifies what version
-        of the SDK to compile your project against. We strongly recommend using the most recent
-        version of the API.</li>
-
-        <li>Select a <strong>Language Level</strong> API version. This setting specifies what version
-        of the SDK to compile your project against. We strongly recommend using the most recent
-        version of the API.</li>
-
-        <li>Select a <strong>Theme</strong>. This setting specifies which standard Android
-        <a href="{@docRoot}design/style/themes.html">visual style</a> is applied to your
-        application. Select activity template. For more information about Android code templates, see
-        <a href="{@docRoot}tools/projects/templates.html">Using Code Templates</a>. Leave the
-        <strong>Create activity</strong> option checked so you can start your
-        application with some essential components. </li>
-
-        <li>Click the check box for the required Support Libraries then click <strong>Next</strong>.</li>
-
-        <li>In the <strong>Configure Launcher Icon</strong> page, create an icon and options, then click
-        <strong>Next</strong>.</li>
-
-        <li>In the <strong>Create Activity</strong> page, select activity template then click
-        <strong>Next</strong>. For more information about Android code templates, see
-        <a href="{@docRoot}tools/projects/templates.html">Using Code Templates</a>.
-        </li>
-
-        <li>Review the new module settings then click <strong>Finish</strong>.</li>
-
-     </ul>
-
-    <p>The wizard creates a new Android application module according to the options you have chosen.</p>
-
-
-
-  <h2 id="SettingUpLibraryModule">Setting up a Library Module</h2>
-
-  <p>A library module is a standard Android module, so you can create a new one in the same way
-  as you would a new application module, using the New Module wizard and selecting <em>Android
-  Library</em> as the module type. The created library module will appear in your project view
-  along with the other modules. </p>
-
-  <p> You can easily change an existing application module to a library module by changing the
-  plugin assignment in the <strong>build.gradle</strong> file to <em>com.android.library</em>.</p>
-
-<pre>
-apply plugin: 'com.android.application'
-
-android {...}
-</pre>
-
-<pre>
-apply plugin: 'com.android.library'
-
-android {...}
-</pre>
-
-
-  <h3>Adding a dependency on a library module</h3>
-
-  <p>The library dependency can be declared in the module's manifest file or in the
-  <strong<build.gradle</strong> file. </p>
-
-  <p>A library modules's manifest file must declare all of the shared components that it includes,
-  just as would a standard Android application. For more information, see the documentation for
-  <a href="{@docRoot}guide/topics/manifest/manifest-intro.html">AndroidManifest.xml</a>.</p>
-
-  <p>For example, the <a href=
-  "{@docRoot}resources/samples/TicTacToeLib/AndroidManifest.html">TicTacToeLib</a> example library
-  project declares the activity <code>GameActivity</code>:</p>
-  <pre>
-&lt;manifest&gt;
-  ...
-  &lt;application&gt;
-    ...
-    &lt;activity android:name="GameActivity" /&gt;
-    ...
-  &lt;/application&gt;
-&lt;/manifest&gt;
-</pre>
-
-
-<p>To add the dependency declaration to the build file, edit the build file for the <code>app</code>
-module (<code>app/build.gradle</code>) and add a dependency on the <code>lib</code> module:</p>
-
-<pre>
-...
-dependencies {
-    ...
-    compile project(":lib")
-}
-</pre>
-
-<p>In this example, the <code>lib</code> module can still be built and tested independently, and
-the build system creates an AAR package for it that you could reuse in other projects.</p>
-
-<p class="note"><strong>Note:</strong> The library settings in the <code>app/build.gradle</code>
-file will override any shared library resources declared in the manifest file.</p>
-
-
-  <h2 id="ReferencingLibraryModule">Referencing a library module</h2>
-
-  <p>If you are developing an application and want to include the shared code or resources from a
-  library module, you can also do so easily by adding a reference to the library module in the
-  module's dependency page.</p>
-
-  <p>To add a reference to a library module, follow these steps:</p>
-
-  <ol>
-    <li>Make sure that both the module library and the application module that depends on it are
-      in your project. If one of the modules is missing, import it into your project.</li>
-
-    <li>In the project view, right-click the dependent module and select
-    <strong>Open</strong> > <strong>Module Settings</strong>.</li>
-
-    <li>Right-click the plus icon to add a new dependencies.
-    <p>If you are adding references to multiple libraries, you can set their relative
-    priority (and merge order) by selecting a library and using the <strong>Up</strong> and
-    <strong>Down</strong> controls. The tools merge the referenced libraries with your application
-    starting from lowest priority (bottom of the list) to highest (top of the list). If more than one
-    library defines the same resource ID, the tools select the resource from the library with higher
-    priority. The application itself has highest priority and its resources are always used in
-    preference to identical resource IDs defined in libraries.</p>
-    </li>
-
-    <li>Use the <strong>Scope</strong> drop-down to select how the dependency will be applied.</li>
-
-    <li>Click <strong>Apply</strong> to create the dependency and <strong>OK</strong> to close the
-    <strong>Project Structure</strong> window.</li>
-  </ol>
-
-  <p>Android Studio rebuilds the module, including the contents of the library module the next time
-  the project or module is built.</p>
-
-
-
-  <h3>Declaring library components in the manifest file</h3>
-
-  <p>In the manifest file of the application module, you must add declarations of all components
-  that the application will use that are imported from a library module. For example, you must
-  declare any <code>&lt;activity&gt;</code>, <code>&lt;service&gt;</code>,
-  <code>&lt;receiver&gt;</code>, <code>&lt;provider&gt;</code>, and so on, as well as
-  <code>&lt;permission&gt;</code>, <code>&lt;uses-library&gt;</code>, and similar elements.</p>
-
-  <p>Declarations should reference the library components by their fully-qualified package names,
-  where appropriate.</p>
-
-  <p>For example, the <a href=
-  "{@docRoot}resources/samples/TicTacToeMain/AndroidManifest.html">TicTacToeMain</a> example
-  application declares the library activity <code>GameActivity</code> like this:</p>
-  <pre>
-&lt;manifest&gt;
-  ...
-  &lt;application&gt;
-    ...
-    &lt;activity android:name="com.example.android.tictactoe.library.GameActivity" /&gt;
-    ...
-  &lt;/application&gt;
-&lt;/manifest&gt;
-</pre>
-
-  <p>For more information about the manifest file, see the documentation for <a href=
-  "{@docRoot}guide/topics/manifest/manifest-intro.html">AndroidManifest.xml</a>.</p>
-
-
- <h2 id="ProjectView">Using the Android Project View</h2>
-
-
-<p>The Android project view in Android Studio shows a flattened version of your project's structure
-that provides quick access to the key source files of Android projects and helps you work with
-the new <a href="{@docRoot}sdk/installing/studio-build.html">Gradle-based build system</a>. The
-Android project view:</p>
-
-<ul>
-<li>Groups the build files for all modules at the top level of the project hierarchy.</li>
-<li>Shows the most important source directories at the top level of the module hierarchy.</li>
-<li>Groups all the manifest files for each module.</li>
-<li>Shows resource files from all Gradle source sets.</li>
-<li>Groups resource files for different locales, orientations, and screen types in a single group
-per resource type.</li>
-</ul>
-
-<p>The <em>Android</em> project view is enabled by default and shows all the build files at
-the top level of the project hierarchy under <strong>Gradle Scripts</strong>. The project module
-appears as a folder at the top level of the project hierarchy and contains these three elements
-at the top level:</p>
-
-<ul>
-<li><code>manifests/</code> - Manifest files for the module.</li>
-<li><code>java/</code> - Source files for the module.</li>
-<li><code>res/</code> - Resource files for the module.</li>
-</ul>
-
-<p>Notice how the Android project view groups all instances of the
-<code>ic_launcher.png</code> resource for different screen densities under the same element.</p>
-
-<p class="note"><strong>Note:</strong> The Android project view shows a hierarchy that helps you
-work with Android projects by providing a flattened structure that highlights the most commonly
-used files while developing Android applications. However, the project structure on disk differs
-from this representation and maintains the traditional project structure.</p>
-
-<img src="{@docRoot}images/tools/projectview-p1.png" alt="" style="width:240px" "/>
-&nbsp;&nbsp;&nbsp;
-<img src="{@docRoot}images/tools/projectview-p2.png" alt="" style="width:240px" " />
-<p class="img-caption"><strong>Figure 10:</strong> Android and Traditional project view </p>
diff --git a/docs/html/sdk/installing/index.jd b/docs/html/sdk/installing/index.jd
deleted file mode 100644
index f776c9a..0000000
--- a/docs/html/sdk/installing/index.jd
+++ /dev/null
@@ -1,199 +0,0 @@
-page.title=Install Android Studio
-excludeFromSuggestions=true
-
-page.tags=sdk tools
-
-@jd:body
-
-
-<div style="float:right;margin:0 0 20px 20px;border:1px solid #ccc;padding:10px">
-<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, make sure you have JDK 8 or higher installed. To check which version
-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>
-
-
-<div id="system-windows" style="display:none">
-
-<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>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>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 will tell you
-with a pop-up, or you can check yourself by clicking <strong>Help &gt;
-Check for Update</strong>.</p>
-
-
-</div>
-<!-- end windows -->
-
-
-
-<!-- #### MAC INSTRUCTIONS #### -->
-
-<div id="system-mac" style="display:none">
-
-<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 will guide you though the rest of the
-    setup procedures in just a few clicks,
-    which includes downloading various 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 will tell you
-with a pop-up, or you can check yourself by clicking <strong>Android Studio &gt;
-Check for Updates</strong>.</p>
-
-</div>
-<!-- end mac -->
-
-
-
-<!-- #### LINUX INSTRUCTIONS #### -->
-
-<div id="system-linux" style="display:none">
-
-
-<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 will guide you though the rest of the
-    setup procedures in just a few clicks,
-    which includes downloading various Android SDK components
-    that are required for development.</li>
-  </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-linux.mp4" type="video/mp4">
-</video>
-
-<p>As new tools and other APIs become available, Android Studio will tell you
-with a pop-up, or you can check yourself by clicking <strong>Help &gt;
-Check for Update</strong>.</p>
-
-  <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>
-
-</div><!-- end linux -->
-
-
-
-
-<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>
-<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="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><!-- end cols -->
-
-
-<script>
-/** 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);
-}
-
-// 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/migrate.jd b/docs/html/sdk/installing/migrate.jd
deleted file mode 100644
index 61e6798..0000000
--- a/docs/html/sdk/installing/migrate.jd
+++ /dev/null
@@ -1,267 +0,0 @@
-page.title=Migrating from Eclipse ADT
-
-@jd:body
-
-<div id="qv-wrapper">
-<div id="qv">
-
-
-<h2>In this document</h2>
-<ol>
-  <li><a href="#overview">Migration Overview</a></li>
-  <li><a href="#prerequisites">Migration Prerequisites</a></li>
-  <li><a href="#migrate">Importing Projects to Android Studio</a></li>
-  <li><a href="#post-migration">Validating imported projects</a></li>
-</ol>
-
-
-<h2>See also</h2>
-<ul>
-  <li><a href="{@docRoot}tools/studio/eclipse-transition-guide.html">
-    Transition Guide for Eclipse ADT</a></li>
-  <li><a href="http://confluence.jetbrains.com/display/IntelliJIDEA/FAQ+on+Migrating+to+IntelliJ+IDEA"
-    class="external-link">IntelliJ FAQ on migrating to IntelliJ IDEA</a></li>
-  <li><a href="http://confluence.jetbrains.com/display/IntelliJIDEA/IntelliJ+IDEA+for+Eclipse+Users"
-    class="external-link">IntelliJ IDEA for Eclipse users</a></li>
-  <li><a href="{@docRoot}tools/studio/index.html">Android Studio Overview</a></li>
-</ul>
-</div>
-</div>
-
-
-<p>Migrating from Eclipse ADT to Android Studio requires adapting to a new project structure,
-build system, and IDE functionality. To simplify the migration process, Android Studio provides an
-import tool so you can quickly transition your Eclipse ADT workspaces and Ant build scripts to
-Android Studio projects and <a href="http://www.gradle.org">Gradle</a>-based build files.</p>
-
-<p>This document provides an overview of the migration process and walks you
-through a sample import procedure. For more information about Android Studio features and the
-Gradle-based build system, see <a href="{@docRoot}tools/studio/index.html">Android Studio Overview</a>
-and <a href="{@docRoot}tools/building/configuring-gradle.html">Configuring Gradle Builds</a>.</p>
-
-
-
-<h2 id="overview">Migration Overview </h2>
-<p>Migrating from Eclipse to Android Studio requires that you change the structure of your
-development projects, move to a new build system, and use a new user interface. Here are some of
-the key changes you should be aware of as you prepare to migrate to Android Studio:</p>
-<ul>
-  <li><strong>Project files</strong>
-    <p>Android Studio uses a different project structure. Each Eclipse ADT
-    project is called a module in Android Studio. Each instance of Android
-    Studio contains a project with one or more app modules. For more information see,
-    <a href="{@docRoot}tools/studio/eclipse-transition-guide.html#project-structure">Project
-    Structure</a>.</p></li>
-
-  <li><strong>Manifest settings</strong>
-    <p>Several elements in the <code>AndroidManifest.xml</code> file are now properties in the
-    <code>defaultConfig</code> and <code>productFlavors</code> blocks in the
-    <code>build.gradle</code> file. These elements are still valid manifest entries and may
-    appear in manifests from older projects, imported projects, dependencies, and libraries. For
-    more information see,
-    <a href="{@docRoot}tools/studio/eclipse-transition-guide.html#manifest-settings">Manifest
-    Settings</a>.</p></li>
-
-  <li><strong>Dependencies</strong>
-    <p>Library dependencies are handled differently in Android Studio, using Gradle dependency
-    declarations and Maven dependencies for well-known local source and binary libraries with
-    Maven coordinates.  For more information see,
-    <a href="{@docRoot}tools/studio/eclipse-transition-guide.html#dependencies">Dependencies</a></p>
-    </li>
-
-  <li><strong>Test code</strong>
-    <p>With Eclipse ADT, test code is written in separate projects and integrated through the
-    <code>&lt;instrumentation&gt;</code> element in your manifest file. Android Studio provides a
-    <code>AndroidTest</code> folder within your project so you can easily add and maintain your test
-    code within the same project view. JUnit tests can also be configured to run locally to reduce
-    testing cycles.</p></li>
-
-  <li><strong>Gradle-based build system</strong>
-    <p>In place of XML-based Ant build files, Android Studio supports Gradle build files, which
-    use the Gradle Domain Specific Language (DSL) for ease of extensibility and customization.
-    The Android Studio build system also supports
-    <a href="{@docRoot}tools/building/configuring-gradle.html#workBuildVariants"> build variants</a>,
-    which are combinations of <code>productFlavor</code> and <code>buildTypes</code>, to customize
-    your build outputs.</p></li>
-
-  <li><strong>User interface</strong>
-    <p>Android Studio provides an intuitive interface and menu options based on the
-    <a class="external-link" href="https://www.jetbrains.com/idea/" target="_blank">IntelliJ IDEA</a>
-    IDE. To become familiar with the IDE basics, such as navigation, code completion, and keyboard
-    shortcuts, see
-    <a class="external-link" href="https://www.jetbrains.com/idea/help/intellij-idea-quick-start-guide.html"
-    target="_blank">IntelliJ IDEA Quick Start Guide</a>.</p></li>
-
-  <li><strong>Developer tools versioning</strong>
-    <p>Android Studio updates independently of the Gradle-based build system so different build
-    settings can be applied across different versions of command line, Android Studio, and
-    continuous integration builds. For more information, see
-    <a href="{@docRoot}tools/building/configuring-gradle.html">Configuring Gradle Builds</a>.</p>
-    </li>
-</ul>
-
-
-
-
-<h2 id="prerequisites">Migration Prerequisites</h2>
-<p>Before migrating your Eclipse ADT app to Android Studio, review the following steps to make
-sure your project is ready for conversion, and verify you have the tool configuration you need in
-Android Studio:</p>
-
-<ul>
- <li>In Eclipse ADT:
-   <ul>
-     <li>Make sure the Eclipse ADT root directory contains the <code>AndroidManifest.xml</code>
-       file. Also, the root directory must contain either the <code>.project</code> and
-       <code>.classpath</code> files from Eclipse or the <code>res/</code> and <code>src/</code>
-       directories.</li>
-     <li>Build your project to ensure your latest workspace and project updates are saved and
-       included in the import.</li>
-     <li>Comment out any references to Eclipse ADT workspace library files in the
-       <code>project.properties</code> or <code>.classpath</code> files for import. You can
-       add these references in the <code>build.gradle</code> file after the import. For more
-       information, see
-       <a href="{@docRoot}tools/building/configuring-gradle.html">Configuring Gradle Builds</a>.</li>
-     <li>It may be useful to record your workspace directory, path variables, and any actual path
-       maps that could be used to specify any unresolved relative paths, path variables, and
-       linked resource references. Android Studio allows you to manually specify any unresolved
-       paths during the import process.</li>
-   </ul>
- </li>
- <li>In Android Studio:
-   <ul>
-    <li>Make a note of any third-party Eclipse ADT plugins in use and check for equivalent features
-      in Android Studio or search for a compatible plugin in the
-      <a href="https://plugins.jetbrains.com/?androidstudio" class="external-link">IntelliJ Android
-      Studio Plugins</a> repository. Use the <strong>File &gt; Settings &gt; Plugins</strong> menu
-      option to manage plugins in Android Studio. Android Studio does not migrate any third-party
-      Eclipse ADT plugins.</li>
-    <li>If you plan to run Android Studio behind a firewall, be sure to set the proxy settings for
-      Android Studio and the SDK Manager. Android Studio requires an internet connection for
-      Setup Wizard synchronization, 3rd-party library access, access to remote repositories,
-      <a href="http://www.gradle.org" class="external-link">Gradle</a>
-      initialization and synchronization, and Android Studio version updates. For more information,
-      see <a href="{@docRoot}tools/studio/index.html#proxy">Proxy Settings</a>.</li>
-    <li>Use the <strong>File &gt; Settings &gt; System Settings</strong> menu option to verify the
-      current version and, if necessary, update Android Studio to the latest version from the
-      stable channel. To install Android Studio, please visit the
-      <a href="{@docRoot}sdk/index.html">Android Studio download page</a>.</li>
-    </ul>
-  </li>
- </ul>
-
-
-
-<h2 id="migrate">Importing Projects to Android Studio</h2>
-<p>Android Studio provides a function for importing Eclipse ADT projects, which creates a new
-Android Studio project and app modules based on your current
-Eclipse ADT workspace and projects. No changes are made to your Eclipse project files. The Eclipse
-ADT workspace becomes a new Android Studio project, and each Eclipse ADT project within the workspace
-becomes a new Android Studio module. Each instance of Android Studio contains a project with one or
-more app modules.</p>
-
-<p>After selecting an Eclipse ADT project to import, Android Studio creates the Android
-Studio project structure and app modules, generates the new Gradle-based build files and settings,
-and configures the required dependencies. The import options also allow you to enter your workspace
-directory and any actual path maps to handle any unresolved relative paths, path variables, and
-linked resource references.</p>
-
-<p>Depending on the structure of your Eclipse ADT development project, you should select specific
-files for importing:</p>
-<ul>
-<li>For workspaces with multiple projects, select the project folder for each Eclipse ADT
-  project individually to import the projects into the same Android Studio project. Android
-  Studio combines the Eclipse ADT projects into a single Android Studio project with different app
-  modules for each imported project.</li>
-
-<li>For Eclipse ADT projects with separate test projects, select the test project folder for
-  import. Android Studio imports the test project and then follows the dependency chain to import
-  the source project and any project dependencies.</li>
-
- <li>If Eclipse ADT projects share dependencies within the same workspace, import each
-   project individually into Android Studio. Android Studio maintains the shared dependencies
-   across the newly created modules as part of the import process.</li>
-</ul>
-
-<p>To import a project to Android Studio:</p>
-
-<ol>
- <li>Start Android Studio and close any open Android Studio projects.</li>
- <li>From the Android Studio menu select <strong>File &gt; New &gt; Import Project</strong>.
-  <p>Alternatively, from the <em>Welcome</em> screen, select <strong>Import project
-  (Eclipse ADT, Gradle, etc.)</strong>.</p></li>
- <li>Select the Eclipse ADT project folder with the <code>AndroidManifest.xml</code> file
-   and click <strong>Ok</strong>.
-   <p> <img src="{@docRoot}images/tools/studio-select-project-forimport.png" alt="" /></p>
- </li>
- <li>Select the destination folder and click <strong>Next</strong>.
-   <p> <img src="{@docRoot}images/tools/studio-import-destination-dir.png" alt="" /></p></li>
- <li>Select the import options and click <strong>Finish</strong>.
-   <p>The import process prompts to migrate any library and project dependencies to Android Studio,
-   and add the dependency declarations to the <code>build.gradle</code> file. The import process
-   also replaces any well-known source libraries, binary libraries, and JAR files that have known
-   Maven coordinates with Maven dependencies, so you no longer need to maintain these dependencies
-   manually. The import options also allow you to enter your workspace directory and any actual
-   path maps to handle any unresolved relative paths, path variables, and linked resource
-   references.</p>
-   <p> <img src="{@docRoot}images/tools/studio-import-options.png" alt="" /></p></li>
-
- <li>Android Studio imports the app and displays the project import summary. Review the summary
-   for details about the project restructuring and the import process.
-    <p> <img src="{@docRoot}images/tools/studio-import-summary.png"/></p>
- </li>
-</ol>
-
-<p>After importing the project from Eclipse ADT to the new Android Studio project and module
-structure, each app module folder in Android Studio contains the complete source set for that
-module, including the {@code src/main} and {@code src/androidTest} directories, resources, build
-file, and Android manifest. Before starting app development, you should resolve any issues shown in
-the project import summary to make sure the project re-structuring and import process completed
-properly.</p>
-
-
-
-<h3 id="post-migration">Validating imported projects</h3>
-<p>After completing the import process, use the Android Studio <strong>Build</strong> and
-<strong>Run</strong> menu options to build your project and verify the output. If your project
-is not building properly, check the following settings:</p>
-
-<ul>
-<ul>
-  <li>Use the <strong>Android SDK</strong> button in Android Studio to launch the <a href=
-  "{@docRoot}tools/help/sdk-manager.html">SDK Manager</a> and verify the installed versions of SDK
-  tools, build tools, and platform match the settings for your Eclipse ADT project. Android Studio
-  inherits the SDK Manager and JDK settings from your imported Eclipse project.
-  </li>
-  <li>Use the <strong>File &gt; Project Structure</strong> menu option to verify additional
-    Android Studio settings:
-   <ul>
-     <li>Under <em>SDK Location</em> verify Android Studio has access to the correct SDK and
-       JDK locations and versions. </li>
-     <li>Under <em>Project</em> verify the Gradle version, Android Plugin version, and related
-       repositories.</li>
-     <li>Under <em>Modules</em> verify the app and module settings, such as signing configuration
-       and library dependencies. </li>
-   </ul>
- </li>
- <li>If your project depends on another project, make sure that dependency is defined properly in
-  the <code>build.gradle</code> file in the app module folder.</li>
-</ul>
-
-
-<p>If there still are unexpected issues when building and running your project in Android
-Studio after you have checked these settings, consider modifying the Eclipse ADT project and
-re-starting the import process. Importing an Eclipse ADT project to Android Studio creates a new
-Android Studio project and does not impact the existing Eclipse ADT project. </p>
-
-
-
-<p>To get started using Android Studio, review the
-<a href="{@docRoot}tools/studio/index.html">Android Studio</a> features and
-<a href="http://www.gradle.org">Gradle</a>-based build system to become familiar with the new
-project and module structure, flexible build settings, and other advanced Android development
-capabilities. For a comparison of Eclipse ADT and Android Studio features and usage, see
-<a href="{@docRoot}tools/studio/eclipse-transition-guide.html">Transitioning to Android Studio from
-Eclipse</a>. For specific Android Studio how-to documentation, see the pages in the
-<a href="{@docRoot}tools/workflow/index.html">Workflow</a> section.
-</p>
diff --git a/docs/html/sdk/installing/studio-androidview.jd b/docs/html/sdk/installing/studio-androidview.jd
deleted file mode 100644
index 09aeaba..0000000
--- a/docs/html/sdk/installing/studio-androidview.jd
+++ /dev/null
@@ -1,55 +0,0 @@
-page.title=Using the Android Project View
-
-@jd:body
-
-
-<p>The Android project view in Android Studio shows a flattened version of your project's structure
-that provides quick access to the key source files of Android projects and helps you work with
-the new <a href="{@docRoot}sdk/installing/studio-build.html">Gradle-based build system</a>. The
-Android project view:</p>
-
-<ul>
-<li>Groups the build files for all modules at the top level of the project hierarchy.</li>
-<li>Shows the most important source directories at the top level of the module hierarchy.</li>
-<li>Groups all the manifest files for each module.</li>
-<li>Shows resource files from all Gradle source sets.</li>
-<li>Groups resource files for different locales, orientations, and screen types in a single group
-per resource type.</li>
-</ul>
-
-<div style="float:right;margin-left:30px;width:240px">
-<img src="{@docRoot}images/tools/projectview01.png" alt="" width="220" height="264"/>
-<p class="img-caption"><strong>Figure 1:</strong> Show the Android project view.</p>
-</div>
-
-
-<h2 id="enable-view">Enable the Android Project View</h2>
-
-<p>The Android project view is not yet enabled by default. To show the Android project view,
-click <strong>Project</strong> and select <strong>Android</strong>, as shown in Figure 1.</p>
-
-
-<h2 id="project-view">Use the Android Project View</h2>
-
-<p>The Android project view shows all the build files at the top level of the project hierarchy
-under <strong>Gradle Scripts</strong>. Each project module appears as a folder at the top
-level of the project hierarchy and contains these three elements at the top level:</p>
-
-<ul>
-<li><code>java/</code> - Source files for the module.</li>
-<li><code>manifests/</code> - Manifest files for the module.</li>
-<li><code>res/</code> - Resource files for the module.</li>
-</ul>
-
-<p>Figure 2 shows how the Android project view groups all the instances of the
-<code>ic_launcher.png</code> resource for different screen densities under the same element.</p>
-
-<p class="note"><strong>Note:</strong> The Android project view shows a hierarchy that helps you
-work with Android projects by providing a flattened structure that highlights the most commonly
-used files while developing Android applications. However, the project structure on disk differs
-from this representation.</p>
-
-<img src="{@docRoot}images/tools/projectview03.png" alt=""
-     style="margin-top:10px" width="650" height="508"/>
-<p class="img-caption"><strong>Figure 2:</strong> The traditional project view (left) and the
-Android project view (right).</p>
\ No newline at end of file
diff --git a/docs/html/sdk/installing/studio-build.jd b/docs/html/sdk/installing/studio-build.jd
deleted file mode 100755
index a486817..0000000
--- a/docs/html/sdk/installing/studio-build.jd
+++ /dev/null
@@ -1,104 +0,0 @@
-page.title=Build System Overview
-
-@jd:body
-
-<div id="qv-wrapper">
-<div id="qv">
-<h2>In this document</h2>
-<ol>
-     <li><a href="#detailed-build">A Detailed Look at the Build Process</a> </li>
-</ol>
-<h2>See also</h2>
-<ul>
-   <li><a href="{@docRoot}sdk/installing/studio.html">
-   Getting Started with Android Studio</a></li>
-   <li><a href="{@docRoot}tools/studio/index.html">Android Studio Basics</a></li>
-</div>
-</div>
-
-<a class="notice-developers-video" href="https://www.youtube.com/watch?v=LCJAgPkpmR0#t=504">
-<div>
-    <h3>Video</h3>
-    <p>The New Android SDK Build System</p>
-</div>
-</a>
-
-<p>The Android build system is the toolkit you use to build, test, run and package
-your apps. The build system can run as an integrated tool from the Android Studio menu and
-independently from the command line. You can use the features of the build system to:</p>
-
-<ul>
-    <li>Customize, configure, and extend the build process.</li>
-    <li>Create multiple APKs for your app with different features using the same project and
-    modules.</li>
-    <li>Reuse code and resources across source sets.</li>
-</ul>
-
-<p>The flexibility of the Android build system enables you to achieve all of this without
-modifying your app's core source files. To build an Android Studio project, see
-<a href="{@docRoot}tools/building/building-studio.html">Building and Running from Android Studio</a>.
-To configure custom build settings in an Android Studio project, see
-<a href="{@docRoot}tools/building/configuring-gradle.html">Configuring Gradle Builds</a>.</p>
-
-
-<h2 id="detailed-build">A Detailed Look at the Build Process</h2>
-
-<p>The build process involves many tools and processes that generate intermediate files on the
-way to producing an <code>.apk</code>. If you are developing in Android Studio, the complete build
-process is done every time you run the Gradle build task for your project or modules. The build
-process is very flexible so it's useful, however, to understand what is happening under the hood
-since much of the build process is configurable and extensible. The following diagram depicts the
-different tools and processes that are involved in a build:</p>
-
-  <img src="{@docRoot}images/build.png" />
-
-<p>The general process for a typical build is outlined below. The build system merges all the
-resources from the configured product flavors, build types, and dependencies. If different
-folders contain resources with the same name or setting, the following override priority order is:
-dependencies override build types, which override product flavors, which override the main source
-directory.</p>
-
-  <ul>
-
-    <li>The Android Asset Packaging Tool (aapt) takes your application resource files, such as the
-    <code>AndroidManifest.xml</code> file and the XML files for your Activities, and compiles them.
-    An <code>R.java</code> is also produced so you can reference your resources from your Java code.</li>
-
-    <li>The aidl tool converts any <code>.aidl</code> interfaces that you have into Java interfaces.</li>
-
-    <li>All of your Java code, including the <code>R.java</code> and <code>.aidl</code> files, are
-    compiled by the Java compiler and .class files are output.</li>
-
-    <li>The dex tool converts the .class files to Dalvik byte code. Any 3rd party libraries and
-    .class files that you have included in your module build are also converted into <code>.dex</code>
-    files so that they can be packaged into the final <code>.apk</code> file.</li>
-
-    <li>All non-compiled resources (such as images), compiled resources, and the .dex files are
-    sent to the apkbuilder tool to be packaged into an <code>.apk</code> file.</li>
-
-    <li>Once the <code>.apk</code> is built, it must be signed with either a debug or release key
-    before it can be installed to a device.</li>
-
-    <li>Finally, if the application is being signed in release mode, you must align the
-    <code>.apk</code> with the zipalign tool. Aligning the final <code>.apk</code> decreases memory
-    usage when the application is -running on a device.</li>
-  </ul>
-
-<p class="note"><b>Note:</b> Apps are limited to a 65K method reference limit. If your app reaches
-this limit, the build process outputs the following error message:
-
-<pre>Unable to execute dex: method ID not in [0, 0xffff]: 65536.</pre>
-
-To avoid this error, see
-<a href="{@docRoot}tools/building/multidex.html">Building Apps with Over 65K Methods</a>.
-</p>
-
-
-<h3>Build output</h3>
-
-<p>The build generates an APK for each build variant in the <code>app/build</code> folder:
-the <code>app/build/outputs/apk/</code> directory contains packages named
-<code>app-&lt;flavor>-&lt;buildtype>.apk</code>; for example, <code>app-full-release.apk</code> and
-<code>app-demo-debug.apk</code>.</p>
-
-
diff --git a/docs/html/sdk/installing/studio-layout.jd b/docs/html/sdk/installing/studio-layout.jd
deleted file mode 100644
index 60cbcb3..0000000
--- a/docs/html/sdk/installing/studio-layout.jd
+++ /dev/null
@@ -1,157 +0,0 @@
-page.title=Using the Layout Editor
-
-@jd:body
-
-<div id="qv-wrapper">
-<div id="qv">
-<h2>See also</h2>
-<ul>
-<li><a href="{@docRoot}sdk/installing/studio.html">
-Getting Started with Android Studio</a></li>
-<li><a href="{@docRoot}sdk/installing/studio-tips.html">
-Android Studio Tips and Tricks</a></li>
-<li><a href="{@docRoot}sdk/installing/migrate.html">
-Migrating from Eclipse</a></li>
-</div>
-</div>
-
-<a class="notice-developers-video"
-href="https://developers.google.com/events/io/sessions/324603352">
-<div>
-    <h3>Video</h3>
-    <p>What's New in Android Developer Tools</p>
-</div>
-</a>
-
-<p>Android Studio offers an advanced layout editor that allows you to drag-and-drop widgets
-into your layout and preview your layout while editing the XML.</p>
-
-<p>Within the layout editor, you can switch between the <strong>Text</strong> view, where
-you edit the XML file as text, and the <strong>Design</strong> view. Just click the
-appropriate tab at the bottom of the window to display the desired editor.</p>
-
-<h2>Editing in the Text View</h2>
-
-<p>You can use the <strong>Text</strong> view to edit your layout file. This section describes
-some of the features that are available in the <strong>Text</strong> view.</p>
-
-<h3>Preview</h3>
-
-<p>While editing in the <strong>Text</strong> view, you can preview the layout on devices
-by opening the <strong>Preview</strong> pane available on the right side of the window.
-Within the <strong>Preview</strong> pane, you can modify the preview by changing various
-options at the top of the pane, including the preview device, layout theme, platform
-version and more. To see a preview of how your app would look with a particular device
-skin, click the preview icon
-<img src="{@docRoot}images/tools/as-preview-icon.png" style="vertical-align:bottom;margin:0;height:19px" />
-and choose the desired device, such as Nexus 4:</p>
-
-<img src="{@docRoot}images/tools/as-preview-chrome.png" alt="" />
-<p class="img-caption"><strong>Figure 1.</strong> Previewing your app.</p>
-
-<p>To preview the layout on multiple devices simultaneously, select <strong>Preview All
-Screen Sizes</strong> from the device drop-down. </p>
-
-<p>When you click in the preview image, the layout editor highlights the corresponding
-section in the XML, and vice-versa.</p>
-
-<h3>Interactive error detection and recovery</h3>
-
-<p>As you edit the <strong>Text</strong> view of your layout XML file, Android Studio flags
-typos and offers assistance.</p>
-
-<p>For example, suppose you are adding a button, and you misspell it as &quot;Buttonn&quot;.
-Android Studio helps you to correct it by displaying an error such as the following,
-where you can click on &quot;Change to Button&quot; to fix the error in the XML file:</p>
-
-<img src="{@docRoot}images/tools/as-error.png" alt="" />
-
-<p class="img-caption"><strong>Figure 2.</strong> Flagging errors.</p>
-
-<p>Android Studio also prompts you to supply missing information. For example, suppose you
-start adding a fragment to your layout XML file. First of all, Android Studio displays
-auto-complete suggestions as you type. Once it becomes clear that you are adding a fragment,
-Android Studio displays an error panel with links that you can click to supply the missing
-attributes. Clicking &quot;Automatically add all missing attributes&quot; in this case
-does just that&mdash;it completes the fragment definition in your layout XML file:</p>
-
-<img src="{@docRoot}images/tools/as-frag-ex.png" alt="" />
-
-<p class="img-caption"><strong>Figure 3.</strong> Supplying missing information</p>
-
-<h3>Picking a theme</h3>
-
-<p>To pick a theme for your app, click the Theme icon
-<img src="{@docRoot}images/tools/as-theme-icon.png" style="vertical-align:bottom;margin:0;height:19px" />.
-</p>
-
-<p>This displays the <strong>Select Theme</strong> dialog, where you can search for a
-particular theme and/or select one from the list on the right hand side. The theme you
-choose will be reflected in the previewed image.</p>
-
-<img src="{@docRoot}images/tools/as-theme-db.png" alt="" />
-
-<p class="img-caption"><strong>Figure 4.</strong> Specifying a theme.</p>
-
-<h3>Localization</h3>
-
-<p>Android Studio provides built-in localization support. When you click the
-localization icon
-<img src="{@docRoot}images/tools/as-i18n-icon.png" style="vertical-align:bottom;margin:0;height:19px" />,
-you can select a particular locale, add and edit translations, preview the locales your
-app supports (all locales or just a single locale), and preview right-to-left layout for
-languages that are RTL.</p>
-
-<p>See <a href="{@docRoot}training/basics/supporting-devices/languages.html">Supporting
-Different Languages</a> for a description of how to support different locales in your app.</p>
-<p>For example, here is a preview of a &quot;Hello World&quot; app for the
-<img src="{@docRoot}images/tools/as-fr-icon.png" style="vertical-align:bottom;margin:0;height:19px" />
-locale:</p>
-
-<img src="{@docRoot}images/tools/as-fr-device.png" alt="" />
-<p class="img-caption"><strong>Figure 5.</strong> Previewing locales.</p>
-
-<h2>Editing in the Design View</h2>
-
-<p>You can switch to the graphical editor by clicking <strong>Design</strong> at the
-bottom of the window. While editing in the <strong>Design</strong> view, you can show and
-hide the widgets available to drag-and-drop by clicking <strong>Palette</strong> on the
-left side of the window. Clicking <strong>Designer</strong> on the right side of the
-window reveals a panel with a layout hierarchy and a list of properties for each view in
-the layout.</p>
-
-<p>When you drag a widget into the graphical layout for your app, the display changes to
-help you place the widget. What you see depends on the type of layout. For example, if
-you're dragging a widget into a {@link android.widget.FrameLayout}, it displays a grid to
-help you place the widget, as shown in figure 6:</p>
-
-<img src="{@docRoot}images/tools/as-grid-layout.png" alt="" />
-
-<p class="img-caption"><strong>Figure 6.</strong> Using the grid layout to place a widget.</p>
-
-<p>Within the graphical editor, you can rearrange your app's UI by dragging widgets to
-the desired location.</p>
-
-<h3>Multi-API Version Rendering</h3>
-
-<p>Android Studio supports multi-API version rendering. When you click the Android version icon <img src="{@docRoot}images/tools/as-api-level-preview.png" style="vertical-align:bottom;margin:0;height:19px" /> in the <b>Design</b> view,
-Android Studio allows you to preview your Android layouts across multiple Android API levels.
-</p>
-
-<p><img src="{@docRoot}images/tools/studio-api-version-rendering.png" /></p>
-    <p class="img-caption"><strong>Figure 7.</strong> Multi-API version rendering.</p>
-
-<h3>Taking a snapshot</h3>
-
-<p>When you run your app on a connected device, you can take a snapshot of it by clicking
-the camera icon
-<img src="{@docRoot}images/tools/as-camera-icon.png" style="vertical-align:bottom;margin:0;height:19px" />
-to the left of the logging
-panel (at the bottom of the window by default). This takes a snapshot of your running app
-(or whatever is currently displayed on your device) and displays it in a window. Check
-<strong>Frame Screenshot</strong> to show your screenshot within the device skin of your
-choice. You can also specify whether you want the image to have screen glare and/or a drop
-shadow. Once you have the desired effect, you can save the image.</p>
-
-<p>You can use the same process to create a snapshot of your app's preview. Just click the
-camera icon in the preview area and follow the steps for adding a device skin.</p>
diff --git a/docs/html/sdk/installing/studio-tips.jd b/docs/html/sdk/installing/studio-tips.jd
deleted file mode 100644
index 4cd6f8c..0000000
--- a/docs/html/sdk/installing/studio-tips.jd
+++ /dev/null
@@ -1,342 +0,0 @@
-page.title=Android Studio Tips and Tricks
-page.image=images/tools/studio-previewall.png
-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">
-<div id="qv">
-
-    <h2>In this document</h2>
-    <ol>
-      <li><a href="#productivity-features">Productivity Shortcuts</a></li>
-      <li><a href="#intellij">Working with IntelliJ</a></li>
-      <li><a href="#key-commands">Key Commands</a></li>
-    </ol>
-
-  <h2>See also</h2>
-  <ol>
-    <li><a href="{@docRoot}sdk/index.html">Download Android Studio</a></li>
-    <li><a href="http://wiki.jetbrains.net/intellij/Android">IntelliJ IDEA Android Tutorials</a></li>
-    <li><a href="http://confluence.jetbrains.com/display/IntelliJIDEA/FAQ+on+Migrating+to+IntelliJ+IDEA">IntelliJ FAQ on migrating to IntelliJ IDEA</a></li>
-  </ol>
-
-</div>
-</div>
-
-<p>If you're unfamiliar with using Android Studio and the IntelliJ IDEA interface, this page
-provides some tips to help you get started with some of the most common tasks and productivity
-enhancements. </p>
-
-
-<h2 id="productivity-features">Productivity Shortcuts</h2>
-
-<p>Android Studio includes a number of features to help you be more productive in your coding.
-This section notes a few of the key features to help you work quickly and efficiently.
-</p>
-
-
-<h3>Smart Rendering</h3>
-<p>With smart rendering, Android Studio displays links for quick fixes to rendering errors.
-For example, if you add a button to the layout without specifying the <em>width</em> and
-<em>height</em> attributes, Android Studio displays the rendering message <em>Automatically
-add all missing attributes</em>. Clicking the message adds the missing attributes to the layout.</p>
-
-
-<h3> Bitmap rendering in the debugger</h3>
-<p>While debugging, you can now right-click on bitmap variables in your app and invoke
-<em>View Bitmap</em>. This fetches the associated data from the debugged process and renders
-the bitmap in the debugger. </p>
-<p><img src="{@docRoot}images/tools/studio-bitmap-rendering.png" style="width:350px"/></p>
-<p class="img-caption"><strong>Figure 1.</strong> Bitmap Rendering</p>
-
-
-<h3>Creating new files</h3>
-<p>You can quickly add new code and resource files by clicking the appropriate directory in the
-<strong>Project</strong> pane and pressing <code>ALT + INSERT</code> on Windows and Linux or
-<code>COMMAND + N</code> on Mac. Based on the type of directory selected, Android Studio
-offers to create the appropriate file type.</p>
-
-<p>For example, if you select a layout directory, press <code>ALT + INSERT</code> on Windows,
-and select <strong>Layout resource file</strong>, a dialog opens so you can name the file
-(you can exclude the {@code .xml} suffix) and choose a root view element. The editor then
-switches to the layout design editor so you can begin designing your layout.</p>
-
-
-<h3>Output window message filtering</h3>
-<p>When checking build results, you can filter messages by <em>message type</em> to quickly
-locate messages of interest.</p>
-<img src="{@docRoot}images/tools/studio-outputwindowmsgfiltering.png" style="width:200px"style="width:200px" />
-<p class="img-caption"><strong>Figure 2.</strong> Filter Build Messages</p>
-
-
-<h3>Hierarchical parent setting</h3>
-<p>The activity parent can now be set in the Activity Wizard when creating a new
-activity. Setting a <em>hierarchal parent</em> sets the {@code Up} button to automatically
-appear in the app's Action bar when viewing a child activity, so the {@code Up}
-button no longer needs to be manually specified in the <em>menu.xml</em> file.</p>
-
-
-<h3>Creating layouts</h3>
-<p>Android Studio offers an advanced layout editor that allows you to drag-and-drop widgets
-into your layout and preview your layout while editing the XML.</p>
-
-<p>While editing in the <strong>Text</strong> view, you can preview the layout on devices by
-opening the <strong>Preview</strong> pane available on the right side of the window. Within the
-Preview pane, you can modify the preview by changing various options at the top of the pane,
-including the preview device, layout theme, platform version and more. To preview the layout on
-multiple devices simultaneously, select <strong>Preview All Screen Sizes</strong> from the
-device drop-down.</p>
-<p><img src="{@docRoot}images/tools/studio-previewall.png" style="width:350px"/></p>
-<p class="img-caption"><strong>Figure 3.</strong> Preview All Screens</p>
-
-<p>You can switch to the graphical editor by clicking <strong>Design</strong> at the
-bottom of the window. While editing in the Design view, you can show and hide the
-widgets available to drag-and-drop by clicking <strong>Palette</strong> on the left side of the
-window. Clicking <strong>Designer</strong> on the right side of the window reveals a panel
-with a layout hierarchy and a list of properties for each view in the layout.</p>
-
-
-<h3>Annotations</h3>
-<p>Android Studio provides coding assistance for using annotations from the
-{@link android.support.annotation Support-Annotations} library, part of the
-Support Repository.
-
-Adding a dependency for this library enables you to decorate your code with annotations to help
-catch bugs, such as null pointer exceptions and resource type conflicts. You can also create
-enumerated annotations to, for example, check that a passed parameter value matches a value from
-a defined set of constants. For more information, see
-<a href="{@docRoot}tools/debugging/annotations.html#annotations">Improving Code Inspection with
-Annotations</a>.
-</p>
-
-
-<h3>Java class decompiling</h3>
-<p>Android Studio allows you to look at what’s inside Java libraries when you don’t have access
-to the source code. </p>
-
-<p>The decompiler is built into Android Studio for easy access. To use this feature, right-click
-a class, method, or field from a library for which you do not have source file access and select
-<strong>decompile</strong>.</p> The decompiled source code appears. </p>
-
-<p>To adjust the Java decompiler settings, select
-<strong>File > Settings > Other Settings > Java Decompiler</strong>. </p>
-
-
-<h3>Debugging and performance enhancements</h3>
-<p>Android Studio offers debugging and performance enhancements such as:</p>
-<ul>
-  <li>Custom keymaps. To modify the current keymap, choose
-   <strong>File &gt; Settings &gt; Keymap</strong>.  </li>
-  <li>Support for high density (Retina) displays on Windows and Linux.  </li>
-  <li>Scratch files for quick prototyping without creating any project files.
-   <p>Choose <strong>Tools &gt; New Scratch File</strong> to open a scratch file to quickly
-   build and run code prototypes. Together with Android Studio coding assistance, scratch
-   files allow you to quickly run and debug code updates with the support of all file operations.
-   By embedding code created with scripting languages, you can run your code from within the
-   scratch file.</p>
-  </li>
-</ul>
-
-
-<h3 id="live-template">Live templates</h3>
-<p>Live templates allow you to enter code snippets for fast insertion and completion of small chunks
-of code. To insert a live template, type the template abbreviations and press the
-Tab key. Android Studio inserts the code snippet associated with the template into
-your code. </p>
-
-<p>For example, entering the <code>newInstance</code> abbreviation followed by the
-Tab key inserts the code for a new fragment instance with argument placeholders. </p>
-
-<pre>
-public static $fragment$ newInstance($args$) {
-    $nullChecks$
-    Bundle args = new Bundle();
-    $addArgs$
-    $fragment$ fragment = new $fragment$();
-    fragment.setArguments(args);
-    return fragment;
-}
-</pre>
-
-<p>Similarly, the <code>fbc</code> abbreviation inserts a <code>findViewById</code> call along
-with cast and resource id syntax. </p>
-
-<pre>
-() findViewById(R.id.); 
-</pre>
-
-<p>Use the <strong>File &gt; Settings &gt; Editor &gt; Live Templates</strong> menu option to
-display the full list of supported live templates and customize the inserted code.  </p>
-
-
-
-<h2 id="intellij">Working with IntelliJ-based Coding Practices</h3>
-
-<p>This section list just a few of the code editing
-practices you should consider using when creating Android Studio apps. </p>
-
-<p>For complete user documentation for the IntelliJ IDEA interface (upon which Android Studio
-is based), refer to the
-<a href="http://www.jetbrains.com/idea/documentation/index.jsp">IntelliJ IDEA documentation</a>.</p>
-
-
-<h3><em>Alt + Enter</em> key binding</h3>
-<p>For quick fixes to coding errors, the IntelliJ powered IDE implements the <em>Alt + Enter</em>
-key binding to fix errors (missing imports, variable assignments, missing references, etc) when
-possible, and if not, suggest the most probable solution. </p>
-
-
-<h3><em>Ctrl + D</em> key binding</h3>
-<p>The <em>Ctrl + D</em> key binding is great for quickly duplicating code lines or fragments.
-Simply select the desired line or fragment and enter this key binding. </p>
-
-
-<h3>Navigate menu</h3>
-<p>In case you're not familiar with an API class, file or symbol, the <em>Navigate</em> menu lets
-you jump directly to the class of a method or field name without having to search through
-individual classes. </p>
-
-
-<h3>Inspection scopes</h3>
-<p>Scopes set the color of code segments for easy code identification and location. For example,
-you can set a scope to identify all code related to a specific action bar.   </p>
-
-
-<h3>Injecting languages</h3>
-<p>With language injection, the Android Studio IDE allows you to work with islands of different
-languages embedded in the source code. This extends the syntax, error highlighting and coding
-assistance to the embedded language. This can be especially useful for checking regular expression
-values inline and validating XML.</p>
-
-
-<h3>Code folding</h3>
-<p>This allows you to selectively hide and display sections of the code for readability. For
-example, resource expressions or code for a nested class can be folded or hidden in to one line
-to make the outer class structure easier to read. The inner class can be later expanded for
-updates. </p>
-
-
-<h3>Image and color preview</h3>
-<p>When referencing images and icons in your code, a preview of the image or icon appears
-(in actual size at different densities) in the code margin to help you verify the image or icon
-reference. Pressing {@code F1} with the preview image or icon selected displays resource asset
-details, such as the <em>dp</em> settings.   </p>
-
-
-<h3>Quick F1 documentation</h3>
-<p>You can now inspect theme attributes using <strong>View > Quick Documentation</strong>
-(<strong>F1</strong>),
-see the theme inheritance hierarchy, and resolve values for the various attributes.</p>
-
-<p>If you invoke <strong> View > Quick Documentation</strong> (usually bound to F1) on the theme
-attribute <em>?android:textAppearanceLarge</em>, you will see the theme inheritance hierarchy and
-resolved values for the various attributes that are pulled in.</p>
-
-
-
-<h3 id="key-commands">Keyboard Commands</h3>
-
-<p>The following tables list keyboard shortcuts for common operations.</p>
-
-<p class="note"><strong>Note:</strong> This section lists Android Studio keyboard shortcuts
-for the default keymap. To change the default keymap on Windows and Linux, go to
-<strong>File</strong> &gt; <strong>Settings</strong> &gt; <strong>Keymap</strong>. If you're
-using Mac OS X, update your keymap to use the Mac OS X 10.5+ version keymaps under
-<strong>Android Studio > Preferences > Keymap</strong>.</p>
-
-
-<p class="table-caption"><strong>Table 1.</strong> Programming key commands</p>
-<table>
-<tr><th>Action</th><th>Android Studio Key Command</th></tr>
-
-<tr>
-  <td>Command look-up (autocomplete command name)</td>
-  <td>CTRL + SHIFT + A</td>
-</tr>
-
-<tr>
-  <td>Project quick fix</td>
-  <td>ALT + ENTER</td>
-</tr>
-
-<tr>
-  <td>Reformat code</td>
-  <td>CTRL + ALT + L (Win)<br>
-      OPTION + CMD + L (Mac)</td>
-</tr>
-
-<tr>
-  <td>Show docs for selected API</td>
-  <td>CTRL + Q (Win)<br>
-      F1 (Mac)</td>
-</tr>
-
-<tr>
-  <td>Show parameters for selected method</td>
-  <td>CTRL + P</td>
-</tr>
-
-<tr>
-  <td>Generate method</td>
-  <td>ALT + Insert (Win)<br>
-      CMD + N (Mac)</td>
-</tr>
-
-<tr>
-  <td>Jump to source</td>
-  <td>F4 (Win)<br>
-      CMD + down-arrow (Mac)</td>
-</tr>
-
-<tr>
-  <td>Delete line</td>
-  <td>CTRL + Y (Win)<br>
-      CMD + Backspace (Mac)</td>
-</tr>
-
-<tr>
-  <td>Search by symbol name</td>
-  <td>CTRL + ALT + SHIFT + N (Win)<br>
-      OPTION + CMD + O (Mac)</td>
-</tr>
-
-</table>
-
-
-
-
-<p class="table-caption"><strong>Table 2.</strong> Project and editor key commands</p>
-<table>
-<tr><th>Action</th><th>Android Studio Key Command</th></tr>
-
-<tr>
-  <td>Build</td>
-  <td>CTRL + F9 (Win)<br>
-      CMD + F9 (Mac)</td>
-</tr>
-
-<tr>
-  <td>Build and run</td>
-  <td>SHIFT + F10 (Win)<br>
-      CTRL + R (Mac)</td>
-</tr>
-
-<tr>
-  <td>Toggle project visibility</td>
-  <td>ALT + 1 (Win)<br>
-      CMD + 1 (Mac)</td>
-</tr>
-
-<tr>
-  <td>Navigate open tabs</td>
-  <td>ALT + left-arrow; ALT + right-arrow (Win)<br>
-      CTRL + left-arrow; CTRL + right-arrow (Mac)</td>
-</tr>
-
-</table>
-
-<p>For a complete keymap reference guide, see the
-<a href="http://www.jetbrains.com/idea/documentation/index.jsp">IntelliJ IDEA</a>
-documentation.</p>
diff --git a/docs/html/sdk/sdk_vars.cs b/docs/html/sdk/sdk_vars.cs
deleted file mode 100644
index 449935e..0000000
--- a/docs/html/sdk/sdk_vars.cs
+++ /dev/null
@@ -1,62 +0,0 @@
-<?cs
-set:studio.version='1.5.1.0' ?><?cs
-set:studio.release.date='April 4, 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.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.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_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_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:sdk.linux_download='android-sdk_r24.4.1-linux.tgz' ?><?cs
-set:sdk.linux_bytes='326412652' ?><?cs
-set:sdk.linux_checksum='725bb360f0f7d04eaccff5a2d57abdd49061326d' ?><?cs
-
-set:sdk.mac_download='android-sdk_r24.4.1-macosx.zip' ?><?cs
-set:sdk.mac_bytes='102781947' ?><?cs
-set:sdk.mac_checksum='85a9cccb0b1f9e6f1f616335c5f07107553840cd' ?><?cs
-
-set:sdk.win_download='android-sdk_r24.4.1-windows.zip' ?><?cs
-set:sdk.win_bytes='199701062' ?><?cs
-set:sdk.win_checksum='66b6a6433053c152b22bf8cab19c0f3fef4eba49' ?><?cs
-set:sdk.win_installer='installer_r24.4.1-windows.exe' ?><?cs
-set:sdk.win_installer_bytes='151659917' ?><?cs
-set:sdk.win_installer_checksum='f9b59d72413649d31e633207e31f456443e7ea0b' ?><?cs
-
-
-set:ndk.mac64_download='android-ndk-r11c-darwin-x86_64.zip' ?><?cs
-set:ndk.mac64_bytes='772428792' ?><?cs
-set:ndk.mac64_checksum='4ce8e7ed8dfe08c5fe58aedf7f46be2a97564696' ?><?cs
-
-set:ndk.linux64_download='android-ndk-r11c-linux-x86_64.zip' ?><?cs
-set:ndk.linux64_bytes='794135138' ?><?cs
-set:ndk.linux64_checksum='de5ce9bddeee16fb6af2b9117e9566352aa7e279' ?><?cs
-
-set:ndk.win64_download='android-ndk-r11c-windows-x86_64.zip' ?><?cs
-set:ndk.win64_bytes='771407642' ?><?cs
-set:ndk.win64_checksum='3d89deb97b3191c7e5555f1313ad35059479f071' ?><?cs
-set:ndk.win32_download='android-ndk-r11c-windows-x86.zip' ?><?cs
-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/sdk/terms.jd b/docs/html/sdk/terms.jd
deleted file mode 100644
index 149c243..0000000
--- a/docs/html/sdk/terms.jd
+++ /dev/null
@@ -1,144 +0,0 @@
-page.title=Terms and Conditions
-hide_license_footer=true
-fullpage=1
-@jd:body
-
-<div class="wrap" style="width:940px;">
-
-<div class="sdk-terms fullsize" onfocus="this.blur()">
-<h1>Terms and Conditions</h1>
-
-This is the Android Software Development Kit License Agreement
-
-<h3>1. Introduction</h3>
-1.1 The Android Software Development Kit (referred to in the License Agreement as the "SDK" and specifically including the Android system files, packaged APIs, and Google APIs add-ons) is licensed to you subject to the terms of the License Agreement. The License Agreement forms a legally binding contract between you and Google in relation to your use of the SDK.
-
-1.2 "Android" means the Android software stack for devices, as made available under the Android Open Source Project, which is located at the following URL: http://source.android.com/, as updated from time to time.
-
-1.3 A "compatible implementation" means any Android device that (i) complies with the Android Compatibility Definition document, which can be found at the Android compatibility website (http://source.android.com/compatibility) and which may be updated from time to time; and (ii) successfully passes the Android Compatibility Test Suite (CTS).
-
-1.4 "Google" means Google Inc., a Delaware corporation with principal place of business at 1600 Amphitheatre Parkway, Mountain View, CA 94043, United States.
-
-
-<h3>2. Accepting this License Agreement</h3>
-2.1 In order to use the SDK, you must first agree to the License Agreement. You may not use the SDK if you do not accept the License Agreement.
-
-2.2 By clicking to accept, you hereby agree to the terms of the License Agreement.
-
-2.3 You may not use the SDK and may not accept the License Agreement if you are a person barred from receiving the SDK under the laws of the United States or other countries, including the country in which you are resident or from which you use the SDK.
-
-2.4 If you are agreeing to be bound by the License Agreement on behalf of your employer or other entity, you represent and warrant that you have full legal authority to bind your employer or such entity to the License Agreement. If you do not have the requisite authority, you may not accept the License Agreement or use the SDK on behalf of your employer or other entity.
-
-
-<h3>3. SDK License from Google</h3>
-3.1 Subject to the terms of the License Agreement, Google grants you a limited, worldwide, royalty-free, non-assignable, non-exclusive, and non-sublicensable license to use the SDK solely to develop applications for compatible implementations of Android.
-
-3.2 You may not use this SDK to develop applications for other platforms (including non-compatible implementations of Android) or to develop another SDK. You are of course free to develop applications for other platforms, including non-compatible implementations of Android, provided that this SDK is not used for that purpose.
-
-3.3 You agree that Google or third parties own all legal right, title and interest in and to the SDK, including any Intellectual Property Rights that subsist in the SDK. "Intellectual Property Rights" means any and all rights under patent law, copyright law, trade secret law, trademark law, and any and all other proprietary rights. Google reserves all rights not expressly granted to you.
-
-3.4 You may not use the SDK for any purpose not expressly permitted by the License Agreement.  Except to the extent required by applicable third party licenses, you may not: (a) copy (except for backup purposes), modify, adapt, redistribute, decompile, reverse engineer, disassemble, or create derivative works of the SDK or any part of the SDK; or (b) load any part of the SDK onto a mobile handset or any other hardware device except a personal computer, combine any part of the SDK with other software, or distribute any software or device incorporating a part of the SDK.
-
-3.5 Use, reproduction and distribution of components of the SDK licensed under an open source software license are governed solely by the terms of that open source software license and not the License Agreement.
-
-3.6 You agree that the form and nature of the SDK that Google provides may change without prior notice to you and that future versions of the SDK may be incompatible with applications developed on previous versions of the SDK. You agree that Google may stop (permanently or temporarily) providing the SDK (or any features within the SDK) to you or to users generally at Google's sole discretion, without prior notice to you.
-
-3.7 Nothing in the License Agreement gives you a right to use any of Google's trade names, trademarks, service marks, logos, domain names, or other distinctive brand features.
-
-3.8 You agree that you will not remove, obscure, or alter any proprietary rights notices (including copyright and trademark notices) that may be affixed to or contained within the SDK.
-
-
-<h3>4. Use of the SDK by You</h3>
-4.1 Google agrees that it obtains no right, title or interest from you (or your licensors) under the License Agreement in or to any software applications that you develop using the SDK, including any intellectual property rights that subsist in those applications.
-
-4.2 You agree to use the SDK and write applications only for purposes that are permitted by (a) the License Agreement and (b) any applicable law, regulation or generally accepted practices or guidelines in the relevant jurisdictions (including any laws regarding the export of data or software to and from the United States or other relevant countries).
-
-4.3 You agree that if you use the SDK to develop applications for general public users, you will protect the privacy and legal rights of those users. If the users provide you with user names, passwords, or other login information or personal information, you must make the users aware that the information will be available to your application, and you must provide legally adequate privacy notice and protection for those users. If your application stores personal or sensitive information provided by users, it must do so securely. If the user provides your application with Google Account information, your application may only use that information to access the user's Google Account when, and for the limited purposes for which, the user has given you permission to do so.
-
-4.4 You agree that you will not engage in any activity with the SDK, including the development or distribution of an application, that interferes with, disrupts, damages, or accesses in an unauthorized manner the servers, networks, or other properties or services of any third party including, but not limited to, Google or any mobile communications carrier.
-
-4.5 You agree that you are solely responsible for (and that Google has no responsibility to you or to any third party for) any data, content, or resources that you create, transmit or display through Android and/or applications for Android, and for the consequences of your actions (including any loss or damage which Google may suffer) by doing so.
-
-4.6 You agree that you are solely responsible for (and that Google has no responsibility to you or to any third party for) any breach of your obligations under the License Agreement, any applicable third party contract or Terms of Service, or any applicable law or regulation, and for the consequences (including any loss or damage which Google or any third party may suffer) of any such breach.
-
-
-<h3>5. Your Developer Credentials</h3>
-5.1 You agree that you are responsible for maintaining the confidentiality of any developer credentials that may be issued to you by Google or which you may choose yourself and that you will be solely responsible for all applications that are developed under your developer credentials.
-
-
-<h3>6. Privacy and Information</h3>
-6.1 In order to continually innovate and improve the SDK, Google may collect certain usage statistics from the software including but not limited to a unique identifier, associated IP address, version number of the software, and information on which tools and/or services in the SDK are being used and how they are being used. Before any of this information is collected, the SDK will notify you and seek your consent. If you withhold consent, the information will not be collected.
-
-6.2 The data collected is examined in the aggregate to improve the SDK and is maintained in accordance with Google's Privacy Policy.
-
-
-<h3>7. Third Party Applications</h3>
-7.1 If you use the SDK to run applications developed by a third party or that access data, content or resources provided by a third party, you agree that Google is not responsible for those applications, data, content, or resources. You understand that all data, content or resources which you may access through such third party applications are the sole responsibility of the person from which they originated and that Google is not liable for any loss or damage that you may experience as a result of the use or access of any of those third party applications, data, content, or resources.
-
-7.2 You should be aware the data, content, and resources presented to you through such a third party application may be protected by intellectual property rights which are owned by the providers (or by other persons or companies on their behalf). You may not modify, rent, lease, loan, sell, distribute or create derivative works based on these data, content, or resources (either in whole or in part) unless you have been specifically given permission to do so by the relevant owners.
-
-7.3 You acknowledge that your use of such third party applications, data, content, or resources may be subject to separate terms between you and the relevant third party. In that case, the License Agreement does not affect your legal relationship with these third parties.
-
-
-<h3>8. Using Android APIs</h3>
-8.1 Google Data APIs
-
-8.1.1 If you use any API to retrieve data from Google, you acknowledge that the data may be protected by intellectual property rights which are owned by Google or those parties that provide the data (or by other persons or companies on their behalf). Your use of any such API may be subject to additional Terms of Service. You may not modify, rent, lease, loan, sell, distribute or create derivative works based on this data (either in whole or in part) unless allowed by the relevant Terms of Service.
-
-8.1.2 If you use any API to retrieve a user's data from Google, you acknowledge and agree that you shall retrieve data only with the user's explicit consent and only when, and for the limited purposes for which, the user has given you permission to do so.
-
-
-<h3>9. Terminating this License Agreement</h3>
-9.1 The License Agreement will continue to apply until terminated by either you or Google as set out below.
-
-9.2 If you want to terminate the License Agreement, you may do so by ceasing your use of the SDK and any relevant developer credentials.
-
-9.3 Google may at any time, terminate the License Agreement with you if:
-(A) you have breached any provision of the License Agreement; or
-(B) Google is required to do so by law; or
-(C) the partner with whom Google offered certain parts of SDK (such as APIs) to you has terminated its relationship with Google or ceased to offer certain parts of the SDK to you; or
-(D) Google decides to no longer provide the SDK or certain parts of the SDK to users in the country in which you are resident or from which you use the service, or the provision of the SDK or certain SDK services to you by Google is, in Google's sole discretion, no longer commercially viable.
-
-9.4 When the License Agreement comes to an end, all of the legal rights, obligations and liabilities that you and Google have benefited from, been subject to (or which have accrued over time whilst the License Agreement has been in force) or which are expressed to continue indefinitely, shall be unaffected by this cessation, and the provisions of paragraph 14.7 shall continue to apply to such rights, obligations and liabilities indefinitely.
-
-
-<h3>10. DISCLAIMER OF WARRANTIES</h3>
-10.1 YOU EXPRESSLY UNDERSTAND AND AGREE THAT YOUR USE OF THE SDK IS AT YOUR SOLE RISK AND THAT THE SDK IS PROVIDED "AS IS" AND "AS AVAILABLE" WITHOUT WARRANTY OF ANY KIND FROM GOOGLE.
-
-10.2 YOUR USE OF THE SDK AND ANY MATERIAL DOWNLOADED OR OTHERWISE OBTAINED THROUGH THE USE OF THE SDK IS AT YOUR OWN DISCRETION AND RISK AND YOU ARE SOLELY RESPONSIBLE FOR ANY DAMAGE TO YOUR COMPUTER SYSTEM OR OTHER DEVICE OR LOSS OF DATA THAT RESULTS FROM SUCH USE.
-
-10.3 GOOGLE FURTHER EXPRESSLY DISCLAIMS ALL WARRANTIES AND CONDITIONS OF ANY KIND, WHETHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO THE IMPLIED WARRANTIES AND CONDITIONS OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
-
-
-<h3>11. LIMITATION OF LIABILITY</h3>
-11.1 YOU EXPRESSLY UNDERSTAND AND AGREE THAT GOOGLE, ITS SUBSIDIARIES AND AFFILIATES, AND ITS LICENSORS SHALL NOT BE LIABLE TO YOU UNDER ANY THEORY OF LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, CONSEQUENTIAL OR EXEMPLARY DAMAGES THAT MAY BE INCURRED BY YOU, INCLUDING ANY LOSS OF DATA, WHETHER OR NOT GOOGLE OR ITS REPRESENTATIVES HAVE BEEN ADVISED OF OR SHOULD HAVE BEEN AWARE OF THE POSSIBILITY OF ANY SUCH LOSSES ARISING.
-
-
-<h3>12. Indemnification</h3>
-12.1 To the maximum extent permitted by law, you agree to defend, indemnify and hold harmless Google, its affiliates and their respective directors, officers, employees and agents from and against any and all claims, actions, suits or proceedings, as well as any and all losses, liabilities, damages, costs and expenses (including reasonable attorneys fees) arising out of or accruing from (a) your use of the SDK, (b) any application you develop on the SDK that infringes any copyright, trademark, trade secret, trade dress, patent or other intellectual property right of any person or defames any person or violates their rights of publicity or privacy, and (c) any non-compliance by you with the License Agreement.
-
-
-<h3>13. Changes to the License Agreement</h3>
-13.1 Google may make changes to the License Agreement as it distributes new versions of the SDK. When these changes are made, Google will make a new version of the License Agreement available on the website where the SDK is made available.
-
-
-<h3>14. General Legal Terms</h3>
-14.1 The License Agreement constitutes the whole legal agreement between you and Google and governs your use of the SDK (excluding any services which Google may provide to you under a separate written agreement), and completely replaces any prior agreements between you and Google in relation to the SDK.
-
-14.2 You agree that if Google does not exercise or enforce any legal right or remedy which is contained in the License Agreement (or which Google has the benefit of under any applicable law), this will not be taken to be a formal waiver of Google's rights and that those rights or remedies will still be available to Google.
-
-14.3 If any court of law, having the jurisdiction to decide on this matter, rules that any provision of the License Agreement is invalid, then that provision will be removed from the License Agreement without affecting the rest of the License Agreement. The remaining provisions of the License Agreement will continue to be valid and enforceable.
-
-14.4 You acknowledge and agree that each member of the group of companies of which Google is the parent shall be third party beneficiaries to the License Agreement and that such other companies shall be entitled to directly enforce, and rely upon, any provision of the License Agreement that confers a benefit on (or rights in favor of) them. Other than this, no other person or company shall be third party beneficiaries to the License Agreement.
-
-14.5 EXPORT RESTRICTIONS. THE SDK IS SUBJECT TO UNITED STATES EXPORT LAWS AND REGULATIONS. YOU MUST COMPLY WITH ALL DOMESTIC AND INTERNATIONAL EXPORT LAWS AND REGULATIONS THAT APPLY TO THE SDK. THESE LAWS INCLUDE RESTRICTIONS ON DESTINATIONS, END USERS AND END USE.
-
-14.6 The rights granted in the License Agreement may not be assigned or transferred by either you or Google without the prior written approval of the other party. Neither you nor Google shall be permitted to delegate their responsibilities or obligations under the License Agreement without the prior written approval of the other party.
-
-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>
\ No newline at end of file
diff --git a/docs/html/sdk/win-usb.jd b/docs/html/sdk/win-usb.jd
deleted file mode 100644
index d4948eb..0000000
--- a/docs/html/sdk/win-usb.jd
+++ /dev/null
@@ -1,308 +0,0 @@
-page.title=Google USB Driver
-@jd:body
-
-
-
-<div style="position:relative;height:660px;">
-
-
-<div class="wrap" id="tos" style="position:absolute;display:none;width:inherit;">
-
-<div class="col-13" style="margin:0;">&nbsp;</div><!-- provides top margin for content -->
-
-
-<p class="sdk-terms-intro">Before downloading the Google USB Driver,
-you must agree to the following terms and conditions.</p>
-
-<div class="sdk-terms" onfocus="this.blur()">
-<h2 class="norule">Terms and Conditions</h2>
-This is the Android Software Development Kit License Agreement
-
-<h3>1. Introduction</h3>
-1.1 The Android Software Development Kit (referred to in the License Agreement as the "SDK" and specifically including the Android system files, packaged APIs, and Google APIs add-ons) is licensed to you subject to the terms of the License Agreement. The License Agreement forms a legally binding contract between you and Google in relation to your use of the SDK.
-
-1.2 "Android" means the Android software stack for devices, as made available under the Android Open Source Project, which is located at the following URL: http://source.android.com/, as updated from time to time.
-
-1.3 A "compatible implementation" means any Android device that (i) complies with the Android Compatibility Definition document, which can be found at the Android compatibility website (http://source.android.com/compatibility) and which may be updated from time to time; and (ii) successfully passes the Android Compatibility Test Suite (CTS).
-
-1.4 "Google" means Google Inc., a Delaware corporation with principal place of business at 1600 Amphitheatre Parkway, Mountain View, CA 94043, United States.
-
-
-<h3>2. Accepting this License Agreement</h3>
-2.1 In order to use the SDK, you must first agree to the License Agreement. You may not use the SDK if you do not accept the License Agreement.
-
-2.2 By clicking to accept, you hereby agree to the terms of the License Agreement.
-
-2.3 You may not use the SDK and may not accept the License Agreement if you are a person barred from receiving the SDK under the laws of the United States or other countries, including the country in which you are resident or from which you use the SDK.
-
-2.4 If you are agreeing to be bound by the License Agreement on behalf of your employer or other entity, you represent and warrant that you have full legal authority to bind your employer or such entity to the License Agreement. If you do not have the requisite authority, you may not accept the License Agreement or use the SDK on behalf of your employer or other entity.
-
-
-<h3>3. SDK License from Google</h3>
-3.1 Subject to the terms of the License Agreement, Google grants you a limited, worldwide, royalty-free, non-assignable, non-exclusive, and non-sublicensable license to use the SDK solely to develop applications for compatible implementations of Android.
-
-3.2 You may not use this SDK to develop applications for other platforms (including non-compatible implementations of Android) or to develop another SDK. You are of course free to develop applications for other platforms, including non-compatible implementations of Android, provided that this SDK is not used for that purpose.
-
-3.3 You agree that Google or third parties own all legal right, title and interest in and to the SDK, including any Intellectual Property Rights that subsist in the SDK. "Intellectual Property Rights" means any and all rights under patent law, copyright law, trade secret law, trademark law, and any and all other proprietary rights. Google reserves all rights not expressly granted to you.
-
-3.4 You may not use the SDK for any purpose not expressly permitted by the License Agreement.  Except to the extent required by applicable third party licenses, you may not: (a) copy (except for backup purposes), modify, adapt, redistribute, decompile, reverse engineer, disassemble, or create derivative works of the SDK or any part of the SDK; or (b) load any part of the SDK onto a mobile handset or any other hardware device except a personal computer, combine any part of the SDK with other software, or distribute any software or device incorporating a part of the SDK.
-
-3.5 Use, reproduction and distribution of components of the SDK licensed under an open source software license are governed solely by the terms of that open source software license and not the License Agreement.
-
-3.6 You agree that the form and nature of the SDK that Google provides may change without prior notice to you and that future versions of the SDK may be incompatible with applications developed on previous versions of the SDK. You agree that Google may stop (permanently or temporarily) providing the SDK (or any features within the SDK) to you or to users generally at Google's sole discretion, without prior notice to you.
-
-3.7 Nothing in the License Agreement gives you a right to use any of Google's trade names, trademarks, service marks, logos, domain names, or other distinctive brand features.
-
-3.8 You agree that you will not remove, obscure, or alter any proprietary rights notices (including copyright and trademark notices) that may be affixed to or contained within the SDK.
-
-
-<h3>4. Use of the SDK by You</h3>
-4.1 Google agrees that it obtains no right, title or interest from you (or your licensors) under the License Agreement in or to any software applications that you develop using the SDK, including any intellectual property rights that subsist in those applications.
-
-4.2 You agree to use the SDK and write applications only for purposes that are permitted by (a) the License Agreement and (b) any applicable law, regulation or generally accepted practices or guidelines in the relevant jurisdictions (including any laws regarding the export of data or software to and from the United States or other relevant countries).
-
-4.3 You agree that if you use the SDK to develop applications for general public users, you will protect the privacy and legal rights of those users. If the users provide you with user names, passwords, or other login information or personal information, you must make the users aware that the information will be available to your application, and you must provide legally adequate privacy notice and protection for those users. If your application stores personal or sensitive information provided by users, it must do so securely. If the user provides your application with Google Account information, your application may only use that information to access the user's Google Account when, and for the limited purposes for which, the user has given you permission to do so.
-
-4.4 You agree that you will not engage in any activity with the SDK, including the development or distribution of an application, that interferes with, disrupts, damages, or accesses in an unauthorized manner the servers, networks, or other properties or services of any third party including, but not limited to, Google or any mobile communications carrier.
-
-4.5 You agree that you are solely responsible for (and that Google has no responsibility to you or to any third party for) any data, content, or resources that you create, transmit or display through Android and/or applications for Android, and for the consequences of your actions (including any loss or damage which Google may suffer) by doing so.
-
-4.6 You agree that you are solely responsible for (and that Google has no responsibility to you or to any third party for) any breach of your obligations under the License Agreement, any applicable third party contract or Terms of Service, or any applicable law or regulation, and for the consequences (including any loss or damage which Google or any third party may suffer) of any such breach.
-
-
-<h3>5. Your Developer Credentials</h3>
-5.1 You agree that you are responsible for maintaining the confidentiality of any developer credentials that may be issued to you by Google or which you may choose yourself and that you will be solely responsible for all applications that are developed under your developer credentials.
-
-
-<h3>6. Privacy and Information</h3>
-6.1 In order to continually innovate and improve the SDK, Google may collect certain usage statistics from the software including but not limited to a unique identifier, associated IP address, version number of the software, and information on which tools and/or services in the SDK are being used and how they are being used. Before any of this information is collected, the SDK will notify you and seek your consent. If you withhold consent, the information will not be collected.
-
-6.2 The data collected is examined in the aggregate to improve the SDK and is maintained in accordance with Google's Privacy Policy.
-
-
-<h3>7. Third Party Applications</h3>
-7.1 If you use the SDK to run applications developed by a third party or that access data, content or resources provided by a third party, you agree that Google is not responsible for those applications, data, content, or resources. You understand that all data, content or resources which you may access through such third party applications are the sole responsibility of the person from which they originated and that Google is not liable for any loss or damage that you may experience as a result of the use or access of any of those third party applications, data, content, or resources.
-
-7.2 You should be aware the data, content, and resources presented to you through such a third party application may be protected by intellectual property rights which are owned by the providers (or by other persons or companies on their behalf). You may not modify, rent, lease, loan, sell, distribute or create derivative works based on these data, content, or resources (either in whole or in part) unless you have been specifically given permission to do so by the relevant owners.
-
-7.3 You acknowledge that your use of such third party applications, data, content, or resources may be subject to separate terms between you and the relevant third party. In that case, the License Agreement does not affect your legal relationship with these third parties.
-
-
-<h3>8. Using Android APIs</h3>
-8.1 Google Data APIs
-
-8.1.1 If you use any API to retrieve data from Google, you acknowledge that the data may be protected by intellectual property rights which are owned by Google or those parties that provide the data (or by other persons or companies on their behalf). Your use of any such API may be subject to additional Terms of Service. You may not modify, rent, lease, loan, sell, distribute or create derivative works based on this data (either in whole or in part) unless allowed by the relevant Terms of Service.
-
-8.1.2 If you use any API to retrieve a user's data from Google, you acknowledge and agree that you shall retrieve data only with the user's explicit consent and only when, and for the limited purposes for which, the user has given you permission to do so.
-
-
-<h3>9. Terminating this License Agreement</h3>
-9.1 The License Agreement will continue to apply until terminated by either you or Google as set out below.
-
-9.2 If you want to terminate the License Agreement, you may do so by ceasing your use of the SDK and any relevant developer credentials.
-
-9.3 Google may at any time, terminate the License Agreement with you if:
-(A) you have breached any provision of the License Agreement; or
-(B) Google is required to do so by law; or
-(C) the partner with whom Google offered certain parts of SDK (such as APIs) to you has terminated its relationship with Google or ceased to offer certain parts of the SDK to you; or
-(D) Google decides to no longer provide the SDK or certain parts of the SDK to users in the country in which you are resident or from which you use the service, or the provision of the SDK or certain SDK services to you by Google is, in Google's sole discretion, no longer commercially viable.
-
-9.4 When the License Agreement comes to an end, all of the legal rights, obligations and liabilities that you and Google have benefited from, been subject to (or which have accrued over time whilst the License Agreement has been in force) or which are expressed to continue indefinitely, shall be unaffected by this cessation, and the provisions of paragraph 14.7 shall continue to apply to such rights, obligations and liabilities indefinitely.
-
-
-<h3>10. DISCLAIMER OF WARRANTIES</h3>
-10.1 YOU EXPRESSLY UNDERSTAND AND AGREE THAT YOUR USE OF THE SDK IS AT YOUR SOLE RISK AND THAT THE SDK IS PROVIDED "AS IS" AND "AS AVAILABLE" WITHOUT WARRANTY OF ANY KIND FROM GOOGLE.
-
-10.2 YOUR USE OF THE SDK AND ANY MATERIAL DOWNLOADED OR OTHERWISE OBTAINED THROUGH THE USE OF THE SDK IS AT YOUR OWN DISCRETION AND RISK AND YOU ARE SOLELY RESPONSIBLE FOR ANY DAMAGE TO YOUR COMPUTER SYSTEM OR OTHER DEVICE OR LOSS OF DATA THAT RESULTS FROM SUCH USE.
-
-10.3 GOOGLE FURTHER EXPRESSLY DISCLAIMS ALL WARRANTIES AND CONDITIONS OF ANY KIND, WHETHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO THE IMPLIED WARRANTIES AND CONDITIONS OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
-
-
-<h3>11. LIMITATION OF LIABILITY</h3>
-11.1 YOU EXPRESSLY UNDERSTAND AND AGREE THAT GOOGLE, ITS SUBSIDIARIES AND AFFILIATES, AND ITS LICENSORS SHALL NOT BE LIABLE TO YOU UNDER ANY THEORY OF LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, CONSEQUENTIAL OR EXEMPLARY DAMAGES THAT MAY BE INCURRED BY YOU, INCLUDING ANY LOSS OF DATA, WHETHER OR NOT GOOGLE OR ITS REPRESENTATIVES HAVE BEEN ADVISED OF OR SHOULD HAVE BEEN AWARE OF THE POSSIBILITY OF ANY SUCH LOSSES ARISING.
-
-
-<h3>12. Indemnification</h3>
-12.1 To the maximum extent permitted by law, you agree to defend, indemnify and hold harmless Google, its affiliates and their respective directors, officers, employees and agents from and against any and all claims, actions, suits or proceedings, as well as any and all losses, liabilities, damages, costs and expenses (including reasonable attorneys fees) arising out of or accruing from (a) your use of the SDK, (b) any application you develop on the SDK that infringes any copyright, trademark, trade secret, trade dress, patent or other intellectual property right of any person or defames any person or violates their rights of publicity or privacy, and (c) any non-compliance by you with the License Agreement.
-
-
-<h3>13. Changes to the License Agreement</h3>
-13.1 Google may make changes to the License Agreement as it distributes new versions of the SDK. When these changes are made, Google will make a new version of the License Agreement available on the website where the SDK is made available.
-
-
-<h3>14. General Legal Terms</h3>
-14.1 The License Agreement constitutes the whole legal agreement between you and Google and governs your use of the SDK (excluding any services which Google may provide to you under a separate written agreement), and completely replaces any prior agreements between you and Google in relation to the SDK.
-
-14.2 You agree that if Google does not exercise or enforce any legal right or remedy which is contained in the License Agreement (or which Google has the benefit of under any applicable law), this will not be taken to be a formal waiver of Google's rights and that those rights or remedies will still be available to Google.
-
-14.3 If any court of law, having the jurisdiction to decide on this matter, rules that any provision of the License Agreement is invalid, then that provision will be removed from the License Agreement without affecting the rest of the License Agreement. The remaining provisions of the License Agreement will continue to be valid and enforceable.
-
-14.4 You acknowledge and agree that each member of the group of companies of which Google is the parent shall be third party beneficiaries to the License Agreement and that such other companies shall be entitled to directly enforce, and rely upon, any provision of the License Agreement that confers a benefit on (or rights in favor of) them. Other than this, no other person or company shall be third party beneficiaries to the License Agreement.
-
-14.5 EXPORT RESTRICTIONS. THE SDK IS SUBJECT TO UNITED STATES EXPORT LAWS AND REGULATIONS. YOU MUST COMPLY WITH ALL DOMESTIC AND INTERNATIONAL EXPORT LAWS AND REGULATIONS THAT APPLY TO THE SDK. THESE LAWS INCLUDE RESTRICTIONS ON DESTINATIONS, END USERS AND END USE.
-
-14.6 The rights granted in the License Agreement may not be assigned or transferred by either you or Google without the prior written approval of the other party. Neither you nor Google shall be permitted to delegate their responsibilities or obligations under the License Agreement without the prior written approval of the other party.
-
-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><!-- thin wrapper around tos doc -->
-
-
-<div id="usb-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>
-
-
-
-</div><!-- end TOS -->
-
-
-
-<div class="wrap col-13" style="margin:0" id="main">
-
-
-<div id="qv-wrapper">
-<div id="qv">
-  <h2>In this document</h2>
-  <ol>
-    <li><a href="#WinUsbDriver">Downloading the Google USB Driver</a></li>
-  </ol>
-  <h2>See also</h2>
-  <ol>
-    <li><a href="{@docRoot}tools/extras/oem-usb.html#InstallingDriver">Installing a USB Driver</a></li>
-    <li><a href="{@docRoot}guide/developing/device.html">Using Hardware Devices</a></li>
-  </ol>
-
-<h2>Get it</h2>
-
-<div class="download-box">
-    <a onclick="return onDownload(this)"
-    href="https://dl-ssl.google.com//android/repository/latest_usb_driver_windows.zip"
-     class="button" id="usbDriverButton">
-    Download Google USB Driver
-    </a>
- <p class="filename">latest_usb_driver_windows.zip</p>
-</div>
-
-</div>
-</div>
-
-<p>The Google USB Driver is <strong>required for Windows only</strong> in order to perform
-<a href="{@docRoot}tools/help/adb.html">adb</a> debugging with any of
-the <strong>Google Nexus devices</strong>. The one exception is the
-Galaxy Nexus: the driver for Galaxy Nexus is distributed by <a
-href="http://www.samsung.com/us/support/downloads/verizon-wireless/SCH-I515MSAVZW">Samsung</a>
-(listed as model SCH-I515).</p>
-
-<p>Windows drivers for all other devices are provided by the respective hardware
-manufacturer, as listed in the <a href="{@docRoot}tools/extras/oem-usb.html">OEM USB Drivers</a>
-document.</p>
-
-
-
-<p class="note"><strong>Note:</strong>
-If you're developing on Mac OS X or Linux, then you <strong>do not</strong> need to install a USB
-driver. To start developing with your device, read
-<a href="{@docRoot}guide/developing/device.html">Using Hardware Devices</a>.</p>
-
-
-<h2 id="WinUsbDriver">Downloading the Google USB Driver</h2>
-
-<p>The Google USB Driver for Windows is available for download as an optional SDK
-component. You need the driver only if you are developing on Windows and
-want to connect a Google Android-powered device (such as a Nexus 7) to your
-development environment over USB.</p>
-
-<div class="figure" style="width:536px;margin:0">
-  <img src="{@docRoot}images/developing/sdk-usb-driver.png" alt="" />
-  <p class="img-caption"><strong>Figure 1.</strong> The SDK Manager
-    with the Google USB Driver selected.</p>
-</div>
-
-<p>You can download the Google USB Driver for Windows in one of two ways:</p>
-<ul>
-  <li>
-    <a onclick="$('#usbDriverButton').trigger('click');return false;" href="#">
-    Click here to download the latest Google USB Driver ZIP file</a>.</li>
-  <li>Or, use the Android SDK Manager tool that is
-included with the <a href="{@docRoot}sdk/index.html">Android SDK</a>. Using the SDK Manager
-helps you keep the driver up to date by notifying you when your current driver is out of date.
-    <ol>
-      <li>Launch the Android SDK Manager by double-clicking <code>SDK Manager.exe</code>,
-      at the root of your SDK directory.</li>
-      <li>Expand <em>Extras</em>.</li>
-      <li>Check <strong>Google USB Driver package</strong> and click <strong>Install</strong>.</li>
-      <li>Proceed to install the package. When done, the driver files are
-    downloaded into the <code>&lt;sdk&gt;\extras\google\usb_driver\</code> directory.</li>
-    </ol>
-  </li>
-</ul>
-
-<p>For installation information, read
-<a href="{@docRoot}tools/extras/oem-usb.html#InstallingDriver">Installing a USB Driver</a>.</p>
-
-
-
-</div><!-- end wrap "main" for document content -->
-
-</div><!-- end outter wrapper for page contents -->
-
-
-
-
-<script>
-
-
-  function onDownload(link) {
-
-    /* set text for download button */
-    $("#downloadForRealz").html($(link).text());
-    $("#downloadForRealz").attr('href',$(link).attr('href'));
-
-    $("#tos").fadeIn('fast');
-    $("#main").fadeOut('fast');
-
-    location.hash = "download";
-    return false;
-  }
-
-
-  function onAgreeChecked() {
-    /* verify that the TOS is agreed and a bit version is chosen */
-    if ($("input#agree").is(":checked")) {
-      /* reveal the download button */
-      $("a#downloadForRealz").removeClass('disabled');
-    } else {
-      $("a#downloadForRealz").addClass('disabled');
-    }
-  }
-
-  function onDownloadForRealz(link) {
-    if ($("input#agree").is(':checked')) {
-      // OK, start the download and reset the page
-      $("input#agree").attr('checked',false);
-      $("a#downloadForRealz").addClass('disabled');
-      $("#tos").fadeOut('fast');
-      $("#main").fadeIn('fast');
-      location.hash = "top";
-    } else {
-      // Have not agreed to tos, make the checkbox blink
-      $("label#agreeLabel").parent().stop().animate({color: "#258AAF"}, 200,
-        function() {$("label#agreeLabel").parent().stop().animate({color: "#222"}, 200)}
-      );
-      return false;
-    }
-  }
-
-  $(window).hashchange( function(){
-    if (location.hash == "") {
-      location.reload();
-    }
-  });
-
-</script>
\ No newline at end of file
diff --git a/docs/html/tools/_book.yaml b/docs/html/tools/_book.yaml
deleted file mode 100644
index 1006e6a..0000000
--- a/docs/html/tools/_book.yaml
+++ /dev/null
@@ -1,280 +0,0 @@
-toc:
-- title: Download
-  path: /sdk/index.html
-  section:
-  - title: Installing the SDK
-    path: /sdk/installing/index.html
-  - title: Adding SDK Packages
-    path: /sdk/installing/adding-packages.html
-
-- title: Workflow
-  path: /tools/workflow/index.html
-  section:
-  - title: Projects
-    path: /tools/projects/index.html
-  - title: Build and Run
-    path: /tools/building/index.html
-  - title: Virtual Devices
-    path: /tools/devices/index.html
-  - title: Hardware Devices
-    path: /tools/device.html
-    section:
-    - title: USB Drivers
-      path: /tools/extras/oem-usb.html
-  - title: Testing
-    path: /tools/testing/index.html
-  - title: Debugging
-    path: /tools/debugging/index.html
-  - title: Publishing
-    path: /tools/publishing/publishing_overview.html
-    custom_link_attributes:
-    - zh-cn-lang="发布概述"
-    section:
-    - title: Preparing for Release
-      path: /tools/publishing/preparing.html
-      custom_link_attributes:
-      - zh-cn-lang="准备发布"
-    - title: Versioning Your Apps
-      path: /tools/publishing/versioning.html
-    - title: Signing Your Apps
-      path: /tools/publishing/app-signing.html
-
-- title: Android Studio
-  path: /tools/studio/index.html
-  section:
-  - title: Features
-    path: /tools/studio/studio-features.html
-  - title: Configuration
-    path: /tools/studio/studio-config.html
-    section:
-    - title: SDK Manager
-      path: /tools/help/sdk-manager.html
-  - title: Project Tools
-    path: /sdk/installing/create-project.html
-    section:
-    - title: Project Structure Management
-      path: /tools/help/project-mgmt.html
-    - title: Using Code Templates
-      path: /tools/projects/templates.html
-    - title: Building and Running
-      path: /tools/building/building-studio.html
-  - title: Code Tools
-    path: /tools/studio/code-tools.html
-    section:
-    - title: Improving Your Code with lint
-      path: /tools/debugging/improving-w-lint.html
-    - title: Improving Code Inspection with Annotations
-      path: /tools/debugging/annotations.html
-    - title: Deep Link and App Indexing API Support
-      path: /tools/help/app-link-indexing.html
-  - title: UI Tools
-    path: /tools/studio/ui-tools.html
-    section:
-    - title: Layout Editor
-      path: /sdk/installing/studio-layout.html
-    - title: Theme Editor
-      path: /tools/help/theme-editor.html
-    - title: Translations Editor
-      path: /tools/help/translations-editor.html
-    - title: Vector Asset Studio
-      path: /tools/help/vector-asset-studio.html
-    - title: Image Asset Studio
-      path: /tools/help/image-asset-studio.html
-  - title: AVD Manager
-    path: /tools/devices/managing-avds.html
-  - title: Debugging Tools
-    path: /tools/debugging/debugging-studio.html
-    section:
-    - title: DDMS
-      path: /tools/debugging/ddms.html
-  - title: Android Monitor
-    path: /tools/help/android-monitor.html
-    section:
-    - title: logcat Monitor
-      path: /tools/help/am-logcat.html
-    - title: Memory Monitor
-      path: /tools/help/am-memory.html
-    - title: CPU Monitor
-      path: /tools/help/am-cpu.html
-    - title: GPU Monitor
-      path: /tools/help/am-gpu.html
-    - title: Network Monitor
-      path: /tools/help/am-network.html
-  - title: Tips and Tricks
-    path: /sdk/installing/studio-tips.html
-  - title: Migrating from Eclipse ADT
-    path: /sdk/installing/migrate.html
-    section:
-    - title: Transition Guide
-      path: /tools/studio/eclipse-transition-guide.html
-
-- title: Tools Help
-  path: /tools/help/index.html
-  section:
-  - title: adb
-    path: /tools/help/adb.html
-  - title: android
-    path: /tools/help/android.html
-    section:
-    - title: Managing AVDs
-      path: /tools/devices/managing-avds-cmdline.html
-    - title: Managing Projects
-      path: /tools/projects/projects-cmdline.html
-  - title: AVD Manager
-    path: /tools/help/avd-manager.html
-  - title: bmgr
-    path: /tools/help/bmgr.html
-  - title: Desktop Head Unit
-    path: /tools/help/desktop-head-unit.html
-  - title: Device Monitor
-    path: /tools/help/monitor.html
-  - title: dmtracedump
-    path: /tools/help/dmtracedump.html
-  - title: Draw 9-Patch
-    path: /tools/help/draw9patch.html
-  - title: etc1tool
-    path: /tools/help/etc1tool.html
-  - title: Hierarchy Viewer
-    path: /tools/help/hierarchy-viewer.html
-    section:
-    - title: Optimizing your UI
-      path: /tools/debugging/debugging-ui.html
-  - title: hprof-conv
-    path: /tools/help/hprof-conv.html
-  - title: jobb
-    path: /tools/help/jobb.html
-  - title: lint
-    path: /tools/help/lint.html
-  - title: logcat
-    path: /tools/help/logcat.html
-    section:
-    - title: Reading and Writing Logs
-      path: /tools/debugging/debugging-log.html
-  - title: mksdcard
-    path: /tools/help/mksdcard.html
-  - title: ProGuard
-    path: /tools/help/proguard.html
-  - title: Tracer for OpenGL ES
-    path: /tools/help/gltracer.html
-  - title: Virtual Device Emulator
-    path: /tools/devices/emulator.html
-    section:
-    - title: Command Reference
-      path: /tools/help/emulator.html
-  - title: zipalign
-    path: /tools/help/zipalign.html
-
-- title: Build System
-  path: /sdk/installing/studio-build.html
-  section:
-  - title: Running Gradle Builds
-    path: /tools/building/building-cmdline.html
-  - title: Configuring Gradle Builds
-    path: /tools/building/configuring-gradle.html
-  - title: Android Plugin for Gradle
-    path: /tools/building/plugin-for-gradle.html
-  - title: Manifest Merging
-    path: /tools/building/manifest-merge.html
-  - title: Apps Over 65K Methods
-    path: /tools/building/multidex.html
-
-- title: Performance Tools
-  path: /tools/performance/index.html
-  section:
-  - title: Overdraw Debugger
-    path: /tools/performance/debug-gpu-overdraw/index.html
-  - title: Rendering Profiler
-    path: /tools/performance/profile-gpu-rendering/index.html
-  - title: Hierarchy Viewer
-    path: /tools/performance/hierarchy-viewer/index.html
-    section:
-    - title: Setup
-      path: /tools/performance/hierarchy-viewer/setup.html
-    - title: Profiling
-      path: /tools/performance/hierarchy-viewer/profiling.html
-  - title: Memory Profilers
-    path: /tools/performance/comparison.html
-    section:
-    - title: Memory Monitor
-      path: /tools/performance/memory-monitor/index.html
-    - title: Heap Viewer
-      path: /tools/performance/heap-viewer/index.html
-    - title: Allocation Tracker
-      path: /tools/performance/allocation-tracker/index.html
-    - title: Investigating Your RAM Usage
-      path: /tools/debugging/debugging-memory.html
-  - title: Traceview
-    path: /tools/debugging/debugging-tracing.html
-    section:
-    - title: Walkthrough
-      path: /tools/performance/traceview/index.html
-    - title: Command Reference
-      path: /tools/help/traceview.html
-  - title: Systrace
-    path: /tools/debugging/systrace.html
-    section:
-    - title: Walkthrough
-      path: /tools/performance/systrace/index.html
-    - title: Command Reference
-      path: /tools/help/systrace.html
-  - title: Battery Profilers
-    path: /tools/performance/batterystats-battery-historian/index.html
-    section:
-    - title: Historian Charts
-      path: /tools/performance/batterystats-battery-historian/charts.html
-
-- title: Testing Tools
-  path: /tools/testing/testing-tools.html
-  section:
-  - title: Testing Concepts
-    path: /tools/testing/testing_android.html
-  - title: Testing Support Library
-    path: /tools/testing-support-library/index.html
-    section:
-    - title: API Reference
-      path: /reference/android/support/test/package-summary.html
-  - title: Testing with Android Studio
-    path: /training/testing/start/index.html
-  - title: Testing from the Command-Line
-    path: /tools/testing/testing_otheride.html
-  - title: monkey
-    path: /tools/help/monkey.html
-  - title: monkeyrunner
-    path: /tools/help/monkeyrunner_concepts.html
-    section:
-    - title: MonkeyDevice
-      path: /tools/help/MonkeyDevice.html
-    - title: MonkeyImage
-      path: /tools/help/MonkeyImage.html
-    - title: MonkeyRunner
-      path: /tools/help/MonkeyRunner.html
-
-- title: Support Library
-  path: /tools/support-library/index.html
-  section:
-  - title: Features
-    path: /tools/support-library/features.html
-  - title: Setup
-    path: /tools/support-library/setup.html
-
-- title: Data Binding Library
-  path: /tools/data-binding/guide.html
-
-- title: Revisions
-  path: /tools/revisions/index.html
-  section:
-  - title: Android Studio
-    path: /tools/revisions/studio.html
-  - title: SDK Tools
-    path: /tools/sdk/tools-notes.html
-  - title: SDK Build Tools
-    path: /tools/revisions/build-tools.html
-  - title: Android Plugin for Gradle
-    path: /tools/revisions/gradle-plugin.html
-  - title: SDK Platforms
-    path: /tools/revisions/platforms.html
-  - title: ADT Plugin
-    path: /tools/sdk/eclipse-adt.html
-
-- title: NDK
-  path: /tools/sdk/ndk/index.html
diff --git a/docs/html/tools/building/building-cmdline.jd b/docs/html/tools/building/building-cmdline.jd
deleted file mode 100644
index bf3e873..0000000
--- a/docs/html/tools/building/building-cmdline.jd
+++ /dev/null
@@ -1,369 +0,0 @@
-page.title=Building and Running from the Command Line
-parent.title=Building and Running
-parent.link=index.html
-@jd:body
-
- <div id="qv-wrapper">
-    <div id="qv">
-      <h2>In this document</h2>
-      <ol>
-        <li><a href="#DebugMode">Building in Debug Mode</a></li>
-        <li><a href="#ReleaseMode">Building in Release Mode</a>
-          <ol>
-            <li><a href="#ManualReleaseMode">Build unsigned</a></li>
-            <li><a href="#AutoReleaseMode">Build signed and aligned</a></li>
-            <li><a href="#OnceBuilt">Once built and signed in release mode</a></li>
-          </ol>
-        </li>
-        <li><a href="#RunningOnEmulator">Running on the Emulator</a></li>
-        <li><a href="#RunningOnDevice">Running on a Device</a></li>
-        <li><a href="#Signing">Application Signing</a></li>
-        <li><a href="#PluginReference">Plugin Language Reference</a></li>
-      </ol>
-  <h2>See also</h2>
-  <ol>
-    <li><a href="{@docRoot}sdk/installing/studio-build.html">
-      Build System</a></li>
-    <li><a href="{@docRoot}tools/devices/managing-avds-cmdline.html">
-      Managing AVDs from the Command Line</a></li>
-    <li><a href="{@docRoot}tools/devices/emulator.html">
-      Using the Android Emulator</a></li>
-    <li><a href="{@docRoot}tools/publishing/app-signing.html">
-      Signing Your Applications</a></li>
-  </ol>
-    </div>
-  </div>
-
-  <p>By default, there are two build types to build your application using the Gradle build settings:
-  one for debugging your application &mdash; <em>debug</em> &mdash; and one for building your
-  final package for release &mdash; <em>release mode</em>. Regardless of which build type
-  your modules use, the app must be signed before it can install on an emulator or device&mdash;with
-  a debug key when building in debug mode and with your own private key when building in release mode.</p>
-
-  <p>Whether you're building with the debug or release build type, you need to run
-  and build your module. This will create the .apk file that you can install on an emulator or device.
-  When you build using the debug build type, the .apk file is automatically signed by the SDK tools
-  with a debug key based on the <code>debuggable true</code> setting in the module's build.gradle file,
-  so it's instantly ready for installation onto an emulator or attached
-  development device. You cannot distribute an application that is signed with a debug key.
-  When you build using the release build type, the .apk file is <em>unsigned</em>, so you
-  must manually sign it with your own private key, using Keytool and Jarsigner settings in the
-  module's <code>build.gradle</code> file.</p>
-
-  <p>It's important that you read and understand <a href=
-  "{@docRoot}tools/publishing/app-signing.html">Signing Your Applications</a>, particularly once
-  you're ready to release your application and share it with end-users. That document describes the
-  procedure for generating a private key and then using it to sign your APK file. If you're just
-  getting started, however, you can quickly run your applications on an emulator or your own
-  development device by building in debug mode.</p>
-
-  <p>If you don't have <a href="http://www.gradle.org/">Gradle</a>, you can obtain it from the <a href="http://gradle.org/">Gradle
-  home page</a>. Install it and make sure it is in your executable PATH. Before calling Gradle, you
-  need to declare the JAVA_HOME environment variable to specify the path to where the JDK is
-  installed.</p>
-
-  <p class="note"><strong>Note:</strong> When using <code>ant</code> and installing JDK on Windows,
-  the default is to install in the "Program Files" directory. This location will cause
-  <code>ant</code> to fail, because of the space. To fix the problem, you can specify the JAVA_HOME
-  variable like this:
-  <pre>set JAVA_HOME=c:\Progra~1\Java\&lt;jdkdir&gt;</pre>
-
-  <p>The easiest solution, however, is to install JDK in a non-space directory, for example:</p>
-
-  <pre>c:\java\jdk1.7</pre>
-
-  <h2 id="DebugMode">Building in Debug Mode</h2>
-
-  <p>For immediate application testing and debugging, you can build your application in debug mode
-  and immediately install it on an emulator. In debug mode, the build tools automatically sign your
-  application with a debug key and optimize the package with {@code zipalign}.</p>
-
-  <p>To build in debug mode, open a command-line and navigate to the root of your project directory.
-  Use Gradle to build your project in debug mode, invoke the <code>assembleDebug</code> build task
-  using the Gradle wrapper script (<code>gradlew assembleRelease</code>).
-
-  <p>This creates your debug <code>.apk</code> file inside the module <code>build/</code>
-  directory, named <code>&lt;your_module_name&gt;-debug.apk</code>. The file is already signed
-  with the debug key and has been aligned with
-  <a href="{@docRoot}tools/help/zipalign.html"><code>zipalign</code></a>. </p>
-
-  <p>On Windows platforms, type this command:</p>
-
-<pre>
-> gradlew.bat assembleDebug
-</pre>
-
-<p>On Mac OS and Linux platforms, type these commands:</p>
-
-<pre>
-$ chmod +x gradlew
-$ ./gradlew assembleDebug
-</pre>
-
-  <p>The first command (<code>chmod</code>) adds the execution permission to the Gradle wrapper
-  script and is only necessary the first time you build this project from the command line.</p>
-
-  <p>After you build the project, the output APK for the app module is located in
-  <code>app/build/outputs/apk/</code>, and the output AAR for any lib modules is located in
-  <code>lib/build/outputs/libs/</code>.</p>
-
-  <p>To see a list of all available build tasks for your project, type this command:</p>
-
-<pre>
-$ ./gradlew tasks
-</pre>
-
-  <p>Each time you change a source file or resource, you must run Gradle again in order to package up
-  the latest version of the application.</p>
-
-  <p>To install and run your application on an emulator, see the section about <a href=
-  "{@docRoot}tools/building/building-studio.html">Running on the Emulator</a>.</p>
-
-  <h2 id="ReleaseMode">Building in Release Mode</h2>
-
-  <p>When you're ready to release and distribute your application to end-users, you must build your
-  application in release mode. Once you have built in release mode, it's a good idea to perform
-  additional testing and debugging with the final .apk.</p>
-
-  <p>Before you start building your application in release mode, be aware that you must sign the
-  resulting application package with your private key, and should then align it using the {@code
-  zipalign} tool. There are two approaches to building in release mode: build an unsigned package
-  in release mode and then manually sign and align the package, or allow the build script to sign
-  and align the package for you.</p>
-
-  <h3 id="ManualReleaseMode">Build unsigned</h3>
-
-  <p>If you build your application <em>unsigned</em>, then you will need to manually sign and align
-  the package.</p>
-
-  <p>To build an <em>unsigned</em> .apk in release mode, open a command-line and navigate to the
-  root of your module directory. Invoke the <code>assembleRelease</code> build task.</li>
-
-  <p>On Windows platforms, type this command:</p>
-
-<pre>
-> gradlew.bat assembleRelease
-</pre>
-
-<p>On Mac OS and Linux platforms, type this command:</p>
-
-<pre>
-$ ./gradlew assembleRelease
-</pre>
-
-
-  <p>This creates your Android application .apk file inside the project <code>bin/</code>
-  directory, named <code><em>&lt;your_module_name&gt;</em>-unsigned.apk</code>.</p>
-
-  <p class="note"><strong>Note:</strong> The .apk file is <em>unsigned</em> at this point and can't
-  be installed until signed with your private key.</p>
-
-  <p>Once you have created the unsigned .apk, your next step is to sign the .apk with your private
-  key and then align it with {@code zipalign}. To complete this procedure, read <a href=
-  "{@docRoot}tools/publishing/app-signing.html">Signing Your Applications</a>.</p>
-
-  <p>When your <code>.apk</code> has been signed and aligned, it's ready to be distributed to end-users.
-  You should test the final build on different devices or AVDs to ensure that it
-  runs properly on different platforms.</p>
-
-  <h3 id="AutoReleaseMode">Build signed and aligned</h3>
-
-  <p>If you would like, you can configure the Android build script to automatically sign and align
-  your application package. To do so, you must provide the path to your keystore and the name of
-  your key alias in your modules's build.gradle file. With this information provided,
-  the build will prompt you for your keystore and alias password when you build using the release
-  build type and produce your final application package, which will be ready for distribution.</p>
-
-  <p>To specify your keystore and alias, open the module build.gradle file (found in
-  the root of the module directory) and add entries for {@code storeFile}, {@code storePassword},
-  {@code keyAlias} and {@code keyPassword}.
-  For example:</p>
-  <pre>
-storeFile file("myreleasekey.keystore")
-keyAlias "MyReleaseKey"
-</pre>
-
-  <p>Save your changes. Now you can build a <em>signed</em> .apk in release mode:</p>
-
-  <ol>
-    <li>Open a command-line and navigate to the root of your module directory.</li>
-
-    <li>Edit the build.gradle file to build your project in release mode:
-      <p><pre>
-...
-android {
-    ...
-    defaultConfig { ... }
-    signingConfigs {
-        release {
-            storeFile file("myreleasekey.keystore")
-            storePassword "password"
-            keyAlias "MyReleaseKey"
-            keyPassword "password"
-        }
-    }
-    buildTypes {
-        release {
-            ...
-            signingConfig signingConfigs.release
-        }
-    }
-}
-...
-</pre></p>
-    </li>
-
-    <li>When prompted, enter you keystore and alias passwords.
-
-      <p class="caution"><strong>Caution:</strong> As described above, your password will be
-      visible on the screen.</p>
-    </li>
-  </ol>
-
-  <p>This creates your Android application .apk file inside the module <code>build/</code>
-  directory, named <code><em>&lt;your_module_name&gt;</em>-release.apk</code>. This .apk file has
-  been signed with the private key specified in build.gradle file and aligned with {@code
-  zipalign}. It's ready for installation and distribution.</p>
-
-  <h3 id="OnceBuilt">Once built and signed in release mode</h3>
-
-  <p>Once you have signed your application with a private key, you can install and run it on an
-  <a href="#RunningOnEmulator">emulator</a> or <a href="#RunningOnDevice">device</a>. You can
-  also try installing it onto a device from a web server. Simply upload the signed .apk to a web
-  site, then load the .apk URL in your Android web browser to download the application and begin
-  installation. (On your device, be sure you have enabled
-  <em>Settings &gt; Applications &gt; Unknown sources</em>.)</p>
-
-  <h2 id="RunningOnEmulator">Running on the Emulator</h2>
-
-  <p>Before you can run your application on the Android Emulator, you must <a href=
-  "{@docRoot}tools/devices/managing-avds.html">create an AVD</a>.</p>
-
-  <p>To run your application:</p>
-
-  <ol>
-    <li>
-      <strong>Open the AVD Manager and launch a virtual device</strong>
-
-      <p>From your SDK's <code>platform-tools/</code> directory, execute the {@code android} tool
-with the <code>avd</code> options:</p>
-      <pre>
-android avd
-</pre>
-
-      <p>In the <em>Virtual Devices</em> view, select an AVD and click <strong>Start</strong>.</p>
-    </li>
-
-    <li>
-      <strong>Install your application</strong>
-
-      <p>From your SDK's <code>tools/</code> directory, install the {@code .apk} on the
-      emulator:</p>
-      <pre>
-adb install <em>&lt;path_to_your_bin&gt;</em>.apk
-</pre>
-
-      <p>Your .apk file (signed with either a release or debug key) is in your module {@code build/}
-      directory after you build your application.</p>
-
-      <p>If there is more than one emulator running, you must specify the emulator upon which to
-      install the application, by its serial number, with the <code>-s</code> option. For
-      example:</p>
-      <pre>
-adb -s emulator-5554 install <em>path/to/your/app</em>.apk
-</pre>
-
-      <p>To see a list of available device serial numbers, execute {@code adb devices}.</p>
-    </li>
-  </ol>
-
-  <p>If you don't see your application on the emulator, try closing the emulator and launching the
-  virtual device again from the AVD Manager. Sometimes when you install an application for the
-  first time, it won't show up in the application launcher or be accessible by other applications.
-  This is because the package manager usually examines manifests completely only on emulator
-  startup.</p>
-
-  <p>Be certain to create multiple AVDs upon which to test your application. You should have one
-  AVD for each platform and screen type with which your application is compatible. For instance, if
-  your application compiles against the Android 4.0 (API Level 14) platform, you should create an
-  AVD for each platform equal to and greater than 4.0 and an AVD for each <a href=
-  "{@docRoot}guide/practices/screens_support.html">screen type</a> you support, then test your
-  application on each one.</p>
-
-  <p class="note"><strong>Tip:</strong> If you have <em>only one</em> emulator running, you can
-  build your application and install it on the emulator in one simple step. Navigate to the root of
-  your project directory and use Ant to compile the project with <em>install mode</em>: <code>ant
-  install</code>. This will build your application, sign it with the debug key, and install it on
-  the currently running emulator.</p>
-
-  <h2 id="RunningOnDevice">Running on a Device</h2>
-
-  <p>Before you can run your application on a device, you must perform some basic setup for your
-  device:</p>
-
-  <ul>
-    <li>Enable <strong>USB debugging</strong> on your device.
-      <ul>
-        <li>On most devices running Android 3.2 or older, you can find the option under
-          <strong>Settings > Applications > Development</strong>.</li>
-        <li>On Android 4.0 and newer, it's in <strong>Settings > Developer options</strong>.
-          <p class="note"><strong>Note:</strong> On Android 4.2 and newer, <strong>Developer
-          options</strong> is hidden by default. To make it available, go
-          to <strong>Settings > About phone</strong> and tap <strong>Build number</strong>
-          seven times. Return to the previous screen to find <strong>Developer options</strong>.</p>
-        </li>
-      </ul>
-    </li>
-
-    <li>Ensure that your development computer can detect your device when connected via USB</li>
-  </ul>
-
-  <p>Read <a href="{@docRoot}tools/device.html#setting-up">Setting up a Device for
-  Development</a> for more information.</p>
-
-  <p>Once your device is set up and connected via USB, navigate to your SDK's <code>platform-tools/</code>
-  directory and install the <code>.apk</code> on the device:</p>
-  <pre>
-adb -d install <em>path/to/your/app</em>.apk
-</pre>
-
-  <p>The {@code -d} flag specifies that you want to use the attached device (in case you also have
-  an emulator running).</p>
-
-  <p>For more information on the tools used above, please see the following documents:</p>
-
-  <ul>
-    <li><a href="{@docRoot}tools/help/android.html">android Tool</a></li>
-
-    <li><a href="{@docRoot}tools/devices/emulator.html">Android Emulator</a></li>
-
-    <li><a href="{@docRoot}tools/help/adb.html">Android Debug Bridge</a> (ADB)</li>
-  </ul>
-
-  <h2 id="Signing">Application Signing</h2>
-
-  <p>As you begin developing Android applications, understand that all Android applications must be
-  digitally signed before the system will install them on an emulator or device. There are two ways
-  to do this: with a <em>debug key</em> (for immediate testing on an emulator or development
-  device) or with a <em>private key</em> (for application distribution).</p>
-
-  <p>The Android build tools help you get started by automatically signing your .apk files with a
-  debug key at build time. This means that you can build your application and install it on the
-  emulator without having to generate your own private key. However, please note that if you intend
-  to publish your application, you <strong>must</strong> sign the application with your own private
-  key, rather than the debug key generated by the SDK tools.</p>
-
-  <p>Please read <a href="{@docRoot}tools/publishing/app-signing.html">Signing Your
-  Applications</a>, which provides a thorough guide to application signing on Android and what it
-  means to you as an Android application developer. The document also includes a guide to publishing
-  and signing your application.</p>
-
- <h2 id="PluginReference">Android Plugin for Gradle</h2>
-
- <p>The Android build system uses the Android plugin for Gradle to support the Gradle Domain
- Specific Language (DSL) and declarative language elements. See the
- <a href="{@docRoot}tools/building/plugin-for-gradle.html">Android Plug-in for Gradle</a> section for
- a description of the plugin and a link to the complete list of the supported Gradle DSL elements.</p>
-
-
-
diff --git a/docs/html/tools/building/building-studio.jd b/docs/html/tools/building/building-studio.jd
deleted file mode 100644
index 2e3615e..0000000
--- a/docs/html/tools/building/building-studio.jd
+++ /dev/null
@@ -1,187 +0,0 @@
-page.title=Building and Running from Android Studio
-parent.title=Building and Running
-parent.link=index.html
-@jd:body
-
-<div id="qv-wrapper">
-  <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>
-      </ol>
-
-    <h2>See also</h2>
-      <ol>
-        <li><a href="{@docRoot}sdk/installing/studio-build.html">
-          Build System</a></li>
-        <li><a href="{@docRoot}tools/devices/managing-avds.html">
-          Managing AVDs with AVD Manager</a></li>
-        <li><a href="{@docRoot}tools/devices/emulator.html">
-          Using the Android Emulator</a></li>
-        <li><a href="{@docRoot}tools/device.html">
-          Using Hardware Devices</a></li>
-        <li><a href="{@docRoot}tools/publishing/app-signing.html">
-          Signing Your Applications</a></li>
-      </ol>
-  </div>
-</div>
-
-<p>
-  By default, Android Studio sets up new projects to deploy to the Emulator or
-  a physical device with just a few clicks.
-</p>
-
-<p>
-  To build and run your app, click <strong>Run 'app'</strong> <img src=
-  "{@docRoot}images/tools/as-run.png" alt="" style=
-  "vertical-align:bottom;margin:0;">. Android Studio builds your app with
-  Gradle, asks you to select a deployment target (an emulator or a connected
-  device), and then deploys your app to it. You can customize some of this
-  default behavior, such as selecting an automatic deployment target, by
-  <a href="#run-configuration">changing the run configuration</a>.
-</p>
-
-<p>
-  If you want to <a href="{@docRoot}tools/devices/emulator.html">use the Android
-  Emulator</a> to run your app, you need to have an Android Virtual Device
-  (AVD) ready. If you haven't already created one, then after you click
-  <strong>Run 'app'</strong>, click <strong>Create New Emulator</strong> in the
-  <strong>Select Deployment Target</strong> dialog. Follow the Virtual Device
-  Configuration wizard to define the type of device you want to emulate. For
-  more information, see <a href=
-  "{@docRoot}tools/devices/managing-avds.html">Managing AVDs with the AVD
-  Manager</a>.
-</p>
-
-<p>
-  If you're using a physical Android device, you need to enable USB debugging
-  on the device. For more information, see <a href=
-  "{@docRoot}tools/device.html">Using Hardware Devices</a>.
-</p>
-
-<p class="note">
-  <strong>Note:</strong> You can also deploy your app in debug mode by clicking
-  <strong>Debug 'app'</strong> <img src=
-  "{@docRoot}images/tools/as-debugbutton.png" alt="" style=
-  "vertical-align:bottom;margin:0;">. Running your app in debug mode
-  allows you to set breakpoints in your code, examine variables and evaluate
-  expressions at run time, and run debugging tools. To learn more, read about
-  <a href="{@docRoot}tools/debugging/debugging-studio.html">Debugging with
-  Android Studio</a>.
-</p>
-
-<h3 id="run-configuration">
-  Changing the run configuration
-</h3>
-
-<p>
-  The run configuration specifies the module to run, package to deploy,
-  activity to start, target device, emulator settings, and Logcat options. The
-  default run configuration launches the default project activity and uses the
-  <strong>Device Chooser</strong> for target device selection. If the default
-  settings don't suit your project or module, you can customize the run
-  configuration, or even create a new one, at the project, default, and module
-  levels. To edit a run configuration:
-</p>
-
-<ol>
-  <li>Select <strong>Run</strong> &gt; <strong>Edit Configurations</strong>.
-  </li>
-
-  <li>Expand the <strong>Android Application</strong> item and select an
-  existing run configuration.
-    <ul>
-      <li>To create a new run configuration, click the '<strong>+</strong>'
-      button in the top left corner of the dialog box and select
-      <strong>Android Application</strong>.
-      </li>
-    </ul>
-  </li>
-
-  <li>With a run configuration selected, adjust your desired settings. For
-  example, in the <strong>General</strong> tab, you can specify the APK
-  installation settings, launch options, and deployment target options.
-  </li>
-</ol>
-
-<h3 id="changing-variant">
-  Changing the build variant
-</h3>
-
-<p>
-  By default, Android Studio builds the debug version of your app, which is
-  intended only for testing, when you click <strong>Run 'app'</strong>. You
-  need to build the release version when <a href=
-  "{@docRoot}tools/publishing/preparing.html">preparing your app for public
-  release</a>.
-</p>
-<p>
-  To change the build variant Android Studio uses, go to <strong>Build</strong>
-  &gt; <strong>Select Build Variant</strong> and select a different one from
-  the drop-down menu. By default, new projects are set up with a debug and
-  release build variant.
-</p>
-
-<p>
-  Using <em>product flavors</em>, you can create additional build variants for
-  different versions of your app, each having different features or device
-  requirements. To learn more about build variants and product flavors, read
-  <a href="{@docRoot}tools/building/configuring-gradle.html">Configuring Gradle
-  Builds</a>.
-</p>
-
-<h3 id="gradle-console">
-  Monitoring the build process
-</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=""
-  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>
-
-<img src="{@docRoot}images/tools/studio-gradle-console.png" alt="">
-<p class="img-caption">
-  <strong>Figure 1.</strong> The Gradle Console in Android Studio.
-</p>
-
-<p>
-  If your build variants use product flavors, Gradle also invokes tasks to
-  build those product flavors. To view the list of all available build tasks,
-  click <strong>Gradle</strong> <img src=
-  "{@docRoot}images/tools/as-gradle.png" alt="" style=
-  "vertical-align:bottom;margin:0;"> on the right side of the IDE
-  window.
-</p>
-
-<p>
-  If an error occurs during the build process, the <em>Messages</em> window
-  will appear to describe the issue.
-</p>
-
-<h3 id="generating-apks">
-  Generating APKs
-</h3>
-
-<p>
-  When you click <strong>Run 'app'</strong>, Android Studio generates a debug
-  APK and deploys it to your target device. Before you can generate a release
-  version of your app for public distribution, however, you must first learn
-  how to <a href="{@docRoot}tools/publishing/app-signing.html#studio">sign your
-  app</a>. You can then generate multiple signed APKs of your debug or release
-  build variants. To locate the generated APK files, click the link in the
-  pop-up dialog, as shown in figure 2.
-</p>
-
-<p>
-  <img src="{@docRoot}images/tools/as-find-apk.png" alt="">
-</p>
-
-<p class="img-caption">
-  <strong>Figure 2.</strong> Click the link to locate the generated APK
-  files.
-</p>
\ No newline at end of file
diff --git a/docs/html/tools/building/configuring-gradle.jd b/docs/html/tools/building/configuring-gradle.jd
deleted file mode 100644
index 73a048b..0000000
--- a/docs/html/tools/building/configuring-gradle.jd
+++ /dev/null
@@ -1,549 +0,0 @@
-page.title=Configuring Gradle Builds
-
-@jd:body
-
-<div id="qv-wrapper">
-<div id="qv">
-<h2>In this document</h2>
-<ol>
-  <li><a href="#buildFileBasics">Build Configuration Basics</a>
-    <ol>
-      <li><a href="#buildFileBasics">Declare dependencies</a></li>
-      <li><a href="#buildFileBasics">Run ProGuard</a></li>
-      <li><a href="#configureSigning">Configure signing settings</a></li>
-    </ol>
-  </li>
-
-
-  <li><a href="#workBuildVariants">Work with build variants</a></li>
-</ol>
-
-
-<h2>See also</h2>
-<ul>
-<li><a href="{@docRoot}tools/building/plugin-for-gradle.html">
-Android Plugin for Gradle</a></li>
-</ul>
-</div>
-</div>
-
-
-<p>This section builds on the
-<a href="{@docRoot}sdk/installing/studio-build.html">Build System Overview</a> and
-<a href="{@docRoot}tools/building/building-studio.html">Build and Running from Android Studio</a>
-to show you how to use build variants based on product flavors and build types.</p>
-
-
-<h2 id="buildFileBasics">Build Configuration Basics</h2>
-
-<p>Android Studio projects contain a top-level build file and a build file for each module. The
-build files are called <code>build.gradle</code>, and they are plain text files that use
-<a href="http://groovy.codehaus.org">Groovy</a> syntax to configure the build with the elements
-provided by the Android plugin for Gradle. In most cases, you only need to edit the build files
-at the module level. For example, the build file for the app module in the
-<code>BuildSystemExample</code> project looks like this:</p>
-
-<pre>
-apply plugin: 'com.android.application'
-
-android {
-    compileSdkVersion 19
-    buildToolsVersion "19.0.0"
-
-    defaultConfig {
-        minSdkVersion 8
-        targetSdkVersion 19
-        versionCode 1
-        versionName "1.0"
-    }
-    buildTypes {
-        release {
-            minifyEnabled true
-            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
-        }
-    }
-}
-
-dependencies {
-    compile project(":lib")
-    compile 'com.android.support:appcompat-v7:19.0.1'
-    compile fileTree(dir: 'libs', include: ['*.jar'])
-}
-</pre>
-
-<p><code>apply plugin: 'com.android.application'</code> applies the Android plugin for Gradle to this build.
-This adds Android-specific build tasks to the top-level build tasks and makes the
-<code>android {...}</code> element available to specify Android-specific build options.</p>
-
-<p><code>android {...}</code> configures all the Android-specific build options:</p>
-
-<ul>
-    <li>The <code>compileSdkVersion</code> property specifies the compilation target.</li>
-    <li><p>The <code>buildToolsVersion</code> property specifies what version of the build tools
-        to use. To install several versions of the build tools, use the SDK Manager.</p>
-        <p class="note"><strong>Note:</strong> Always use a build tools version whose major
-        revision number is higher or equal to that of your compilation target and target SDK.</p>
-    </li>
-    <li><p>The <code>defaultConfig</code> element configures core settings and
-        entries in the manifest file (<code>AndroidManifest.xml</code>) dynamically from the
-        build system. The values in <code>defaultConfig</code> override those in the manifest
-        file.</p>
-        <p>The configuration specified in the <code>defaultConfig</code> element applies
-        to all build variants, unless the configuration for a build variant overrides some
-        of these values.</p>
-    </li>
-    <li>The <code>buildTypes</code> element controls how to build and package your app.
-        By default, the build system defines two build types: <em>debug</em> and
-        <em>release</em>. The debug build type includes debugging symbols and is signed with
-        the debug key. The release build type is not signed by default.
-        In this example the build file configures the release version to use
-        ProGuard.</li>
-</ul>
-
-<p>The <code>dependencies</code> element is outside and after the <code>android</code> element.
-This element declares the dependencies for this module. Dependencies are covered in the following
-sections.</p>
-
-<p class="note"><strong>Note:</strong> When you make changes to the build files in your project,
-Android Studio requires a project sync to import the build configuration changes. Click
-<strong>Sync Now</strong> on the yellow notification bar that appears for Android Studio
-to import the changes.</p>
-
-<img src="{@docRoot}images/tools/as-gradlesync.png" alt="" />
-<p class="img-caption"><strong>Figure 1.</strong> Sync the project in Android Studio.</p>
-
-<h3 id="declareDeps">Declare dependencies</h3>
-
-<p>The <code>app</code> module in this example declares three
-dependencies:</p>
-
-<pre>
-...
-dependencies {
-    // Module dependency
-    compile project(":lib")
-
-    // Remote binary dependency
-    compile 'com.android.support:appcompat-v7:19.0.1'
-
-    // Local binary dependency
-    compile fileTree(dir: 'libs', include: ['*.jar'])
-}
-</pre>
-
-<p>Each of these dependencies is described below. The build system adds all the
-<code>compile</code> dependencies to the compilation classpath and includes them in the final
-package.</p>
-
-<h4>Module dependencies</h4>
-
-<p>The <code>app</code> module depends on the <code>lib</code> module, because
-<code>MainActivity</code> launches <code>LibActivity1</code> as described in
-<a href="#openActFromLib">Open an Activity from a Library Module</a>.</p>
-
-<p><code>compile project(":lib")</code> declares a dependency on the <code>lib</code>
-module of <code>BuildSystemExample</code>. When you build the <code>app</code> module,
-the build system assembles and includes the <code>lib</code> module.</p>
-
-<h4>Remote binary dependencies</h4>
-
-<p>The <code>app</code> and <code>lib</code> modules both use the <code>ActionBarActivity</code>
-class from the Android Support Library, so these modules depend on it.</p>
-
-<p><code>compile 'com.android.support:appcompat-v7:19.0.1'</code> declares a dependency on
-version 19.0.1 of the Android Support Library by specifying its Maven coordinates. The Android Support
-Library is available in the <em>Android Repository</em> package of the Android SDK. If your
-SDK installation does not have this package, download and install it using the SDK Manager.</p>
-
-Android Studio configures projects to use the Maven Central Repository by default. (This
-configuration is included in the top-level build file for the project.)</p>
-
-<h4>Local binary dependencies</h4>
-
-<p>Some modules do not use any binary dependencies from the
-local file system. If you have modules that require local binary dependencies, copy the JAR
-files for these dependencies into <code>&lt;moduleName>/libs</code> inside your project.</p>
-
-<p><code>compile fileTree(dir: 'libs', include: ['*.jar'])</code> tells the build system that any
-JAR file inside <code>app/libs</code> is a dependency and should be included in the compilation
-classpath and in the final package.</p>
-
-<p>For more information about dependencies in Gradle, see
-<a href="http://www.gradle.org/docs/current/userguide/artifact_dependencies_tutorial.html">Dependency
-Management Basics</a> in the Gradle User Guide.</p>
-
-<h3 id="runProguard">Run ProGuard</h3>
-
-<p>The build system can run
-<a href="http://developer.android.com/tools/help/proguard.html">ProGuard</a> to obfuscate your
-classes during the build process. In <code>BuildSystemExample</code>, modify the build file for
-the app module to run ProGuard for the release build:</p>
-
-<pre>
-...
-android {
-    ...
-    buildTypes {
-        release {
-            minifyEnabled true
-            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
-        }
-    }
-}
-...
-</pre>
-
-<p><code>getDefaultProguardFile('proguard-android.txt')</code> obtains the default ProGuard
-settings from the Android SDK installation. Android Studio adds the module-specific rules file
-<code>proguard-rules.pro</code> at the root of the module, where you can add custom ProGuard
-rules.</p>
-
-
-
-<h3>Application ID for package identification </h3>
-<p>With the Android build system, the <em>applicationId</em> attribute is used to
-uniquely identify application packages for publishing. The application ID is set in the
-<em>android</em> section of the <code>build.gradle</code> file.
-</p>
-
-    <pre>
-    apply plugin: 'com.android.application'
-
-    android {
-        compileSdkVersion 19
-        buildToolsVersion "19.1"
-
-    defaultConfig {
-        <strong>applicationId "com.example.my.app"</strong>
-        minSdkVersion 15
-        targetSdkVersion 19
-        versionCode 1
-        versionName "1.0"
-    }
-    ...
-    </pre>
-
-<p class="note"><strong>Note:</strong> The <em>applicationId</em> is specified only in your
-{@code build.gradle} file, and not in the AndroidManifest.xml file.</p>
-
-<p>When using build variants, the build system enables you to uniquely identify different
-packages for each product flavors and build types. The application ID in the build type is added as
-a suffix to those specified for the product flavors. </p>
-
-   <pre>
-   productFlavors {
-        pro {
-            applicationId = "com.example.my.pkg.pro"
-        }
-        free {
-            applicationId = "com.example.my.pkg.free"
-        }
-    }
-
-    buildTypes {
-        debug {
-            applicationIdSuffix ".debug"
-        }
-    }
-    ....
-   </pre>
-
-<p>The package name must still be specified in the manifest file. It is used in your source code
-to refer to your R class and to resolve any relative activity/service registrations. </p>
-
-   <pre>
-   <?xml version="1.0" encoding="utf-8"?>
-   <manifest xmlns:android="http://schemas.android.com/apk/res/android"
-   <strong>package="com.example.app"</strong>>
-   </pre>
-
-<p class="note"><strong>Note:</strong> If you have multiple manifests (for example, a product
-flavor specific manifest and a build type manifest), the package name is optional in those manifests.
-If it is specified in those manifests, the package name must be identical to the package name
-specified in the manifest in the <code>src/main/</code> folder. </p>
-
-<p>For more information about the build files and process, see
-<a href="{@docRoot}sdk/installing/studio-build.html">Build System Overview</a>.</p>
-
-
-
-<h3 id="configureSigning">Configure signing settings</h3>
-
-<p>The debug and the release versions of the app differ on whether the application can be
-debugged on secure devices and on how the APK is signed. The build system signs the debug
-version with a default key and certificate using known credentials to avoid a password prompt at
-build time. The build system does not sign the release version unless you explicitly define a
-signing configuration for this build. If you do not have a release key, you can generate one as
-described in <a href="{@docRoot}tools/publishing/app-signing.html">Signing your Applications</a>.</p>
-
-
-<h2 id="workBuildVariants">Work with build variants</h2>
-
-<p>This section describes how the build system can help you create different versions of the same
-application from a single project. This is useful when you have a demo version and a paid version
-of your app, or if you want to distribute multiple APKs for different device configurations on
-Google Play.</p>
-
-<p>The build system uses <em>product flavors</em> to create different product versions of your app.
-Each product version of your app can have different features or device requirements. The build
-system also uses build types to apply different build and packaging settings to each product version.
-Each product flavor and build type combination forms a build variant. The build system generates a
-different APK for each build variant of your app. </p>
-
-<h3>Build variants</h3>
-
-<p>This example project consists of the two default build types (<em>debug</em> and <em>release</em>)
-and two product flavors for app type (demo and full). For more information on advanced uses of
-build variants, see
-<a href="{@docRoot}sdk/installing/studio-build.html"> Build System Overview</a> .</p>
-
-
-<h4>Product flavors </h4>
-
-<p>To create different product versions of your app:</p>
-
-<ol>
-    <li>Define product flavors in the build file.</li>
-    <li>Create additional source directories for each flavor.</li>
-    <li>Add the flavor-specific sources to your project.</li>
-</ol>
-
-<p>The rest of this section walks you through these steps in detail using a
-<code>BuildSystemExample</code> project. You create two flavors of the
-<code>BuildSystemExample</code> app, a demo flavor and a full flavor. Both flavors share
-<code>MainActivity</code>, to which you add a new button to launch a new activity,
-<code>SecondActivity</code>. This new activity is different for each flavor, so you simulate a
-situation where the new activity would have more features in the full flavor than in the demo
-flavor. At the end of the exercise, you end up with two different APKs, one for each flavor.</p>
-
-<h3>Define product flavors in the build file</h3>
-
-<p>To define two product flavors, edit the build file for the app module to add the following
-configuration:</p>
-
-<pre>
-...
-android {
-    ...
-    defaultConfig { ... }
-    signingConfigs { ... }
-    buildTypes { ... }
-    productFlavors {
-        demo {
-            applicationId "com.buildsystemexample.app.demo"
-            versionName "1.0-demo"
-        }
-        full {
-            applicationId "com.buildsystemexample.app.full"
-            versionName "1.0-full"
-        }
-    }
-}
-...
-</pre>
-
-<p>The product flavor definitions support the same properties as the <code>defaultConfig</code>
-element. The base configuration for all flavors is specified in <code>defaultConfig</code>, and each
-flavor overrides any default values. The build file above uses the <code>applicationId</code>
-property to assign a different package name to each flavor: since each flavor definition creates a
-different app, they each need a distinct package name.</p>
-
-<p class="note"><strong>Note:</strong> To distribute your app using
-<a href="{@docRoot}google/play/publishing/multiple-apks.html">Multiple APK Support</a> in
-Google Play, assign the same package name to all variants and give each variant a different
-<code>versionCode</code>. To distribute different variants of your app as separate apps in Google
-Play, assign a different package name to each variant.</p>
-
-<h4>Add additional source directories for each flavor</h4>
-
-<p>Now you create source folders and add a <code>SecondActivity</code> to each flavor. To create
-the source directory structure for the demo flavor:</p>
-
-<ol>
-    <li>On the <em>Project</em> panel, expand <strong>BuildSystemExample</strong>, and then expand
-        the <strong>app</strong> directory.</li>
-    <li>Right-click the <strong>src</strong> directory under <em>app</em> and select
-        <strong>New</strong> > <strong>Directory</strong>.</li>
-    <li>Enter "demo" as the name of the new directory and click <strong>OK</strong>.</li>
-    <li><p>Similarly, create the following directories:</p>
-        <ul>
-            <li><code>app/src/demo/java</code></li>
-            <li><code>app/src/demo/res</code></li>
-            <li><code>app/src/demo/res/layout</code></li>
-            <li><code>app/src/demo/res/values</code></li>
-        </ul>
-    </li>
-</ol>
-
-<p>The resulting directory structure looks like figure 1.</p>
-
-<img src="{@docRoot}images/tools/as-demoflavordirs.png" alt="" />
-<p class="img-caption"><strong>Figure 1.</strong> New source directories for the demo flavor.</p>
-
-<h4>Add a new activity to each flavor</h4>
-
-<p>To add <code>SecondActivity</code> to the <code>demo</code> flavor:</p>
-
-<ol>
-    <li>On the <em>Project</em> panel, right click on the <strong>app</strong> module and select
-        <strong>New</strong> > <strong>Activity</strong>.</li>
-    <li>Select <strong>Blank Activity</strong> and click <strong>Next</strong>.</li>
-    <li>Enter "SecondActivity" as the activity name.</li>
-    <li>Enter "com.buildsystemexample.app" as the package name and click
-        <strong>Finish</strong>.</li>
-    <li>Right click on the <strong>java</strong> directory under <em>app/src/demo</em> and select
-        <strong>New</strong> > <strong>Package</strong>.</li>
-    <li>Enter "com.buildsystemexample.app" as the package name and click <strong>OK</strong>.</li>
-    <li>Drag <strong>SecondActivity</strong> and drop it under the new package in
-        <em>app/src/demo/java</em>.</li>
-    <li>Accept the default values and click <strong>Refactor</strong>.</li>
-</ol>
-
-<p>To add the layout for <code>SecondActivity</code> and a strings resource to the demo flavor:</p>
-
-<ol>
-    <li>Drag <strong>activity_second.xml</strong> from <em>app/src/main/res/layout</em> and drop it
-        inside <em>app/src/demo/res/layout</em>.</li>
-    <li>Accept the default values on the window that appears and click <code>OK</code>.</li>
-    <li>Copy <strong>strings.xml</strong> from <em>app/src/main/res</em> into
-        <em>app/src/demo/res</em>.</li>
-    <li><p>Replace the contents of the new copy of <code>strings.xml</code> with the
-        following:</p>
-        <p><pre>
-&lt;?xml version="1.0" encoding="utf-8"?>
-&lt;resources>
-    &lt;string name="hello_world">Demo version only.&lt;/string>
-&lt;/resources>
-</pre></p>
-    </li>
-</ol>
-
-<p>Now you add source folders and <code>SecondActivity</code> to the full flavor by making a copy
-of the <code>demo</code> flavor:</p>
-
-<ol>
-    <li>On the <em>Project</em> panel, right click on the <strong>demo</strong> directory under
-        <em>app/src</em> and select <strong>Copy</strong>.</li>
-    <li>Right-click on the <strong>src/</strong> directory under <em>app/</em> and select
-        <strong>Paste</strong>.</li>
-    <li>On the window that appears, enter "full" as the new name and click <strong>OK</strong>.</li>
-    <li><p>Replace the contents of <strong>strings.xml</strong> under <em>src/full/res/values</em>
-        with the following:</p>
-        <p><pre>
-&lt;?xml version="1.0" encoding="utf-8"?>
-&lt;resources>
-    &lt;string name="hello_world">This is the full version!&lt;/string>
-&lt;/resources>
-</pre></p>
-    </li>
-</ol>
-
-<p class="note"><strong>Note:</strong> From this point on, you could develop
-<code>SecondActivity</code> independently inside each
-flavor. For example, you could add more features to this activity in the <code>full</code> flavor.</p>
-
-<p>To work on files from a particular flavor, click on <strong>Build Variants</strong> on the left
-of the IDE window and select the flavor you want to modify in the <em>Build Variants</em> panel,
-as shown in figure 2. Android Studio may show errors in source files from flavors other than the
-one selected in the <em>Build Variants</em> panel, but this does not affect the outcome of the
-build.</p>
-
-<img src="{@docRoot}images/tools/as-buildvariants.png" alt="" />
-<p class="img-caption"><strong>Figure 2.</strong> The Build Variants panel.</p>
-
-<h4>Launch a flavor-specific activity from the main activity</h4>
-
-<p>Since the flavor-specific activity (<code>SecondActivity</code>) has the same package name and
-activity name in both flavors, you can launch it from the main activity, which is common to all
-flavors. To modify the main activity:</p>
-
-<ol>
-    <li><p>Edit <code>activity_main.xml</code> and add a new button to
-        <code>MainActivity</code>:</p>
-        <p><pre>
-&lt;LinearLayout ...>
-    ...
-    &lt;Button
-        android:id="@+id/button2"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:text="@string/button2"
-        android:onClick="onButton2Clicked"/>
-&lt;/LinearLayout>
-</pre></p>
-    </li>
-    <li>Click on the areas marked in red in the layout file and press <strong>Alt</strong>+
-        <strong>Enter</strong>. Follow the suggestions from Android Studio to add a new string
-        resource with value “Open Second Activity” and an <code>onButton2Clicked</code> method to
-        <code>MainActivity</code>.</li>
-    <li><p>Add the following code to the <code>onButton2Clicked</code> method of
-        <code>MainActivity</code>:</p>
-        <p><pre>
-public void onButton2Clicked(View view) {
-    Intent intent = new Intent(this, SecondActivity.class);
-    startActivity(intent);
-}
-</pre></p>
-    </li>
-    <li><p>Edit the app's manifest to include a reference to <code>SecondActivity</code>:</p>
-        <p><pre>
-&lt;manifest ...>
-    &lt;application ...>
-        ...
-        &lt;activity
-            android:name="com.buildsystemexample.app.SecondActivity"
-            android:label="@string/title_activity_second" >
-        &lt;/activity>
-    &lt;/application>
-&lt;/manifest>
-</pre></p>
-    </li>
-</ol>
-
-
-<h4>Build types </h4>
-<p>Build types represent the build packaging versions generated for each app package. By default,
-the debug and release build types are provided.
-</p>
-
-<pre>
-...
-android {
-    ...
-    defaultConfig { ... }
-    signingConfigs { ... }
-    buildTypes { ... }
-    productFlavors {...}
-    buildTypes {
-        release {
-            minifyEnabled false
-            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
-        }
-         debug {
-            debuggable true
-        }
-    }
-}
-...
-</pre>
-
-<p class="note"><strong>Note:</strong> Although only the <em>release</em> build type appears in
-the default <strong>build.gradle</strong> file, both the release and debug build types are
-applied to each build. </p>
-
-<p>In this example, the product flavors and build types create the following build variants:
-<ul>
-<li>demoDebug</li>
-<li>demoRelease</li>
-<li>fullDebug</li>
-<li>fullRelease</li>
-</ul>
-
-<p>To build this example, click the <strong>Build</strong> menu option in Android Studio or invoke
-the <code>assemble</code> task from the command line. </p>
-
-<p class="note"><strong>Note:</strong> The <strong>Build &gt; Make Project</strong> option compiles
-all the source files in the entire project that have been modified since the last compilation. The
-<strong>Build &gt; Rebuild Project</strong> option recomplies all the source files in the project.</p>
-
-<p>Separate output folders are created for each build variant. </p>
diff --git a/docs/html/tools/building/index.jd b/docs/html/tools/building/index.jd
deleted file mode 100644
index b5a56c0..0000000
--- a/docs/html/tools/building/index.jd
+++ /dev/null
@@ -1,40 +0,0 @@
-page.title=Building and Running Overview
-@jd:body
-
-<div id="qv-wrapper">
-<div id="qv">
-  <h2>See also</h2>
-  <ol>
-    <li><a href="{@docRoot}tools/building/building-studio.html">
-      Building Your Project from Android Studio</a></li>
-    <li><a href="{@docRoot}tools/building/building-cmdline.html">
-      Building Your Project from the Command Line</a></li>
-    <li><a href="{@docRoot}sdk/installing/studio-build.html">
-      Build System</a></li>
-  </ol>
-</div>
-</div>
-
-
-<p>The Android build process provides project and module build settings so that
-your Android modules are compiled and packaged into <code>.apk</code> files, the containers
-for your application binaries, based on your build settings. The apk file for each app contains all
-of the information necessary to run your application on a device or emulator, such as compiled
-<code>.dex</code> files (<code>.class</code> files converted to Dalvik byte code), a binary version
-of the <code>AndroidManifest.xml</code> file, compiled resources (<code>resources.arsc</code>) and
-uncompiled resource files for your application.</p>
-
-<p>To run an application on an emulator or device, the application must be signed using debug or
-release mode. You typically want to sign your application in debug mode when you develop and test
-your application, because the build system uses a debug key with a known password so you do not have
-to enter it every time you build. When you are ready to release the application to Google
-Play, you must sign the application in release mode, using your own private key.</p>
-
-<p>If you are using Android development tools, the build system can sign the application for you
-when build your app for debugging. You must obtain a certificate to sign your app when you build
-and app for release. For more information on signing applications, see
-<a href="{@docRoot}tools/publishing/app-signing.html">Signing Your Applications</a>.</p>
-
-<p>The following diagram depicts the components involved in building and running an application:</p>
-
-<img src="{@docRoot}images/build-simplified.png" />
diff --git a/docs/html/tools/building/manifest-merge.jd b/docs/html/tools/building/manifest-merge.jd
deleted file mode 100644
index 2253584..0000000
--- a/docs/html/tools/building/manifest-merge.jd
+++ /dev/null
@@ -1,515 +0,0 @@
-page.title=Manifest Merging
-@jd:body
-
-<div id="qv-wrapper">
-<div id="qv">
-
-  <h2>In this document</h2>
-  <ol>
-    <li><a href="#merge-rules">Merge Conflict Rules</a></li>
-    <li><a href="#markers-selectors">Merge Conflict Markers and Selectors</a></li>
-    <li><a href="#inject-values">Injecting Build Values into a Manifest</a></li>
-    <li><a href="#merge-prodflavorsGroups">Manifest Merging Across Product Flavor Groups</a></li>
-    <li><a href="#implicit-permissions">Implicit Permissions</a></li>
-    <li><a href="#merge-errors">Handling Manifest Merge Build Errors</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/configuring-gradle.html">Configuring Gradle Builds</a> </li>
-  </ol>
-
-</div>
-</div>
-
-
-<p>With Android Studio and <a href="http://www.gradle.org">Gradle</a>-based builds, each app can
-contain manifest files in multiple locations, such as the <code>src/main/</code> folder for
-the <code>productFlavor</code>, libraries, Android ARchive (AAR) bundles of Android Library
-projects, and dependencies. During the build process, manifest merging combines the settings from
-the various <code>AndroidManifest.xml</code> files included in your app into a single, generated APK
-manifest file for app packaging and distribution. Manifest settings are merged based on the manifest
-priority, determined by the manifest's file location. Building your app merges the
-manifest elements, attributes, and sub-elements from these manifests for the specified
-<a href="{@docRoot}tools/building/configuring-gradle.html#workBuildVariants">build variant</a>.</p>
-
-
-<h2 id="merge-rules">Merge Conflict Rules</h2>
-<p>Merge conflicts occur when merged manifests contain the same manifest element but with a
-different attribute value that does not resolve based on the default merge conflict rules.
-<a href="#markers-selectors">Conflict markers and selectors</a> can also define custom merge rules,
-such as allowing an imported library to have a <code>minSdkVersion</code> higher than the
-version defined in the other higher priority manifests.  </p>
-
-<p>The manifest merge priority determines which manifest settings are retained in merge conflicts,
-with the settings in higher priority manifest overwriting those in lower priority manifests.
-The following list details which manifest settings are are the highest priority during the merge
-process:</p>
-
-<ul>
- <li>Highest priority: <code>buildType</code> manifest settings </li>
- <li>Higher priority: <code>productFlavor</code> manifest settings </li>
- <li>Medium priority: Manifests in the <code>src/main/</code> directory of an app project</li>
- <li>Low priority: Dependency and library manifest settings </li>
-</ul>
-
-<p>Manifest merge conflicts are resolved at the XML node and
-attribute levels based on the following merge rules. </p>
-
-<table>
-    <tr>
-        <th scope="col">High Priority Element</th>
-        <th scope="col">Low Priority Element</th>
-        <th scope="col">Manifest Merge Result</th>
-    </tr>
-    <tr>
-        <td rowspan="3">no attribute</td>
-        <td>no attribute</td>
-        <td>no attribute</td>
-    </tr>
-    <tr>
-
-        <td>attribute set to default</td>
-        <td>default attribute</td>
-    </tr>
-    <tr>
-
-        <td>attribute set to non-default </td>
-        <td>low priority attribute</td>
-    </tr>
-    <tr>
-        <td>attribute set to default</td>
-        <td rowspan="2">no attribute</td>
-        <td>default attribute</td>
-    </tr>
-    <tr>
-        <td>attribute set to non-default </td>
-
-        <td>high priority attribute</td>
-    </tr>
-    <tr>
-        <td>attribute set to default</td>
-        <td>attribute set to default</td>
-        <td>default attribute</td>
-    </tr>
-    <tr>
-        <td>attribute set to default</td>
-        <td>attribute set to non-default </td>
-        <td>low priority attribute</td>
-    </tr>
-    <tr>
-        <td>attribute set to non-default</td>
-        <td>attribute set to default</td>
-        <td>high priority attribute</td>
-    </tr>
-    <tr>
-        <td>attribute set to non-default</td>
-        <td>attribute set to non-default </td>
-        <td>Merge if settings match, otherwise causes conflict error.</td>
-    </tr>
-   </table>
-
-
-
-<p>Exceptions to the manifest merge rules: </p>
-
-<ul>
- <li>The <code>uses-feature android:required;</code> and
- <code>uses-library android:required</code> elements default to <code>true</code> and use
- an <em>OR</em> merge so that any required feature or library is included in the generated APK. </li>
-
- <li>If not declared, the
- <a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html"><code>&lt;uses-sdk&gt;</code></a>
- elements, <code>minSdkVersion</code> and
- <code>targetSdkVersion</code>, default to a value of 1. When
- merge conflicts occur, the value in the higher priority manifest version is used.</li>
-
- <li>Importing a library with a <code>minSdkVersion</code> value higher than the app's
- <code>src/main/</code> manifest manifest generates an error unless
- the <code>overrideLibrary</code> conflict marker is used.
-
- <p class="note"><strong>Note:</strong> If not explicitly declared, the <code>targetSdkVersion</code>
- defaults to the <code>minSdkVersion</code> value. When no <code><uses-sdk></code> element is
- present in any manifest or the <code>build.gradle</code> file, the
- <code>minSdkVersion</code> defaults to 1.</p> </li>
-
- <li>When importing a library with a <code>targetSdkVersion</code> value lower than the app's
- <code>src/main/</code> manifest, the manifest merge
- process explicitly grants permissions and ensures that the imported library functions properly. </li>
-
- <li>The <code>manifest</code> element only merges with child manifest elements. </li>
-
- <li>The <code>intent-filter</code> element is never changed and is always added to the common
- parent node in the merged manifest. </li>
-</ul>
-
-<p class="caution"><strong>Important:</strong> After the manifests are merged, the build process
-overrides the final manifest settings with any settings that are also in the
-<code>build.gradle</code> file. For more details, see
-<a href="{@docRoot}tools/building/configuring-gradle.html">Configuring Gradle Builds</a>. </p>
-
-
-
-<h2 id="markers-selectors">Merge Conflict Markers and Selectors</h2>
-<p>Manifest markers and selectors override the default merge rules through
-specific conflict resolutions. For example, use a conflict marker to
-merge a library manifest with a higher <code>minSdkVersion</code> value than the higher priority
-manifest, or to merge manifests with the same activity but different <code>android:theme</code>
-values. </p>
-
-<h3 id="conflict-markers">Merge Conflict Markers</h3>
-<p>A merge conflict marker is a special attribute in the Android tools namespace that defines a
-specific merge conflict resolution. Create a conflict marker to avoid a merge conflict error for
-conflicts not resolved by the default merge rules. Supported merge conflict markers include:</p>
-
-<dl>
-  <dt><code>merge</code></dt>
-    <dd>Merges attributes when there are no conflicts with the merge rules. The default merge
-    action.</dd>
-  <dt><code>replace</code></dt>
-    <dd>Replaces attributes in the lower priority manifest with those from the higher priority
-    manifest.</dd>
-  <dt><code>strict</code></dt>
-    <dd>Sets the merge policy level so that merged elements with same attributes, but different
-     values generate a build failure, unless resolved through the conflict rules.</dd>
-  <dt><code>merge-only</code></dt>
-    <dd>Allows merge actions for only lower priority attributes.</dd>
-  <dt><code>remove</code></dt>
-    <dd>Removes the specified lower priority element from the merged manifest.</dd>
-  <dt><code>remove-All</code></dt>
-    <dd>Removes all lower priority elements of the same node type from the merged manifest.</dd>
-</dl>
-
-
-<p>By default, the manifest merge process applies the <code>merge</code> conflict marker to
-the node level. All declared manifest attributes default to a <code>strict</code>
-merging policy. </p>
-
-<p>To set a merge conflict marker, first declare the namespace in the
-<code>AndroidManifest.xml</code> file. Then, enter the merge conflict marker in the manifest to
-specify a custom merge conflict action. This example inserts the <code>replace</code> marker to
-set a replace action to resolve conflicts between the <code>android:icon</code> and
-<code>android:label</code> manifest elements. </p>
-
-<pre>
-
-&lt;manifest xmlns:android="http://schemas.android.com/apk/res/android"
-   package="com.android.tests.flavorlib.app"
-   xmlns:tools="http://schemas.android.com/tools"&gt;
-
-   &lt;application
-       android:icon="&#64;drawable/icon"
-       android:label="&#64;string/app_name"
-       tools:replace="icon, label"&gt;
-       ...
-
-</manifest>
-
-</pre>
-
-
-<h4>Marker attributes</h4>
-<p>Conflict markers use <code>tools:node</code> and <code>tools:attr</code> attributes to
-restrict merge actions at the XML node or attribute level. </p>
-
-<p>The <code>tools:attr</code> markers use only the <code>restrict</code>, <code>remove</code>, and
-<code>replace</code> merge actions. Multiple <code>tools:attr</code> marker values can be applied
-to a specific element. For example, use <code>tools:replace="icon, label, theme"</code> to replace
-lower priority <code>icon</code>, <code>label</code>, and <code>theme</code> attributes. </p>
-
-
-<h4>Merge conflict marker for imported libraries</h4>
-<p>The <code>overrideLibrary</code> conflict marker applies to the <code>&lt;uses-sdk&gt;</code>
-manifest declaration and is used to import a library even though the library's
-<code>&lt;uses-sdk&gt;</code> values, such as <code>minSdkVersion</code>
-are set to different values than those in the other higher priority manifests. </p>
-
-<p>Without this marker, library manifest merge conflicts from the
-<code>&lt;uses-sdk&gt;</code> values cause the merge process to fail.</p>
-
-<p>This example applies the <code>overrideLibrary</code> conflict marker to resolve the merge
-conflict between <code>minSdkVersion</code> values in the <code>src/main/</code> manifest and an
-imported library manifest.
-
-
-<p><code>src/main/</code> manifest: </p>
-<pre>
-&lt;manifest xmlns:android="http://schemas.android.com/apk/res/android"
-   package="com.android.example.app"
-   xmlns:tools="http://schemas.android.com/tools"&gt;
-   ...
-   &lt;uses-sdk android:targetSdkVersion="22" android:minSdkVersion="2"
-             tools:overrideLibrary="com.example.lib1, com.example.lib2"/&gt;
-   ...
-</pre>
-
-<p>Library manifest: </p>
-
-<pre>
-&lt;manifest xmlns:android="http://schemas.android.com/apk/res/android"
-   	 package="com.example.lib1"&gt;
-     ...
-   	 &lt;uses-sdk android:minSdkVersion="4" /&gt;
-     ...
-    &lt;/manifest&gt;
-</pre>
-
-<p class="note"><strong>Note:</strong> The default merge process does not allow importing a library
-with a higher <code>minSdkVersion</code> than the app's <code>src/main/</code> manifest unless
-the <code>overrideLibrary</code> conflict marker is used. </p>
-
-
-
-<h3 id="marker-selectors">Marker Selectors</h3>
-<p>Marker selectors limit a merge action to a specific lower priority manifest. For example, a
-marker selector can be used to remove a permission from only one library, while allowing the
-same permission from other libraries.</p>
-
-<p>This example uses the <code>tools:node</code> marker to remove the <code>permisionOne</code>
-attribute, while the <code>tools:selector</code> selector specifies the specific library as
-<em>com.example.lib1</em>. The <code>permisionOne</code> permission is filtered from only the
-<code>lib1</code> library manifests. </p>
-
-<pre>
-&lt;manifest xmlns:android="http://schemas.android.com/apk/res/android"
-   package="com.android.example.app"
-   xmlns:tools="http://schemas.android.com/tools"&gt;
-   ...
-   &lt;permission
-         android:name="permissionOne"
-         tools:node="remove"
-         tools:selector="com.example.lib1"&gt;
-   ...
-</pre>
-
-
-
-<h2 id="inject-values">Injecting Build Values into a Manifest</h2>
-<p>Manifest merging can also be configured to use manifest placeholders to inject
-property values from the <code>build.gradle</code> file into the manifest attributes. </p>
-
-<p>Manifest placeholders use the syntax <code>&#36;{name}</code> for attribute values, where
-<code>name</code> is the injected <code>build.gradle</code> property. The <code>build.gradle</code>
-file uses the <code>manifestPlaceholders</code> property to define the placeholder values. </p>
-
-<p class="note"><strong>Note:</strong> Unresolved placeholder names in apps cause build failures.
-Unresolved placeholder names in libraries generate warnings and need to be resolved when importing
-the library into an app.</p>
-
-<p>This example shows the manifest placeholder <code>&#36;{applicationId}</code> used to inject the
-<code>build.gradle</code> <code>applicationId</code> property value in to <code>android:name</code>
-attribute value.  </p>
-
-<p class="note"><strong>Note:</strong> Android Studio provides a default
-<code>&#36;{applicationId}</code> placeholder for the <code>build.gradle</code>
-<code>applicationId</code> value that is not shown in the build file.
-When building an AAR (Android ARchive) package for library modules, do not provide an
-automatic <code>&#64;{applicationId}</code> placeholder in the
-<a href="{@docRoot}tools/building/manifest-merge.html">manifest merge</a> settings.
-Instead, use a different placeholder, such as <code>&#64;{libApplicationId}</code> and
-provide a value for it if you want to include application Ids in the archive library. </p>
-
-
-<p>Manifest entry:</p>
-
-<pre>
-
-&lt;activity
-android:name=".Main"&gt;
-     &lt;intent-filter&gt;
-     &lt;action android:name="&#36;{applicationId}.foo"&gt;
-         &lt;/action&gt;
-&lt;/intent-filter&gt;
-&lt;/activity&gt;
-
-</pre>
-
-
-<p>Gradle build file:</p>
-
-<pre>
-android {
-   compileSdkVersion 22
-   buildToolsVersion "22.0.1"
-
-   productFlavors {
-       flavor1 {
-           applicationId = "com.mycompany.myapplication.productFlavor1"
-       }
-}
-
-</pre>
-
-<p>Merged manifest value: </p>
-
-<pre>
-&lt;action android:name="com.mycompany.myapplication.productFlavor1.foo"&gt;
-</pre>
-
-
-<p>The manifest placeholder syntax and build file <code>manifestPlaceholders</code>
-property can be used to inject other manifest values. For properties other than the
-<code>applicationId</code>, the <code>manifestPlaceholders</code> property is explicitly declared
-in the <code>build.gradle</code> file. This example shows the manifest placeholder for injecting
-<code>activityLabel</code> values.</p>
-
-<p>Gradle build file: </p>
-
-<pre>
-android {
-    defaultConfig {
-        manifestPlaceholders = [ activityLabel:"defaultName"]
-    }
-    productFlavors {
-        free {
-        }
-        pro {
-            manifestPlaceholders = [ activityLabel:"proName" ]
-        }
-    }
-
-</pre>
-
-<p>Placeholder in the manifest file: </p>
-
-<pre>
-&lt;activity android:name=".MainActivity" android:label="&#36;{activityLabel}" &gt;
-</pre>
-
-<p class="note"><strong>Note:</strong> The placeholder value supports partial value injection,
-for example <code>android:authority="com.acme.&#36;{localApplicationId}.foo"</code>. </p>
-
-
-
-<h2 id="merge-prodflavorsGroups">Manifest Merging Across Product Flavor Groups</h2>
-
-<p>When using the <code>GroupableProductFlavor</code> property, the manifest merge
-priority of any manifests in the product flavor groups follows the order in which the
-product flavor groups are listed in the build file. The manifest merge process creates a single
-merged manifest for the product flavor groups based on the configured build variant. </p>
-
-<p>For example, if a build variant references the product flavors <code>x86</code>,
-<code>mdpi</code>, <code>21</code>, and <code>paid</code> from the respective product flavor
-groups <code>ABI</code>, <code>Density</code>, <code>API</code>, and <code>Prod</code>, listed
-in this order in the <code>build.gradle</code> file, then the manifest merge process merges the
-manifests in this priority order, which follows how the product flavors are listed in the build
-file.</p>
-
-<p>To illustrate this example, the following table shows how the product flavors are listed for
-each product flavor group. This combination of product flavors and groups defines the
-build variant. </p>
-<table>
-    <tr>
-        <th scope="col">Product Flavor Group</th>
-        <th scope="col">Product Flavor</th>
-    <tr>
-        <td>ABI</td>
-        <td>x86</td>
-    </tr>
-    <tr>
-       <td>density</td>
-        <td>mdpi</td>
-    </tr>
-    <tr>
-        <td>API</td>
-        <td>22</td>
-    </tr>
-    <tr>
-        <td>prod</td>
-        <td>paid</td>
-    </tr>
-</table>
-
-<p>Manifest merge order:</p>
-
- <ul>
-  <li>prod-paid AndroidManifest.xml (lowest priority) merges into API-22 AndroidManifest.xml</li>
-  <li>API-22 AndroidManifest.xml merges into density-mpi AndroidManifest.xml</li>
-  <li>density-mpi AndroidManifest.xml merges into ABI-x86 AndroidManifest.xml (highest priority)</li>
- </ul>
-
-
-<h2 id="implicit-permissions">Implicit Permissions</h2>
-<p>Importing a library that targets an Android runtime with implicitly
-granted permissions may automatically add the permissions to the resulting merged manifest.
-For example, if an application with a <code>targetSdkVersion</code> of 16 imports a library with a
-<code>targetSdkVersion</code> of 2, Android Studio adds the <code>WRITE_EXTERNAL_STORAGE</code>
-permission to ensure permission compatibility across the SDK versions.
-
-<p class="note"><strong>Note:</strong> More recent Android releases replace implicit
-permissions with permission declarations.</p>
-
-
-This table lists the importing library versions and the declared permissions.
-</p>
-
-  <table>
-    <tr>
-      <th>Importing this library version</th>
-      <th>Declares this permission in the manifest </th>
-    </tr>
-    <tr>
-      <td><code>targetSdkVersion</code> &lt; 2 </td>
-      <td><code>WRITE_EXTERNAL_STORAGE</code> </td>
-    </tr>
-    <tr>
-      <td><code>targetSdkVersion</code> &lt; 4 </td>
-      <td><code>WRITE_EXTERNAL_STORAGE</code>, <code>READ_PHONE_STATE</code> </td>
-    </tr>
-    <tr>
-      <td>Declared <code>WRITE_EXTERNAL_STORAGE</code></td>
-      <td><code>READ_EXTERNAL_STORAGE</code></td>
-    </tr>
-    <tr>
-      <td><code>targetSdkVersion</code> &lt; 16 and using the <code>READ_CONTACTS</code>
-      permission</td>
-      <td><code>READ_CALL_LOG</code></td>
-    </tr>
-    <tr>
-      <td><code>targetSdkVersion</code> &lt; 16 and using the <code>WRITE_CONTACTS</code>
-      permission</td>
-      <td><code>WRITE_CALL_LOG</code></td>
-    </tr>
-  </table>
-
-
-
-<h2 id="merge-errors">Handling Manifest Merge Build Errors</h2>
-<p>During the build process, the manifest merge process stores a record of each merge transaction
-in the <code>manifest-merger-&lt;productFlavor&gt;-report.txt</code> file in the module
-<code>build/outputs/logs</code> folder. A different log file is generated for each of the
-module's build variants. </p>
-
-<p>When a manifest merge build error occurs, the merge process records the error message
-describing the merge conflict in the log file. For example, the
-<code>android:screenOrientation</code> merge conflict between the following manifests causes
-a build error. </p>
-
-<p>Higher priority manifest declaration: </p>
-
-<pre>
-&lt;activity
-   android:name="com.foo.bar.ActivityOne"
-   android:screenOrientation="portrait"
-   android:theme="&#64;theme1"/&gt;
-</pre>
-
-<p>Lower priority manifest declaration: </p>
-
-<pre>
-&lt;activity
-   android:name="com.foo.bar.ActivityOne"
-   android:screenOrientation="landscape"/&gt;
-</pre>
-
-<p>Error log:</p>
-
-<pre>
-/project/app/src/main/AndroidManifest.xml:3:9 Error:
- Attribute activity&#64;screenOrientation value=(portrait) from AndroidManifest.xml:3:9
- is also present at flavorlib:lib1:unspecified:3:18 value=(landscape)
- Suggestion: add 'tools:replace="icon"' to <activity> element at AndroidManifest.xml:1:5 to override
-</pre>
-
-
diff --git a/docs/html/tools/building/multidex.jd b/docs/html/tools/building/multidex.jd
deleted file mode 100644
index e441a7c..0000000
--- a/docs/html/tools/building/multidex.jd
+++ /dev/null
@@ -1,468 +0,0 @@
-page.title=Building Apps with Over 65K Methods
-page.tags="65536","references","max","65k","dex","64k","multidex","multi-dex","methods"</p>
-
-@jd:body
-
-<div id="qv-wrapper">
-  <div id="qv">
-    <h2>In this document</h2>
-    <ol>
-      <li><a href="#about">
-        About the 65K 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>
-      <li><a href="#mdex-gradle">
-        Configuring Your App for Multidex with Gradle</a>
-        <ol>
-          <li><a href="#limitations">
-            Limitations of the multidex support library</a></li>
-        </ol>
-      </li>
-      <li><a href="#dev-build">
-        Optimizing Multidex Development Builds</a>
-        <ol>
-          <li><a href="#variants-studio">
-            Using Build Variants in Android Studio</a></li>
-        </ol>
-      </li>
-      <li><a href="#testing">
-        Testing Multidex Apps</a></li>
-    </ol>
-
-    <h2>See Also</h2>
-    <ol>
-      <li><a href="{@docRoot}tools/help/proguard.html">ProGuard</a>
-      </li>
-    </ol>
-  </div>
-</div>
-
-
-<p>
-  As the Android platform has continued to grow, so has the size of Android apps. When your
-  application and the libraries it references reach a certain size, you encounter build errors that
-  indicate your app has reached a limit of the Android app build architecture. Earlier versions of
-  the build system report this error as follows:
-</p>
-
-<pre>
-Conversion to Dalvik format failed:
-Unable to execute dex: method ID not in [0, 0xffff]: 65536
-</pre>
-
-<p>
-  More recent versions of the Android build system display a different error, which is an
-  indication of the same problem:
-</p>
-
-<pre>
-trouble writing output:
-Too many field references: 131000; max is 65536.
-You may try using --multi-dex option.
-</pre>
-
-<p>
-  Both these error conditions display a common number: 65,536. This number is significant in that
-  it represents the total number of references that can be invoked by the code within a single
-  Dalvik Executable (dex) bytecode file. If you have built an Android app and received this error,
-  then congratulations, you have a lot of code! This document explains how to move past this
-  limitation and continue building your app.
-</p>
-
-<p class="note">
-  <strong>Note:</strong> The guidance provided in this document supersedes the guidance given in
-  the Android Developers blog post <a href=
-  "http://android-developers.blogspot.com/2011/07/custom-class-loading-in-dalvik.html">Custom Class
-  Loading in Dalvik</a>.
-</p>
-
-
-<h2 id="about">About the 65K 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.
-</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
-  manages access to the additional DEX files and the code they contain.
-</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>.
-</p>
-
-
-<h2 id="avoid">Avoiding the 65K Limit</h2>
-
-<p>
-  Before configuring your app to enable use of 65K 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:
-</p>
-
-<ul>
-  <li>
-    <strong>Review your app's direct and transitive dependencies</strong> - Ensure any large library
-    dependency you include in your app is used in a manner that outweighs the amount of code
-    being added to the application. A common anti-pattern is to include a very large library
-    because a few utility methods were useful. Reducing your app code dependencies can often help
-    you avoid the dex reference limit.
-  </li>
-  <li>
-    <strong>Remove unused code with ProGuard</strong> - Configure the <a href=
-    "{@docRoot}tools/help/proguard.html">ProGuard</a> settings for your app to run ProGuard and
-    ensure you have shrinking enabled for release builds. Enabling shrinking ensures you
-    are not shipping unused code with your APKs.
-  </li>
-</ul>
-
-
-<p>
-  Using these techniques can help you avoid the build configuration changes required to enable more
-  method references in your app. These steps can also decrease the size of your APKs, which is
-  particularly important for markets where bandwidth costs are high.
-</p>
-
-
-<h2 id="mdex-gradle">Configuring Your App for Multidex with Gradle</h2>
-
-<p>
-  The Android plugin for Gradle available in Android SDK Build Tools 21.1 and higher supports
-  multidex as part of your build configuration. Make sure you update the Android SDK Build Tools
-  tools and the Android Support Repository to the latest version using the <a href=
-  "{@docRoot}tools/help/sdk-manager.html">SDK Manager</a> before attempting to configure your app
-  for multidex.
-</p>
-
-<p>
-  Setting up your app development project to use a multidex configuration requires that you make a
-  few modifications to your app development project. In particular you need to perform the
-  following steps:
-</p>
-
-<ul>
-  <li>Change your Gradle build configuration to enable multidex</li>
-  <li>Modify your manifest to reference the {@link android.support.multidex.MultiDexApplication}
-    class</li>
-</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:
-</p>
-
-<pre>
-android {
-    compileSdkVersion 21
-    buildToolsVersion "21.1.0"
-
-    defaultConfig {
-        ...
-        minSdkVersion 14
-        targetSdkVersion 21
-        ...
-
-        // Enabling multidex support.
-        multiDexEnabled true
-    }
-    ...
-}
-
-dependencies {
-  compile 'com.android.support:multidex:1.0.0'
-}
-</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.
-</p>
-
-<pre>
-&lt;?xml version="1.0" encoding="utf-8"?&gt;
-&lt;manifest xmlns:android="http://schemas.android.com/apk/res/android"
-    package="com.example.android.multidex.myapplication"&gt;
-    &lt;application
-        ...
-        android:name="android.support.multidex.MultiDexApplication"&gt;
-        ...
-    &lt;/application&gt;
-&lt;/manifest&gt;
-</pre>
-
-<p>
-  When these configuration settings are added to an app, the Android build tools construct a
-  primary dex (classes.dex) and supporting (classes2.dex, classes3.dex) as needed. The build system
-  will then package them into an APK file for distribution.
-</p>
-
-<p class="note">
-  <strong>Note:</strong> If your app uses extends the {@link android.app.Application} class, you
-  can override the attachBaseContext() method and call MultiDex.install(this) to enable multidex.
-  For more information, see the {@link android.support.multidex.MultiDexApplication} reference
-  documentation.
-</p>
-
-<h3 id="limitations">Limitations of the multidex support library</h3>
-
-<p>
-  The multidex support library has some known limitations that you should be aware of and test for
-  when you incorporate it into your app build configuration:
-</p>
-
-<ul>
-  <li>The installation of .dex files during startup onto a device's data partition is complex and
-  can result in Application Not Responding (ANR) errors if the secondary dex files are large. In
-  this case, you should apply code shrinking techniques with ProGuard to minimize the size of dex
-  files and remove unused portions of code.
-  </li>
-
-  <li>Applications that use multidex may not start on devices that run versions of the platform
-  earlier than Android 4.0 (API level 14) due to a Dalvik linearAlloc bug (Issue <a href=
-  "http://b.android.com/22586">22586</a>). If you are targeting API levels earlier than 14, make
-  sure to perform testing with these versions of the platform as your application can have issues
-  at startup or when particular groups of classes are loaded. Code shrinking can reduce or possibly
-  eliminate these potential issues.
-  </li>
-
-  <li>Applications using a multidex configuration that make very large memory allocation
-  requests may crash during run time due to a Dalvik linearAlloc limit (Issue <a href=
-  "http://b.android.com/78035">78035</a>). The allocation limit was increased in Android 4.0 (API
-  level 14), but apps may still run into this limit on Android versions prior to
-  Android 5.0 (API level 21).
-  </li>
-
-  <li>There are complex requirements regarding what classes are needed in the primary dex file when
-  executing in the Dalvik runtime. The Android build tooling updates handle the Android
-  requirements, but it is possible that other included libraries have additional dependency
-  requirements including the use of introspection or invocation of Java methods from native code.
-  Some libraries may not be able to be used until the multidex build tools are updated to allow you
-  to specify classes that must be included in the primary dex file.
-  </li>
-</ul>
-
-
-<h2 id="dev-build">Optimizing Multidex Development Builds</h2>
-
-<p>
-  A multidex configuration requires significantly increased build processing time because the build
-  system must make complex decisions about what classes must be included in the primary DEX file
-  and what classes can be included in secondary DEX files. This means that routine builds performed
-  as part of the development process with multidex typically take longer and can potentially slow
-  your development process.
-</p>
-
-<p>
-  In order to mitigate the typically longer build times for multidex output, you should create two
-  variations on your build output using the Android plugin for Gradle
-  <a href="http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Product-flavors">
-  {@code productFlavors}</a>: a development flavor and a production flavor.
-</p>
-
-<p>
-  For the development flavor, set a minimum SDK version of 21. This setting generates multidex
-  output much faster using the ART-supported format. For the release flavor, set a minimum SDK
-  version which matches your actual minimum support level. This setting generates a multidex APK
-  that is compatible with more devices, but takes longer to build.
-</p>
-
-<p>
-  The following build configuration sample demonstrates the how to set up these flavors in a Gradle
-  build file:
-</p>
-
-<pre>
-android {
-    productFlavors {
-        // Define separate dev and prod product flavors.
-        dev {
-            // dev utilizes minSDKVersion = 21 to allow the Android gradle plugin
-            // to pre-dex each module and produce an APK that can be tested on
-            // Android Lollipop without time consuming dex merging processes.
-            minSdkVersion 21
-        }
-        prod {
-            // The actual minSdkVersion for the application.
-            minSdkVersion 14
-        }
-    }
-          ...
-    buildTypes {
-        release {
-            runProguard true
-            proguardFiles getDefaultProguardFile('proguard-android.txt'),
-                                                 'proguard-rules.pro'
-        }
-    }
-}
-dependencies {
-  compile 'com.android.support:multidex:1.0.0'
-}
-</pre>
-
-<p>
-  After you have completed this configuration change, you can use the <code>devDebug</code> variant
-  of your app, which combines the attributes of the <code>dev</code> productFlavor and the
-  <code>debug</code> buildType. Using this target creates a debug app with proguard disabled,
-  multidex enabled, and minSdkVersion set to Android API level 21. These settings cause the Android
-  gradle plugin to do the following:
-</p>
-
-<ol>
-  <li>Build each module of the application (including dependencies) as separate dex files. This is
-  commonly referred to as pre-dexing.
-  </li>
-
-  <li>Include each dex file in the APK without modification.
-  </li>
-
-  <li>Most importantly, the module dex files will not be combined, and so the long-running
-  calculation to determine the contents of the primary dex file is avoided.
-  </li>
-</ol>
-
-<p>
-  These settings result in fast, incremental builds, because only the dex files of modified modules
-  are recomputed and repackaged into the APK file. The APK that results from these builds can be
-  used to test on Android 5.0 devices only. However, by implementing the configuration as a flavor,
-  you preserve the ability to perform normal builds with the release-appropriate minimum SDK level
-  and proguard settings.
-</p>
-
-<p>
-  You can also build the other variants, including a <code>prodDebug</code> variant
-  build, which takes longer to build, but can be used for testing outside of development.
-  Within the configuration shown, the <code>prodRelease</code> variant would be the final testing
-  and release version. If you are executing gradle tasks from the command line, you can use
-  standard commands with <code>DevDebug</code> appended to the end (such as <code>./gradlew
-  installDevDebug</code>). For more information about using flavors with Gradle tasks, see the
-  <a href="http://tools.android.com/tech-docs/new-build-system/user-guide">Gradle Plugin User
-  Guide</a>.
-</p>
-
-<p>
-  <strong>Tip:</strong> You can also provide a custom manifest, or a custom application class for each
-  flavor, allowing you to use the support library MultiDexApplication class, or calling
-  MultiDex.install() only for the variants that need it.
-</p>
-
-
-<h3 id="variants-studio">Using Build Variants in Android Studio</h3>
-
-<p>
-  Build variants can be very useful for managing the build process when using multidex. Android
-  Studio allows you to select these build variants in the user interface.
-</p>
-
-<p>
-  To have Android Studio build the "devDebug" variant of your app:
-</p>
-
-<ol>
-  <li>Open the <em>Build Variants</em> window from the left-sidebar. The option is located next to
-  <em>Favorites</em>.
-  </li>
-
-  <li>Click the name of the build variant to select a different variant, as shown in Figure 1.
-  </li>
-</ol>
-
-<img src="{@docRoot}images/tools/studio-build-variant.png" alt="" height="XXX" id="figure1">
-<p class="img-caption">
-  <strong>Figure 1.</strong> Screen shot of the Android Studio left panel showing a build variant.
-</p>
-
-<p class="note">
-  <strong>Note</strong>: The option to open this window is only available after you have
-  successfully synchronized Android Studio with your Gradle build file using the <strong>Tools &gt;
-  Android &gt; Sync Project with Gradle Files</strong> command.
-</p>
-
-
-<h2 id="testing">Testing Multidex Apps</h2>
-
-<p>
-  When using instrumentation tests with multidex apps, additional configuration is required to
-  enable the test instrumentation. Because the location of code for classes in multidex apps is not
-  within a single DEX file, instrumentation tests do not run properly unless configured for
-  multidex.
-</p>
-
-<p>
-  To test a multidex app with instrumentation tests, configure the
-  <a href="{@docRoot}reference/com/android/test/runner/MultiDexTestRunner.html">
-  MultiDexTestRunner</a> from the multidex testing support library. The following sample
-  {@code build.gradle} file demonstrates how to configure your build to use this test runner:
-</p>
-
-<pre>
-android {
-  defaultConfig {
-      ...
-      testInstrumentationRunner "com.android.test.runner.MultiDexTestRunner"
-  }
-}
-</pre>
-
-<p class="note">
-  <strong>Note:</strong> With Android Plugin for Gradle versions lower than 1.1, you need to add
-  the following dependency for <code>multidex-instrumentation</code>:
-<pre>
-dependencies {
-    androidTestCompile('com.android.support:multidex-instrumentation:1.0.1') {
-         exclude group: 'com.android.support', module: 'multidex'
-    }       
-}
-</pre>
-</p>
-
-
-<p>
-  You may use the instrumentation test runner class directly or extend it to fit your testing
-  needs. Alternatively, you can override onCreate in existing instrumentations like this:
-</p>
-
-<pre>
-public void onCreate(Bundle arguments) {
-    MultiDex.install(getTargetContext());
-    super.onCreate(arguments);
-    ...
-}
-</pre>
-
-<p class="note">
-  <strong>Note:</strong> Use of multidex for creating a test APK is not currently supported.
-</p>
diff --git a/docs/html/tools/building/plugin-for-gradle.jd b/docs/html/tools/building/plugin-for-gradle.jd
deleted file mode 100644
index aed1af2..0000000
--- a/docs/html/tools/building/plugin-for-gradle.jd
+++ /dev/null
@@ -1,450 +0,0 @@
-page.title=Android Plugin for Gradle
-
-@jd:body
-
-<div id="qv-wrapper">
-<div id="qv">
-<h2>In this document</h2>
-<ol>
-  <li><a href="#buildConf">Build Configuration</a></li>
-  <li><a href="#buildConv">Build by Convention</a></li>
-  <li><a href="#projectModules">Project and Module Settings</a></li>
-  <li><a href="#dependencies">Dependencies</a></li>
-  <li><a href="#buildTasks">Build Tasks</a></li>
-  <li><a href="#gradleWrapper">Gradle Wrapper</a></li>
-  <li><a href="#buildVariants">Build Variants</a></li>
-</ol>
-
-<h2>Reference</h2>
-<ul>
-  <li>
-  <a class="external-link" href="http://google.github.io/android-gradle-dsl">
-    Android Plugin DSL</a>
-  </li>
-</ul>
-
-<h2>See also</h2>
-<ul>
-<li><a href="{@docRoot}sdk/installing/studio-build.html">
-Build System Overview</a></li>
-<li><a href="{@docRoot}tools/building/index.html">
-Building and Running</a></li>
-<li><a href="{@docRoot}tools/building/building-studio.html">
-Building and Running from Android Studio</a></li>
-</ul>
-
-</div>
-</div>
-
-<p>The Android build system consists of an Android plugin for <em>Gradle</em>.
-<a href="http://www.gradle.org/">Gradle</a> is an advanced build toolkit that manages
-dependencies and allows you to define custom build logic. Android Studio uses a Gradle wrapper
-to fully integrate the Android plugin for Gradle. The Android plugin for Gradle also runs
-independent of Android Studio. This means that you can build your Android apps from within Android
-Studio and from the command line on your machine or on machines where Android Studio is not installed
-(such as continuous integration servers).</p>
-
-<p>The output of the build is the same whether you are building a project from the command line,
-on a remote machine, or using Android Studio.</p>
-
-<h2 id="buildConf">Build Configuration</h2>
-
-<p>The build configuration for your project is defined inside <code>build.gradle</code> files,
-which are plain text files that use the syntax and options from Gradle and the Android plugin
-to configure the following aspects of your build:</p>
-
-<ul>
-    <li><em>Build variants</em>. The build system can generate multiple APKs with different
-        product and build configurations for the same module. This is useful when you want to
-        build different versions of your application without having to create a separate projects
-        or modules for each version.</li>
-    <li><em>Dependencies</em>. The build system manages project dependencies and supports
-        dependencies from your local filesystem and from remote repositories. This prevents you
-        from having to search, download, and copy binary packages for your dependencies into your
-        project directory.</li>
-    <li><em>Manifest entries</em>. The build system enables you to specify values for some
-        elements of the manifest file in the build variant configuration. These build values
-        override the existing values in the manifest file. This is useful if you want to generate
-        multiple APKs for your modules where each of the <code>apk</code> files has a different
-        application name, minimum SDK version, or target SDK version. When multiple manifests are
-        present, manifest settings are merged in priority of buildType and productFlavor,
-        <code>/main</code> manifest, and the library manifests.</li>
-    <li><em>Signing</em>. The build system enables you to specify signing settings in the build
-        configuration, and it can sign your APKs during the build process.</li>
-    <li><em>ProGuard</em>. The build system enables you to specify a different
-        <a href="{@docRoot}tools/help/proguard.html">ProGuard</a> rules
-        file for each build variant. The build system can run ProGuard to obfuscate your classes
-        during the build process.</li>
-    <li><em>Testing</em>. For most templates, the build system creates a test directory,
-        <em>androidTest</em> and generates a test APK from the test sources in your project, so
-        you do not have to create a separate test project. The build system can also run your tests
-        during the build process.</li>
-</ul>
-
-<p>Gradle build files use Domain Specific Language (DSL) to describe and manipulate the build logic
-through <em>Groovy</em> syntax. <a href="http://groovy.codehaus.org/">Groovy</a> is a dynamic
-language that you can use to define custom build logic and to interact with the Android-specific
-elements provided by the Android plugin for Gradle.</p>
-
-<h2 id="buildConv">Build by Convention</h2>
-
-<p>The Android Studio build system assumes <em>sensible defaults</em> for the project structure
-and other build options. If your project adheres to these conventions, your Gradle build files are
-very simple. When some of these conventions do not apply to your project, the flexibility of the
-build system allows you to configure almost every aspect of the build process. For example, if
-you need to replace the default source folders in your module directories, you can configure a new
-directory structure in the module's build file. </p>
-
-<h2 id="projectModules">Project and Module Settings</h2>
-
-<p>A <em>project</em> in Android Studio represents the top-level Android development structure.
-Android Studio projects contain project files and one or more application modules. A
-<em>module</em> is a component of your app that you can build, test, or debug independently.
-Modules contain the source code and resources for your apps. Android Studio projects can contain
-several kinds of modules:</p>
-
-<ul>
-    <li><em>Android application modules</em> contain application (mobile, TV, Wear, Glass) code and
-         may depend on library modules, although many Android apps consist of only one application
-         module. The build system generates APK packages for application modules. </li>
-    <li><em>Android library modules</em> contain reusable Android-specific code and resources.
-        The build system generates an AAR (Android ARchive) package for library modules.</li>
-    <li><em>App Engine modules</em> contain code and resources for App Engine integration.</li>
-    <li><em>Java library modules</em> contain reusable code. The build system generates a
-        JAR package for Java library modules.</li>
-</ul>
-
-<p>Android Studio projects contain a top-level project Gradle build file that allows you to add the
-configuration options common to all application modules in the project. Each application module
-also has its own build.gradle file for build settings specific to that module.</p>
-
-<h3 id="projectBuildFile">Project Build File</h3>
-<p>By default, the project-level Gradle file uses <em>buildscript</em> to define the Gradle
-<em>repositories</em> and <em>dependencies</em>. This allows different projects to use different
-Gradle versions. Supported repositories include JCenter, Maven Central, or Ivy. This example
-declares that the build script uses the JCenter repository and a classpath dependency artifact
-that contains the Android plugin for Gradle version 1.0.1.
-</p>
-<p>
-<pre>
-buildscript {
-    repositories {
-        jcenter()
-    }
-    dependencies {
-        classpath 'com.android.tools.build:gradle:1.0.1'
-
-        // NOTE: Do not place your application dependencies here: they belong
-        // in the individual module build.gradle files
-    }
-}
-
-allprojects {
-   repositories {
-       jcenter()
-   }
-}
-</pre>
-
-<p class="note"><strong>Note:</strong> The SDK location for the Android Studio project is defined in
-the <em>local.properties</em> file in the <code>sdk.dir<sdk location></code> setting or through an
-<code>ANDROID_HOME</code> environment variable.</p>
-
-<h3 id="moduleBuildFile">Module Build File</h3>
-<p>The application module Gradle build file allows you to configure module build settings,
-including overriding the <code>src/main</code> manifest settings and setting custom packaging
-options. </p>
-
-<ul>
-   <li>android settings </li>
-       <ul>
-          <li>compileSdkVersion</li>
-          <li>buildToolsVersion</li>
-       </ul>
-
-   <li>defaultConfig and productFlavors </li>
-       <ul>
-          <li>manifest properties such as applicationId, minSdkVersion, targetSdkVersion, and test
-              information</li>
-       </ul>
-
-   <li>buildTypes</li>
-       <ul>
-          <li>build properties such as debuggable, ProGuard enabling, debug signing, version name
-              suffix and testinformation</li>
-       </ul>
-
-   <li>dependencies</li>
-</ul>
-
-<p>This example applies the Android plugin, uses the default configuration to override several
-manifest properties, creates two build types: release and debug, and declares several dependencies.
-</p>
-
-<pre>
-apply plugin: 'com.android.application'
-
-android {
-    compileSdkVersion 20
-    buildToolsVersion "20.0.0"
-
-    defaultConfig {
-        applicationId "com.mycompany.myapplication"
-        minSdkVersion 13
-        targetSdkVersion 20
-        versionCode 1
-        versionName "1.0"
-    }
-
-    buildTypes {
-        release {
-            minifyEnabled false
-            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
-        }
-         debug {
-            debuggable true
-        }
-    }
-}
-
-dependencies {
-    compile fileTree(dir: 'libs', include: ['*.jar'])
-    compile 'com.android.support:appcompat-v7:20.0.0'
-    compile project(path: ':app2, configuration: 'android-endpoints')
-}
-</pre>
-
-
-<p class="note"><strong>Note:</strong> You can inject custom build logic for property values defined
-by a function that gets called by the property, for example:
-<pre>
-def computeVersionName() {
-  ...
-}
-
-android {
-    defaultConfig {
-        versionName computeVersionName()
-        ...
-    }
-}
-</pre>
-</p>
-
-
-
-<h2 id="dependencies">Dependencies</h2>
-
-<p>The Android Studio build system manages project dependencies and supports module dependencies,
-local binary dependencies, and remote binary dependencies.</p>
-
-<dl>
-    <dt><em>Module Dependencies</em></dt>
-    <dd><p>An application module can include in its build file a list of other modules it depends on.
-        When you build this module, the build system assembles and includes the required
-        modules.</p></dd>
-    <dt><em>Local Dependencies</em></dt>
-    <dd><p>If you have binary archives in your local filesystem that a module depends on, such as
-        JAR files, you can declare these dependencies in the build file for that module.</p></dd>
-    <dt><em>Remote Dependencies</em></dt>
-    <dd><p>When some of your dependencies are available in a remote repository, you do not have
-        to download them and copy them into your project. The Android Studio build system supports
-        remote dependencies from repositories, such as <a href="http://maven.apache.org/">Maven</a>,
-        and dependency managers, such as <a href="http://ant.apache.org/ivy/">Ivy</a>. </p>
-        <p>Many popular software libraries and tools are available in public Maven repositories.
-        For these dependencies you only have to specify their Maven coordinates, which uniquely
-        identify each element in a remote repository. The format for Maven coordinates used in the
-        build system is <code>group:name:version</code>. For example, the Maven coordinates for
-        version 16.0.1 of the Google Guava libraries are
-        <code>com.google.guava:guava:16.0.1</code>.</p>
-        <p>The <a href="http://search.maven.org">Maven Central Repository</a> is widely used to
-        distribute many libraries and tools.</p>
-    </dd>
-</dl>
-
-<h2 id="buildTasks">Build Tasks</h2>
-
-<p>The Android Studio build system defines a hierarchical set of build tasks: the top-level or
-anchor tasks invoke dependent tasks to produce their collective build outcomes. The top-level build
-tasks are:</p>
-
-<dl>
-   <dt>assemble </dt>
-   <dd><p>Builds the project output. </p></dd>
-   <dt>check </dt>
-   <dd><p>Runs checks and tests.</p></dd>
-   <dt>build </dt>
-   <dd><p>Runs both assemble and check. </p></dd>
-   <dt>clean </dt>
-   <dd><p>Performs the clean.</p></dd>
-</dl>
-
-<p>The Android plugin provides the <em>connectedCheck</em> and <em>deviceCheck</em> tasks
-for checks run on connected, emulated, and remote devices. Gradle tasks can be viewed by clicking
-the Gradle tab</a> in the right margin.</p>
-
-<p>You can view the list of available tasks and invoke any task from Android Studio and from
-the command line, as described in
-<a href="{@docRoot}tools/building/building-studio.html">Building and Running from Android Studio</a>
-and <a href="{@docRoot}tools/building/building-cmdline.html">Build the project from
-the command line</a>.</p>
-
-<h2 id="gradleWrapper">Gradle Wrapper</h2>
-
-<p>Android Studio projects contain the <em>Gradle wrapper</em>, which consists of:</p>
-
-<ul>
-    <li>A JAR file</li>
-    <li>A properties file</li>
-    <li>A shell script for Windows platforms</li>
-    <li>A shell script for Mac and Linux platforms</li>
-</ul>
-
-<p class="note"><strong>Note:</strong> You should submit all of these files to your source
-control system.</p>
-
-<p>Using the Gradle wrapper (instead of the local Gradle installation) ensures that
-you always run the version of Gradle defined in the <em>local.properties</em> file. To configure your
-project to use a newer version of Gradle, edit the properties file and specify the new version there.
-</p>
-
-<p>Android Studio reads the properties file from the Gradle wrapper directory inside your project
-and runs the wrapper from this directory, so you can seamlessly work with multiple projects
-that require different versions of Gradle.</p>
-
-<p class="note"><strong>Note:</strong> Android Studio does not use the shell scripts, so any
-changes you make to them won't work when building from the IDE. You should define your custom
-logic inside Gradle build files instead.</p>
-
-<p>You can run the shell scripts to build your project from the command line on your development
-machine and on other machines where Android Studio is not installed.</p>
-
-<p class="caution"><strong>Caution:</strong> When you create a project, only use the Gradle wrapper
-scripts and JAR from a trusted source, such as those generated by Android Studio. </p>
-
-
-<h2 id="buildVariants">Build Variants</h2>
-
-<p>Each version of your app is represented in the build system by a <em>build variant</em>.
-Build variants are combinations of product flavors and build types. Product flavors represent
-product build versions of an app, such as free and paid. Build types represent the build
-packaging versions generated for each app package, such as debug and release. The build system
-generates APKs for each combination of product flavor and build type.</p>
-
-<p>By default, Android Studio defines default configuration settings, <code>defaultConfig</code> in
-the build.gradle file, and two build types (<em>debug</em> and <em>release</em>). This creates two
-build variants, debug and release, and the build system generates an
-APK for each variant. </p>
-
-<p>Adding two product flavors, <em>demo</em> and <em>full</em> along
-with the default build types <em>debug</em> and <em>release</em> generates four build variants,
-each with its own customized configuration:</p>
-
-<ul>
-    <li>demoDebug</li>
-    <li>demoRelease</li>
-    <li>fullDebug</li>
-    <li>fullRelease</li>
-</ul>
-
-Resources are merged across the multiple Android application sources:
-<ul>
-    <li>Build variants based on the buildType, and productFlavor build settings</li>
-    <li>The main sourceSet, generally located in src/main/res</li>
-    <li>Library Project dependencies, which contribute resources through the res entry in their aar
-    bundle.</li>
-</ul>
-
-<p>The priority of the merge order from lowest to highest is libraries/dependencies -> main src ->
-productFlavor -> buildType.</p>
-
-
-<p>Some projects have complex combinations of features along more than one dimension, but they
-still represent the same app. For example, in addition to having a demo and a full version of the
-app, some games may contain binaries specific to a particular CPU/ABI. The flexibility of
-the build system makes it possible to generate the following build variants for such a project:</p>
-
-<ul>
-    <li>x86-demoDebug</li>
-    <li>x86-demoRelease</li>
-    <li>x86-fullDebug</li>
-    <li>x86-fullRelease</li>
-    <li>arm-demoDebug</li>
-    <li>arm-demoRelease</li>
-    <li>arm-fullDebug</li>
-    <li>arm-fullRelease</li>
-    <li>mips-demoDebug</li>
-    <li>mips-demoRelease</li>
-    <li>mips-fullDebug</li>
-    <li>mips-fullRelease</li>
-</ul>
-
-<p>This project would consist of two build types (<em>debug</em> and <em>release</em>)
-and two <em>dimensions</em> of product flavors, one for app type (demo or full) and one for
-CPU/ABI (x86, ARM, or MIPS). </p>
-
-
-<h3 id="sourceDirectories">Source directories</h3>
-
-<p>To build each version of your app, the build system combines source code and
-resources from:</p>
-
-<ul>
-    <li><code>src/main/</code> - the main source directory (the default configuration common to all
-    variants)</li>
-    <li><code>src/&lt;buildType>/</code> - the <buildType> source directory</li>
-    <li><code>src/&lt;productFlavor>/</code> - the <productFlavor> source directory</li>
-</ul>
-
-<p class="note"><strong>Note:</strong> The build type and product flavor source directories are optional,
-as Android Studio does not create these directories for you. You should create these directories
-as you add build types and product flavors to the build configuration files. The build system does not
-use these directories if they are not present.</p>
-
-<p>For projects that do not define any flavors, the build system uses the <em>defaultConfig</em>
-settings, the main app directory and the default build type directories. For example, to generate
-the default <em>debug</em> and <em>release</em> build variants in projects with no product flavors,
-the build system uses:</p>
-<ul>
-  <li><code>src/main/</code> (default configuration)</li>
-  <li><code>src/release/</code> (build type)</li>
-  <li><code>src/debug/</code> (build type)</li>
-</ul>
-
-<p>For projects that define a set of product flavors, the build system merges the build type, product
-flavor and main source directories. For example, to generate the <em>full-debug</em> build variant,
-the build system merges the build type, product flavor and main directories:</p>
-<ul>
-   <li><code>src/main/</code> (default configuration)</li>
-   <li><code>src/debug/</code> (build type)</li>
-   <li><code>src/full/</code> (flavor)</li>
-</ul>
-
-<p>For projects that use flavor dimensions, the build system merges one flavor source directory per
-dimension. For example, to generate the <em>arm-demo-release</em> build variant, the build system
-merges:</p>
-<ul>
-  <li><code>src/main/</code> (default configuration)</li>
-  <li><code>src/release/</code> (build type)</li>
-  <li><code>src/demo/</code> (flavor - app type dimension)</li>
-  <li><code>src/arm/</code> (flavor - ABI dimension)</li>
-</ul>
-
-
-<p>The source code from these directories is used together to generate the output for a build
-variant. You can have classes with the same name in different directories as long as those
-directories are not used together in the same variant. </p>
-
-<p>The build system also merges all the manifests into a single manifest, so each build variant
-can define different components or permissions in the final manifest. The manifest merge priority
-from lowest to highest is libraries/dependencies -> main src -> productFlavor -> buildType. </p>
-
-<p>The build system merges all the resources from the all the source directories. If different
-folders contain resources with the same name for a build variant, the priority order is the
-following: build type resources override those from the product flavor, which override the
-resources in the main source directory, which override those in any libraries.</p>
-
-<p class="note"><strong>Note:</strong> Build variants enable you to reuse common activities,
-application logic, and resources across different versions of your app.</p>
-
-
diff --git a/docs/html/tools/debugging/annotations.jd b/docs/html/tools/debugging/annotations.jd
deleted file mode 100644
index fbdb9e4..0000000
--- a/docs/html/tools/debugging/annotations.jd
+++ /dev/null
@@ -1,377 +0,0 @@
-page.title=Improving Code Inspection with Annotations
-@jd:body
-
-<div id="qv-wrapper">
-<div id="qv">
-
-    <h2>In this document</h2>
-    <ol>
-      <li><a href="#adding-nullness">Adding Nullness Annotations</a></li>
-      <li><a href="#res-annotations">Adding Resource Annotations</a></li>
-      <li><a href="#thread-annotations">Adding Thread Annotations</a></li>
-      <li><a href="#value-constraint">Adding Value Constraint Annotations</a></li>
-      <li><a href="#permissions">Adding Permission Annotations</a></li>
-      <li><a href="#check-result">Adding CheckResult Annotations</a></li>
-      <li><a href="#call-super">Adding CallSuper Annotations</a></li>
-      <li><a href="#enum-annotations">Creating Enumerated Annotations</a></li>
-    </ol>
-
-  <h2>See also</h2>
-  <ol>
-     <li><a href="{@docRoot}tools/help/lint.html">lint (reference)</a></li>
-     <li><a href="{@docRoot}tools/debugging/improving-w-lint.html">Improving Your Code with lint</a></li>
-     <li><a href="{@docRoot}tools/studio/index.html#annotations">Annotations in Android Studio</a></li>
-  </ol>
-
-</div>
-</div>
-
-<p>Using code inspections tools such as <a href="{@docRoot}tools/help/lint.html">lint</a> can help
-you find problems and improve your code, but inspection tools can only infer so much. Android
-resource ids, for example, use an {@code int} to identify strings, graphics, colors and other
-resource types, so inspection tools cannot tell when you have specified a string resource where
-you should have specified a color. This situation means that your app may render incorrectly or
-fail to run at all, even if you use code inspection. </p>
-
-<p>Annotations allow you to provide hints to code inspections tools like {@code lint}, to help
-detect these, more subtle code problems. They are added as metadata tags that you attach to
-variables, parameters, and return values to inspect method return values, passed parameters, and
-local variables and fields. When used with code inspections tools, annotations can help you detect
-problems, such as null pointer exceptions and resource type
-conflicts. </p>
-
-<p>For more information on enabling <a href="{@docRoot}tools/help/lint.html">lint</a> inspections
-and running <a href="{@docRoot}tools/help/lint.html">lint</a>,
-see <a href="{@docRoot}tools/debugging/improving-w-lint.html">Improving Your Code with lint</a>.</p>
-
-<p>Android supports a variety of annotations for insertion in the methods, parameters, and return
-values in your code, for example:</p>
-
-<dl>
-    <dt>{@link android.support.annotation.Nullable @Nullable}</dt>
-    <dd>Can be null.</dd>
-
-    <dt>{@link android.support.annotation.NonNull @NonNull}</dt>
-    <dd>Cannot be null.</dd>
-
-    <dt>{@link android.support.annotation.StringRes @StringRes}</dt>
-    <dd>References a <a href="{@docRoot}reference/android/R.string.html"><code>R.string</code></a>
-    resource.</dd>
-
-    <dt>{@link android.support.annotation.DrawableRes @DrawableRes}</dt>
-    <dd>References a
-    <a href="{@docRoot}guide/topics/resources/drawable-resource.html"><code>Drawable</code></a>
-    resource. </dd>
-
-    <dt>{@link android.support.annotation.ColorRes @ColorRes}</dt>
-    <dd>References a <a href="{@docRoot}reference/android/graphics/Color.html"><code>Color</code></a>
-    resource. </dd>
-
-    <dt>{@link android.support.annotation.InterpolatorRes @InterpolatorRes}</dt>
-    <dd>References a
-    <a href="{@docRoot}reference/android/view/animation/Interpolator.html"><code>Interpolator</code></a>
-    resource. </dd>
-
-    <dt>{@link android.support.annotation.AnyRes @AnyRes}</dt>
-    <dd>References any type of <a href="{@docRoot}reference/android/R.html"><code>R.</code></a>
-    resource. </dd>
-
-    <dt><code>@UiThread</code></dt>
-    <dd>Calls from a UI
-    <a href="{@docRoot}guide/components/processes-and-threads.html">thread</a>. </dd>
-  </dl>
-
-<p>For a complete list of the supported annotations, either examine the contents of the
-{@link android.support.annotation Support-Annotations} library or use the
-auto-complete feature to display the available options for the <code>import
-android.support.annotation.</code> statement. The
-<a href="{@docRoot}tools/help/sdk-manager.html"> SDK Manager</a> packages the
-{@link android.support.annotation Support-Annotations} library in the Android Support Repository
-for use with Android Studio and in the Android
-<a href="{@docRoot}tools/support-library/index.html">Support Library</a> for use with other Android
-development tools.</p>
-
-
-<p>To add annotations to your code, first add a dependency to the
-{@link android.support.annotation Support-Annotations} library. In Android Studio,
-add the dependency using the <strong>File &gt; Project Structure &gt; Dependencies</strong> menu
-option or your <code>build.gradle</code> file. The following example shows how to add the
-{@link android.support.annotation Support-Annotations} library dependency in the
-<code>build.gradle</code> file: </p>
-
-<pre>
-dependencies {
-    compile 'com.android.support:support-annotations:22.2.0'
-}
-</pre>
-
-
-<p>The {@link android.support.annotation Support-Annotations} library is decorated with the
-supported annotations so using this library's methods and resources automatically checks the code
-for potential problems.</p>
-
-<p>If you include annotations in a library and use the
-<a href="{@docRoot}tools/building/plugin-for-gradle.html"><code>Android Plugin for Gradle</code></a>
-to build an Android ARchive (AAR) artifact of that library, the annotations are included as part
-of the artifact in XML format in the <code>annotations.zip</code> file. </p>
-
-<p>To start a code inspection from Android Studio, which includes validating annotations and
-automatic <a href="{@docRoot}tools/help/lint.html">lint</a> checking, select
-<strong>Analyze > Inspect Code</strong> from the menu options. Android Studio displays conflict
-messages throughout the code to indication annotation conflicts and suggest possible
-resolutions.</p>
-
-
-<h2 id="adding-nullness">Adding Nullness Annotations</h2>
-<p>Add {@link android.support.annotation.Nullable @Nullable} and
-{@link android.support.annotation.NonNull @NonNull} annotations to check
-the nullness of a given variable, parameter, or return value. For example, if a local variable
-that contains a null value is passed as a parameter to a method with the
-{@link android.support.annotation.NonNull @NonNull} annotation
-attached to that parameter, building the code generates a warning indicating a non-null conflict. </p>
-
-<p>This example attaches the {@link android.support.annotation.NonNull @NonNull} annotation to
-the <code>context</code> and <code>attrs</code> parameters to check that the passed parameter
-values are not null. </p>
-
-<pre>
-import android.support.annotation.NonNull;
-...
-
-    /** Add support for inflating the &lt;fragment&gt; tag. */
-    &#64;NonNull
-    &#64;Override
-    public View onCreateView(String name, &#64;NonNull Context context,
-      &#64;NonNull AttributeSet attrs) {
-      ...
-      }
-...
-</pre>
-
-<p class="note"><strong>Note:</strong> Android Studio supports running a nullability analysis to
-automatically infer and insert nullness annotations in your code. For more information about
-inferring nullability in Android Studio, see
-<a href="{@docRoot}tools/studio/index.html#annotations">Annotations in Android Studio</a>. </p>
-
-
-<h2 id="res-annotations">Adding Resource Annotations</h2>
-<p>Validating resource types can be useful as Android references to resources, such as
-<a href="{@docRoot}guide/topics/resources/drawable-resource.html"><code>Drawables</code></a> and
-<a href="{@docRoot}reference/android/R.string.html"><code>R.string</code></a> resources, are
-passed as integers. Code that expects a parameter to reference a specific type of resource, for
-example <a href="{@docRoot}guide/topics/resources/drawable-resource.html"><code>Drawables</code></a>,
-can be passed the expected reference type of <code>int</code>, but actually reference a different
-type of resource, such as a <code>R.string</code></a> resource. </p>
-
-<p>For example, add {@link android.support.annotation.StringRes @StringRes} annotations to check
-that a resource parameter contains a
-<a href="{@docRoot}reference/android/R.string.html"><code>R.string</code></a>
-reference. During code inspection, the annotation generates a warning if a <code>R.string</code>
-reference is not passed in the parameter.</p>
-
-<p>This example attaches the {@link android.support.annotation.StringRes @StringRes}
-annotation to the <code>resId</code> parameter to validate that it is really a string resource.  </p>
-
-<pre>
-import android.support.annotation.StringRes;
-...
-    public abstract void setTitle(&#64;StringRes int resId);
-    ...
-</pre>
-
-
-<p>Annotations for the other resource types, such as
-{@link android.support.annotation.DrawableRes @DrawableRes},
-{@link android.support.annotation.DimenRes @DimenRes},
-{@link android.support.annotation.ColorRes @ColorRes}, and
-{@link android.support.annotation.InterpolatorRes @InterpolatorRes} can be added using
-the same annotation format and run during the code inspection.  </p>
-
-
-
-
-<h2 id="thread-annotations">Adding Thread Annotations</h2>
-<p>Thread annotations check if a method is called from a specific type of
-<a href="{@docRoot}guide/components/processes-and-threads.html">thread</a>. The following thread
-annotations are supported: </p>
-<ul>
- <li><code>@UiThread</code>  </li>
- <li><code>@MainThread</code>  </li>
- <li><code>@WorkerThread</code>  </li>
- <li><code>@BinderThread</code>
-</ul>
-
-<p class="note"><strong>Note:</strong> The <code>@MainThread</code>
-and the <code>@UiThread</code> annotations are interchangeable so
-methods calls from either thread type are allowed for these annotations. </p>
-
-
-<p>If all methods in a class share the same threading requirement, you can add a single
-<a href="{@docRoot}guide/components/processes-and-threads.html">thread</a>
-annotation to the class to verify that all methods in the class are called from the same type of
-<a href="{@docRoot}guide/components/processes-and-threads.html">thread</a>. </p>
-
-<p>A common use of the <a href="{@docRoot}guide/components/processes-and-threads.html">thread</a>
-annotation is to validate method overrides in the
-<a href="{@docRoot}reference/android/os/AsyncTask.html">AsyncTask</a> class as this class performs
-background operations and publishes results only on the UI
-<a href="{@docRoot}guide/components/processes-and-threads.html">thread</a>. </p>
-
-
-
-<h2 id="value-constraint">Adding Value Constraint Annotations</h2>
-<p>Use the <code>@IntRange</code>,
-<code>@FloatRange</code>, and
-<code>@Size</code> annotations to validate the values of passed
-parameters. </p>
-
-<p>The <code>@IntRange</code> annotation validates that the parameter
-value is within a specified range. The following example ensures that the <code>alpha</code>
-parameter contains an integer value from 0 to 255:  </p>
-
-<pre>
-public void setAlpha(&#64;IntRange(from=0,to=255) int alpha) { … }
-</pre>
-
-<p>The <code>@FloatRange</code> annotation checks that the parameter
-value is  within a specified range of floating point values. The following example ensures that the
-<code>alpha</code> parameter contains a float value from 0.0 to 1.0:  </p>
-
-<pre>
-public void setAlpha(&#64;FloatRange(from=0.0, to=1.0) float alpha) {...}
-</pre>
-
-<p>The <code>@Size</code> annotation checks the size of a collection or
-array, as well as the length of a string. For example, use the <code>&#64;Size(min=1)</code>
-annotation to check if a collection is not empty, and the <code>&#64;Size(2)</code> annotation to
-validate that an array contains exactly two values. The following example ensures that the
-<code>location</code> array contains at least one element:  </p>
-
-<pre>
-int[] location = new int[3];
-button.getLocationOnScreen(@Size(min=1) location);
-</pre>
-
-
-<h2 id="permissions">Adding Permission Annotations</h2>
-<p>Use the <code>@RequiresPermission</code> annotation to
-validate the permissions of the caller of a method. To check for a single permission from a
-list the valid permissions, use the <code>anyOf</code> attribute. To check for a set of
-permissions, use the <code>allOf</code> attribute. The following example annotates the
-<code>setWallpaper</code> method to ensure that the caller of the method has the
-<code>permission.SET_WALLPAPERS</code> permission. </p>
-
-<pre>
-&#64;RequiresPermission(Manifest.permission.SET_WALLPAPER)
-public abstract void setWallpaper(Bitmap bitmap) throws IOException;
-</pre>
-
-<p>This example requires the caller of the {@code copyFile()} method to have both read and write
-permissions to external storage:</p>
-<pre>
-&#64;RequiresPermission(allOf = {
-    Manifest.permission.READ_EXTERNAL_STORAGE,
-    Manifest.permission.WRITE_EXTERNAL_STORAGE})
-public static final void copyFile(String dest, String source) {
-    ...
-}
-</pre>
-
-<h2 id="check-result">Adding CheckResults Annotations</h2>
-<p>Use the <code>@CheckResults</code> annotation to
-validate that a method's result or return value is actually used. The following example annotates
-the <code>checkPermissions</code> method to ensure the return value of the method is actually
-referenced. It also names the
-<a href="{@docRoot}reference/android/content/ContextWrapper.html#enforcePermission">enforcePermission</a>
-method as a method to be suggested to the developer as a replacement. </p>
-
-
-
-<pre>
-&#64;CheckResult(suggest="#enforcePermission(String,int,int,String)")
-public abstract int checkPermission(@NonNull String permission, int pid, int uid);
-</pre>
-
-{@link android.support.annotation.StringDef @StringDef}
-
-
-<h2 id="call-super">Adding CallSuper Annotations</h2>
-<p>Use the <code>@CallSuper</code> annotation to validate that an
-overriding method calls the super implementation of the method. The following example annotates
-the <code>onCreate</code> method to ensure that any overriding method implementations call
-<code>super.onCreate()</code>.  </p>
-
-<pre>
-&#64;CallSuper
-protected void onCreate(Bundle savedInstanceState) {
-}
-</pre>
-
-
-
-<h2 id="enum-annotations">Creating Enumerated Annotations</h2>
-<p>Use the {@link android.support.annotation.IntDef @IntDef} and
-{@link android.support.annotation.StringDef @StringDef} annotations
-so you can create enumerated annotations of integer and string sets to validate other types of code
-references, such as passing references to a set of constants. </p>
-
-<p>The following example illustrates the steps to create an enumerated annotation that ensures
-a value passed as a method parameter references one of the defined constants.</p>
-
-<pre>
-import android.support.annotation.IntDef;
-...
-public abstract class ActionBar {
-    ...
-    //Define the list of accepted constants
-    &#64;IntDef({NAVIGATION_MODE_STANDARD, NAVIGATION_MODE_LIST, NAVIGATION_MODE_TABS})
-
-    //Tell the compiler not to store annotation data in the <code>.class</code> file
-    &#64;Retention(RetentionPolicy.SOURCE)
-
-    //Declare the <code>NavigationMode</code> annotation
-    public &#64;interface NavigationMode {}
-
-    //Declare the constants
-    public static final int NAVIGATION_MODE_STANDARD = 0;
-    public static final int NAVIGATION_MODE_LIST = 1;
-    public static final int NAVIGATION_MODE_TABS = 2;
-
-    //Decorate the target methods with the annotation
-    &#64;NavigationMode
-    public abstract int getNavigationMode();
-
-    //Attach the annotation
-    public abstract void setNavigationMode(&#64;NavigationMode int mode);
-
-</pre>
-
-<p>When you build this code, a warning is generated if the <code>mode</code> parameter does
-not reference one of the defined constants (<code>NAVIGATION_MODE_STANDARD</code>,
-<code>NAVIGATION_MODE_LIST</code>, or <code>NAVIGATION_MODE_TABS</code>).</p>
-
-<p>You can also define an annotation with a <code>flag</code> to check if a parameter
-or return value references a valid pattern. This example creates the
-<code>DisplayOptions</code> annotation with a list of valid <code>DISPLAY_</code> constants. </p>
-
-<pre>
-import android.support.annotation.IntDef;
-...
-
-&#64;IntDef(flag=true, value={
-        DISPLAY_USE_LOGO,
-        DISPLAY_SHOW_HOME,
-        DISPLAY_HOME_AS_UP,
-        DISPLAY_SHOW_TITLE,
-        DISPLAY_SHOW_CUSTOM
-})
-&#64;Retention(RetentionPolicy.SOURCE)
-public &#64;interface DisplayOptions {}
-
-...
-</pre>
-
-<p>When you build code with an annotation flag, a warning is generated if the decorated parameter
-or return value does not reference a valid pattern.</p>
-
-
diff --git a/docs/html/tools/debugging/ddms.jd b/docs/html/tools/debugging/ddms.jd
deleted file mode 100644
index becbdb1..0000000
--- a/docs/html/tools/debugging/ddms.jd
+++ /dev/null
@@ -1,352 +0,0 @@
-page.title=Using DDMS
-parent.title=Debugging
-parent.link=index.html
-@jd:body
-
- <div id="qv-wrapper">
-    <div id="qv">
-      <h2>In this document</h2>
-
-      <ol>
-      <li><a href="#running">Running DDMS</a></li>
-        <li><a href="#how-ddms-works">How DDMS Interacts with a Debugger</a></li>
-
-        <li><a href="#using-ddms">Using DDMS</a>
-        <ol>
-                <li><a href="#heap">Viewing heap usage for a process</a></li>
-                <li><a href="#alloc">Tracking memory allocation of objects</a></li>
-                <li><a href="#emulator">Working with an emulator or device's file system</a></li>
-                <li><a href="#thread">Examining thread information</a></li>
-                <li><a href="#profiling">Starting method profiling</a></li>
-                <li><a href="#network">Using the Network Traffic tool</a></li>
-                <li><a href="#logcat">Using LogCat</a></li>
-                <li><a href="#ops-location">Emulating phone operations and location</a></li>
-            </ol>
-
-        </li>
-      </ol>
-    </div>
-  </div>
-
-  <p>Android Studio includes a debugging tool called the Dalvik Debug Monitor Server (DDMS), which
-  provides port-forwarding services, screen capture on the device, thread and heap information on
-  the device, logcat, process, and radio state information, incoming call and SMS spoofing,
-  location data spoofing, and more. This page provides a modest discussion of DDMS features; it is
-  not an exhaustive exploration of all the features and capabilities.</p>
-
-  <h2 id="running">Running DDMS</h2>
-  <p>DDMS is integrated into Android Studio. To use it, launch the
-  <a href="{@docRoot}tools/help/monitor.html">Android Device Monitor</a>, and click the
-  <strong>DDMS</strong> menu button. DDMS works with both the emulator and a
-  connected device. If both are connected and running simultaneously, DDMS defaults to the emulator.</p>
-
-
-  <h2 id="how-ddms-works">How DDMS Interacts with a Debugger</h2>
-
-  <p>On Android, every application runs in its own process, each of which runs in its own virtual machine
-  (VM). Each VM exposes a unique port that a debugger can attach to.</p>
-
-  <p>When DDMS starts, it connects to <a href="{@docRoot}tools/help/adb.html">adb</a>.
-  When a device is connected, a VM monitoring service is created between
-  <code>adb</code> and DDMS, which notifies DDMS when a VM on the device is started or terminated. Once a VM
-  is running, DDMS retrieves the VM's process ID (pid), via <code>adb</code>, and opens a connection to the
-  VM's debugger, through the adb daemon (adbd) on the device. DDMS can now talk to the VM using a
-  custom wire protocol.</p>
-
-  <p>DDMS assigns a debugging port to each VM on the device. Typically,
-  DDMS assigns port 8600 for the first debuggable VM, the next on 8601, and so on. When a debugger
-  connects to one of these ports, all traffic is forwarded to the debugger from the associated
-  VM. You can only attach a single debugger to a single port, but DDMS can handle multiple, attached
-  debuggers.</p>
-
-  <p>By default, DDMS also listens on another debugging port, the DDMS "base port" (8700, by default).
-  The base port is a port forwarder, which can accept VM traffic from any debugging port and forward
-  it to the debugger on port 8700. This allows you to attach one debugger to port 8700, and debug
-  all the VMs on a device. The traffic that is forwarded is determined by the currently selected process
-  in the DDMS Devices view.</p>
-
-  <p>The following screenshot shows a typical DDMS screen. If you are starting DDMS from
-  the command line, the screen is slightly different, but much of the functionality is identical.
-  Notice that the highlighted process, <code>com.android.email</code>, that is running in the emulator
-  has the debugging port 8700 assigned to it as well as 8606. This signifies that DDMS is currently
-  forwarding port 8606 to the static debugging port of 8700.</p>
-
-  <img src="{@docRoot}images/debug-ddms.png"
-       width="1024" />
-  <p class="img-caption"><strong>Figure 1.</strong>
-  Screenshot of DDMS</p>
-
-  <p>If you are using the command line, read <a href=
-  "{@docRoot}tools/debugging/debugging-projects-cmdline.html#debuggingPort">Configuring
-  your IDE to attach to the debugging port</a>, for more information on attaching your
-  debugger.</p>
-
-  <p class="note"><strong>Tip:</strong> You can set a number of DDMS preferences in
-  <strong>File</strong> &gt; <strong>Preferences</strong>. Preferences are saved to
-  <code>$HOME/.android/ddms.cfg</code>.</p>
-
-  <p class="warning"><strong>Known debugging issues with Dalvik</strong><br />
-  Debugging an application in the Dalvik VM should work the same as it does in other VMs. However,
-  when single-stepping out of synchronized code, the "current line" cursor may jump to the last
-  line in the method for one step.</p>
-
-  <h2 id="using-ddms">Using DDMS</h2>
-  The following sections describe how to use DDMS and the various tabs and panes that are part of the
-  DDMS GUI. The Android Studio version and the command line version have minor UI differences, but
-  the same functionality. For information on running DDMS, see the previous section in this document,
-  <a href="#running">Running DDMS</a>.
-
-
-  <h3 id="heap">Viewing heap usage for a process</h3>
-
-  <p>DDMS allows you to view how much heap memory a process is using. This information is useful in
-  tracking heap usage at a certain point of time during the execution of your application.</p>
-  <p>To view heap usage for a process:</p>
-  <ol>
-    <li>In the Devices tab, select the process that you want to see the heap information for.</li>
-
-    <li>Click the <strong>Update Heap</strong> button to enable heap information for the
-    process.</li>
-
-    <li>In the Heap tab, click <strong>Cause GC</strong> to invoke garbage collection, which
-    enables the collection of heap data. When the operation completes, you will see a group of
-    object types and the memory that has been allocated for each type. You can click <strong>Cause
-    GC</strong> again to refresh the data.</li>
-
-    <li>Click on an object type in the list to see a bar graph that shows the number of objects
-    allocated for a particular memory size in bytes.</li>
-  </ol>
-
-  <h3 id="alloc">Tracking memory allocation of objects</h3>
-
-  <p>DDMS provides a feature to track objects that are being allocated to memory and to see which
-  classes and threads are allocating the objects. This allows you to track, in real time, where
-  objects are being allocated when you perform certain actions in your application. This
-  information is valuable for assessing memory usage that can affect application performance.
-  </p>
-
-  <p>To track memory allocation of objects:</p>
-  <ol>
-    <li>In the Devices tab, select the process that you want to enable allocation tracking
-    for.</li>
-
-    <li>In the Allocation Tracker tab, click the <strong>Start Tracking</strong> button to begin
-    allocation tracking. At this point, anything you do in your application will be tracked.</li>
-
-    <li>Click <strong>Get Allocations</strong> to see a list of objects that have been allocated
-    since you clicked on the <strong>Start Tracking</strong> button. You can click on <strong>Get
-    Allocations</strong> again to append to the list new objects that have been
-    allocated.</li>
-
-    <li>To stop tracking or to clear the data and start over, click the <strong>Stop Tracking
-    button</strong>.</li>
-
-    <li>Click on a specific row in the list to see more detailed information such as the method and
-    line number of the code that allocated the object.</li>
-  </ol>
-
-  <h3 id="emulator">Working with an emulator or device's file system</h3>
-
-  <p>DDMS provides a File Explorer tab that allows you to view, copy, and delete files on the
-  device. This feature is useful in examining files that are created by your application or if you
-  want to transfer files to and from the device.</p>
-
-  <p>To work with an emulator or device's file system:</p>
-  <ol>
-    <li>In the Devices tab, select the emulator that you want to view the file system for.</li>
-
-    <li>To copy a file from the device, locate the file in the File Explorer and click the
-    <strong>Pull file</strong> button.</li>
-
-    <li>To copy a file to the device, click the <strong>Push file</strong> button on the File
-    Explorer tab.</li>
-  </ol>
-
-  <!-- Need to elaborate more on where things are stored in the file system,
-   databases, apks, user info, files that are important to look at -->
-
-  <h3 id="thread">Examining thread information</h3>
-
-  <p>The Threads tab in DDMS shows you the currently running threads for a selected process.</p>
-
-  <ol>
-    <li>In the Devices tab, select the process that you want to examine the threads for.</li>
-
-    <li>Click the <strong>Update Threads</strong> button.</li>
-
-    <li>In the Threads tab, you can view the thread information for the selected process.</li>
-  </ol>
-
-  <h3 id="profiling">Starting method profiling</h3>
-
-  <p>Method profiling is a means to track certain metrics about a method, such as number of calls,
-  execution time, and time spent executing the method. If you want more granular control over 
-  where profiling data is collected, use the {@link android.os.Debug#startMethodTracing()} and 
-  {@link android.os.Debug#stopMethodTracing()} methods. For more information about generating trace logs, see 
-  <a href="debugging-tracing.html">Profiling and Debugging UIs</a>.</p>
-
-  <p>Before you start method profiling in DDMS, be aware of the following restrictions:</p>
-    <ul>
-      <li>Android 2.1 and earlier devices must
-      have an SD card present and your application must have permission to write to the SD card.
-      <li>Android 2.2 and later devices do not need an SD card. The trace log files are 
-      streamed directly to your development machine.</li>
-    </ul>
-
-  <p>To start method profiling:</p>
-  <ol>
-    <li>On the Devices tab, select the process that you want to enable method profiling for.</li>
-
-    <li>Click the <strong>Start Method Profiling</strong> button.</li>
-
-    <li>In Android 4.4 and later, choose either trace-based profiling or sample-based profiling
-    with a specified sampling interval. For earlier versions of Android, only trace-based profiling
-    is available.</li>
-
-    <li>Interact with your application to start the methods that you want to profile.</li>
-
-    <li>Click the <strong>Stop Method Profiling</strong> button. DDMS stops profiling your
-    application and opens <a href="{@docRoot}tools/debugging/debugging-ui.html">Traceview</a>
-    with the method profiling information that was collected
-    between the time you clicked on <strong>Start Method Profiling</strong> and <strong>Stop Method
-    Profiling</strong>.</li>
-  </ol>
-
-   <h3 id="network">Using the Network Traffic tool</h3>
-
-   <p>In Android 4.0, the DDMS (Dalvik Debug Monitor Server) includes a Detailed
-Network Usage tab that makes it possible to track when your application is
-making network requests. Using this tool, you can monitor how and when your app
-transfers data and optimize the underlying code appropriately. You can also
-distinguish between different traffic types by applying a “tag” to network
-sockets before use.</p>
-
-<p>These tags are shown in a stack area chart in DDMS, as shown in figure 2:</p>
-
-<img src="{@docRoot}images/developing/ddms-network.png" />
-<p class="img-caption"><strong>Figure 2.</strong> Network Usage tab.</p>
-
-<p>By monitoring the frequency of your data transfers, and the amount of data
-transferred during each connection, you can identify areas of your application
-that can be made more battery-efficient. Generally, you should look for
-short spikes that can be delayed, or that should cause a later transfer to be
-pre-empted. </p>
-
-<p>To better identify the cause of transfer spikes, the
-{@link android.net.TrafficStats} API allows you
-to tag the data transfers occurring within a thread using {@link
-android.net.TrafficStats#setThreadStatsTag setThreadStatsTag()}, followed
-by manually tagging (and untagging) individual sockets using {@link
-android.net.TrafficStats#tagSocket tagSocket()} and {@link
-android.net.TrafficStats#untagSocket untagSocket()}. For example:</p>
-
-<pre>TrafficStats.setThreadStatsTag(0xF00D);
-TrafficStats.tagSocket(outputSocket);
-// Transfer data using socket
-TrafficStats.untagSocket(outputSocket);</pre>
-
-<p>Alternatively, the {@link java.net.URLConnection} APIs included in the platform
-automatically tag sockets internally based on the active tag (as identified by 
-{@link android.net.TrafficStats#getThreadStatsTag getThreadStatsTag()}).
-These APIs correctly tag/untag sockets when recycled through
-keep-alive pools. In the following example,  
-{@link android.net.TrafficStats#setThreadStatsTag setThreadStatsTag()} 
-sets the active tag to be {@code 0xF00D}. 
-There can only be one active tag per thread. 
-That is the value that will 
-be returned by {@link android.net.TrafficStats#getThreadStatsTag getThreadStatsTag()}
-and thus used by the HTTP client to tag sockets. The {@code finally} statement 
-invokes 
-{@link android.net.TrafficStats#clearThreadStatsTag clearThreadStatsTag()} 
-to clear the tag.</p>
-
-<pre>TrafficStats.setThreadStatsTag(0xF00D);
-    try {
-        // Make network request using your http client.
-    } finally {
-        TrafficStats.clearThreadStatsTag();
-}</pre>
-
-<p>Socket tagging is supported in Android 4.0, but real-time stats will only be
-displayed on devices running Android 4.0.3 or higher.</p>
-
-  <h3 id="logcat">Using LogCat</h3>
-
-  <p>LogCat is integrated into DDMS, and outputs the messages that you print out using the {@link android.util.Log}
-  class along with other system messages such as stack traces when exceptions are thrown. View the
-  <a href="{@docRoot}tools/debugging/debugging-log.html">Reading and
-  Writing Log Messages.</a> topic for more information on how to log messages to the LogCat.</p>
-
-  <p>When you have set up your logging, you can use the LogCat feature of DDMS to filter certain
-  messages with the following buttons:</p>
-
-  <ul>
-    <li>Verbose</li>
-
-    <li>Debug</li>
-
-    <li>Info</li>
-
-    <li>Warn</li>
-
-    <li>Error</li>
-  </ul>
-
-  <p>You can also setup your own custom filter to specify more details such as filtering messages
-  with the log tags or with the process id that generated the log message. The add filter,
-  edit filter, and delete filter buttons let you manage your custom filters.</p>
-
-  <h3 id="ops-location">Emulating phone operations and location</h3>
-  <p>The Emulator control tab lets you simulate a
-  phone's voice and data network status. This is useful when you want to test your application's
-  robustness in differing network environments.</p>
-
-  <h4>Changing network state, speed, and latency</h4>
-  <p>The Telephony Status section of the Emulator
-  controls tab lets you change different aspects of the phone's networks status, speed and latency.
-  The following options are available to you and are effective immediately after you set them:</p>
-
-  <ul>
-    <li>Voice - unregistered, home, roaming, searching, denied</li>
-
-    <li>Data - unregistered, home, roaming, searching, denied</li>
-
-    <li>Speed - Full, GSM, HSCSD, GPRS, EDGE, UMTS, HSDPA</li>
-
-    <li>Latency - GPRS, EDGE, UMTS</li>
-  </ul>
-
-  <h4>Spoofing calls or SMS text messages</h4>
-  <p>The Telephony Actions section of the Emulator
-  controls tab lets you spoof calls and messages. This is useful when you want to to test your
-  application's robustness in responding to incoming calls and messages that are sent to the phone.
-  The following actions are available to you:</p>
-
-  <ul>
-    <li>Voice - Enter a number in the <strong>Incoming number</strong> field and click 
-    <strong>Call</strong> to send a simulated call to the emulator or phone. Click the
-    <strong>Hang up</strong> button to terminate the call.</li>
-
-    <li>SMS - Enter a number in the <strong>Incoming number</strong> field and a message in the
-    <strong>Message:</strong> field and click the <strong>Send</strong> button to send the
-    message.</li>
-  </ul>
-
-  <h4>Setting the location of the phone</h4>
-  <p>If your application depends on the location of the phone, you can have DDMS send your
-  device or AVD a mock location. This is useful if you
-  want to test different aspects of your application's location specific features without
-  physically moving. The following geolocation data types are available to you:</p>
-
-  <ul>
-    <li>Manual - set the location by manually specifying decimal or sexagesimal longitude and
-    latitude values.</li>
-
-    <li>GPX - GPS eXchange file</li>
-
-    <li>KML - Keyhole Markup Language file</li>
-  </ul>
-
-  For more information about providing mock location data, see 
-  <a href="{@docRoot}guide/topics/location/strategies.html#MockData">Location Strategies</a>.
-  
diff --git a/docs/html/tools/debugging/debugging-log.jd b/docs/html/tools/debugging/debugging-log.jd
deleted file mode 100644
index f17c4aa..0000000
--- a/docs/html/tools/debugging/debugging-log.jd
+++ /dev/null
@@ -1,293 +0,0 @@
-page.title=Reading and Writing Logs
-
-@jd:body
-
-<div id="qv-wrapper">
-    <div id="qv">
-      <h2>In this document</h2>
-
-      <ol>
-        <li><a href="#startingLogcat">Starting LogCat</a></li>
-
-        <li><a href="#filteringOutput">Filtering Log Output</a></li>
-
-        <li><a href="#outputFormat">Controlling Log Output Format</a></li>
-
-        <li><a href="#alternativeBuffers">Viewing Alternative Log Output Buffers</a></li>
-
-        <li><a href="#viewingStd">Viewing stdout and stderr</a></li>
-
-        <li><a href="#logClass">Logging from Code</a></li>
-      </ol>
-    </div>
-  </div>
-
-  <p>The Android logging system provides a mechanism for collecting and viewing system debug
-  output. Logcat dumps a log of system messages, which include things such as stack traces when the
-  emulator throws an error and messages that you have written from your application by using the
-  {@link android.util.Log} class. You can run LogCat through ADB or from DDMS, which allows you to
-  read the messages in real time.</p>
-
-  <h2 id="startingLogcat">Using LogCat</h2>
-
-  <p>You can use LogCat from within DDMS or call it on an ADB shell. For more information on how to
-  use LogCat within DDMS, see <a href="{@docRoot}tools/debugging/ddms.html#logcat">Using
-  DDMS</a>. To run LogCat, through the ADB shell, the general usage is:</p>
-  <pre>
-[adb] logcat [&lt;option&gt;] ... [&lt;filter-spec&gt;] ...
-</pre>
-
-  <p>You can use the <code>logcat</code> command from your development computer or from a remote
-  adb shell in an emulator/device instance. To view log output in your development computer, you
-  use</p>
-  <pre>
-$ adb logcat
-</pre>
-
-  <p>and from a remote adb shell you use</p>
-  <pre>
-# logcat
-</pre>
-
-  <p>The following table describes the <code>logcat</code> command line options:</p>
-
-  <table>
-    <tr>
-      <td><code>-c</code></td>
-
-      <td>Clears (flushes) the entire log and exits.</td>
-    </tr>
-
-    <tr>
-      <td><code>-d</code></td>
-
-      <td>Dumps the log to the screen and exits.</td>
-    </tr>
-
-    <tr>
-      <td><code>-f&nbsp;&lt;filename&gt;</code></td>
-
-      <td>Writes log message output to <code>&lt;filename&gt;</code>. The default is
-      <code>stdout</code>.</td>
-    </tr>
-
-    <tr>
-      <td><code>-g</code></td>
-      <td>Prints the size of the specified log buffer and exits.</td>
-    </tr>
-
-    <tr>
-      <td><code>-n&nbsp;&lt;count&gt;</code></td>
-
-      <td>Sets the maximum number of rotated logs to <code>&lt;count&gt;</code>. The default value
-      is 4. Requires the <code>-r</code> option.</td>
-    </tr>
-
-    <tr>
-      <td><code>-r&nbsp;&lt;kbytes&gt;</code></td>
-
-      <td>Rotates the log file every <code>&lt;kbytes&gt;</code> of output. The default value is
-      16. Requires the <code>-f</code> option.</td>
-    </tr>
-
-    <tr>
-      <td><code>-s</code></td>
-
-      <td>Sets the default filter spec to silent.</td>
-    </tr>
-
-    <tr>
-      <td><code>-v&nbsp;&lt;format&gt;</code></td>
-
-      <td>Sets the output format for log messages. The default is <code>brief</code> format. For a
-      list of supported formats, see <a href="#outputFormat">Controlling Log Output
-      Format</a>.</td>
-    </tr>
-  </table>
-
-  <h3 id="filteringOutput">Filtering Log Output</h3>
-
-  <p>Every Android log message has a <em>tag</em> and a <em>priority</em> associated with it.</p>
-
-  <ul>
-    <li>The tag of a log message is a short string indicating the system component from which the
-    message originates (for example, "View" for the view system).</li>
-
-    <li>The priority is one of the following character values, ordered from lowest to highest
-    priority:</li>
-
-    <li style="list-style: none; display: inline">
-      <ul>
-        <li><code>V</code> &mdash; Verbose (lowest priority)</li>
-
-        <li><code>D</code> &mdash; Debug</li>
-
-        <li><code>I</code> &mdash; Info</li>
-
-        <li><code>W</code> &mdash; Warning</li>
-
-        <li><code>E</code> &mdash; Error</li>
-
-        <li><code>F</code> &mdash; Fatal</li>
-
-        <li><code>S</code> &mdash; Silent (highest priority, on which nothing is ever printed)</li>
-      </ul>
-    </li>
-  </ul>
-
-  <p>You can obtain a list of tags used in the system, together with priorities, by running
-  LogCat and observing the first two columns of each message, given as
-  <code>&lt;priority&gt;/&lt;tag&gt;</code>.</p>
-
-  <p>Here's an example of logcat output that shows that the message relates to priority level "I"
-  and tag "ActivityManager":</p>
-  <pre>
-I/ActivityManager(  585): Starting activity: Intent { action=android.intent.action...}
-</pre>
-
-  <p>To reduce the log output to a manageable level, you can restrict log output using <em>filter
-  expressions</em>. Filter expressions let you indicate to the system the tags-priority
-  combinations that you are interested in &mdash; the system suppresses other messages for the
-  specified tags.</p>
-
-  <p>A filter expression follows this format <code>tag:priority ...</code>, where <code>tag</code>
-  indicates the tag of interest and <code>priority</code> indicates the <em>minimum</em> level of
-  priority to report for that tag. Messages for that tag at or above the specified priority are
-  written to the log. You can supply any number of <code>tag:priority</code> specifications in a
-  single filter expression. The series of specifications is whitespace-delimited.</p>
-
-  <p>Here's an example of a filter expression that suppresses all log messages except those with
-  the tag "ActivityManager", at priority "Info" or above, and all log messages with tag "MyApp",
-  with priority "Debug" or above:</p>
-  <pre>
-adb logcat ActivityManager:I MyApp:D *:S
-</pre>
-
-  <p>The final element in the above expression, <code>*:S</code>, sets the priority level for all
-  tags to "silent", thus ensuring only log messages with "ActivityManager" and "MyApp" are displayed. Using
-  <code>*:S</code> is an excellent way to ensure that log output is restricted to the filters that
-  you have explicitly specified &mdash; it lets your filters serve as a "whitelist" for log
-  output.</p>
-
-  <p>The following filter expression displays all log messages with priority level "warning" and higher, on all tags:</p>
-  <pre>
-adb logcat *:W
-</pre>
-
-  <p>If you're running LogCat from your development computer (versus running it on a
-  remote adb shell), you can also set a default filter expression by exporting a value for the
-  environment variable <code>ANDROID_LOG_TAGS</code>:</p>
-  <pre>
-export ANDROID_LOG_TAGS="ActivityManager:I MyApp:D *:S"
-</pre>
-
-  <p>Note that <code>ANDROID_LOG_TAGS</code> filter is not exported to the emulator/device
-  instance, if you are running LogCat from a remote shell or using <code>adb shell
-  logcat</code>.</p>
-
-  <h3 id="outputFormat">Controlling Log Output Format</h3>
-
-  <p>Log messages contain a number of metadata fields, in addition to the tag and priority. You can
-  modify the output format for messages so that they display a specific metadata field. To do so,
-  you use the <code>-v</code> option and specify one of the supported output formats listed
-  below.</p>
-
-  <ul>
-    <li><code>brief</code> &mdash; Display priority/tag and PID of the process issuing the
-    message (the default format).</li>
-
-    <li><code>process</code> &mdash; Display PID only.</li>
-
-    <li><code>tag</code> &mdash; Display the priority/tag only.</li>
-
-    <li><code>raw</code> &mdash; Display the raw log message, with no other metadata fields.</li>
-
-    <li><code>time</code> &mdash; Display the date, invocation time, priority/tag, and PID of the
-    process issuing the message.</li>
-
-    <li><code>threadtime</code> &mdash; Display the date, invocation time, priority, tag, and
-    the PID and TID of the thread issuing the message.</li>
-
-    <li><code>long</code> &mdash; Display all metadata fields and separate messages with blank
-    lines.</li>
-  </ul>
-
-  <p>When starting LogCat, you can specify the output format you want by using the
-  <code>-v</code> option:</p>
-  <pre>
-[adb] logcat [-v &lt;format&gt;]
-</pre>
-
-  <p>Here's an example that shows how to generate messages in <code>thread</code> output
-  format:</p>
-  <pre>
-adb logcat -v thread
-</pre>
-
-  <p>Note that you can only specify one output format with the <code>-v</code> option.</p>
-
-  <h3 id="alternativeBuffers">Viewing Alternative Log Buffers</h3>
-
-  <p>The Android logging system keeps multiple circular buffers for log messages, and not all of
-  the log messages are sent to the default circular buffer. To see additional log messages, you can
-  run the <code>logcat</code> command with the <code>-b</code> option, to request viewing of an alternate
-  circular buffer. You can view any of these alternate buffers:</p>
-
-  <ul>
-    <li><code>radio</code> &mdash; View the buffer that contains radio/telephony related
-    messages.</li>
-
-    <li><code>events</code> &mdash; View the buffer containing events-related messages.</li>
-
-    <li><code>main</code> &mdash; View the main log buffer (default)</li>
-  </ul>
-
-  <p>The usage of the <code>-b</code> option is:</p>
-  <pre>
-[adb] logcat [-b &lt;buffer&gt;]
-</pre>
-
-  <p>Here's an example of how to view a log buffer containing radio and telephony messages:</p>
-  <pre>
-adb logcat -b radio
-</pre><a name="stdout"
-        id="stdout"></a>
-
-  <h2 id="viewingStd">Viewing stdout and stderr</h2>
-
-  <p>By default, the Android system sends <code>stdout</code> and <code>stderr</code>
-  output to <code>/dev/null</code>. (The Java <code>System.out</code> and <code>System.err</code>
-  streams go to the log.)
-
-  <h2 id="logClass">Logging from Code</h2>
-
-  <p>The {@link android.util.Log} class allows you to create log entries in your code that display
-  in the LogCat tool. Common logging methods include:</p>
-
-  <ul>
-    <li>{@link android.util.Log#v(java.lang.String, java.lang.String)
-      Log.v(String, String)} (verbose)</li>
-
-    <li>{@link android.util.Log#d(java.lang.String, java.lang.String)
-      Log.d(String, String)} (debug)</li>
-
-    <li>{@link android.util.Log#i(java.lang.String, java.lang.String)
-      Log.i(String, String)} (information)</li>
-
-    <li>{@link android.util.Log#w(java.lang.String, java.lang.String)
-      Log.w(String, String)} (warning)</li>
-
-    <li>{@link android.util.Log#e(java.lang.String, java.lang.String)
-      Log.e(String, String)} (error)</li>
-  </ul>
-
-  <p>For example, using the following call:</p>
-
-  <pre class="no-pretty-print">
-Log.i("MyActivity", "MyClass.getView() &mdash; get item number " + position);
-</pre>
-
-  <p>The LogCat outputs something like:</p>
-  <pre class="no-pretty-print">
-I/MyActivity( 1557): MyClass.getView() &mdash; get item number 1
-</pre>
diff --git a/docs/html/tools/debugging/debugging-memory.jd b/docs/html/tools/debugging/debugging-memory.jd
deleted file mode 100755
index 4e2e519..0000000
--- a/docs/html/tools/debugging/debugging-memory.jd
+++ /dev/null
@@ -1,708 +0,0 @@
-page.title=Investigating Your RAM Usage
-page.tags=memory,OutOfMemoryError
-@jd:body
-
- <div id="qv-wrapper">
-    <div id="qv">
-      <h2>In this document</h2>
-<ol>
-  <li><a href="#LogMessages">Interpreting Log Messages</a></li>
-  <li><a href="#ViewHeap">Viewing Heap Updates</a></li>
-  <li><a href="#TrackAllocations">Tracking Allocations</a></li>
-  <li><a href="#ViewingAllocations">Viewing Overall Memory Allocations</a></li>
-  <li><a href="#HeapDump">Capturing a Heap Dump</a></li>
-  <li><a href="#TriggerLeaks">Triggering Memory Leaks</a></li>
-</ol>
-      <h2>See Also</h2>
-      <ul>
-        <li><a href="{@docRoot}training/articles/memory.html">Managing Your App's Memory</a></li>
-      </ul>
-    </div>
-  </div>
-
-
-
-
-<p>Because Android is designed for mobile devices, you should always be careful about how much
-random-access memory (RAM) your app uses. Although Dalvik and ART perform
-routine garbage collection (GC), this doesn’t mean you can ignore when and where your app allocates and
-releases memory. In order to provide a stable user experience that allows the system to quickly
-switch between apps, it is important that your app does not needlessly consume memory when the user
-is not interacting with it.</p>
-
-<p>Even if you follow all the best practices for <a href="{@docRoot}training/articles/memory.html"
->Managing Your App Memory</a> during
-development (which you should), you still might leak objects or introduce other memory bugs. The
-only way to be certain your app is using as little memory as possible is to analyze your app’s
-memory usage with tools. This guide shows you how to do that.</p>
-
-
-<h2 id="LogMessages">Interpreting Log Messages</h2>
-
-<p>The simplest place to begin investigating your app’s memory usage is the runtime log messages.
-Sometimes when a GC occurs, a message is printed to
-<a href="{@docRoot}tools/help/logcat.html">logcat</a>. The logcat output is also available in the
-Device Monitor or directly in an IDE such as Android Studio.</p>
-
-<h3 id="DalvikLogMessages">Dalvik Log Messages</h3>
-
-<p>In Dalvik (but not ART), every GC prints the following information to logcat:</p>
-
-<pre class="no-pretty-print">
-D/dalvikvm: &lt;GC_Reason> &lt;Amount_freed>, &lt;Heap_stats>, &lt;External_memory_stats>, &lt;Pause_time>
-</pre>
-
-<p>Example:</p>
-
-<pre class="no-pretty-print">
-D/dalvikvm( 9050): GC_CONCURRENT freed 2049K, 65% free 3571K/9991K, external 4703K/5261K, paused 2ms+2ms
-</pre>
-
-<dl>
-<dt>GC Reason</dt>
-<dd>
-What triggered the GC and what kind of collection it is. Reasons that may appear
-include:
-<dl>
-<dt><code>GC_CONCURRENT</code></dt>
-<dd>A concurrent GC that frees up memory as your heap begins to fill up.</dd>
-
-<dt><code>GC_FOR_MALLOC</code></dt>
-<dd>A GC caused because your app attempted to allocate memory when your heap was
-already full, so the system had to stop your app and reclaim memory.</dd>
-
-<dt><code>GC_HPROF_DUMP_HEAP</code></dt>
-<dd>A GC that occurs when you request to create an HPROF file to analyze your heap.</dd>
-
-<dt><code>GC_EXPLICIT</code>
-<dd>An explicit GC, such as when you call {@link java.lang.System#gc()} (which you
-should avoid calling and instead trust the GC to run when needed).</dd>
-
-<dt><code>GC_EXTERNAL_ALLOC</code></dt>
-<dd>This happens only on API level 10 and lower (newer versions allocate everything in the Dalvik
-heap). A GC for externally allocated memory (such as the pixel data stored in
-native memory or NIO byte buffers).</dd>
-</dl>
-</dd>
-
-<dt>Amount freed</dt>
-<dd>The amount of memory reclaimed from this GC.</dd>
-
-<dt>Heap stats</dt>
-<dd>Percentage free of the heap and (number of live objects)/(total heap size).</dd>
-
-<dt>External memory stats</dt>
-<dd>Externally allocated memory on API level 10 and lower (amount of allocated memory) / (limit at
-which collection will occur).</dd>
-
-<dt>Pause time</dt>
-<dd>Larger heaps will have larger pause times. Concurrent pause times show two pauses: one at the
-beginning of the collection and another near the end.</dd>
-</dl>
-
-<p>As these log messages accumulate, look out for increases in the heap stats (the
-{@code 3571K/9991K} value in the above example). If this value continues to increase, you may have
-a memory leak.</p>
-
-
-<h3 id="ARTLogMessages">ART Log Messages</h3>
-
-<p>Unlike Dalvik, ART doesn't log messages for GCs that were not explicitly requested. GCs are only
-printed when they are they are deemed slow. More precisely, if the GC pause exceeds than 5ms or
-the GC duration exceeds 100ms. If the app is not in a pause perceptible process state,
-then none of its GCs are deemed slow. Explicit GCs are always logged.</p>
-
-<p>ART includes the following information in its garbage collection log messages:</p>
-
-<pre class="no-pretty-print">
-I/art: &lt;GC_Reason> &lt;GC_Name> &lt;Objects_freed>(&lt;Size_freed>) AllocSpace Objects, &lt;Large_objects_freed>(&lt;Large_object_size_freed>) &lt;Heap_stats> LOS objects, &lt;Pause_time(s)>
-</pre>
-
-<p>Example:</p>
-
-<pre class="no-pretty-print">
-I/art : Explicit concurrent mark sweep GC freed 104710(7MB) AllocSpace objects, 21(416KB) LOS objects, 33% free, 25MB/38MB, paused 1.230ms total 67.216ms
-</pre>
-
-<dl>
-<dt>GC Reason</dt>
-<dd>
-What triggered the GC and what kind of collection it is. Reasons that may appear
-include:
-<dl>
-<dt><code>Concurrent</code></dt>
-<dd>A concurrent GC which does not suspend app threads. This GC runs in a background thread
-and does not prevent allocations.</dd>
-
-<dt><code>Alloc</code></dt>
-<dd>The GC was initiated because your app attempted to allocate memory when your heap
-was already full. In this case, the garbage collection occurred in the allocating thread.</dd>
-
-<dt><code>Explicit</code>
-<dd>The garbage collection was explicitly requested by an app, for instance, by
-calling {@link java.lang.System#gc()} or {@link java.lang.Runtime#gc()}. As with Dalvik, in ART it is
-recommended that you trust the GC and avoid requesting explicit GCs if possible. Explicit GCs are
-discouraged since they block the allocating thread and unnecessarily was CPU cycles. Explicit GCs
-could also cause jank if they cause other threads to get preempted.</dd>
-
-<dt><code>NativeAlloc</code></dt>
-<dd>The collection was caused by native memory pressure from native allocations such as Bitmaps or
-RenderScript allocation objects.</dd>
-
-<dt><code>CollectorTransition</code></dt>
-<dd>The collection was caused by a heap transition; this is caused by switching the GC at run time.
-Collector transitions consist of copying all the objects from a free-list backed
-space to a bump pointer space (or visa versa). Currently collector transitions only occur when an
-app changes process states from a pause perceptible state to a non pause perceptible state
-(or visa versa) on low RAM devices.
-</dd>
-
-<dt><code>HomogeneousSpaceCompact</code></dt>
-<dd>Homogeneous space compaction is free-list space to free-list space compaction which usually
-occurs when an app is moved to a pause imperceptible process state. The main reasons for doing
-this are reducing RAM usage and defragmenting the heap.
-</dd>
-
-<dt><code>DisableMovingGc</code></dt>
-<dd>This is not a real GC reason, but a note that collection was blocked due to use of
-GetPrimitiveArrayCritical. while concurrent heap compaction is occuring. In general, the use of
-GetPrimitiveArrayCritical is strongly discouraged due to its restrictions on moving collectors.
-</dd>
-
-<dt><code>HeapTrim</code></dt>
-<dd>This is not a GC reason, but a note that collection was blocked until a heap trim finished.
-</dd>
-
-</dl>
-</dd>
-
-
-<dl>
-<dt>GC Name</dt>
-<dd>
-ART has various different GCs which can get run.
-<dl>
-<dt><code>Concurrent mark sweep (CMS)</code></dt>
-<dd>A whole heap collector which frees collects all spaces other than the image space.</dd>
-
-<dt><code>Concurrent partial mark sweep</code></dt>
-<dd>A mostly whole heap collector which collects all spaces other than the image and zygote spaces.
-</dd>
-
-<dt><code>Concurrent sticky mark sweep</code></dt>
-<dd>A generational collector which can only free objects allocated since the last GC. This garbage
-collection is run more often than a full or partial mark sweep since it is faster and has lower pauses.
-</dd>
-
-<dt><code>Marksweep + semispace</code></dt>
-<dd>A non concurrent, copying GC used for heap transitions as well as homogeneous space
-compaction (to defragement the heap).</dd>
-
-</dl>
-</dd>
-
-<dt>Objects freed</dt>
-<dd>The number of objects which were reclaimed from this GC from the non large
-object space.</dd>
-
-<dt>Size freed</dt>
-<dd>The number of bytes which were reclaimed from this GC from the non large object
-space.</dd>
-
-<dt>Large objects freed</dt>
-<dd>The number of object in the large object space which were reclaimed from this garbage
-collection.</dd>
-
-<dt>Large object size freed</dt>
-<dd>The number of bytes in the large object space which were reclaimed from this garbage
-collection.</dd>
-
-<dt>Heap stats</dt>
-<dd>Percentage free and (number of live objects)/(total heap size).</dd>
-
-<dt>Pause times</dt>
-<dd>In general pause times are proportional to the number of object references which were modified
-while the GC was running. Currently, the ART CMS GCs only has one pause, near the end of the GC.
-The moving GCs have a long pause which lasts for the majority of the GC duration.</dd>
-</dl>
-
-<p>If you are seeing a large amount of GCs in logcat, look for increases in the heap stats (the
-{@code 25MB/38MB} value in the above example). If this value continues to increase and doesn't
-ever seem to get smaller, you could have a memory leak. Alternatively, if you are seeing GC which
-are for the reason "Alloc", then you are already operating near your heap capacity and can expect
-OOM exceptions in the near future. </p>
-
-<h2 id="ViewHeap">Viewing Heap Updates</h2>
-
-<p>To get a little information about what kind of memory your app is using and when, you
-can view real-time updates to your app's heap in Android Studio's
-<a href="{@docRoot}tools/studio/index.html#heap-dump">HPROF viewer</a> or in the Device Monitor:</p>
-
-<h3>Memory Monitor in Android Studio</h3>
-<p>Use Android Studio to view your app's memory use: </p>
-<ol>
-  <li>Start your app on a connected device or emulator.</li>
-  <li>Open the Android run-time window, and view the free and allocated memory in the Memory
-    Monitor. </li>
-  <li>Click the Dump Java Heap icon
-    (<img src="{@docRoot}images/tools/studio-dump-heap-icon.png" style="vertical-align:bottom;margin:0;height:21px"/>)
-    in the Memory Monitor toolbar.
-    <p>Android Studio creates the heap snapshot file with the filename
-    <code>Snapshot-yyyy.mm.dd-hh.mm.ss.hprof</code> in the <em>Captures</em> tab. </p>
-     </li>
-  <li>Double-click the heap snapshot file to open the HPROF viewer.
-  <p class="note"><strong>Note:</strong> To convert a heap dump to standard HPROF format in
-  Android Studio, right-click a heap snapshot in the <em>Captures</em> view and select
-  <strong>Export to standard .hprof</strong>.</p> </li>
-  <li>Interact with your app and click the
-    (<img src="{@docRoot}images/tools/studio-garbage-collect.png" style="vertical-align:bottom;margin:0;height:17px"/>)
-    icon to cause heap allocation.
-   </li>
-  <li>Identify which actions in your app are likely causing too much allocation and determine where
-   in your app you should try to reduce allocations and release resources.
-</ol>
-
-<h3>Device Monitor </h3>
-<ol>
-<li>Open the Device Monitor.
-<p>From your <code>&lt;sdk>/tools/</code> directory, launch the <code>monitor</code> tool.</p>
-</li>
-<li>In the Debug Monitor window, select your app's process from the list on the left.</li>
-<li>Click <strong>Update Heap</strong> above the process list.</li>
-<li>In the right-side panel, select the <strong>Heap</strong> tab.</li>
-</ol>
-
-<p>The Heap view shows some basic stats about your heap memory usage, updated after every
-GC. To see the first update, click the <strong>Cause GC</strong> button.</p>
-
-<img src="{@docRoot}images/tools/monitor-vmheap@2x.png" width="760" alt="" />
-<p class="img-caption"><strong>Figure 1.</strong> The Device Monitor tool,
-showing the <strong>[1] Update Heap</strong> and <strong>[2] Cause GC</strong> buttons.
-The Heap tab on the right shows the heap results.</p>
-
-
-<p>Continue interacting with your app to watch your heap allocation update with each garbage
-collection. This can help you identify which actions in your app are likely causing too much
-allocation and where you should try to reduce allocations and release
-resources.</p>
-
-
-
-<h2 id="TrackAllocations">Tracking Allocations</h2>
-
-<p>As you start narrowing down memory issues, you should also use the Allocation Tracker to
-get a better understanding of where your memory-hogging objects are allocated. The Allocation
-Tracker can be useful not only for looking at specific uses of memory, but also to analyze critical
-code paths in an app such as scrolling.</p>
-
-<p>For example, tracking allocations when flinging a list in your app allows you to see all the
-allocations that need to be done for that behavior, what thread they are on, and where they came
-from. This is extremely valuable for tightening up these paths to reduce the work they need and
-improve the overall smoothness of the UI.</p>
-
-<p>To use the Allocation Tracker, open the Memory Monitor in Android Studio and click the 
-<a href="{@docRoot}tools/studio/index.html#alloc-tracker" style="vertical-align:bottom;margin:0;height:21px">
-Allocation Tracker</a> icon. You can also track allocations in the Android Device Monitor:</p>
-
-
-<h3>Android Studio </h3>
-<p>To use the <a href="{@docRoot}tools/studio/index.html#alloc-tracker">Allocation Tracker</a> in
-Android Studio: </p>
-
-<ol>
-  <li>Start your app on a connected device or emulator</li>
-  <li>Open the Android run-tme window, and view the free and allocated memory in the Memory
-    Monitor. </li>
-  <li>Click the Allocation Tracker icon
-    (<img src="{@docRoot}images/tools/studio-allocation-tracker-icon.png" style="vertical-align:bottom;margin:0;height:21px"/>) in the Memory Monitor tool bar to start and stop memory
-    allocations. 
-    <p>Android Studio creates the allocation file with the filename
-    <code>Allocations-yyyy.mm.dd-hh.mm.ss.alloc</code> in the <em>Captures</em> tab. </p> 
-     </li>
-  <li>Double-click the allocation file to open the Allocation viewer.  </li>
-  <li>Identify which actions in your app are likely causing too much allocation and determine where
-   in your app you should try to reduce allocations and release resources.
-</ol>
-
-
-
-<h3>Device Monitor</h3>
-<ol>
-<li>Open the Device Monitor.
-<p>From your <code>&lt;sdk>/tools/</code> directory, launch the <code>monitor</code> tool.</p>
-</li>
-<li>In the DDMS window, select your app's process in the left-side panel.</li>
-<li>In the right-side panel, select the <strong>Allocation Tracker</strong> tab.</li>
-<li>Click <strong>Start Tracking</strong>.</li>
-<li>Interact with your app to execute the code paths you want to analyze.</li>
-<li>Click <strong>Get Allocations</strong> every time you want to update the
-list of allocations.</li>
- </ol>
-
-<p>The list shows all recent allocations,
-currently limited by a 512-entry ring buffer. Click on a line to see the stack trace that led to
-the allocation. The trace shows you not only what type of object was allocated, but also in which
-thread, in which class, in which file and at which line.</p>
-
-<img src="{@docRoot}images/tools/monitor-tracker@2x.png" width="760" alt="" />
-<p class="img-caption"><strong>Figure 2.</strong> The Device Monitor tool,
-showing recent app allocations and stack traces in the Allocation Tracker.</p>
-
-
-<p class="note"><strong>Note:</strong> You will always see some allocations from {@code
-DdmVmInternal} and elsewhere that come from the allocation tracker itself.</p>
-
-<p>Although it's not necessary (nor possible) to remove all allocations from your performance
-critical code paths, the allocation tracker can help you identify important issues in your code.
-For instance, some apps might create a new {@link android.graphics.Paint} object on every draw.
-Moving that object into a global member is a simple fix that helps improve performance.</p>
-
-
-
-
-
-
-<h2 id="ViewingAllocations">Viewing Overall Memory Allocations</h2>
-
-<p>For further analysis, you may want to observe how your app's memory is
-divided between different types of RAM allocation with the
-following <a href="{@docRoot}tools/help/adb.html">adb</a> command:</p>
-
-<pre class="no-pretty-print">
-adb shell dumpsys meminfo &lt;package_name|pid> [-d]
-</pre>
-
-<p>The -d flag prints more info related to Dalvik and ART memory usage.</p>
-
-<p>The output lists all of your app's current allocations, measured in kilobytes.</p>
-
-<p>When inspecting this information, you should be familiar with the
-following types of allocation:</p>
-
-<dl>
-<dt>Private (Clean and Dirty) RAM</dt>
-<dd>This is memory that is being used by only your process. This is the bulk of the RAM that the system
-can reclaim when your app’s process is destroyed. Generally, the most important portion of this is
-“private dirty” RAM, which is the most expensive because it is used by only your process and its
-contents exist only in RAM so can’t be paged to storage (because Android does not use swap). All
-Dalvik and native heap allocations you make will be private dirty RAM; Dalvik and native
-allocations you share with the Zygote process are shared dirty RAM.</dd>
-
-<dt>Proportional Set Size (PSS)</dt>
-<dd>This is a measurement of your app’s RAM use that takes into account sharing pages across processes.
-Any RAM pages that are unique to your process directly contribute to its PSS value, while pages
-that are shared with other processes contribute to the PSS value only in proportion to the amount
-of sharing. For example, a page that is shared between two processes will contribute half of its
-size to the PSS of each process.</dd>
-</dl>
-
-
-<p>A nice characteristic of the PSS measurement is that you can add up the PSS across all processes to
-determine the actual memory being used by all processes. This means PSS is a good measure for the
-actual RAM weight of a process and for comparison against the RAM use of other processes and the
-total available RAM.</p>
-
-
-<p>For example, below is the the output for Map’s process on a Nexus 5 device. There is a lot of
-information here, but key points for discussion are listed below.</p>
-<code>adb shell dumpsys meminfo com.google.android.apps.maps -d</code>
-
-<p class="note"><strong>Note:</strong> The information you see may vary slightly from what is shown
-here, as some details of the output differ across platform versions.</p>
-
-<pre class="no-pretty-print">
-** MEMINFO in pid 18227 [com.google.android.apps.maps] **
-                   Pss  Private  Private  Swapped     Heap     Heap     Heap
-                 Total    Dirty    Clean    Dirty     Size    Alloc     Free
-                ------   ------   ------   ------   ------   ------   ------
-  Native Heap    10468    10408        0        0    20480    14462     6017
-  Dalvik Heap    34340    33816        0        0    62436    53883     8553
- Dalvik Other      972      972        0        0
-        Stack     1144     1144        0        0
-      Gfx dev    35300    35300        0        0
-    Other dev        5        0        4        0
-     .so mmap     1943      504      188        0
-    .apk mmap      598        0      136        0
-    .ttf mmap      134        0       68        0
-    .dex mmap     3908        0     3904        0
-    .oat mmap     1344        0       56        0
-    .art mmap     2037     1784       28        0
-   Other mmap       30        4        0        0
-   EGL mtrack    73072    73072        0        0
-    GL mtrack    51044    51044        0        0
-      Unknown      185      184        0        0
-        TOTAL   216524   208232     4384        0    82916    68345    14570
-
- Dalvik Details
-        .Heap     6568     6568        0        0
-         .LOS    24771    24404        0        0
-          .GC      500      500        0        0
-    .JITCache      428      428        0        0
-      .Zygote     1093      936        0        0
-   .NonMoving     1908     1908        0        0
- .IndirectRef       44       44        0        0
-
- Objects
-               Views:       90         ViewRootImpl:        1
-         AppContexts:        4           Activities:        1
-              Assets:        2        AssetManagers:        2
-       Local Binders:       21        Proxy Binders:       28
-       Parcel memory:       18         Parcel count:       74
-    Death Recipients:        2      OpenSSL Sockets:        2
-</pre>
-
-<p>Here is an older dumpsys on Dalvik of the gmail app:</p>
-
-<pre class="no-pretty-print">
-** MEMINFO in pid 9953 [com.google.android.gm] **
-                 Pss     Pss  Shared Private  Shared Private    Heap    Heap    Heap
-               Total   Clean   Dirty   Dirty   Clean   Clean    Size   Alloc    Free
-              ------  ------  ------  ------  ------  ------  ------  ------  ------
-  Native Heap      0       0       0       0       0       0    7800    7637(6)  126
-  Dalvik Heap   5110(3)    0    4136    4988(3)    0       0    9168    8958(6)  210
- Dalvik Other   2850       0    2684    2772       0       0
-        Stack     36       0       8      36       0       0
-       Cursor    136       0       0     136       0       0
-       Ashmem     12       0      28       0       0       0
-    Other dev    380       0      24     376       0       4
-     .so mmap   5443(5) 1996    2584    2664(5) 5788    1996(5)
-    .apk mmap    235      32       0       0    1252      32
-    .ttf mmap     36      12       0       0      88      12
-    .dex mmap   3019(5) 2148       0       0    8936    2148(5)
-   Other mmap    107       0       8       8     324      68
-      Unknown   6994(4)    0     252    6992(4)    0       0
-        TOTAL  24358(1) 4188    9724   17972(2)16388    4260(2)16968   16595     336
-
- Objects
-               Views:    426         ViewRootImpl:        3(8)
-         AppContexts:      6(7)        Activities:        2(7)
-              Assets:      2        AssetManagers:        2
-       Local Binders:     64        Proxy Binders:       34
-    Death Recipients:      0
-     OpenSSL Sockets:      1
-
- SQL
-         MEMORY_USED:   1739
-  PAGECACHE_OVERFLOW:   1164          MALLOC_SIZE:       62
-</pre>
-
-<p>Generally, you should be concerned with only the <code>Pss Total</code> and <code>Private Dirty</code>
-columns. In some cases, the <code>Private Clean</code> and <code>Heap Alloc</code> columns also offer
-interesting data. Here is some more information about the different memory allocations (the rows)
-you should observe:
-
-<dl>
-<dt><code>Dalvik Heap</code></dt>
-<dd>The RAM used by Dalvik allocations in your app. The <code>Pss Total</code> includes all Zygote
-allocations (weighted by their sharing across processes, as described in the PSS definition above).
-The <code>Private Dirty</code> number is the actual RAM committed to only your app’s heap, composed of
-your own allocations and any Zygote allocation pages that have been modified since forking your
-app’s process from Zygote.
-
-<p class="note"><strong>Note:</strong> On newer platform versions that have the <code>Dalvik
-Other</code> section, the <code>Pss Total</code> and <code>Private Dirty</code> numbers for Dalvik Heap do
-not include Dalvik overhead such as the just-in-time compilation (JIT) and GC
-bookkeeping, whereas older versions list it all combined under <code>Dalvik</code>.</p>
-
-<p>The <code>Heap Alloc</code> is the amount of memory that the Dalvik and native heap allocators keep
-track of for your app. This value is larger than <code>Pss Total</code> and <code>Private Dirty</code>
-because your process was forked from Zygote and it includes allocations that your process shares
-with all the others.</p>
-</dd>
-
-<dt><code>.so mmap</code> and <code>.dex mmap</code></dt>
-<dd>The RAM being used for mapped <code>.so</code> (native) and <code>.dex</code> (Dalvik or ART)
-code. The <code>Pss Total</code> number includes platform code shared across apps; the
-<code>Private Clean</code> is your app’s own code. Generally, the actual mapped size will be much
-larger—the RAM here is only what currently needs to be in RAM for code that has been executed by
-the app. However, the .so mmap has a large private dirty, which is due to fix-ups to the native
-code when it was loaded into its final address.
-</dd>
-
-<dt><code>.oat mmap</code></dt>
-<dd>This is the amount of RAM used by the code image which is based off of the preloaded classes
-which are commonly used by multiple apps. This image is shared across all apps and is unaffected
-by particular apps.
-</dd>
-
-<dt><code>.art mmap</code></dt>
-<dd>This is the amount of RAM used by the heap image which is based off of the preloaded classes
-which are commonly used by multiple apps. This image is shared across all apps and is unaffected
-by particular apps. Even though the ART image contains {@link java.lang.Object} instances, it does not
-count towards your heap size.
-</dd>
-
-<dt><code>.Heap</code> (only with -d flag)</dt>
-<dd>This is the amount of heap memory for your app. This excludes objects in the image and large
-object spaces, but includes the zygote space and non-moving space.
-</dd>
-
-<dt><code>.LOS</code> (only with -d flag)</dt>
-<dd>This is the amount of RAM used by the ART large object space. This includes zygote large
-objects. Large objects are all primitive array allocations larger than 12KB.
-</dd>
-
-<dt><code>.GC</code> (only with -d flag)</dt>
-<dd>This is the amount of internal GC accounting overhead for your app. There is not really any way
-to reduce this overhead.
-</dd>
-
-<dt><code>.JITCache</code> (only with -d flag)</dt>
-<dd>This is the amount of memory used by the JIT data and code caches. Typically, this is zero
-since all of the apps will be compiled at installed time.
-</dd>
-
-<dt><code>.Zygote</code> (only with -d flag)</dt>
-<dd>This is the amount of memory used by the zygote space. The zygote space is created during
-device startup and is never allocated into.
-</dd>
-
-<dt><code>.NonMoving</code> (only with -d flag)</dt>
-<dd>This is the amount of RAM used by the ART non-moving space. The non-moving space contains
-special non-movable objects such as fields and methods. You can reduce this section by using fewer
-fields and methods in your app.
-</dd>
-
-<dt><code>.IndirectRef</code> (only with -d flag)</dt>
-<dd>This is the amount of RAM used by the ART indirect reference tables. Usually this amount is
-small, but if it is too high, it may be possible to reduce it by reducing the number of local and
-global JNI references used.
-</dd>
-
-<dt><code>Unknown</code></dt>
-<dd>Any RAM pages that the system could not classify into one of the other more specific items.
-Currently, this contains mostly native allocations, which cannot be identified by the tool when
-collecting this data due to Address Space Layout Randomization (ASLR). As with the Dalvik heap, the
-<code>Pss Total</code> for Unknown takes into account sharing with Zygote, and <code>Private Dirty</code>
-is unknown RAM dedicated to only your app.
-</dd>
-
-<dt><code>TOTAL</code></dt>
-<dd>The total Proportional Set Size (PSS) RAM used by your process. This is the sum of all PSS fields
-above it. It indicates the overall memory weight of your process, which can be directly compared
-with other processes and the total available RAM.
-
-<p>The <code>Private Dirty</code> and <code>Private Clean</code> are the total allocations within your
-process, which are not shared with other processes. Together (especially <code>Private Dirty</code>),
-this is the amount of RAM that will be released back to the system when your process is destroyed.
-Dirty RAM is pages that have been modified and so must stay committed to RAM (because there is no
-swap); clean RAM is pages that have been mapped from a persistent file (such as code being
-executed) and so can be paged out if not used for a while.</p>
-
-</dd>
-
-<dt><code>ViewRootImpl</code></dt>
-<dd>The number of root views that are active in your process. Each root view is associated with a
-window, so this can help you identify memory leaks involving dialogs or other windows.
-</dd>
-
-<dt><code>AppContexts</code> and <code>Activities</code></dt>
-<dd>The number of app {@link android.content.Context} and {@link android.app.Activity} objects that
-currently live in your process. This can be useful to quickly identify leaked {@link
-android.app.Activity} objects that can’t be garbage collected due to static references on them,
-which is common. These objects often have a lot of other allocations associated with them and so
-are a good way to track large memory leaks.</dd>
-
-<p class="note"><strong>Note:</strong> A {@link android.view.View} or {@link
-android.graphics.drawable.Drawable} object also holds a reference to the {@link
-android.app.Activity} that it's from, so holding a {@link android.view.View} or {@link
-android.graphics.drawable.Drawable} object can also lead to your app leaking an {@link
-android.app.Activity}.</p>
-
-</dd>
-</dl>
-
-
-
-
-
-
-
-
-
-<h2 id="HeapDump">Capturing a Heap Dump</h2>
-
-<p>A heap dump is a snapshot of all the objects in your app's heap, stored in a binary format called
-HPROF. Your app's heap dump provides information about the overall state of your app's heap so you
-can track down problems you might have identified while viewing heap updates.</p>
-
-
-<p>To retrieve your heap dump from within Android Studio, use the
-<a href="{@docRoot}tools/studio/index.html#mem-cpu">Memory Monitor</a> and
-<a href="{@docRoot}tools/studio/index.html#heap-dump">HPROF viewer</a>.  
-
-<p>You can also still perform these procedures in the Android monitor:</p>
-<ol>
-<li>Open the Device Monitor.
-<p>From your <code>&lt;sdk>/tools/</code> directory, launch the <code>monitor</code> tool.</p>
-</li>
-<li>In the DDMS window, select your app's process in the left-side panel.</li>
-<li>Click <strong>Dump HPROF file</strong>, shown in figure 3.</li>
-<li>In the window that appears, name your HPROF file, select the save location,
-then click <strong>Save</strong>.</li>
-</ol>
-
-<img src="{@docRoot}images/tools/monitor-hprof@2x.png" width="760" alt="" />
-<p class="img-caption"><strong>Figure 3.</strong> The Device Monitor tool,
-showing the <strong>[1] Dump HPROF file</strong> button.</p>
-
-<p>If you need to be more precise about when the dump is created, you can also create a heap dump
-at the critical point in your app code by calling {@link android.os.Debug#dumpHprofData
-dumpHprofData()}.</p>
-
-<p>The heap dump is provided in a format that's similar to, but not identical to one from the Java
-HPROF tool. The major difference in an Android heap dump is due to the fact that there are a large
-number of allocations in the Zygote process. But because the Zygote allocations are shared across
-all app processes, they don’t matter very much to your own heap analysis.</p>
-
-<p>To analyze your heap dump, you can use <a href=
-"{@docRoot}tools/help/am-memory.html">Memory Monitor</a> in Android Studio. 
-You can also use a standard tool like jhat. However, first
-you'll need to convert the HPROF file from Android's format to the J2SE HPROF format. You can do
-this using the <code>hprof-conv</code> tool provided in the 
-<code>&lt;sdk&gt;/platform-tools/</code>
-directory. Simply run the <code>hprof-conv</code> command with two arguments: the original HPROF
-file and the location to write the converted HPROF file. For example:</p>
-
-<pre class="no-pretty-print">
-hprof-conv heap-original.hprof heap-converted.hprof
-</pre>
-
-
-
-<p>You can now load the converted file into a heap analysis tool that understands
-the J2SE HPROF format.</p>
-
-<p>When analyzing your heap, you should look for memory leaks caused by:</p>
-<ul>
-<li>Long-lived references to an Activity, Context, View, Drawable, and other objects that may hold a
-reference to the container Activity or Context.</li>
-<li>Non-static inner classes (such as a Runnable, which can hold the Activity instance).</li>
-<li>Caches that hold objects longer than necessary.</li>
-</ul>
-
-
-
-
-<h2 id="TriggerLeaks">Triggering Memory Leaks</h2>
-
-<p>While using the tools described above, you should aggressively stress your app code and try
-forcing memory leaks. One way to provoke memory leaks in your app is to let it
-run for a while before inspecting the heap. Leaks will trickle up to the top of the allocations in
-the heap. However, the smaller the leak, the longer you need to run the app in order to see it.</p>
-
-<p>You can also trigger a memory leak in one of the following ways:</p>
-<ol>
-<li>Rotate the device from portrait to landscape and back again multiple times while in different
-activity states. Rotating the device can often cause an app to leak an {@link android.app.Activity},
-{@link android.content.Context}, or {@link android.view.View} object because the system
-recreates the {@link android.app.Activity} and if your app holds a reference
-to one of those objects somewhere else, the system can't garbage collect it.</li>
-<li>Switch between your app and another app while in different activity states (navigate to
-the Home screen, then return to your app).</li>
-</ol>
-
-<p class="note"><strong>Tip:</strong> You can also perform the above steps by using the "monkey"
-test framework. For more information on running the monkey test framework, read the <a href=
-"{@docRoot}tools/help/monkeyrunner_concepts.html">monkeyrunner</a>
-documentation.</p>
diff --git a/docs/html/tools/debugging/debugging-studio.jd b/docs/html/tools/debugging/debugging-studio.jd
deleted file mode 100644
index e1d80b9..0000000
--- a/docs/html/tools/debugging/debugging-studio.jd
+++ /dev/null
@@ -1,406 +0,0 @@
-page.title=Debugging with Android Studio
-
-@jd:body
-
-<div id="qv-wrapper">
-<div id="qv">
-<h2>In this document</h2>
-<ol>
-  <li><a href="#runDebug">Run your App in Debug Mode</a>
-    <ol>
-      <li><a href="#attachDebug">Attach the debugger to a running process</a></li>
-    </ol>
-  <li><a href="#systemLog">Use the System Log</a>
-    <ol>
-      <li><a href="#systemLogWrite">Write log messages in your code</a></li>
-      <li><a href="#systemLogView">View the system log</a></li>
-    </ol>
-  </li>
-  <li><a href="#breakPoints">Work with Breakpoints</a>
-    <ol>
-        <li><a href="#breakPointsView">View and configure breakpoints</a></li>
-        <li><a href="#breakPointsDebug">Debug your app with breakpoints</a></li>
-    </ol>
-  </li>
-  <li><a href="#allocTracker">Track Object Allocation</a></li>
-  <li><a href="#deviceMonitor">Analyze Runtime Metrics to Optimize your App</a></li>
-  <li><a href="#screenCap">Capture Screenshots and Videos</a></li>
-</ol>
-<h2>See also</h2>
-<ul>
-<li><a href="{@docRoot}sdk/installing/studio-tips.html">
-Android Studio Tips and Tricks</a></li>
-<li><a href="{@docRoot}tools/debugging/index.html">Debugging</a></li>
-<li><a href="{@docRoot}tools/help/monitor.html">Device Monitor</a></li>
-<li><a href="{@docRoot}tools/debugging/ddms.html">Using DDMS</a></li>
-</div>
-</div>
-
-<p>Android Studio enables you to debug apps running on the emulator or on an Android device.
-With Android Studio, you can:</p>
-
-<ul>
-    <li>Select a device to debug your app on.</li>
-    <li>View the system log.</li>
-    <li>Set breakpoints in your code.</li>
-    <li>Examine variables and evaluate expressions at run time.</li>
-    <li>Run the debugging tools from the Android SDK.</li>
-    <li>Capture screenshots and videos of your app.</li>
-</ul>
-
-<p>To debug your app, Android Studio builds a debuggable version of your app, connects
-to a device or to the emulator, installs the app and runs it. The IDE shows the system log
-while your app is running and provides debugging tools to filter log messages, work with
-breakpoints, and control the execution flow.</p>
-
-
-<h2 id="runDebug">Run your App in Debug Mode</h2>
-
-<div class="figure" style="width:419px">
-    <img src="{@docRoot}images/tools/as-debugdevices.png" alt=""/>
-    <p class="img-caption"><strong>Figure 1.</strong> The Choose Device window enables you to
-    select a physical Android device or a virtual device to debug your app.</p>
-</div>
-
-<p>To run your app in debug mode, you build an APK signed with a debug key and install it on a
-physical Android device or on the Android emulator.
-To set up an Android device for development, see <a href="{@docRoot}tools/device.html">Using
-Hardware Devices</a>. For more information about the emulator provided by the Android SDK, see
-<a href="{@docRoot}tools/devices/emulator.html">Using the Emulator.</a></p>
-
-<p>To debug your app in Android Studio:</p>
-
-<ol>
-    <li>Open your project in Android Studio.</li>
-    <li>Click <strong>Debug</strong> <img src="{@docRoot}images/tools/as-debugbutton.png"
-        style="vertical-align:bottom;margin:0;height:22px"  alt=""/> in the toolbar.</li>
-    <li>On the <em>Choose Device</em> window, select a hardware device from the list or
-        choose a virtual device.</li>
-    <li>Click <strong>OK</strong>. Your app starts on the selected device.</li>
-</ol>
-
-<p>Figure 1 shows the <em>Choose Device</em> window. The list shows all the Android devices
-connected to your computer. Select <strong>Launch Emulator</strong> to use an Android virtual device
-instead. Click the ellipsis <img src="{@docRoot}images/tools/as-launchavdm.png"
-style="vertical-align:bottom;margin:0;height:19px" alt=""/> to open the
-<a href="{@docRoot}tools/devices/managing-avds.html">Android Virtual Device Manager</a>.</p>
-
-<p>Android Studio opens the <em>Debug</em> tool window when you debug your app. To open the
-<em>Debug</em> window manually, click <strong>Debug</strong>
-<img src="{@docRoot}images/tools/as-debugwindowbutton.png"
-alt="" style="vertical-align:bottom;margin:0;height:20px"/>.
-This window shows threads and variables in the <em>Debugger</em> tab, the device status in the
-<em>Console</em> tab, and the system log in the <em>Logcat</em> tab. The <em>Debug</em> tool
-window also provides other debugging tools covered in the following sections.</p>
-
-<img src="{@docRoot}images/tools/as-debugview.png" alt="" />
-<p class="img-caption"><strong>Figure 2.</strong> The Debug tool window in Android Studio showing
-the current thread and the object tree for a variable.</p>
-
-<h3 id="attachDebug">Attach the debugger to a running process</h3>
-
-<p>You don't always have to restart your app to debug it. To debug an app that you're already
-running:</p>
-
-<ol>
-<li>Click <strong>Attach debugger to Android proccess</strong>
-<img src="{@docRoot}images/tools/as-attach.png" alt=""
-style="vertical-align:bottom;margin:0;height:20px"/>.</li>
-<li>In the <em>Choose Process</em> window, select the device and app you want to attach the
-debugger to.</li>
-<li>To open the <em>Debug</em> tool window, click <strong>Debug</strong>
-<img src="{@docRoot}images/tools/as-debugwindowbutton.png"
-alt="" style="vertical-align:bottom;margin:0;height:20px"/>.</li>
-</ol>
-
-<h2 id="systemLog">Use the System Log</h2>
-
-<p>The system log shows system messages while you debug your app. These messages include
-information from apps running on the device. If you want to use the
-system log to debug your app, make sure your code writes log messages and prints the stack
-trace for exceptions while your app is in the development phase.</p>
-
-<h3 id="systemLogWrite">Write log messages in your code</h3>
-
-<p>To write log messages in your code, use the {@link android.util.Log} class. Log messages
-help you understand the execution flow by collecting the system debug output while you interact
-with your app. Log messages can tell you what part of your application failed. For more
-information about logging, see <a href="{@docRoot}tools/debugging/debugging-log.html">
-Reading and Writing Logs</a>.</p>
-
-<p>The following example shows how you might add log messages to determine if previous state
-information is available when your activity starts:</p>
-
-<pre>
-import android.util.Log;
-...
-public class MyActivity extends Activity {
-    private static final String TAG = MyActivity.class.getSimpleName();
-    ...
-    &#64;Override
-    public void onCreate(Bundle savedInstanceState) {
-        if (savedInstanceState != null) {
-            Log.d(TAG, "onCreate() Restoring previous state");
-            /* restore state */
-        } else {
-            Log.d(TAG, "onCreate() No saved state available");
-            /* initialize app */
-        }
-    }
-}
-</pre>
-
-<p>During development, your code can also catch exceptions and write the stack trace to the system
-log:</p>
-
-<pre>
-void someOtherMethod() {
-    try {
-        ...
-    } catch (SomeException e) {
-        Log.d(TAG, "someOtherMethod()", e);
-    }
-}
-</pre>
-
-<p class="note"><strong>Note:</strong> Remove debug log messages and stack trace print calls from
-your code when you are ready to publish your app. You could do this by setting a <code>DEBUG</code>
-flag and placing debug log messages inside conditional statements.</p>
-
-
-<h3 id="systemLogView">View the system log</h3>
-
-<p>Both the <em>Android DDMS</em> (Dalvik Debug Monitor Server) and the <em>Debug</em> tool windows
-show the system log; however, the <em>Android DDMS</em> tool window lets you view only log messages
-for a particular process. To view the system log on the <em>Android DDMS</em> tool window:</p>
-
-<ol>
-    <li>Start your app as described in <a href="#runDebug">Run your App in Debug Mode</a>.</li>
-    <li>Click <strong>Android</strong> <img src="{@docRoot}images/tools/as-android.png" alt=""
-        style="vertical-align:bottom;margin:0;height:20px"/> to open the <em>Android DDMS</em>
-        tool window.</li>
-    <li>If the system log is empty in the <em>Logcat view</em>, click <strong>Restart</strong>
-        <img src="{@docRoot}images/tools/as-restart.png" alt=""
-        style="vertical-align:bottom;margin:0;height:22px"/>.</li>
-</ol>
-
-<img src="{@docRoot}images/tools/as-ddmslog.png" alt="" />
-<p class="img-caption"><strong>Figure 4.</strong> The system log in the Android DDMS tool
-window.</p>
-
-<p>The <em>Android DDMS</em> tool window gives you access to some DDMS features from Android Studio.
-For more information about DDMS, see <a href="{@docRoot}tools/debugging/ddms.html">Using DDMS</a>.
-</p>
-
-<p>The system log shows messages from Android services and other Android apps. To filter the log
-messages to view only the ones you are interested in, use the tools in the <em>Android DDMS</em>
-window:</p>
-
-<ul>
-    <li>To show only log messages for a particular process, select the process in the
-        <em>Devices</em> view and then click <strong>Only Show Logcat from Selected
-        Process</strong> <img src="{@docRoot}images/tools/as-currentproc.png" alt=""
-        style="vertical-align:bottom;margin:0;height:20px"/>. If the <em>Devices</em> view
-        is not available, click <strong>Restore Devices View</strong>
-        <img src="{@docRoot}images/tools/as-showdevview.png" alt=""
-        style="vertical-align:bottom;margin:0;height:20px"/> on the right of the <em>Android
-        DDMS</em> tool window. This button is only visible when you hide the <em>Devices</em>
-        window.</li>
-    <li>To filter log messages by log level, select a level under <em>Log Level</em> on the top
-        of the <em>Android DDMS</em> window.</li>
-    <li>To show only log messages that contain a particular string, enter the string in the search
-        box and press <strong>Enter</strong>.</li>
-</ul>
-
-
-<h2 id="breakPoints">Work with Breakpoints</h2>
-
-<p>Breakpoints enable you to pause the execution of your app at a particular line of code, examine
-variables, evaluate expressions, and continue the execution line by line. Use breakpoints to
-determine the causes of run-time errors that you can't fix by looking at your code only. To debug
-your app using breakpoints:</p>
-
-<ol>
-    <li>Open the source file in which you want to set a breakpoint.</li>
-    <li>Locate the line where you want to set a breakpoint and click on it.</li>
-    <li>Click on the yellow portion of the side bar to the left of this line, as shown in figure 5.</li>
-    <li>Start your app as described in <a href="#runDebug">Run your App in Debug Mode</a>.</li>
-</ol>
-
-<p>Android Studio pauses the execution of your app when it reaches the breakpoint. You can then
-use the tools in the <em>Debug</em> tool window to identify the cause of the error.</p>
-
-<img src="{@docRoot}images/tools/as-breakpointline.png" alt="" />
-<p class="img-caption"><strong>Figure 5.</strong> A red dot appears next to the line when you set
-a breakpoint.</p>
-
-<h3 id="breakPointsView">View and configure breakpoints</h3>
-
-<p>To view all the breakpoints and configure breakpoint settings, click <strong>View
-Breakpoints</strong> <img src="{@docRoot}images/tools/as-viewbreakbutton.png" alt=""
-style="vertical-align:bottom;margin:0;height:20px"/> on the left side of the <em>Debug</em> tool
-window. The <em>Breakpoints</em> window appears, as shown in figure 6.</p>
-
-<img src="{@docRoot}images/tools/as-breakpointswindow.png" alt="" />
-<p class="img-caption"><strong>Figure 6.</strong> The Breakpoints window lists all the current
-breakpoints and includes behavior settings for each.</p>
-
-<p>The <em>Breakpoints</em> window lets you enable or disable each breakpoint from the
-list on the left. If a breakpoint is disabled, Android Studio does not pause your app when
-it hits that breakpoint. Select a breakpoint from the list to configure its settings.
-You can configure a breakpoint to be disabled at first and have the system enable it after a
-different breakpoint is hit. You can also configure whether a breakpoint should be disabled after
-it is hit. To set a breakpoint for any exception, select <strong>Exception Breakpoints</strong>
-in the list of breakpoints.</p>
-
-<h3 id="breakPointsDebug">Debug your app with breakpoints</h3>
-
-<p>After you set breakpoints in your code, click <strong>Rerun</strong>
-<img src="{@docRoot}images/tools/as-restart.png" alt=""
-style="vertical-align:bottom;margin:0;height:20px"/> to start the app again. When a breakpoint is
-hit, Android Studio pauses the app and highlights the breakpoint in the source code. The
-<em>Debug</em> tool window lets you examine variables and control the execution step by
-step:</p>
-
-<ul>
-    <li>
-        <p>To examine the object tree for a variable, expand it in the <em>Variables</em> view. If
-        the <em>Variables</em> view is not visible, click <strong>Restore Variables View</strong>
-        <img src="{@docRoot}images/tools/as-varviewbutton.png" alt=""
-        style="vertical-align:bottom;margin:0;height:20px"/>.</p>
-    </li>
-    <li>
-        <p>To evaluate an expression at the current execution point, click <strong>Evaluate
-        Expression</strong> <img src="{@docRoot}images/tools/as-evalexpbutton.png" alt=""
-        style="vertical-align:bottom;margin:0;height:20px"/>.</p>
-    </li>
-    <li>
-        <p>To advance to the next line in the code (without entering a method), click <strong>Step
-        Over</strong> <img src="{@docRoot}images/tools/as-stepoverbutton.png" alt=""
-        style="vertical-align:bottom;margin:0;height:20px"/>.</p>
-    </li>
-    <li>
-        <p>To advance to the first line inside a method call, click <strong>Step
-        Into</strong> <img src="{@docRoot}images/tools/as-stepintobutton.png" alt=""
-        style="vertical-align:bottom;margin:0;height:20px"/>.</p>
-    </li>
-    <li>
-        <p>To advance to the next line outside the current method, click <strong>Step
-        Out</strong> <img src="{@docRoot}images/tools/as-stepoutbutton.png" alt=""
-        style="vertical-align:bottom;margin:0;height:20px"/>.</p>
-    </li>
-    <li>
-        <p>To continue running the app normally, click <strong>Resume Program</strong>
-        <img src="{@docRoot}images/tools/as-resumeprogrambutton.png" alt=""
-        style="vertical-align:bottom;margin:0;height:20px"/>.</p>
-    </li>
-</ul>
-
-<img src="{@docRoot}images/tools/as-variablesview.png" alt="" />
-<p class="img-caption"><strong>Figure 7.</strong> The Variables view in the Debug tool window.</p>
-
-
-<h2 id="allocTracker">Track Object Allocation</h2>
-
-<p>Android Studio lets you track objects that are being allocated on the Java heap and see which
-classes and threads are allocating these objects. This allows you to see the list of objects
-allocated during a period of interest. This information is valuable for assessing memory usage
-that can affect application performance.</p>
-
-<p>To track memory allocation of objects:</p>
-
-<ol>
-<li>Start your app as described in <a href="#runDebug">Run Your App in Debug Mode</a>.</li>
-<li>Click <strong>Android</strong> <img src="{@docRoot}images/tools/as-android.png" alt=""
-style="vertical-align:bottom;margin:0;height:20px"/> to open the <em>Android DDMS</em>
-tool window.</li>
-<li>On the <em>Android DDMS</em> tool window, select the <strong>Devices | logcat tab</strong>.</li>
-<li>Select your device from the dropdown list.</li>
-<li>Select your app by its package name from the list of running apps.</li>
-<li>Click <strong>Start Allocation Tracking</strong>
-<img src="{@docRoot}images/tools/as-allocstart.png" alt=""
-style="vertical-align:bottom;margin:0;height:20px"/></li>
-<li>Interact with your app on the device.</li>
-<li>Click <strong>Stop Allocation Tracking</strong>
-<img src="{@docRoot}images/tools/as-allocstop.png" alt=""
-style="vertical-align:bottom;margin:0;height:20px"/></li>
-</ol>
-
-<p>Android Studio shows the objects that the system allocated with the following information:</p>
-
-<ul>
-<li>Allocation order</li>
-<li>Allocated class</li>
-<li>Allocation size</li>
-<li>Thread ID</li>
-<li>Allocation method, class, and line number</li>
-<li>Stack trace at the point of allocation</li>
-</ul>
-
-<img src="{@docRoot}images/tools/as-alloctrack.png" alt="" width="750" height="252" />
-<p class="img-caption"><strong>Figure 8.</strong> Object allocation tracking in Android Studio.</p>
-
-
-<h2 id="deviceMonitor">Analyze Runtime Metrics to Optimize your App</h2>
-
-<p>Even if your application does not generate runtime errors, this does not mean it is free of
-problems. You should also consider the following issues:</p>
-
-<ul>
-    <li>Does your app use memory efficiently?</li>
-    <li>Does your app generate unnecessary network traffic?</li>
-    <li>What methods should you focus your attention on to improve the performance of your app?</li>
-    <li>Does your app behave properly when the user receives a phone call or a message?</li>
-</ul>
-
-<p>The Android Device Monitor is a stand-alone tool with a graphical user interface for serveral
-Android application debugging and analysis tools, including the Dalvik Debug Monitor Server (DDMS).
-You can use the Android Device Monitor to analyze memory usage, profile methods,
-monitor network traffic and simulate incoming calls and messages.</p>
-
-<p>To open the Android Device Monitor from Android Studio, click
-<strong>Monitor</strong> <img src="{@docRoot}images/tools/as-monitorbutton.png" alt=""
-style="vertical-align:bottom;margin:0;height:20px"/> on the toolbar. The Android Device Monitor
-opens in a new window.</p>
-
-<p>For more information about the Android Device Monitor and DDMS, see
-<a href="{@docRoot}tools/help/monitor.html">Device Monitor</a> and
-<a href="{@docRoot}tools/debugging/ddms.html">Using DDMS</a>.</p>
-
-
-<h2 id="screenCap">Capture Screenshots and Videos</h2>
-
-<p>Android Studio enables you to capture a screenshot or a short video of the device screen
-while your app is running. Screenshots and videos are useful as promotional materials for your
-app, and you can also attach them to bug reports that you send to your development team.</p>
-
-<p>To take a screenshot of your app:</p>
-
-<ol>
-    <li>Start your app as described in <a href="#runDebug">Run your App in Debug Mode</a>.</li>
-    <li>Click <strong>Android</strong> <img src="{@docRoot}images/tools/as-android.png" alt=""
-        style="vertical-align:bottom;margin:0;height:20px"/> to open the <em>Android DDMS</em>
-        tool window.</li>
-    <li>Click <strong>Screen Capture</strong> <img src="{@docRoot}images/tools/as-capture.png"
-        style="vertical-align:bottom;margin:0;height:22px" alt=""/> on the left side of the
-        <em>Android DDMS</em> tool window.</li>
-    <li>Optional: To add a device frame around your screenshot, enable the <em>Frame screenshot</em>
-        option.</li>
-    <li>Click <strong>Save</strong>.</li>
-</ol>
-
-<p>To take a video recording of your app:</p>
-
-<ol>
-    <li>Start your app as described in <a href="#runDebug">Run your App in Debug Mode</a>.</li>
-    <li>Click <strong>Android</strong> <img src="{@docRoot}images/tools/as-android.png" alt=""
-        style="vertical-align:bottom;margin:0;height:20px"/> to open the <em>Android DDMS</em>
-        tool window.</li>
-    <li>Click <strong>Screen Record</strong> <img src="{@docRoot}images/tools/as-record.png"
-        style="vertical-align:bottom;margin:0;height:22px" alt=""/> on the left side of the
-        <em>Android DDMS</em> tool window.</li>
-    <li>Click <strong>Start Recording</strong>.</li>
-    <li>Interact with your app.</li>
-    <li>Click <strong>Stop Recording</strong>.</li>
-    <li>Enter a file name for the recording and click <strong>OK</strong>.</li>
-</ol>
diff --git a/docs/html/tools/debugging/debugging-tracing.jd b/docs/html/tools/debugging/debugging-tracing.jd
deleted file mode 100644
index 70869da..0000000
--- a/docs/html/tools/debugging/debugging-tracing.jd
+++ /dev/null
@@ -1,298 +0,0 @@
-page.title=Profiling with Traceview and dmtracedump
-parent.title=Debugging
-parent.link=index.html
-@jd:body
-
- <div id="qv-wrapper">
-    <div id="qv">
-      <h2>In this document</h2>
-
-      <ol>
-        <li>
-          <a href="#traceviewLayout">Traceview Layout</a>
-
-          <ol>
-            <li><a href="#timelinepanel">Timeline Panel</a></li>
-
-            <li><a href="#profilepanel">Profile Panel</a></li>
-          </ol>
-        </li>
-
-        <li><a href="#creatingtracefiles">Creating Trace Files</a></li>
-
-        <li><a href="#copyingfiles">Copying Trace Files to a Host Machine</a></li>
-
-        <li><a href="#runningtraceview">Viewing Trace Files in Traceview</a></li>
-
-        <li><a href="#dmtracedump">Using dmtracedump</a></li>
-        
-        <li><a href="#knownissues">Traceview Known Issues</a></li>
-      </ol>
-    </div>
-  </div>
-
-  <p>Traceview is a graphical viewer for execution logs that you create by using the {@link
-  android.os.Debug} class to log tracing information in your code. Traceview can help you debug
-  your application and profile its performance.</p>
-
-  <h2 id="traceviewLayout">Traceview Layout</h2>
-
-  <p>When you have a trace log file (generated by adding tracing code to your application or by DDMS),
-  you can load the log files in Traceview, which displays the log data in two panels:</p>
-
-  <ul>
-    <li>A <a href="#timelinepanel">timeline panel</a> -- describes when each thread and method
-    started and stopped</li>
-
-    <li>A <a href="#timelinepanel">profile panel</a> -- provides a summary of what happened inside
-    a method</li>
-  </ul>
-
-  <p>The sections below provide addition information about the traceview output panes.</p>
-  
-  <h3 id="timelinepanel">Timeline Panel</h3>
-
-  <p>Figure 1 shows a close up of the timeline panel. Each thread&rsquo;s execution is shown
-  in its own row, with time increasing to the right. Each method is shown in another color (colors
-  are reused in a round-robin fashion starting with the methods that have the most inclusive time).
-  The thin lines underneath the first row show the extent (entry to exit) of all the calls to the
-  selected method.</p>
-
-  <img src="{@docRoot}images/traceview_timeline.png"
-       alt="Traceview timeline panel"
-       width="893"
-       height="284" />
-       <p class="img-caption"><strong>Figure 1.</strong> The Traceview Timeline Panel</p>
-
-  <h3 id="profilepanel">Profile Panel</h3>
-
-  <p>Figure 2 shows the profile pane, a summary of all the time spent
-  in a method. The table shows both the inclusive and exclusive times (as well as the percentage of
-  the total time). Exclusive time is the time spent in the method. Inclusive time is the time spent
-  in the method plus the time spent in any called functions. We refer to calling methods as
-  "parents" and called methods as "children." When a method is selected (by clicking on it), it
-  expands to show the parents and children. Parents are shown with a purple background and children
-  with a yellow background. The last column in the table shows the number of calls to this method
-  plus the number of recursive calls. The last column shows the number of calls out of the total
-  number of calls made to that method. In this view, we can see that there were 14 calls to
-  <code>LoadListener.nativeFinished();</code> looking at the timeline panel shows that one of those calls took
-  an unusually long time.</p>
-
-  <img src="{@docRoot}images/traceview_profile.png"
-       alt="Traceview profile panel."
-       width="892"
-       height="630" />
-  <p class="img-caption"><strong>Figure 2.</strong> The Traceview Profile Panel</p>
-
-  <h2 id="creatingtracefiles">Creating Trace Files</h2>
-
-  <p>To use Traceview, you need to generate log files containing the trace information you want to
-  analyze.</p>
-  
-  <p>There are two ways to generate trace logs:</p>
-  <ul>
-    <li>Include the {@link android.os.Debug} class in your code and call its
-  methods such as {@link android.os.Debug#startMethodTracing()} and {@link
-  android.os.Debug#stopMethodTracing()}, to start and stop logging of trace information to disk.
-  This option is very precise because
-  you can specify exactly where to start and stop logging trace data in your code.</li>
-    <li>Use the method profiling feature of DDMS to generate trace logs. This option is less
-    precise because you do not modify code, but rather specify when to start and stop logging with
-    DDMS. Although you have less control on exactly where logging starts and stops,
-    this option is useful if you don't have access to the application's code, or if you do
-    not need precise log timing.
-    </li>
-  </ul>
-  
-  <p>Before you start generating trace logs, be aware of the following restrictions:</p>
-  <ul>
-    <li>If you are using the {@link android.os.Debug} class,
-     your application must have permission to write to external storage
-     ({@link android.Manifest.permission#WRITE_EXTERNAL_STORAGE}). </li>
-    <li>If you are using DDMS:
-      <ul>
-        <li>Android 2.1 and earlier devices must
-    have an SD card present and your application must have permission to write to the SD card.
-        <li>Android 2.2 and later devices do not need an SD card. The trace log files are
-    streamed directly to your development machine.</li>
-      </ul>
-    </li>
-  </ul>
-  
-  <p>This document focuses on using the {@link android.os.Debug} class to generate trace data.  For more information on using DDMS
-  to generate trace data, see <a href="ddms.html#profiling">Using the Dalvik Debug Monitor Server.</a>
-  </p>
-  
-  <p>To create the trace files, include the {@link android.os.Debug} class and call one of the
-  {@link android.os.Debug#startMethodTracing() startMethodTracing()} methods. In the call, you
-  specify a base name for the trace files that the system generates. To stop tracing, call {@link
-  android.os.Debug#stopMethodTracing() stopMethodTracing()}. These methods start and stop method
-  tracing across the entire virtual machine. For example, you could call
-  {@link android.os.Debug#startMethodTracing() startMethodTracing()} in
-  your activity's {@link android.app.Activity#onCreate onCreate()} method, and call
-  {@link android.os.Debug#stopMethodTracing() stopMethodTracing()} in that activity's
-  {@link android.app.Activity#onDestroy()} method.</p>
-  <pre>
-    // start tracing to "/sdcard/calc.trace"
-    Debug.startMethodTracing("calc");
-    // ...
-    // stop tracing
-    Debug.stopMethodTracing();
-</pre>
-
-  <p>When your application calls {@link android.os.Debug#startMethodTracing() startMethodTracing()},
-  the system creates a file called
-  <code>&lt;trace-base-name&gt;.trace</code>. This contains the binary method trace data and a
-  mapping table with thread and method names.</p>
-
-  <p>The system then begins buffering the generated trace data, until your application calls
-  {@link android.os.Debug#stopMethodTracing() stopMethodTracing()}, at which time it writes
-  the buffered data to the output file. If the system
-  reaches the maximum buffer size before you call {@link android.os.Debug#stopMethodTracing()
-  stopMethodTracing()}, the system stops tracing
-  and sends a notification to the console.</p>
-
-  <p>Interpreted code runs more slowly when profiling is enabled. Don't try to generate
-  absolute timings from the profiler results (such as, "function X takes 2.5 seconds to run"). The
-  times are only useful in relation to other profile output, so you can see if changes have made
-  the code faster or slower relative to a previous profiling run.</p>
-
-  <p>In Android 4.4 and later, you can use sample-based profiling to profile with less runtime
-  performance impact. To enable sample profiling, call {@link
-  android.os.Debug#startMethodTracingSampling(java.lang.String, int, int)
-  startMethodTracingSampling()} with a specified sampling interval. The system will then gather
-  samples periodically until tracing is stopped via {@link android.os.Debug#stopMethodTracing()
-  stopMethodTracing()}.</p>
-
-  <h2 id="copyingfiles">Copying Trace Files to a Host Machine</h2>
-
-  <p>After your application has run and the system has created your trace files
-  <code>&lt;trace-base-name&gt;.trace</code> on a device or emulator, you must copy those files to
-  your development computer. You can use <code>adb pull</code> to copy the files. Here's an example
-  that shows how to copy an example file, calc.trace, from the default location on the emulator to
-  the /tmp directory on the emulator host machine:</p>
-  <pre>
-adb pull /sdcard/calc.trace /tmp
-</pre>
-
-  <h2 id="runningtraceview">Viewing Trace Files in Traceview</h2>
-
-  <p>To run Traceview and view the trace files:</p>
-  <ul>
-    <li>start the
-    <a href="{@docRoot}tools/help/monitor.html">Android Device Monitor</a>. </li>
-    <li>In the Android Device Monitor tool bar, click <strong>DDMS</strong> and select a process. </li>
-    <li>Click the <strong>Start Method Profiling</strong> icon to start method profiling. </li>
-    <li>After the profiling is complete, click the <strong>Stop Method Profiling</strong> icon to
-    display the traceview. </li>
-   </ul> 
-
-  <p class="note"><strong>Note:</strong> If you are trying to view the trace logs of an application 
-  that is built with ProGuard enabled (release mode build), some method and member names might be obfuscated.
-  You can use the Proguard <code>mapping.txt</code> file to figure out the original unobfuscated names. For more information
-  on this file, see the <a href="{@docRoot}tools/help/proguard.html">Proguard</a> documentation.</p>
-
-      <h2 id="dmtracedump">Using dmtracedump</h2>
-
-      <p><code>dmtracedump</code> is a tool that gives you an alternate way of generating
-      graphical call-stack diagrams from trace log files. The tool uses the Graphviz Dot utility to
-      create the graphical output, so you need to install Graphviz before running dmtracedump.</p>
-
-      <p>The dmtracedump tool generates the call stack data as a tree diagram, with each call
-      represented as a node. It shows call flow (from parent node to child nodes) using arrows. The
-      diagram below shows an example of dmtracedump output.</p>
-      <img src=
-      "{@docRoot}images/tracedump.png"
-          width="485"
-          height="401" />
-       <p class="img-caption"><strong>Figure 3.</strong> Screenshot of dmtracedump</p>
-
-      <p>For each node, dmtracedump shows <code>&lt;ref&gt;
-      <em>callname</em> (&lt;inc-ms&gt;, &lt;exc-ms&gt;,&lt;numcalls&gt;)</code>, where</p>
-
-      <ul>
-        <li><code>&lt;ref&gt;</code> -- Call reference number, as used in trace logs</li>
-
-        <li><code>&lt;inc-ms&gt;</code> -- Inclusive elapsed time (milliseconds spent in method,
-        including all child methods)</li>
-
-        <li><code>&lt;exc-ms&gt;</code> -- Exclusive elapsed time (milliseconds spent in method,
-        not including any child methods)</li>
-
-        <li><code>&lt;numcalls&gt;</code> -- Number of calls</li>
-      </ul>
-
-      <p>The usage for dmtracedump is:</p>
-      <pre>
-dmtracedump [-ho] [-s sortable] [-d trace-base-name] [-g outfile] &lt;trace-base-name&gt;
-</pre>
-
-      <p>The tool then loads trace log data from <code>&lt;trace-base-name&gt;.data</code> and
-      <code>&lt;trace-base-name&gt;.key</code>. The table below lists the options for dmtracedump.</p>
-
-      <table>
-        <tr>
-          <th>Option</th>
-
-          <th>Description</th>
-        </tr>
-
-        <tr>
-          <td><code>-d&nbsp;&lt;trace-base-name&gt;</code></td>
-
-          <td>Diff with this trace name</td>
-        </tr>
-
-        <tr>
-          <td><code>-g&nbsp;&lt;outfile&gt;</code></td>
-
-          <td>Generate output to &lt;outfile&gt;</td>
-        </tr>
-
-        <tr>
-          <td><code>-h</code></td>
-
-          <td>Turn on HTML output</td>
-        </tr>
-
-        <tr>
-          <td><code>-o</code></td>
-
-          <td>Dump the trace file instead of profiling</td>
-        </tr>
-
-        <tr>
-          <td><code>-d&nbsp;&lt;trace-base-name&gt;</code></td>
-
-          <td>URL base to the location of the sortable javascript file</td>
-        </tr>
-
-        <tr>
-          <td><code>-t&nbsp;&lt;percent&gt;</code></td>
-
-          <td>Minimum threshold for including child nodes in the graph (child's inclusive time as a
-          percentage of parent inclusive time). If this option is not used, the default threshold
-          is 20%.</td>
-        </tr>
-      </table>
-  
-  
-    
-  <h2 id="knownissues">Traceview Known Issues</h2>
-
-  <dl>
-    <dt>Threads</dt>
-
-    <dd>
-      Traceview logging does not handle threads well, resulting in these two problems:
-
-      <ol>
-        <li>If a thread exits during profiling, the thread name is not emitted (fixed in Android 5.1
-	and later);</li>
-
-        <li>The VM reuses thread IDs. If a thread stops and another starts, they may get the same
-        ID.</li>
-      </ol>
-    </dd>
-
-    </dl>
diff --git a/docs/html/tools/debugging/debugging-ui.jd b/docs/html/tools/debugging/debugging-ui.jd
deleted file mode 100644
index cf7e3ba..0000000
--- a/docs/html/tools/debugging/debugging-ui.jd
+++ /dev/null
@@ -1,503 +0,0 @@
-page.title=Optimizing Your UI
-parent.title=Debugging
-parent.link=index.html
-@jd:body
-
- <div id="qv-wrapper">
-    <div id="qv">
-      <h2>In this document</h2>
-
-      <ol>
-        <li>
-            <a href="#HierarchyViewer">
-                Using Hierarchy Viewer
-            </a>
-            <ol>
-                <li><a href="#runhv">Running Hierarchy Viewer and choosing a window</a></li>
-                <li><a href="#viewhierarchy">About the View Hierarchy window</a></li>
-                <li><a href="#indiView">Working with an individual View in Tree View</a></li>
-                <li><a href="#hvdebugging">Debugging with View Hierarchy</a></li>
-                <li><a href="#hvoptimize">Optimizing with View Hierarchy</a></li>
-            </ol>
-        </li>
-        <li>
-            <a href="#pixelperfect">
-                Using Pixel Perfect
-            </a>
-            <ol>
-                <li><a href="#aboutpixelperfect">About the Pixel Perfect window</a></li>
-                <li><a href="#overlays">Working with Pixel Perfect overlays</a></li>
-            </ol>
-        </li>
-        <li><a href="#lint">Using lint to optimize your UI</a></li>
-      </ol>
-      <h2>Related videos</h2>
-          <ol>
-              <li>
-<iframe title="Hierarchyviewer"
-    width="210" height="160"
-    src="//www.youtube.com/embed/PAgE7saQUUY?rel=0&amp;hd=1"
-    frameborder="0" allowfullscreen>
-</iframe>
-              </li>
-              <li>
-<iframe title="Pixel Perfect"
-    width="210" height="160"
-    src="//www.youtube.com/embed/C45bMZGdN7Y?rel=0&amp;hd=1"
-    frameborder="0"
-    allowfullscreen>
-</iframe>
-              </li>
-          </ol>
-    </div>
-  </div>
-
-
-<p>Sometimes your application's layout can slow down your application.
-To help debug issues in your layout, the Android SDK provides the Hierarchy Viewer and
-<code><a href="{@docRoot}tools/help/lint.html">lint</a></code> tools. </p>
-
-  <p>The Hierarchy Viewer application allows you to debug and optimize your user interface. It
-  provides a visual representation of the layout's View hierarchy (the View Hierarchy window)
-  with performance information for each node in the layout,
-  and a magnified view of the display (the Pixel Perfect window) to closely examine the pixels
-  in your layout.</p>
-
-  <p>Android <code><a href="{@docRoot}tools/help/lint.html">lint</a></code> is a static code
-  scanning tool that helps you optimize the layouts and layout
-  hierarchies of your applications, as well as detect other common coding problems. You can run it
-  against your layout files or resource
-  directories to quickly check for inefficiencies or other types of problems that could be
-  affecting the performance of your application.</p>
-
-<h2 id="HierarchyViewer">Using Hierarchy Viewer</h2>
-
-<h3 id="runhv">Running Hierarchy Viewer and choosing a window</h3>
-<p>
-    To run Hierarchy Viewer, follow these steps:</p>
-<ol>
-    <li>
-        Connect your device or launch an emulator.
-        <p>
-            To preserve security, Hierarchy Viewer can only connect to devices running a
-            developer version of the Android system.
-        </p>
-    </li>
-    <li>
-        If you have not done so already, install the application you want to work with.
-    </li>
-    <li>
-        Run the application, and ensure that its UI is visible.
-    </li>
-    <li>
-        From a terminal, launch <code>hierarchyviewer</code> from the
-        <code>&lt;sdk&gt;/tools/</code>
-        directory.
-    </li>
-    <li>
-        The first window you see displays a list of devices and emulators. To expand the list
-        of Activity objects for a device or emulator, click the arrow on the left. This displays a
-        list of the Activity objects whose UI is currently visible on the device or emulator. The
-        objects are listed by their Android component name. The list includes both your application
-        Activity and system Activity objects. A screenshot of this window appears in
-        figure 1.
-    </li>
-    <li>
-        Select the name of your Activity from the list. You can now look at its view
-        hierarchy using the View Hierarchy window, or look at a magnified image of the UI using
-        the Pixel Perfect window.
-    </li>
-</ol>
-<p>
-    To learn how to use the View Hierarchy window, go to
-    <a href="#viewhierarchy">About the View Hierarchy window</a>. To learn how to use the
-    Pixel Perfect window, go to <a href="#pixelperfect">About the Pixel Perfect window</a>.
-</p>
-<img id="Fig1" src="{@docRoot}images/developing/hv_device_window.png" alt="" height="600"/>
-<p class="img-caption"><strong>Figure 1.</strong> Hierarchy Viewer device window</p>
-<h3 id="viewhierarchy">About the View Hierarchy window</h3>
-<p>
-    The View Hierarchy window displays the View objects that form the UI of the
-    Activity that is running on your device or emulator. You use it to look at individual
-    View objects within the context of the entire View tree. For each View object, the View
-    Hierarchy window also displays rendering performance data.
-</p>
-<p>
-    To see the View Hierarchy window, run Hierarchy Viewer as described in
-    the section <a href="#runhv">Running Hierarchy Viewer and choosing a window</a>. Next, click
-    <strong>View Hierarchy</strong> at the top of the device window.
-</p>
-<p>
-    You should see four panes:
-</p>
-<ul>
-    <li>
-        <strong>Tree View</strong>: The left-hand pane displays the Tree View,
-        a diagram of the Activity object's hierarchy of views. Use Tree View to examine individual
-        View objects and see the relationships between View objects in your UI.
-        <p>
-            To zoom in on the pane, use the slider at the bottom of the pane, or use your mouse
-            scroll wheel. To move around in the pane or reveal View objects that are not currently
-            visible, click and drag the pane.
-        </p>
-        <p>
-            To highlight the nodes in the tree whose class or ID match a search string, enter the
-            string in the <strong>Filter by class or id:</strong> edit box at the bottom of the
-            window. The background of nodes that match the search string will change from gray to
-            bright blue.
-        </p>
-        <p>
-            To save a screenshot of Tree View to a PNG file, click <strong>Save As PNG</strong> at
-            the top of the View Hierarchy window. This displays a dialog in which you can choose
-            a directory and file name.
-        </p>
-        <p>
-            To save a layered screenshot of your device or emulator to an Adobe Photoshop (PSD)
-            file, click <strong>Capture Layers</strong> at the top of the View Hierarchy window.
-            This displays a dialog in which you can choose a directory or file name.
-            Each View in the UI is saved as a separate Photoshop layer.
-        </p>
-        <p>
-            In Photoshop (or similar program that accepts .psd files), you can hide, show or edit a
-            layer independently of others. When you save a layered screenshot, you can examine and
-            modify the image of an individual View object. This helps you experiment with design
-            changes.
-        </p>
-    </li>
-    <li>
-        The upper right-hand pane displays the <strong>Tree Overview</strong>, a smaller map
-        representation of the entire Tree View window. Use Tree Overview to identify the part of the
-        view tree that is being displayed in Tree View.
-        <p>
-            You can also use Tree Overview to move around in the Tree View pane. Click and drag
-            the shaded rectangle over an area to reveal it in Tree View.
-        </p>
-    </li>
-    <li>
-        The middle right-hand pane displays the <strong>Properties View</strong>,
-        a list of the properties for a selected View object. With Properties View, you can
-        examine all the properties without having to look at your application source.
-        <p>
-            The properties are organized by category. To find an individual property, expand
-            a category name by clicking the arrow on its left. This reveals all the properties
-            in that category.
-        </p>
-    </li>
-    <li>
-        The lower right-hand pane displays the <strong>Layout View</strong>,
-        a block representation of the UI. Layout View is another way to navigate through your UI.
-        When you click on a View object in Tree View, its position in the UI is highlighted.
-        Conversely, when you click in an area of Layout View, the View object for that area is
-        highlighted in Tree View.
-        <p>
-            The outline colors of blocks in Layout View provide additional information:
-        </p>
-            <ul>
-                <li>
-                    Bold red: The block represents the the View that is currently selected in
-                    Tree View.
-                </li>
-                <li>
-                    Light red: The block represents the parent of the block outlined in bold red.
-                </li>
-                <li>
-                    White: The block represents a visible View that is not a parent or child of the
-                    View that is currently selected in Tree View.
-                </li>
-            </ul>
-    </li>
-</ul>
-<p>
-    When the UI of the current Activity changes, the View Hierarchy window is not automatically
-    updated. To update it, click <strong>Load View Hierarchy</strong> at the top of the window.
-</p>
-<p>
-    Also, the window is not updated if you switch to a new Activity. To update it, start by
-    clicking the window selection icon in the bottom left-hand corner of the window. This
-    navigates back to the Window Selection window. From this window, click the Android
-    component name of the new Activity and then click <strong>Load View Hierarchy</strong>
-    at the top of the window.
-</p>
-<p>
-    A screenshot of the View Hierarchy window appears in figure 2.
-</p>
-<img id="Fig2" src="{@docRoot}images/developing/hv_view_hierarchy_window.png" alt="" height="600"/>
-<p class="img-caption"><strong>Figure 2.</strong> The View Hierarchy window</p>
-<h3 id="indiView">Working with an individual View in Tree View</h3>
-<p>
-    Each node in Tree View represents a single View. Some information is always visible. Starting
-    at the top of the node, you see the following:
-</p>
-<ol>
-    <li>
-        View class: The View object's class.
-    </li>
-    <li>
-        View object address: A pointer to View object.
-    </li>
-    <li>
-        View object ID: The value of the
-        <code><a href="{@docRoot}guide/topics/resources/layout-resource.html#idvalue">android:id</a>
-        </code> attribute.
-    </li>
-    <li>
-        Performance indicators: A set of three colored dots that indicate the rendering
-        speed of this View relative to other View objects in the tree. The three dots
-        represent (from left to right) the measure, layout, and draw times of the rendering.
-        <p>
-            The colors indicate the following relative performance:
-        </p>
-        <ul>
-            <li>
-                Green: For this part of the render time, this View is in the faster 50% of all
-                the View objects in the tree. For example, a green dot for the measure time means
-                that this View has a faster measure time than 50% of the View objects in the tree.
-            </li>
-            <li>
-                Yellow: For this part of the render time, this View is in the slower 50% of all
-                the View objects in the tree. For example, a yellow dot for the layout time means
-                that this View has a slower layout time than 50% of the View objects in the tree.
-            </li>
-            <li>
-                Red: For this part of the render time, this View is the slowest one in the tree.
-                For example, a red dot for the draw time means that this View takes the most
-                time to draw of all the View objects in the tree.
-            </li>
-        </ul>
-    </li>
-    <li>
-        View index: The zero-based index of the View in its parent View. If it is the only child,
-        this is 0.
-    </li>
-</ol>
-<p>
-    When you select a node, additional information for the View appears in a small window above
-    the node. When you click one of the nodes, you see the following:
-</p>
-<ul>
-    <li>
-        Image: The actual image of the View, as it would appear in the emulator. If the View has
-        children, these are also displayed.
-    </li>
-    <li>
-        View count: The number of View objects represented by this node. This includes the View
-        itself and a count of its children. For example, this value is 4 for a View that has 3
-        children.
-    </li>
-    <li>
-        Render times: The actual measure, layout, and draw times for the View rendering, in
-        milliseconds. These represent the same values as the performance indicators mentioned in
-        the preceding section.
-    </li>
-</ul>
-<p>
-    An annotated screenshot of an individual node in the Tree View window appears in figure 3.
-</p>
-<img id="Fig3" src="{@docRoot}images/developing/hv_treeview_screenshot.png" alt="" height="600"/>
-<p class="img-caption"><strong>Figure 3.</strong> An annotated node in Tree View</p>
-<h3 id="hvdebugging">Debugging with View Hierarchy</h3>
-<p>
-    The View Hierarchy window helps you debug an application by providing a static display
-    of the UI. The display starts with your application's opening screen. As you step through
-    your application, the display remains unchanged until you redraw it by invalidating and
-    then requesting layout for a View.
-</p>
-<p>
-    To redraw a View in the display:
-</p>
-    <ul>
-        <li>
-            Select a View in Tree View. As you move up towards the root of the tree (to the
-            left in the Tree View), you see the highest-level View objects. Redrawing a high-level
-            object usually forces the lower-level objects to redraw as well.
-        </li>
-        <li>
-            Click <strong>Invalidate</strong> at the top of the window. This marks the View as
-            invalid, and schedules it for a redraw at the next point that a layout is requested.
-        </li>
-        <li>
-            Click <strong>Request Layout</strong> to request a layout. The View and its children
-            are redrawn, as well as any other View objects that need to be redrawn.
-        </li>
-    </ul>
-<p>
-    Manually redrawing a View allows you to watch the View object tree and examine the properties of
-    individual View objects one step at a time as you go through breakpoints in your code.
-</p>
-<h3 id="hvoptimize">Optimizing with View Hierarchy</h3>
-<p>
-    View Hierarchy also helps you identify slow render performance. You start by looking at the
-    View nodes with red or yellow performance indicators to identify the slower View objects. As you
-    step through your application, you can judge if a View is consistently slow or slow only in
-    certain circumstances.
-</p>
-<p>
-    Remember that slow performance is not necessarily evidence of a problem, especially for
-    ViewGroup objects. View objects that have more children and more complex View objects render
-    more slowly.
-</p>
-<p>
-    The View Hierarchy window also helps you find performance issues. Just by looking at the
-    performance indicators (the dots) for each View node, you can see which View objects are the
-    slowest to measure, layout, and draw. From that, you can quickly identify the problems you
-    should look at first.
-</p>
-<h2 id="pixelperfect">Using Pixel Perfect</h2>
-<p>
-    Pixel Perfect is a tool for examining pixel properties and laying out UIs from a design drawing.
-</p>
-<h3 id="aboutpixelperfect">About the Pixel Perfect window</h3>
-<p>
-    The Pixel Perfect window displays a magnified image of the screen that is currently
-    visible on the emulator or device. In it, you can examine the properties
-    of individual pixels in the screen image. You can also use the Pixel Perfect window
-    to help you lay out your application UI based on a bitmap design.
-</p>
-<p>
-    To see the Pixel Perfect window, run Hierarchy Viewer, as described in
-    the section <a href="#runhv">Running Hierarchy Viewer and choosing a window</a>. Next, click
-    <strong>Inspect Screenshot</strong> at the top of the device window. The Pixel Perfect window
-    appears.
-</p>
-<p>
-    In it, you see three panes:
-</p>
-<ul>
-    <li>
-        View Object pane: This is a hierarchical list of the View objects that are currently
-        visible on the device or emulator screen, including both the ones in your application and
-        the ones generated by the system. The objects are listed by their View class.
-        To see the class names of a View object's children, expand the View by clicking the
-        arrow to its left. When you click a View, its position is highlighted in the Pixel Perfect
-        pane on the right.
-    </li>
-    <li>
-        Pixel Perfect Loupe pane: This is the magnified screen image. It is overlaid by a grid in
-        which each square represents one pixel. To look at the information for a pixel, click in its
-        square. Its color and X,Y coordinates appear at the bottom of the pane.
-        <p>
-            The magenta crosshair in the pane corresponds to the positioning
-            crosshair in the next pane. It only moves when you move the crosshair in the next pane.
-        </p>
-        <p>
-            To zoom in or out on the image, use the <strong>Zoom</strong> slider at the bottom of
-            the pane, or use your mouse's scroll wheel.
-        </p>
-        <p>
-            When you select a pixel in the Loupe pane, you see the following information at the
-            bottom of the pane:
-        </p>
-        <ul>
-            <li>
-                Pixel swatch: A rectangle filled with the same color as the pixel.
-            </li>
-            <li>
-                HTML color code: The hexadecimal RGB code corresponding to the pixel color
-            </li>
-            <li>
-                RGB color values: A list of the (R), green (G), and blue (B) color values of the
-                pixel color. Each value is in the range 0-255.
-            </li>
-            <li>
-                X and Y coordinates: The pixel's coordinates, in device-specific pixel units.
-                The values are 0-based, with X=0 at the left of the screen and Y=0 at the top.
-            </li>
-        </ul>
-    </li>
-    <li>
-        Pixel Perfect pane: This displays the currently visible screen as it would appear in the
-        emulator.
-        <p>
-            You use the cyan crosshair to do coarse positioning. Drag the crosshair in the image,
-            and the Loupe crosshair will move accordingly. You can also click on a point in the
-            Pixel Perfect pane, and the crosshair will move to that point.
-        </p>
-        <p>
-            The image corresponding to the View object selected in the View Object pane is
-            outlined in a box that indicates the View object's position on the screen. For the
-            selected object, the box is bold red. Sibling and parent View objects have a light
-            red box. View objects that are neither parents nor siblings are in white.
-        </p>
-        <p>
-            The layout box may have other rectangles either inside or outside it, each of which
-            indicates part of the View. A purple or green rectangle indicates the View bounding box.
-            A white or black box inside the layout box represents the <strong>padding</strong>, the
-            defined distance between the View object's content and its bounding box. An outer white
-            or black rectangle represents the <strong>margins</strong>, the distance between the
-            View bounding box and adjacent View objects. The padding and margin boxes are white if
-            the layout background is black, and vice versa.
-        </p>
-        <p>
-            You can save the screen image being displayed in the Pixel Perfect pane as a PNG file.
-            This produces a screenshot of the current screen. To do this, click
-            <strong>Save as PNG</strong> at the top of the window. This displays a dialog,
-            in which you can choose a directory and filename for the file.
-        </p>
-    </li>
-</ul>
-<p>
-    The panes are not automatically refreshed when you change one of the View objects or go to
-    another Activity. To refresh the Pixel Perfect pane and the Loupe pane, click
-    <strong>Refresh Screenshot</strong> at the top of the window. This will change the panes
-    to reflect the current screen image. You still may need to refresh the View Object pane;
-    to do this, click <strong>Refresh Tree</strong> at the top of the window.
-</p>
-<p>
-    To automatically refresh the panes while you are debugging, set
-    <strong>Auto Refresh</strong> at the top of the window, and then set a refresh rate
-    with the <strong>Refresh Rate</strong> slider at the bottom of the Loupe pane.
-</p>
-<h3 id="overlays">Working with Pixel Perfect overlays</h3>
-<p>
-    You often construct a UI based on a design done as a bitmap image. The Pixel Perfect window
-    helps you match up your View layout to a bitmap image by allowing you to load the bitmap as an
-    <strong>overlay</strong> on the screen image.
-</p>
-<p>
-    To use a bitmap image as an overlay:
-</p>
-<ul>
-    <li>
-        Start your application in a device or emulator and navigate to the Activity whose UI you
-        want to work with.
-    </li>
-    <li>
-        Start Hierarchy Viewer and navigate to the Pixel Perfect window.
-    </li>
-    <li>
-        At the top of the window, click <strong>Load Overlay</strong>. A dialog opens, prompting
-        for the image file to load. Load the image file.
-    </li>
-    <li>
-        Pixel Perfect displays the overlay over the screen image in the Pixel Perfect pane. The
-        lower left corner of the bitmap image (X=0, Y=<em>max value</em>) is anchored on the lower
-        leftmost pixel (X=0, Y=<em>max screen</em>) of the screen.
-        <p>
-            By default, the overlay has a 50% transparency, which allows you to see the screen
-            image underneath. You can adjust this with the <strong>Overlay:</strong> slider at the
-            bottom of the Loupe pane.
-        </p>
-        <p>
-            Also by default, the overlay is not displayed in the Loupe pane. To display it,
-            set <strong>Show in Loupe</strong> at the top of the window.
-        </p>
-    </li>
-</ul>
-<p>
-    The overlay is not saved as part of the screenshot when you save the screen image as a PNG
-    file.
-</p>
-<p>
-    A screenshot of the Pixel Perfect window appears in figure 4.
-</p>
-<img id="Fig4" src="{@docRoot}images/developing/hv_pixelperfect.png"
-        alt=""
-        height="600"/>
-<p class="img-caption"><strong>Figure 4.</strong> The Pixel Perfect window</p>
-
-
-<h2 id="lint">Using lint to Optimize Your UI</h2>
-<p>The Android <a href="{@docRoot}tools/help/lint.html">lint</a> tool lets you analyze the XML
-files that define your application's UI to find inefficiencies in the view hierarchy.</p>
-<p class="note"><strong>Note: </strong>The Android <code>layoutopt</code> tool has been replaced by the {@code lint} tool beginning in SDK Tools revision 16. The {@code lint} tool reports UI layout performance issues in a similar way as <code>layoutopt</code>, and detects additional problems.</p>
-<p>For more information about using {@code lint}, see <a href="{@docRoot}tools/debugging/improving-w-lint.html">Improving Your Code with lint</a> and the <a  href="{@docRoot}tools/help/lint.html">lint tools help</a>.</p>
diff --git a/docs/html/tools/debugging/improving-w-lint.jd b/docs/html/tools/debugging/improving-w-lint.jd
deleted file mode 100644
index 3b220b5..0000000
--- a/docs/html/tools/debugging/improving-w-lint.jd
+++ /dev/null
@@ -1,310 +0,0 @@
-page.title=Improving Your Code with lint
-parent.title=Debugging
-parent.link=index.html
-@jd:body
-
-<div id="qv-wrapper">
-    <div id="qv">
-      <h2>In This Document</h2>
-
-      <ol>
-        <li><a href="#overview">Overview</a></li>
-        <li><a href="#studio">Running lint from Android Studio</a></li>
-        <li><a href="#commandline">Running lint from the command-line</a></li>
-         <li><a href="#config">Configuring lint</a>
-            <ol>
-		<LI><a href="#studio_config">Configuring lint in Android Studio</a></LI>
-                <LI><a href="#pref">Configuring the lint file</a></LI>
-                <LI><a href="#src">Configuring lint checking in Java and XML source files</a></LI>
-            </ol>
-         </li>
-      </ol>
-      <h2>See Also</h2>
-          <ol>
-              <li><a href="{@docRoot}tools/help/lint.html">lint (reference)</a></li>
-              <li><a href="{@docRoot}tools/degugging/annotations.html">Using Android Annotations</a></li>
-          </ol>
-    </div>
-</div>
-
-
-<p>
-In addition to testing that your Android application meets its functional requirements, it's
-important to ensure that your code has no structural problems. Poorly structured code can impact the
-reliability and efficiency of your Android apps and make your code harder to maintain. For example,
-if your XML resource files contain unused namespaces, this takes up space and incurs unnecessary
-processing. Other structural issues, such as use of deprecated elements or API calls that are not
-supported by the target API versions, might lead to code failing to run correctly.</p>
-
-<h2 id="overview">Overview</h2>
-<p>The Android SDK provides a code scanning tool called <a href="{@docRoot}tools/help/lint.html"><code>lint</code></a>
-that can help you to easily identify and correct problems with the structural quality of your code,
-without having to execute the app or write any test cases. Each problem detected by the tool is
-reported with a description message and a severity level, so that you can quickly prioritize the
-critical improvements that need to be made.  You can also configure a problem's severity level to
-ignore issues that are not relevant for your project, or raise the severity level. The tool has a
-command-line interface, so you can easily integrate it into your automated testing process.</p>
-<p>The {@code lint} tool checks your Android project source files for potential bugs and
-optimization improvements for correctness, security, performance, usability, accessibility, and
-internationalization. You can run {@code lint} from the command-line or from Android Studio.</p>
-
-<p class="note"><strong>Note:</strong> In Android Studio, additional
-<a href="https://www.jetbrains.com/idea/help/inspection-basics.html?search=inspection" class="external-link"
-target="_blank">IntelliJ code inspections</a> run when your code is compiled in Android Studio to
-streamline code review.</p>
-
-<p>Figure 1 shows how the {@code lint} tool processes the application source files.</p>
-<img id="Fig1" src="{@docRoot}images/tools/lint.png" alt="">
-<p class="img-caption"><strong>Figure 1.</strong> Code scanning workflow with the {@code lint} tool</p>
-<dl>
-<dt><b>Application source files</b></dt>
-<dd>The source files consist of files that make up your Android project, including Java and XML
-files, icons, and ProGuard configuration files. </dd>
-<dt><b>The <code>lint.xml</code> file</b></dt>
-<dd>A configuration file that you can use to specify any {@code lint} checks that you want to
-exclude and to customize problem severity levels.</dd>
-<dt><b>The {@code lint} tool</b></dt>
-<dd>A static code scanning tool that you can run on your Android project from the command-line or
-Android Studio.  The {@code lint} tool checks for structural code problems that could affect the
-quality and performance of your Android application. It is strongly recommended that you correct any
-errors that {@code lint} detects before publishing your application.</dd>
-<dt><b>Results of {@code lint} checking</b></dt>
-<dd>You can view the results from {@code lint} in the console or in the <strong>Event Log</strong>
-in Android Studio.  Each issue is identified by the location in the source files where it occurred
-and a description of the issue.</dd>
-</dl>
-<p>The {@code lint} tool is automatically installed as part of the Android SDK Tools revision 16 or
-higher.</p>
-
-
-<h2 id="studio">Running lint in Android Studio</h2>
-<p>In Android Studio, the configured <code>lint</code> and
-IDE inspections run automatically whenever you build your app. The IDE inspections are
-configured along with the {@code lint} checks to run
-<a href="https://www.jetbrains.com/idea/help/inspection-basics.html?search=inspection" class="external-link"
-target="_blank">IntelliJ code inspections</a> to streamline code review.</p>
-
-<p class="note"><strong>Note:</strong> To view and modify inspection severity
-levels, use the <strong>File &gt; Settings &gt; Project Settings</strong> menu to open the
-<em>Inspection Configuration</em> page with a list of the supported inspections.</p>
-
-
-<p>With Android Studio, you can also run {@code lint} inspections for a specific build variant,
-or for all build variants from the <code>build.gradle</code> file. Add the
-<code>lintOptions</code> property to the <code>android</code> settings in the build file.
-This code snippet from a Gradle build file shows how to set the <code>quiet</code> option to
-<code>true</code> and the <code>abortOnError</code> option to <code>false</code>. </p>
-
-<pre>
-android {
-    lintOptions {
-       // set to true to turn off analysis progress reporting by lint
-       quiet true
-       // if true, stop the gradle build if errors are found
-       abortOnError false
-       // if true, only report errors
-       ignoreWarnings true
-       }
-       ...
-    }
-</pre>
-
-
-<p>To manually run inspections in Android Studio, from the application or right-click menu,
-choose <strong>Analyze &gt; Inspect Code</strong>. The <em>Specify Inspections Scope</em> dialog
-appears so you can specify the desired inspection scope and profile.</p>
-
-
-
-
-<h2 id="commandline">Running lint from the Command-Line</h2>
-<p>
-To run {@code lint} against a list of files in a project directory:
-<pre>lint [flags] &lt;project directory&gt;</pre>
-<p>For example, you can issue the following command to scan the files under the {@code myproject}
-directory and its subdirectories. The issue ID  <code>MissingPrefix</code> tells {@code lint} to
-only scan for XML attributes that are missing the Android namespace prefix.</p>
-<pre>lint --check MissingPrefix myproject </pre>
-<p>To see the full list of flags and command-line arguments supported by the tool:</p>
-<pre>lint --help</pre>
-</p>
-
-<h3>Example lint output</h3>
-<p>The following example shows the console output when the {@code lint} command is run against a
-project called Earthquake.  </p>
-<pre>
-$ lint Earthquake
-
-Scanning Earthquake: ...............................................................................................................................
-Scanning Earthquake (Phase 2): .......
-AndroidManifest.xml:23: Warning: &lt;uses-sdk&gt; tag appears after &lt;application&gt; tag [ManifestOrder]
-  &lt;uses-sdk android:minSdkVersion="7" /&gt;
-  ^
-AndroidManifest.xml:23: Warning: &lt;uses-sdk&gt; tag should specify a target API level (the highest verified version; when running on later versions, compatibility behaviors may be enabled) with android:targetSdkVersion="?" [UsesMinSdkAttributes]
-  &lt;uses-sdk android:minSdkVersion="7" /&gt;
-  ^
-res/layout/preferences.xml: Warning: The resource R.layout.preferences appears to be unused [UnusedResources]
-res: Warning: Missing density variation folders in res: drawable-xhdpi [IconMissingDensityFolder]
-0 errors, 4 warnings
-</pre>
-<p>The output above lists four warnings and no errors in this project.  Three warnings
-({@code ManifestOrder}, {@code UsesMinSdkAttributes}, and {@code UnusedResources}) were found in
-the project's <code>AndroidManifest.xml</code> file. The remaining warning
-({@code IconMissingDensityFolder}) was found in the <code>Preferences.xml</code> layout file.</p>
-
-<h2 id="config">Configuring lint</h2>
-<p>By default, when you run a {@code lint} scan, the tool checks for all issues that are supported
-by {@code lint}.  You can also restrict the issues for {@code lint} to check and assign the severity
-level for those issues. For example, you can disable {@code lint} checking for specific issues that
-are not relevant to your project and configure {@code lint} to report non-critical issues at a lower
-severity level.</p>
-<p>You can configure {@code lint} checking at different levels:</p>
-<ul>
-<LI>Globally, for the entire project</LI>
-<li>Per project module</li>
-<li>Per production module</li>
-<li>Per test module</li>
-<li>Per open files</li>
-<li>Per class hierarchy</li>
-<li>Per Version Control System (VCS) scopes</li>
-</ul>
-
-<h3 id="studio_config">Configuring lint in Android Studio</h3>
-<p>Android Studio allows you to enable or disable individual inspections and configure
-project-global, directory-specific, and file-specific settings for {@code lint}.</p>
-
-<p>You can manage inspection profiles and configure inspection severity within Android Studio using
-the <strong>File &gt; Settings &gt; Project Settings</strong> menu to open the <em>Inspections</em>
-page with a list of the supported profiles and inspections.</p>
-<p><img src="{@docRoot}images/tools/studio-inspections-config.png" alt="" /> </p>
-<p class="img-caption"><strong>Figure 3.</strong> Inspection Configuration</p> 
-
-<h4>Global preferences</h4>
-<ol>
-<li>To specify global project settings, select the project folder in the Project View and choose
-<strong>Analyze &gt; Inspect Code</strong>.</li>
-
-<li>Specify your inspection scope and profile, and click <b>OK</b>.</li>
-</ol>
-<p>The configured settings run the specified {@code lint} inspections. The {@code lint}
-inspections are also run whenever you build and run your Android project and modules.</p>
-
-<h4>Module and file-specific preferences</h4>
-<ol>
-<LI>Run the {@code lint} tool on your module by right-clicking on your module folder or file in the
-Project View and selecting  <strong>Analyze &gt; Inspect Code</strong>. This displays the
-{@code lint} inspection results
-with a list of issues that {@code lint} detected in your module.</LI>
-<li>From the <strong>Lint Warnings</strong> view, use the toolbar options to configure {@code lint}
-preferences for individual modules and files, and set the issue display options.</li>
-</ol>
-
-
-<h3 id="pref">Configuring the lint file</h3>
-<p>You can specify your {@code lint} checking preferences in the <code>lint.xml</code> file.  If you
-are creating this file manually, place it in the root directory of your Android project.  If you are
-configuring {@code lint} preferences in Android Studio, the <code>lint.xml</code> file is
-automatically created and added to your Android project for you.</p>
-<p>The <code>lint.xml</code> file consists of an enclosing <code>&lt;lint&gt;</code> parent tag that
-contains one or more children <code>&lt;issue&gt;</code> elements.  Each <code>&lt;issue&gt;</code>
-is identified by a unique <code>id</code> attribute value, which is defined by {@code lint}.</p>
-<pre>
-&lt;?xml version="1.0" encoding="UTF-8"?&gt;
-    &lt;lint&gt;
-        &lt;!-- list of issues to configure --&gt;
-&lt;/lint&gt;
-</pre>
-<p>By setting the severity attribute value in the <code>&lt;issue&gt;</code> tag, you can disable
-{@code lint} checking for an issue or change the severity level for an issue.  </p>
-<p class="note"><strong>Tip: </strong>To see the full list of issues supported by the {@code lint}
-tool and their corresponding issue IDs, run the <code>lint --list</code> command.</p>
-
-<h4>Sample lint.xml file</h4>
-<p>The following example shows the contents of a <code>lint.xml</code> file.</p>
-<pre>
-&lt;?xml version="1.0" encoding="UTF-8"?&gt;
-&lt;lint&gt;
-    &lt;!-- Disable the given check in this project --&gt;
-    &lt;issue id="IconMissingDensityFolder" severity="ignore" /&gt;
-
-    &lt;!-- Ignore the ObsoleteLayoutParam issue in the specified files --&gt;
-    &lt;issue id="ObsoleteLayoutParam"&gt;
-        &lt;ignore path="res/layout/activation.xml" /&gt;
-        &lt;ignore path="res/layout-xlarge/activation.xml" /&gt;
-    &lt;/issue>
-
-    &lt;!-- Ignore the UselessLeaf issue in the specified file --&gt;
-    &lt;issue id="UselessLeaf"&gt;
-        &lt;ignore path="res/layout/main.xml" /&gt;
-    &lt;/issue&gt;
-
-    &lt;!-- Change the severity of hardcoded strings to "error" --&gt;
-    &lt;issue id="HardcodedText" severity="error" /&gt;
-&lt;/lint&gt;
-</pre>
-
-<h3 id="src">Configuring lint checking in Java and XML source files</h3>
-<p>You can disable {@code lint} checking from your Java and XML source files.</p>
-
-<p class="note"><strong>Tip: </strong>If you are using Android Studio, you can use the
-<strong>File &gt; Settings &gt; Project Settings &gt; Inspections</strong> feature to manage the
-{@code lint} checking to your Java or XML source files.
-</p>
-
-<h4>Configuring lint checking in Java</h4>
-<p>To disable {@code lint} checking specifically for a Java class or method in your Android project,
-add the <code>&#64;SuppressLint</code> annotation to that Java code. </p>
-<p>The following example shows how you can turn off {@code lint} checking for the {@code NewApi}
-issue in the <code>onCreate</code> method.  The {@code lint} tool continues to check for the
-{@code NewApi} issue in other methods of this class.</p>
-<pre>
-&#64;SuppressLint("NewApi")
-&#64;Override
-public void onCreate(Bundle savedInstanceState) {
-    super.onCreate(savedInstanceState);
-    setContentView(R.layout.main);
-</pre>
-<p>The following example shows how to turn off {@code lint} checking for the {@code ParserError}
-issue in the <code>FeedProvider</code> class:</p>
-<pre>
-&#64;SuppressLint("ParserError")
-public class FeedProvider extends ContentProvider {
-</pre>
-<p>To suppress checking for all {@code lint} issues in the Java file, use the {@code all} keyword,
-like this:</p>
-<pre>
-&#64;SuppressLint("all")
-</pre>
-
-<h4>Configuring lint checking in XML</h4>
-<p>You can use the <code>tools:ignore</code> attribute to disable {@code lint} checking for specific
-sections of your XML files.  In order for this attribute to be recognized by the {@code lint} tool,
-the following namespace value must be included in your XML file:</p>
-<pre>
-namespace xmlns:tools="http://schemas.android.com/tools"
-</pre>
-<p>The following example shows how you can turn off {@code lint} checking for the
-{@code UnusedResources} issue for the <code>&lt;LinearLayout&gt;</code> element of an XML layout
-file.  The <code>ignore</code> attribute is inherited by the children elements of the parent element
-in which the attribute is declared. In this example, the {@code lint} check is also disabled for the
-child <code>&lt;TextView&gt;</code> element. </p>
-<pre>
-&lt;LinearLayout 
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:tools="http://schemas.android.com/tools"
-    tools:ignore="UnusedResources" &gt;
-
-    &lt;TextView
-        android:text="&#64;string/auto_update_prompt" /&gt;
-&lt;/LinearLayout&gt;
-</pre>
-<p>To disable more than one issue, list the issues to disable in a comma-separated string.  For
-example:</p>
-<pre>
-tools:ignore="NewApi,StringFormatInvalid"
-</pre>
-<p>To suppress checking for all {@code lint} issues in the XML element, use the {@code all} keyword,
-like this:</p>
-<pre>
-tools:ignore="all"
-</pre>
diff --git a/docs/html/tools/debugging/index.jd b/docs/html/tools/debugging/index.jd
deleted file mode 100644
index 9717916..0000000
--- a/docs/html/tools/debugging/index.jd
+++ /dev/null
@@ -1,185 +0,0 @@
-page.title=Debugging
-@jd:body
-
-
- <div id="qv-wrapper">
-    <div id="qv">
-      <h2>In this document</h2>
-
-      <ol>
-        <li><a href="#stack">Debugging Environment</a></li>
-
-        <li><a href="#addltools">Additional Debugging Tools</a></li>
-
-        <li><a href="#tips">Debugging Tips</a></li>
-      </ol>
-    </div>
-  </div>
-
-  <p>The Android SDK provides most of the tools that you need to debug your applications. You need
-  a JDWP-compliant debugger if you want to be able to do things such as step through code,
-  view variable values, and pause execution of an application. If you are using Android Studio, a
-  JDWP-compliant debugger is already included and there is no setup required. If you are using
-  another IDE, you can use the debugger that comes with it and attach the debugger to a special
-  port so it can communicate with the application VMs on your devices. The main components that
-  comprise a typical Android debugging environment are:</p>
-
-  <dl>
-    <dt><a href="{@docRoot}tools/help/adb.html"><strong>adb</strong></a></dt>
-
-    <dd><code>adb</code> acts as a middleman between a device and your development system. It 
-    provides various
-    device management capabilities, including moving and syncing files to the emulator, running a
-    UNIX shell on the device or emulator, and providing a general means to communicate with
-    connected emulators and devices.</dd>
-
-    <dt><a href="{@docRoot}tools/debugging/ddms.html"><strong>Dalvik Debug Monitor
-    Server</strong></a></dt>
-
-    <dd>DDMS is a graphical program that communicates with your devices through <code>adb</code>. DDMS can
-    capture screenshots, gather thread and stack information, spoof incoming calls and SMS
-    messages, and has many other features.</dd>
-
-    <dt><strong><a href="{@docRoot}tools/device.html">Device</a> or
-    <a href="{@docRoot}tools/devices/index.html">Android Virtual Device</a></strong></dt>
-
-    <dd>Your application must run in a device or in an AVD so that it can be debugged. An
-    <code>adb</code> device daemon runs on the device or emulator and provides a means for the
-    <code>adb</code> host daemon to communicate with the device or emulator.</dd>
-
-    <dt><strong>JDWP debugger</strong></dt>
-
-    <dd>The Dalvik VM (Virtual Machine) supports the JDWP protocol to allow debuggers to attach to
-    a VM. Each application runs in a VM and exposes a unique port that you can attach a debugger to
-    via DDMS. If you want to debug multiple applications, attaching to each port might become
-    tedious, so DDMS provides a port forwarding feature that can forward a specific VM's debugging
-    port to port 8700. You can switch freely from application to application by highlighting it in the
-    Devices tab of DDMS. DDMS forwards the appropriate port to port 8700. Most modern Java IDEs include a JDWP debugger,
-    or you can use a command line debugger such as <a href="http://download.oracle.com/javase/6/docs/technotes/tools/">
-    <code>jdb</code></a>.</dd>
-  </dl>
-
-  <h2>Debugging Environment</h2>
-
-  <p>Figure 1 shows how the various debugging tools work together in a typical
-  debugging environment.</p>
-  <img src="{@docRoot}images/debugging.png"
-        alt="Debugging workflow" />
-  <p class="img-caption><strong>Figure 1. </strong> Debugging Workflow</p>
-
-  <p>On your emulator or device, each application runs in its own instance of a Dalvik VM. The
-  <code>adb</code> device daemon allows communication with the VMs from an outside party.</p>
-
-  <p>On your development machine, the <code>adb</code> host daemon communicates with the
- <code>adb</code> device daemon and allows tools such as DDMS to communicate with the device or emulator. 
- The <code>adb</code> host daemon also allows you to access shell commands on the device as well as 
- providing capabilities such as application installation and file transferring.</p>
-
-  <p>Each application VM on the device or emulator exposes a debugging port that you can attach to
-  via DDMS. DDMS can forward any of these ports to a static debugging port (typically port 8700) by
-  selecting the application that you want to debug in the DDMS user interface. A JDWP debugger can
-  attach to this static debugging port and debug all the applications that are running on the
-  device or emulator without having to attach to multiple ports.</p>
-
-  <p>If you are using Android Studio, much of these interconnections are hidden from you. DDMS,
-  <code>adb</code>, and a
-  JDWP debugger are all setup for you and you can access them through the Debug and DDMS view. If
-  you are developing with another IDE environment, you may have to invoke these tools manually.</p>
-
-  <h2 id="addltools">Additional Debugging Tools</h2>
-
-  <p>In addition to the main debugging tools, the Android SDK provides additional tools to help you
-  debug and profile your applications:</p>
-
-  <dl>
-    <dt><strong><a href="{@docRoot}tools/debugging/debugging-ui.html">Heirarchy Viewer
-    and layoutopt</a></strong></dt>
-
-    <dd>Graphical programs that let you debug and profile user interfaces.</dd>
-
-    <dt><strong><a href=
-    "{@docRoot}tools/debugging/debugging-tracing.html">Traceview</a></strong></dt>
-
-    <dd>A graphical viewer that displays trace file data for method calls and times saved by your
-    application, which can help you profile the performance of your application.</dd>
-
-    <dt><strong><a href="{@docRoot}tools/debugging/debugging-devtools.html">Dev Tools
-    Android application</a></strong></dt>
-
-    <dd>The Dev Tools application included in the emulator system image exposes several settings
-    that provide useful information such as CPU usage and frame rate. You can also transfer the
-    application to a hardware device.</dd>
-  </dl>
-
-
-  <h2 id="tips">Debugging Tips</h2>
-
-<p>While debugging, keep these helpful tips in mind to help you figure out common problems with your
-applications:</p>
-
-<dl>
-<dt><strong>Dump the stack trace</strong></dt>
-<dd>To obtain a stack dump from emulator, you can log
-in with <code>adb shell</code>, use <code>ps</code> to find the process you
-want, and then <code>kill -3</code>. The stack trace appears in the log file.
-</dd>
-
-<dt><strong>Display useful info on the emulator screen</strong></dt>
-<dd>The device can display useful information such as CPU usage or highlights
-around redrawn areas. Turn these features on and off in the developer settings
-window as described in <a href="{@docRoot}tools/debugging/debugging-devtools.html">
-Debugging with the Dev Tools App</a>.
-</dd>
-
-<dt><strong>Get application and system state information from the emulator</strong></dt>
-<dd>You can access dumpstate information from the <code>adb shell</code> commands. See
-<a href="{@docRoot}tools/help/adb.html#dumpsys">dumpsys and
-dumpstate</a> on the adb topic page.</dd>
-
-<dt><strong>Get wireless connectivity information</strong></dt>
-<dd>You can get information about wireless connectivity using DDMS.
-From the <strong>Device</strong> menu, select <strong>Dump
-radio state</strong>.</dd>
-
-<dt><strong>Log trace data</strong></dt>
-<dd>You can log method calls and other tracing data in an activity by calling
-{@link android.os.Debug#startMethodTracing(String) startMethodTracing()}. See <a
-href="{@docRoot}tools/debugging/debugging-tracing.html">Profiling with Traceview and
-dmtracedump</a> for details. </dd>
-
-<dt><strong>Log radio data</strong></dt>
-<dd>By default, radio information is not logged to the system (it is a lot of
-data). However, you can enable radio logging using the following commands:
-
-<pre class="no-pretty-print">
-adb shell
-logcat -b radio
-</pre>
-</dd>
-
-<dt><strong>Capture screenshots</strong></dt>
-<dd>The Dalvik Debug Monitor Server (DDMS) can capture screenshots from the emulator. Select
-<strong>Device > Screen capture</strong>.</dd>
-
-<dt><strong>Use debugging helper classes</strong></dt>
-<dd>Android provides debug helper classes such as {@link android.util.Log
-    util.Log} and {@link android.os.Debug} for your convenience. </dd>
-
-<dt><strong>Garbage collection</strong></dt>
-<dd>
-The debugger and garbage collector are currently loosely integrated. The VM guarantees that any
-object the debugger is aware of is not garbage collected until after the debugger disconnects.
-This can result in a buildup of objects over time while the debugger is connected. For example,
-if the debugger sees a running thread, the associated {@link java.lang.Thread} object is not
-garbage collected even after the thread terminates.
-</dd>
-
-</dl>
-
-
-
-
-
-
-
-
diff --git a/docs/html/tools/debugging/systrace.jd b/docs/html/tools/debugging/systrace.jd
deleted file mode 100644
index bdeff12..0000000
--- a/docs/html/tools/debugging/systrace.jd
+++ /dev/null
@@ -1,287 +0,0 @@
-page.title=Analyzing UI Performance with Systrace
-page.tags=systrace,speed
-parent.title=Debugging
-parent.link=index.html
-@jd:body
-
-<div id="qv-wrapper">
-  <div id="qv">
-    <h2>In this document</h2>
-    <ol>
-      <li><a href="#overview">Overview</a></li>
-      <li><a href="#generate">Generating a Trace</a></li>
-      <li><a href="#analysis">Analyzing a Trace</a>
-        <ol>
-          <li><a href="#frames">Inspecting Frames</a></li>
-          <li><a href="#alerts">Investigating Alerts</a></li>
-        </ol>
-      </li>
-      <li><a href="#app-trace">Tracing Application Code</a></li>
-    </ol>
-    <h2>See also</h2>
-    <ol>
-      <li><a href="{@docRoot}tools/help/systrace.html">Systrace</a></li>
-    </ol>
-  </div>
-</div>
-
-<p>While developing your application, you should check that user interactions are buttery smooth,
-running at a consistent 60 frames per second. If something goes wrong, and a frame gets dropped, the
-first step in fixing the problem is understanding what the system is doing.</p>
-
-<p>The Systrace tool allows you to collect and inspect timing information across an entire Android
-device, which is called a <em>trace</em>. It shows where time and CPU cycles are being spent,
-displaying what each thread and process is doing at any given time. It also inpects the captured
-tracing information to highlight problems that it observes, from list item recycling to rendering
-content, and provide recommendations about how to fix them. This document explains how to navigate
-the trace files produced by the tool, and use them to analyze the performance of an application's
-user interface (UI).</p>
-
-<h2 id="overview">Overview</h2>
-
-<p>Systrace helps you analyze how the execution of your application fits into the many running
-systems on an Android device. It puts together system and application thread execution on a common
-timeline. In order to analyze your app with Systrace, you first collect a trace log of your app, and
-the system activity. The generated trace allows you to view highly detailed, interactive reports
-showing everything happening in the system for the traced duration.</p>
-
-<img src="{@docRoot}images/systrace/overview.png" alt="Systrace example overview" id="figure1" />
-<p class="img-caption">
-  <strong>Figure 1.</strong> An example Systrace, showing 5 seconds of scrolling an app when it
-  is not performing well.
-</p>
-
-<p>Figure 1. shows a trace captured while scrolling an app that is not rendering smoothly. By
-default, a zoomed out view of the traced duration is shown. The horizontal axis is time, and trace
-events are grouped by process, and then by thread on the vertical axis.</p>
-
-<p>The groupings are in the order Kernel, SurfaceFlinger (the android compositor process), followed
-by apps, each labeled by package name. Each app process contains all of the tracing signals from
-each thread it contains, including a hierarchy of high level tracing events based on the enabled
-tracing categories.</p>
-
-
-<h2 id="generate">Generating a Trace</h2>
-
-<p>In order to create a trace of your application, you must perform a few setup steps. First, you
-must have a device running Android 4.1 (API 16) or higher. Set up the device
-for <a href="{@docRoot}tools/device.html#setting-up">debugging</a>, connect it to your development
-system, and install your application. Some types of trace information, specifically disk activity
-and kernel work queues, require that you have root access to the device. However, most Systrace log
-data only requires that the device be enabled for developer debugging.</p>
-
-<p>Systrace traces can be run either from
-a <a href="{@docRoot}tools/help/systrace.html#options">command line</a> or from a
-<a href="{@docRoot}tools/help/systrace.html#gui">graphical user interface</a>. This guide focuses on
-using the command line options.</p>
-
-<h3 id="running-4.3">Tracing on Android 4.3 and higher</h3>
-
-<p>To run a trace on Android 4.3 and higher devices:</p>
-
-<ol>
-  <li>Make sure the device is connected through a USB cable and is
-  <a href="{@docRoot}tools/device.html#setting-up">enabled for debugging</a>.</li>
-  <li>Run the trace with the options you want, for example:
-<pre>
-$ cd android-sdk/platform-tools/systrace
-$ python systrace.py --time=10 -o mynewtrace.html sched gfx view wm
-</pre>
-  </li>
-  <li>On the device, execute any user actions you want be included in the trace.</li>
-</ol>
-
-<p>For more information on the available options for running Systrace, see the
-<a href="#options-4.3">Systrace</a> help page.</p>
-
-
-<h3 id="running-4.2">Tracing on Android 4.2 and lower</h3>
-
-<p>To use Systrace effectively with devices running Android 4.2 and lower,
-  you must configure the types of processes you want to trace before running a trace.
-  The tool can gather the following types of process information:</p>
-
-<ul>
-  <li>General system processes such as graphics, audio and input processes (selected using trace
-    <a href="#tags">category tags</a>).</li>
-  <li>Low level system information such as CPU, kernel and disk activity (selected using
-    <a href="#options">options</a>).</li>
-</ul>
-
-<p>To set trace tags for Systrace using the command-line:</p>
-
-<ol>
-  <li>Use the {@code --set-tags} option:
-<pre>
-$ cd android-sdk/platform-tools/systrace
-$ python systrace.py --set-tags=gfx,view,wm
-</pre>
-  </li>
-  <li>Stop and restart the {@code adb} shell to enable tracing of these processes.
-<pre>
-$ adb shell stop
-$ adb shell start
-</pre></li>
-</ol>
-
-<p>To set trace tags for Systrace using the device user interface:</p>
-
-<ol>
-  <li>On the device connected for tracing, navigate to: <strong>Settings &gt;
-      Developer options &gt; Monitoring &gt; Enable traces</strong>.</li>
-  <li>Select the categories of processes to be traced and click <strong>OK</strong>.</li>
-</ol>
-
-<p class="note">
-  <strong>Note:</strong> The {@code adb} shell does not have to be stopped and restarted when
-  selecting trace tags using this method.
-</p>
-
-<p>After you have configured the category tags for your trace, you can start collecting
-  information for analysis.</p>
-
-<p>To run a trace using the current trace tag settings:</p>
-
-<ol>
-  <li>Make sure the device is connected through a USB cable and is
-  <a href="{@docRoot}tools/device.html#setting-up">enabled for debugging</a>.</li>
-  <li>Run the trace with the low-level system trace options and limits you want, for example:
-<pre>
-$ python systrace.py --cpu-freq --cpu-load --time=10 -o mytracefile.html
-</pre>
-  </li>
-  <li>On the device, execute any user actions you want be included in the trace.</li>
-</ol>
-
-<p>For more information on the available options for running Systrace, see the
-<a href="#options-pre-4.3">Systrace</a> help page.</p>
-
-
-<h2 id="analysis">Analyzing a Trace</h2>
-
-<p>After you have generated a trace, open the output html file using a web browser. This section
-explains how to analyze and interpret the information that the tool produces to find and fix UI
-performance problems.</p>
-
-<h3 id="frames">Inspecting Frames</h3>
-
-<p>Each app that is rendering frames shows a row of frame circles, which are typically colored
-green. Circles that are colored yellow or red, exceeding the 16.6 millisecond run time limit
-required to maintain a stable 60 frames per second. Zoom in using the 'w' key to see the frames of
-your application, and look for long-running frames getting in the way of smoothness.</p>
-
-<p class="note">
-  <strong>Note:</strong> Hit the '?' key, or the button in the top right for help navigating the
-  trace.
-</p>
-
-<img src="{@docRoot}images/systrace/frame-unselected.png" alt="Zoomed in view of a frame" id="figure2" />
-<p class="img-caption">
-  <strong>Figure 2.</strong> Systrace display after zooming in on a long-running frame.
-</p>
-
-<p>Clicking on one such frame highlights it, focusing only on the work done by the system for that
-frame. On devices running Android 5.0 (API level 21) or higher, this work is split between the UI
-Thread and RenderThread. On prior versions, all work in creating a frame is done on the UI
-Thread.</p>
-
-<p>Click on individual components of the frame to see how long they took to run. Some events, such
-as <em>performTraversals</em>, describe what the system is doing in that method when you select
-it. Selecting a frame displays any alerts present in that frame.</p>
-
-<h3 id="alerts">Investigating Alerts</h3>
-
-<p>Systrace does automatic analysis of the events in the trace, and highlights many performance
-problems as alerts, suggesting what to do next.</p>
-
-<img src="{@docRoot}images/systrace/frame-selected.png" alt="Problematic frame selected" id="figure3" />
-<p class="img-caption">
-  <strong>Figure 3.</strong> Selecting the problematic frame, an alert is shown identifying a problem.
-</p>
-
-<p>After you select a slow frame such as the one shown in Figure 3, an alert may be displayed. In
-the case above, it calls out that the primary problem with the frame is too much work being done
-inside {@link android.widget.ListView} recycling and rebinding.  There are links to the relevant
-events in the trace, which can be followed to explain more about what the system is doing during
-this time.</p>
-
-<p>If you see too much work being done on the UI thread, as in this case with this
-{@link android.widget.ListView} work, you can
-use <a href="{@docRoot}tools/debugging/debugging-tracing.html">Traceview</a>, the app code profiling
-tool, to investigate exactly what is taking so much time.</p>
-
-<p>Note that you can also find about every alert in the trace by clicking the <em>Alerts</em> tab to
-the far right of the window. Doing so expands the Alerts panel, where you can see every alert that
-the tool discovered in your trace, along with an occurrence count.</p>
-
-<img src="{@docRoot}images/systrace/frame-selected-alert-tab.png" alt="Alert tab shown" id="figure4" />
-<p class="img-caption">
-  <strong>Figure 4.</strong> Clicking the Alert button to the right reveals the alert tab.
-</p>
-
-<p>The Alerts panel helps you see which problems occur in the trace, and how often they contribute
-to jank. Think of the alerts panel as a list of bugs to be fixed, often a tiny change or improvement
-in one area can eliminate an entire class of alerts from your application!</p>
-
-
-<h2 id="app-trace">Tracing Application Code</h2>
-
-<p>The tracing signals defined by the framework do not have visibility into everything your
-application is doing, so you may want to add your own. In Android 4.3 (API level 18) and higher, you
-can use the methods of the {@link android.os.Trace} class to add signals to your code. This
-technique can help you see what work your application's threads are doing at any given time. Tracing
-begin and end events do add overhead while a trace is being captured, a few microseconds each, but
-sprinkling in a few per frame, or per worker thread task can go a long way to adding context to a
-trace of your app.</p>
-
-<p>The following code example shows how to use the {@link android.os.Trace} class to track
-execution of an application method, including two nested code blocks within that method.</p>
-
-<pre>
-public void ProcessPeople() {
-    Trace.beginSection("ProcessPeople");
-    try {
-        Trace.beginSection("Processing Jane");
-        try {
-            // code for Jane task...
-        } finally {
-            Trace.endSection(); // ends "Processing Jane"
-        }
-
-        Trace.beginSection("Processing John");
-        try {
-            // code for John task...
-        } finally {
-            Trace.endSection(); // ends "Processing John"
-        }
-    } finally {
-        Trace.endSection(); // ends "ProcessPeople"
-    }
-}
-</pre>
-
-<!-- todo: move these two Notes to the android.os.Trace class -->
-<p class="note">
-  <strong>Note:</strong> When you nest trace calls within each other, the
-  {@link android.os.Trace#endSection} method ends the most recently called
-  {@link android.os.Trace#beginSection} method. This means that a trace started within another
-  trace cannot extend beyond the end of the enclosing trace, so make sure your beginning and
-  ending method calls are properly matched to measure your applications processing.
-</p>
-
-<p class="note">
-  <strong>Note:</strong> Traces must begin and end on the same thread. Do not call
-  {@link android.os.Trace#beginSection} on one thread of execution and then attempt to end the
-  trace with a call to {@link android.os.Trace#endSection} on another thread.
-</p>
-
-<p>When using application-level tracing with Systrace, you must specify the package name of your
-application in the user interface or specify the {@code -a} or {@code --app=} options on the
-command line. For more information, see the
-<a href="{@docRoot}tools/help/systrace.html">Systrace usage guide</a>.</p>
-
-<p>You should enable app level tracing when profiling your app, even if you have not added signals
-yourself. Library code can include very useful tracing signals when you enable application-level
-tracing. The {@link android.support.v7.widget.RecyclerView} class is a great example of this,
-providing information about several important stages of work it executes.</p>
-
diff --git a/docs/html/tools/device.jd b/docs/html/tools/device.jd
deleted file mode 100644
index 5d8d384..0000000
--- a/docs/html/tools/device.jd
+++ /dev/null
@@ -1,330 +0,0 @@
-page.title=Using Hardware Devices
-@jd:body
-
-<div id="qv-wrapper">
-<div id="qv">
-  <h2>In this document</h2>
-  <ol>
-    <li><a href="#device-developer-options">Enabling On-device Developer Options</a></li>
-    <li><a href="#setting-up">Setting up a Device for Development</a>
-      <ol>
-        <li><a href="#VendorIds">USB Vendor IDs</a></li>
-      </ol>
-    </li>
-  </ol>
-  <h2>See also</h2>
-  <ol>
-    <li><a href="{@docRoot}sdk/win-usb.html">Google USB Driver</a></li>
-    <li><a href="{@docRoot}tools/extras/oem-usb.html">OEM USB Drivers</a></li>
-  </ol>
-</div>
-</div>
-
-<p>When building a mobile application, it's important that you always test your application on a
-real device before releasing it to users. This page describes how to set up your development
-environment and Android-powered device for testing and debugging on the device.</p>
-
-<p>You can use any Android-powered device as an environment for running,
-debugging, and testing your applications. The tools included in the SDK make it easy to install and
-run your application on the device each time you compile. You can install your application on the
-device directly from Android Studio or from the command line with ADB. If
-you don't yet have a device, check with the service providers in your area to determine which
-Android-powered devices are available.</p>
-
-<p>If you want a SIM-unlocked phone, then you might consider a Nexus phone. To purchase a
-Nexus phone, visit the <a href="https://play.google.com/store/devices">Google Play</a> store.</p>
-
-<p class="note"><strong>Note:</strong> When developing on a device, keep in mind that you should
-still use the <a
-href="{@docRoot}tools/devices/emulator.html">Android emulator</a> to test your
-application
-on configurations that are not equivalent to those of your real device. Although the emulator
-does not allow you to test every device feature (such as the accelerometer), it does
-allow you to verify that your application functions properly on different versions of the Android
-platform, in different screen sizes and orientations, and more.</p>
-
-
-<h2 id="developer-device-options" style="margin-bottom: 0px;">Enabling On-device Developer Options</h2>
-
-<img src="/images/tools/dev-options-inmilk.png" alt="" style="float:right;margin-left:30px">
-
-<p>Android-powered devices have a host of developer options that you can
-access on the phone, which let you:</p>
-<ul>
-  <li>Enable debugging over USB.</li>
-  <li>Quickly capture bug reports onto the device.</li>
-  <li>Show CPU usage on screen.</li>
-  <li>Draw debugging information on screen such as layout bounds,
-    updates on GPU views and hardware layers, and other information.</li>
-  <li>Plus many more options to simulate app stresses or enable debugging options.</li>
-</ul>
-<p>To access these settings, open the <em>Developer options</em> in the
-system Settings. On Android 4.2 and higher, the Developer options screen is
-hidden by default. To make it visible, go to
-<b>Settings &gt; About phone</b> and tap <b>Build number</b> seven times. Return to the previous
-screen to find Developer options at the bottom.</p>
-
-
-
-
-<h2 id="setting-up">Setting up a Device for Development</h2>
-
-<p>With an Android-powered device, you can develop and debug your Android applications just as you
-would on the emulator. Before you can start, there are just a few things to do:</p>
-
-<ol>
-  <li>Verify that your application is "debuggable" in your manifest or <em>build.gradle</em> file.
-    <p>In the build file, make sure the <em>debuggable</em> property in the <em>debug</em> build
-    type is set to true. The build type property overrides the manifest setting. </p>
-<pre>
-android {
-    buildTypes {
-        debug {
-            debuggable true
-        }
-</pre>
-
-    <p>In the <code>AndroidManifest.xml</code> file, add <code>android:debuggable="true"</code> to
-the <code>&lt;application></code> element.</p>
-    <p class="note"><strong>Note:</strong> If you manually enable debugging in the manifest
- file, be sure to disable it in your release build (your published application
-should usually <em>not</em> be debuggable).</p></li>
-  <li>Enable <strong>USB debugging</strong> on your device.
-    <ul>
-      <li>On most devices running Android 3.2 or older, you can find the option under
-        <strong>Settings > Applications > Development</strong>.</li>
-      <li>On Android 4.0 and newer, it's in <strong>Settings > Developer options</strong>.
-        <p class="note"><strong>Note:</strong> On Android 4.2 and newer, <strong>Developer
-        options</strong> is hidden by default. To make it available, go
-        to <strong>Settings > About phone</strong> and tap <strong>Build number</strong>
-        seven times. Return to the previous screen to find <strong>Developer options</strong>.</p>
-      </li>
-    </ul>
-  </li>
-  <li>Set up your system to detect your device.
-    <ul>
-      <li>If you're developing on Windows, you need to install a USB driver for adb. For an
-installation guide and links to OEM drivers, see the <a href="{@docRoot}tools/extras/oem-usb.html">OEM USB
-Drivers</a> document.</li>
-      <li>If you're developing on Mac OS X, it just works. Skip this step.</li>
-      <li>If you're developing on Ubuntu Linux, you need to add a
-<code>udev</code> rules file that contains a USB configuration for each type of device
-you want to use for development. In the rules file, each device manufacturer
-is identified by a unique vendor ID, as specified by the
-<code>ATTR{idVendor}</code> property. For a list of vendor IDs, see  <a
-href="#VendorIds">USB Vendor IDs</a>, below. To set up device detection on
-Ubuntu Linux:
-
-        <ol type="a">
-          <li>Log in as root and create this file:
-            <code>/etc/udev/rules.d/51-android.rules</code></span>.
-            <p>Use this format to add each vendor to the file:<br/>
-              <code>SUBSYSTEM==&quot;usb&quot;, ATTR{idVendor}==&quot;0bb4&quot;, MODE=&quot;0666&quot;, GROUP=&quot;plugdev&quot;</code>
-              <br /><br />
-
-              In this example, the vendor ID is for HTC. The <code>MODE</code>
-assignment specifies read/write permissions, and <code>GROUP</code> defines
-which Unix group  owns the device node. </p>
-
-            <p class="note"><strong>Note:</strong> The rule syntax
-may vary slightly depending on your  environment. Consult the <code>udev</code>
-documentation for your system as needed. For an overview of rule syntax, see
-this guide to <a
-href="http://www.reactivated.net/writing_udev_rules.html">writing udev
-rules</a>.</p>
-          </li>
-          <li>Now execute:<br/>
-            <code>chmod a+r /etc/udev/rules.d/51-android.rules</code>
-          </li>
-        </ol>
-      </li>
-    </ul>
-  </li>
-</ol>
-
-
-<p class="note"><strong>Note:</strong> When you connect a device running Android 4.2.2 or higher
-to your computer, the system shows a dialog asking whether to accept an RSA key that allows
-debugging through this computer. This security mechanism protects user devices because it ensures
-that USB debugging and other adb commands cannot be executed unless you're able to unlock the
-device and acknowledge the dialog. This requires that you have adb version 1.0.31 (available with
-SDK Platform-tools r16.0.1 and higher) in order to debug on a device running Android 4.2.2 or
-higher.</p>
-
-
-<p>When plugged in over USB, you can verify that your device is connected by executing <code>adb
-devices</code> from your SDK {@code platform-tools/} directory. If connected,
-you'll see the device name listed as a "device."</p>
-
-<p>If using Android Studio, run or debug your application as usual. You will be
-presented with a <b>Device Chooser</b> dialog that lists the available
-emulator(s) and connected device(s). Select the device upon which you want to
-install and run the application.</p>
-
-<p>If using the <a href="{@docRoot}tools/help/adb.html">Android
-Debug Bridge</a> (adb), you can issue commands with the <code>-d</code> flag to
-target your connected device.</p>
-
-<h3 id="VendorIds">USB Vendor IDs</h3>
-
-<p>This table provides a reference to the vendor IDs needed in order to add USB
-device support on Linux. The USB Vendor ID is the value given to the
-<code>ATTR{idVendor}</code> property in the rules file, as described
-above.</p>
-
-<table>
-  <tr>
-    <th>Company</th><th>USB Vendor ID</th></tr>
-  <tr>
-    <td>Acer</td>
-    <td><code>0502</code></td>
-  </tr>
-  <tr>
-    <td>ASUS</td>
-    <td><code>0b05</code></td>
-  </tr>
-  <tr>
-    <td>Dell</td>
-    <td><code>413c</code></td>
-  </tr>
-  <tr>
-    <td>Foxconn</td>
-    <td><code>0489</code></td>
-  </tr>
-  <tr>
-    <td>Fujitsu</td>
-    <td><code>04c5</code></td>
-  </tr>
-  <tr>
-    <td>Fujitsu Toshiba</td>
-    <td><code>04c5</code></td>
-  </tr>
-  <tr>
-    <td>Garmin-Asus</td>
-    <td><code>091e</code></td>
-  </tr>
-  <tr>
-    <td>Google</td>
-    <td><code>18d1</code></td>
-  </tr>
-  <tr>
-    <td>Haier</td>
-    <td><code>201E</code></td>
-  </tr>
-  <tr>
-    <td>Hisense</td>
-    <td><code>109b</code></td>
-  </tr>
-  <tr>
-    <td>HTC</td>
-    <td><code>0bb4</code></td>
-  </tr>
-  <tr>
-    <td>Huawei</td>
-    <td><code>12d1</code></td>
-  </tr>
-  <tr>
-    <td>Intel</td>
-    <td><code>8087</code></td>
-  </tr>
-  <tr>
-    <td>K-Touch</td>
-    <td><code>24e3</code></td>
-  </tr>
-  <tr>
-    <td>KT Tech</td>
-    <td><code>2116</code></td>
-  </tr>
-  <tr>
-    <td>Kyocera</td>
-    <td><code>0482</code></td>
-  </tr>
-  <tr>
-    <td>Lenovo</td>
-    <td><code>17ef</code></td>
-  </tr>
-  <tr>
-    <td>LG</td>
-    <td><code>1004</code></td>
-  </tr>
-  <tr>
-    <td>Motorola</td>
-    <td><code>22b8</code></td>
-  </tr>
-  <tr>
-    <td>MTK</td>
-    <td><code>0e8d</code></td>
-  </tr>
-  <tr>
-    <td>NEC</td>
-    <td><code>0409</code></td>
-  </tr>
-  <tr>
-    <td>Nook</td>
-    <td><code>2080</code></td>
-  </tr>
-  <tr>
-    <td>Nvidia</td>
-    <td><code>0955</code></td>
-  </tr>
-  <tr>
-    <td>OTGV</td>
-    <td><code>2257</code></td>
-  </tr>
-  <tr>
-    <td>Pantech</td>
-    <td><code>10a9</code></td>
-  </tr>
-  <tr>
-    <td>Pegatron</td>
-    <td><code>1d4d</code></td>
-  </tr>
-  <tr>
-    <td>Philips</td>
-    <td><code>0471</code></td>
-  </tr>
-  <tr>
-    <td>PMC-Sierra</td>
-    <td><code>04da</code></td>
-  </tr>
-  <tr>
-    <td>Qualcomm</td>
-    <td><code>05c6</code></td>
-  </tr>
-  <tr>
-    <td>SK Telesys</td>
-    <td><code>1f53</code></td>
-  </tr>
-  <tr>
-    <td>Samsung</td>
-    <td><code>04e8</code></td>
-  </tr>
-  <tr>
-    <td>Sharp</td>
-    <td><code>04dd</code></td>
-  </tr>
-  <tr>
-    <td>Sony</td>
-    <td><code>054c</code></td>
-  </tr>
-  <tr>
-    <td>Sony Ericsson</td>
-    <td><code>0fce</code></td>
-  </tr>
-  <tr>
-    <td>Sony Mobile Communications</td>
-    <td><code>0fce</code></td>
-  </tr>
-  <tr>
-    <td>Teleepoch</td>
-    <td><code>2340</code></td>
-  </tr>
-  <tr>
-    <td>Toshiba</td>
-    <td><code>0930</code></td>
-  </tr>
-  <tr>
-    <td>ZTE</td>
-    <td><code>19d2</code></td>
-  </tr>
-</table>
diff --git a/docs/html/tools/devices/emulator.jd b/docs/html/tools/devices/emulator.jd
deleted file mode 100644
index 1e70562..0000000
--- a/docs/html/tools/devices/emulator.jd
+++ /dev/null
@@ -1,1573 +0,0 @@
-page.title=Using the Emulator
-@jd:body
-
-<div id="qv-wrapper">
-<div id="qv">
-
-  <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>
-    </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>
-  </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 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>
-
-<img src="{@docRoot}images/emulator@2x.png"
-srcset="{@docRoot}images/emulator.png 1x, {@docRoot}images/emulator@2x.png 2x" alt=""
-  width="367" height="330"/>
-
-<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
-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>
-
-<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>
-
-
-
-<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>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>
-
-<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>
-
-
-<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>
-
-<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>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
-<sdk>/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 <sdk>/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 />
-    <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>
-</ul>
-
-
-<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/devices/index.jd b/docs/html/tools/devices/index.jd
deleted file mode 100644
index 6263c8b..0000000
--- a/docs/html/tools/devices/index.jd
+++ /dev/null
@@ -1,78 +0,0 @@
-page.title=Managing Virtual Devices
-@jd:body
-
-
- <p>An Android Virtual Device (AVD) is an emulator configuration that lets you model an actual
-  device by defining hardware and software options to be emulated by the Android Emulator.</p>
-
-  <p>The easiest way to create an AVD is to use the graphical
-  <a href="{@docRoot}tools/devices/managing-avds.html">AVD Manager</a>, which you launch
-  from Android Studio by clicking <strong>Tools &gt; Android &gt; AVD Manager</strong>. You can
-  also start the AVD Manager from the command line by calling the <code>android</code> tool with
- the <code>avd</code> options, from the <strong>&lt;sdk>/tools/</strong> directory.</p>
-
-  <p>You can also create AVDs on the command line by passing the <code>android</code> tool options.
-  For more information on how to create AVDs in this manner, see
-  <a href="{@docRoot}tools/devices/managing-avds-cmdline.html">Managing Virtual Devices from the
-  Command Line</a>.</p>
-
-  <p>An AVD consists of:</p>
-
-  <ul>
-    <li>A hardware profile: Defines the hardware features of the virtual
-    device. For example, you can define whether the device has a camera, whether it uses a physical
-    QWERTY keyboard or a dialing pad, how much memory it has, and so on.</li>
-
-    <li>A mapping to a system image: You can define what version of the Android platform will run
-    on the virtual device. You can choose a version of the standard Android platform or the system
-    image packaged with an SDK add-on.</li>
-
-    <li>Other options: You can specify the emulator skin you want to use with the AVD, which lets
-    you control the screen dimensions, appearance, and so on. You can also specify the emulated SD
-    card to use with the AVD.</li>
-
-    <li>A dedicated storage area on your development machine: the device's user data (installed
-    applications, settings, and so on) and emulated SD card are stored in this area.</li>
-  </ul>
-
-  <p>You can create as many AVDs as you need, based on the types of device you want to model. 
-  To thoroughly test your application, you should create an AVD for each general device configuration
-  (for example, different screen sizes and platform versions) with which your application is compatible
-  and test your application on each one.</p>
-
-  <p>Keep these points in mind when you are selecting a system image target for your AVD:</p>
-
-  <ul>
-    <li>The API Level of the target is important, because your application will not be able to run
-    on a system image whose API Level is less than that required by your application, as specified
-    in the <a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html">
-    <code>minSdkVersion</code></a> attribute of the application's manifest file. For more
-    information about the relationship between system API Level and application
-    <code>minSdkVersion</code>, see <a href=
-    "{@docRoot}tools/publishing/versioning.html">Specifying Minimum System API Version</a>.</li>
-
-    <li>You should create at least one AVD that uses a target whose API Level is greater than that required
-    by your application, because it allows you to test the
-    forward-compatibility of your application. Forward-compatibility testing ensures that, when
-    users who have downloaded your application receive a system update, your application will
-    continue to function normally.</li>
-
-    <li>If your application declares a 
-    <a href="{@docRoot}guide/topics/manifest/uses-library-element.html"><code>uses-library</code></a>
-    element in its manifest file, the application can only run on a system image in which that external
-    library is present. If you want to run your application on an emulator, create an AVD that
-    includes the required library. Usually, you must create such an AVD using an Add-on component for the
-    AVD's platform (for example, the Google APIs Add-on contains the Google Maps library).</li>
-  </ul>
-
-  <p>To learn how to manage AVDs using a graphical tool, read <a href=
-  "{@docRoot}tools/devices/managing-avds.html">Managing AVDs with AVD Manager</a>. To
-  learn how to manage AVDs on the command line, read
-  <a href="{@docRoot}tools/devices/managing-avds-cmdline.html">Managing AVDs
-  from the Command Line</a>.</p>
-
-
-
-
-
-
diff --git a/docs/html/tools/devices/managing-avds-cmdline.jd b/docs/html/tools/devices/managing-avds-cmdline.jd
deleted file mode 100644
index c16b1f8..0000000
--- a/docs/html/tools/devices/managing-avds-cmdline.jd
+++ /dev/null
@@ -1,369 +0,0 @@
-page.title=Managing AVDs from the Command Line
-parent.title=Managing Virtual Devices
-parent.link=index.html
-@jd:body
-
-<div id="qv-wrapper">
-  <div id="qv">
-  <h2>In this document</h2>
-  <ol>
-    <li><a href="#listingtargets">Listing Targets</a></li>
-    <li><a href="#AVDCmdLine">Creating AVDs</a>
-      <ol>
-        <li><a href="#CustomDensity">Customize the device resolution or density</a></li>
-        <li><a href="#DefaultLocation">Default location of AVD files</a></li>
-        <li><a href="#hardwareopts">Setting hardware emulation options</a></li>
-      </ol>
-    </li>
-    <li><a href="#moving">Moving an AVD</a></li>
-    <li><a href="#updating">Updating an AVD</a></li>
-    <li><a href="#deleting">Deleting an AVD</a></li>
-  </ol>
-  <h2>See also</h2>
-  <ol>
-    <li><a href="{@docRoot}tools/building/building-cmdline.html">Building and Running
-from the Command Line</a></li>
-    <li><a href="{@docRoot}tools/devices/emulator.html">Using the Android
-Emulator</a></li>
-  </ol>
-  </div>
-</div>
-
-
-<p>The <code>android</code> tool lets you manage AVDs on the command line. For a complete reference 
-of the command line options that you can use, see the reference for the 
-<a href="{@docRoot}tools/help/android.html"><code>android</code></a> tool.</p>
-
-
-
-<h2 id="listingtargets">Listing Targets</h2>
-
-<p>To generate a list of system image targets, use this command: </p>
-
-<pre>android list targets</pre>
-
-<p>The <code>android</code> tool scans the <code>&lt;sdk&gt;/platforms/</code> and
-<code>&lt;sdk&gt;/add-ons/</code> directories looking for valid system images and
-then generates the list of targets. Here's an example of the command output:
-</p>
-
-<pre>Available Android targets:
-id: 1 or "android-3"
-     Name: Android 1.5
-     Type: Platform
-     API level: 3
-     Revision: 4
-     Skins: QVGA-L, HVGA-L, HVGA (default), HVGA-P, QVGA-P
-id: 2 or "android-4"
-     Name: Android 1.6
-     Type: Platform
-     API level: 4
-     Revision: 3
-     Skins: QVGA, HVGA (default), WVGA800, WVGA854
-id: 3 or "android-7"
-     Name: Android 2.1-update1
-     Type: Platform
-     API level: 7
-     Revision: 2
-     Skins: QVGA, WQVGA400, HVGA (default), WVGA854, WQVGA432, WVGA800
-id: 4 or "android-8"
-     Name: Android 2.2
-     Type: Platform
-     API level: 8
-     Revision: 2
-     Skins: WQVGA400, QVGA, WVGA854, HVGA (default), WVGA800, WQVGA432
-id: 5 or "android-9"
-     Name: Android 2.3
-     Type: Platform
-     API level: 9
-     Revision: 1
-     Skins: HVGA (default), WVGA800, WQVGA432, QVGA, WVGA854, WQVGA400
-</pre>
-
-
-
-<h2 id="AVDCmdLine">Creating AVDs</h2>
-
-<p>In addition to creating AVDs with the
-<a href="{@docRoot}tools/help/avd-manager.html">AVD Manager user interface</a>,
-you can also create them by passing in command line arguments to the <code>android</code> tool.
-</p>
-
-<p>Open a terminal window and change to
-the <code>&lt;sdk&gt;/tools/</code> directory, if needed.</p>
-
-<p>To create each AVD, you issue the command <code>android create avd</code>,
-with options that specify a name for the new AVD and the system image you want
-to run on the emulator when the AVD is invoked. You can specify other options on
-the command line also, such as the emulated SD card size, the emulator skin, or a custom
-location for the user data files.</p> 
-
-<p>Here's the command-line usage for creating an AVD: </p>
-
-<pre>android create avd -n &lt;name&gt; -t &lt;targetID&gt; [-&lt;option&gt; &lt;value&gt;] ... </pre>
-
-<p>You can use any name you want for the AVD, but since you are likely to be
-creating multiple AVDs, you should choose a name that lets you recognize the
-general characteristics offered by the AVD. The target ID is an integer assigned by the
-<code>android</code> tool. The target ID is not derived from the system image name, 
-version, or API Level, or other attribute, so you need to run the <code>android list targets</code>
-command to list the target ID of each system image. You should do this <em>before</em> you run
-the <code>android create avd</code> command. See the <a
-href="{@docRoot}tools/help/android.html">android</a>
-tool documentation for more information on the command line options.</p>
-
-
-<p>When you've selected the target you want to use and made a note of its ID,
-use the <code>android create avd</code> command to create the AVD, supplying the
-target ID as the <code>-t</code> argument. Here's an example that creates an
-AVD with name "my_android1.5" and target ID "2" (the standard Android 1.5 
-system image in the list above): </p>
-
-<pre>android create avd -n my_android1.5 -t 2</pre>
-
-<p>If the target you selected was a standard Android system image ("Type:
-platform"), the <code>android</code> tool next asks you whether you want to
-create a custom hardware profile. </p>
-<pre>Android 1.5 is a basic Android platform.
-Do you wish to create a custom hardware profile [no]</pre>
-
-<p>If you want to set custom hardware emulation options for the AVD, enter
-"yes" and set values as needed. If you want to use the default hardware
-emulation options for the AVD, just press the return key (the default is "no").
-The <code>android</code> tool creates the AVD with name and system image mapping you
-requested, with the options you specified. For more information, see <a href="#hardwareopts">
-Setting Hardware Emulation Options</a>.
-
-<p class="note"><strong>Note:</strong> If you are creating an AVD whose target is an SDK add-on, the
-<code>android</code> tool does not allow you to set hardware emulation options.
-It assumes that the provider of the add-on has set emulation options
-appropriately for the device that the add-on is modeling, and so prevents you
-from resetting the options. </p>
-
-
-<h3 id="CustomDensity">Customize the device resolution or density</h3>
-
-<p>When testing your application, we recommend that you test your application in several different
-AVDs, using different screen configurations (different combinations of size and density). In
-addition, you should set up the AVDs to run at a physical size that closely matches an actual
-device.</p>
-
-<p>To set up your AVDs for a specific resolution or density, follow these steps:</p>
-
-<ol>
-  <li>Use the <code>create avd</code> command to create a new AVD, specifying
-the <code>--skin</code> option with a value that references either a default
-skin name (such as "WVGA800") or a custom skin resolution (such as 240x432).
-Here's an example:
-     <pre>android create avd -n &lt;name&gt; -t &lt;targetID&gt; --skin WVGA800</pre>
-  </li>
-  <li>To specify a custom density for the skin, answer "yes" when asked whether
-you want to create a custom hardware profile for the new AVD.</li>
-  <li>Continue through the various profile settings until the tool asks you to
-specify "Abstracted LCD density" (<em>hw.lcd.density</em>). Enter an appropriate
-value, such as "120" for a low-density screen, "160" for a medium density screen,
-or "240" for a high-density screen.</li>
-  <li>Set any other hardware options and complete the AVD creation.</li>
-</ol>
-
-<p>In the example above (WVGA medium density), the new AVD will emulate a 5.8"
-WVGA screen.</p>
-
-<p>As an alternative to adjusting the emulator skin configuration, you can use
-the emulator skin's default density and add the <code>-dpi-device</code> option
-to the <a href="{@docRoot}tools/help/emulator.html">emulator</a> command line when
-starting the AVD. For example:</p>
-
-<pre>emulator -avd WVGA800 -scale 96dpi -dpi-device 160</pre>
-
-
-
-<h3 id="DefaultLocation">Default location of AVD files</h3>
-
-<p>When you create an AVD, the <code>android</code> tool creates a dedicated directory for it
-on your development computer. The directory contains the AVD configuration file,
-the user data image and SD card image (if available), and any other files
-associated with the device. Note that the directory does not contain a system
-image &mdash; instead, the AVD configuration file contains a mapping to the
-system image, which it loads when the AVD is launched. </p>
-
-<p>The <code>android</code> tool also creates an <code>&lt;AVD_name&gt;.ini</code> file for the AVD at the
-root of the <code>.android/avd/</code> directory on your computer. The file specifies the
-location of the AVD directory and always remains at the root the .android 
-directory.</p>
-
-<p>By default, the <code>android</code> tool creates the AVD directory inside
-<code>~/.android/avd/</code> (on Linux/Mac), <code>C:\Documents and
-Settings\&lt;user&gt;\.android\</code> on Windows XP, and 
-<code>C:\Users\&lt;user&gt;\.android\</code> on Windows 7 and Vista. 
-If you want to use a custom location for the AVD directory, you 
-can do so by using the <code>-p &lt;path&gt;</code> option when 
-you create the AVD: </p>
-
-<pre>android create avd -n my_android1.5 -t 2 -p path/to/my/avd</pre>
-
-<p>If the .android directory is hosted on a network drive, we recommend using
-the <code>-p</code> option to place the AVD directory in another location. 
-The  AVD's .ini file remains in the .android directory on the network
-drive, regardless of the location of the AVD directory. 
-
-
-<h3 id="hardwareopts">Setting hardware emulation options</h3>
-
-<p>When you are creating a new AVD that uses a standard Android system image ("Type:
-platform"), the <code>android</code> tool lets you set hardware emulation
-options for virtual device. The table below lists the options available and the
-default values, as well as the names of properties that store the emulated
-hardware options in the AVD's configuration file (the config.ini file in the
-AVD's local directory). </p>
-
-<p class="table-caption"><strong>Table 1.</strong> Available hardware profile options for AVDs and
-the default values </p>
-
-<table>
-<tr>
-<th>Characteristic</th>
-<th>Description</th>
-<th>Property</th>
-</tr>
-
-<tr>
-<td>Device ram size</td>
-<td>The amount of physical RAM on the device, in megabytes. Default value is "96".
-<td>hw.ramSize</td>
-</tr>
-
-<tr>
-<td>Touch-screen support</td>
-<td>Whether there is a touch screen or not on the device. Default value is "yes".</td>
-<td>hw.touchScreen
-
-<tr>
-<td>Trackball support </td>
-<td>Whether there is a trackball on the device. Default value is "yes".</td>
-<td>hw.trackBall</td>
-</tr>
-
-<tr>
-<td>Keyboard support</td>
-<td>Whether the device has a QWERTY keyboard. Default value is "yes".</td>
-<td>hw.keyboard</td>
-</tr>
-
-<tr>
-<td>DPad support</td>
-<td>Whether the device has DPad keys. Default value is "yes".</td>
-<td>hw.dPad</td>
-</tr>
-
-<tr>
-<td>GSM modem support</td>
-<td>Whether there is a GSM modem in the device. Default value is "yes".</td>
-<td>hw.gsmModem</td>
-</tr>
-
-<tr>
-<td>Camera support</td>
-<td>Whether the device has a camera. Default value is "no".</td>
-<td>hw.camera</td>
-</tr>
-
-<tr>
-<td>Maximum horizontal camera pixels</td>
-<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>
-
-<tr>
-<td>Trackball support</td>
-<td>Whether there is a trackball present.</td>
-<td>hw.trackBall </td>
-</tr>
-</table>
-
-
-<h2 id="moving">Moving an AVD</h2>
-
-<p>If you want to move or rename an AVD, you can do so using this command:</p>
-
-<pre>android move avd -n &lt;name&gt; [-&lt;option&gt; &lt;value&gt;] ...</pre>
-
-<h2 id="updating">Updating an AVD</h2>
-
-<p>If, for any reason, the platform/add-on root folder has its name changed (maybe because the user has installed an update of the platform/add-on) then the AVD will not be able to load the system image that it is mapped to. In this case, the <code>android list targets</code> command will produce this output: 
-
-<pre>The following Android Virtual Devices could not be loaded: 
-Name: foo 
-Path: &lt;path&gt;/.android/avd/foo.avd 
-Error: Invalid value in image.sysdir. Run 'android update avd -n foo' </pre>
-
-<p>To fix this error, use the <code>android update avd</code> command to recompute the path to the system images.</p>
-
-<h2 id="deleting">Deleting an AVD</h2>
-
-<p>You can use the <code>android</code> tool to delete an AVD. Here is the command usage:</p>
-
-<pre>android delete avd -n &lt;name&gt; </pre>
-
-<p>When you issue the command, the <code>android</code> tool looks for an AVD matching the 
-specified name deletes the AVD's directory and files. </p>
diff --git a/docs/html/tools/devices/managing-avds.jd b/docs/html/tools/devices/managing-avds.jd
deleted file mode 100644
index fb680aa..0000000
--- a/docs/html/tools/devices/managing-avds.jd
+++ /dev/null
@@ -1,336 +0,0 @@
-page.title=Managing AVDs with AVD Manager
-parent.title=Managing Virtual Devices
-parent.link=index.html
-@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>
-        <li><a href="#skins">Creating Emulator Skins</a></li>
-      </ol>
-    </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>To launch 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>
-</ul>
-
-  <p>The AVD Manager main screen shows your current virtual devices, as shown in figure 1.</p>
-
-
-   <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 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>
-
-
-  <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 <uses-sdk>}</a> tag.</p>
-
-  <p>To create an AVD based on an existing device definition:</p>
-
-  <ol>
-    <li>From the main screen (figure 1), 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>
-
-      <img src="{@docRoot}images/studio-avdmgr-selecthdwr.png" alt="">
-      <p class="img-caption"><strong>Figure 2.</strong> The Select Hardware window.</p>
-    </li>
-    <li>Select the desired system version for the AVD and 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>
-    </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>
-
-
-<h3 id="CreateDefinition">Creating a device definition</h3>
-
-<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 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>
-
-    <p>When you're done configuring the device, click <strong>Finish</strong>.</p>
-
-      <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>
-
-  </ol>
-
-
-
-<h3 id="hardwareopts">Hardware options</h3>
-
-<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>
-
-      <th>Description</th>
-
-      <th>Property</th>
-    </tr>
-
-    <tr>
-      <td>Device ram size</td>
-
-      <td>The amount of physical RAM on the device, in megabytes. Default value is "96".</td>
-
-      <td>hw.ramSize</td>
-    </tr>
-
-    <tr>
-      <td>Touch-screen support</td>
-
-      <td>Whether there is a touch screen or not on the device. Default value is "yes".</td>
-
-      <td>hw.touchScreen</td>
-    </tr>
-
-    <tr>
-      <td>Trackball support</td>
-
-      <td>Whether there is a trackball on the device. Default value is "yes".</td>
-
-      <td>hw.trackBall</td>
-    </tr>
-
-    <tr>
-      <td>Keyboard support</td>
-
-      <td>Whether the device has a QWERTY keyboard. Default value is "yes".</td>
-
-      <td>hw.keyboard</td>
-    </tr>
-
-    <tr>
-      <td>DPad support</td>
-
-      <td>Whether the device has DPad keys. Default value is "yes".</td>
-
-      <td>hw.dPad</td>
-    </tr>
-
-    <tr>
-      <td>GSM modem support</td>
-
-      <td>Whether there is a GSM modem in the device. Default value is "yes".</td>
-
-      <td>hw.gsmModem</td>
-    </tr>
-
-    <tr>
-      <td>Camera support</td>
-
-      <td>Whether the device has a camera. Default value is "no".</td>
-
-      <td>hw.camera</td>
-    </tr>
-
-    <tr>
-      <td>Maximum horizontal camera pixels</td>
-
-      <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>
-
-
-<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>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>
-    </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>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
-    size and image assets for specific buttons. For example:
-<pre class="no-prettyprint">
-parts {
-    device {
-        display {
-            width   320
-            height  480
-            x       0
-            y       0
-        }
-    }
-
-    portrait {
-        background {
-            image background_port.png
-        }
-
-        buttons {
-            power {
-                image  button_vertical.png
-                x 1229
-                y 616
-            }
-        }
-    }
-    ...
-}
-</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>
-  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>
-</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"
->Android Emulator Skin File Specification</a> in the tools source code.</p>
-
-
-
diff --git a/docs/html/tools/extras/index.jd b/docs/html/tools/extras/index.jd
deleted file mode 100644
index 8da26dc..0000000
--- a/docs/html/tools/extras/index.jd
+++ /dev/null
@@ -1,5 +0,0 @@
-page.title=Extras
-page.noplus=1
-@jd:body
-
-<p>SDK extras add functionality to your development environment. You can download all of the SDK extras into your development environment using the SDK Manager. </p>
diff --git a/docs/html/tools/extras/oem-usb.jd b/docs/html/tools/extras/oem-usb.jd
deleted file mode 100644
index cf15048..0000000
--- a/docs/html/tools/extras/oem-usb.jd
+++ /dev/null
@@ -1,405 +0,0 @@
-page.title=OEM USB Drivers
-@jd:body
-
-<div id="qv-wrapper">
-<div id="qv">
-  <h2>In this document</h2>
-  <ol>
-    <li><a href="#InstallingDriver">Installing a USB Driver</a>
-      <ol>
-        <li><a href="#Win7">Windows 7</a></li>
-        <li><a href="#WinVista">Windows Vista</a></li>
-      </ol>
-    </li>
-    <li><a href="#Drivers">OEM Drivers</a></li>
-  </ol>
-
-  <h2>See also</h2>
-  <ol>
-    <li><a href="{@docRoot}tools/device.html">Using Hardware Devices</a></li>
-    <li><a href="{@docRoot}sdk/win-usb.html">Google USB Driver</a></li>
-  </ol>
-</div>
-</div>
-
-<p>If you are developing on Windows and would like to connect an Android-powered device
-to test your applications, then you need to install the appropriate USB driver. This document
-provides links to the web sites for several original equipment manufacturers (OEMs),
-where you can download the appropriate USB driver for your device. However, this list is
-not exhaustive for all available Android-powered devices.</p>
-
-<p>If you're developing on Mac OS X or Linux, then you probably don't need to install a USB driver.
-To start developing with your device, read <a
-href="{@docRoot}tools/device.html">Using Hardware Devices</a>.</p>
-
-<p>The Google USB Driver is <strong>required for Windows only</strong> in order to perform
-<a href="{@docRoot}tools/help/adb.html">adb</a> debugging with any of
-the <strong>Google Nexus devices</strong>. The one exception is the
-Galaxy Nexus: the driver for Galaxy Nexus is distributed by <a
-href="http://www.samsung.com/us/support/owners/product/GT-I9250TSGGEN">Samsung</a>
-(listed as model GT-I9250TSGGEN).</p>
-
-
-
-<h2 id="InstallingDriver">Installing a USB Driver</h2>
-
-<p>First, find the appropriate driver for your device from the <a href="#Drivers">OEM drivers</a>
-table below.</p>
-
-<p>Once you've downloaded your USB driver, follow the instructions below to install or upgrade the
-driver, based on your version of Windows and whether you're installing for the first time
-or upgrading an existing driver.</p>
-
-<p class="note"><strong>Tip:</strong> When you finish the USB driver installation,
-see <a
-href="{@docRoot}tools/device.html">Using Hardware Devices</a> for
-other important information about using an Android-powered device for
-development.</p>
-
-<ol class="nolist">
-  <li><a href="#Win7">Windows 7</a></li>
-  <li><a href="#WinVista">Windows Vista</a></li>
-</ol>
-
-
-<p class="caution"><strong>Caution:</strong>
-You may make changes to <code>android_winusb.inf</code> file found inside
-<code>usb_driver\</code> (for example, to add support for other devices),
-however, this will lead to security warnings when you install or upgrade the
-driver. Making any other changes to the driver files may break the installation
-process.</p>
-
-
-<h3 id="Win7">Windows 7</h3>
-
-
-<p>To install the Android USB driver on Windows 7 for the first time:</p>
-<ol>
-  <li>Connect your Android-powered device to your computer's USB port.</li>
-  <li>Right-click on <em>Computer</em> from your desktop or Windows Explorer,
-    and select <strong>Manage</strong>.</li>
-  <li>Select <strong>Devices</strong> in the left pane.</li>
-  <li>Locate and expand <em>Other device</em> in the right pane.</li>
-  <li>Right-click the device name (such as <em>Nexus S</em>) and select <strong>Update
-  Driver Software</strong>.
-    This will launch the Hardware Update Wizard.</li>
-  <li>Select <strong>Browse my computer for driver software</strong> and click
-    <strong>Next</strong>.</li>
-  <li>Click <strong>Browse</strong> and locate the USB driver folder. (The Google USB
-Driver is located in {@code &lt;sdk&gt;\extras\google\usb_driver\}.)</li>
-  <li>Click <strong>Next</strong> to install the driver.</li>
-</ol>
-
-<p>Or, to <em>upgrade</em> an existing Android USB driver on Windows 7 with the new
-driver:</p>
-
-<ol>
-  <li>Connect your Android-powered device to your computer's USB port.</li>
-  <li>Right-click on <em>Computer</em> from your desktop or Windows Explorer,
-    and select <strong>Manage</strong>.</li>
-  <li>Select <strong>Device Manager</strong> in the left pane of the Computer Management
-  window.</li>
-  <li>Locate and expand <em>Android Phone</em> in the right pane.</li>
-  <li>Right-click on <em>Android Composite ADB Interface</em> and select <strong>Update
-  Driver</strong>.
-    This will launch the Hardware Update Wizard.</li>
-  <li>Select <strong>Install from a list or specific location</strong> and click
-    <strong>Next</strong>.</li>
-  <li>Select <strong>Search for the best driver in these locations</strong>; un-check
-<strong>Search removable media</strong>; and check <strong>Include this location in the
-search</strong>.</li>
-  <li>Click <strong>Browse</strong> and locate the USB driver folder. (The Google USB
-Driver is located in {@code &lt;sdk&gt;\extras\google\usb_driver\}.)</li>
-  <li>Click <strong>Next</strong> to upgrade the driver.</li>
-</ol>
-
-
-
-<h3 id="WinVista">Windows Vista</h3>
-
-<p>To install the Android USB driver on Windows Vista for the first time:</p>
-
-<ol>
-  <li>Connect your Android-powered device to your computer's USB port. Windows
-  will detect the device and launch the Found New Hardware wizard.</li>
-  <li>Select <strong>Locate and install driver software</strong>.</li>
-  <li>Select <strong>Don't search online</strong>.</li>
-  <li>Select <strong>I don't have the disk. Show me other options</strong>.</li>
-  <li>Select <strong>Browse my computer for driver software</strong>.</li>
-  <li>Click <strong>Browse</strong> and locate the USB driver folder. (The Google USB
-Driver is located in {@code &lt;sdk&gt;\extras\google\usb_driver\}.) As long as you specified the
-exact location of the
-    installation package, you may leave <strong>Include subfolders</strong> checked or
-  unchecked&mdash;it doesn't matter.</li>
-  <li>Click <strong>Next</strong>. Vista may prompt you to confirm the privilege elevation
-  required for driver installation. Confirm it.</li>
-  <li>When Vista asks if you'd like to install the Google ADB Interface device,
-  click <strong>Install</strong> to install the driver.</li>
-</ol>
-
-<p>Or, to <em>upgrade</em> an existing Android USB driver on Windows Vista with the new
-driver:</p>
-
-<ol>
-  <li>Connect your Android-powered device to your computer's USB port.</li>
-  <li>Right-click on <em>Computer</em> from your desktop or Windows Explorer,
-    and select <strong>Manage</strong>.</li>
-  <li>Select <strong>Device Manager</strong> in the left pane.</li>
-  <li>Locate and expand <em>ADB Interface</em> in the right pane.</li>
-  <li>Right-click on <em>Android Composite ADB Interface</em>, and select <strong>Update
-  Driver Software</strong>.</li>
-  <li>When Vista starts updating the driver, a prompt will ask how you want to
-  search for the driver
-    software. Select <strong>Browse my computer for driver software</strong>.</li>
-  <li>Click <strong>Browse</strong> and locate the USB driver folder. (The Google USB
-Driver is located in {@code &lt;sdk&gt;\extras\google\usb_driver\}.) As long as you specified the
-exact location of the
-    installation package, you may leave <strong>Include subfolders</strong> checked or
-    unchecked&mdash;it doesn't matter.</li>
-  <li>Click <strong>Next</strong>. Vista might prompt you to confirm the privilege elevation
-  required for driver installation. Confirm it.</li>
-  <li>When Vista asks if you'd like to install the Google ADB Interface device,
-  click <strong>Install</strong> to upgrade the driver.</li>
-</ol>
-
-
-<h2 id="Drivers">OEM Drivers</h2>
-
-
-<table>
-<tr>
-    <th>OEM</th>
-    <th>Driver URL</th></tr>
-      <tr>
-        <td>
-          Acer
-        </td>
-        <td>
-          <a href=
-          "http://www.acer.com/worldwide/support/mobile.html">http://www.acer.com/worldwide/support/mobile.html</a>
-        </td>
-      </tr>
-
-      <tr>
-        <td style="font-variant:small-caps">
-          alcatel one touch
-        </td>
-        <td>
-          <a href=
-          "http://www.alcatelonetouch.com/global-en/support/">http://www.alcatelonetouch.com/global-en/support/</a>
-        </td>
-      </tr>
-
-      <tr>
-        <td>
-          Asus
-        </td>
-        <td>
-          <a href="http://support.asus.com/download/">http://support.asus.com/download/</a>
-        </td>
-      </tr>
-
-      <tr>
-        <td>
-          Blackberry
-        </td>
-        <td>
-          <a href=
-          "https://swdownloads.blackberry.com/Downloads/entry.do?code=4EE0932F46276313B51570F46266A608">
-          https://swdownloads.blackberry.com/Downloads/entry.do?code=4EE0932F46276313B51570F46266A608</a>
-        </td>
-      </tr>
-
-      <tr>
-        <td>
-          Dell
-        </td>
-        <td>
-          <a href=
-          "http://support.dell.com/support/downloads/index.aspx?c=us&amp;cs=19&amp;l=en&amp;s=dhs&amp;~ck=anavml">
-          http://support.dell.com/support/downloads/index.aspx?c=us&amp;cs=19&amp;l=en&amp;s=dhs&amp;~ck=anavml</a>
-        </td>
-      </tr>
-
-      <tr>
-        <td>
-          Fujitsu
-        </td>
-        <td>
-          <a href=
-          "http://www.fmworld.net/product/phone/sp/android/develop/">http://www.fmworld.net/product/phone/sp/android/develop/</a>
-        </td>
-      </tr>
-
-      <tr>
-        <td>
-          Hisense
-        </td>
-        <td>
-          <a href=
-          "http://app.hismarttv.com/dss/resourcecontent.do?method=viewResourceDetail&amp;resourceId=16&amp;type=5">
-          http://app.hismarttv.com/dss/resourcecontent.do?method=viewResourceDetail&amp;resourceId=16&amp;type=5</a>
-        </td>
-      </tr>
-
-      <tr>
-        <td>
-          HTC
-        </td>
-        <td>
-          <a href="http://www.htc.com">http://www.htc.com</a><br>
-          Click on the support tab to select your products/device. Different regions will have
-          different links.
-        </td>
-      </tr>
-
-      <tr>
-        <td>
-          Huawei
-        </td>
-        <td>
-          <a href=
-          "http://consumer.huawei.com/en/support/index.htm">http://consumer.huawei.com/en/support/index.htm</a>
-        </td>
-      </tr>
-
-      <tr>
-        <td>
-          Intel
-        </td>
-        <td>
-          <a href="http://www.intel.com/software/android">http://www.intel.com/software/android</a>
-        </td>
-      </tr>
-
-      <tr>
-        <td>
-          Kyocera
-        </td>
-        <td>
-          <a href=
-          "http://www.kyocera-wireless.com/support/phone_drivers.htm">http://www.kyocera-wireless.com/support/phone_drivers.htm</a>
-        </td>
-      </tr>
-
-      <tr>
-        <td>
-          Lenovo
-        </td>
-        <td>
-          <a href=
-          "http://support.lenovo.com/us/en/GlobalProductSelector">http://support.lenovo.com/us/en/GlobalProductSelector</a>
-        </td>
-      </tr>
-
-      <tr>
-        <td>
-          LGE
-        </td>
-        <td>
-          <a href=
-          "http://www.lg.com/us/support/software-firmware">http://www.lg.com/us/support/software-firmware</a>
-        </td>
-      </tr>
-
-      <tr>
-        <td>
-          Motorola
-        </td>
-        <td>
-          <a href=
-          "https://motorola-global-portal.custhelp.com/app/answers/detail/a_id/88481">https://motorola-global-portal.custhelp.com/app/answers/detail/a_id/88481/</a>
-        </td>
-      </tr>
-
-      <tr>
-        <td>
-          MTK
-        </td>
-        <td>
-          <a href=
-          "http://online.mediatek.com/Public%20Documents/MTK_Android_USB_Driver.zip">http://online.mediatek.com/Public%20Documents/MTK_Android_USB_Driver.zip</a>
-          (ZIP download)
-        </td>
-      </tr>
-
-      <tr>
-        <td>
-          Oppo
-        </td>
-        <td>
-          <a href=
-          "http://www.oppo.com/index.php?q=software/view&amp;sw_id=631">http://www.oppo.com/index.php?q=software/view&amp;sw_id=631</a>
-        </td>
-      </tr>
-
-      <tr>
-        <td>
-          Pegatron
-        </td>
-        <td>
-          <a href=
-          "http://www.pegatroncorp.com/download/New_Duke_PC_Driver_0705.zip">http://www.pegatroncorp.com/download/New_Duke_PC_Driver_0705.zip</a>
-          (ZIP download)
-        </td>
-      </tr>
-
-      <tr>
-        <td>
-          Samsung
-        </td>
-        <td>
-          <a href=
-          "http://www.samsung.com/us/support/downloads">http://www.samsung.com/us/support/downloads</a>
-        </td>
-      </tr>
-
-      <tr>
-        <td>
-          Sharp
-        </td>
-        <td>
-          <a href="http://k-tai.sharp.co.jp/support/">http://k-tai.sharp.co.jp/support/</a>
-        </td>
-      </tr>
-
-      <tr>
-        <td>
-          Sony Mobile Communications
-        </td>
-        <td>
-          <a href=
-          "http://developer.sonymobile.com/downloads/drivers/">http://developer.sonymobile.com/downloads/drivers/</a>
-        </td>
-      </tr>
-
-      <tr>
-        <td>
-          Toshiba
-        </td>
-        <td>
-          <a href=
-          "http://support.toshiba.com/sscontent?docId=4001814">http://support.toshiba.com/sscontent?docId=4001814</a>
-        </td>
-      </tr>
-
-      <tr>
-        <td>
-          Xiaomi
-        </td>
-        <td>
-          <a href=
-          "http://www.xiaomi.com/c/driver/index.html">http://www.xiaomi.com/c/driver/index.html</a>
-        </td>
-      </tr>
-
-      <tr>
-        <td>
-          ZTE
-        </td>
-        <td>
-          <a href=
-          "http://support.zte.com.cn/support/news/NewsDetail.aspx?newsId=1000442">http://support.zte.com.cn/support/news/NewsDetail.aspx?newsId=1000442</a>
-        </td>
-      </tr>
-</table>
\ No newline at end of file
diff --git a/docs/html/tools/help/MonkeyDevice.jd b/docs/html/tools/help/MonkeyDevice.jd
deleted file mode 100644
index e7612e6..0000000
--- a/docs/html/tools/help/MonkeyDevice.jd
+++ /dev/null
@@ -1,1355 +0,0 @@
-page.title=MonkeyDevice
-parent.title=monkeyrunner
-parent.link=index.html
-@jd:body
-<style>
-    h4.jd-details-title {background-color: #DEE8F1;}
-</style>
-<p>
-    A monkeyrunner class that represents a device or emulator accessible by the workstation running
-<code><a href="{@docRoot}tools/help/monkeyrunner_concepts.html">monkeyrunner</a></code>.
-</p>
-<p>
-    This class is used to control an Android device or emulator. The methods send UI events,
-    retrieve information, install and remove applications, and run applications.
-</p>
-<p>
-    You normally do not have to create an instance of <code>MonkeyDevice</code>. Instead, you
-    use
-<code><a href="{@docRoot}tools/help/MonkeyRunner.html#waitForConnection">
-MonkeyRunner.waitForConnection()</a></code> to create a new object from a connection to a device or
-emulator. For example, instead of
-using:</p>
-<pre>
-newdevice = MonkeyDevice()
-</pre>
-<p>
-    you would use:
-</p>
-<pre>
-newdevice = MonkeyRunner.waitForConnection()
-</pre>
-<h2>Summary</h2>
-    <table id="constants" class="jd-sumtable" style="background-color: white;">
-       <tr>
-            <th colspan="12" style="background-color: #E2E2E2">Constants</th>
-       </tr>
-        <tr class="api" style="background-color: white;">
-            <td class="jd-typecol"><em>string</em></td>
-            <td class="jd-linkcol"><a href="#ACTION_DOWN">DOWN</a></td>
-            <td class="jd-descrcol" width="100%">
-                Use this with the <code>type</code> argument of
-                <code><a href="#press">press()</a></code> or <code><a href="#touch">touch()</a>
-                </code>
-                to send a DOWN event.
-            </td>
-        </tr>
-        <tr class="api" style="background-color: white;">
-            <td class="jd-typecol"><em>string</em></td>
-            <td class="jd-linkcol"><a href="#ACTION_UP">UP</a></td>
-            <td class="jd-descrcol" width="100%">
-                Use this with the <code>type</code> argument of
-                <code><a href="#press">press()</a></code> or <code><a href="#touch">touch()</a>
-                </code>
-                to send an UP event.
-            </td>
-        </tr>
-        <tr class="api" style="background-color: white;">
-            <td class="jd-typecol"><em>string</em></td>
-            <td class="jd-linkcol"><a href="#ACTION_DOWN_AND_UP">DOWN_AND_UP</a></td>
-            <td class="jd-descrcol" width="100%">
-                Use this with the <code>type</code> argument of
-                <code><a href="#press">press()</a></code> or <code><a href="#touch">touch()</a>
-                </code>
-                to send a DOWN event immediately followed by an UP event.
-            </td>
-        </tr>
-    </table>
-<table id="pubmethods" class="jd-sumtable">
-    <tr>
-        <th colspan="12" style="background-color: #E2E2E2">Methods</th>
-    </tr>
-    <tr class="api" >
-        <td class="jd-typecol">
-            <nobr>
-                void
-            </nobr>
-        </td>
-        <td class="jd-linkcol" width="100%">
-            <nobr>
-                <span class="sympad">
-                    <a href="#broadcastIntent">broadcastIntent</a>
-                </span>
-                (<em>string</em> uri,
-                <em>string</em> action,
-                <em>string</em> data,
-                <em>string</em> mimetype,
-                <em>iterable</em> categories
-                <em>dictionary</em> extras,
-                <em>component</em> component,
-                <em>iterable</em> flags)
-            </nobr>
-            <div class="jd-descrdiv">
-                Broadcasts an Intent to this device, as if the Intent were coming from an
-                application.
-            </div>
-        </td>
-    </tr>
-    <tr class="api" >
-        <td class="jd-typecol">
-            <nobr>
-                void
-            </nobr>
-        </td>
-        <td class="jd-linkcol" width="100%">
-            <nobr>
-                <span class="sympad">
-                    <a href="#drag">drag</a>
-                </span>
-                (<em>tuple</em> start,
-                <em>tuple</em> end,
-                <em>float</em> duration,
-                <em>integer</em> steps)
-            </nobr>
-            <div class="jd-descrdiv">
-                Simulates a drag gesture (touch, hold, and move) on this device's screen.
-            </div>
-        </td>
-    </tr>
-    <tr class="api" >
-        <td class="jd-typecol">
-            <nobr>
-                <em>object</em>
-            </nobr>
-        </td>
-        <td class="jd-linkcol" width="100%">
-            <nobr>
-                <span class="sympad">
-                    <a href="#getProperty">getProperty</a>
-                </span>
-                (<em>string</em> key)
-            </nobr>
-            <div class="jd-descrdiv">
-                Given the name of a system environment variable, returns its value for this device.
-                The available variable names are listed in the <a href="#getProperty">
-                detailed description</a> of this method.
-            </div>
-        </td>
-    </tr>
-    <tr class="api" >
-        <td class="jd-typecol">
-            <nobr>
-                <em>object</em>
-            </nobr>
-        </td>
-        <td class="jd-linkcol" width="100%">
-            <nobr>
-                <span class="sympad">
-                    <a href="#getSystemProperty">getSystemProperty</a>
-                </span>
-                (<em>string</em> key)
-            </nobr>
-            <div class="jd-descrdiv">
-.               The API equivalent of <code>adb shell getprop &lt;key&gt;. This is provided for use
-                by platform developers.
-            </div>
-        </td>
-    </tr>
-    <tr class="api" >
-        <td class="jd-typecol">
-            <nobr>
-                void
-            </nobr>
-        </td>
-        <td class="jd-linkcol" width="100%">
-            <nobr>
-                <span class="sympad">
-                    <a href="#installPackage">installPackage</a>
-                </span>
-                (<em>string</em> path)
-            </nobr>
-            <div class="jd-descrdiv">
-                Installs the Android application or test package contained in packageFile onto this
-                device. If the application or test package is already installed, it is replaced.
-            </div>
-        </td>
-    </tr>
-    <tr class="api" >
-        <td class="jd-typecol">
-            <nobr>
-                <em>dictionary</em>
-            </nobr>
-        </td>
-        <td class="jd-linkcol" width="100%">
-            <nobr>
-                <span class="sympad">
-                    <a href="#instrument">instrument</a>
-                </span>
-                (<em>string</em> className,
-                <em>dictionary</em> args)
-            </nobr>
-            <div class="jd-descrdiv">
-                Runs the specified component under Android instrumentation, and returns the results
-                in a dictionary whose exact format is dictated by the component being run. The
-                component must already be present on this device.
-            </div>
-        </td>
-    </tr>
-    <tr class="api">
-        <td class="jd-typecol">
-            <nobr>
-                void
-            </nobr>
-        </td>
-        <td class="jd-linkcol" width="100%">
-            <nobr>
-                <span class="sympad">
-                    <a href="#press">press</a>
-                </span>
-                (<em>string</em> name,
-                <em>dictionary</em> type)
-            </nobr>
-            <div class="jd-descrdiv">
-                Sends the key event specified by type to the key specified by
-                keycode.
-            </div>
-        </td>
-    </tr>
-    <tr class="api" >
-        <td class="jd-typecol">
-            <nobr>
-                void
-            </nobr>
-        </td>
-        <td class="jd-linkcol" width="100%">
-            <nobr>
-                <span class="sympad">
-                    <a href="#reboot">reboot</a>
-                </span>
-                (<em>string</em> into)
-            </nobr>
-            <div class="jd-descrdiv">
-                Reboots this device into the bootloader specified by bootloadType.
-            </div>
-        </td>
-    </tr>
-    <tr class="api" >
-        <td class="jd-typecol">
-            <nobr>
-                void
-            </nobr>
-        </td>
-        <td class="jd-linkcol" width="100%">
-            <nobr>
-                <span class="sympad">
-                    <a href="#removePackage">removePackage</a>
-                </span>
-                (<em>string</em> package)
-            </nobr>
-            <div class="jd-descrdiv">
-                Deletes the specified package from this device, including its data and cache.
-            </div>
-        </td>
-    </tr>
-    <tr class="api" >
-        <td class="jd-typecol">
-            <nobr>
-                <em>object</em>
-            </nobr>
-        </td>
-        <td class="jd-linkcol" width="100%">
-            <nobr>
-                <span class="sympad">
-                    <a href="#shell">shell</a>
-                </span>
-                (<em>string</em> cmd)
-            </nobr>
-            <div class="jd-descrdiv">
-                Executes an <code>adb</code> shell command and returns the result, if any.
-            </div>
-        </td>
-    </tr>
-    <tr class="api" >
-        <td class="jd-typecol">
-            <nobr>
-                void
-            </nobr>
-        </td>
-        <td class="jd-linkcol" width="100%">
-            <nobr>
-                <span class="sympad">
-                    <a href="#startActivity">startActivity</a>
-                </span>
-                (<em>string</em> uri,
-                <em>string</em> action,
-                <em>string</em> data,
-                <em>string</em> mimetype,
-                <em>iterable</em> categories
-                <em>dictionary</em> extras,
-                <em>component</em> component,
-                <em>flags</em>)
-            </nobr>
-            <div class="jd-descrdiv">
-                Starts an Activity on this device by sending an Intent constructed from the
-                supplied arguments.
-            </div>
-        </td>
-    </tr>
-    <tr class="api" >
-        <td class="jd-typecol">
-            <nobr>
-                <code>
-                <a href="{@docRoot}tools/help/MonkeyImage.html">
-                        MonkeyImage
-                    </a>
-                </code>
-            </nobr>
-        </td>
-        <td class="jd-linkcol" width="100%">
-            <nobr>
-                <span class="sympad">
-                    <a href="#takeSnapshot">takeSnapshot</a>()
-                </span>
-            </nobr>
-            <div class="jd-descrdiv">
-                Captures the entire screen buffer of this device, yielding a
-                <code>
-                <a href="{@docRoot}tools/help/MonkeyImage.html">
-                        MonkeyImage
-                </a>
-                </code> object containing a screen capture of the current display.
-            </div>
-        </td>
-    </tr>
-    <tr class="api" >
-        <td class="jd-typecol">
-            <nobr>
-                void
-            </nobr>
-        </td>
-        <td class="jd-linkcol" width="100%">
-            <nobr>
-                <span class="sympad">
-                    <a href="#touch">touch</a>
-                </span>
-               (<em>integer</em> x,
-                 <em>integer</em> y,
-                 <em>integer</em> type)
-            </nobr>
-            <div class="jd-descrdiv">
-                Sends a touch event specified by type to the screen location specified
-                by x and y.
-            </div>
-        </td>
-    </tr>
-    <tr class="api" >
-        <td class="jd-typecol">
-            <nobr>
-                void
-            </nobr>
-        </td>
-        <td class="jd-linkcol" width="100%">
-            <nobr>
-                <span class="sympad">
-                    <a href="#touch">type</a>
-                </span>
-                   (<em>string</em> message)
-            </nobr>
-            <div class="jd-descrdiv">
-                Sends the characters contained in message to this device, as if they
-                had been typed on the device's keyboard. This is equivalent to calling
-                <code><a href="#press">press()</a></code> for each keycode in <code>message</code>
-                using the key event type <code><a href="#ACTION_DOWN_AND_UP"></a>DOWN_AND_UP</code>.
-            </div>
-        </td>
-    </tr>
-    <tr class="api" >
-        <td class="jd-typecol">
-            <nobr>
-                void
-            </nobr>
-        </td>
-        <td class="jd-linkcol" width="100%">
-            <nobr>
-                <span class="sympad">
-                    <a href="#touch">wake</a>
-                </span>
-                   ()
-            </nobr>
-            <div class="jd-descrdiv">
-                Wakes the screen of this device.
-            </div>
-        </td>
-    </tr>
-</table>
-<!-- ========= ENUM CONSTANTS DETAIL ======== -->
-<h2>Constants</h2>
-<A NAME="ACTION_DOWN"></a>
-<div class="jd-details api">
-    <h4 class="jd-details-title">
-        <span class="normal">
-            <em>string</em>
-        </span>
-            DOWN
-    </h4>
-    <div class="jd-details-descr">
-        <div class="jd-tagdata jd-tagdescr">
-            <p>
-                <code><a href="#press">press()</a></code> or
-                <code><a href="#press">touch()</a></code> value.
-                Specifies that a DOWN event type should be sent to the device, corresponding to
-                pressing down on a key or touching the screen.
-            </p>
-        </div>
-    </div>
-</div>
-<A NAME="ACTION_UP"></A>
-<div class="jd-details api">
-    <h4 class="jd-details-title">
-        <span class="normal">
-            <em>string</em>
-        </span>
-            UP
-    </h4>
-    <div class="jd-details-descr">
-        <div class="jd-tagdata jd-tagdescr">
-            <p>
-                <code><a href="#press">press()</a></code> or
-                <code><a href="#press">touch()</a></code> value.
-                Specifies that an UP event type should be sent to the device, corresponding to
-                releasing a key or lifting up from the screen.
-            </p>
-        </div>
-    </div>
-</div>
-<A NAME="ACTION_DOWN_AND_UP"></A>
-
-<div class="jd-details api">
-    <h4 class="jd-details-title">
-        <span class="normal">
-            <em>string</em>
-        </span>
-            DOWN_AND_UP
-    </h4>
-    <div class="jd-details-descr">
-        <div class="jd-tagdata jd-tagdescr">
-            <p>
-                <code><a href="#press">press()</a></code>,
-                <code><a href="#press">touch()</a></code> or
-                <code><a href="#type">type()</a></code> value.
-                Specifies that a DOWN event type followed by an UP event type should be sent to the
-                device, corresponding to typing a key or clicking the screen.
-            </p>
-        </div>
-    </div>
-</div>
-<!-- ========= METHOD DETAIL ======== -->
-<!-- Public methods -->
-<h2>Public Methods</h2>
-<A NAME="broadcastIntent"></A>
-<div class="jd-details api ">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        void
-      </span>
-      <span class="sympad">broadcastIntent</span>
-      <span class="normal">
-      (
-            <em>string</em> uri,
-            <em>string</em> action,
-            <em>string</em> data,
-            <em>string</em> mimetype,
-            <em>iterable</em> categories
-            <em>dictionary</em> extras,
-            <em>component</em> component,
-            <em>iterable</em> flags)
-      </span>
-    </h4>
-  <div class="jd-details-descr">
-
-    <div class="jd-tagdata jd-tagdescr">
-        <p>
-            Broadcasts an Intent to this device, as if the Intent were coming from an
-            application. See {@link android.content.Intent Intent} for more information about the
-            arguments.
-        </p>
-    </div>
-    <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Arguments</h5>
-      <table class="jd-tagtable">
-        <tr>
-          <th>uri</th>
-            <td>
-                The URI for the Intent.
-                (see {@link android.content.Intent#setData(android.net.Uri) Intent.setData()}).
-            </td>
-        </tr>
-        <tr>
-            <th>action</th>
-            <td>
-                The action for this Intent
-                (see {@link android.content.Intent#setAction(java.lang.String) Intent.setAction()}).
-            </td>
-        </tr>
-        <tr>
-            <th>data</th>
-            <td>
-                The data URI for this Intent
-                (see {@link android.content.Intent#setData(android.net.Uri) Intent.setData()}).
-            </td>
-        </tr>
-        <tr>
-            <th>mimetype</th>
-            <td>
-                The MIME type for the Intent
-                (see {@link android.content.Intent#setType(java.lang.String) Intent.setType()}).
-            </td>
-        </tr>
-        <tr>
-            <th>categories</th>
-            <td>
-                An iterable data structure containing strings that define categories for this
-                Intent
-                (see
-                {@link android.content.Intent#addCategory(java.lang.String) Intent.addCategory()}).
-            </td>
-        </tr>
-        <tr>
-            <th>extras</th>
-            <td>
-                A dictionary of extra data for this Intent
-                (see {@link android.content.Intent#putExtra(java.lang.String,java.lang.String)
-                Intent.putExtra()}
-                for an example).
-                <p>
-                    The key for each dictionary item should be a <em>string</em>. The item's value
-                    can be any simple or structured data type.
-                </p>
-            </td>
-        </tr>
-        <tr>
-            <th>component</th>
-            <td>
-                The component for this Intent (see {@link android.content.ComponentName}).
-                Using this argument will direct the Intent to a specific class within a specific
-                Android package.
-            </td>
-        </tr>
-        <tr>
-            <th>flags</th>
-            <td>
-                An iterable data structure containing flags that control how the Intent is handled
-                (see {@link android.content.Intent#setFlags(int) Intent.setFlags()}).
-            </td>
-        </tr>
-      </table>
-    </div>
-  </div>
-</div>
-<A NAME="drag"></A>
-<div class="jd-details api ">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        void
-      </span>
-      <span class="sympad">drag</span>
-      <span class="normal">
-      (
-            <em>tuple</em> start,
-            <em>tuple</em> end,
-            <em>float</em> duration,
-            <em>integer</em> steps)
-      </span>
-    </h4>
-  <div class="jd-details-descr">
-
-    <div class="jd-tagdata jd-tagdescr">
-        <p>
-            Simulates a drag gesture (touch, hold, and move) on this device's screen.
-        </p>
-    </div>
-    <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Arguments</h5>
-      <table class="jd-tagtable">
-        <tr>
-          <th>start</th>
-          <td>
-            The starting point of the drag gesture, in the form of a <em>tuple</em>
-            (x,y) where x and y are <em>integers</em>.
-          </td>
-        </tr>
-        <tr>
-          <th>end</th>
-          <td>
-            The end point of the drag gesture, in the form of a <em>tuple</em> (x,y)
-            where x and y are <em>integers</em>.
-          </td>
-        </tr>
-        <tr>
-            <th>duration</th>
-            <td>The duration of the drag gesture in seconds. The default is 1.0 seconds.</td>
-        </tr>
-        <tr>
-            <th>steps</th>
-            <td>The number of steps to take when interpolating points. The default is 10.</td>
-        </tr>
-      </table>
-    </div>
-  </div>
-</div>
-<A NAME="getProperty"></A>
-<div class="jd-details api ">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        <em>object</em>
-      </span>
-      <span class="sympad">getProperty</span>
-      <span class="normal">
-        (<em>string</em> key)
-      </span>
-    </h4>
-  <div class="jd-details-descr">
-
-    <div class="jd-tagdata jd-tagdescr">
-        <p>
-            Given the name of a system environment variable, returns its value for this device.
-        </p>
-    </div>
-    <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Arguments</h5>
-      <table class="jd-tagtable">
-        <tr>
-          <th>key</th>
-          <td>
-            The name of the system environment variable. The available variable names are listed in
-            <a href="#table1">Table 1. Property variable names</a> at the end of this topic.
-          </td>
-        </tr>
-      </table>
-    </div>
-    <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Returns</h5>
-      <ul class="nolist">
-        <li>
-            The value of the variable. The data format varies according to the variable requested.
-        </li>
-      </ul>
-    </div>
-  </div>
-</div>
-<A NAME="getSystemProperty"></A>
-<div class="jd-details api ">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        <em>object</em>
-      </span>
-      <span class="sympad">getSystemProperty</span>
-      <span class="normal">
-      (<em>string</em> key)
-      </span>
-    </h4>
-  <div class="jd-details-descr">
-
-    <div class="jd-tagdata jd-tagdescr">
-        <p>
-            Synonym for <code><a href="#getProperty">getProperty()</a></code>.
-        </p>
-    </div>
-    <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Arguments</h5>
-      <table class="jd-tagtable">
-        <tr>
-          <th>key</th>
-          <td>
-            The name of the system environment variable. The available variable names are listed in
-            <a href="#table1">Table 1. Property Variable Names</a>.
-          </td>
-        </tr>
-      </table>
-    </div>
-    <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Returns</h5>
-      <ul class="nolist">
-        <li>
-            The value of the variable. The data format varies according to the variable requested.
-        </li>
-      </ul>
-    </div>
-  </div>
-</div>
-<A NAME="installPackage"></A>
-<div class="jd-details api ">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        void
-      </span>
-      <span class="sympad">installPackage</span>
-      <span class="normal">
-      (<em>string</em> path)
-      </span>
-    </h4>
-  <div class="jd-details-descr">
-
-    <div class="jd-tagdata jd-tagdescr">
-        <p>
-            Installs the Android application or test package contained in packageFile
-            onto this device. If the application or test package is already installed, it is
-            replaced.
-        </p>
-    </div>
-    <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Arguments</h5>
-      <table class="jd-tagtable">
-        <tr>
-          <th>path</th>
-          <td>
-            The fully-qualified path and filename of the <code>.apk</code> file to install.
-          </td>
-        </tr>
-      </table>
-    </div>
-  </div>
-</div>
-<A NAME="instrument"></A>
-<div class="jd-details api ">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        <em>dictionary</em>
-      </span>
-      <span class="sympad">instrument</span>
-      <span class="normal">
-      (
-            <em>string</em> className,
-            <em>dictionary</em> args)
-      </span>
-    </h4>
-  <div class="jd-details-descr">
-
-    <div class="jd-tagdata jd-tagdescr">
-        <p>
-            Runs the specified component with Android instrumentation, and returns the results
-            in a dictionary whose exact format is dictated by the component being run. The
-            component must already be present on this device.
-        </p>
-        <p>
-            Use this method to start a test case that uses one of Android's test case classes.
-            See <a href="{@docRoot}tools/testing/testing_android.html">Testing
-            Fundamentals</a> to learn more about unit testing with the Android testing
-            framework.
-        </p>
-    </div>
-    <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Arguments</h5>
-      <table class="jd-tagtable">
-        <tr>
-          <th>className</th>
-          <td>
-            The name of an Android component that is already installed on this device, in the
-            standard form packagename/classname, where packagename is the
-            Android package name of a <code>.apk</code> file on this device, and
-            classname is the class name of an Android component (Activity,
-            ContentProvider, Service, or BroadcastReceiver) in that file. Both
-            packagename and classname must be fully qualified. See
-            {@link android.content.ComponentName} for more details.
-          </td>
-        </tr>
-        <tr>
-          <th>args</th>
-          <td>
-            A dictionary containing flags and their values. These are passed to the component as it
-            is started. If the flag does not take a value, set its dictionary value to an empty
-            string.
-          </td>
-        </tr>
-      </table>
-    <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Returns</h5>
-        <ul class="nolist">
-            <li>
-                <p>
-                    A dictionary containing the component's output. The contents of the dictionary
-                    are defined by the component itself.
-                </p>
-                <p>
-                    If you use {@link android.test.InstrumentationTestRunner} as the class name in
-                    the componentName argument, then the result dictionary contains
-                    the single key "stream". The value of "stream" is a <em>string</em> containing
-                    the test output, as if <code>InstrumentationTestRunner</code> was run from the
-                    command line. The format of this output is described in
-                    <a href="{@docRoot}tools/testing/testing_otheride.html">
-                    Testing in Other IDEs</a>.
-                </p>
-            </li>
-        </ul>
-    </div>
-    </div>
-  </div>
-</div>
-<A NAME="press"></A>
-<div class="jd-details api ">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        void
-      </span>
-      <span class="sympad">press</span>
-      <span class="normal">
-      (<em>string</em> name,
-      <em>integer</em> type)
-      </span>
-    </h4>
-  <div class="jd-details-descr">
-    <div class="jd-tagdata jd-tagdescr">
-        <p>
-            Sends the key event specified by <code>type</code> to the key specified by
-            <code>keycode</code>.
-        </p>
-    </div>
-    <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Arguments</h5>
-      <table class="jd-tagtable">
-        <tr>
-          <th>name</th>
-          <td>
-            The name of the keycode to send. See {@link android.view.KeyEvent} for a list of
-            keycode names. Use the keycode name, not its integer value.
-          </td>
-        </tr>
-        <tr>
-          <th>type</th>
-          <td>
-            The type of key event to send. The allowed values are <code><a href="#ACTION_DOWN">
-            DOWN</a></code>, <code><a href="#ACTION_UP">UP</a></code>, and
-            <code><a href="#ACTION_DOWN_AND_UP">DOWN_AND_UP</a></code>.
-          </td>
-        </tr>
-      </table>
-    </div>
-  </div>
-</div>
-<A NAME="reboot"></A>
-<div class="jd-details api ">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        void
-      </span>
-      <span class="sympad">reboot</span>
-      <span class="normal">
-      (<em>string</em> bootloadType)
-      </span>
-    </h4>
-  <div class="jd-details-descr">
-
-    <div class="jd-tagdata jd-tagdescr">
-        <p>
-                Reboots this device into the bootloader specified by <code>bootloadType</code>.
-        </p>
-    </div>
-    <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Arguments</h5>
-      <table class="jd-tagtable">
-        <tr>
-          <th>into</th>
-          <td>
-            The type of bootloader to reboot into. The allowed values are
-            "bootloader", "recovery", or "None".
-          </td>
-        </tr>
-      </table>
-    </div>
-  </div>
-</div>
-<A NAME="removePackage"></A>
-<div class="jd-details api ">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        void
-      </span>
-      <span class="sympad">removePackage</span>
-      <span class="normal">
-      (<em>string</em> package)
-      </span>
-    </h4>
-  <div class="jd-details-descr">
-
-    <div class="jd-tagdata jd-tagdescr">
-        <p>
-            Deletes the specified package from this device, including its data and cache.
-        </p>
-    </div>
-    <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Arguments</h5>
-      <table class="jd-tagtable">
-        <tr>
-          <th>package</th>
-          <td>
-            The Android package name of an <code>.apk</code> file on this device.
-          </td>
-      </table>
-    </div>
-  </div>
-</div>
-<A NAME="shell"></A>
-<div class="jd-details api ">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        <em>object</em>
-      </span>
-      <span class="sympad">shell</span>
-      <span class="normal">
-      (<em>string</em> cmd)
-      </span>
-    </h4>
-  <div class="jd-details-descr">
-    <div class="jd-tagdata jd-tagdescr">
-        <p>
-            Executes an <code>adb</code> shell command and returns the result, if any.
-        </p>
-    </div>
-    <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Arguments</h5>
-      <table class="jd-tagtable">
-        <tr>
-          <th>cmd</th>
-          <td>
-            The command to execute in the <code>adb</code> shell. The form of these commands is
-            described in the topic <a href="{@docRoot}tools/help/adb.html">Android
-            Debug Bridge</a>.
-          </td>
-        </tr>
-      </table>
-    </div>
-    <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Returns</h5>
-      <ul class="nolist">
-        <li>
-            The results of the command, if any. The format of the results is determined by the
-            command.
-        </li>
-      </ul>
-    </div>
-  </div>
-</div>
-<A NAME="startActivity"></A>
-<div class="jd-details api ">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        void
-      </span>
-      <span class="sympad">startActivity</span>
-      <span class="normal">
-      (
-            <em>string</em> uri,
-            <em>string</em> action,
-            <em>string</em> data,
-            <em>string</em> mimetype,
-            <em>iterable</em> categories
-            <em>dictionary</em> extras,
-            <em>component</em> component,
-            <em>iterable</em> flags)
-      </span>
-    </h4>
-  <div class="jd-details-descr">
-    <div class="jd-tagdata jd-tagdescr">
-        <p>
-           Starts an Activity on this device by sending an Intent constructed from the
-           supplied arguments.
-        </p>
-    </div>
-    <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Arguments</h5>
-      <table class="jd-tagtable">
-        <tr>
-          <th>uri</th>
-          <td>
-            The URI for the Intent.
-            (see {@link android.content.Intent#setData(android.net.Uri) Intent.setData()}).
-          </td>
-        </tr>
-        <tr>
-            <th>action</th>
-            <td>
-                The action for the Intent
-                (see {@link android.content.Intent#setAction(java.lang.String) Intent.setAction()}).
-            </td>
-        </tr>
-        <tr>
-            <th>data</th>
-            <td>
-                The data URI for the Intent
-                (see {@link android.content.Intent#setData(android.net.Uri) Intent.setData()}).
-            </td>
-        </tr>
-        <tr>
-            <th>mimetype</th>
-            <td>
-                The MIME type for the Intent
-                (see {@link android.content.Intent#setType(java.lang.String) Intent.setType()}).
-            </td>
-        </tr>
-        <tr>
-            <th>categories</th>
-            <td>
-                An iterable data structure containing strings that define categories for the
-                Intent
-                (see
-                {@link android.content.Intent#addCategory(java.lang.String) Intent.addCategory()}).
-            </td>
-        </tr>
-        <tr>
-            <th>extras</th>
-            <td>
-                A dictionary of extra data for the Intent
-                (see
-                {@link android.content.Intent#putExtra(java.lang.String,java.lang.String)
-                Intent.putExtra()}
-                for an example).
-                <p>
-                    The key for each dictionary item should be a <em>string</em>. The item's value
-                    can be any simple or structured data type.
-                </p>
-            </td>
-        </tr>
-        <tr>
-            <th>component</th>
-            <td>
-                The component for the Intent
-                (see {@link android.content.ComponentName}). Using this argument will direct the
-                Intent to a specific class within a specific Android package.
-            </td>
-        </tr>
-        <tr>
-            <th>flags</th>
-            <td>
-                An iterable data structure containing flags that control how the Intent is handled
-                (see {@link android.content.Intent#setFlags(int) Intent.setFlags()}).
-            </td>
-        </tr>
-      </table>
-    </div>
-  </div>
-</div>
-<A NAME="takeSnapshot"></A>
-<div class="jd-details api ">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        <code>
-            <a href="{@docRoot}tools/help/MonkeyImage.html">
-                MonkeyImage
-            </a>
-        </code>
-      </span>
-      <span class="sympad">takeSnapshot</span>
-      <span class="normal">
-      ()
-      </span>
-    </h4>
-  <div class="jd-details-descr">
-    <div class="jd-tagdata jd-tagdescr">
-        <p>
-            Captures the entire screen buffer of this device, yielding a
-            screen capture of the current display.
-        </p>
-    </div>
-    <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Returns</h5>
-      <ul class="nolist">
-        <li>
-            A <a href="{@docRoot}tools/help/MonkeyImage.html">
-            MonkeyImage</a> object containing the image of the current display.
-        </li>
-      </ul>
-    </div>
-  </div>
-</div>
-<A NAME="touch"></A>
-<div class="jd-details api ">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        void
-      </span>
-      <span class="sympad">touch</span>
-      <span class="normal">
-      (
-            <em>integer</em> x,
-            <em>integer</em> y,
-            <em>string</em> type)
-      </span>
-    </h4>
-  <div class="jd-details-descr">
-    <div class="jd-tagdata jd-tagdescr">
-        <p>
-            Sends a touch event specified by type to the screen location specified
-            by x and y.
-        </p>
-    </div>
-    <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Arguments</h5>
-      <table class="jd-tagtable">
-        <tr>
-          <th>x</th>
-          <td>
-            The horizontal position of the touch in actual device pixels, starting from the left of
-            the screen in its current orientation.
-          </td>
-        </tr>
-        <tr>
-          <th>y</th>
-          <td>
-            The vertical position of the touch in actual device pixels, starting from the top of
-            the screen in its current orientation.
-          </td>
-        </tr>
-        <tr>
-            <th>type</th>
-            <td>
-                The type of key event to send. The allowed values are <code><a href="#ACTION_DOWN">
-                DOWN</a></code>, <code><a href="#ACTION_UP">UP</a></code>, and
-                <code><a href="#ACTION_DOWN_AND_UP">DOWN_AND_UP</a></code>.
-            </td>
-        </tr>
-      </table>
-    </div>
-  </div>
-</div>
-<A NAME="type"></A>
-<div class="jd-details api ">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        void
-      </span>
-      <span class="sympad">type</span>
-      <span class="normal">
-      (<em>string</em> message)
-      </span>
-    </h4>
-  <div class="jd-details-descr">
-    <div class="jd-tagdata jd-tagdescr">
-        <p>
-            Sends the characters contained in message to this device, as if they
-            had been typed on the device's keyboard. This is equivalent to calling
-            <code><a href="#press">press()</a></code> for each keycode in <code>message</code>
-            using the key event type <code><a href="#ACTION_DOWN_AND_UP">DOWN_AND_UP</a></code>.
-        </p>
-    </div>
-    <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Arguments</h5>
-      <table class="jd-tagtable">
-        <tr>
-          <th>message</th>
-          <td>
-              A string containing the characters to send.
-          </td>
-        </tr>
-      </table>
-    </div>
-  </div>
-</div>
-<A NAME="wake"></A>
-<div class="jd-details api">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        void
-      </span>
-      <span class="sympad">wake</span>
-      <span class="normal">
-      ()
-      </span>
-    </h4>
-  <div class="jd-details-descr">
-    <div class="jd-tagdata jd-tagdescr">
-        <p>
-            Wakes the screen of this device.
-        </p>
-    </div>
-  </div>
-</div>
-<hr></hr>
-<h2>Appendix</h2>
-    <p class="table-caption" id="table1">
-        <strong>Table 1.</strong>Property variable names used with
-        <span class="sympad"><a href="#getProperty">getProperty()</a></span> and
-        <span class="sympad"><a href="#getSystemProperty">getSystemProperty()</a></span>.
-    </p>
-    <table>
-        <tr>
-            <th>
-                Property Group
-            </th>
-            <th>
-                Property
-            </th>
-            <th>
-                Description
-            </th>
-            <th>
-                Notes
-            </th>
-        </tr>
-        <tr>
-            <td rowspan="17"><code>build</code></td>
-            <td><code>board</code></td>
-            <td>Code name for the device's system board</td>
-            <td rowspan="17">
-                See {@link android.os.Build}
-            </td>
-        </tr>
-        <tr>
-            <td><code>brand</code></td>
-            <td>The carrier or provider for which the OS is customized.</td>
-        </tr>
-            <tr>
-            <td><code>device</code></td>
-            <td>The device design name.</td>
-        </tr>
-            <tr>
-            <td><code>fingerprint</code></td>
-            <td>A unique identifier for the currently-running build.</td>
-        </tr>
-            <tr>
-            <td><code>host</code></td>
-            <td></td>
-        </tr>
-            <tr>
-            <td><code>ID</code></td>
-            <td>A changelist number or label.</td>
-        </tr>
-            <tr>
-            <td><code>model</code></td>
-            <td>The end-user-visible name for the device.</td>
-        </tr>
-            <tr>
-            <td><code>product</code></td>
-            <td>The overall product name.</td>
-        </tr>
-            <tr>
-            <td><code>tags</code></td>
-            <td>Comma-separated tags that describe the build, such as "unsigned" and "debug".</td>
-        </tr>
-            <tr>
-            <td><code>type</code></td>
-            <td>The build type, such as "user" or "eng".</td>
-        </tr>
-        <tr>
-            <td><code>user</code></td>
-            <td></td>
-        </tr>
-        <tr>
-            <td><code>CPU_ABI</code></td>
-            <td>
-                The name of the native code instruction set, in the form CPU type plus
-                ABI convention.
-            </td>
-        </tr>
-        <tr>
-            <td><code>manufacturer</code></td>
-            <td>The product/hardware manufacturer.</td>
-        </tr>
-        <tr>
-            <td><code>version.incremental</code></td>
-            <td>
-                The internal code used by the source control system to represent this version
-                of the software.
-            </td>
-        </tr>
-        <tr>
-            <td><code>version.release</code></td>
-            <td>The user-visible name of this version of the software.</td>
-        </tr>
-        <tr>
-            <td><code>version.sdk</code></td>
-            <td>The user-visible SDK version associated with this version of the OS.</td>
-        </tr>
-        <tr>
-            <td><code>version.codename</code></td>
-            <td>
-                The current development codename, or "REL" if this version of the software has been
-                released.
-            </td>
-        </tr>
-        <tr>
-            <td rowspan="3"><code>display</code></td>
-            <td><code>width</code></td>
-            <td>The device's display width in pixels.</td>
-            <td rowspan="3">
-                See
-                {@link android.util.DisplayMetrics} for details.
-            </td>
-        </tr>
-        <tr>
-            <td><code>height</code></td>
-            <td>The device's display height in pixels.</td>
-        </tr>
-        <tr>
-            <td><code>density</code></td>
-            <td>
-                The logical density of the display. This is a factor that scales
-                DIP (Density-Independent Pixel) units to the device's resolution. DIP is adjusted so
-                that 1 DIP is equivalent to one pixel on a 160 pixel-per-inch display. For example,
-                on a 160-dpi screen, density = 1.0, while on a 120-dpi screen, density = .75.
-                <p>
-                    The value does not exactly follow the real screen size, but is adjusted to
-                    conform to large changes in the display DPI. See
-                    {@link android.util.DisplayMetrics#density} for more details.
-                </p>
-            </td>
-        </tr>
-        <tr>
-            <td rowspan="6"><code>am.current</code></td>
-            <td><code>package</code></td>
-            <td>The Android package name of the currently running package.</td>
-            <td rowspan="6">
-                The <code>am.current</code> keys return information about the currently-running
-                Activity.
-            </td>
-        </tr>
-        <tr>
-            <td><code>action</code></td>
-            <td>
-                The current activity's action. This has the same format as the <code>name</code>
-                attribute of the <code>action</code> element in a package manifest.
-            </td>
-        </tr>
-        <tr>
-            <td><code>comp.class</code></td>
-            <td>
-                The class name of the component that started the current Activity. See
-                <code><a href="#comppackage">comp.package</a></code> for more details.</td>
-        </tr>
-        <tr>
-            <td><a name="comppackage"><code>comp.package</code></a></td>
-            <td>
-                The package name of the component that started the current Activity. A component
-                is specified by a package name and the name of class that the package contains.
-            </td>
-        </tr>
-        <tr>
-            <td><code>data</code></td>
-            <td>The data (if any) contained in the Intent that started the current Activity.</td>
-        </tr>
-        <tr>
-            <td><code>categories</code></td>
-            <td>The categories specified by the Intent that started the current Activity.</td>
-        </tr>
-        <tr>
-            <td rowspan="3"><code>clock</code></td>
-            <td><code>realtime</code></td>
-            <td>
-                The number of milliseconds since the device rebooted, including deep-sleep
-                time.
-            </td>
-            <td rowspan="3">
-                See {@link android.os.SystemClock} for more information.
-            </td>
-        </tr>
-        <tr>
-            <td><code>uptime</code></td>
-            <td>
-                The number of milliseconds since the device rebooted, <em>not</em> including
-                deep-sleep time
-            </td>
-        </tr>
-        <tr>
-            <td><code>millis</code></td>
-            <td>current time since the UNIX epoch, in milliseconds.</td>
-        </tr>
-    </table>
diff --git a/docs/html/tools/help/MonkeyImage.jd b/docs/html/tools/help/MonkeyImage.jd
deleted file mode 100644
index 79f4948..0000000
--- a/docs/html/tools/help/MonkeyImage.jd
+++ /dev/null
@@ -1,437 +0,0 @@
-page.title=MonkeyImage
-parent.title=monkeyrunner
-parent.link=index.html
-@jd:body
-<style>
-    h4.jd-details-title {background-color: #DEE8F1;}
-</style>
-
-<p>
-    A monkeyrunner class to hold an image of the device or emulator's screen. The image is
-    copied from the screen buffer during a screenshot. This object's methods allow you to
-    convert the image into various storage formats, write the image to a file, copy parts of
-    the image, and compare this object to other <code>MonkeyImage</code> objects.
-</p>
-<p>
-    You do not need to create new instances of <code>MonkeyImage</code>. Instead, use
-<code><a href="{@docRoot}tools/help/MonkeyDevice.html#takeSnapshot">
-MonkeyDevice.takeSnapshot()</a></code> to create a new instance from a screenshot. For example, use:
-</p>
-<pre>
-newimage = MonkeyDevice.takeSnapshot()
-</pre>
-<h2>Summary</h2>
-<table id="pubmethods" class="jd-sumtable">
-    <tr>
-        <th colspan="12" style="background-color: #E2E2E2">Methods</th>
-    </tr>
-    <tr class="api" >
-        <td class="jd-typecol">
-            <nobr>
-                <em>string</em>
-            </nobr>
-        </td>
-        <td class="jd-linkcol" width="100%">
-            <nobr>
-                <span class="sympad">
-                    <a href="#convertToBytes">convertToBytes</a>
-                </span>
-                (<em>string</em> format)
-            </nobr>
-            <div class="jd-descrdiv">
-                Converts the current image to a particular format and returns it as a
-                <em>string</em> that you can then access as an <em>iterable</em> of binary bytes.
-            </div>
-        </td>
-    </tr>
-    <tr class="api" >
-        <td class="jd-typecol">
-            <nobr>
-                <em>tuple</em>
-            </nobr>
-        </td>
-        <td class="jd-linkcol" width="100%">
-            <nobr>
-                <span class="sympad">
-                    <a href="#getRawPixel">getRawPixel</a>
-                </span>
-                (<em>integer</em> x,
-                <em>integer</em> y)
-            </nobr>
-            <div class="jd-descrdiv">
-                Returns the single pixel at the image location (x,y), as an
-                a <em>tuple</em> of <em>integer</em>, in the form (a,r,g,b).
-            </div>
-        </td>
-    </tr>
-    <tr class="api" >
-        <td class="jd-typecol">
-            <nobr>
-                <em>integer</em>
-            </nobr>
-        </td>
-        <td class="jd-linkcol" width="100%">
-            <nobr>
-                <span class="sympad">
-                    <a href="#getRawPixelInt">getRawPixelInt</a>
-                </span>
-                (<em>integer</em> x,
-                 <em>integer</em> y)
-            </nobr>
-            <div class="jd-descrdiv">
-                Returns the single pixel at the image location (x,y), as
-                a 32-bit <em>integer</em>.
-            </div>
-        </td>
-    </tr>
-    <tr class="api" >
-        <td class="jd-typecol">
-            <nobr>
-                <code>
-                    <a href="{@docRoot}tools/help/MonkeyImage.html">MonkeyImage</a>
-                </code>
-            </nobr>
-        </td>
-        <td class="jd-linkcol" width="100%">
-            <nobr>
-                <span class="sympad">
-                    <a href="#getSubImage">getSubImage</a>
-                </span>
-                (<em>tuple</em> rect)
-            </nobr>
-            <div class="jd-descrdiv">
-                Creates a new <code>MonkeyImage</code> object from a rectangular selection of the
-                current image.
-            </div>
-        </td>
-    </tr>
-    <tr class="api" >
-        <td class="jd-typecol">
-            <nobr>
-                <em>boolean</em>
-            </nobr>
-        </td>
-        <td class="jd-linkcol" width="100%">
-            <nobr>
-                <span class="sympad">
-                    <a href="#sameAs">sameAs</a>
-                </span>
-         (<code><a href="{@docRoot}tools/help/MonkeyImage.html">MonkeyImage</a></code>
-            other,
-            <em>float</em> percent)
-            </nobr>
-            <div class="jd-descrdiv">
-                Compares this <code>MonkeyImage</code> object to another and returns the result of
-                the comparison. The <code>percent</code> argument specifies the percentage
-                difference that is allowed for the two images to be "equal".
-            </div>
-        </td>
-    </tr>
-    <tr class="api" >
-        <td class="jd-typecol">
-            <nobr>
-                <em>void</em>
-            </nobr>
-        </td>
-        <td class="jd-linkcol" width="100%">
-            <nobr>
-                <span class="sympad">
-                    <a href="#writeToFile">writeToFile</a>
-                </span>
-                (<em>string</em> path,
-                <em>string</em> format)
-            </nobr>
-            <div class="jd-descrdiv">
-                Writes the current image to the file specified by <code>filename</code>, in the
-                format specified by <code>format</code>.
-            </div>
-        </td>
-    </tr>
-</table>
-<!-- ========= METHOD DETAIL ======== -->
-<!-- Public methods -->
-<h2>Public Methods</h2>
-<A NAME="convertToBytes"></A>
-<div class="jd-details api ">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        <em>string</em>
-      </span>
-      <span class="sympad">convertToBytes</span>
-      <span class="normal">
-      (
-            <em>string</em> format)
-      </span>
-    </h4>
-  <div class="jd-details-descr">
-
-    <div class="jd-tagdata jd-tagdescr">
-        <p>
-            Converts the current image to a particular format and returns it as a <em>string</em>
-            that you can then access as an <em>iterable</em> of binary bytes.
-        </p>
-    </div>
-    <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Arguments</h5>
-      <table class="jd-tagtable">
-        <tr>
-          <th>format</th>
-            <td>
-                The desired output format. All of the common raster output formats are supported.
-                The default value is "png" (Portable Network Graphics).
-            </td>
-        </tr>
-        </table>
-    </div>
-</div>
-</div>
-<A NAME="getRawPixel"></A>
-<div class="jd-details api ">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        <em>tuple</em>
-      </span>
-      <span class="sympad">getRawPixel</span>
-      <span class="normal">
-        (<em>integer</em> x,
-         <em>integer</em> y)
-      </span>
-    </h4>
-  <div class="jd-details-descr">
-
-    <div class="jd-tagdata jd-tagdescr">
-        <p>
-            Returns the single pixel at the image location (x,y), as an
-            a <em>tuple</em> of <em>integer</em>, in the form (a,r,g,b).
-        </p>
-    </div>
-    <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Arguments</h5>
-      <table class="jd-tagtable">
-        <tr>
-          <th>x</th>
-          <td>
-            The horizontal position of the pixel, starting with 0 at the left of the screen in the
-            orientation it had when the screenshot was taken.
-          </td>
-        </tr>
-        <tr>
-          <th>y</th>
-          <td>
-            The vertical position of the pixel, starting with 0 at the top of the screen in the
-            orientation it had when the screenshot was taken.
-          </td>
-        </tr>
-      </table>
-    </div>
-    <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Returns</h5>
-      <ul class="nolist">
-        <li>
-            A tuple of integers representing the pixel, in the form (a,r,g,b) where
-            a is the alpha channel value, and r, g, and b are the red, green, and blue values,
-            respectively.
-        </li>
-      </ul>
-    </div>
-  </div>
-</div>
-<A NAME="getRawPixelInt"></A>
-<div class="jd-details api ">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        <em>tuple</em>
-      </span>
-      <span class="sympad">getRawPixelInt</span>
-      <span class="normal">
-        (<em>integer</em> x,
-         <em>integer</em> y)
-      </span>
-    </h4>
-  <div class="jd-details-descr">
-
-    <div class="jd-tagdata jd-tagdescr">
-        <p>
-            Returns the single pixel at the image location (x,y), as an
-            an <em>integer</em>. Use this method to economize on memory.
-        </p>
-    </div>
-    <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Arguments</h5>
-      <table class="jd-tagtable">
-        <tr>
-          <th>x</th>
-          <td>
-            The horizontal position of the pixel, starting with 0 at the left of the screen in the
-            orientation it had when the screenshot was taken.
-          </td>
-        </tr>
-        <tr>
-          <th>y</th>
-          <td>
-            The vertical position of the pixel, starting with 0 at the top of the screen in the
-            orientation it had when the screenshot was taken.
-          </td>
-        </tr>
-      </table>
-    </div>
-    <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Returns</h5>
-      <ul class="nolist">
-        <li>
-            The a,r,g, and b values of the pixel as 8-bit values combined into a 32-bit
-            integer, with a as the leftmost 8 bits, r the next rightmost, and so forth.
-        </li>
-      </ul>
-    </div>
-  </div>
-</div>
-<A NAME="getSubImage"></A>
-<div class="jd-details api ">
-    <h4 class="jd-details-title">
-      <span class="normal">
-          <code>
-              <a href="{@docRoot}tools/help/MonkeyImage.html">MonkeyImage</a>
-          </code>
-      </span>
-      <span class="sympad">getSubImage</span>
-      <span class="normal">
-        (<em>tuple</em> rect)
-      </span>
-    </h4>
-  <div class="jd-details-descr">
-
-    <div class="jd-tagdata jd-tagdescr">
-        <p>
-           Creates a new <code>MonkeyImage</code> object from a rectangular selection of the
-           current image.
-        </p>
-    </div>
-    <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Arguments</h5>
-      <table class="jd-tagtable">
-        <tr>
-          <th>rect</th>
-          <td>
-            A tuple (x, y, w, h) specifying the selection. x and y specify the 0-based pixel
-            position of the upper left-hand corner of the selection. w specifies the width of the
-            region, and h specifies its height, both in units of pixels.
-            <p>
-                The image's orientation is the same as the screen orientation at the time the
-                screenshot was made.
-            </p>
-          </td>
-        </tr>
-      </table>
-    </div>
-    <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Returns</h5>
-      <ul class="nolist">
-        <li>
-            A new <code>MonkeyImage</code> object containing the selection.
-        </li>
-      </ul>
-    </div>
-  </div>
-</div>
-<A NAME="sameAs"></A>
-<div class="jd-details api ">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        <em>boolean</em>
-      </span>
-      <span class="sympad">sameAs</span>
-      <span class="normal">
-      (
-       <code>
-           <a href="{@docRoot}tools/help/MonkeyImage.html">MonkeyImage</a>
-       </code> otherImage,
-       <em>float</em> percent
-      )
-      </span>
-    </h4>
-  <div class="jd-details-descr">
-
-    <div class="jd-tagdata jd-tagdescr">
-        <p>
-           Compares this <code>MonkeyImage</code> object to another and returns the result of
-           the comparison. The <code>percent</code> argument specifies the percentage
-           difference that is allowed for the two images to be "equal".
-        </p>
-    </div>
-    <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Arguments</h5>
-      <table class="jd-tagtable">
-        <tr>
-          <th>other</th>
-          <td>
-            Another <code>MonkeyImage</code> object to compare to this one.
-          </td>
-        </tr>
-        <tr>
-          <th>
-            percent
-          </th>
-          <td>
-            A float in the range 0.0 to 1.0, inclusive, indicating
-            the percentage of pixels that need to be the same for the method to return
-            <code>true</code>. The default is 1.0, indicating that all the pixels
-            must match.
-          </td>
-        </tr>
-      </table>
-    </div>
-    <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Returns</h5>
-      <ul class="nolist">
-        <li>
-            Boolean <code>true</code> if the images match, or boolean <code>false</code> otherwise.
-        </li>
-      </ul>
-    </div>
-  </div>
-</div>
-<A NAME="writeToFile"></A>
-<div class="jd-details api ">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        void
-      </span>
-      <span class="sympad">writeToFile</span>
-      <span class="normal">
-      (<em>string</em> filename,
-       <em>string</em> format)
-      </span>
-    </h4>
-  <div class="jd-details-descr">
-
-    <div class="jd-tagdata jd-tagdescr">
-        <p>
-           Writes the current image to the file specified by <code>filename</code>, in the
-           format specified by <code>format</code>.
-        </p>
-    </div>
-    <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Arguments</h5>
-      <table class="jd-tagtable">
-        <tr>
-          <th>path</th>
-          <td>
-            The fully-qualified filename and extension of the output file.
-          </td>
-        </tr>
-        <tr>
-            <th>
-                format
-            </th>
-            <td>
-                The output format to use for the file. If no format is provided, then the
-                method tries to guess the format from the filename's extension. If no
-                extension is provided and no format is specified, then the default format of
-                "png" (Portable Network Graphics) is used.
-            </td>
-        </tr>
-      </table>
-    </div>
-  </div>
-</div>
diff --git a/docs/html/tools/help/MonkeyRunner.jd b/docs/html/tools/help/MonkeyRunner.jd
deleted file mode 100644
index a924d2d..0000000
--- a/docs/html/tools/help/MonkeyRunner.jd
+++ /dev/null
@@ -1,448 +0,0 @@
-page.title=MonkeyRunner
-parent.title=monkeyrunner
-parent.link=index.html
-@jd:body
-
-<style>
-    h4.jd-details-title {background-color: #DEE8F1;}
-</style>
-<p>
-    A monkeyrunner class that contains static utility methods.
-</p>
-<h2>Summary</h2>
-<table id="pubmethods" class="jd-sumtable">
-    <tr>
-        <th colspan="12" style="background-color: #E2E2E2">Methods</th>
-    </tr>
-    <tr class="api" >
-        <td class="jd-typecol">
-            <nobr>
-                void
-            </nobr>
-        </td>
-        <td class="jd-linkcol" width="100%">
-            <nobr>
-                <span class="sympad">
-                    <a href="#alert">alert</a>
-                </span>
-                (<em>string</em> message,
-                 <em>string</em> title,
-                 <em>string</em> okTitle)
-            </nobr>
-            <div class="jd-descrdiv">
-                Displays an alert dialog to the process running the current
-                program.
-            </div>
-        </td>
-    </tr>
-    <tr class="api" >
-        <td class="jd-typecol">
-            <nobr>
-                <em>integer</em>
-            </nobr>
-        </td>
-        <td class="jd-linkcol" width="100%">
-            <nobr>
-                <span class="sympad">
-                    <a href="#choice">choice</a>
-                </span>
-                (<em>string</em> message,
-                 <em>iterable</em> choices,
-                 <em>string</em> title)
-            </nobr>
-            <div class="jd-descrdiv">
-                Displays a dialog with a list of choices to the process running the current program.
-            </div>
-        </td>
-    </tr>
-    <tr class="api" >
-        <td class="jd-typecol">
-            <nobr>
-                void
-            </nobr>
-        </td>
-        <td class="jd-linkcol" width="100%">
-            <nobr>
-                <span class="sympad">
-                    <a href="#help">help</a>
-                </span>
-                (<em>string</em> format)
-            </nobr>
-            <div class="jd-descrdiv">
-                Displays the monkeyrunner API reference in a style similar to that of Python's
-                <code>pydoc</code> tool, using the specified format.
-            </div>
-        </td>
-    </tr>
-    <tr class="api" >
-        <td class="jd-typecol">
-            <nobr>
-                <em>string</em>
-            </nobr>
-        </td>
-        <td class="jd-linkcol" width="100%">
-            <nobr>
-                <span class="sympad">
-                    <a href="#input">input</a>
-                </span>
-                (<em>string</em> message,
-                 <em>string</em> initialValue,
-                 <em>string</em> title,
-                 <em>string</em> okTitle,
-                 <em>string</em> cancelTitle)
-            </nobr>
-            <div class="jd-descrdiv">
-                Displays a dialog that accepts input.
-            </div>
-        </td>
-    </tr>
-    <tr class="api" >
-        <td class="jd-typecol">
-            <nobr>
-                void
-            </nobr>
-        </td>
-        <td class="jd-linkcol" width="100%">
-            <nobr>
-                <span class="sympad">
-                    <a href="#sleep">sleep</a>
-                </span>
-                (<em>float</em> seconds)
-            </nobr>
-            <div class="jd-descrdiv">
-                Pauses the current program for the specified number of seconds.
-            </div>
-        </td>
-    </tr>
-    <tr class="api" >
-        <td class="jd-typecol">
-            <nobr>
-                <code>
-                    <a href="{@docRoot}tools/help/MonkeyDevice.html">MonkeyDevice</a>
-                </code>
-            </nobr>
-        </td>
-        <td class="jd-linkcol" width="100%">
-            <nobr>
-                <span class="sympad">
-                    <a href="#waitForConnection">waitForConnection</a>
-                </span>
-                (<em>float</em> timeout,
-                <em>string</em> deviceId)
-            </nobr>
-            <div class="jd-descrdiv">
-                Tries to make a connection between the <code>monkeyrunner</code> backend and the
-                specified device or emulator.
-            </div>
-        </td>
-    </tr>
-</table>
-<!-- ========= METHOD DETAIL ======== -->
-<!-- Public methods -->
-<h2>Public Methods</h2>
-<A NAME="alert"></A>
-<div class="jd-details api ">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        <em>string</em>
-      </span>
-      <span class="sympad">alert</span>
-      <span class="normal">
-      (
-            <em>string</em> message,
-            <em>string</em> title,
-            <em>string</em> okTitle)
-      </span>
-    </h4>
-  <div class="jd-details-descr">
-
-    <div class="jd-tagdata jd-tagdescr">
-        <p>
-            Displays an alert dialog to the process running the current
-            program. The dialog is modal, so the program pauses until the user clicks the dialog's
-            button.
-        </p>
-    </div>
-    <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Arguments</h5>
-      <table class="jd-tagtable">
-        <tr>
-          <th>message</th>
-            <td>
-                The message to display in the dialog.
-            </td>
-        </tr>
-        <tr>
-            <th>title</th>
-            <td>
-                The dialog's title. The default value is "Alert".
-            </td>
-        </tr>
-        <tr>
-            <th>okTitle</th>
-            <td>
-                The text displayed in the dialog button. The default value is "OK".
-            </td>
-        </tr>
-        </table>
-    </div>
-</div>
-</div>
-<A NAME="choice"></A>
-<div class="jd-details api ">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        <em>integer</em>
-      </span>
-      <span class="sympad">choice</span>
-      <span class="normal">
-        (<em>string</em> message,
-         <em>iterable</em> choices,
-         <em>string</em> title)
-      </span>
-    </h4>
-  <div class="jd-details-descr">
-
-    <div class="jd-tagdata jd-tagdescr">
-        <p>
-            Displays a dialog with a list of choices to the process running the current program. The
-            dialog is modal, so the program pauses until the user clicks one of the dialog's
-            buttons.
-        </p>
-    </div>
-    <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Arguments</h5>
-      <table class="jd-tagtable">
-        <tr>
-          <th>message</th>
-          <td>
-            The prompt message displayed in the dialog.
-          </td>
-        </tr>
-        <tr>
-          <th>choices</th>
-          <td>
-            A Python iterable containing one or more objects that are displayed as strings. The
-            recommended form is an array of strings.
-          </td>
-        </tr>
-        <tr>
-            <th>
-                title
-            </th>
-            <td>
-               The dialog's title. The default is "Input".
-            </td>
-        </tr>
-      </table>
-    </div>
-    <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Returns</h5>
-      <ul class="nolist">
-        <li>
-            If the user makes a selection and clicks the "OK" button, the method returns
-            the 0-based index of the selection within the iterable.
-            If the user clicks the "Cancel" button, the method returns -1.
-        </li>
-      </ul>
-    </div>
-  </div>
-</div>
-<A NAME="help"></A>
-<div class="jd-details api ">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        void
-      </span>
-      <span class="sympad">help</span>
-      <span class="normal">
-        (<em>string</em> format)
-      </span>
-    </h4>
-  <div class="jd-details-descr">
-
-    <div class="jd-tagdata jd-tagdescr">
-        <p>
-            Displays the monkeyrunner API reference in a style similar to that of Python's
-            <code>pydoc</code> tool, using the specified format.
-        </p>
-    </div>
-    <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Arguments</h5>
-      <table class="jd-tagtable">
-        <tr>
-          <th>format</th>
-          <td>
-            The markup format to use in the output. The possible values are "text" for plain text
-            or "html" for HTML.
-          </td>
-        </tr>
-      </table>
-    </div>
-  </div>
-</div>
-<A NAME="input"></A>
-<div class="jd-details api ">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        <em>string</em>
-      </span>
-      <span class="sympad">input</span>
-      <span class="normal">
-        (<em>string</em> message
-         <em>string</em> initialValue,
-         <em>string</em> title,
-         <em>string</em> okTitle,
-         <em>string</em> cancelTitle)
-      </span>
-    </h4>
-  <div class="jd-details-descr">
-
-    <div class="jd-tagdata jd-tagdescr">
-        <p>
-            Displays a dialog that accepts input and returns it to the program. The dialog is
-            modal, so the program pauses until the user clicks one of the dialog's buttons.
-        </p>
-        <p>
-            The dialog contains two buttons, one of which displays the okTitle value
-            and the other the cancelTitle value. If the user clicks the okTitle button,
-            the current value of the input box is returned. If the user clicks the cancelTitle
-            button, an empty string is returned.
-        </p>
-    </div>
-    <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Arguments</h5>
-      <table class="jd-tagtable">
-        <tr>
-          <th>message</th>
-          <td>
-            The prompt message displayed in the dialog.
-          </td>
-        </tr>
-        <tr>
-          <th>initialValue</th>
-          <td>
-            The initial value to display in the dialog. The default is an empty string.
-          </td>
-        </tr>
-        <tr>
-          <th>title</th>
-          <td>
-            The dialog's title. The default is "Input".
-          </td>
-        </tr>
-        <tr>
-          <th>okTitle</th>
-          <td>
-            The text displayed in the okTitle button. The default is "OK".
-          </td>
-        </tr>
-        <tr>
-          <th>cancelTitle</th>
-          <td>
-            The text displayed in the cancelTitle button. The default is "Cancel".
-          </td>
-        </tr>
-      </table>
-    </div>
-    <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Returns</h5>
-      <ul class="nolist">
-        <li>
-            If the user clicks the okTitle button, then the method returns the current value of
-            the dialog's input box. If the user clicks the cancelTitle button, the method returns
-            an empty string.
-        </li>
-      </ul>
-    </div>
-  </div>
-</div>
-<A NAME="sleep"></A>
-<div class="jd-details api ">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        void
-      </span>
-      <span class="sympad">sleep</span>
-      <span class="normal">
-      (
-       <em>float</em> seconds
-      )
-      </span>
-    </h4>
-  <div class="jd-details-descr">
-
-    <div class="jd-tagdata jd-tagdescr">
-        <p>
-            Pauses the current program for the specified number of seconds.
-        </p>
-    </div>
-    <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Arguments</h5>
-      <table class="jd-tagtable">
-        <tr>
-          <th>seconds</th>
-          <td>
-            The number of seconds to pause.
-          </td>
-        </tr>
-      </table>
-    </div>
-  </div>
-</div>
-<A NAME="waitForConnection"></A>
-<div class="jd-details api ">
-    <h4 class="jd-details-title">
-      <span class="normal">
-          <code>
-              <a href="{@docRoot}tools/help/MonkeyDevice.html">MonkeyDevice</a>
-          </code>
-      </span>
-      <span class="sympad">waitForConnection</span>
-      <span class="normal">
-      (<em>float</em> timeout,
-       <em>string</em> deviceId)
-      </span>
-    </h4>
-  <div class="jd-details-descr">
-
-    <div class="jd-tagdata jd-tagdescr">
-        <p>
-            Tries to make a connection between the <code>monkeyrunner</code> backend and the
-            specified device or emulator.
-        </p>
-    </div>
-    <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Arguments</h5>
-      <table class="jd-tagtable">
-        <tr>
-          <th>timeout</th>
-          <td>
-            The number of seconds to wait for a connection. The default is to wait forever.
-          </td>
-        </tr>
-        <tr>
-            <th>
-                deviceId
-            </th>
-            <td>
-                A regular expression that specifies the serial number of the device or emulator. See
-                the topic
-                <a href="{@docRoot}tools/help/adb.html">Android Debug Bridge</a>
-                for a description of device and emulator serial numbers.
-            </td>
-        </tr>
-      </table>
-    </div>
-        <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Returns</h5>
-      <ul class="nolist">
-        <li>
-          A <code><a href="{@docRoot}tools/help/MonkeyDevice.html">MonkeyDevice</a></code>
-          instance for the device or emulator. Use this object to control and communicate with the
-          device or emulator.
-        </li>
-      </ul>
-    </div>
-  </div>
-</div>
diff --git a/docs/html/tools/help/adb.jd b/docs/html/tools/help/adb.jd
deleted file mode 100755
index 0340efe..0000000
--- a/docs/html/tools/help/adb.jd
+++ /dev/null
@@ -1,501 +0,0 @@
-page.title=Android Debug Bridge
-parent.title=Tools
-parent.link=index.html
-page.tags=adb
-@jd:body
-
-<div id="qv-wrapper">
-<div id="qv">
-  <h2>In this document</h2>
-<ol>
-  <li><a href="#Enabling">Enabling adb Debugging</a></li>
-  <li><a href="#issuingcommands">Syntax</a></li>
-  <li><a href="#commandsummary">Commands</a></li>
-  <li><a href="#devicestatus">Querying for Emulator/Device Instances</a></li>
-  <li><a href="#directingcommands">Directing Commands to a Specific Emulator/Device Instance</a></li>
-  <li><a href="#move">Installing an Application</a></li>
-  <li><a href="#forwardports">Forwarding Ports</a></li>
-  <li><a href="#copyfiles">Copying Files to or from an Emulator/Device Instance</a></li>
-  <li><a href="#stopping">Stopping the adb Server</a></li>
-  <li><a href="#wireless">Wireless usage</a></li>
-</ol>
-
-</div>
-</div>
-
-<p>Android Debug Bridge (adb) is a versatile command line tool that lets you communicate with an
-emulator instance or connected Android-powered device. It is a client-server program that includes
-three components: </p>
-
-<ul>
-  <li>A client, which runs on your development machine. You can invoke a client from a shell
-by issuing an adb command. Other Android tools such as DDMS also create
-adb clients. </li>
-  <li>A server, which runs as a background process on your development machine. The server
-manages communication between the client and the adb daemon running on an emulator or device. </li>
-  <li>A daemon, which runs as a background process on each emulator or device instance. </li>
-</ul>
-
-<p>You can find the {@code adb} tool in {@code <sdk>/platform-tools/}.</p>
-
-<p>When you start an adb client, the client first checks whether there is an adb server
-process already running. If there isn't, it starts the server process. When the server starts,
-it binds to local TCP port 5037 and listens for commands sent from adb clients&mdash;all adb
-clients use port 5037 to communicate with the adb server. </p>
-
-<p>The server then sets up connections to all running emulator/device instances. It locates emulator/device instances by scanning odd-numbered ports in the range 5555 to 5585, the range used by emulators/devices. Where the server finds an adb daemon, it sets up a connection to that port. Note that each emulator/device instance acquires a pair of sequential ports &mdash; an even-numbered port for console connections and an odd-numbered port for adb connections. For example: </p>
-
-<p style="margin-left:2em">
-Emulator 1, console: 5554<br/>
-Emulator 1, adb: 5555<br>
-Emulator 2, console: 5556<br>
-Emulator 2, adb: 5557<br>
-and so on...
-</p>
-
-<p>As shown, the emulator instance connected to adb on port 5555 is the same as the instance
-whose console listens on port 5554. </p>
-
-<p>Once the server has set up connections to all emulator instances, you can use adb commands to
-access those instances. Because the server manages connections to emulator/device
-instances and handles commands from multiple adb clients, you can control any emulator/device
-instance from any client (or from a script).</p>
-
-
-<h2 id="Enabling">Enabling adb Debugging</h2>
-
-<p>In order to use adb with a device connected over USB, you must enable
-<strong>USB debugging</strong> in the device system settings, under <strong>
-Developer options</strong>.</p>
-
-<p>On Android 4.2 and higher, the Developer options screen is
-hidden by default. To make it visible, go to
-<b>Settings &gt; About phone</b> and tap <b>Build number</b> seven times. Return to the previous
-screen to find <strong>Developer options</strong> at the bottom.</p>
-
-<p>On some devices, the Developer options screen may be located or named differently.</p>
-
-<p class="note"><strong>Note:</strong> When you connect a device running Android 4.2.2 or higher
-to your computer, the system shows a dialog asking whether to accept an RSA key that allows
-debugging through this computer. This security mechanism protects user devices because it ensures
-that USB debugging and other adb commands cannot be executed unless you're able to unlock the
-device and acknowledge the dialog. This requires that you have adb version 1.0.31 (available with
-SDK Platform-tools r16.0.1 and higher) in order to debug on a device running Android 4.2.2 or
-higher.</p>
-
-<p>For more information about connecting to a device over USB, read
-<a href="{@docRoot}tools/device.html">Using Hardware Devices</a>.</p>
-
-
-
-
-<h2 id="issuingcommands">Syntax</h2>
-
-<p>You can issue adb commands from a command line on your development machine or from a script.
-The usage is: </p>
-
-<pre class="no-pretty-print">
-adb [-d|-e|-s &lt;serialNumber&gt;] &lt;command&gt;
-</pre>
-
-<p>If there's only one emulator running or only one device connected, the adb command is
-sent to that device by default. If multiple emulators are running and/or multiple devices are
-attached, you need to use the <code>-d</code>, <code>-e</code>, or <code>-s</code>
-option to specify the target device to which the command should be directed. </p>
-
-
-
-<h2 id="commandsummary">Commands</h2>
-
-<p>The table below lists all of the supported adb commands and explains their meaning and usage. </p>
-
-<p class="table-caption"><strong>Table 1.</strong> Available adb commands</p>
-<table>
-<tr>
-  <th>Category</th>
-  <th>Command</th>
-  <th>Description</th>
-  <th>Comments</th>
-</tr>
-
-<tr>
-<td rowspan="3">Target Device</td>
-<td><code>-d</code></td>
-<td>Direct an adb command to the only attached USB device.</td>
-<td>Returns an error if more than one USB device is attached.</td>
-</tr>
-
-<tr>
-<td><code>-e</code></td>
-<td>Direct an adb command to the only running emulator instance.</td>
-<td>Returns an error if more than one emulator instance is running. </td>
-</tr>
-
-<tr>
-<td><code>-s&nbsp;&lt;serialNumber&gt;</code></td>
-<td>Direct an adb command a specific emulator/device instance, referred to by its adb-assigned serial number (such as "emulator-5556").</td>
-<td>See <a href="#directingcommands">Directing
-Commands to a Specific Emulator/Device Instance</a>.</td>
-</tr>
-
-<tr>
-<td rowspan="3">General</td>
-<td><code>devices</code></td>
-<td>Prints a list of all attached emulator/device instances.</td>
-<td>See <a href="#devicestatus">Querying for Emulator/Device Instances</a> for more information.</td>
-</tr>
-
-<tr>
-<td><code>help</code></td>
-<td>Prints a list of supported adb commands.</td>
-<td>&nbsp;</td>
-</tr>
-
-<tr>
-<td><code>version</code></td>
-<td>Prints the adb version number. </td>
-<td>&nbsp;</td>
-</tr>
-
-<tr>
-<td rowspan="3">Debug</td>
-<td ><code>logcat&nbsp;[option] [filter-specs]</code></td>
-<td>Prints log data to the screen. </td>
-<td>&nbsp;</td>
-</tr>
-
-<tr>
-<td><code>bugreport</code></td>
-<td>Prints <code>dumpsys</code>, <code>dumpstate</code>, and <code>logcat</code> data to the screen, for the purposes of bug reporting. </td>
-<td>&nbsp;</td>
-</tr>
-
-<tr>
-<td><code>jdwp</code></td>
-<td>Prints a list of available JDWP processes on a given device. </td>
-<td>You can use the <code>forward jdwp:&lt;pid&gt;</code> port-forwarding specification to connect to a specific JDWP process. For example: <br>
-    <code>adb forward tcp:8000 jdwp:472</code><br>
-    <code>jdb -attach localhost:8000</code></p>
- </td>
-</tr>
-
-<tr>
-<td rowspan=3">Data</td>
-<td><code>install&nbsp;&lt;path-to-apk&gt;</code></td>
-<td>Pushes an Android application (specified as a full path to an .apk file) to an emulator/device. </td>
-<td>&nbsp;</td>
-</tr>
-
-<tr>
-<td><code>pull&nbsp;&lt;remote&gt;&nbsp;&lt;local&gt;</code></td>
-<td>Copies a specified file from an emulator/device instance to your development computer. </td>
-<td>&nbsp;</td>
-</tr>
-
-<tr>
-<td><code>push&nbsp;&lt;local&gt;&nbsp;&lt;remote&gt;</code></td>
-<td>Copies a specified file from your development computer to an emulator/device instance. </td>
-<td>&nbsp;</td>
-</tr>
-
-<tr>
-<td rowspan="2">Ports and Networking</td>
-<td><code>forward&nbsp;&lt;local&gt;&nbsp;&lt;remote&gt;</code></td>
-<td>Forwards socket connections from a specified local port to a specified remote port on the emulator/device instance. </td>
-<td>Port specifications can use these schemes:
-<ul><li><code>tcp:&lt;portnum&gt;</code></li>
-<li><code>local:&lt;UNIX domain socket name&gt;</code></li>
-<li><code>dev:&lt;character device name&gt;</code></li>
-<li><code>jdwp:&lt;pid&gt;</code></li></ul>
-</td>
-</tr>
-
-<tr>
-<td><code>ppp&nbsp;&lt;tty&gt;&nbsp;[parm]...</code></td>
-<td>Run PPP over USB.
-<ul>
-<li><code>&lt;tty&gt;</code> &mdash; the tty for PPP stream. For example <code>dev:/dev/omap_csmi_ttyl</code>. </li>
-<li><code>[parm]... </code> &mdash; zero or more PPP/PPPD options, such as <code>defaultroute</code>, <code>local</code>, <code>notty</code>, etc.</li></ul>
-
-<p>Note that you should not automatically start a PPP connection. </p></td>
-<td></td>
-</tr>
-
-<tr>
-<td rowspan="3">Scripting</td>
-<td><code>get-serialno</code></td>
-<td>Prints the adb instance serial number string.</td>
-<td rowspan="2">See <a href="#devicestatus">Querying for Emulator/Device Instances</a> for more information. </td>
-</tr>
-
-<tr>
-<td><code>get-state</code></td>
-<td>Prints the adb state of an emulator/device instance.</td>
-</td>
-</tr>
-
-<tr>
-<td><code>wait-for-device</code></td>
-<td>Blocks execution until the device is online &mdash; that is, until the instance state is <code>device</code>.</td>
-<td>You can prepend this command to other adb commands, in which case adb will wait until the emulator/device instance is connected before issuing the other commands. Here's an example:
-<pre class="no-pretty-print">adb wait-for-device shell getprop</pre>
-
-Note that this command does <em>not</em> cause adb to wait until the entire system is fully booted. For that reason, you should not prepend it to other commands that require a fully booted system. As an example, the <code>install</code> requires the Android package manager, which is available only after the system is fully booted. A command such as
-
-<pre class="no-pretty-print">adb wait-for-device install &lt;app&gt;.apk</pre>
-
-would issue the <code>install</code> command as soon as the emulator or device instance connected to the adb server, but before the Android system was fully booted, so it would result in an error. </td>
-</tr>
-
-
-
-<tr>
-<td rowspan="2">Server</td>
-<td><code>start-server</code></td>
-<td>Checks whether the adb server process is running and starts it, if not.</td>
-<td>&nbsp;</td>
-</tr>
-
-<tr>
-<td><code>kill-server</code></td>
-<td>Terminates the adb server process.</td>
-<td>&nbsp;</td>
-</tr>
-
-
-
-<tr>
-<td rowspan="2">Shell</td>
-<td><code>shell</code></td>
-<td>Starts a remote shell in the target emulator/device instance.</td>
-<td rowspan="2">See <a href="{@docRoot}tools/help/shell.html#shellcommands">ADB Shell Commands</a> for more information. </td>
-</tr>
-
-<tr>
-<td><code>shell&nbsp;[shellCommand]</code></td>
-<td>Issues a shell command in the target emulator/device instance and then exits the remote shell.</td>
-</tr>
-
-</table>
-
-
-
-
-
-
-
-
-
-
-<h2 id="devicestatus">Querying for Emulator/Device Instances</h2>
-
-<p>Before issuing adb commands, it is helpful to know what emulator/device instances are connected to the adb server. You can generate a list of attached emulators/devices using the <code>devices</code> command: </p>
-
-  <pre class="no-pretty-print">adb devices</pre>
-
-<p>In response, adb prints this status information for each instance:</p>
-
-<ul>
-  <li>Serial number &mdash; A string created by adb to uniquely identify an emulator/device instance by its
-    console port number. The format of the serial number is <code>&lt;type&gt;-&lt;consolePort&gt;</code>.
-    Here's an example serial number: <code>emulator-5554</code></li>
-  <li>State &mdash; The connection state of the instance may be one of the following:
-    <ul>
-      <li><code>offline</code> &mdash; the instance is not connected to adb or is not responding.</li>
-      <li><code>device</code> &mdash; the instance is now connected to the adb server. Note that this state does not
-        imply that the Android system is fully booted and operational, since the instance connects to adb
-        while the system is still booting. However, after boot-up, this is the normal operational state of
-        an emulator/device instance.</li>
-      <li><code>no device</code> &mdash; there is no emulator/device connected.
-    </ul>
-  </li>
-</ul>
-
-<p>The output for each instance is formatted like this: </p>
-
-  <pre class="no-pretty-print">[serialNumber] [state]</pre>
-
-<p>Here's an example showing the <code>devices</code> command and its output:</p>
-
-  <pre class="no-pretty-print">adb devices
-List of devices attached
-emulator-5554&nbsp;&nbsp;device
-emulator-5556&nbsp;&nbsp;device
-emulator-5558&nbsp;&nbsp;device</pre>
-
-
-
-
-
-
-<h2 id="directingcommands">Directing Commands to a Specific Emulator/Device Instance</h2>
-
-<p>If multiple emulator/device instances are running, you must specify a target instance
-when issuing adb commands. To do so, use the <code>-s</code> option in the commands. The usage
-for the <code>-s</code> option is:</p>
-
-<pre class="no-pretty-print">adb -s &lt;serialNumber&gt; &lt;command&gt; </pre>
-
-<p>As shown, you specify the target instance for a command using its adb-assigned serial number.
-You can use the <code>devices</code> command to obtain the serial numbers of running
-emulator/device instances. For example: </p>
-
-<pre class="no-pretty-print">adb -s emulator-5556 install helloWorld.apk</pre>
-
-<p>Note that, if you issue a command without specifying a target emulator/device instance
-while multiple devices are available, adb generates an error.
-
-<p>If you have multiple devices available (hardware or emulated), but only one is an emulator,
-simply use the {@code -e} option to send commands to the emulator. Likewise if there's multiple
-devices but only one hardware device attached, use the {@code -d} option to send commands to
-the hardware device.
-
-
-
-
-<h2 id="move">Installing an Application</h2>
-<p>You can use adb to copy an application from your development computer and install it on an emulator/device instance. To do so, use the <code>install</code> command. With the command, you must specify the path to the .apk file that you want to install:</p>
-
-<pre class="no-pretty-print">adb install &lt;path_to_apk&gt;</pre>
-
-<p>For more information about how to create an .apk file that you can install on an emulator/device
-instance, see <a href="{@docRoot}tools/building/index.html">Building and Running</a></p>
-
-<p>Note that, if you are using Android Studio, you do not need to use adb (or aapt) directly to install your application on the emulator/device. Instead, Android Studio handles the packaging and installation of the application for you. </p>
-
-
-
-
-
-
-<h2 id="forwardports">Forwarding Ports</h2>
-
-    <p>You can use the <code>forward</code> command to set up arbitrary port forwarding &mdash; forwarding of requests on a specific host port to a different port on an emulator/device instance. Here's how you would set up forwarding of host port 6100 to emulator/device port 7100:</p>
-<pre class="no-pretty-print">adb forward tcp:6100 tcp:7100</pre>
-    <p>You can also use adb to set up forwarding to named abstract UNIX domain sockets, as illustrated here:</p>
-<pre class="no-pretty-print">adb forward tcp:6100 local:logd </pre>
-
-
-
-
-
-<h2 id="copyfiles">Copying Files to or from an Emulator/Device Instance</h2>
-
-<p>You can use the adb commands <code>pull</code> and <code>push</code> to copy files to
-and from an emulator/device instance. Unlike the <code>install</code> command,
-which only copies an APK file to a specific location, the <code>pull</code> and <code>push</code>
-commands let you copy arbitrary directories and files to any location in an
-emulator/device instance. </p>
-
-<p>To copy a file or directory (and its sub-directories) <em>from</em> the emulator or device, use</p>
-<pre class="no-pretty-print">adb pull &lt;remote&gt; &lt;local&gt;</pre>
-
-<p>To copy a file or directory (and its sub-directories) <em>to</em> the emulator or device, use</p>
-    <pre class="no-pretty-print">adb push &lt;local&gt; &lt;remote&gt;</pre>
-
-<p>In the commands, <code>&lt;local&gt;</code> and <code>&lt;remote&gt;</code> refer to the
-paths to the target files/directory on your development machine (local) and on the
-emulator/device instance (remote). For example: </p>
-<pre class="no-pretty-print">adb push foo.txt /sdcard/foo.txt</pre>
-
-
-
-
-<h2 id="stopping">Stopping the adb Server</h2>
-
-<p>In some cases, you might need to terminate the adb server process and then restart it
-to resolve the problem (e.g., if adb does not respond to a command).</p>
-
-<p>To stop the adb server, use the <code>kill-server</code> command.
-You can then restart the server by issuing any other adb command. </p>
-
-
-<h2 id="wireless">Wireless usage</h2>
-
-<p>
-adb is usually used over USB.  However, it is also possible to use over
-Wi-Fi, as described here.
-</p>
-
-<ol>
-
-<li>
-<p>Connect your Android device and adb host computer
-to a common Wi-Fi network accessible to both.
-We have found that not all access points
-are suitable; you may need to use an access point
-whose firewall is configured properly to support adb.</p>
-
-<p class="note"><strong>Note: </strong>If you are attempting to connect
-to a Wear device, force it to connect to Wi-Fi by shutting off Bluetooth
-on the phone connected to it.</p>
-</li>
-
-<li>
-Connect the device to the host computer with a USB cable.
-</li>
-
-<li>
-Set the target device to listen for a TCP/IP connection on port 5555.
-<pre class="no-pretty-print">
-$ adb tcpip 5555
-</pre>
-</li>
-
-<li>
-Disconnect the USB cable from the target device.
-</li>
-
-<li>
-Find the IP address of the Android device. For example, on a Nexus device, you can find
-the IP address at <strong>Settings</strong> &gt; <strong>About tablet</strong>
-(or <strong>About phone</strong>) &gt; <strong>Status</strong> &gt; <strong>IP address</strong>. Or,
-on an Android Wear device, you can find the IP address at <strong>Settings</strong> &gt;
-<strong>Wi-Fi Settings</strong> &gt; <strong>Advanced</strong> &gt; <strong>IP address</strong>.
-</li>
-
-<li>
-Connect to the device, identifying it by IP address.
-<pre class="no-pretty-print">
-$ adb connect &lt;device-ip-address&gt;
-</pre>
-</li>
-
-
-<li>
-Confirm that your host computer is connected to the target device:
-<pre class="no-pretty-print">
-$ adb devices
-List of devices attached
-&lt;device-ip-address&gt;:5555 device
-</pre>
-
-</ol>
-
-<p>
-You're now good to go!
-</p>
-
-<p>
-If the adb connection is ever lost:
-</p>
-
-<ol>
-
-<li>
-Make sure that your host is still connected to the same Wi-Fi network your Android device is.
-</li>
-
-<li>
-Reconnect by executing the "adb connect" step again.
-</li>
-
-<li>
-Or if that doesn't work, reset your adb host:
-<pre class="no-pretty-print">
-adb kill-server
-</pre>
-and then start over from the beginning.
-</li>
-
-</ol>
diff --git a/docs/html/tools/help/adt.jd b/docs/html/tools/help/adt.jd
deleted file mode 100644
index 7d29d02..0000000
--- a/docs/html/tools/help/adt.jd
+++ /dev/null
@@ -1,24 +0,0 @@
-page.title=Android Developer Tools
-page.tags=adt
-@jd:body
-
-<p class="caution">
-  <strong>Important:</strong> Support for the Android Developer Tools (ADT) in Eclipse has ended,
-  per our <a href=
-  "http://android-developers.blogspot.com/2015/06/an-update-on-eclipse-android-developer.html"
-  class="external-link">announcement</a>. You should migrate your app development projects to
-  Android Studio as soon as possible. For more information on transitioning to Android Studio, see
-  <a href="{@docRoot}sdk/installing/migrate.html">Migrating from Eclipse ADT</a>.
-</p>
-
-  <p>Formerly the official IDE solution for Android development, Android Developer Tools (ADT)
-  is a plugin for Eclipse that provides GUI-based access to many of the command-line SDK tools,
-  along with a UI design tool for rapid prototyping, designing, and building of your app's
-  user interface.</p>
-
-  <p>As with ADT, support for the <a href="http://ant.apache.org/"
-  class="external-link">Ant</a>
-  tool for building from the command line has ended.
-  <a href="{@docRoot}tools/building/plugin-for-gradle.html">Gradle</a> is now the supported method
-  of building Android apps.
-  </p>
diff --git a/docs/html/tools/help/am-cpu.jd b/docs/html/tools/help/am-cpu.jd
deleted file mode 100644
index 62b3590..0000000
--- a/docs/html/tools/help/am-cpu.jd
+++ /dev/null
@@ -1,325 +0,0 @@
-page.title=CPU Monitor
-parent.title=Android Monitor
-parent.link=android-monitor.html
-page.tags=monitor
-@jd:body
-
-<div id="qv-wrapper">
-<div id="qv">
-  <h2>In this document</h2>
-<ol>
-  <li><a href="#running">Displaying a Running App in the CPU Monitor</a></li>
-  <li><a href="#trace">Performing a Method Trace in the CPU Monitor</a></li>
-  <li><a href="#viewtrace">Viewing a Saved Method Trace</a></li>
-  <li><a href="#sorttrace">Sorting Method Trace Data</a></li>
-  <li><a href="#renametrace">Renaming a Method Trace File</a></li>
-  <li><a href="#locatetrace">Locating a Method Trace File on Disk</a></li>
-  <li><a href="#deletetrace">Deleting a Method Trace File</a></li>
-</ol>
-
- <h2>See also</h2>
-  <ol>
-    <li>
-        <a href="{@docRoot}tools/help/android-monitor.html">Android Monitor</a>
-      </li>
-    <li><a href="{@docRoot}tools/help/am-logcat.html">logcat Monitor</a>
-      </li>
-
-      <li><a href="{@docRoot}tools/help/am-memory.html">Memory Monitor</a>
-      </li>
-
-      <li><a href="{@docRoot}tools/help/am-gpu.html">GPU Monitor</a>
-      </li>
-
-      <li>
-        <a href="{@docRoot}tools/help/am-network.html">Network Monitor</a>
-      </li>
-  </ol>
-
-
-<h2>
-  Dependencies and Prerequisites
-</h2>
-
-<ul>
-  <li>Make sure your development computer detects your hardware device, which often happens
-  automatically when you connect it to a USB port.
-  </li>
-
-  <li>
-    <a href="{@docRoot}tools/device.html#device-developer-options">Enable</a> <strong><a href=
-    "{@docRoot}tools/device.html#device-developer-options">USB debugging</a></strong> in
-    <strong>Developer Options</strong> on the device or emulator.
-  </li>
-
-  <li>In your app, set the <code>debuggable</code> property to <code>true</code> in the manifest or
-  <code>build.gradle</code> file (it’s initially set by default).
-  </li>
-
-<li>Enable ADB integration through <strong>Tools</strong> &gt; <strong>Android</strong> &gt;
-  <strong>Enable ADB Integration</strong>.
-  </li>
-
-  <li>
-    <a href="{@docRoot}tools/help/monitor.html">Android Device Monitor</a> can’t be running.
-  </li>
-
-</ul>
-
-</div>
-</div>
-
-
-<p>
-  The CPU Monitor lets you easily monitor the central processing unit (CPU) usage of your app. It
-  displays CPU usage in real time and displays the percentage of total CPU time (including all cores)
-  used by user and kernel mode. In user mode, the code must use system APIs to access hardware or
-  memory, and crashes are usually recoverable. In kernel mode, the code can directly access
-  hardware, including memory addresses; crashes halt the device.
-</p>
-
-<h2 id="running">
-  Displaying a Running App in the CPU Monitor
-</h2>
-
-<p>
-  Follow these steps:
-</p>
-
-<ol>
-  <li>Optionally connect a hardware device.
-  </li>
-
-  <li>
-    <a href="{@docRoot}tools/help/android-monitor.html#displaying">Display Android Monitor</a>.
-  </li>
-
-  <li>Click the <strong>CPU</strong> tab.
-  </li>
-
-  <li>Open an app project and <a href=
-  "{@docRoot}tools/building/building-studio.html#RunningApp">run it</a> on a hardware device or
-  emulator.
-  </li>
-
-  <li>Enable the CPU Monitor by clicking Pause <img src="{@docRoot}images/tools/am-ipause.png"
-    style="vertical-align:sub;margin:0;height:17px" alt="Pause icon" /> to deselect
-  it.
-  </li>
-
-<p>
-  The CPU Monitor starts to display any CPU usage.
-  In the graph, the y-axis displays the percentage of CPU used. The x-axis records the time elapsed
-  and starts with seconds, and then minutes and seconds, and so on.
-</p>
-<img src="{@docRoot}images/tools/am-cpumon.png" style="vertical-align:sub;margin:0;width:450px" />
-  <li>To stop the CPU Monitor, click Pause <img src="{@docRoot}images/tools/am-ipause.png"
-    style="vertical-align:sub;margin:0;height:17px" alt="Pause icon" /> again to select
-  it.
-  </li>
-</ol>
-
-
-<h2 id="trace">
-  Performing a Method Trace in the CPU Monitor
-</h2>
-
-<p>
-  Follow these steps:
-</p>
-
-<ol>
-  <li>
-    <a href="{@docRoot}tools/help/android-monitor.html#displaying">Display a running app in the CPU
-    Monitor</a>.
-  </li>
-
-  <li>Start a trace by clicking Start Method Tracing <img src="{@docRoot}images/tools/am-imethodtrace.png"
-    style="vertical-align:sub;margin:0;height:17px" alt="Start Method Tracing icon" /> to
-  select it.
-  </li>
-
-  <li>To stop the trace, click Stop Method Tracing <img src="{@docRoot}images/tools/am-imethodtrace.png"
-    style="vertical-align:sub;margin:0;height:17px" alt="Stop Method Tracing icon" /> to
-  deselect it.
-  </li>
-
-<p>
-  The method trace appears in the Code Editor area:
-</p>
-<img src="{@docRoot}images/tools/am-methodtrace.png" alt="Method Trace" />
-<p>
-  Android Studio creates the method trace file
-  with the filename <code>Trace_<em>yyyy.mm.dd_hh.mm.ss</em>.trace</code>
-  using the year, month, day, hour, minute, and second of the capture, for example,
-  <code>Trace_2015.11.17_14.58.48.trace</code>.
-</p>
-  <li>Specify display options:
-    <ul>
-      <li>Select a <strong>Thread</strong>.
-      </li>
-
-      <li>Select an <strong>x-axis</strong> time for the graphic and the method list:
-      </li>
-
-        <ul>
-          <li>
-            <strong>Wall Clock Time</strong> - Total CPU time elapsed between the method call and
-            return.
-          </li>
-
-          <li>
-            <strong>Thread Time</strong> - Total time during which the JRE scheduled the
-            thread during call processing. It’s less than or equal to the Wall Clock Time: less if
-            the JRE interrupted the thread, and equal if it didn’t.
-            The thread might not run continuously; when it’s not executing, that time is excluded.
-            If threads are interrupted often and it’s not by design, the interruptions affect app
-            performance. However, an example of a by-design use is synchronous operations that take
-            a long time, such as file transfers and reads from disk, where the method could be the
-            asynchronous wrapper for the synchronous reader.
-          </li>
-       </ul>
-
-        <li>
-          Optionally select <strong>Color by inclusive time</strong>.
-        </li>
-        </ul>
-
-        <p>
-          The display shows the following information:
-        </p>
-<table>
-  <tr>
-    <th scope="col">Field</th>
-    <th scope="col">Description</th>
-  </tr>
-
-  <tr>
-    <td><strong>Name</strong></td>
-    <td>The name of the method.</td>
-  </tr>
-
-  <tr>
-    <td><strong>Invocation Count</strong></td>
-    <td>How many times the method was called.</td>
-  </tr>
-
-  <tr>
-    <td><strong>Inclusive Time (microseconds)</strong></td>
-    <td>Time spent in the method and all of its children, either wall clock or thread time,
-          depending on your selection in the <strong>x-axis</strong> menu.</td>
-  </tr>
-
-  <tr>
-    <td><strong>Exclusive Time (microseconds)</strong></td>
-    <td>Time spent just in the method (excluding time spent in its children), either wall clock
-          or thread time, depending on your selection in the <strong>x-axis</strong> menu.</td>
-  </tr>
-</table>
-<p class="note"><strong>Note:</strong> Running the method trace significantly affects CPU timings.
-  Use the method trace to understand the flow of the program, but not for performance timings.</p>
-        <p>
-          The graphic represents the wall clock or thread time for each method. Hover the cursor
-          over the display to receive information about the method. This information also appears
-          in the table.
-        </p>
-</ol>
-        <h2 id="viewtrace">
-          Viewing a Saved Method Trace
-        </h2>
-
-        <p>
-          After you do a method trace, Android Studio automatically stores it so you can view it
-          again. To examine the trace, follow these steps:
-        </p>
-
-        <ol>
-          <li>Click <strong>Captures</strong> in the main window.
-          </li>
-
-        <p>
-          The <em>Captures</em> window appears.
-        </p>
-
-      <li>Open the <strong>Methods Tracing</strong> folder.
-      </li>
-
-      <li>Double-click the file to view it.
-      </li>
-</ol>
-
-<h2 id="sorttrace">
-  Sorting Method Trace Data
-</h2>
-
-<p>
-  You can sort the data by method name, count, inclusive time, and exclusive time. Follow this step:
-</p>
-
-
-<ul>
-  <li>Click a column heading to sort the table by ascending or descending order.
-  </li>
-</ul>
-
-<h2 id="renametrace">
-  Renaming a Method Trace File
-</h2>
-
-<p>
-  Rename a method trace file from within Android Studio so it
-  continues to appear in the <em>Captures</em> window. Follow these steps:
-</p>
-
-<ol>
-  <li>In the <em>Captures</em> window, right-click the file and select <strong>Rename</strong>.
-  </li>
-
-  <li>In the dialog, specify the name of the file and click <strong>OK</strong>.
-  </li>
-</ol>
-
-<h2 id="locatetrace">
-  Locating a Method Trace File on Disk
-</h2>
-
-<p>
-  You can quickly discover where Android Studio stored method trace files on disk. Follow this step:
-</p>
-
-
-
-<ul>
-  <li>In the <em>Captures</em> window, right-click a method trace file and select <strong>Show in
-  files</strong>.
-  </li>
-
-<p>
-  Android Studio opens an operating system file browser displaying the location where the file
-  resides.
-</p>
-</ul>
-<p class="note">
-  <strong>Note:</strong> If you move a method trace file, Android Studio no longer displays the file
-  in the <em>Captures</em> window. To display it, use <strong>File</strong> &gt;
-  <strong>Open</strong>. Also, rename a file from the <em>Captures</em>
-  window and not in the operating system file browser.
-</p>
-
-<h2 id="deletetrace">
-  Deleting a Method Trace File
-</h2>
-
-<p>
-  Follow this step in Android Studio:
-</p>
-
-<ul>
-  <li>In the <em>Captures</em> window, right-click a method trace file and select
-  <strong>Delete</strong>.
-  </li>
-</ul>
-
-<p>
-  Android Studio deletes the file from the <em>Captures</em> dialog and from disk.
-</p>
\ No newline at end of file
diff --git a/docs/html/tools/help/am-gpu.jd b/docs/html/tools/help/am-gpu.jd
deleted file mode 100644
index a244b22..0000000
--- a/docs/html/tools/help/am-gpu.jd
+++ /dev/null
@@ -1,136 +0,0 @@
-page.title=GPU Monitor
-parent.title=Android Monitor
-parent.link=android-monitor.html
-page.tags=monitor
-@jd:body
-
-<div id="qv-wrapper">
-<div id="qv">
-  <h2>In this document</h2>
-<ol>
-  <li><a href="#running">Displaying a Running App in the GPU Monitor</a></li>
-</ol>
-
- <h2>See also</h2>
-  <ol>
-    <li>
-        <a href="{@docRoot}tools/help/android-monitor.html">Android Monitor</a>
-      </li>
-    <li><a href="{@docRoot}tools/help/am-logcat.html">logcat Monitor</a>
-      </li>
-
-      <li><a href="{@docRoot}tools/help/am-memory.html">Memory Monitor</a>
-      </li>
-
-      <li><a href="{@docRoot}tools/help/am-cpu.html">CPU Monitor</a>
-      </li>
-
-      <li>
-        <a href="{@docRoot}tools/help/am-network.html">Network Monitor</a>
-      </li>
-  </ol>
-
-<h2>
-  Dependencies and Prerequisites
-</h2>
-
-<ul>
-  <li>Make sure your development computer detects your hardware device, which often happens
-  automatically when you connect it to a USB port.
-  </li>
-
-  <li>
-    <a href="{@docRoot}tools/device.html#device-developer-options">Enable</a> <strong><a href=
-    "{@docRoot}tools/device.html#device-developer-options">USB debugging</a></strong> in
-    <strong>Developer Options</strong> on the device or emulator.
-  </li>
-
-  <li>For Android 5.0 (API level 21) and Android 5.1 (API level 22), in <strong>Developer
-  Options</strong> on the device or emulator, set <strong>Profile GPU rendering</strong> to
-  <strong>In adb shell dumpsys gfxinfo</strong>.
-  </li>
-
-  <li>In your app, set the <code>debuggable</code> property to <code>true</code> in the manifest or
-  <code>build.gradle</code> file (it’s initially set by default).
-  </li>
-
-
-  <li>Enable ADB integration through <strong>Tools</strong> &gt; <strong>Android</strong> &gt;
-  <strong>Enable ADB Integration</strong>.
-  </li>
-
-   <li>
-    <a href="{@docRoot}tools/help/monitor.html">Android Device Monitor</a> can’t be running.
-  </li>
-</ul>
-
-</div>
-</div>
-
-<p>
-  The GPU Monitor gives you a quick visual representation of how much time it takes to render the
-  frames of a UI window. It profiles the amount of time it takes for the render thread to prepare,
-  process, and execute the draw commands. The GPU Monitor can help you to:
-</p>
-
-<ul>
-  <li>Quickly see how a UI window performs.
-  </li>
-
-  <li>Identify whether any part of the rendering pipeline stands out in using processing time.
-  </li>
-
-  <li>Look for spikes in frame rendering time associated with user or program actions.
-  </li>
-</ul>
-
-<p>
-  For example, if displaying a static photo continues to take Graphics Processor Unit
-  (GPU) resources long after it has finished
-  drawing on the screen, that’s a likely candidate for optimization.
-</p>
-
-
-<h2 id="running">
-  Displaying a Running App in the GPU Monitor
-</h2>
-
-<p>
-  Follow these steps:
-</p>
-
-<ol>
-  <li>Optionally connect a hardware device.
-  </li>
-
-  <li>
-    <a href="{@docRoot}tools/help/android-monitor.html#displaying">Display Android Monitor</a>.
-  </li>
-
-  <li>Click the <strong>GPU</strong> tab.
-  </li>
-
-  <li>Open an app project and <a href=
-  "{@docRoot}tools/building/building-studio.html#RunningApp">run it</a> on a hardware device or
-  emulator.
-  </li>
-
-  <li>Enable the GPU Monitor by clicking Pause <img src="{@docRoot}images/tools/am-ipause.png" style="vertical-align:sub;margin:0;height:17px" alt="Pause icon" /> to deselect
-  it.
-  </li>
-
-  <p>
-  Any GPU usage begins to appear in the GPU Monitor:
-</p>
-  <img src="{@docRoot}images/tools/am-gpumon.png" style="vertical-align:sub;margin:0;width:450px" />
-
-<p>
-  The y-axis is the amount of time it takes the GPU to execute, process, prepare, and draw frames,
-  in milliseconds. The x-axis records the time elapsed; it starts with seconds, and then minutes
-  and seconds, and so on.
-</p>
-
-  <li>To stop the GPU Monitor, click Pause <img src="{@docRoot}images/tools/am-ipause.png" style="vertical-align:sub;margin:0;height:17px" alt="Pause icon" /> again to select
-  it.
-  </li>
-</ol>
diff --git a/docs/html/tools/help/am-logcat.jd b/docs/html/tools/help/am-logcat.jd
deleted file mode 100644
index 57da848..0000000
--- a/docs/html/tools/help/am-logcat.jd
+++ /dev/null
@@ -1,521 +0,0 @@
-page.title=logcat Monitor
-parent.title=Android Monitor
-parent.link=android-monitor.html
-page.tags=monitor
-@jd:body
-<div id="qv-wrapper">
-  <div id="qv">
-    <h2>
-      In this document
-    </h2>
-
-    <ol>
-      <li>
-        <a href="#format">logcat Message Format</a>
-      </li>
-
-      <li>
-        <a href="#running">Displaying a Running App in the logcat Monitor</a>
-      </li>
-
-      <li>
-        <a href="#level">Setting the Log Level</a>
-      </li>
-
-      <li>
-        <a href="#searching">Searching logcat Messages</a>
-      </li>
-
-      <li>
-        <a href="#filtering">Filtering logcat Messages</a>
-      </li>
-
-      <li>
-        <a href="#logheader">Configuring the logcat Header Display</a>
-      </li>
-
-      <li>
-        <a href="#stack">Moving Up and Down the Stack Trace</a>
-      </li>
-
-      <li>
-        <a href="#logend">Moving to the End of the Log</a>
-      </li>
-
-      <li>
-        <a href="#printing">Printing the Log</a>
-      </li>
-
-      <li>
-        <a href="#clearing">Clearing the Log</a>
-      </li>
-
-      <li>
-        <a href="#restarting">Restarting the Log</a>
-      </li>
-    </ol>
-
-    <h2>
-      See also
-    </h2>
-
-    <ol>
-      <li>
-        <a href="{@docRoot}tools/debugging/debugging-log.html">Reading and Writing Logs</a>
-      </li>
-      <li>
-        <a href="{@docRoot}tools/help/android-monitor.html">Android Monitor</a>
-      </li>
-
-      <li><a href="{@docRoot}tools/help/am-memory.html">Memory Monitor</a>
-      </li>
-
-      <li><a href="{@docRoot}tools/help/am-cpu.html">CPU Monitor</a>
-      </li>
-
-      <li><a href="{@docRoot}tools/help/am-gpu.html">GPU Monitor</a>
-      </li>
-
-      <li>
-        <a href="{@docRoot}tools/help/am-network.html">Network Monitor</a>
-      </li>
-    </ol>
-
-    <h2>
-      Dependencies and Prerequisites
-    </h2>
-
-    <ul>
-      <li>Enable ADB integration through <strong>Tools</strong> &gt; <strong>Android</strong> &gt;
-      <strong>Enable ADB Integration</strong>.
-      </li>
-  <li>
-    <a href="{@docRoot}tools/help/monitor.html">Android Device Monitor</a> can’t be running.
-  </li>
-    </ul>
-  </div>
-</div>
-
-<p>
-  The Android logging system provides a mechanism for collecting and viewing system debug output.
-  logcat Monitor displays messages that you added to your app by using the <a href=
-  "{@docRoot}reference/android/util/Log.html">Log</a> class, as well as system
-  messages, such as stack traces when the emulator throws an error or a garbage collection occurs.
-  The monitor displays messages in real time and also keeps a history so you can view older
-  messages.
-</p>
-
-<p>
-  To display just the information of interest, you can create filters, modify how much information
-  is displayed in messages, set priority levels, display messages produced by app code
-  only, and search the log. By default, logcat Monitor shows the log output related to the running
-  application only.
-</p>
-
-<p>
-  You can traverse the stack trace when your app throws an exception, as well as view the
-  associated code. This feature can help you fix exceptions and improve app operation.
-</p>
-
-<h2 id="format">
-  logcat Message Format
-</h2>
-
-<p>
-  Every Android log message has a tag and a priority associated with it. The tag of a system
-  log message
-  is a short string indicating the system component from which the message originates (for example,
-  <code>ActivityManager</code>). A user-defined tag can be any string that you find helpful, such
-  as the name of the current class (the recommended tag). You define it in a <code>Log</code>
-  method call, for example:
-</p>
-
-<pre>
-Log.d(tag, message);
-</pre>
-<p>
-  The priority is one of the following values:
-</p>
-
-<ul>
-  <li>
-    <strong>V</strong> — Verbose (lowest priority)
-  </li>
-
-  <li>
-    <strong>D</strong> — Debug
-  </li>
-
-  <li>
-    <strong>I</strong> — Info
-  </li>
-
-  <li>
-    <strong>W</strong> — Warning
-  </li>
-
-  <li>
-    <strong>E</strong> — Error
-  </li>
-
-  <li>
-    <strong>A</strong> — Assert
-  </li>
-</ul>
-
-<p>
-  The log message format is:
-</p>
-
-<pre class="no-pretty-print">
-<em>date time PID-TID/package priority/tag: message</em>
-</pre>
-
-<p>
-  For example, the following log message has a priority of <code>V</code> and a tag of
-  <code>AuthZen</code>:
-</p>
-
-<pre class="no-pretty-print">
-12-10 13:02:50.071 1901-4229/com.google.android.gms V/AuthZen: Handling delegate intent.
-</pre>
-<p>
-  PID stands for process identifier and TID is thread identifier; they can be the same if there’s
-  only one thread.
-</p>
-
-<h2 id="running">
-  Displaying a Running App in the logcat Monitor
-</h2>
-
-<p>
-  Follow these steps:
-</p>
-
-<ol>
-  <li>Optionally connect a hardware device.
-  </li>
-
-  <li>
-    <a href="{@docRoot}tools/help/android-monitor.html#displaying">Display Android Monitor</a>.
-  </li>
-
-  <li>Click the <strong>logcat</strong> tab.
-  </li>
-
-  <li>Open an app project and <a href=
-  "{@docRoot}tools/building/building-studio.html#RunningApp">run it</a> on a hardware device or
-  emulator.
-  </li>
-<p>
-  By default, the logcat Monitor displays messages for the app running on the device or emulator:
-</p>
-<img src="{@docRoot}images/tools/am-logcatmon.png" />
-<p>
-  To change this default, see <a href="#filtering">Filtering logcat Messages</a>.
-</p>
-</ol>
-
-<h2 id="level">
-  Setting the Log Level
-</h2>
-
-<p>
-  You can control how many messages appear in logcat Monitor by setting the log level. You can
-  display all messages, or just the messages indicating the most severe conditions.
-</p>
-
-<p>
-  Remember that logcat Monitor continues to collect all messages regardless of the log level setting.
-  The setting just determines what logcat Monitor displays.
-</p>
-
-<p>
-  Follow this step:
-</p>
-
-<ul>
-  <li>In the <strong>Log level</strong> menu, select one of the following values:
-  </li>
-
-    <ul>
-      <li>
-        <strong>Verbose</strong> - Show all log messages (the default).
-      </li>
-
-      <li>
-        <strong>Debug</strong> - Show debug log messages that are useful during development only,
-        as well as the message levels lower in this list.
-      </li>
-
-      <li>
-        <strong>Info</strong> - Show expected log messages for regular usage, as well as the
-        message levels lower in this list.
-      </li>
-
-      <li>
-        <strong>Warn</strong> - Show possible issues that are not yet errors, as well as the
-        message levels lower in this list.
-      </li>
-
-      <li>
-        <strong>Error</strong> - Show issues that have caused errors, as well as the message levels
-        lower in this list.
-      </li>
-
-      <li>
-        <strong>Assert</strong> - Show issues that the developer expects should never happen.
-      </li>
-    </ul>
-
-</ul>
-
-    <h2 id="searching">
-      Searching logcat Messages
-    </h2>
-
-    <p>
-      You can search the messages currently displayed in logcat Monitor. Follow these steps:
-    </p>
-
-    <ol>
-      <li>Optionally select <strong>Regex</strong> if you want to use a regular expression
-      search pattern.
-      </li>
-
-      <li>Type a character sequence in the search field <img src="{@docRoot}images/tools/am-isearch.png"
-        style="vertical-align:sub;margin:0;height:17px" alt="Search icon" />.
-      </li>
-
-    <p>
-      The logcat Monitor display changes accordingly.
-    </p>
-  </li>
-
-  <li>Press <strong>Enter</strong> to store the sequence in the menu during this session.
-  </li>
-
-  <li>To repeat a search, choose it from the search menu. Select or deselect
-  <strong>Regex</strong> as needed (the setting isn’t remembered).
-  </li>
- </ol>
-
-    <h2 id="filtering">
-      Filtering logcat Messages
-    </h2>
-
-    <p>
-      One way to reduce the log output to a manageable level is to restrict it by using a filter.
-    </p>
-
-    <p class="note">
-      <strong>Note:</strong> The filter applies to your full logcat history, not just those messages
-      currently displayed in logcat Monitor. Make sure your other display options are set
-      appropriately so you can see the filter output you want to examine.
-    </p>
-
-    <p>
-      To define and apply a filter, follow these steps:
-    </p>
-
-    <ol>
-      <li>In the filter menu, select a filter option:
-        <ul>
-          <li>
-            <strong>Show only selected application</strong> - Display the messages produced by the
-            app code only.
-          </li>
-
-          <li>
-            <strong>No Filters</strong> - Apply no filters (the default).
-          </li>
-
-          <li>
-            <strong>Edit Filter Configuration</strong> - Create or modify a custom filter.
-          </li>
-        </ul>
-
-        <p>
-          After you define filters, you can also select them in the menu. To remove them from the
-          menu, delete them.
-        </p>
-
-          <li>If you selected <strong>Edit Filter Configuration</strong>, create or modify a
-          filter.
-            <ol type="a">
-              <li>Specify the filter parameters in the <em>Create New Logcat Filter</em> dialog:
-              </li>
-
-
-            <ul>
-              <li>
-                <strong>Filter Name</strong> - Type the name of a filter you want to define, or
-                select it in the left pane to modify an existing filter. The name can contain
-                lowercase characters, underscores, and digits only.
-              </li>
-
-              <li>
-                <strong>Log Tag</strong> - Optionally specify a tag. For more information, see
-                <a href="#format">logcat Message Format</a>.
-              </li>
-
-              <li>
-                <strong>Log Message</strong> - Optionally specify log message text. For more
-                information, see <a href="#format">logcat Message Format</a>.
-              </li>
-
-              <li>
-                <strong>Package Name</strong> - Optionally specify a package name. For more
-                information, see <a href="#format">logcat Message Format</a>.
-              </li>
-
-              <li>
-                <strong>PID</strong> - Optionally specify a process ID. For more information, see
-                <a href="#format">logcat Message Format</a>.
-              </li>
-
-              <li>
-                <strong>Log Level</strong> - Optionally select a log level. For more information,
-                see <a href="#level">Setting the Log Level</a>.
-              </li>
-
-              <li>
-                <strong>Regex</strong> - Select this option to use regular expression syntax for
-                that parameter.
-              </li>
-            </ul>
-
-            <li>
-              Click <strong>+</strong> to add it to the left pane.
-            </li>
-
-            <p>
-              To remove a filter, select it in the left pane and click <strong>-</strong>.
-            </p>
-
-            <li>
-              When you’re finished, click <strong>OK</strong>. If you click
-              <strong>Cancel</strong>, any filter additions or modifications are lost.
-            </li>
-            </ol>
-            </ol>
-
-            <h2 id="logheader">
-              Configuring the logcat Header Display
-            </h2>
-
-            <p>
-              You can customize the header display to show just the information you’re interested
-              in:
-            </p>
-
-            <ul>
-              <li>Select Use Soft Wraps <img src="{@docRoot}images/tools/am-isoftwraps.png"
-                style="vertical-align:sub;margin:0;height:17px" alt="Use Soft Wraps icon" />
-                to see the entire
-              message and prevent it from running off of the right edge.
-              </li>
-
-              <li>Click Configure Logcat Header <img src="{@docRoot}images/tools/am-igear.png"
-                style="vertical-align:sub;margin:0;height:17px" alt="Configure Logcat header icon" />
-                to specify
-              elements of the messages that you want to show or hide, and then click
-              <strong>OK</strong>.
-              </li>
-            </ul>
-
-            <p>
-              For more information about message elements, see <a href=
-              "#format">logcat Message Format</a>.
-            </p>
-
-            <h2 id="stack">
-              Moving Up and Down the Stack Trace
-            </h2>
-
-            <p>
-              When the app throws an exception, the message includes a stack trace of method calls.
-              logcat
-              Monitor lets you quickly locate stack traces in the log and view the associated code
-              in the Code Editor. If needed (and possible), the decompiler derives source code that
-              you can view.
-            </p>
-
-            <ul>
-              <li>Click Up the Stack Trace <img src="{@docRoot}images/tools/am-iupstack.png"
-                style="vertical-align:sub;margin:0;height:17px" alt="Up the Stack Trace icon" />
-                to move to the
-              previous method in relation to the current position in the log.
-              </li>
-
-              <li>Click Down the Stack Trace <img src="{@docRoot}images/tools/am-idownstack.png"
-                style="vertical-align:sub;margin:0;height:17px" alt="Down the Stack Trace icon" />
-                to move to
-              the next method in relation to the current position in the log.
-              </li>
-            </ul>
-
-            <h2 id="logend">
-              Moving to the End of the Log
-            </h2>
-
-            <p>
-              Clicking a particular message stops the display of messages. You can quickly move to
-              the end of the log to see the real-time message flow.
-            </p>
-
-<ul>
-          <li>Click Scroll to the End <img src="{@docRoot}images/tools/am-iscrollend.png"
-            style="vertical-align:sub;margin:0;height:17px" alt="Scroll to the End icon" />.
-          </li>
-
-          <li>Press the End key.
-          </li>
-
-          <li>Scroll or press the Page Down key until you reach the end.
-</li>
-</ul>
-
-<h2 id="printing">
-  Printing the Log
-</h2>
-<p>
-  Follow these steps:
-</p>
-<ol>
-  <li>Click Print <img src="{@docRoot}images/tools/am-iprint.png"
-    style="vertical-align:sub;margin:0;height:17px" alt="Print icon" />.
-  </li>
-  <li>
-    In the <em>Print</em> dialog, optionally change print parameters, and then click
-    <strong>Print</strong>.
-</ol>
-
-<h2 id="clearing">
-  Clearing the Log
-</h2>
-<p>
-  To clear (flush) the entire log, follow this step:
-</p>
-<ul>
-  <li>Click Clear logcat <img src="{@docRoot}images/tools/am-iclear.png"
-    style="vertical-align:sub;margin:0;height:17px" alt="Clear logcat icon" />.
-  </li>
-</ul>
-
-
-
-<h2 id="restarting">
-  Restarting the Log
-</h2>
-
-<p>
-  If there is a problem and the log is no longer progressing, you can restart the log. Follow this
-  step:
-</p>
-
-<ul>
-  <li>Click Restart <img src="{@docRoot}images/tools/am-irestart.png"
-    style="vertical-align:sub;margin:0;height:17px" alt="Restart icon" />.
-  </li>
-</ul>
\ No newline at end of file
diff --git a/docs/html/tools/help/am-memory.jd b/docs/html/tools/help/am-memory.jd
deleted file mode 100644
index 24006cd..0000000
--- a/docs/html/tools/help/am-memory.jd
+++ /dev/null
@@ -1,916 +0,0 @@
-page.title=Memory Monitor
-parent.title=Android Monitor
-parent.link=android-monitor.html
-page.tags=monitor
-@jd:body
-
-<div id="qv-wrapper">
-<div id="qv">
-  <h2>In this document</h2>
-<ol>
-  <li><a href="#workflow">Memory Monitor Workflow</a>
-  <ol>
-  <li><a href="#treeroot">Garbage collection roots and dominator trees</a></li>
-  <li><a href="#analysis">Memory leak and use analysis</a></li>
-  <li><a href="#vm">Memory management for different virtual machines</a></li>
-  </ol>
-  </li>
-  <li><a href="#displaying">Displaying a Running App in the Memory Monitor</a></li>
-  <li><a href="#forcing">Forcing a Garbage Collection Event</a></li>
-  <li><a href="#dumping">Dumping and Analyzing the Java Heap</a>
-    <ol>
-      <li><a href="#hprof-snapshot">Taking and displaying a snapshot of the Java heap</a></li>
-      <li><a href="#hprof-diving">Diving into heap dump data in the HPROF Viewer</a></li>
-      <li><a href="#hprof-analyzing">Analyzing heap dump data in the HPROF Analyzer</a></li>
-      <li><a href="#hprof-sorting">Sorting heap dump data</a></li>
-      <li><a href="#hprof-source">Displaying Java source</a></li>
-      <li><a href="#hprof-viewing">Viewing a saved HPROF file</a></li>
-      <li><a href="#hprof-renaming">Renaming an HPROF file</a></li>
-      <li><a href="#hprof-locating">Locating a heap dump file on disk</a></li>
-      <li><a href="#hprof-deleting">Deleting a heap dump file</a></li>
-      <li><a href="#hprof-converting">Converting a heap dump file to standard HPROF format</a></li>
-    </ol>
-    </li>
-  <li><a href="#tracking">Tracking and Analyzing Memory Allocation</a>
-      <ol>
-      <li><a href="#alloc-snapshot">Taking and displaying a snapshot of allocation data</a></li>
-      <li><a href="#alloc-sorting">Sorting allocation data</a></li>
-      <li><a href="#alloc-source">Displaying Java source</a></li>
-      <li><a href="#alloc-viewing">Viewing a saved allocation tracking file</a></li>
-      <li><a href="#alloc-renaming">Renaming an allocation tracking file</a></li>
-      <li><a href="#alloc-locating">Locating an allocation tracking file</a></li>
-      <li><a href="#alloc-deleting">Deleting an allocation tracking file</a></li>
-    </ol>
-    </li>
-</ol>
-
- <h2>See also</h2>
-  <ol>
-    <li><a href="{@docRoot}training/articles/memory.html">Managing Your App's Memory</a></li>
-    <li><a href="{@docRoot}guide/practices/verifying-apps-art.html#GC_Migration">Addressing Garbage Collection Issues</a></li>
-    <li><a href="{@docRoot}tools/debugging/debugging-memory.html">Investigating Your RAM Usage</a></li>
-
-    <li>
-        <a href="{@docRoot}tools/help/android-monitor.html">Android Monitor</a>
-      </li>
-    <li><a href="{@docRoot}tools/help/am-logcat.html">logcat Monitor</a>
-      </li>
-
-      <li><a href="{@docRoot}tools/help/am-cpu.html">CPU Monitor</a>
-      </li>
-
-      <li><a href="{@docRoot}tools/help/am-gpu.html">GPU Monitor</a>
-      </li>
-
-      <li>
-        <a href="{@docRoot}tools/help/am-network.html">Network Monitor</a>
-      </li>
-  </ol>
-
-
-<h2>
-  Dependencies and Prerequisites
-</h2>
-
-<ul>
-  <li>
-    Make sure your development computer detects your hardware device, which often happens
-  automatically when you connect it to a USB port.
-  </li>
-<li>
-    <a href="{@docRoot}tools/device.html#device-developer-options">Enable</a> <strong><a href=
-    "{@docRoot}tools/device.html#device-developer-options">USB debugging</a></strong> in
-    <strong>Developer Options</strong> on the device or emulator.
-  </li>
-
-  <li>In your app, set the <code>debuggable</code> property to <code>true</code> in the manifest or
-  <code>build.gradle</code> file (it’s initially set by default).
-  </li>
-
-  <li>Enable ADB integration through <strong>Tools</strong> &gt; <strong>Android</strong> &gt;
-  <strong>Enable ADB Integration</strong>.
-  </li>
-
-   <li>
-    <a href="{@docRoot}tools/help/monitor.html">Android Device Monitor</a> can’t be running.
-  </li>
-</ul>
-
-</div>
-</div>
-
-<p>
-  Android Studio provides a Memory Monitor so you can more easily monitor app performance and
-  memory usage to find deallocated objects, locate memory leaks, and track the amount of memory the
-  connected device is using. The Memory Monitor reports how your app allocates memory and helps you
-  to visualize the memory your app uses. It lets you:
-</p>
-
-<ul>
-  <li>Show a graph of available and allocated memory over time.
-  </li>
-<li>Show garbage collection (GC) events
-  over time.
-  </li>
-  <li>Initiate garbage collection events.
-  </li>
-
-  <li>Quickly test whether app slowness might be related to excessive garbage collection events.
-  </li>
-
-  <li>Quickly test whether app crashes may be related to running out of memory.
-  </li>
-</ul>
-
-<h2 id="workflow">
-  Memory Monitor Workflow
-</h2>
-
-<p>
-  To profile and optimize memory use, the typical workflow is to run your app and do the following:
-</p>
-
-<ol>
-  <li>Profile the app using the Memory Monitor to find out whether undesirable garbage collection
-  event patterns might be causing performance problems.
-  </li>
-
-  <li>If you see many garbage collection events in a short amount of time, dump the Java heap to
-  identify candidate object types that get or stay allocated unexpectedly or unnecessarily.
-  </li>
-
-  <li>Start allocation tracking to determine where any problems are happening in your code.
-  </li>
-</ol>
-
-<p>
-  The Java heap data shows in real-time what types of objects your application has allocated, how
-  many, and their sizes on the heap. Viewing the heap helps you to:
-</p>
-
-<ul>
-  <li>Get a sense of how your app allocates and frees memory.
-  </li>
-
-  <li>Identify memory leaks.
-  </li>
-</ul>
-
-<p>
-  Allocation tracking records app memory allocations and lists all allocations for the
-  profiling cycle, including the call stack, size, and allocating code. It helps you to:
-</p>
-
-<ul>
-  <li>Identify where many similar object types, from roughly the same call stack, are allocated and
-  deallocated over a very short period of time.
-  </li>
-
-  <li>Find the places in your code that may contribute to inefficient memory use.
-  </li>
-</ul>
-
-<h3 id="treeroot">
-  Garbage collection roots and dominator trees
-</h3>
-
-<p>
-  When you dump the Java heap, the Memory Monitor creates an Android-specific Heap/CPU Profiling
-  (HPROF) file that you can view in the HPROF Viewer. The HPROF Viewer indicates a garbage
-  collection root with the <img src="{@docRoot}images/tools/am-igcroot.png"
-  style="vertical-align:sub;margin:0;height:17px" alt="GC Root icon" /> icon (and a depth of zero)
-  and a
-  dominator with the <img src="{@docRoot}images/tools/am-idom.png"
-  style="vertical-align:sub;margin:0;height:17px" alt="Dominator icon" /> icon.
-</p>
-
-<p>
-  There are several kinds of garbage collection roots in Java:
-</p>
-
-<ul>
-<li>references on the stack</li>
-<li>Java Native Interface (JNI) native objects and memory</li>
-<li>static variables and functions</li>
-<li>threads and objects that can be referenced </li>
-<li>classes loaded by the bootstrap loader</li>
-<li>finalizers and unfinalized objects</li>
-<li>busy monitor objects</li>
-</ul>
-
-<p>
-  The HPROF file provides the list of roots to the HPROF Viewer.
-</p>
-
-<p>
-  A dominator tree traces paths to objects created by the app. An object dominates another object
-  if the only way to reach the other object is, directly or indirectly, through the dominator
-  object. When you examine objects and paths created by an app in an effort to optimize memory use,
-  try to remove objects that are no longer needed. You can release a dominator object to
-  release all subordinate objects. For example, in the following figure, if you were to
-  remove object B, that would also release the memory used by the objects it dominates, which are
-  objects C, D, E, and F. In fact, if objects C, D, E, and F were marked for removal, but object B
-  was still referring to them, that could be the reason that they weren’t released.
-</p>
-
-  <img src="{@docRoot}images/tools/am-domtree.png" height="200" />
-
-<h3 id="analysis">
-  Memory leak and use analysis
-</h3>
-
-<p>
-  An app performs better if it uses memory efficiently and releases the memory when it’s no longer
-  needed.
-  Memory leaks that are large or that grow over time are the most important to correct.
-</p>
-
-<p>
-  One way to optimize memory usage is to analyze large arrays. For example, can you reduce the size
-  of individual elements in the array to save memory? Does a dominator object point to
-  an element in the array, preventing it from being garbage-collected? If the dominator object
-  directly points to an element in the array, the dominator is either the contiguous memory
-  representing the underlying data of the array, some part of the array, or the array itself.
-</p>
-
-<p>
-  Another area that deserves attention is objects that the app no longer needs but continues to
-  reference. You can gather heap dumps over different periods of time and compare them to determine
-  if you have a growing memory leak, such as an object type that your code creates multiple times
-  but doesn’t destroy. These objects could be part of a growing array or an object tree, for
-  example. To track down this problem, compare the heap dumps and see if you have a particular
-  object type that continues to have more and more instances over time.
-</p>
-
-<p>
-  Continually growing object trees that contain root or dominator objects can prevent subordinate
-  objects from being garbage-collected. This issue is a common cause of memory leaks, out-of-memory
-  errors,
-  and crashes. Your app could have a small number of objects that are preventing a large number of
-  subordinate objects from being destroyed, so it runs out of memory quickly. To find these issues,
-  get a heap dump and examine the amount of memory held by root and dominator objects. If the
-  memory is substantial, you’ve likely found a good place to start optimizing your memory use.
-</p>
-
-<p>
-  As you start narrowing down memory issues, you should also use the Allocation Tracker to get a
-  better understanding of where your memory-hogging objects are allocated. The Allocation Tracker
-  can be valuable not only for looking at specific uses of memory, but also for analyzing critical
-  code paths, such as loading and scrolling. For example, tracking allocations when flinging a list
-  in your app
-  allows you to see all of the allocations that need to be done for that behavior, what thread they
-  are on, and where they came from. This information is extremely valuable for tightening up these
-  paths to reduce the work they need and improve the overall smoothness of the UI.
-</p>
-
-<p>
-  It’s useful to examine your algorithms for allocations that are unnecessary or that create the
-  same object many times instead of reusing them. For example, do you create temporary objects and
-  variables within recursive loops? If so, try creating an object or variable before
-  the loop for use within the loop. Otherwise, your app might needlessly allocate many objects and
-  variables, depending on the number of recursions.
-</p>
-
-<p>
-  It’s important to perform allocation tests on portions of your code that create the most and
-  largest objects, as those areas offer the most optimization opportunities. In addition to unit
-  tests, you should test your app with production-realistic data loads, especially those algorithms
-  that are data-driven. Also, make sure to account for the app caching and startup phase, which can
-  sometimes be slow; allocation analysis is best done after that phase to produce accurate results.
-</p>
-
-<p>
-  After you optimize code, be sure to test that it worked. You need to test under different load
-  conditions and also without running the Memory Monitor tools. Compare results before and after
-  optimization to make sure that performance has actually improved.
-</p>
-
-<h3 id="vm">
-  Memory management for different virtual machines
-</h3>
-
-<p>
-  Android Monitor uses the Virtual Machine (VM) that the device or emulator uses:
-</p>
-
-<ul>
-  <li>Android 4.3 (API level 18) and lower uses the Dalvik VM.
-  </li>
-
-  <li>In Android 4.4 (API level 19), the Android RunTime (ART) VM is an option, while the Dalvik VM
-  is the default.
-  </li>
-
-  <li>Android 5.0 (API level 21) and higher uses the ART VM.
-  </li>
-</ul>
-
-<p>
-  The VM handles garbage collection. The Dalvik VM uses a mark-and-sweep scheme for garbage
-  collection. The ART VM uses a generational scheme, combined with mark-and-sweep when memory needs
-  a more thorough garbage collection, such as when memory becomes excessively fragmented. The
-  logcat Monitor displays some messages that indicate the type of garbage collection that occurred
-  and why.
-</p>
-
-<p>
-  Memory Monitor results can vary between the different VMs. As a result, if you’re supporting both
-  VMs, you might want to test with both. In addition, the VMs available for different API levels
-  can have different behavior. For example, the Dalvik VM in Android 2.3 (API level 10) and lower
-  uses externally allocated memory while higher versions allocate in the Dalvik heap only.
-</p>
-
-<p>
-  You can’t reconfigure the Dalvik and ART VMs to tune performance. Instead, you should examine
-  your app code to determine how to improve its operation, for example, reducing the size of very
-  large arrays.
-</p>
-
-<p>
-  There are programmatic ways to manipulate when the VM performs garbage collection, although it’s
-  not a best practice. These techniques can be specific to the VM. For more information, see
-  <a href=
-  "{@docRoot}guide/practices/verifying-apps-art.html#GC_Migration">Addressing
-  Garbage Collection (GC) Issues</a> and <a href=
-  "{@docRoot}tools/debugging/debugging-memory.html">Investigating Your RAM
-  Usage</a>.
-</p>
-
-<p>
-  The ART VM adds a number of performance, development, and debugging improvements over the Dalvik
-  VM. For more information, see <a href=
-  "https://source.android.com/devices/tech/dalvik/index.html">ART and Dalvik</a>.
-</p>
-
-<h2 id="displaying">
-  Displaying a Running App in the Memory Monitor
-</h2>
-
-<p>
-  Follow these steps:
-</p>
-
-<ol>
-  <li>Optionally connect a hardware device.
-  </li>
-
-  <li>
-    <a href=
-    "{@docRoot}tools/help/android-monitor.html#displaying">Display Android Monitor</a>.
-  </li>
-
-  <li>Click the <strong>Memory</strong> tab.
-  </li>
-
-  <li>Open an app project and <a href=
-  "{@docRoot}tools/building/building-studio.html#RunningApp">run it</a> on a
-  hardware device or emulator.
-  </li>
-
-  <li>Enable the Memory Monitor by clicking Pause <img src="{@docRoot}images/tools/am-ipause.png"
-    style="vertical-align:sub;margin:0;height:17px" alt="Pause icon" /> to deselect it.
-  </li>
-
-
-<p>
-  In the graph, the y-axis displays the free and allocated RAM in megabytes. The x-axis shows the
-  time elapsed; it starts with seconds, and then minutes and seconds, and so on. The amount of free
-  memory, measured in megabytes,
-  is shown in a light color, and allocated memory is a darker color. When there’s a sharp drop in
-  allocated memory, that indicates a garbage collection event. </p>
-
-
-
-<p>
-  To force a garbage collection event, click Initiate GC <img src="{@docRoot}images/tools/am-igc.png"
-  style="vertical-align:sub;margin:0;height:17px" alt="Initiate GC icon" />.
-</p>
-
-  <p>In the following figure, the VM initiated the first garbage collection event, while the
-    developer forced the second.
-</p>
-<img src="{@docRoot}images/tools/am-gc.png" />
-
-  <li>Interact with your app and watch how it affects memory usage in the Memory Monitor. You can
-  identify garbage collection patterns for your app and determine whether they are healthy and what
-  you expect.
-  </li>
-
-
-<p>
-  The graph can show you potential issues:
-</p>
-
-<ul>
-  <li>Excessive garbage collection events slow down the app.
-  </li>
-
-  <li>The app runs out of memory, which causes it to crash.
-  </li>
-
-  <li>Potential memory leaks.
-  </li>
-</ul>
-
-<p>
-  For example, you might see the following signs of problems:
-</p>
-
-<ul>
-  <li>Your app is static, but you see memory being allocated in the monitor.
-  </li>
-
-  <li>You see spikes of memory allocations in the monitor, but you don’t think there’s any app
-  logic to cause this behavior.
-  </li>
-</ul>
-  <li>To stop the Memory Monitor, click Pause <img src="{@docRoot}images/tools/am-ipause.png"
-    style="vertical-align:sub;margin:0;height:17px" alt="Pause icon" /> again to select it.
-  </li>
-
-</ol>
-
-<h2 id="forcing">
-  Forcing a Garbage Collection Event
-</h2>
-
-<p>
-  Normally, VMs perform garbage collection only when absolutely needed, since it’s expensive.
-  However, it can be useful to force garbage collection in certain circumstances. For example, when
-  locating memory leaks, if you want to determine whether a large object was successfully released
-  already, you can initiate garbage collection much more aggressively than usual.
-</p>
-
-<p>
-  To force a garbage collection event:
-</p>
-
-<ul>
-  <li>While the <a href="#displaying">Memory Monitor is running</a>, click Initiate GC
-  <img src="{@docRoot}images/tools/am-igc.png" style="vertical-align:sub;margin:0;height:17px"
-  alt="Initiate GC icon" />.
-  </li>
-</ul>
-
-<h2 id="dumping">
-  Dumping and Analyzing the Java Heap
-</h2>
-
-<p>
-  When you're monitoring memory usage in Android Studio you can, at the same time, dump the Java
-  heap to a heap snapshot in an Android-specific HPROF binary format file. The HPROF Viewer
-  displays classes, instances of each class, and a reference tree to help you track memory usage
-  and find memory leaks. HPROF is a heap dump format originally supported by J2SE.
-</p>
-<p>The Java heap display does the following:</p>
-
-<ul>
-  <li>Shows snapshots of a number of objects allocated by type.
-  </li>
-
-  <li>Samples data every time a garbage collection event occurs naturally or is triggered by you.
-  </li>
-
-  <li>Helps identify which object types might be involved in memory leaks.
-  </li>
-</ul>
-
-<p>
-  However, you have to look for changes over time yourself by tracking what's happening in the
-  graph.
-</p>
-
-<p>
-  The HPROF Analyzer finds the following potential issues:
-</p>
-
-<ul>
-  <li>All destroyed activity instances that are reachable from garbage collection roots.
-  </li>
-
-  <li>Where the target program has strings that repeat values.
-  </li>
-</ul>
-
-<p>
-  A dominator is at the top of a tree. If you remove it, you also remove the branches of the tree
-  it dominates, so it’s a potential way to free memory.
-</p>
-
-<h3 id="hprof-snapshot">
-  Taking and displaying a snapshot of the Java heap
-</h3>
-
-<p>
-  To see a snapshot of the Java heap, follow these steps:
-</p>
-
-<ol>
-  <li>While the Memory Monitor is running, click Dump Java Heap
-    <img src="{@docRoot}images/tools/am-idump.png"
-    style="vertical-align:sub;margin:0;height:17px" alt="Dump Java Heap icon" />.
-  </li>
-
-
-<p>
-  When the icon on the Memory Monitor display changes from
-  <img src="{@docRoot}images/tools/am-idumpstart.png"
-  style="vertical-align:sub;margin:0;height:17px" alt="Dump Java Heap Start icon" /> to
-  <img src="{@docRoot}images/tools/am-idumpend.png" style="vertical-align:sub;margin:0;height:17px"
-  alt="Dump Java Heap End icon" />, the file is ready. Android Studio creates the heap snapshot
-  file with the
-  filename <code>Snapshot_<em>yyyy.mm.dd_hh.mm.ss</em>.hprof</code> using
-  the year, month, day, hour, minute, and second of the capture, for example,
-  <code>Snapshot_2015.11.17_14.58.48.hprof</code>.
-</p>
-
-  <li>Click <strong>Captures</strong> in the main window.
-  </li>
-
-<p>
-  The <em>Captures</em> window appears.
-</p>
-
-  <li>Double-click the file to view it in the HPROF Viewer.
-  </li>
-
-<p>
-  The HPROF Viewer appears:
-</p>
-<img src="{@docRoot}images/tools/am-hprofviewer.png" />
-<p>
-  The tool displays the following information:
-</p>
-
-<table>
-  <tr>
-    <th scope="col">Column</th>
-    <th scope="col">Description</th>
-  </tr>
-
-  <tr>
-    <td><strong>Class Name</strong></td>
-    <td>The Java class responsible for the memory.</td>
-  </tr>
-
-  <tr>
-    <td><strong>Total Count</strong></td>
-    <td>Total number of instances outstanding.</td>
-  </tr>
-  <tr>
-    <td><strong>Heap Count</strong></td>
-    <td>Number of instances in the selected heap.</td>
-  </tr>
-  <tr>
-    <td><strong>Sizeof</strong></td>
-    <td>Size of the instances (currently, 0 if the size is variable).</td>
-  </tr>
-  <tr>
-    <td><strong>Shallow Size</strong></td>
-    <td>Total size of all instances in this heap.</td>
-  </tr>
-  <tr>
-    <td><strong>Retained Size</strong></td>
-    <td>Size of memory that all instances of this class is dominating.</td>
-  </tr>
-  <tr>
-    <td><strong>Instance</strong></td>
-    <td>A specific instance of the class.</td>
-  </tr>
-  <tr>
-    <td><strong>Reference Tree</strong></td>
-    <td>References that point to the selected instance, as well as references pointing to the
-      references.</td>
-  </tr>
-  <tr>
-    <td><strong>Depth</strong></td>
-    <td>The shortest number of hops from any GC root to the selected instance.</td>
-  </tr>
-  <tr>
-    <td><strong>Shallow Size</strong></td>
-    <td>Size of this instance.</td>
-  </tr>
-  <tr>
-    <td><strong>Dominating Size</strong></td>
-    <td>Size of memory that this instance is dominating.</td>
-  </tr>
-</table>
-
-  <li>Select the Heap menu option you want to display:
-    <ul>
-      <li>
-        <strong>App heap</strong> - The heap used by the current app.
-      </li>
-
-      <li><strong>Image heap</strong> - The memory mapped copy of the
-      current app on disk.
-      </li>
-
-
-  <li>
-    <strong>Zygote heap</strong> - The common set of libraries and runtime classes and data that
-    all apps are forked
-    from. The zygote space is created during device startup and is never allocated into.
-  </li>
-
-    </ul>
-
-      <li>Select the View menu option you want to display:
-        <ul>
-          <li>
-            <strong>Class List View</strong>
-          </li>
-
-              <li>
-                <strong>Package Tree View</strong>
-              </li>
-            </ul>
-    </ol>
-
-
-<h3 id="hprof-diving">
-  Diving into heap dump data in the HPROF Viewer
-</h3>
-<p>The following steps outline the typical workflow:</p>
-<ol>
-<li>In the HPROF viewer, select a class name. </li>
-<li>Select an instance of that class.</li>
-<li>Examine the reference tree.</li>
-<li>Right-click an item to <strong>Jump to source</strong> or <strong>Go to instance</strong>,
-  as needed.</li>
-</ol>
-
-
-
-<h3 id="hprof-analyzing">Analyzing heap dump data in the HPROF Analyzer</h3>
-<p>You can detect leaked activities and find duplicate strings with the HPROF Analyzer.
-  Follow these steps: </p>
-<ol>
-<li>In the <em>Captures</em> window, double-click an <code>.hprof</code> file to display it in the
-  HPROF Viewer. </li>
-<li>Click <strong>Capture Analysis</strong> on the right side of the main Android Studio window.</li>
-
-
-<p>The HPROF Analyzer appears to the right of the HPROF Analyzer, by default: </p>
-
-<img src="{@docRoot}images/tools/am-hprofanalyzer.png" />
-
-<li>In the <strong>Analyzer Tasks</strong> list, select the items you want to find.</li>
-<li>Click Perform Analysis <img src="{@docRoot}images/tools/am-iperformanalysis.png"
-  style="vertical-align:sub;margin:0;height:17px" alt="Perform Analysis icon" />.</li>
-<li>Examine the items in <strong>Analysis Results</strong>. Click an item to display it in the
-  HPROF Viewer.</li>
-</ol>
-
-
-
-<h3 id="hprof-sorting">Sorting heap dump data</h3>
-<p>Follow this step:</p>
-<ul>
-<li>In the HPROF Viewer, click a column heading to sort the table by ascending or descending
-  order. </li>
-</ul>
-
-
-<h3 id="hprof-source">Displaying Java source</h3>
-<p>For some items displayed in the HPROF Viewer, you can go straight to its source code.
-  Follow this step:</p>
-<ul>
-<li>In the HPROF Viewer, right-click a class, instance, or item in the reference tree, and then
-  select <strong>Jump to Source</strong>. </li>
-
-
-<p>The source code appears in the Code Editor.</p>
-</ul>
-
-<h3 id="hprof-viewing">Viewing a saved HPROF file</h3>
-<p>After you do a heap dump, Android Studio automatically stores it so you can view it again.
-  Follow these steps:</p>
-
-<ol>
-<li>Click <strong>Captures</strong> in the main window.</li>
-
-<p>The <em>Captures</em> window appears.</p>
-<li>Open the <strong>Heap Snapshot</strong> folder.</li>
-<li>Double-click the file to view it.</li>
-</ol>
-
-
-<h3 id="hprof-renaming">Renaming an HPROF file</h3>
-
-<p>If you rename a file from within Android Studio, it continues to appear in <em>Captures</em>
-  window. Follow these steps:</p>
-<ol>
-<li>In the <em>Captures</em> window, right-click the file and select <strong>Rename</strong>. </li>
-<li>In the dialog, specify the name of the file and click <strong>OK</strong>.</li>
-</ol>
-
-
-<h3 id="hprof-locating">Locating a heap dump file on disk</h3>
-<p>You can quickly discover where Android Studio stored HPROF files on disk.</p>
-
-
-<p>Follow this step in Android Studio: </p>
-<ul>
-<li>In the <em>Captures</em> window, right-click a heap snapshot file and select
-  <strong>Show in files</strong>.</li>
-
-<p>Android Studio opens an operating system file browser displaying the location where the file
-  resides.</p>
-</ul>
-<p class="note"><strong>Note:</strong> If you move an HPROF file, Android Studio no longer
-  displays it in the <em>Captures</em> window. To display it, use
-  <strong>File</strong> &gt; <strong>Open</strong>. Also, if you want to rename the file, do it
-  from the <em>Captures</em> window and not in the operating system file browser. </p>
-
-<h3 id="hprof-deleting">Deleting a heap dump file</h3>
-
-<p>To delete a heap dump file, follow this step: </p>
-<ul>
-<li>In the <em>Captures</em> window, right-click a heap snapshot file and select
-  <strong>Delete</strong>.</li>
-
-<p>Android Studio deletes the file from the <em>Captures</em> dialog and from disk. </p>
-</ul>
-
-<h3 id="hprof-converting">Converting a heap dump file to standard HPROF format</h3>
-<p>You can convert an HPROF file to standard format so you can use it outside of Android Studio with
-  other analysis tools. Follow these steps: </p>
-<ol>
-<li>In the <em>Captures</em> window, right-click a heap snapshot file and select <strong>Export to
-  standard .hprof</strong>.</li>
-<li>In the <em>Convert Android Java Heap Dump</em> dialog, specify a filename and click
-  <strong>OK</strong>.</li>
-
-
-<p>Android Studio creates a binary HPROF file in the location you specified.</p>
-</ol>
-
-<h2 id="tracking">
-  Tracking and Analyzing Memory Allocation
-</h2>
-
-<p>Android Studio allows you to track memory allocation as it monitors memory use. Tracking memory
-  allocation allows you to monitor where objects are being allocated when you perform certain
-  actions. Knowing these allocations enables you to adjust the method calls related to those actions
-  to optimize app performance and memory use.</p>
-
-<p>The Allocation Tracker does the following:</p>
-<ul>
-<li>Shows when and where your code allocates object types, their size, allocating thread, and stack
-  traces.</li>
-<li>Helps recognize memory churn through recurring allocation/deallocation patterns.</li>
-<li>Help you track down memory leaks when used in combination with the HPROF Viewer. For example,
-  if you see a bitmap object resident on the heap, you can find its allocation location with
-  Allocation Tracker.</li>
-</ul>
-
-
-<p>However, it takes time and experience to learn to interpret the output from this tool.</p>
-
-<h3 id="alloc-snapshot">Taking and displaying a snapshot of allocation data</h3>
-
-<p>Follow these steps:</p>
-<ol>
-<li>While the Memory Monitor is running, click Start Allocation Tracking
-  <img src="{@docRoot}images/tools/am-ialloctracking.png"
-  style="vertical-align:sub;margin:0;height:17px" alt="Start Allocation Tracking icon" />. </li>
-<li>Click Start Allocation Tracking
-  <img src="{@docRoot}images/tools/am-ialloctracking.png"
-  style="vertical-align:sub;margin:0;height:17px" alt="Start Allocation Tracking icon" /> again to
-  deselect it and end the snapshot. </li>
-
-  <p>The Memory Monitor displays the period when it took the snapshot. In the following
-    figure, you can see the snapshot period, as shown on the left. By comparison, when you dump the
-    Java heap, the Memory Monitor displays just the point where the heap snapshot was taken, as
-    shown on the right.</p>
-    <img src="{@docRoot}images/tools/am-dumpalloc.png" />
-
-<p>Android Studio creates the heap snapshot file with the
-  filename <code>Allocations_<em>yyyy.mm.dd_hh.mm.ss</em>.alloc</code> using the year, month, day,
-  hour, minute, and second of the capture, for example,
-  <code>Allocations_2015.11.17_14.58.48.alloc</code>.</p>
-<li>Click <strong>Captures</strong> in the main window.</li>
-
-
-<p>The <em>Captures</em> window appears.</p>
-<li>Double-click the file to view it in the Allocation Tracker. </li>
-<li>Optionally click the graphic icon to display a visual representation of the data.
-  </li>
-<p>
-  The Allocation Tracker appears:
-</p>
-<img src="{@docRoot}images/tools/am-alloctracker.png" />
-<p>
-
-
-<p>The tool displays the following information: </p>
-
-<table>
-  <tr>
-    <th scope="col">Column</th>
-    <th scope="col">Description</th>
-  </tr>
-
-  <tr>
-    <td><strong>Method</strong></td>
-    <td>The Java method responsible for the allocation.</td>
-  </tr>
-  <tr>
-    <td><strong>Count</strong></td>
-    <td>Total number of instances allocated.</td>
-  </tr>
-  <tr>
-    <td><strong>Size</strong></td>
-    <td>The total amount of allocated memory in bytes.</td>
-  </tr>
-
-</table>
-
-
-<li>Select the Group By menu option you want to display: </li>
-<ul>
-<li><strong>Group by Allocator</strong> </li>
-<li><strong>Group by Method</strong></li>
-</ul>
-
-</ol>
-
-
-
-<h3 id="alloc-sorting">Sorting allocation data</h3>
-
-<p>Follow this step:</p>
-<ul>
-<li>In the Allocation Tracker, click a column heading to sort the table by ascending or
-  descending order. </li>
-</ul>
-
-
-<h3 id="alloc-source">Displaying Java source</h3>
-<p>For some items displayed in the Allocation Tracker, you can view the Java source. Follow one of
-  these steps:</p>
-<ul>
-<li>In the Allocation Tracker, right-click a method and then select <strong>Jump to Source</strong>.
-</li>
-<li>In the Allocation Tracker, select a method and then click Jump to Source
-  <img src="{@docRoot}images/tools/am-ijumptosource.png"
-  style="vertical-align:sub;margin:0;height:17px" alt="Jump to Source icon" />. </li>
-</ul>
-
-<p>The source code appears in the Code Editor.</p>
-
-<h3 id="alloc-viewing">Viewing a saved allocation tracking file</h3>
-<p>After you monitor allocation tracking, Android Studio automatically stores it so you can view it
-  again. Follow these steps:</p>
-
-
-<ol>
-<li>Click <strong>Captures</strong> in the main window.</li>
-
-
-<p>The <em>Captures</em> window appears.</p>
-<li>Open the <strong>Allocation Tracking</strong> folder.</li>
-<li>Double-click the file to view it.</li>
-</ol>
-
-
-<h3 id="alloc-renaming">Renaming an allocation tracking file</h3>
-
-<p>If you rename a file from within Android Studio, it continues to appear in the <em>Captures</em>
-  window. Follow these steps:</p>
-<ol>
-<li>In the <em>Captures</em> window, right-click the file and select <strong>Rename</strong>.</li>
-<li>In the <em>Rename</em> dialog, specify the name of the file and click <strong>OK</strong>.</li>
-</ol>
-
-
-<h3 id="alloc-locating">Locating an allocation tracking file</h3>
-<p>You can quickly discover where Android Studio stored allocation tracking files on disk.</p>
-
-
-<p>Follow this step in Android Studio: </p>
-<ul>
-<li>In the <em>Captures</em> window, right-click allocation file and select
-  <strong>Show in Files</strong>.</li>
-
-<p>Android Studio opens an operating system file browser displaying the location where the file
-  resides.</p>
-</ul>
-
-<p class="note"><strong>Note:</strong> If you move an allocation tracking file, Android Studio
-  no longer displays it in the <em>Captures</em> window. To display the file, use
-  <strong>File</strong>
-  &gt; <strong>Open</strong>. Also, rename the file from the <em>Captures</em>
-  window and not in the operating system file browser. </p>
-
-<h3 id="alloc-deleting">Deleting an allocation tracking file</h3>
-
-
-<p>Follow this step: </p>
-<ul>
-<li>In the <em>Captures</em> window, right-click an allocation tracking file and select
-  <strong>Delete</strong>.</li>
-
-<p>Android Studio deletes the file from the <em>Captures</em> dialog and from disk. </p>
-</ul>
diff --git a/docs/html/tools/help/am-network.jd b/docs/html/tools/help/am-network.jd
deleted file mode 100644
index ae116ac..0000000
--- a/docs/html/tools/help/am-network.jd
+++ /dev/null
@@ -1,130 +0,0 @@
-page.title=Network Monitor
-parent.title=Android Monitor
-parent.link=android-monitor.html
-page.tags=monitor
-@jd:body
-
-<div id="qv-wrapper">
-<div id="qv">
-  <h2>In this document</h2>
-<ol>
-  <li><a href="#running">Displaying a Running App in the Network Monitor</a></li>
-</ol>
-
- <h2>See also</h2>
-  <ol>
-    <li>
-        <a href="{@docRoot}tools/help/android-monitor.html">Android Monitor</a>
-      </li>
-    <li><a href="{@docRoot}tools/help/am-logcat.html">logcat Monitor</a>
-      </li>
-
-      <li><a href="{@docRoot}tools/help/am-memory.html">Memory Monitor</a>
-      </li>
-
-      <li><a href="{@docRoot}tools/help/am-cpu.html">CPU Monitor</a>
-      </li>
-
-      <li><a href="{@docRoot}tools/help/am-gpu.html">GPU Monitor</a>
-      </li>
-  </ol>
-
-<h2>Video</h2>
-  <ol>
-    <li><a href="https://www.youtube.com/watch?v=fEEulSk1kNY"
-      class="external-link">Battery Drain and Networking</a></li>
-  </ol>
-
-<h2>
-  Dependencies and Prerequisites
-</h2>
-
-<ul>
-  <li>
-    <a href="{@docRoot}tools/building/building-studio.html#RunningOnDeviceStudio">Connect a
-    hardware device</a> to your development computer.
-  </li>
-
-  <li>Make sure your development computer detects your hardware device, which often happens
-  automatically when you connect it to a USB port.
-  </li>
-
-  <li>
-    <a href="{@docRoot}tools/device.html#device-developer-options">Enable</a> <strong><a href=
-    "{@docRoot}tools/device.html#device-developer-options">USB debugging</a></strong> in
-    <strong>Developer Options</strong> on the device.
-  </li>
-
-  <li>In your app, set the <code>debuggable</code> property to <code>true</code> in the manifest or
-  <code>build.gradle</code> file (it’s initially set by default).
-  </li>
-
-  <li>Enable ADB integration through <strong>Tools</strong> &gt; <strong>Android</strong> &gt;
-  <strong>Enable ADB Integration</strong>.
-  </li>
-
-  <li>
-    <a href="{@docRoot}tools/help/monitor.html">Android Device Monitor</a> can’t be running.
-  </li>
-</ul>
-
-</div>
-</div>
-
-<p>
-  The Network Monitor makes it possible to track when your application is making network requests.
-  Using this tool, you can monitor how and when your app transfers data, and optimize the underlying
-  code appropriately.
-</p>
-
-<p>
-  By monitoring the frequency of data transfers, and the amount of data transferred during each
-  connection, you can identify areas of your app that can be made more efficient and use less
-  battery power.
-  Generally, you should look for short spikes that can be delayed, or that could cause a later
-  transfer to be preempted.
-</p>
-
-
-<h2 id="running">
-  Displaying a Running App in the Network Monitor
-</h2>
-
-<p>
-  Follow these steps:
-</p>
-
-<ol>
-  <li>Connect a hardware device.
-  </li>
-
-  <li>
-    <a href="{@docRoot}tools/help/android-monitor.html#displaying">Display Android Monitor</a>.
-  </li>
-
-  <li>Click the <strong>Network</strong> tab.
-  </li>
-
-  <li>Open an app project and <a href=
-  "{@docRoot}tools/building/building-studio.html#RunningApp">run it</a> on the hardware device.
-  </li>
-
-  <li>To start the Network Monitor, click Pause <img src="{@docRoot}images/tools/am-ipause.png"
-    style="vertical-align:sub;margin:0;height:17px" alt="Pause icon" /> to
-  deselect it.
-  </li>
-<p>
-  Any network traffic begins to appear in the Network Monitor:
-</p>
-  <img src="{@docRoot}images/tools/am-networkmon.png" style="vertical-align:sub;margin:0;width:450px" />
-<p>
-  The Network Monitor adds up the amount of time it takes for the device to transmit and receive
-  kilobytes of data.
-  The y-axis is in kilobytes per second. The x-axis starts with seconds, and then minutes and
-  seconds, and so on.
-</p>
-  <li>To stop the Network Monitor, click Pause <img src="{@docRoot}images/tools/am-ipause.png"
-    style="vertical-align:sub;margin:0;height:17px" alt="Pause icon" /> again to
-  select it.
-  </li>
-</ol>
\ No newline at end of file
diff --git a/docs/html/tools/help/android-monitor.jd b/docs/html/tools/help/android-monitor.jd
deleted file mode 100644
index 4c9f80f..0000000
--- a/docs/html/tools/help/android-monitor.jd
+++ /dev/null
@@ -1,462 +0,0 @@
-page.title=Android Monitor
-parent.title=Tools
-parent.link=index.html
-page.tags=monitor
-@jd:body
-
-<div id="qv-wrapper">
-<div id="qv">
-  <h2>In this document</h2>
-<ol>
-  <li><a href="#displaying">Displaying Android Monitor</a></li>
-  <li><a href="#profiling">Profiling a Running App in Android Monitor</a></li>
-  <li><a href="#switching">Switching between Devices and Apps</a></li>
-  <li><a href="#screencapture">Taking a Screen Capture of the Device</a></li>
-  <li><a href="#video">Recording a Video from the Screen</a></li>
-  <li><a href="#sysinfo">Examining System Information</a></li>
-  <li><a href="#terminating">Terminating the App</a></li>
-  <li><a href="#rearranging">Rearranging Android Monitor Windows</a></li>
-  <li><a href="#removing">Removing an App from a Device</a></li>
-</ol>
-
- <h2>See also</h2>
-  <ol>
-    <li><a href="{@docRoot}tools/help/am-logcat.html">logcat Monitor</a>
-      </li>
-
-      <li><a href="{@docRoot}tools/help/am-memory.html">Memory Monitor</a>
-      </li>
-
-      <li><a href="{@docRoot}tools/help/am-cpu.html">CPU Monitor</a>
-      </li>
-
-      <li><a href="{@docRoot}tools/help/am-gpu.html">GPU Monitor</a>
-      </li>
-
-      <li>
-        <a href="{@docRoot}tools/help/am-network.html">Network Monitor</a>
-      </li>
-  </ol>
-
-
-<h2>
-  Dependencies and Prerequisites
-</h2>
-
-<ul>
-  <li>In your app, set the <code>debuggable</code> property to <code>true</code> in the manifest or
-  <code>build.gradle</code> file (it’s initially set by default).
-  </li>
-
-    <li>Enable ADB integration through <strong>Tools</strong> &gt; <strong>Android</strong> &gt;
-  <strong>Enable ADB Integration</strong>.
-    </li>
-
-  <li>Make sure your development computer detects your hardware device, which often happens
-  automatically when you connect it to a USB port.
-  </li>
- <li>
-    <a href="{@docRoot}tools/device.html#device-developer-options">Enable</a> <strong><a href=
-    "{@docRoot}tools/device.html#device-developer-options">USB debugging</a></strong> in
-    <strong>Developer Options</strong> on the device or emulator.
-  </li>
-
-  <li>
-    <a href="{@docRoot}tools/help/monitor.html">Android Device Monitor</a> can’t be running.
-  </li>
-</ul>
-
-</div>
-</div>
-
-<p>
-  Android Monitor helps you to profile the performance of your apps so you can optimize, debug, and
-  improve them. It lets you monitor the following aspects of your apps from a hardware device or
-  the Android Studio emulator:
-</p>
-
-<ul>
-  <li>
-    <a href="{@docRoot}reference/android/util/Log.html">Log</a> messages, either
-    system- or user-defined
-  </li>
-
-  <li>Memory, CPU, and GPU usage
-  </li>
-
-  <li>Network traffic (hardware device only)
-  </li>
-</ul>
-
-<p>
-  Android Monitor contains the logcat, Memory, CPU, GPU, and Network Monitors that you can use
-  separately to examine these aspects of your apps.
-</p>
-
-
-<h2 id="displaying">
-  Displaying Android Monitor
-</h2>
-
-<p>
-  Android Monitor is integrated into the Android Studio main window:
-</p>
-
-<ul>
-  <li>To display Android Monitor, click <img src="{@docRoot}images/tools/am-icon.png"
-    style="vertical-align:sub;margin:0;height:17px" alt="Android Monitor icon" />, which by default
-  is at the bottom of the main window.
-  </li>
-
-  <li>To hide Android Monitor, click <img src="{@docRoot}images/tools/am-icon.png"
-    style="vertical-align:sub;margin:0;height:17px" alt="Android Monitor icon" /> again.
-  </li>
-</ul>
-<img src="{@docRoot}images/tools/am-androidmon.png" style="vertical-align:sub;margin:0;width:480px" />
-
-<h2 id="profiling">
-  Profiling a Running App in Android Monitor
-</h2>
-
-<p>
-  Follow these steps:
-</p>
-
-<ol>
-  <li>Optionally connect a hardware device.
-  </li>
-
-  <li>
-    <a href="#displaying">Display Android Monitor</a>.
-  </li>
-
-  <li>Open an app project and <a href=
-  "{@docRoot}tools/building/building-studio.html#RunningApp">run the app</a> on a device or
-  emulator.
-  </li>
-
-  <li>Click the tab for the monitor you want to view and start the monitor, if needed:
-    <ul>
-      <li><a href="{@docRoot}tools/help/am-logcat.html">logcat Monitor</a>
-      </li>
-
-      <li><a href="{@docRoot}tools/help/am-memory.html">Memory Monitor</a>
-      </li>
-
-      <li><a href="{@docRoot}tools/help/am-cpu.html">CPU Monitor</a>
-      </li>
-
-      <li><a href="{@docRoot}tools/help/am-gpu.html">GPU Monitor</a>
-      </li>
-
-      <li>
-        <a href="{@docRoot}tools/help/am-network.html">Network Monitor</a>
-      </li>
-    </ul>
-</ol>
-    <h2 id="switching">
-      Switching between Devices and Apps
-    </h2>
-
-    <p>
-      By default, Android Monitor displays data for your most recently run app. You can switch to
-      another device and app as needed. In addition to currently running apps, you can view
-      information about apps that are no longer running so you can continue to view any information
-      about them that you gathered previously.
-    </p>
-
-    <p>
-      At the top of the Android Monitor main window are two menus listing devices and processes. To
-      switch to another device, process, or both, follow these steps:
-    </p>
-
-    <ol>
-      <li>Select the device or emulator.
-      </li>
-
-    <p>
-      The Device menu lists the devices and emulators that are running or have run during your
-      current session. There are various status messages that can appear in the Device menu:
-    </p>
-
-    <ul>
-      <li>
-        <strong>DISCONNECTED</strong> - You closed an emulator or unplugged a device from the
-        computer.
-      </li>
-
-      <li>
-        <strong>UNAUTHORIZED</strong> - A device needs you to accept the incoming computer
-        connection. For example, if the connected device displays an <em>Allow USB Debugging</em>
-        dialog, click <strong>OK</strong> to allow the connection.
-      </li>
-
-      <li>
-        <strong>OFFLINE</strong> - Android Monitor can’t communicate with a device, even though it
-        has detected that device.
-      </li>
-    </ul>
-
-  <li>Select the process.
-  </li>
-</ol>
-
-<p>
-  The Process menu lists the processes that are running or have run during your current session. If
-  a process is no longer running, the menu displays a status of <strong>DEAD</strong>.
-</p>
-
-<h2 id="screencapture">
-  Taking a Screen Capture of the Device
-</h2>
-
-<p>
-  You can take a PNG screenshot of the display on a connected device or the emulator. You can use
-  the images for your marketing materials as well as for debugging, for example.
-</p>
-<p>
-  Follow these steps:
-</p>
-<ol>
-  <li>
-    <a href="{@docRoot}training/basics/firstapp/running-app.html">Run your
-    app</a> from within Android Studio.
-  </li>
-
-  <li>
-    <a href="#switching">Select the device and the process</a> in the Android Monitor
-    menus, if needed.
-  </li>
-
-  <li>Interact with the display on the device or emulator to stage the image you want.
-  </li>
-
-  <li>Click Screen Capture <img src="{@docRoot}images/tools/am-iscreencapture.png"
-    style="vertical-align:sub;margin:0;height:17px" alt="Screen Capture icon" /> in the
-    Android Monitor toolbar.
-  </li>
-  <p>The screenshot appears in a <em>Screenshot Editor</em> window.</p>
-
-  <li>Optionally change the image:
-    <ul>
-      <li>
-        <strong>Reload</strong> - Click to take a new screenshot.
-      </li>
-
-      <li>
-        <strong>Rotate</strong> - Click to rotate the image 90 degrees clockwise.
-      </li>
-
-      <li>
-        <strong>Frame Screenshot</strong> - Select this option and choose a device to add an image
-        of the device to the outside of the screenshot. Select <strong>Drop Shadow</strong>,
-        <strong>Screen Glare</strong>, or both to add these effects to your image.
-      </li>
-
-      <li>
-        <strong>Chessboard</strong> and <strong>Grid</strong> - Select an option to display these
-        behind your image.
-      </li>
-
-      <li>
-        <strong>Zoom In</strong>, <strong>Zoom Out</strong>, or <strong>Actual Size</strong> -
-        Click these options to get different perspectives of your image without changing the image
-        itself.
-      </li>
-    </ul>
-    </li>
-      <li>Click <strong>Save</strong> to save the image.
-      </li>
-</ol>
-
-<h2 id="video">
-  Recording a Video from the Screen
-</h2>
-
-<p>
-  Android Studio lets you record an MP4 video from your hardware device for a maximum of three
-  minutes. You can use the video for your marketing materials as well as for debugging, for
-  example.
-</p>
-<p>
-  Follow these steps:
-</p>
-<ol>
-  <li>
-    <a href="{@docRoot}training/basics/firstapp/running-app.html">Run your
-    app</a> from within Android Studio.
-  </li>
-
-  <li>
-    <a href="#switching">Select the device and the process</a> in the Android Monitor
-    menus, if needed.
-  </li>
-
-  <li>Interact with the display on the device or emulator to stage the start of the video.
-  </li>
-
-  <li>Click Screen Record <img src="{@docRoot}images/tools/am-ivideo.png" style="vertical-align:sub;margin:0;height:17px" alt="Screen Record icon" /> in the Android Monitor toolbar.
-  </li>
-  <p>The screenshot appears in a Screenshot Editor window.</p>
-
-  <li>In the <em>Screen Recorder Options</em> dialog, optionally change the recording options:
-  </li>
-<ul>
-  <li>
-    <strong>Bit Rate</strong> - Type a bit rate. The default is 4 Mbps.
-  </li>
-
-  <li>
-    <strong>Resolution</strong> - Type a width and height value in pixels. The value must be a
-    multiple of 16. The default is the resolution of the device.
-  </li>
-</ul>
-  <li>Click <strong>Start Recording</strong> to start the recording.
-  </li>
-
-  <li>Click <strong>Stop Recording</strong> to stop the recording.
-  </li>
-
-  <li>In the <em>Save As</em> dialog, save the MP4 file.
-  </li>
-
-  <li>In the <em>Screen Recorder</em> dialog, click one of the buttons to show the file location,
-  open the recording in a player, or to dismiss the dialog.
-  </li>
-</ol>
-
-<h2 id="sysinfo">
-  Examining System Information
-</h2>
-<p>
-  You can view <code>dumpsys</code> output from within Android Monitor. Follow these steps:
-</p>
-
-<ol>
-  <li>
-    <a href="{@docRoot}training/basics/firstapp/running-app.html">Run your
-    app</a> from within Android Studio.
-  </li>
-
-  <li>
-    <a href="#switching">Select the device and the process</a> in the Android Monitor
-    menus, if needed.
-  </li>
-
-  <li>Click System Information <img src="{@docRoot}images/tools/am-isysteminfo.png"
-    style="vertical-align:sub;margin:0;height:17px" alt="System Information icon" /> and then a
-    menu item in the Android Monitor
-  toolbar.
-  </li>
-
-<p>
-  The menu items display different types of <code><a href=
-  "https://source.android.com/devices/tech/debug/dumpsys.html">dumpsys</a></code> output:
-</p>
-
-<ul>
-  <li>
-    <strong>Activity Manager State</strong> - <code>dumpsys activity</code>
-  </li>
-
-  <li>
-    <strong>Package Information</strong> - <code>dumpsys package</code>
-  </li>
-
-  <li>
-    <strong>Memory Usage</strong> - <code><a href=
-    "{@docRoot}tools/debugging/debugging-memory.html#ViewingAllocations">dumpsys
-    meminfo</a></code>
-  </li>
-
-  <li>
-    <strong>Memory Use Over Time</strong> - <code><a href=
-    "http://android-developers.blogspot.com/2014/01/process-stats-understanding-how-your.html">dumpsys
-    procstats</a></code>
-  </li>
-
-  <li>
-    <strong>Graphics State</strong> - <code><a href=
-    "{@docRoot}training/testing/performance.html">dumpsys gfxinfo</a></code>
-  </li>
-</ul>
-
-<p>
-  The information appears in an editable text file in the Code Editor.
-</p>
-</ol>
-
-<h2 id="terminating">
-  Terminating the App
-</h2>
-
-<p>
-  If you want to stop an app you’ve run from Android Studio, follow these steps:
-</p>
-
-<ol>
-  <li>
-    <a href="#switching">Select the device and the process</a> in the Android Monitor
-    menus, if needed.
-  </li>
-
-  <li>Click Terminate Application <img src="{@docRoot}images/tools/am-iterminate.png"
-    style="vertical-align:sub;margin:0;height:17px" alt="Terminate App icon" />.
-  </li>
-
-
-<p>
-  The process status changes to <strong>DEAD</strong> in the Processes menu. The emulator or device
-  continues to run, but the app closes. Any running monitors in Android Monitor stop.
-</p>
-</ol>
-
-<h2 id="rearranging">
-  Rearranging Android Monitor Windows
-</h2>
-
-<p>
-  You can rearrange the Android Monitor windows for optimal viewing during your tests:
-</p>
-
-<ul>
-  <li>To reorder the monitors, move the tabs back and forth.
-  </li>
-
-  <li>To move a monitor to a standalone window, grab a tab and move it to a different location on
-  the screen. Or, select <img src="{@docRoot}images/tools/am-igear.png" style="vertical-align:sub;margin:0;height:17px" alt="Gear menu icon" /> &gt; <strong>Floating Mode</strong>.
-  </li>
-
-
-  <li>To dock a standalone window, grab it and move it to the Android Monitor area. Or, select
-  <img src="{@docRoot}images/tools/am-igear.png" style="vertical-align:sub;margin:0;height:17px"
-  alt="Gear menu icon"> &gt; <strong>Floating Mode</strong> to deselect it.
-  </li>
-
-
-  <li>To combine two monitor displays together, grab a tab and move it onto another monitor.
-  </li>
-
-  <li>To hide a monitor, click the <img src="{@docRoot}images/tools/am-ihide.png" style="vertical-align:sub;margin:0;height:17px" alt="Hide icon" /> icon. To make it reappear, click the icon of
-  the monitor on the far right of the row of tabs.
-  </li>
-</ul>
-
-<h2 id="removing">
-  Removing an App from a Device
-</h2>
-
-<p>
-  To remove an app from a device you use for development, use the normal uninstall procedure on the
-  device.
-</p>
-
-<p>
-  If you run a new version of an app from Android Studio that’s been already installed on a
-  hardware device, the device displays an <em>Application Installation Failed</em> dialog. Click
-  <strong>OK</strong> to install the new version of the app.
-</p>
-
-
-
-
diff --git a/docs/html/tools/help/android.jd b/docs/html/tools/help/android.jd
deleted file mode 100755
index fa359e9..0000000
--- a/docs/html/tools/help/android.jd
+++ /dev/null
@@ -1,418 +0,0 @@
-page.title=android
-parent.title=Tools
-parent.link=index.html
-@jd:body
-
-<p>{@code android} is an important development tool that lets you:</p>
-
-  <ul>
-    <li>Create, delete, and view Android Virtual Devices (AVDs). See <a href=
-    "{@docRoot}tools/devices/managing-avds-cmdline.html">Managing AVDs from the Command Line</a>.</li>
-
-    <li>Create and update Android projects. See <a href=
-    "{@docRoot}tools/projects/projects-cmdline.html">Managing Projects from
-    the Command Line</a>.</li>
-
-    <li>Update your Android SDK with new platforms, add-ons, and documentation. See <a href=
-    "{@docRoot}tools/help/sdk-manager.html">SDK Manager</a>.</li>
-  </ul>
-
-<p>If you are using Android Studio, the <code>android</code> tool's features are
-integrated into the IDE, so you should not need to use this tool directly. </p>
-
-  <p class="note"><strong>Note:</strong> The documentation of options below is not exhaustive
-and may be out of date. For the most current list of options, execute <code>android
---help</code>.</p>
-
-
-
-
-  <h2>Syntax</h2>
-  <pre>android [global options] action [action options]</pre>
-
-  <h3>Global Options</h3>
-
-  <dl>
-    <dt><code>-s</code></dt>
-
-    <dd>Silent mode: only errors are printed out</dd>
-
-    <dt><code>-h</code></dt>
-
-    <dd>Usage help</dd>
-
-    <dt><code>-v</code></dt>
-
-    <dd>Verbose mode: errors, warnings and informational messages are printed.</dd>
-  </dl>
-
-  <h3>AVD actions and options</h3>
-
-  <table>
-    <tr>
-      <th width="15%">Action</th>
-
-      <th width="20%">Option</th>
-
-      <th width="30%">Description</th>
-
-      <th>Comments</th>
-    </tr>
-
-    <tr>
-      <td><code>avd</code></td>
-
-      <td>None</td>
-
-      <td>Launch the AVD Manager</td>
-
-      <td></td>
-    </tr>
-
-    <tr>
-      <td><code>sdk</code></td>
-
-      <td>None</td>
-
-      <td>Launch the Android SDK Manager</td>
-
-      <td></td>
-    </tr>
-
-    <tr>
-      <td rowspan="6"><code>create avd</code></td>
-
-      <td><code>-n &lt;name&gt;</code></td>
-
-      <td>The name for the AVD.</td>
-
-      <td>Required</td>
-    </tr>
-
-    <tr>
-      <td><code>-t &lt;targetID&gt;</code></td>
-
-      <td>Target ID of the system image to use with the new AVD. To obtain a list of available
-      targets, use <code>android list targets</code></td>
-
-      <td>Required</td>
-    </tr>
-
-    <tr>
-      <td><code>-c &lt;path&gt;|&lt;size&gt;[K|M]</code></td>
-
-      <td>The path to the SD card image to use with this AVD or the size of a new SD card image to
-      create for this AVD. For example, <code>-c path/to/sdcard</code> or <code>-c
-      1000M</code>.</td>
-
-      <td></td>
-    </tr>
-
-    <tr>
-      <td><code>-f</code></td>
-
-      <td>Force creation of the AVD</td>
-
-      <td></td>
-    </tr>
-
-    <tr>
-      <td><code>-p &lt;path&gt;</code></td>
-
-      <td>Path to the location at which to create the directory for this AVD's files.</td>
-
-      <td></td>
-    </tr>
-
-    <tr>
-      <td><code>-s &lt;name&gt;|&lt;width&gt;-&lt;height&gt;</code></td>
-
-      <td>The skin to use for this AVD, identified by name or dimensions. The <code>android</code>
-      tool scans for a matching skin by name or dimension in the <code>skins/</code> directory of
-      the target referenced in the <code>-t &lt;targetID&gt;</code> argument. For example, <code>-s
-      HVGA-L</code></td>
-
-      <td></td>
-    </tr>
-
-    <tr>
-      <td><code>delete avd</code></td>
-
-      <td><code>-n &lt;name&gt;</code></td>
-
-      <td>The name of the AVD to delete</td>
-
-      <td>Required</td>
-    </tr>
-
-    <tr>
-      <td rowspan="3"><code>move avd</code></td>
-
-      <td><code>-n &lt;name&gt;</code></td>
-
-      <td>The name of the AVD to move</td>
-
-      <td>Required</td>
-    </tr>
-
-    <tr>
-      <td><code>-p &lt;path&gt;</code></td>
-
-      <td>Path to the location at which to create the directory for this AVD's files.</td>
-
-      <td></td>
-    </tr>
-
-    <tr>
-      <td><code>-r &lt;new-name&gt;</code></td>
-
-      <td>New name of the AVD if you want to rename it</td>
-
-      <td></td>
-    </tr>
-
-    <tr>
-      <td><code>update avd</code></td>
-
-      <td><code>-n &lt;name&gt;</code></td>
-
-      <td>The name of the AVD to move</td>
-
-      <td>Required</td>
-    </tr>
-  </table>
-
-  <h3>Project actions and options</h3>
-
-  <table>
-    <tr>
-      <th width="15%">Action</th>
-
-      <th width="20%">Option</th>
-
-      <th width="30%">Description</th>
-
-      <th>Comments</th>
-    </tr>
-
-    <tr>
-      <td rowspan="5"><code>create project</code></td>
-
-      <td><code>-n &lt;name&gt;</code></td>
-
-      <td>The name for the project</td>
-
-      <td>Required</td>
-    </tr>
-
-    <tr>
-      <td><code>-t &lt;targetID&gt;</code></td>
-
-      <td>Target ID of the system image to use with the new AVD. To obtain a list of available
-      targets, use <code>android list targets</code></td>
-
-      <td>Required</td>
-    </tr>
-
-    <tr>
-      <td><code>-k &lt;path&gt;|&lt;size&gt;[K|M]</code></td>
-
-      <td>Package namespace</td>
-
-      <td>Required</td>
-    </tr>
-
-    <tr>
-      <td><code>-a</code></td>
-
-      <td>Name for the default Activity class</td>
-
-      <td>Required</td>
-    </tr>
-
-    <tr>
-      <td><code>-p &lt;path&gt;</code></td>
-
-      <td>Location of your project directory</td>
-
-      <td>Required</td>
-    </tr>
-
-    <tr>
-      <td rowspan="5"><code>update project</code></td>
-
-      <td><code>-n &lt;name&gt;</code></td>
-
-      <td>The name of the project to update</td>
-
-      <td></td>
-    </tr>
-
-    <tr>
-      <td><code>-p &lt;path&gt;</code></td>
-
-      <td>Location path of the project</td>
-
-      <td>Required</td>
-    </tr>
-
-    <tr>
-      <td><code>-l &lt;library path&gt;</code></td>
-
-      <td>Location path of an Android Library to add, relative to the main project</td>
-
-      <td></td>
-    </tr>
-
-    <tr>
-      <td><code>-s &lt;subprojects&gt;</code></td>
-
-      <td>Update any projects in subfolders such as test projects</td>
-
-      <td></td>
-    </tr>
-
-    <tr>
-      <td><code>-t &lt;targetID&gt;</code></td>
-
-      <td>Target id to set for the project</td>
-
-      <td></td>
-    </tr>
-
-    <tr>
-      <td rowspan="3"><code>create test-project</code></td>
-
-      <td><code>-n &lt;name&gt;</code></td>
-
-      <td>The name of the project</td>
-
-      <td></td>
-    </tr>
-
-    <tr>
-      <td><code>-p &lt;path&gt;</code></td>
-
-      <td>Location path of the project</td>
-
-      <td>Required</td>
-    </tr>
-
-    <tr>
-      <td><code>-m &lt;main&gt;</code></td>
-
-      <td>The name of the project</td>
-
-      <td>Required</td>
-    </tr>
-
-    <tr>
-      <td rowspan="2"><code>update test-project</code></td>
-
-      <td><code>-p &lt;path&gt;</code></td>
-
-      <td>Location path of the project to test, relative to the new project</td>
-
-      <td>Required</td>
-    </tr>
-
-    <tr>
-      <td><code>-m &lt;main&gt;</code></td>
-
-      <td>The main class of the project to test</td>
-
-      <td>Required</td>
-    </tr>
-
-    <tr>
-      <td rowspan="4"><code>create lib-project</code></td>
-
-      <td><code>-k &lt;packageName&gt;</code></td>
-
-      <td>(Required) Package name of the library project</td>
-
-      <td>Required</td>
-    </tr>
-
-    <tr>
-      <td><code>-p &lt;path&gt;</code></td>
-
-      <td>Location path of the project</td>
-
-      <td>Required</td>
-    </tr>
-
-    <tr>
-      <td><code>-t &lt;targetID&gt;</code></td>
-
-      <td>Target ID of the library project</td>
-
-      <td>Required</td>
-    </tr>
-
-    <tr>
-      <td><code>-n &lt;name&gt;</code></td>
-
-      <td>The name of the project</td>
-
-      <td>Required</td>
-    </tr>
-
-    <tr>
-      <td rowspan="3"><code>update lib-project</code></td>
-
-      <td><code>-p &lt;path&gt;</code></td>
-
-      <td>Location path of the project</td>
-
-      <td>Required</td>
-    </tr>
-
-    <tr>
-      <td><code>-l &lt;libraryPath&gt;</code></td>
-
-      <td>Location path of an Android Library to add, relative to the main project</td>
-
-      <td></td>
-    </tr>
-
-    <tr>
-      <td><code>-t &lt;name&gt;</code></td>
-
-      <td>Target ID of the library project</td>
-
-      <td></td>
-    </tr>
-
-    <tr>
-      <td rowspan="3"><code>create uitest-project</code></td>
-      <td><code>-n &lt;name&gt;</code></td>
-      <td>The name of the UI test project</td>
-      <td></td>
-    </tr>
-
-    <tr>
-      <td><code>-t &lt;name&gt;</code></td>
-
-      <td>Target ID of the UI test project</td>
-
-      <td>Required</td>
-    </tr>
-
-    <tr>
-      <td><code>-p &lt;path&gt;</code></td>
-
-      <td>Location path of the UI test project</td>
-
-      <td>Required</td>
-    </tr>
-
-  </table>
-
-  <h3>Update actions</h3>
-  <dl>
-  <dt><code>update adb</code></dt>
-  <dd>Updates adb to support the USB devices declared in the SDK add-ons.</dd>
-   
-  <dt><code>update sdk</code></dt>
-  <dd>Updates the SDK by suggesting new platforms to install if available.</dd>
diff --git a/docs/html/tools/help/app-link-indexing.jd b/docs/html/tools/help/app-link-indexing.jd
deleted file mode 100644
index 611373a..0000000
--- a/docs/html/tools/help/app-link-indexing.jd
+++ /dev/null
@@ -1,514 +0,0 @@
-page.title=Deep Link and App Indexing API Support in Android Studio
-parent.title=Tools
-parent.link=index.html
-page.tags=app indexing
-@jd:body
-
-<div id="qv-wrapper">
-<div id="qv">
-  <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="#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="#testindexing">Viewing App Indexing API Messages in the logcat Monitor</a></li>
-  <li><a href="#lint">Configuring Lint</a></li>
-</ol>
-
- <h2>See also</h2>
-  <ol>
-    <li><a href="https://developers.google.com/app-indexing/introduction"
-      class="external-link">App Indexing</a></li>
-    <li><a href="{@docRoot}training/app-indexing/index.html"
-      >Making Your App Content Searchable by Google</a></li>
-    <li><a href="{@docRoot}training/app-links/index.html">Handling App Links</a></li>
-    <li><a href="{@docRoot}tools/debugging/improving-w-lint.html"
-      >Improving Your Code with lint</a></li>
-    <li><a href="{@docRoot}tools/help/am-logcat.html">logcat Monitor</a></li>
-    <li><a href="https://www.google.com/webmasters/tools/home"
-      class="external-link">Google Search Console</a></li>
-    <li><a href="https://developers.google.com/android/guides/overview"
-      class="external-link">Google Play Services</a></li>
-  </ol>
-
-  <h2>Video</h2>
-  <ol>
-    <li><a href="https://www.youtube.com/watch?v=aISUYHTkTOU"
-      class="external-link">DevBytes: App Indexing</a></li>
-  </ol>
-
-  <h2>Dependencies and prerequisites</h2>
-  <ul>
-    <li>Android 2.3 (API level 9) or higher</li>
-    <li>Android Studio 1.5 or higher</li>
-    <li>Google Play Services 8.1.0 or higher</li>
-  </ul>
-
-</div>
-</div>
-
-<p>Android Studio helps you add deep links, 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>
-
-<ol>
-<li>Add intent filters and code to handle incoming intents.</li>
-<li>Associate a website with your app.</li>
-<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
-  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>
-
-<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
-  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
-  Google Search app, and in Google Now on Tap. </p>
-
-<h3 id="aboutassociation">Website association with deep links</h3>
-
-<p>After setting up deep links 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
-  exclude app content from Google Search. After you associate a website with your app, features
-  such as Now on Tap and enhanced search result display (like including your app icon)
-  become available.</p>
-
-<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>
-  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
-  in their search results. </p>
-
-<h3 id="aboutapi">App Indexing API code in activities</h3>
-
-<p>Next, if you want to support additional search features, such as autocompletions, you can
-  add App Indexing API code to your app. Android Studio can create skeleton code in an activity
-  that you can then customize to support app indexing. The App Indexing API allows app indexing
-  even if
-  <a href="https://developers.google.com/app-indexing/reference/deeplinks#allow-access-by-googlebot-optional"
-  class="external-link">Googlebot</a>
-  can’t get content from your app.</p>
-
-<h3 id="abouttest">Deep link 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>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
-  API. These warnings and errors appear in the Code Editor and in Lint inspection results.</li>
-</ul>
-
-<p>The details for implementing deep links and app indexing are described next.
-
-
-<h2 id="intent">Adding an Intent Filter for Deep Linking and Google Search</h2>
-
-<p>To use Android Studio features to add an intent filter defining a deep link, follow these
-  steps:</p>
-
-<ol>
-<li>In the <a href="{@docRoot}sdk/installing/create-project.html#ProjectView">Android view</a>
-  of the <em>Project</em> window, double-click the <code>AndroidManifest.xml</code> file to open it
-  in the Code Editor.</li>
-<li>Insert an intent filter in one of the following ways:</li>
-<ul>
-<li>In an <code>&lt;activity&gt;</code> element, click in the left column so the light bulb
-  <img src="{@docRoot}images/tools/ai-ilightbulb.png"
-    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>
-<li>Right-click in an <code>&lt;activity&gt;</code> element and select <strong>Generate</strong>
-  &gt; <strong>Deep Link</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>
-</ul>
-
-<p>The Code Editor adds skeleton code using the
-  <a href="https://www.jetbrains.com/idea/help/intention-actions.html"
-  class="external-link">intention action</a> and
-  <a href="https://www.jetbrains.com/idea/help/generating-code.html"
-  class="external-link">generate code</a> mechanisms.</p>
-
-<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;
-&lt;intent-filter&gt;
-   &lt;action android:name="android.intent.action.VIEW" /&gt;
-
-   &lt;category android:name="android.intent.category.DEFAULT" /&gt;
-   &lt;category android:name="android.intent.category.BROWSABLE" /&gt;
-   &lt;!-- ATTENTION: This data URL was auto-generated.
-     We recommend that you use the HTTP scheme.
-     TODO: Change the host or pathPrefix as necessary. --&gt;
-   &lt;data
-       android:host="www.example.com"
-       android:pathPrefix="/gizmos"
-       android:scheme="http" /&gt;
-&lt;/intent-filter&gt;
-</pre>
-
-<li><a href="{@docRoot}training/app-indexing/deep-linking.html#adding-filters">Modify the
-  <code>&lt;data&gt;</code> element</a>
-  and optionally the <code>&lt;category&gt;</code> element, as needed.</li>
-
-
-<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>
-
-<p>Deep link URLs 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>
-
-</ol>
-
-<p>To support Google Search for your deep links, follow these steps:</p>
-<ol>
-<li><a href="https://developers.google.com/app-indexing/android/app#declare-a-website-association"
-  class="external-link">Define an association</a>
-  between your app and your website.</li>
-<p>Alternatively, for Android 6.0 (API level 23) and higher, add
-  <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>
-  from the Google index.</li>
-<li>Optionally <a href="#indexing">add App Indexing API code</a> to support additional search
-  features.</li>
-</ol>
-
-
-<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="#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>
-</ul>
-</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>
-
-
-
-<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>To add App Indexing API code to an activity, follow these steps:</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
-  Code Editor.</li>
-<li>Insert skeleton code in one of the following ways:</li>
-<ul>
-<li>In an activity definition, click in the Java code so the light bulb
-  <img src="{@docRoot}images/tools/ai-ilightbulb.png"
-  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>Insert App Indexing API Code</strong>.</li>
-<li>Right-click in an activity definition and select <strong>Generate</strong> &gt;
-  <strong>App Indexing API Code</strong>.</li>
-<li>Place the cursor in an activity, and then select <strong>Code</strong> &gt;
-  <strong>Generate</strong> &gt;
-  <strong>App Indexing API Code</strong>.</li>
-</ul>
-
-
-<p>The Code Editor adds skeleton code using the
-  <a href="https://www.jetbrains.com/idea/help/intention-actions.html"
-  class="external-link">intention action</a> and
-  <a href="https://www.jetbrains.com/idea/help/generating-code.html"
-  class="external-link">generate code</a>
-  mechanisms.</p>
-
-<p>If you don’t see the <strong>App Indexing API Code</strong> menu item, make sure your cursor is
-  within an activity, and check your code for App Indexing API methods. The Code Editor can insert
-  skeleton Java code into an activity in the following circumstances:</p>
-
-<ul>
-<li>The activity doesn’t have an <code>onStart()</code> method, or the <code>onStart()</code>
-  method doesn’t contain an <code>AppIndexApi.start()</code> or <code>AppIndexApi.view()</code>
-  call.</li>
-<li>The activity doesn’t have an <code>onStop()</code> method, or the <code>onStop()</code>
-  method doesn’t contain an <code>AppIndexApi.end()</code> or <code>AppIndexApi.viewEnd()</code>
-  call.</li>
-</ul>
-
-
-<p>The Code Editor adds Java code similar to the following:</p>
-<pre>
-   /**
-    * ATTENTION: This was auto-generated to implement the App Indexing API.
-    * See https://g.co/AppIndexing/AndroidStudio for more information.
-    */
-   private GoogleApiClient client;
-
-       // ATTENTION: This was auto-generated to implement the App Indexing API.
-       // See https://g.co/AppIndexing/AndroidStudio for more information.
-       client = new GoogleApiClient.Builder(this).addApi(AppIndex.API).build();
-   }
-
-
-   &#64;Override
-   public void onStart() {
-       super.onStart();
-
-       // ATTENTION: This was auto-generated to implement the App Indexing API.
-       // See https://g.co/AppIndexing/AndroidStudio for more information.
-       client.connect();
-       Action viewAction = Action.newAction(
-               Action.TYPE_VIEW, // TODO: choose an action type.
-               "Main Page", // TODO: Define a title for the content shown.
-               // TODO: If you have web page content that matches
-               // 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")
-       );
-       AppIndex.AppIndexApi.start(client, viewAction);
-   }
-
-   &#64;Override
-   public void onStop() {
-       super.onStop();
-
-       // ATTENTION: This was auto-generated to implement the App Indexing API.
-       // See https://g.co/AppIndexing/AndroidStudio for more information.
-       Action viewAction = Action.newAction(
-               Action.TYPE_VIEW, // TODO: choose an action type.
-               "Main Page", // TODO: Define a title for the content shown.
-               // TODO: If you have web page content that matches
-               // 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")
-       );
-       AppIndex.AppIndexApi.end(client, viewAction);
-       client.disconnect();
-   }
-}
-</pre>
-
-<p>For more information about the App Indexing API methods, see
-  <a href="https://developers.google.com/app-indexing/reference/package-summary"
-  class="external-link">Android API for App Indexing</a>.
-  For information about the action types, see the
-  <a href="https://developers.google.com/android/reference/com/google/android/gms/appindexing/Action#constant-summary"
-  class="external-link">Action Class Constant Summary</a>.
-</p>
-
-<p>If your app isn’t already configured for the Google Play Services App Indexing API, the Code
-  Editor also modifies your <code>build.gradle</code> and <code>AndroidManifest.xml</code> files
-  to include it. If your app already depends on it but the version is lower than 8.1.0, your app
-  is upgraded to version 8.1.0. For more information and to correct any issues, see
-  <a href="https://developers.google.com/app-indexing/android/publish#add-google-play-services"
-  class="external-link">Add Google Play Services</a>
-  and <a href="https://developers.google.com/android/guides/setup"
-  class="external-link">Setting Up Google Play Services</a>.
-</p>
-
-<li>Customize the skeleton code, as needed.</li>
-
-<p>Pay attention to the comments, which help you find areas that need work, such as setting the
-  title and URLs. For more information, see
-  <a href="https://developers.google.com/app-indexing/android/publish"
-  class="external-link">Add the App Indexing API</a>.
-</p>
-<li><a href="#testindexing">Verify that your app indexing code is working</a> by using
-  the logcat Monitor.</li>
-</ol>
-
-
-
-<p>To test and debug your App Indexing API code, you can use the following Android Studio
-  features:</p>
-<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>
-</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>.</p>
-
-
-<h2 id="testintent">Testing a Deep Link</h2>
-
-<p>When you run your app from Android Studio, you can specify a deep link to launch so you can
-  test it.</p>
-
-<p>To launch a deep link from Android Studio, follow these steps:</p>
-<ol>
-<li>In Android Studio, open your project in
-  <a href="{@docRoot}sdk/installing/create-project.html#ProjectView">Android view</a>.</li>
-<li>After opening a project, select <strong>Run</strong> &gt; <strong>Edit Configurations</strong>.
-</li>
-<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>
-
-<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
-  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
-  the specified activity. Otherwise, an error message appears in the <em>Run</em> window.</p>
-</ol>
-
-<p>For more information about creating run configurations at the project, default, and module
-  levels, see
-  <a href="{@docRoot}tools/building/building-studio.html">Building and Running from Android Studio</a>.
-</p>
-
-<p>You can view App Indexing API log messages while the app is running, as described next.</p>
-
-
-<h2 id="testindexing">Viewing App Indexing API Messages in the logcat Monitor</h2>
-
-<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>
-
-<p>Follow these steps:</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>
-  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>
-<li>In the filter menu, select <strong>No Filters</strong>.</li>
-<li><a href="{@docRoot}tools/help/am-logcat.html#searching">Search the log</a> for the string
-  "appindex".</li>
-
-<p>App indexing log messages should appear. If they don’t, check the following items:</p>
-<ul>
-<li>Is Google Play Services installed on the device or emulator? You can check the settings on
-  the device. </li>
-<li>Is the Google Play Services version on the device or emulator lower than the version specified
-  in the <code>build.gradle</code> file? If so, it might be out-of-date and should be upgraded to
-  a higher version.  </li>
-</ul>
-
-<p>For more information, see the
-  <a href="https://play.google.com/store/apps/details?id=com.google.android.gms&hl=en"
-  class="external-link">Google Play Services Download</a>
-  page and <a href="https://developers.google.com/android/guides/setup"
-  class="external-link">Setting Up Google Play Services</a>.
-</p>
-<li>Visit app pages that trigger App Indexing API calls. </li>
-</ol>
-
-
-<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
-  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>
-<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>
-<li>In the Lint <em>Inspection Results</em> window after you select <strong>Analyze</strong> &gt;
-  <strong>Inspect Code</strong>.</li>
-</ul>
-
-
-
-<p>To set default Lint checks for deep links and the App Indexing API, follow these steps:</p>
-<ol>
-<li>In Android Studio, open your project in
-  <a href="{@docRoot}sdk/installing/create-project.html#ProjectView">Android view</a>.
-</li>
-<li>Select <strong>File</strong> &gt; <strong>Other Settings</strong> &gt;
-  <strong>Default Settings</strong>.</li>
-<li>In the <em>Default Preferences</em> dialog, select <strong>Editor</strong> &gt;
-  <strong>Inspections</strong>. </li>
-<li>In the <strong>Profile</strong> field, select <strong>Default</strong> or
-  <strong>Project Default</strong> to set the scope for Android Studio or just for this project,
-  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
-  default.</li>
-<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
-  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>
-
-<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>
-<ol>
-<li>In Android Studio, open your project in
-  <a href="{@docRoot}sdk/installing/create-project.html#ProjectView">Android view</a>
-  and select a portion of your project that you want to test.</li>
-<li>Select <strong>Analyze</strong> &gt; <strong>Inspect Code</strong>.</li>
-<li>In the <em>Specify Inspection Scope </em>dialog, select the inspection scope and profile. </li>
-
-<p>The scope specifies the files you want to analyze, and the profile specifies the Lint checks
-  you’d like to perform.</p>
-<li>If you want to change the Lint settings, click <strong>…</strong>. In the <em>Inspections</em>
-  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
-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>
-<li>Click <strong>OK</strong>.</li>
-<p>The results appear in the <em>Inspection Results</em> window.</p>
-
-</ol>
diff --git a/docs/html/tools/help/avd-manager.jd b/docs/html/tools/help/avd-manager.jd
deleted file mode 100755
index b3dcad5..0000000
--- a/docs/html/tools/help/avd-manager.jd
+++ /dev/null
@@ -1,19 +0,0 @@
-page.title=AVD Manager
-@jd:body
-
-
-<p>The AVD Manager provides a graphical user interface in which you can create
-and manage Android Virtual Devices (AVDs), which are required by the
-<a href="{@docRoot}tools/help/emulator.html">Android Emulator</a>.</p>
-
-<p>You can launch the AVD Manager in one of the following ways:</p>
-<ul>
-  <li>In Android Studio: select <strong>Tools &gt; Android &gt; AVD Manager</strong>, or click
-  the AVD Manager icon in the toolbar.</li>
-
-  <li>In other IDEs: Navigate to your SDK's <code>tools/</code> directory and execute
-  <code>android avd</code>.</li>
-</ul>
-
-<p>For more information, see <a href="{@docRoot}tools/devices/managing-avds.html">Managing
-AVDs with AVD Manager</a>.
diff --git a/docs/html/tools/help/bmgr.jd b/docs/html/tools/help/bmgr.jd
deleted file mode 100644
index 8823f33..0000000
--- a/docs/html/tools/help/bmgr.jd
+++ /dev/null
@@ -1,190 +0,0 @@
-page.title=bmgr
-parent.title=Tools
-parent.link=index.html
-@jd:body
-
-<!-- quickview box content here -->
-
-<div id="qv-wrapper">
-<div id="qv">
-  <h2>In this document</h2>
-  <ol>
-<li><a href="#backup">Forcing a Backup Operation</a></li>
-<li><a href="#restore">Forcing a Restore Operation</a></li>
-<li><a href="#other">Other Commands</a></li>
-  </ol>
-
-  <h2>See also</h2>
-  <ol>
-    <li><a href="{@docRoot}guide/topics/data/backup.html">Data Backup</a></li>
-  </ol>
-
-</div>
-</div>
-
-<!-- normal page content here -->
-
-<p><code>bmgr</code> is a shell tool you can use to interact with the Backup Manager
-on Android devices supporting API Level 8 or greater.  It provides commands to induce backup
-and restore operations so that you don't need to repeatedly wipe data or take similar
-intrusive steps in order to test your application's backup agent.  These commands are
-accessed via the <a href="{@docRoot}tools/help/adb.html">adb</a> shell.
-
-<p>For information about adding support for backup in your application, read <a
-href="{@docRoot}guide/topics/data/backup.html">Data Backup</a>, which includes a guide to testing
-your application using {@code bmgr}.</p>
-
-
-<h2 id="backup">Forcing a Backup Operation</h2>
-
-<p>Normally, your application must notify the Backup Manager when its data has changed, via {@link
-android.app.backup.BackupManager#dataChanged()}. The Backup Manager will then invoke your
-backup agent's {@link
-android.app.backup.BackupAgent#onBackup(ParcelFileDescriptor,BackupDataOutput,ParcelFileDescriptor)
-onBackup()} implementation at some time in the future. However, instead of calling {@link
-android.app.backup.BackupManager#dataChanged()}, you can invoke a backup request from the command
-line by running the <code>bmgr backup</code> command:
-
-    <pre class="no-pretty-print">adb shell bmgr backup <em>&lt;package&gt;</em></pre>
-
-<p><code><em>&lt;package&gt;</em></code> is the formal package name of the application you wish to
-schedule for
-backup. When you execute this backup command, your application's backup agent will be invoked to
-perform a backup operation at some time in the future (via your {@link
-android.app.backup.BackupAgent#onBackup(ParcelFileDescriptor,BackupDataOutput,ParcelFileDescriptor)
-onBackup()} method), though there is no guarantee when it will occur. However, you can force all
-pending backup operations to run immediately by using the <code>bmgr run</code> command:
-
-    <pre class="no-pretty-print">adb shell bmgr run</pre>
-
-<p>This causes a backup pass to execute immediately, invoking the backup agents of all applications
-that had previously called {@link android.app.backup.BackupManager#dataChanged()} since the
-last backup operation, plus any applications which had been manually scheduled for
-backup via <code>bmgr backup</code>.
-
-
-
-<h2 id="restore">Forcing a Restore Operation</h2>
-
-<p>Unlike backup operations, which are batched together and run on an occasional basis, restore
-operations execute immediately.  The Backup Manager currently provides two kinds of restore
-operations.  The first kind restores an entire device with the data that has been backed up.  This
-is typically performed only when a device is first provisioned (to replicate settings and other
-saved state from the user's previous device) and is an operation that only the system can
-perform. The second kind of restore operation restores
-a single application to its "active" data set; that is, the application will abandon its current
-data and revert to the last-known-good data that is held in the current backup image. You can
-invoke this second restore operation with the {@link
-android.app.backup.BackupManager#requestRestore(RestoreObserver) requestRestore()} method. The
-Backup Manager will then invoke your backup agent's {@link
-android.app.backup.BackupAgent#onRestore(BackupDataInput,int,ParcelFileDescriptor)
-onRestore()} implementation.
-
-<p>While testing your application, you can immediately invoke the restore operation (bypassing the
-{@link android.app.backup.BackupManager#requestRestore(RestoreObserver) requestRestore()} method)
-for your application by using the <code>bmgr restore</code> command:
-
-    <pre class="no-pretty-print">adb shell bmgr restore <em>&lt;package&gt;</em></pre>
-
-<p><code><em>&lt;package&gt;</em></code> is the formal Java-style package name of the application
-participating in the backup/restore mechanism, which you would like to restore. The Backup
-Manager will immediately instantiate the application's backup agent and invoke it for restore. This
-will happen even if your application is not currently running.
-
-
-
-
-
-<h2 id="other">Other Commands</h2>
-
-<h3>Wiping data</h3>
-
-<p>The data for a single application can be erased from the active data set on demand.  This is
-very useful while you're developing a backup agent, in case bugs lead you to write corrupt data
-or saved state information. You can wipe an application's data with the <code>bmgr wipe</code>
-command:
-
-    <pre class="no-pretty-print">adb shell bmgr wipe <em>&lt;package&gt;</em></pre>
-
-<p><code><em>&lt;package&gt;</em></code> is the formal package name of the application whose data
-you wish to
-erase.  The next backup operation that the application's agent processes will look as
-though the application had never backed anything up before.
-
-
-<h3>Enabling and disabling backup</h3>
-
-<p>You can see whether the Backup Manager is operational at all with the <code>bmgr
-enabled</code> command:
-
-    <pre class="no-pretty-print">adb shell bmgr enabled</pre>
-
-<p>This might be useful if your application's backup agent is never being invoked for backup, to
-verify whether the operating system thinks it should be performing such operations at all.</p>
-
-<p>You can also directly disable or enable the Backup Manager with this command:
-
-    <pre class="no-pretty-print">adb shell bmgr enable <em>&lt;boolean&gt;</em></pre>
-
-<p><code><em>&lt;boolean&gt;</em></code> is either <code>true</code> or <code>false</code>.
-This is equivalent to disabling or enabling backup in the device's main Settings UI.</p>
-
-<p class="warning"><strong>Warning!</strong>  When backup is disabled, the current backup transport
-will explicitly wipe
-the entire active data set from its backend storage.  This is so that when a user says
-they do <em>not</em> want their data backed up, the Backup Manager respects that wish.  No further
-data will be saved from the device, and no restore operations will be possible, unless the Backup
-Manager is re-enabled (either through Settings or through the above <code>bmgr</code> command).
-
-
-
-
-<!-- The following is not useful to applications, but may be some useful information some day...
-
-
-<h2 id="transports">Applying a Backup Transport</h2>
-
-<p>A "backup transport" is the code module responsible for moving backup and restore data
-to and from some storage location.  A device can have multipe transports installed, though only
-one is active at any given time.  Transports are identified by name.  You can see what
-transports are available on your device or emulator by running the
-<code>bmgr list transports</code> command:
-
-    <pre class="no-pretty-print">adb shell bmgr list transports</pre>
-
-<p>The output of this command is a list of the transports available on the device.  The currently
-active transport is flagged with a <code>*</code> character.  Transport names may look like
-component names (for example, <code>android/com.android.internal.backup.LocalTransport</code>),
-but they need not be, and the strings are never used as direct class references.  The use of
-a component-like naming scheme is simply for purposes of preventing name collisions.
-
-<p>You can change which transport is currently active from the command line as well:
-
-    <pre class="no-pretty-print">adb shell bmgr transport <em>&lt;name&gt;</em></pre>
-
-<p><code><em>&lt;name&gt;</em></code> is one of the names as printed by the <code>bmgr list
-transports</code>
-command.  From this point forward, backup and restore operations will be directed through the
-newly-selected transport.  Backup state tracking is managed separately for each transport, so
-switching back and forth between them will not corrupt the saved state.
-
-
-
-
-<h2 id="restoresets">Viewing Restore Sets</h2>
-
-<p>All of the application data that a device has written to its backup transport is tracked
-as a group that is collectively called a "restore set," because each data set is
-most often manipulated during a restore operation. When a device is provisioned for the first
-time, a new restore set is established.  You can get a listing of all the restore sets available to
-the current transport by running the <code>bmgr list sets</code> command:
-
-    <pre class="no-pretty-print">adb shell bmgr list sets</pre>
-
-<p>The output is a listing of available restore sets, one per line.  The first item on each line is
-a token (a hexadecimal value that identifies the restore set to the transport).  Following
-the token is a string that briefly identifies the restore set.
-Only the token is used within the backup and restore mechanism.
-
-
--->
diff --git a/docs/html/tools/help/ddms.html b/docs/html/tools/help/ddms.html
deleted file mode 100644
index d885d56..0000000
--- a/docs/html/tools/help/ddms.html
+++ /dev/null
@@ -1,10 +0,0 @@
-<html>
-<head>
-<meta http-equiv="refresh" content="0;url=http://developer.android.com/tools/debugging/ddms.html">
-<title>Redirecting...</title>
-</head>
-<body>
-<p>You should be redirected. Please <a
-href="http://developer.android.com/tools/debugging/ddms.html">click here</a>.</p>
-</body>
-</html>
\ No newline at end of file
diff --git a/docs/html/tools/help/desktop-head-unit.jd b/docs/html/tools/help/desktop-head-unit.jd
deleted file mode 100644
index a2b71e6..0000000
--- a/docs/html/tools/help/desktop-head-unit.jd
+++ /dev/null
@@ -1,439 +0,0 @@
-page.title=Desktop Head Unit
-page.tags="auto", "car", "testing","dhu"
-@jd:body
-
-
-<div id="qv-wrapper">
-<div id="qv">
-
-    <h2>In this document</h2>
-    <ol>
-      <li><a href="#launching-dhu">Launching the DHU</a></li>
-      <li><a href="#dhu-commands">Issuing DHU Commands</a></li>
-    </ol>
-
-  <h2>See also</h2>
-  <ol>
-    <li><a href="{@docRoot}training/auto/start/index.html#test-it-dhu">Run and Test Auto Apps</a></li>
-  </ol>
-
-</div>
-</div>
-
-
-<p>The Desktop Head Unit (DHU) enables your development machine to emulate an Android Auto
-head unit, so you can easily run and test Android Auto apps. The DHU runs on
-Windows, Mac, and Linux hosts and replaces previous Android Auto simulators,
-such as the Android Media Browser and Messaging
-simulators.</p>
-
-<p class="note"><strong>Note:</strong> For other information about testing Auto apps, see the
-training lesson
-<a href="{@docRoot}training/auto/start/index.html#test-it-dhu">Run and Test Auto Apps</a>.  </p>
-
-
-<h2 id="launching-dhu">Launching the DHU</h2>
-
-<p>
-  To launch the DHU, run the <code>desktop-head-unit.exe</code> (on Windows)
-  or <code>desktop-head-unit</code> (on Mac or Linux) command, as described in
-  <a href="{@docRoot}training/auto/start/index.html#connecting-dhu">Connecting
-  the DHU to your mobile device</a>.
-</p>
-
-<p>
-  By default, the DHU emulates the most common form of Android Auto-compatible
-  head unit, which uses a touch screen user interface. You can simulate user
-  touches by clicking the DHU with a mouse. To emulate head units which use
-  a rotary controller for input, you can use the <code>-i controller</code> flag,
-  as in this example:
-</p>
-
-<pre class="no-pretty-print">$ ./desktop-head-unit -i controller</pre>
-
-<p>
-  When the DHU is in rotary-controller mode you can simulate controller
-  operations by using keyboard shortcuts, as described in <a href=
-  "#cmd-bindings">DHU commands and key bindings</a>. If the DHU is in rotary
-  controller mode, it ignores mouse clicks; you must operate Android Auto with
-  the simulated rotary controller operations.
-</p>
-
-<h2 id="dhu-commands">Issuing DHU Commands</h2>
-
-<p>
-  DHU commands allow you to test your app with Android Auto features, such as
-  playing voice input or switching between night and day display mode. You can issue commands to
-  the DHU by running commands from the terminal window where you launched DHU.
-  You can also issue commands by selecting the DHU window and
-  using keyboard shortcuts. The DHU commands
-  and key bindings for all controls are listed in <a href="#cmd-bindings">DHU
-  commands and key bindings</a>.
-</p>
-
-
-<h3 id="day-night">Switching between day and night mode</h3>
-
-<p>
-  Android Auto supports different color schemes for day and night. You should test your app in both
-  day and night mode. You can switch between night and day mode in either of the
-  following ways:
-</p>
-
-<ul>
-  <li>Run the command <code>daynight</code> in the terminal where you launched the DHU.
-  </li>
-
-  <li>Select the DHU window and press the <strong>N</strong> key.
-  </li>
-</ul>
-
-<h3>Microphone testing</h3>
-
-<p>The DHU supports using a microphone for voice input. You can also instruct the DHU to treat
-a pre-recorded voice track as input, as if the DHU had heard the track through the microphone.</p>
-
-<p>To use a pre-recorded sound file as input, enter this command: </p>
-<pre class="no-pretty-print">
-$ mic play &lt;sound_file_path&gt;/&lt;sound_file&gt;.wav
-</pre>
-
-<p>For your convenience, we have provided the following sound files for common
-voice commands. These sound files are installed in the
-<code>&lt;sdk&gt;/extras/google/auto/voice/</code> directory.</p>
-
-<dl>
-  <dt>
-    <code>exitnav.wav</code>
-  </dt>
-
-  <dd>
-    "Exit navigation."
-  </dd>
-
-  <dt>
-    <code>navgoogle.wav</code>
-  </dt>
-
-  <dd>
-    "Navigate to 1600 Amphitheatre Parkway, Mountain View."
-  </dd>
-
-  <dt>
-    <code>navsoh.wav</code>
-  </dt>
-
-  <dd>
-    "Navigate to Sydney Opera House."
-  </dd>
-
-  <dt>
-    <code>nextturn.wav</code>
-  </dt>
-
-  <dd>
-    "When is my next turn?"
-  </dd>
-
-  <dt>
-    <code>showalternateroute.wav</code>
-  </dt>
-
-  <dd>
-    "Show alternate routes.""
-  </dd>
-
-  <dt>
-    <code>howlong.wav</code>
-  </dt>
-
-  <dd>
-    "How long until I get there?"
-  </dd>
-
-  <dt>
-    <code>navhome.wav</code>
-  </dt>
-
-  <dd>
-    "Navigate to home."
-  </dd>
-
-  <dt>
-    <code>navwork.wav</code>
-  </dt>
-
-  <dd>
-    "Navigate to work.""
-  </dd>
-
-  <dt>
-    <code>pause.wav</code>
-  </dt>
-
-  <dd>
-    "Pause music."
-  </dd>
-
-  <dt>
-    <code>showtraffic.wav</code>
-  </dt>
-
-  <dd>
-    "Show traffic."
-  </dd>
-</dl>
-<h3 id="cmd-bindings">DHU commands and key bindings</h3>
-
-<p>The DHU supports the following commands.</p>
-
-<p class="table-caption" id="table-commands"><strong>Table 1.</strong> Commands and key bindings</p>
-<table>
-<tr>
-  <th>Category</th>
-  <th>Command</th>
-  <th>Subcommand</th>
-  <th>Argument(s)</th>
-  <th>Keyboard Shortcut(s)</th>
-  <th>Description</th>
-</tr>
-
-<!--system-->
-
-<tr>
-<td rowspan="4">System</td>
-<td>help</td>
-<td></td>
-<td>[command]</td>
-<td></td>
-<td>Shows the full command set. Specifying a command name (for example, <code>help day</code>)
-  causes the system to show help for that command.</td>
-</tr>
-
-<tr>
-
-<td>quit</td>
-<td></td>
-<td></td>
-<td>Alt+q</td>
-<td>Quits the head unit.</td>
-</tr>
-
-<tr>
-
-<td>sleep</td>
-<td></td>
-<td>[seconds]</td>
-<td></td>
-<td>Sleeps for one second. Specifying an argument (for example, <code>sleep 30</code>) causes the
-system to sleep the specified number of seconds. This command
-is useful if you are writing scripts for the DHU. (You can run a script by using I/O redirection
-from the command line: <code>./desktop-head-unit &lt; script.txt</code> loads commands from the
-file <code>script.txt</code>.)</td>
-</tr>
-
-<tr>
-
-<td>screenshot</td>
-<td></td>
-<td>filename.png</td>
-<td></td>
-<td>Saves a screenshot to <code>filename.png</code>.</td>
-</tr>
-
-
-<!--microphone-->
-
-<tr>
-<td rowspan="3">Microphone</td>
-<td rowspan="3">mic</td>
-<td>begin</td>
-<td></td>
-<td>m </td>
-<td>Activates the microphone (equivalent to clicking the steering wheel's microphone button) and
-waits for input from the computer microphone.</td>
-</tr>
-
-<tr>
-
-
-<td>play</td>
-<td>filename.wav</td>
-<td></td>
-<td>Causes the DHU to treat <code>filename.wav</code> as voice input, as if it had heard that sound
-  through the microphone. You do not hear the sound file being played, but you do hear
-  the response from Android Auto.</td>
-</tr>
-
-<tr>
-
-
-<td>repeat</td>
-<td></td>
-<td></td>
-<td>Repeats the last <code>mic play</code> command, as if you had called <code>mic play</code>
-  again with the same sound file parameter.</td>
-</tr>
-
-<!--Input-->
-
-<tr>
-<td rowspan="7">Input</td>
-<td rowspan="6">dpad</td>
-<td>up <br> down <br> left <br> right</td>
-<td></td>
-<td>Arrow keys</td>
-<td>Simulates moving the rotary controller.</td>
-</tr>
-
-<tr>
-
-
-<td>soft left <br> soft right</td>
-<td></td>
-<td>Shift+Arrow keys</td>
-<td>Simulates pressing the side buttons available on some rotary controllers.</td>
-</tr>
-
-<tr>
-
-
-<td>click</td>
-<td></td>
-<td>Return</td>
-<td>Simulates pressing the rotary controller.</td>
-</tr>
-
-<tr>
-
-
-<td>back</td>
-<td></td>
-<td>Backspace</td>
-<td>Simulates pressing the <strong>back</strong> button available below some rotary
-  controllers.</td>
-</tr>
-
-<tr>
-
-
-<td>rotate left <br> rotate right</td>
-<td></td>
-<td>1 <br> 2</td>
-<td>Simulates rotating the rotary controller left (counter-clockwise) or right (clockwise).</td>
-</tr>
-
-<tr>
-
-
-<td>flick left <br> flick right</td>
-<td></td>
-<td>Shift+1 <br> Shift+2</td>
-<td>Simulates a fast spin of the rotary controller to the left (counter-clockwise) or right
-  (clockwise).</td>
-</tr>
-
-<tr>
-
-<td>tap</td>
-<td></td>
-<td>x y</td>
-<td></td>
-<td>Simulates a touch event at the specified coordinates. For example, <code>tap 50 100</code></td>
-</tr>
-
-
-<!--Day/Night-->
-
-<tr>
-<td rowspan="3">Day/Night</td>
-<td>day</td>
-<td></td>
-<td></td>
-<td>Shift+n</td>
-<td>Activates day mode (high brightness, full color).</td>
-</tr>
-
-<tr>
-
-<td>night</td>
-<td></td>
-<td> </td>
-<td>Ctrl+n </td>
-<td>Activates night mode (low brightness, high contrast).</td>
-</tr>
-
-<tr>
-
-<td>daynight</td>
-<td></td>
-<td></td>
-<td>n </td>
-<td>Toggles current day/night mode.</td>
-</tr>
-
-</table>
-
-
-
-
-<h2 id="auto-simulators">Media Browser and Messaging Simulators</h2>
-
-<p class="caution"><strong>Important:</strong> Use of the Android Media Browser and Messaging
-Simulators for testing Android Auto apps is deprecated. Instead, we recommend using the
-Desktop Head Unit, which enables your development machine to act as if it were an Android Auto head
-unit.</p>
-
-<p>To get the simulators, open the
-<a href="{@docRoot}tools/help/sdk-manager.html">SDK Manager</a> and download
-them from <strong>Extras &gt; Android Auto API Simulators</strong>.</p>
-
-<p>Before you begin testing, compile your app in your development environment.
-Install your app and the Android simulator for the features you want to test
-(that is, audio or messaging) on a physical or virtual device running Android
-5.0 (API level 21) or higher. To check the version of Android on the device, go
-to <strong>Settings &gt; About phone</strong> (or <strong>About tablet</strong>)
-<strong>&gt; Android Version</strong>.</p>
-
-<h3 id="testing-audio-apps">Testing audio apps</h3>
-<p>To run and test audio apps:</p>
-
-<ol>
-<li>Install the Android Media Browser simulator
-({@code <sdk>/extras/google/simulators/media-browser-simulator.apk}) on
-the test device. You can do this using
-the <a href="{@docRoot}tools/help/adb.html#move">adb</a> command line tool.</li>
-<li>Enable <a href="{@docRoot}tools/device.html#developer-device-options">
-developer options</a> on the test device.</li>
-<li>Install your app on the test device.</li>
-<li>Launch the Android Media Browser simulator to see how your audio app
-appears in Auto. If your app does not appear, stop the simulator from
-<strong>Settings &gt; Apps</strong> and restart it.</li>
-</ol>
-
-
-<h3 id="testing-messaging-apps">Testing messaging apps</h3>
-<p>To run and test messaging apps:</p>
-
-<ol>
-<li>Install the Android Messaging simulator
-  ({@code <sdk>/extras/google/simulators/messaging-simulator.apk})
-on the test device. You can do this using the
-<a href="{@docRoot}tools/help/adb.html#move">adb</a> command line tool.</li>
-<li>Enable the simulator to read notifications posted on the system:
-<ol type="a">
-	<li>Enable <a href="{@docRoot}tools/device.html#developer-device-options">
-developer options</a> on the test device.</li>
-  <li>Click <strong>Settings &gt; Sounds &amp; Notifications &gt; Notification
-    Access</strong> and check the box labeled
-    <strong>Messaging Simulator</strong>.</li>
-</ol>
-<li>Install your app on the test device.</li>
-<li>Launch the Android Messaging Simulator to see how your messaging app appears
-in Auto. If your app does not appear, stop the simulator from
-<strong>Settings &gt; Apps</strong> and restart it.</li>
-</ol>
-
-
-
-
diff --git a/docs/html/tools/help/dmtracedump.jd b/docs/html/tools/help/dmtracedump.jd
deleted file mode 100644
index bdc820d..0000000
--- a/docs/html/tools/help/dmtracedump.jd
+++ /dev/null
@@ -1,66 +0,0 @@
-page.title=dmtracedump
-parent.title=Tools
-parent.link=index.html
-@jd:body
-
-
- <p><code>dmtracedump</code> is a tool that gives you an alternate way of generating
-  graphical call-stack diagrams from trace log files (instead of using Traceview).</p>
-  
-  <p>This document is a reference to the available command line options. For more information on generating trace
-  logs, see <a href="{@docRoot}tools/debugging/debugging-tracing.html">Profiling with
-  Traceview and dmtracedump</a>.</p>
-
-  <p>The usage for <code>dmtracedump</code> is:</p>
-  <pre>
-dmtracedump [-ho] [-s sortable] [-d trace-base-name] [-g outfile] &lt;trace-base-name&gt;
-</pre>
-
-  <p>The tool then loads trace log data from <code>&lt;trace-base-name&gt;.data</code> and
-  &lt;trace-base-name&gt;.key. The table below lists the options for dmtracedump.</p>
-
-  <table>
-    <tr>
-      <th>Option</th>
-
-      <th>Description</th>
-    </tr>
-
-    <tr>
-      <td><nobr><code>-d&nbsp;<em>&lt;trace-base-name&gt;</em></code></nobr></td>
-
-      <td>Diff with this trace name</td>
-    </tr>
-
-    <tr>
-      <td><code>-g&nbsp;<em>&lt;outfile&gt;</em></code></td>
-
-      <td>Generate output to &lt;outfile&gt;</td>
-    </tr>
-
-    <tr>
-      <td><code>-h</code></td>
-
-      <td>Turn on HTML output</td>
-    </tr>
-
-    <tr>
-      <td><code>-o</code></td>
-
-      <td>Dump the trace file instead of profiling</td>
-    </tr>
-
-    <tr>
-      <td><code>-d&nbsp;<em>&lt;trace-base-name&gt;</em></code></td>
-
-      <td>URL base to the location of the sortable javascript file</td>
-    </tr>
-
-    <tr>
-      <td><code>-t&nbsp;&lt;percent&gt;</code></td>
-
-      <td>Minimum threshold for including child nodes in the graph (child's inclusive time as a
-      percentage of parent inclusive time). If this option is not used, the default threshold is
-      20%.</td>
-    </tr>
-  </table>
\ No newline at end of file
diff --git a/docs/html/tools/help/draw9patch.jd b/docs/html/tools/help/draw9patch.jd
deleted file mode 100644
index 7c26441..0000000
--- a/docs/html/tools/help/draw9patch.jd
+++ /dev/null
@@ -1,66 +0,0 @@
-page.title=Draw 9-patch
-page.tags=NinePatch
-@jd:body
-
-<p>The Draw 9-patch tool is a WYSIWYG editor that allows you to create bitmap images that
-automatically resize to accommodate the contents of the view and the size of the screen. Selected
-parts of the image are scaled horizontally or vertically based indicators drawn within the image. </p>
-<p>For an introduction to NinePatch graphics and how they work, please read
-the section about NinePatch Drawables in the
-<a href="{@docRoot}guide/topics/graphics/2d-graphics.html#nine-patch">Canvas and Drawables</a>
-document.</p>
-
-<img src="{@docRoot}images/draw9patch-norm.png" style="float:right" alt="" height="300" width="341"
-/>
-
-<p>Here's a quick guide to create a NinePatch graphic using the Draw 9-patch tool.
-You'll need the PNG image with which you'd like to create a NinePatch image.</p>
-
-<ol>
-  <li>From a terminal, run the <code>draw9patch</code> command from your SDK
-    <code>sdk/tools</code> directory to launch the Draw 9-patch tool. 
-    </li>
-  <li>Drag your PNG image into the Draw 9-patch window
-    (or <strong>File</strong> > <strong>Open 9-patch...</strong> to locate the file).
-    Your workspace will now open.
-    <p>The left pane is your drawing area, in which you can edit the lines for the
-     stretchable patches and content area. The right
-     pane is the preview area, where you can preview your graphic when stretched.</p>
-    </li>
-  <li>Click within the 1-pixel perimeter to draw the lines that define the stretchable
-    patches and (optional) content area. Right-click (or hold Shift and click, on Mac) to erase
-    previously drawn lines.
-    </li>
-  <li>When done, select <strong>File</strong> > <strong>Save 9-patch...</strong>
-    <p>Your image will be saved with the <code>.9.png</code> file name.</p>
-    </li>
-</ol>
-
-   <p>To make sure that your NinePatch graphics scale down properly, verify that any
-   stretchable regions are at least 2x2 pixels in size.
-   Otherwise, they may disappear when scaled down. Also, provide one pixel of extra safe space in
-   the graphics before and after stretchable regions to avoid interpolation during scaling that may
-   cause the color at the boundaries to change. </p>
-
-    <p class="note"><strong>Note:</strong> A normal PNG file (<code>*.png</code>) will be
-     loaded with an empty one-pixel border added around the image, in which you can draw
-     the stretchable patches and content area.
-     A previously saved NinePatch file (<code>*.9.png</code>) will be loaded as-is,
-     with no drawing area added, because it already exists.</p>
-
-<img src="{@docRoot}images/draw9patch-bad.png" style="float:right;clear:both" alt="" height="300" width="341"
-/>
-
-<p>Optional controls include:</p>
-<ul>
-  <li><strong>Zoom</strong>: Adjust the zoom level of the graphic in the drawing area.</li>
-  <li><strong>Patch scale</strong>: Adjust the scale of the images in the preview area.</li>
-  <li><strong>Show lock</strong>: Visualize the non-drawable area of the graphic on mouse-over.</li>
-  <li><strong>Show patches</strong>: Preview the stretchable patches in the drawing area (pink is a 
-    stretchable patch).</li>
-  <li><strong>Show content</strong>: Highlight the content area in the preview images 
-    (purple is the area in which content is allowed).</li>
-  <li><strong>Show bad patches</strong>: Adds a red border around patch areas that may
-  produce artifacts in the graphic when stretched. Visual coherence of your stretched
-  image will be maintained if you eliminate all bad patches.</li>
-<ul>
diff --git a/docs/html/tools/help/emulator.jd b/docs/html/tools/help/emulator.jd
deleted file mode 100644
index 366b3bd..0000000
--- a/docs/html/tools/help/emulator.jd
+++ /dev/null
@@ -1,581 +0,0 @@
-page.title=Android Emulator
-parent.title=Tools
-parent.link=index.html
-@jd:body
-
-<div id="qv-wrapper">
-<div id="qv">
-
-  <h2>In this document</h2>
-  <ol>
-    <li><a href="#KeyMapping">Keyboard Commands</a></li>
-    <li><a href="#startup-options">Command Line Parameters</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>
-  </ol>
-
-</div>
-</div>
-
-
-<p>The Android SDK includes a mobile device emulator &mdash; a virtual mobile device
-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
-<a href="{@docRoot}tools/devices/emulator.html">Using the Android Emulator</a>.
-
-
-<h2 id="KeyMapping">Keyboard Commands</h2>
-
-<p>Table 1 summarizes the mappings between the emulator keys and the keys of your keyboard.</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>
-
-  <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>
-
-
-<h2 id="startup-options">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.
-Here's the command-line syntax of the options available to the {@code emulator} program:</p>
-
-<pre>emulator -avd &lt;avd_name&gt; [-&lt;option&gt; [&lt;value&gt;]] ... [-&lt;qemu args&gt;]</pre>
-
-<p class="table-caption"><strong>Table 2.</strong> Emulator command line parameters</p>
-<table>
-<tr>
-  <th width="10%" >Category</th>
-  <th width="20%" >Option</th>
-    <th width="30%" >Description</th>
-    <th width="40%" >Comments</th>
-</tr>
-
-<tr>
-  <td>AVD</td>
-  <td><code>-avd &lt;avd_name&gt;</code> or <br>
-      <code>@&lt;avd_name&gt;</code></td>
-  <td><strong>Required</strong>. Specifies the AVD to load for this emulator
-      instance.</td>
-  <td>You must create an AVD configuration before launching the emulator. For
-      information, see <a href="{@docRoot}tools/devices/managing-avds.html">Managing
-      AVDs with AVD Manager</a>.</td>
-<tr>
-  <td rowspan="7">Disk Images</td>
-  <td><code>-cache&nbsp;&lt;filepath&gt;</code></td>
-  <td>Use &lt;filepath&gt; as the working cache partition image. </td>
-  <td>An absolute or relative path to the current working directory.
-  If no cache file is specified, the emulator's default behavior is to use a temporary file instead.
-  <p>For more information on disk images, use <code>-help-disk-images</code>.</p>
-</td></tr>
-<tr>
-  <td><code>-data&nbsp;&lt;filepath&gt;</code></td>
-  <td>Use {@code <filepath>} as the working user-data disk image. </td>
-  <td>Optionally, you can specify a path relative to the current working directory.
-  If <code>-data</code> is not used, the emulator looks for a file named {@code userdata-qemu.img}
-  in the storage area of the AVD being used (see <code>-avd</code>).
-</td></tr>
-<!--
-<tr>
-  <td><code>-datadir &lt;dir&gt;</code></td>
-  <td>Search for the user-data disk image specified in <code>-data</code> in &lt;dir&gt;</td>
-  <td><code>&lt;dir&gt;</code> is a path relative to the current working directory.
-
-<p>If you do not specify <code>-datadir</code>, the emulator looks for the user-data image
-in the storage area of the AVD being used (see <code>-avd</code>)</p><p>For more information
-on disk images, use <code>-help-disk-images</code>.</p>
-</td></tr>
--->
-<!--
-<tr>
-  <td><code>-image&nbsp;&lt;filepath&gt;</code></td>
-  <td>Use &lt;filepath&gt; as the system image.</td>
-  <td>Optionally, you can specify a path relative to the current working directory.
-   Default is &lt;system&gt;/system.img.</td>
-</tr>
--->
-<tr>
-  <td><code>-initdata&nbsp;&lt;filepath&gt;</code></td>
-  <td>When resetting the user-data image (through <code>-wipe-data</code>), copy the contents
-  of this file to the new user-data disk image. By default, the emulator copies the <code>&lt;system&gt;/userdata.img</code>.</td>
-  <td>Optionally, you can specify a path relative to the current working directory. See also <code>-wipe-data</code>.
-  <p>For more information on disk images, use <code>-help-disk-images</code>.</p></td>
-</tr>
-<tr>
-  <td><code>-nocache</code></td>
-  <td>Start the emulator without a cache partition.</td>
-  <td>See also <code>-cache &lt;file&gt;</code>.</td>
-</tr>
-<tr>
-  <td><code>-ramdisk&nbsp;&lt;filepath&gt;</code></td>
-  <td>Use &lt;filepath&gt; as the ramdisk image.</td>
-  <td>Default value is <code>&lt;system&gt;/ramdisk.img</code>.
-  <p>Optionally, you can specify a path relative to the current working directory.
-  For more information on disk images, use <code>-help-disk-images</code>.</p>
-</td>
-</tr>
-<tr>
-  <td><code>-sdcard&nbsp;&lt;filepath&gt;</code></td>
-  <td>Use &lt;file&gt; as the SD card image.</td>
-  <td>Default value is <code>&lt;system&gt;/sdcard.img</code>.
-  <p>Optionally, you can specify a path relative to the current working directory. For more information on disk images, use <code>-help-disk-images</code>.</p>
-</td>
-</tr>
-<!--
-<tr>
- <td><code>-system&nbsp;&lt;dirpath&gt;</code></td>
- <td>Search for system, ramdisk and user data images in &lt;dir&gt;.</td>
- <td><code>&lt;dir&gt;</code> is a directory path relative to the current
-  working directory.</td>
-</tr>
--->
-<tr>
-  <td><code>-wipe-data</code></td>
-  <td>Reset the current user-data disk image (that is, the file specified by <code>-datadir</code> and
-  <code>-data</code>, or the default file). The emulator deletes all data from the user data image file,
-  then copies the contents of the file at <code>-inidata</code> data to the image file before starting.
-  </td>
-  <td>See also <code>-initdata</code>.
-  <p>For more information on disk images, use <code>-help-disk-images</code>.</p>
-</td>
-</tr>
-<tr>
-  <td rowspan="9">Debug</td>
-  <td><code>-debug &lt;tags&gt;</code></td>
-  <td>Enable/disable debug messages for the specified debug tags.</td>
-  <td><code>&lt;tags&gt;</code> is a space/comma/column-separated list of debug component names.
-  Use <code>-help-debug-tags</code> to print a list of debug component names that you can use. </td>
-</tr>
-<tr>
-  <td><code>-debug-&lt;tag&gt;</code></td>
-  <td>Enable/disable debug messages for the specified debug tag.</td>
-  <td rowspan="2">Use <code>-help-debug-tags</code> to print a list of debug component names that you can use in <code>&lt;tag&gt;</code>. </td>
-</tr>
-<tr>
-  <td><code>-debug-no-&lt;tag&gt;</code></td>
-  <td>Disable debug messages for the specified debug tag.</td>
-</tr>
-<tr>
-  <td><code>-logcat &lt;logtags&gt;</code></td>
-  <td>Enable logcat output with given tags.</td>
-  <td>If the environment variable ANDROID_LOG_TAGS is defined and not
-    empty, its value will be used to enable logcat output by default.</td>
-</tr>
-<tr>
-  <td><code>-shell</code></td>
-  <td>Create a root shell console on the current terminal.</td>
-  <td>You can use this command even if the adb daemon in the emulated system is broken.
-  Pressing Ctrl-c from the shell stops the emulator instead of the shell.</td>
-</tr>
-<tr>
-  <td><code>-shell-serial&nbsp;&lt;device&gt;</code></td>
-  <td>Enable the root shell (as in <code>-shell</code> and specify the QEMU character
-  device to use for communication with the shell.</td>
-  <td>&lt;device&gt; must be a QEMU device type. See the documentation for '-serial <em>dev</em>' at
-  <a href="http://wiki.qemu.org/download/qemu-doc.html">http://wiki.qemu.org/download/qemu-doc.html</a>
-  for a list of device types.
-
-<p>Here are some examples: </p>
-<ul>
-  <li><code>-shell-serial stdio</code> is identical to <code>-shell</code></li>
-  <li><code>-shell-serial tcp::4444,server,nowait</code> lets you communicate with the shell over TCP port 4444</li>
-  <li><code>-shell-serial fdpair:3:6</code> lets a parent process communicate with the shell using fds 3 (in) and 6 (out)</li>
-  <li><code>-shell-serial fdpair:0:1</code> uses the normal stdin and stdout fds, except that QEMU won't tty-cook the data.</li>
-  </ul>
-</td>
-</tr>
-<tr>
-  <td><code>-show-kernel &lt;name&gt;</code></td>
-  <td>Display kernel messages.</td>
-  <td>&nbsp;</td>
-</tr>
-<tr>
-  <td><code>-trace &lt;name&gt;</code></td>
-  <td>Enable code profiling (press F9 to start), written to a specified file.</td>
-  <td>&nbsp;</td>
-</tr>
-<tr>
-  <td><code>-verbose</code></td>
-  <td>Enable verbose output.</td>
-  <td>Equivalent to <code>-debug-init</code>.
-<p>You can define the default verbose output options used by emulator instances in the Android environment variable
-ANDROID_VERBOSE. Define the options you want to use in a comma-delimited list, specifying only the stem of each option:
-<code>-debug-&lt;tags&gt;.</code> </p>
-<p>Here's an example showing ANDROID_VERBOSE defined with the <code>-debug-init</code> and <code>-debug-modem</code> options:
-<p><code>ANDROID_VERBOSE=init,modem</code></p>
-<p>For more information about debug tags, use <code>&lt;-help-debug-tags&gt;</code>.</p>
-</td>
-</tr>
-<tr>
-  <td rowspan="6">Media</td>
-  <td><code>-audio &lt;backend&gt;</code></td>
-  <td>Use the specified audio backend.</td>
-  <td>&nbsp;</td>
-</tr>
-<tr>
-  <td><code>-audio-in &lt;backend&gt;</code></td>
-  <td>Use the specified audio-input backend.</td>
-  <td>&nbsp;</td>
-</tr>
-<tr>
-  <td><code>-audio-out &lt;backend&gt;</code></td>
-  <td>Use the specified audio-output backend.</td>
-  <td>&nbsp;</td>
-</tr>
-<!--<tr>
-  <td><code>-mic &lt;device or file&gt;</code></td>
-  <td>Use device or WAV file for audio input.</td>
-  <td>&nbsp;</td>
-</tr>
--->
-<tr>
-  <td><code>-noaudio</code></td>
-  <td>Disable audio support in the current emulator instance.</td>
-  <td>&nbsp;</td>
-</tr>
-<tr>
-  <td><code>-radio &lt;device&gt;</code></td>
-  <td>Redirect radio modem interface to a host character device.</td>
-  <td>&nbsp;</td></tr>
-<tr>
-  <td><code>-useaudio</code></td>
-  <td>Enable audio support in the current emulator instance.</td>
-  <td>Enabled by default. </td>
-</tr>
-
-<tr>
-  <td rowspan="7">Network</td>
-  <td><code>-dns-server &lt;servers&gt;</code></td>
-  <td>Use the specified DNS server(s). </td>
-  <td>The value of <code>&lt;servers&gt;</code> must be a comma-separated list of up to 4 DNS server names or
-  IP addresses.</td>
-</tr>
-<tr>
-  <td><code>-http-proxy &lt;proxy&gt;</code></td>
-  <td>Make all TCP connections through a specified HTTP/HTTPS proxy</td>
-  <td>The value of <code>&lt;proxy&gt;</code> can be one of the following:<br>
-     <code>http://&lt;server&gt;:&lt;port&gt;</code><br>
-     <code>http://&lt;username&gt;:&lt;password&gt;@&lt;server&gt;:&lt;port&gt;</code>
-  <p>The <code>http://</code> prefix can be omitted. If the <code>-http-proxy &lt;proxy&gt;</code> command is not supplied,
-  the emulator looks up the <code>http_proxy</code> environment variable and automatically uses any value matching
-  the <code>&lt;proxy&gt;</code> format described above.</p></td>
-</tr>
-<tr>
-  <td><code>-netdelay &lt;delay&gt;</code></td>
-  <td>Set network latency emulation to &lt;delay&gt;.</td>
-  <td>Default value is <code>none</code>. See the table in
-    <a href="{@docRoot}tools/devices/emulator.html#netdelay">Network Delay Emulation</a>
-    for supported <code>&lt;delay&gt;</code> values. </td>
-</tr>
-<tr>
-  <td><code>-netfast</code></td>
-  <td>Shortcut for <code>-netspeed full -netdelay none</code></td>
-  <td>&nbsp;</td></tr>
-<tr>
-  <td><code>-netspeed &lt;speed&gt;</code></td>
-  <td>Set network speed emulation to &lt;speed&gt;.</td>
-  <td>Default value is <code>full</code>. See the table in
-    <a href="{@docRoot}tools/devices/emulator.html#netspeed">Network Speed Emulation</a> for
-  supported <code>&lt;speed&gt;</code> values. </td>
-</tr>
-<tr>
-  <td><code>-port &lt;port&gt;</code></td>
-  <td>Set the console port number for this emulator instance to <code>&lt;port&gt;</code>.</td>
-  <td>The console port number must be an even integer between 5554 and 5584, inclusive. <code>&lt;port&gt;</code>+1
-  must also be free and will be reserved for ADB.</td>
-</tr>
-<tr>
-  <td><code>-report-console &lt;socket&gt;</code></td>
-  <td>Report the assigned console port for this emulator instance to a remote third party
-  before starting the emulation. </td>
-  <td><code>&lt;socket&gt;</code> must use one of these formats:
-
-<p><code>tcp:&lt;port&gt;[,server][,max=&lt;seconds&gt;]</code></br>
-<code>unix:&lt;port&gt;[,server][,max=&lt;seconds&gt;]</code></p>
-
-<p>Use <code>-help-report-console</code></p> to view more information about this topic. </td>
-</tr>
-<tr>
-  <td rowspan="10">System</td>
-  <td><code>-cpu-delay &lt;delay&gt;</code></td>
-  <td>Slow down emulated CPU speed by &lt;delay&gt; </td>
-  <td>Supported values for &lt;delay&gt; are integers between 0 and 1000.
-
-<p>Note that the &lt;delay&gt; does not correlate to clock speed or other absolute metrics
-&mdash; it simply represents an abstract, relative delay factor applied non-deterministically
-in the emulator. Effective performance does not always
-scale in direct relationship with &lt;delay&gt; values.</p>
-</td>
-</tr>
-<tr>
-  <td><code>-gps &lt;device&gt;</code></td>
-  <td>Redirect NMEA GPS to character device.</td>
-  <td>Use this command to emulate an NMEA-compatible GPS unit connected to
-  an external character device or socket. The format of <code>&lt;device&gt;</code> must be QEMU-specific
-  serial device specification. See the documentation for 'serial -dev' at
-  <a href="http://wiki.qemu.org/download/qemu-doc.html">http://wiki.qemu.org/download/qemu-doc.html</a>.
-</td>
-</tr>
-<tr>
-  <td><code>-nojni</code></td>
-  <td>Disable JNI checks in the Dalvik runtime.</td><td>&nbsp;</td></tr>
-<tr>
-  <td><code>-qemu</code></td>
-  <td>Pass arguments to the qemu emulator software.</td>
-  <td><p class="caution"><strong>Important:</strong> When using this option, make sure it is the
-  <em>last option</em> specified, since all options after it are interpretted as qemu-specific
-  options.</p></td></tr>
-<tr>
-  <td><code>-qemu -enable-kvm</code></td>
-  <td>Enable KVM acceleration of the emulator virtual machine.</td>
-  <td>This option is only effective when your system is set up to use
-  <a href="{@docRoot}tools/devices/emulator.html#vm-linux">KVM-based VM acceleration</a>.
-  You can optionally specify a memory size ({@code -m <size>}) for the VM, which should match
-  your emulator's memory size:</p>
-  {@code -qemu -m 512 -enable-kvm}<br>
-  {@code -qemu -m 1024 -enable-kvm}
-  </td></tr>
-<tr>
-  <td><code>-qemu -h</code></td>
-  <td>Display qemu help.</td>
-  <td></td></tr>
-<tr>
-  <td><code>-gpu on</code></td>
-  <td>Turn on graphics acceleration for the emulator.</td>
-  <td>This option is only available for emulators using a system image with API Level 15, revision 3
-  and higher. For more information, see
-  <a href="{@docRoot}tools/devices/emulator.html#accel-graphics">Using the Android
-  Emulator</a>.</td></tr>
-<tr>
-  <td><code>-radio &lt;device&gt;</code></td>
-  <td>Redirect radio mode to the specified character device.</td>
-  <td>The format of <code>&lt;device&gt;</code> must be QEMU-specific
-  serial device specification. See the documentation for 'serial -dev' at
-<a href="http://wiki.qemu.org/download/qemu-doc.html">http://wiki.qemu.org/download/qemu-doc.html</a>.
-</td>
-</tr>
-<tr>
- <td><code>-timezone &lt;timezone&gt;</code></td>
- <td>Set the timezone for the emulated device to &lt;timezone&gt;, instead of the host's timezone.</td>
- <td><code>&lt;timezone&gt;</code> must be specified in zoneinfo format. For example:
-<p>"America/Los_Angeles"<br>
-"Europe/Paris"</p>
-</td>
-</tr>
-<tr>
- <td><code>-version</code></td>
- <td>Display the emulator's version number.</td>
- <td>&nbsp;</td>
-</tr>
-<tr>
-  <td rowspan="12">UI</td>
-  <td><code>-dpi-device &lt;dpi&gt;</code></td>
-  <td>Scale the resolution of the emulator to match the screen size
-  of a physical device.</td>
-  <td>The default value is 165. See also <code>-scale</code>.</td>
-</tr>
-<tr>
-  <td><code>-no-boot-anim</code></td>
-  <td>Disable the boot animation during emulator startup.</td>
-  <td>Disabling the boot animation can speed the startup time for the emulator.</td>
-</tr>
-<tr>
-  <td><code>-no-window</code></td>
-  <td>Disable the emulator's graphical window display.</td>
-  <td>&nbsp;</td>
-</tr>
-<tr>
-  <td><code>-scale &lt;scale&gt;</code></td>
-  <td>Scale the emulator window. </td>
-  <td><code>&lt;scale&gt;</code> is a number between 0.1 and 3 that represents the desired 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>
-<tr>
-  <td><code>-raw-keys</code></td>
-  <td>Disable Unicode keyboard reverse-mapping.</td>
-  <td>&nbsp;</td></tr>
-<tr>
-  <td><code>-noskin</code></td>
-  <td>Don't use any emulator skin.</td>
-  <td>&nbsp;</td></tr>
-<tr>
-  <td><code>-keyset &lt;file&gt;</code></td>
-  <td>Use the specified keyset file instead of the default.</td>
-  <td>The keyset file defines the list of key bindings between the emulator and the host keyboard.
-  For more information, use <code>-help-keyset</code> to print information about this topic.
-</td>
-</tr>
-<tr>
-  <td><code>-onion &lt;image&gt;</code></td>
-  <td>Use overlay image over screen.</td>
-  <td>No support for JPEG. Only PNG is supported.</td></tr>
-<tr>
-  <td><code>-onion-alpha &lt;percent&gt;</code></td>
-  <td>Specify onion skin translucency  value (as percent).
-  <td>Default is 50.</td>
-</tr>
-<tr>
-  <td><code>-onion-rotation &lt;position&gt;</code></td>
-  <td>Specify onion skin rotation.
-  <td><code>&lt;position&gt;</code> must be one of the values 0, 1, 2, 3.</td>
-</tr>
-<tr>
-  <td><code>-skin &lt;skinID&gt;</code></td>
-  <td>This emulator option is deprecated. </td>
-  <td>Please set skin options using AVDs, rather than by using this emulator
-option. Using this option may yield unexpected and in some cases misleading
-results, since the density with which to render the skin may not be defined.
-AVDs let you associate each skin with a default density and override the default
-as needed. For more information, see <a
-href="{@docRoot}tools/devices/managing-avds.html">Managing Virtual Devices
-with AVD Manager</a>.
-</td>
-</tr>
-<tr>
-  <td><code>-skindir &lt;dir&gt;</code></td>
-  <td>This emulator option is deprecated. </td>
-  <td>See comments for <code>-skin</code>, above.</td>
-</tr>
-<tr>
-  <td rowspan="9">Help</td>
-  <td><code>-help</code></td>
-  <td>Print a list of all emulator options.</td>
-  <td>&nbsp;</td>
-</tr>
-<tr>
-  <td><code>-help-all</code></td>
-  <td>Print help for all startup options.</td>
-  <td>&nbsp;</td>
-</tr>
-<tr>
-  <td><code>-help-&lt;option&gt;</code></td>
-  <td>Print help for a specific startup option.</td>
-  <td>&nbsp;</td>
-</tr>
-<tr>
-  <td><code>-help-debug-tags</code></td>
-  <td>Print a list of all tags for <code>-debug &lt;tags&gt;</code>.</td>
-  <td>&nbsp;</td>
-</tr>
-<tr>
-  <td><code>-help-disk-images</code></td>
-  <td>Print help for using emulator disk images.</td>
-  <td>&nbsp;</td>
- </tr>
-<tr>
-  <td><code>-help-environment</code></td>
-  <td>Print help for emulator environment variables.</td>
-  <td>&nbsp;</td>s
-</tr><tr>
-  <td><code>-help-keys</code></td>
-  <td>Print the current mapping of keys.</td>
-  <td>&nbsp;</td>
-</tr>
-<tr>
-  <td><code>-help-keyset-file</code></td>
-  <td>Print help for defining a custom key mappings file.</td>
-  <td>&nbsp;</td>
-</tr>
-<tr>
-  <td><code>-help-virtual-device</code></td>
-  <td>Print help for Android Virtual Device usage.</td>
-  <td>&nbsp;</td>
-</tr>
-</table>
diff --git a/docs/html/tools/help/etc1tool.jd b/docs/html/tools/help/etc1tool.jd
deleted file mode 100644
index a7f76f5..0000000
--- a/docs/html/tools/help/etc1tool.jd
+++ /dev/null
@@ -1,68 +0,0 @@
-page.title=etc1tool
-parent.title=Tools
-parent.link=index.html
-@jd:body
-
-
- <p><code>etc1tool</code> is a command line utility that lets you encode PNG
- images to the ETC1 compression standard and decode ETC1 compressed images back to PNG.</p>
-
-  <p>The usage for <code>etc1tool</code> is:</p>
-<pre>etc1tool infile [--help | --encode | --encodeNoHeader | --decode] [--showDifference
-diff-file] [-o outfile]</pre>
-
-  <table>
-    <tr>
-      <th>Option</th>
-
-      <th>Description</th>
-    </tr>
-
-    <tr>
-      <td><code>infile</code></td>
-
-      <td>The input file to compress</td>
-    </tr>
-
-    <tr>
-      <td><code>--help</code></td>
-
-      <td>Print usage information</td>
-    </tr>
-
-    <tr>
-      <td><code>--encode</code></td>
-
-      <td>Create an ETC1 file from a PNG file.
-      This is the default mode for the tool if nothing is specified.</td>
-    </tr>
-
-    <tr>
-      <td><code>--encodeNoHeader</code></td>
-
-      <td>Create a raw ETC1 data file (without a header) from a PNG file.</td>
-    </tr>
-
-    <tr>
-      <td><code>--decode</code></td>
-
-      <td>Create a PNG file from an ETC1 file</td>
-    </tr>
-
-    <tr>
-      <td><code>--showDifference <em>diff-file</em></code></td>
-
-      <td>Write the difference between the original and encoded image to
-      <code><em>diff-file</em></code> (only valid when encoding).</td>
-    </tr>
-
-    <tr>
-      <td><code>-o <em>outfile</em></code></td>
-
-      <td>Specify the name of the output file.
-      If <code><em>outfile</em></code> is not specified, the output file is constructed
-      from the input filename with the appropriate suffix (<code>.pkm</code> or <code>.png</code>).
-      </td>
-    </tr>
-
-  </table>
\ No newline at end of file
diff --git a/docs/html/tools/help/gltracer.jd b/docs/html/tools/help/gltracer.jd
deleted file mode 100755
index 866bdc9..0000000
--- a/docs/html/tools/help/gltracer.jd
+++ /dev/null
@@ -1,92 +0,0 @@
-page.title=Tracer for OpenGL ES
-@jd:body
-
-<div id="qv-wrapper">
-<div id="qv">
-  <h2>In this document</h2>
-  <ol>
-    <li><a href="#running">Running Tracer</a></li>
-    <li><a href="#generating">Generating a Trace</a></li>
-    <li><a href="#analyzing">Analyzing a Trace</a></li>
-  </ol>
-  <h2>See also</h2>
-  <ol>
-    <li><a href="{@docRoot}tools/index.html">Tools</a></li>
-  </ol>
-</div>
-</div>
-
-<p>Tracer is a tool for analyzing OpenGL for Embedded Systems (ES) code in your Android application.
-The tool allows you to capture OpenGL ES commands and frame by frame images to help you understand
-how your graphics commands are being executed.</p>
-
-<p class="note"><strong>Note:</strong> The Tracer tool requires a device running Android 4.1 (API
-Level 16) or higher.</p>
-
-
-<h2 id="running">Running Tracer</h2>
-
-
-<p>To run Tracer in Device Monitor:</p>
-
-<ol>
-  <li>Start the <a href="monitor.html">Device Monitor</a> tool.</li>
-  <li>Activate the perspective for Tracer by choosing <strong>Window > Open
-Perspective...</strong></li>
-  <li>Select <strong>Tracer for OpenGL ES</strong> and click <strong>OK</strong>.</li>
-</ol>
-
-<h2 id="generating">Generating a Trace</h2>
-
-<p>Tracer captures OpenGL ES command execution logs and can also capture progressive images of the
-frames generated by those commands to enable you to perform logical and visual analysis of your
-OpenGL ES code. The Tracer tool operates by connecting to a device running Android 4.1 (API Level
-16) or higher that is running the application you want to analyze. The Tracer tool captures trace
-information while the application is running and saves it to a {@code .gltrace} file for
-analysis.</p>
-
-<img src="{@docRoot}images/gltracer/dialog-trace.png">
-<p class="img-caption"><strong>Figure 1.</strong> Trace capture dialog box.</p>
-
-<p>To capture an OpenGL ES trace for an Android application:</p>
-
-<ol>
-  <li>Connect the Android device using a USB cable and make sure it is enabled for debugging. For
-more information, see <a href="{@docRoot}tools/device.html">Using Hardware Devices</a>.</li>
-  <li>In the Device Monitor, activate the <strong>Tracer for OpenGL ES</strong>
-perspective.</li>
-  <li>On the toolbar, click the trace capture button (<img
-src="{@docRoot}images/gltracer/icon-capture.png">).</li>
-  <li>In the dialog box, select the <strong>Device</strong> to use for the trace.</li>
-  <li>In the <strong>Application Package</strong> field, enter the full application package name
-containing the activity you want to trace, for example: {@code com.example.android.opengl}</li>
-  <li>In the <strong>Activity to launch</strong> field, enter the class name of the activity you
-want to trace, for example: {@code OpenGLES20Complete}
-  <p class="note"><strong>Note:</strong> If you are tracing the default activity for the
-application, you can leave this field blank.</p>
-  </li>
-  <li>Select the desired <strong>Data Collection Options</strong>.
-    <p class="note"><strong>Note:</strong> If you want to capture progressive frame images for each
-drawing call, enable the <strong>Read back currently bound framebuffer on glDraw*()</strong> option.
-Be aware that using this option can result in large trace files.</p>
-  </li>
-  <li>Enter a <strong>Destination File</strong> for the trace output.</li>
-  <li>Click <strong>Trace</strong> to start the trace capture.</li>
-  <li>On the connected device, exercise the functions of your application you want to trace.</li>
-  <li>In the dialog box, <strong>Stop Tracing</strong> to complete the tracing run.</li>
-</ol>
-
-<h2 id="analyzing">Analyzing a Trace</h2>
-
-<p>After you have generated a trace, you can load it for review and analysis.</p>
-
-<p>To review a captured trace:</p>
-
-<ol>
-  <li>In Device Monitor, activate the <strong>Tracer for OpenGL ES</strong>
-perspective.</li>
-  <li>On the toolbar, click the trace load button (<img
-src="{@docRoot}images/gltracer/icon-load-trace.png">).</li>
-  <li>After loading a trace, select a frame and review the OpenGL ES calls. Drawing commands are
-highlighted in blue.</li>
-</ol>
diff --git a/docs/html/tools/help/hierarchy-viewer.jd b/docs/html/tools/help/hierarchy-viewer.jd
deleted file mode 100644
index da4cc1e..0000000
--- a/docs/html/tools/help/hierarchy-viewer.jd
+++ /dev/null
@@ -1,29 +0,0 @@
-page.title=Hierarchy Viewer
-parent.title=Tools
-parent.link=index.html
-@jd:body
-
-<p>The Hierarchy Viewer allows you to debug and optimize your user
-interface. It provides a visual representation of the layout's View hierarchy
-(the Layout View) and a magnified inspector of the display (the Pixel Perfect View). </p>
-
-<p>To start the Hierarchy Viewer, do one of the following: </p>
-
-<ul>
-<li> From Android Studio, choose <strong>Tools &gt; Android Device Monitor</strong> or click the
-Android Device Monitor icon
-<img src="{@docRoot}images/tools/hierarchicalviewer-icon.png" alt=""/>. Click the Open Perspectives
-icon <img src="{@docRoot}images/tools/studio-DDMS-open-perspective-icon.png" alt=""/> and select
-<strong>Hierarchy View</strong>. </li>
-<li>From the SDK <code>tools/</code> directory, enter:
-  <pre>monitor</pre> </li>
-</ul>
-
-<p>For more information on how to use the Hierarchy Viewer, see
-<a href="{@docRoot}tools/debugging/debugging-ui.html">Optimizing Your UI</a>.
-</p>
-
-<p class="note"><strong>Note:</strong> The command line version of Hierarchy Viewer has been
-deprecated. </p>
-
-
diff --git a/docs/html/tools/help/hprof-conv.jd b/docs/html/tools/help/hprof-conv.jd
deleted file mode 100644
index 89d6a68..0000000
--- a/docs/html/tools/help/hprof-conv.jd
+++ /dev/null
@@ -1,26 +0,0 @@
-page.title=HPROF Converter
-parent.title=Tools
-parent.link=index.html
-@jd:body
-
-<p>
-The <code>hprof-conv</code> tool converts the HPROF file that is
-generated by the Android SDK tools to a standard format so you
-can view the file in a profiling tool of your choice. </p>
-
-<pre> hprof-conv [-z] &lt;infile&gt; &lt;outfile&gt;</pre>
-
-<p>
-You can use "-" for <code>&lt;infile&gt;</code> or <code>&lt;outfile&gt;</code>
-to specify stdin or stdout.
-</p>
-
-<p>
-You can use "-z" to filter out zygote allocations shared by all applications.
-</p>
-
-<p class="note"><strong>Note:</strong> Android Studio provides integrated access to this conversion
-process. To convert a heap dump to standard HPROF format in Android Studio, right-click a heap
-snapshot in the <em>Captures</em> view and select <strong>Export to standard .hprof</strong>. </p>
-
-
diff --git a/docs/html/tools/help/image-asset-studio.jd b/docs/html/tools/help/image-asset-studio.jd
deleted file mode 100644
index 818b744..0000000
--- a/docs/html/tools/help/image-asset-studio.jd
+++ /dev/null
@@ -1,200 +0,0 @@
-page.title=Image Asset Studio
-parent.title=Tools
-parent.link=index.html
-page.tags=image asset
-@jd:body
-<div id="qv-wrapper">
-<div id="qv">
-  <h2>In this document</h2>
-<ol>
-  <li><a href="#access">Accessing Image Asset Studio</a></li>
-  <li><a href="#creating">Creating Icons</a></li>
-  <li><a href="#customizing">Customizing Icons</a></li>
-  <li><a href="#saving">Saving Icons</a></li>
-  <li><a href="#configure">Configuring Build Properties</a></li>
-  <li><a href="#referincode">Referring to an Image Resource in Code</a></li>
- </ol>
-</div>
-</div>
-
-
-<p>Image Asset Studio helps you to generate custom icons for your Android applications from existing
- image, clipart, or text-string resources. It generates a set of icons at the appropriate resolution
- for each <a href ="{@docRoot}guide/practices/screens_support.html#range"> generalized screen
- density</a> that your app supports.
-  The newly generated icons are placed in density-specific folders (for example, <code>mipmap-mdpi/
-  </code> or <code>drawable-xxxhdpi/</code>), which
- reside in the application’s <code>res/</code> folder. At runtime, Android uses the appropriate
- resource based on the screen density of the device your application is running on. </p>
-
-<p>Image Asset Studio generates the following asset types:</p>
-<ul>
-<li>Launcher icons.</li>
-<li>Action bar and tab icons.</li>
-<li>Notification icons.</li>
-</ul>
-
-<p>This guide shows how to generate these assets using Image Asset Studio.</p>
-
-<h2 id="access">Accessing Image Asset Studio</h2>
-<p>Follow these steps to access Image Asset Studio:</p>
-<ol>
-<li>In Android Studio, open an Android app project.</li>
-<li>In the <a href= "{@docRoot}sdk/installing/create-project.html#enable-view">project-view-pane</a>
- on the left side of the screen, select <strong>Android</strong> from the dropdown menu. The Android
-  project view appears in the pane.
-</li>
-<li>Right-click the <code>res/</code>folder and select <strong>New</strong> &gt; <strong>Image
-Asset</strong>. The Image Asset Studio window appears.</li>
-</ol>
-
-
-<h2 id="creating">Creating Icons</h2>
-<p>You can generate icons from <a href="#launch_image">image</a>, <a href="#launch_clipart">clipart
-</a>, or <a href="#launch_text">text-string</a> resources. This section explains how to work with
-each of these resources.
-</p>
-
-
-<h3 id="launch_image">From an image resource</h3>
-<ol>
-<li>Open the <em>Asset Type</em> dropdown menu and select an icon type.</li>
-<li>From the available <em>Foreground</em> options, select <strong>Image</strong>.</li>
-<li>Specify the asset to use by entering a filename in the <em>Image file</em> field or by
- navigating to and selecting a file via the file browser. Image Asset Studio supports the following
- file types, in descending order of desirability: PNG, JPG, and GIF.
- <p>The icon to be generated appears in the <em>Preview</em> pane, displayed at sizes corresponding
- to different screen densities.</p>
-
-<p>The rest of the settings on this screen are optional.
-To learn how to customize your icons using these options,
- see <a href="#customizing">Customizing Icons</a>.</p></li>
-<li><a href="#saving">Save your icons</a> to the project folder.
-</li>
-</ol>
-
-
-<h3 id="launch_clipart">From a clipart resource</h3>
-<ol>
-<li>Open the <em>Asset Type</em> dropdown menu and select an icon type.</li>
-<li>From the available <em>Foreground</em> options, select <strong>Clipart</strong>. The <strong>
-Choose</strong> button appears.</li>
-<li>Click <strong>Choose</strong>. A window containing clipart resources appears.</li>
-<li> Select a clipart resource.
-<p>The icon to be generated appears in the <em>Preview</em> pane, displayed at sizes corresponding
-to different screen densities.</p>
-<p>The rest of the settings on this screen are optional.
- To learn how to customize your icons using these options,
- see <a href="#customizing">Customizing Icons</a>.</p></li>
-<li><a href="#saving">Save your icons</a> to the project folder.
-</li>
-</ol>
-
-
-
-<h3 id="launch_text"> From a text-string resource</h3>
-<ol>
-<li>Open the <em>Asset Type</em> dropdown menu and select an icon type.</li>
-<li>From the available <em>Foreground </em> options, select <strong>Text</strong>.</li>
-<li>Enter into the <em>Text</em> field the text you want to turn into an icon.
-<p>The icon to be generated appears in the <em> Preview</em> pane, displayed at sizes corresponding
-to different screen densities.</p></li>
-<li>To change the font, select a font from the <em>Font</em> dropdown menu.
-<p>The rest of the settings on this screen are optional.
-To learn how to customize your icons using these options,
-see <a href="#customizing">Customizing Icons</a>.</p></li>
-<li><a href="#saving">Save your icons</a> to the project folder.
-</li>
-</ol>
-
-
-<h2 id="customizing">Customizing Icons</h2>
-<p>Image Asset Studio lets you customize various visual effects for your icons. The following options
-are of particular note.</p>
-
-<ul>
-<li><em>Trim surrounding blank space</em>: This option allows you to adjust the margin between the
-icon graphic and border.
-<figure id="">
-  <img src="{@docRoot}images/tools/trim.png"
-    width="461">
-    <figcaption><strong>Figure 1</strong>: An icon before and after trimming.</figcaption>
-</figure>
-<li><em>Additional Padding</em>: This option allows you to adjust the icon's padding on all four
-sides. Use the slider to select a value between 0 and 100 pixels. For example, for a 100px X 100px
-image with padding of 25px, the resulting image is 150px X 150px.</li>
- <li><em>Theme</em>: This option allows you to set a theme for your action bar and tab icons.
- You can tint icons using the HOLO_DARK or HOLO_LIGHT theme or create
-  a custom theme using the color palette.</li>
- <li><em>Resource name</em>: This option allows you to specify a resource name other than the
- default one. If an asset with the specified resource name already exists, Image Asset Studio warns
-  you that it is going to overwrite the existing asset with this one.</li></ul>
-
-
-<h2 id="saving">Saving Icons</h2>
- <p>This section explains how to save your icons to the <code>res/</code> folder. Do so by following
-  these steps:</p>
- <ol>
- <li>From the initial screen that appeared when you opened Image Asset Studio, click
- <strong>Next</strong>. Image Asset Studio opens a new window.</li>
- <li>Confirm the target module and resource directory settings for the icon.
- If you don't want to use the default target module or resource directory, you can
- <a href="#configure">enter your own values</a> for them.
- </li>
- <li>Click <strong>Finish</strong>. The Image Asset Studio generates new icon files, in PNG format,
- according to the options you have chosen.
- </li>
- </ol>
-
- <p class="note"><strong>Note:</strong> Launcher icon files reside in a different location from that
-  of other icons. They are located in the <code>mipmap/</code> folder. All other icon files reside
-  in the <code>drawable/</code> folder of your project.</p>
-
-
-<h2 id="configure">Configuring Build Properties</h2>
-<p>To change the module and resource directory, follow these steps:</p>
-<ol>
-<li>In the <em>Target Module</em> field, select a module to add the resource to.
-For more information,
-see <a href="{@docRoot}sdk/installing/create-project.html#CreatingAModule">
-Creating an Android Module</a>.
- </li>
-<li>In the <em>Res Directory</em> field, select an option for where to place the image
- asset:
- <ul>
-  <li><code>src/main/res</code>: This source set applies to all build variants, including debug
-   and release.</li>
-  <li><code>src/debug/res</code>, <code> src/release/res</code>: These source sets override the main
-   source set and apply to one version of a build. The debug source set is for debugging only.
-   </li>
-   <li>User-defined: To define your own source set, select <strong>File</strong> &gt; <strong>Project
-   Structure</strong> &gt; <strong>app</strong>  &gt; <strong>Build Types</strong>.
-   For example, you could define a beta source set and create a version of an icon that includes the
-    text "BETA” in the bottom right corner. For more information, see
-    <a href="{@docRoot}tools/building/configuring-gradle.html#workBuildVariants">
-    Work with build variants</a>.</li>
-  </ul>
-</ol>
-
-
-
-
-<h2 id="referincode">Referring to an Image Resource in Code</h2>
-
-<p>After you have an image resource in the <code>res/</code>directory of your project, you can
- reference it from your Java code or your XML layout using its
- <a href="{@docRoot}guide/topics/resources/accessing-resources.html#ResourcesFromCode">
- resource ID</a>. </p>
-
-<p> For example, the following XML references the <code>ic_launcher icon</code> in the
-<code>mipmap/</code> folder.</p>
-<pre>
-&lt;application android:name="ApplicationTitle"
-    android:label="&#64;string/app_label"
-    android:icon="&#64;mipmap/ic_launcher" &gt;</pre>
-
-<p>The following Java code sets an
-<a href="{@docRoot}reference/android/widget/ImageView.html">ImageView</a> to use
- the <code>drawable/myimage.png</code> resource:</p>
-<pre>ImageView imageView = (ImageView) findViewById(R.id.myimageview);
-imageView.setImageResource(R.drawable.myimage);</pre>
diff --git a/docs/html/tools/help/index.jd b/docs/html/tools/help/index.jd
deleted file mode 100755
index 411f908..0000000
--- a/docs/html/tools/help/index.jd
+++ /dev/null
@@ -1,176 +0,0 @@
-page.title=Tools Help
-@jd:body
-
-
-<p>The Android SDK includes a variety of tools that help you develop mobile
-applications for the Android platform. The tools are classified into two groups: SDK tools
-and platform tools. SDK tools are platform independent and are required no matter which
-Android platform you are developing on. Platform tools are customized to support the features of the
-latest Android platform.</p>
-
-
-<h2 id="tools-sdk">SDK Tools</h2>
-<p>The SDK tools are installed with the SDK starter package and are periodically updated.
-The SDK tools are required if you are developing Android applications. The most important SDK tools
-include the Android SDK Manager (<code>android sdk</code>), the AVD Manager (<code>android
-avd</code>) the emulator (<code>emulator</code>), and the Dalvik Debug Monitor Server
-(<code>ddms</code>). A short summary of some frequently-used SDK tools is provided below.</p>
-
-
-
-<h3 id="tools-virtual-device">Virtual Device Tools</h3>
-<dl>
-
-  <dt><a href="{@docRoot}tools/help/avd-manager.html">Android Virtual Device Manager</a></dt>
-    <dd>The AVD Manager provides a graphical user interface in which you can create
-        and manage Android Virtual Devices (AVDs) that run in the Android Emulator. </dd>
-
-  <dt><a href="{@docRoot}tools/help/emulator.html">Android Emulator (emulator)</a></dt>
-    <dd>A QEMU-based device-emulation tool that you can use to debug and test
-        your applications in an actual Android run-time environment.</dd>
-
-  <dt><a href="{@docRoot}tools/help/mksdcard.html">mksdcard</a></dt>
-    <dd>Helps you create a disk image that you can use with the emulator, to simulate the presence
-        of an external storage card (such as an SD card).</dd>
-
-</dl>
-
-
-
-
-<h3 id="tools-development">Development Tools</h3>
-<dl>
-  <dt><a href="{@docRoot}tools/help/android.html">android</a></dt>
-    <dd>Lets you manage AVDs, projects, and the installed components of the SDK.</dd>
-
-
-  <dt><a href="{@docRoot}tools/help/hierarchy-viewer.html">Hierarchy Viewer (hierarchyviewer)</a></dt>
-    <dd>Provides a visual representation of the layout's View hierarchy with performance information
-        for each node in the layout, and a magnified view of the display to closely examine the
-        pixels in your layout.</dd>
-
-  <dt><a href="{@docRoot}tools/help/lint.html">lint</a></dt>
-    <dd>The Android {@code lint} tool is a static code analysis tool that checks your Android
-        project source files for potential bugs and optimization improvements.</dd>
-
-  <dt><a href="{@docRoot}tools/help/sdk-manager.html">SDK Manager</a></dt>
-    <dd>Lets you manage SDK packages, such as installed platforms and system images.</dd>
-
-  <dt><a href="{@docRoot}tools/help/sqlite3.html">sqlite3</a></dt>
-    <dd>Lets you access the SQLite data files created and used by Android applications.</dd>
-
-
-</dl>
-
-
-
-<h3 id="tools-debugging">Debugging Tools</h3>
-<dl>
-
-  <dt><a href="{@docRoot}tools/help/android-monitor.html">Android Monitor</a></dt>
-    <dd>Android Monitor is integrated into Android Studio and provides logcat, memory, CPU, GPU, and
-      network monitors for app debugging and analysis.</dd>
-
-  <dt><a href="{@docRoot}tools/help/adb.html">adb</a></dt>
-    <dd>Android Debug Bridge (adb) is a versatile command line tool that lets you communicate with
-        an emulator instance or connected Android-powered device. It also provides access to the
-        device shell.</dd>
-
-  <dt><a href="{@docRoot}tools/help/shell.html">ADB Shell Commands</a></dt>
-    <dd>Learn the commands available for advanced command-line operations.</dd>
-
-  <dt><a href="{@docRoot}tools/debugging/ddms.html">Dalvik Debug Monitor Server (ddms)</a></dt>
-    <dd>Lets you debug Android apps.</dd>
-
-  <dt><a href="{@docRoot}tools/help/monitor.html">Device Monitor</a></dt>
-    <dd>Android Device Monitor is a stand-alone tool that provides a graphical user interface for
-        several Android application debugging and analysis tools.</dd>
-
-  <dt><a href="{@docRoot}tools/help/dmtracedump.html">dmtracedump</a></dt>
-    <dd>Generates graphical call-stack diagrams from trace log files. The tool uses the
-Graphviz Dot utility to create the graphical output, so you need to install Graphviz before
-running <code>dmtracedump</code>. For more information on using <code>dmtracedump</code>, see <a
-href="{@docRoot}tools/debugging/debugging-tracing.html#dmtracedump">Profiling
-with Traceview and dmtracedump</a></dd>
-
-
-  <dt><a href="{@docRoot}tools/help/hprof-conv.html">hprof-conv</a></dt>
-    <dd>Converts the HPROF file that is generated by the Android SDK tools to a standard format so
-you can view the file in a profiling tool of your choice.</dd>
-
-  <dt><a href="{@docRoot}tools/help/systrace.html">Systrace</a></dt>
-    <dd>Lets you analyze the execution of your application in the context of system processes,
-    to help diagnose display and performance issues.</dd>
-
-  <dt><a href="{@docRoot}tools/help/traceview.html">traceview</a></dt>
-    <dd>Provides a graphical viewer for execution logs saved by your application.</dd>
-
-  <dt><a href="{@docRoot}tools/help/gltracer.html">Tracer for OpenGL ES</a></dt>
-    <dd>Allows you to capture <a href="{@docRoot}guide/topics/graphics/opengl.html">OpenGL ES</a>
-      commands and frame-by-frame images to help you understand how your app is executing
-      graphics commands.</dd>
-
-</dl>
-
-
-<h3 id="tools-build">Build Tools</h3>
-<dl>
-
-  <dt><a href="{@docRoot}tools/help/jobb.html">JOBB</a></dt>
-    <dd>Allows you to build encrypted and unencrypted
-    <a href="{@docRoot}google/play/expansion-files.html">APK expansion files</a> in Opaque
-    Binary Blob (OBB) format.</dd>
-
-  <dt><a href="{@docRoot}tools/help/proguard.html">ProGuard</a></dt>
-    <dd>Shrinks, optimizes, and obfuscates your code by removing unused code and renaming
-classes, fields, and methods with semantically obscure names.</dd>
-
-  <dt><a href="{@docRoot}tools/help/zipalign.html">zipalign</a></dt>
-    <dd>Optimizes <code>.apk</code> files by ensuring that all uncompressed data starts with a
-particular alignment relative to the start of the file. This should always be used to align .apk
-files after they have been signed.</dd>
-
-</dl>
-
-
-<h3 id="tools-image">Image Tools</h3>
-<dl>
-  <dt><a href="{@docRoot}tools/help/draw9patch.html">Draw 9-patch</a></dt>
-    <dd>Allows you to easily create a {@link android.graphics.NinePatch} graphic using a
-WYSIWYG editor. It also previews stretched versions of the image, and highlights the area in which
-content is allowed.</dd>
-
-  <dt><a href="{@docRoot}tools/help/etc1tool.html">etc1tool</a></dt>
-    <dd>A command line utility that lets you encode PNG images to the ETC1 compression standard and
-    decode ETC1 compressed images back to PNG.</dd>
-
-</dl>
-
-
-
-<h2 id="tools-platform">Platform Tools</h2>
-
-<p>The platform tools are typically updated every time you install a new SDK platform. Each update
-of the platform tools is backward compatible with older platforms. Usually, you directly use only
-one of the platform tools&mdash;the <a href="adb.html">Android Debug Bridge (<code>adb</code>)</a>.
-Android Debug Bridge is a versatile tool that lets you manage the state of an emulator instance or
-Android-powered device. You can also use it to install an Android application (.apk) file on a
-device.</p>
-
-<p>The other platform tools, such as <a href="{@docRoot}guide/components/aidl.html">aidl</a>,
-<code>aapt</code>, <code>dexdump</code>, and <code>dx</code>, are typically called by the Android
-build tools, so you rarely need to invoke these tools directly.
-As a general rule, you should rely on the build tools to call them as needed.</p>
-
-<p class="note"><strong>Note:</strong> The Android SDK provides additional shell tools that can
-be accessed through <code>adb</code>, such as <a href="{@docRoot}tools/help/bmgr.html">bmgr</a> and
-<a href="{@docRoot}tools/help/logcat.html">logcat</a>.</p>
-<dl>
-  <dt><a href="{@docRoot}tools/help/bmgr.html">bmgr</a></dt>
-    <dd>A shell tool you can use to interact with the Backup Manager on Android devices supporting
-    API Level 8 or greater.</dd>
-
-  <dt><a href="{@docRoot}tools/help/logcat.html">logcat</a></dt>
-    <dd>Provides a mechanism for collecting and viewing system debug output.</dd>
-
-</dl>
diff --git a/docs/html/tools/help/jobb.jd b/docs/html/tools/help/jobb.jd
deleted file mode 100644
index ae60223..0000000
--- a/docs/html/tools/help/jobb.jd
+++ /dev/null
@@ -1,102 +0,0 @@
-page.title=JOBB
-@jd:body
-
-
-<p>The {@code jobb} tool allows you to build encrypted and unencrypted APK expansion files in
-  Opaque Binary Blob (OBB) format. You can download and mount these expansion files in your
-  application using {@link android.os.storage.StorageManager} on devices with Android 2.3 (API
-  Level 9) or higher. OBB files are used to provide additional file assets for Android applications
-  (such as graphics, sounds and video), separate from an application's APK file. For more
-  information on using expansion files, see
-  <a href="{@docRoot}google/play/expansion-files.html">APK Expansion Files</a>.</p>
-
-
-<h2 id="usage">Usage</h2>
-
-<p>The syntax for running {@code jobb} is as follows:</p>
-
-<pre>
-jobb [-d &lt;directory&gt;][-o &lt;filename&gt;][-pn &lt;package&gt;][-pv &lt;version&gt;] \
-     [-k &lt;key&gt;][-ov][-dump &lt;filename&gt;][-v][-about]
-</pre>
-
-<p>You can use the {@code jobb} tool to create an OBB file or extract the contents of an
-existing OBB. The following example command creates an OBB file from source files.</p>
-
-<pre>
-$ jobb -d /temp/assets/ -o my-app-assets.obb -k secret-key -pn com.my.app.package -pv 11
-</pre>
-
-<p>This example shows how to dump (extract) the contents of an existing OBB file:</p>
-
-<pre>
-$ jobb -d /temp/obb-output/ -o my-app-assets.obb -k secret-key
-</pre>
-
-
-<h2 id="options">Options</h2>
-
-<p>The table below lists the command line options for the {@code jobb} tool.</p>
-
-<table>
-  <tr>
-    <th>Option</th>
-    <th>Description</th>
-  </tr>
-  <tr>
-    <td>{@code -d <directory>}</td>
-    <td>Set the input directory for creating an OBB file, or the output directory when extracting
-      ({@code -dump}) an existing file. When creating an OBB file, the contents of the specified
-      directory and all its sub-directories are included in the OBB file system.
-    </td>
-  </tr>
-  <tr>
-    <td>{@code -o <filename>}</td>
-    <td>Specify the filename for the OBB file. This parameter is required when
-    creating an OBB and extracting (dumping) its contents.</td>
-  </tr>
-  <tr>
-    <td>{@code -pn <package>}</td>
-    <td>Specify the package name for the application that mounts the OBB file, which corresponds
-    to the {@code package} value specified in your application's manifest. This parameter is
-    required when creating an OBB file.</td>
-  </tr>
-  <tr>
-    <td>{@code -pv <version>}</td>
-    <td>Set the minimum version for the application that can mount the OBB file, which corresponds
-    to the {@code android:versionCode} value in your application's manifest. This parameter is
-    required when creating an OBB file.</td>
-  </tr>
-  <tr>
-    <td>{@code -k <key>}</td>
-    <td>Specify a password for encrypting a new OBB file or decrypting an existing, encypted
-      OBB file.</td>
-  </tr>
-  <tr>
-    <td>{@code -ov}</td>
-    <td>Create OBB file that is an overlay of an existing OBB file structure. This option allows
-      the new package contents to be mounted into the same location as a previous package and is
-      intended for creating patch versions of previously generated OBB files. Files within an
-      overlay OBB file replace files that have the same path.</td>
-  </tr>
-  <tr>
-    <td style="white-space: nowrap">{@code -dump <filename>}</td>
-    <td><p>Extract the contents of the specified OBB file. When using this option, you must also
-      specify the output directory for the contents using the {@code -d <directory>}
-      parameter.</p>
-
-      <p class="note"><strong>Note:</strong> When dumping an existing OBB file, you can omit the
-      {@code -d <directory>} parameter to get a listing of the directories inside the file,
-      without extracting the contents.</p>
-    </td>
-  </tr>
-  <tr>
-    <td>{@code -v}</td>
-    <td>Set verbose output for the tool.</td>
-  </tr>
-  <tr>
-    <td>{@code -about}</td>
-    <td>Display version and help information for the {@code jobb} tool.</td>
-  </tr>
-
-</table>
diff --git a/docs/html/tools/help/layoutopt.jd b/docs/html/tools/help/layoutopt.jd
deleted file mode 100755
index 1bc6c64..0000000
--- a/docs/html/tools/help/layoutopt.jd
+++ /dev/null
@@ -1,33 +0,0 @@
-page.title=layoutopt
-parent.title=Tools
-parent.link=index.html
-@jd:body
-
-
-<p class="note"><strong>Note: </strong>The Android <code>layoutopt</code> tool has been replaced 
-by the {@code lint} tool beginning in SDK Tools revision 16. The {@code lint} tool reports UI 
-layout performance issues in a similar way as <code>layoutopt</code>, and detects additional problems.</p>
-<p>For more information about using {@code lint}, see 
-<a href="{@docRoot}tools/debugging/improving-w-lint.html">Improving Your Code with lint</a> and the 
-<a href="{@docRoot}tools/help/lint.html">lint reference documentation</a>.</p>
-
-<p><code>layoutopt</code> is a command-line tool that helps you optimize the
-layouts and layout hierarchies of your applications.<p>
-
-<p>This document is a reference to the available command line options. For more information and 
-sample
-output of the tool, see <a
-href="{@docRoot}tools/debugging/debugging-ui.html#layoutopt">Optimizing layouts with
-layoutopt</a>.</p>
-
-<h3>Usage</h3>
-
-<p>To run <code>layoutopt</code> against a given list of layout resources:</p>
-
-<pre>layoutopt &lt;file_or_directory&gt; ...</pre>
-
-<p>For example:</p>
-
-<pre>$ layoutopt res/layout-land</pre>
-<pre>$ layoutopt res/layout/main.xml res/layout-land/main.xml</pre>
-
diff --git a/docs/html/tools/help/lint.jd b/docs/html/tools/help/lint.jd
deleted file mode 100644
index 98a5652..0000000
--- a/docs/html/tools/help/lint.jd
+++ /dev/null
@@ -1,191 +0,0 @@
-page.title=lint
-parent.title=Tools
-parent.link=index.html
-@jd:body
-
-<div id="qv-wrapper">
-  <div id="qv">
-     <h2>In this document</h2>
-  <ol>
-     <li><a href="#syntax">Syntax</a></li>
-     <li><a href="#options">Options</a></li>
-     <li><a href="#config_keywords">Configuring Java and XML Source Files</a></li>
-  </ol>
-  </div>
-</div>
-
-<p>The Android {@code lint} tool is a static code analysis tool that checks your Android project source files for potential bugs and optimization improvements for correctness, security, performance, usability, accessibility, and internationalization.</p>
-
-<p>In Android Studio, the configured <code>lint</code> and other IDE inspections run automatically
-whenever you compile your program. You can also manually run inspections in Android Studio
-by selecting <strong>Analyze &gt; Inspect Code</strong> from the application or right-click menu.
-The <em>Specify Inspections Scope</em> dialog appears so you can specify the desired inspection 
-profile and scope.</p>
-
-<p>For more information on enabling {@code lint} inspections and running {@code lint},
-see <a href="{@docRoot}tools/debugging/improving-w-lint.html">Improving Your Code with lint</a>.</p>
-
-<h2 id="syntax">Command Line Syntax</h2>
-<p>
-<pre>lint [flags] &lt;project directory&gt;</pre>
-
-For example, you can issue the following command to scan the Java and XML files under the
-{@code myproject}  directory and its subdirectories. The result is displayed on the console.
-<pre>lint myproject</pre>
-
-You can also use {@code lint} to check for a specific issue. For example, you can run the following command to scan the files under the {@code myproject} directory and its subdirectories to check for XML attributes missing the Android namespace prefix. The issue ID {@code MissingPrefix} tells lint to only scan for this issue.
-<pre>lint --check MissingPrefix myproject</pre>
-
-You can create an HTML report for the issues that {@code lint} detects. For example, you can run the following command to scan the {@code myproject} directory and its subdirectories for accessibility issues, then generate an HTML report in the {@code accessibility_report.html} file.
-<pre>lint --check Accessibility --HTML accessibility_report.html myproject</pre>
-</p>
-
-<h2 id="options">Options</h2>
-<p>Table 1 describes the command-line options for {@code lint}.</p>
-<p class="table-caption" id="table1">
-  <strong>Table 1.</strong> Command-line options for lint</p>
-<table>
-<tr>
-  <th>Category</th>
-  <th>Option</th>
-  <th>Description</th>
-  <th>Comments</th>
-</tr>
-
-<tr>
-<td rowspan="7">Checking</td>
-<td><nobr><code>--disable &lt;list&gt;</code></nobr></td>
-<td>Disable checking for a specific list of issues.</td>
-<td>The <code>&lt;list&gt;</code> must be a comma-separated list of {@code lint} issue IDs or categories.</td>
-</tr>
-
-<tr>
-<td><nobr><code>--enable &lt;list&gt;</code></nobr></td>
-<td>Check for all the default issues supported by {@code lint} as well as the specifically enabled list of issues.</td>
-<td>The <code>&lt;list&gt;</code> must be a comma-separated list of {@code lint} issue IDs or categories.</td>
-</tr>
-
-<tr>
-<td><nobr><code>--check &lt;list&gt;</code></nobr></td>
-<td>Check for a specific list of issues.</td>
-<td>The <code>&lt;list&gt;</code> must be a comma-separated list of {@code lint} issue IDs or categories.</td>
-</tr>
-
-<tr>
-<td><nobr><code>-w</code> or <code>--nowarn</code></nobr></td>
-<td>Only check for errors and ignore warnings</td>
-<td>&nbsp;</td>
-</tr>
-
-<tr>
-<td><nobr><code>-Wall</code></nobr></td>
-<td>Check for all warnings, including those that are disabled by default</td>
-<td>&nbsp;</td>
-</tr>
-
-<tr>
-<td><nobr><code>-Werror</code></nobr></td>
-<td>Report all warnings as errors</td>
-<td>&nbsp;</td>
-</tr>
-
-<tr>
-<td><nobr><code>--config &lt;filename&gt;</code></nobr></td>
-<td>Use the specified configuration file to determine if issues are enabled or disabled for {@code lint} checking</td>
-<td>If the project contains a {@code lint.xml} file, the {@code lint.xml} file will be used as the configuration file by default.</td>
-</tr>
-
-<tr>
-<td rowspan="9">Reporting</td>
-<td><nobr><code>--html &lt;filename&gt;</code></nobr></td>
-<td>Generate an HTML report.</td>
-<td>The report is saved in the output file specified in the argument. The HTML output includes code snippets of the source code where {@code lint} detected an issue, a verbose description of the issue found, and links to the source file.</td>
-</tr>
-
-<tr>
-<td><nobr><code>--url &lt;filepath&gt;=&lt;url&gt;</code></nobr></td>
-<td>In the HTML output, replace a local path prefix <code>&lt;filepath&gt;</code> with a url prefix <code>&lt;url&gt;</code>.</td>
-<td>The {@code --url} option only applies when you are generating an HTML report with the {@code --html} option. You can specify multiple &lt;filepath&gt;=&lt;url&gt; mappings in the argument by separating each mapping with a comma.<p>To turn off linking to files, use {@code --url none}</p></td>
-</tr>
-
-<tr>
-<td><nobr><code>--simplehtml &lt;filename&gt;</code></nobr></td>
-<td>Generate a simple HTML report</td>
-<td>The report is saved in the output file specified in the argument.</td>
-</tr>
-
-<tr>
-<td><nobr><code>--xml &lt;filename&gt;</code></nobr></td>
-<td>Generate an XML report</td>
-<td>The report is saved in the output file specified in the argument.</td>
-</tr>
-
-<tr>
-<td><nobr><code>--fullpath</code></nobr></td>
-<td>Show the full file paths in the {@code lint} checking results.</td>
-<td>&nbsp;</td>
-</tr>
-
-<tr>
-<td><nobr><code>--showall</code></nobr></td>
-<td>Don't truncate long messages or lists of alternate locations.</td>
-<td>&nbsp;</td>
-</tr>
-
-<tr>
-<td><nobr><code>--nolines</code></nobr></td>
-<td>Don't include code snippets from the source files in the output.</td>
-<td>&nbsp;</td>
-</tr>
-
-<tr>
-<td><nobr><code>--exitcode</code></nobr></td>
-<td>Set the exit code to 1 if errors are found.</td>
-<td>&nbsp;</td>
-</tr>
-
-<tr>
-<td><nobr><code>--quiet</code></nobr></td>
-<td>Don't show the progress indicator.</td>
-<td>&nbsp;</td>
-</tr>
-
-<tr>
-<td rowspan="4">Help</td>
-<td><nobr><code>--help</code></nobr></td>
-<td>List the command-line arguments supported by the {@code lint} tool.</td>
-<td>Use {@code --help <topic>} to see help information for a specific topic, such as "suppress".</td>
-</tr>
-
-<tr>
-<td><nobr><code>--list</code></nobr></td>
-<td>List the ID and short description for issues that can be checked by {@code lint}</td>
-<td>&nbsp;</td>
-</tr>
-
-<tr>
-<td><nobr><code>--show</code></nobr></td>
-<td>List the ID and verbose description for issues that can be checked by {@code lint}</td>
-<td>Use {@code --show <ids>} to see descriptions for a specific list of {@code lint} issue IDs.</td>
-</tr>
-
-<tr>
-<td><nobr><code>--version</code></nobr></td>
-<td>Show the {@code lint} version</td>
-<td>&nbsp;</td>
-</tr>
-
-</table>
-
-
-<h2 id="config_keywords">Configuring Java and XML Source Files</h2>
-<p>To configure lint checking, you can apply the following annotation or attribute to the source files in your Android project. </p>
-<ul>
-<LI>To disable {@code lint} checking for a specific Java class or method, use the <code>@SuppressLint</code>
-annotation. </LI>
-<li>To disable {@code lint} checking for specific sections of your XML file, use the
-<code>tools:ignore</code> attribute. </li>
-</ul>
-<p>You can also specify your {@code lint} checking preferences for a specific Android project in
-the <code>lint.xml</code> file.  For more information on configuring {@code lint}, see
-<a href="{@docRoot}tools/debugging/improving-w-lint.html">Improving Your Code with lint</a>.</p>
diff --git a/docs/html/tools/help/logcat.jd b/docs/html/tools/help/logcat.jd
deleted file mode 100644
index 1d75848..0000000
--- a/docs/html/tools/help/logcat.jd
+++ /dev/null
@@ -1,115 +0,0 @@
-page.title=logcat
-parent.title=Tools
-parent.link=index.html
-@jd:body
-
-  <div id="qv-wrapper">
-    <div id="qv">
-      <h2>See also</h2>
-
-      <ol>
-          <li><a href="{@docRoot}tools/help/android-monitor.html">Android Monitor</a></li>
-      </ol>
-    </div>
-  </div>
-
-  <p>The Android logging system provides a mechanism for collecting and viewing system debug
-  output. Logs from various applications and portions of the system are collected in a series of
-  circular buffers, which then can be viewed and filtered by the <code>logcat</code> command. You can use
-  <code>logcat</code> from an ADB shell to view the log messages.</p>
-
-  <p>For complete information about logcat options and filtering specifications, see
-  <a href="{@docRoot}tools/debugging/debugging-log.html">Reading and Writing Logs</a>.</p>
-
-  <p>For more information on accessing <code>logcat</code> from DDMS, instead of the command line, see
-  <a href="{@docRoot}tools/debugging/ddms.html">Using DDMS</a>. </p>
-
-  <h3>Syntax</h3>
-  <pre>
-[adb] logcat [&lt;option&gt;] ... [&lt;filter-spec&gt;] ...
-</pre>
-
-  <p>You can run <code>logcat</code> as an adb command or directly in a shell prompt
-  of your emulator or connected device. To view log output using adb, navigate to your SDK
-  <code>platform-tools/</code> directory and execute:</p>
-  <pre>
-$ adb logcat
-</pre>
-
-  <p>You can create a shell connection to a device and execute:</p>
-  <pre>
-$ adb shell
-# logcat
-</pre>
-
-  <h3>Options</h3>
-  <p>The following table describes the command line options of <code>logcat</code>.</p>
-
-  <table>
-    <tr>
-      <th>Option</th>
-
-      <th>Description</th>
-    </tr>
-
-    <tr>
-      <td><code>-b&nbsp;&lt;buffer&gt;</code></td>
-
-      <td>Loads an alternate log buffer for viewing, such as <code>events</code> or
-      <code>radio</code>. The <code>main</code> buffer is used by default. See <a href=
-      "{@docRoot}tools/debugging/debugging-log.html#alternativeBuffers">Viewing Alternative Log Buffers</a>.</td>
-    </tr>
-
-    <tr>
-      <td><code>-c</code></td>
-
-      <td>Clears (flushes) the entire log and exits.</td>
-    </tr>
-
-    <tr>
-      <td><code>-d</code></td>
-
-      <td>Dumps the log to the screen and exits.</td>
-    </tr>
-
-    <tr>
-      <td><code>-f&nbsp;&lt;filename&gt;</code></td>
-
-      <td>Writes log message output to <code>&lt;filename&gt;</code>. The default is
-      <code>stdout</code>.</td>
-    </tr>
-
-    <tr>
-      <td><code>-g</code></td>
-
-      <td>Prints the size of the specified log buffer and exits.</td>
-    </tr>
-
-    <tr>
-      <td><code>-n&nbsp;&lt;count&gt;</code></td>
-
-      <td>Sets the maximum number of rotated logs to <code>&lt;count&gt;</code>. The default value
-      is 4. Requires the <code>-r</code> option.</td>
-    </tr>
-
-    <tr>
-      <td><code>-r&nbsp;&lt;kbytes&gt;</code></td>
-
-      <td>Rotates the log file every <code>&lt;kbytes&gt;</code> of output. The default value is
-      16. Requires the <code>-f</code> option.</td>
-    </tr>
-
-    <tr>
-      <td><code>-s</code></td>
-
-      <td>Sets the default filter spec to silent.</td>
-    </tr>
-
-    <tr>
-      <td><code>-v&nbsp;&lt;format&gt;</code></td>
-
-      <td>Sets the output format for log messages. The default is <code>brief</code> format. For a
-      list of supported formats, see <a href="{@docRoot}tools/debugging/debugging-log.html#outputFormat">Controlling Log Output
-      Format</a>.</td>
-    </tr>
-  </table>
diff --git a/docs/html/tools/help/mksdcard.jd b/docs/html/tools/help/mksdcard.jd
deleted file mode 100644
index 38c4356..0000000
--- a/docs/html/tools/help/mksdcard.jd
+++ /dev/null
@@ -1,55 +0,0 @@
-page.title=mksdcard
-parent.title=Tools
-parent.link=index.html
-@jd:body
-
- <p>The <code>mksdcard</code> tool lets you quickly create a FAT32 disk image that you can load in the
-  emulator, to simulate the presence of an SD card in the device. Because you can specify an SD
-  card while creating an AVD in the AVD Manager, you usually use that feature to create an SD card.
-  This tool creates an SD card that is not bundled with an AVD, so it is useful for situations
-  where you need to share a virtual SD card between multiple emulators.</p>
-
-  <h3>Usage</h3>
-  <pre>
-mksdcard -l &lt;label&gt; &lt;size&gt; &lt;file&gt;
-</pre>
-
-  <h3>Options</h3>
-  <p>The following table describes the command-line options of <code>mksdcard</code></p>
-  <table>
-    <tr>
-      <th>Option</th>
-      
-      <th>Description</th>
-    </tr>
-    
-    <tr>
-      <td><code>-l</code></td>
-
-      <td>A volume label for the disk image to create.</td>
-    </tr>
-
-    <tr>
-      <td><code>size</code></td>
-
-      <td>An integer that specifies the size (in bytes) of disk image to create. You can also
-      specify size in kilobytes or megabytes, by appending a "K" or "M" to &lt;size&gt;. For
-      example, <code>1048576K</code>, <code>1024M</code>.</td>
-    </tr>
-
-    <tr>
-      <td><code>file</code></td>
-
-      <td>The path/filename of the disk image to create.</td>
-    </tr>
-  </table>
-
-  <p>Once you have created the disk image file, you can load it in the emulator at startup using
-  the emulator's <code>-sdcard</code> option. For more information, see <a href= 
-  "{@docRoot}tools/help/emulator.html">Android Emulator</a>.</p>
-  
-  <p>The usage for the <code>-sdcard</code> option is as follows:</p>
-  <pre>emulator -sdcard &lt;file&gt;</pre>
-
-<h3>Example</h3>
-<pre>mksdcard -l mySdCard 1024M mySdCardFile.img</pre>
\ No newline at end of file
diff --git a/docs/html/tools/help/monitor.jd b/docs/html/tools/help/monitor.jd
deleted file mode 100755
index 3541cc3..0000000
--- a/docs/html/tools/help/monitor.jd
+++ /dev/null
@@ -1,51 +0,0 @@
-page.title=Device Monitor
-@jd:body
-
-  <div id="qv-wrapper">
-    <div id="qv">
-      <h2>See also</h2>
-
-      <ol>
-        <li><a href="{@docRoot}tools/debugging/debugging-memory.html"
-          >Investigating Your RAM Usage</a></li>
-          <li><a href="{@docRoot}tools/help/android-monitor.html">Android Monitor</a></li>
-      </ol>
-    </div>
-  </div>
-
-
-<p>Android Device Monitor is a stand-alone tool that provides a graphical user interface for
-several Android application debugging and analysis tools. The Monitor tool does not
-require installation of an integrated development environment, such as Android Studio, and
-encapsulates the following tools:</p>
-
-<ul>
-  <li><a href="{@docRoot}tools/debugging/ddms.html">DDMS</a></li>
-  <li><a href="gltracer.html">Tracer for OpenGL ES</a></li>
-  <li><a href="hierarchy-viewer.html">Hierarchy Viewer</a></li>
-  <li><a href="systrace.html">Systrace</a></li>
-  <li><a href="traceview.html">Traceview</a></li>
-  <li>Pixel Perfect magnification viewer</li>
-</ul>
-
-
-<h2 id="usage">Usage</h2>
-
-<p>To start Device Monitor:</p>
-
-<ul>
-  <li>From Android Studio, choose <strong>Tools &gt; Android Device Monitor</strong> or click
-    the Android Device Monitor icon
-    <img src="{@docRoot}images/tools/hierarchicalviewer-icon.png" alt=""/>.
-  </li>
-  <li>From the command line, in the SDK <code>tools/</code> directory, enter the following command:
-  <pre>monitor</pre>
-  </li>
-</ul>
-
-
-
-<p>Start an Android emulator or connect an Android device via USB cable, and connect Device
-Monitor to the device by selecting it in the <strong>Devices</strong> window.</p>
-
-<p class="note"><strong>Note:</strong> Only one debugger can be connected to your device at a time.</p>
diff --git a/docs/html/tools/help/monkey.jd b/docs/html/tools/help/monkey.jd
deleted file mode 100644
index 7c64830..0000000
--- a/docs/html/tools/help/monkey.jd
+++ /dev/null
@@ -1,242 +0,0 @@
-page.title=UI/Application Exerciser Monkey
-parent.title=Tools
-parent.link=index.html
-@jd:body
-
-<p>The Monkey is a program that runs on your 
-<a href="{@docRoot}tools/help/emulator.html">emulator</a> or device and generates pseudo-random
-streams of user events such as clicks, touches, or gestures, as well as a number of system-level 
-events.  You can use the Monkey to stress-test applications that you are developing, in a random 
-yet repeatable manner.</p>
-
-<a name="overview"></a>
-<h2>Overview</h2>
-
-<p>The Monkey is a command-line tool that you can run on any emulator
-instance or on a device.  It sends a pseudo-random stream of 
-user events into the system, which acts as a stress test on the application software you are 
-developing.</p>
-
-<p>The Monkey includes a number of options, but they break down into four primary
-categories:</p>
-
-<ul>
-  <li>Basic configuration options, such as setting the number of events to attempt.</li>
-  <li>Operational constraints, such as restricting the test to a single package.</li>
-  <li>Event types and frequencies.</li>
-  <li>Debugging options.</li>
-</ul>
-
-<p>When the Monkey runs, it generates events and sends them to the system.  It also <i>watches</i>
-the system under test and looks for three conditions, which it treats specially:</p>
-
-<ul>
-  <li>If you have constrained the Monkey to run in one or more specific packages, it 
-  watches for attempts to navigate to any other packages, and blocks them.</li>
-  <li>If your application crashes or receives any sort of unhandled exception, the Monkey
-  will stop and report the error.</li>
-  <li>If your application generates an <i>application not responding</i> error, the Monkey
-  will stop and report the error.</li>
-</ul>
-
-<p>Depending on the verbosity level you have selected, you will also see reports on the progress
-of the Monkey and the events being generated.</p>
-
-<a name="basics"></a>
-<h2>Basic Use of the Monkey</h2>
-
-<p>You can launch the Monkey using a command line on your development machine or from a script. 
-Because the Monkey runs in the emulator/device environment, you must launch it from a shell in 
-that environment.  You can do this by prefacing <code>adb shell</code> to each command, 
-or by entering the shell and entering Monkey commands directly.</p>
-<p>The basic syntax is: </p>
-
-<pre>$ adb shell monkey [options] &lt;event-count&gt;</pre>
-    
-<p>With no options specified, the Monkey will launch in a quiet (non-verbose) mode, and will send 
-events to any (and all) packages installed on your target.  Here is a more typical command line,
-which will launch your application and send 500 pseudo-random events to it:</p>
-
-<pre>$ adb shell monkey -p your.package.name -v 500</pre>
-
-<a name="reference"></a>
-<h2>Command Options Reference</h2>
-
-<p>The table below lists all options you can include on the Monkey command line.</p>
-
-<table>
-<tr>
-  <th>Category</th>
-  <th>Option</th>
-  <th>Description</th>
-</tr>
-
-<tr>
-<td rowspan="2">General</td>
-<td><code>--help</code></td>
-<td>Prints a simple usage guide.</td>
-</tr>
-
-<tr>
-<td><code>-v</code></td>
-<td>Each -v on the command line will increment the verbosity level.  
-Level 0 (the default) provides little information beyond startup notification, test completion, and
-final results.  
-Level 1 provides more details about the test as it runs, such as individual events being sent to 
-your activities.  
-Level 2 provides more detailed setup information such as activities selected or not selected for 
-testing.</td>
-</tr>
-
-<tr>
-<td rowspan="10">Events</td>
-<td><code>-s &lt;seed&gt;</code></td>
-<td>Seed value for pseudo-random number generator.  If you re-run the Monkey with the same seed 
-value, it will generate the same sequence of events.</td>
-</tr>
-
-<tr>
-<td><code>--throttle &lt;milliseconds&gt;</code></td>
-<td>Inserts a fixed delay between events.  You can use this option to slow down the Monkey.  
-If not specified, there is no delay and the events are generated as rapidly as possible.</td>
-</tr>
-
-<tr>
-<td><code>--pct-touch &lt;percent&gt;</code></td>
-<td>Adjust percentage of touch events.  
-(Touch events are a down-up event in a single place on the screen.)</td>
-</tr>
-
-<tr>
-<td><code>--pct-motion &lt;percent&gt;</code></td>
-<td>Adjust percentage of motion events.
-(Motion events consist of a down event somewhere on the screen, a series of pseudo-random
-movements, and an up event.)</td>
-</tr>
-
-<tr>
-<td><code>--pct-trackball &lt;percent&gt;</code></td>
-<td>Adjust percentage of trackball events.
-(Trackball events consist of one or more random movements, sometimes followed by a click.)</td>
-</tr>
-
-<tr>
-<td><code>--pct-nav &lt;percent&gt;</code></td>
-<td>Adjust percentage of "basic" navigation events.
-(Navigation events consist of up/down/left/right, as input from a directional input device.)</td>
-</tr>
-
-<tr>
-<td><code>--pct-majornav &lt;percent&gt;</code></td>
-<td>Adjust percentage of "major" navigation events.
-(These are navigation events that will typically cause actions within your UI, such as
-the center button in a 5-way pad or the menu key.)</td>
-</tr>
-
-<tr>
-<td><code>--pct-syskeys &lt;percent&gt;</code></td>
-<td>Adjust percentage of "system" key events.
-(These are keys that are generally reserved for use by the system, such as Home, Back, Start Call,
-End Call, or Volume controls.)</td>
-</tr>
-
-<tr>
-<td><code>--pct-appswitch &lt;percent&gt;</code></td>
-<td>Adjust percentage of activity launches.  At random intervals, the Monkey will issue a startActivity() call, as a way of maximizing
-coverage of all activities within your package.</td>
-</tr>
-
-<tr>
-<td><code>--pct-anyevent &lt;percent&gt;</code></td>
-<td>Adjust percentage of other types of events.  This is a catch-all for all other types of events such as keypresses, other less-used
-buttons on the device, and so forth.</td>
-</tr>
-
-<tr>
-<td rowspan="2">Constraints</td>
-<td><code>-p &lt;allowed-package-name&gt;</code></td>
-<td>If you specify one or more packages this way, the Monkey will <i>only</i> allow the system
-to visit activities within those packages.  If your application requires access to activities in
-other packages (e.g. to select a contact) you'll need to specify those packages as well.
-If you don't specify any packages, the Monkey will allow the system to launch activities
-in all packages.  To specify multiple packages, use the -p option multiple times &mdash; one -p 
-option per package.</td>
-</tr>
-
-<tr>
-<td><code>-c &lt;main-category&gt;</code></td>
-<td>If you specify one or more categories this way, the Monkey will <i>only</i> allow the 
-system to visit activities that are listed with one of the specified categories.  
-If you don't specify any categories, the Monkey will select activities listed with the category
-Intent.CATEGORY_LAUNCHER or Intent.CATEGORY_MONKEY.  To specify multiple categories, use the -c
-option multiple times &mdash; one -c option per category.</td>
-</tr>
-
-<tr>
-<td rowspan="8">Debugging</td>
-<td><code>--dbg-no-events</code></td>
-<td>When specified, the Monkey will perform the initial launch into a test activity, but
-will not generate any further events.
-For best results, combine with -v, one or more package constraints, and a non-zero throttle to keep the Monkey
-running for 30 seconds or more.  This provides an environment in which you can monitor package
-transitions invoked by your application.</td>
-</tr>
-
-<tr>
-<td><code>--hprof</code></td>
-<td>If set, this option will generate profiling reports immediately before and after
-the Monkey event sequence.
-This will generate large (~5Mb) files in data/misc, so use with care.  See 
-<a href="{@docRoot}tools/debugging/debugging-tracing.html" title="traceview">Traceview</a> for more information
-on trace files.</td>
-</tr>
-
-<tr>
-<td><code>--ignore-crashes</code></td>
-<td>Normally, the Monkey will stop when the application crashes or experiences any type of 
-unhandled exception.  If you specify this option, the Monkey will continue to send events to
-the system, until the count is completed.</td>
-</tr>
-
-<tr>
-<td><code>--ignore-timeouts</code></td>
-<td>Normally, the Monkey will stop when the application experiences any type of timeout error such
-as a "Application Not Responding" dialog.  If you specify this option, the Monkey will continue to 
-send events to the system, until the count is completed.</td>
-</tr>
-
-<tr>
-<td><code>--ignore-security-exceptions</code></td>
-<td>Normally, the Monkey will stop when the application experiences any type of permissions error,
-for example if it attempts to launch an activity that requires certain permissions.  If you specify
-this option, the Monkey will continue to send events to the system, until the count is 
-completed.</td>
-</tr>
-
-<tr>
-<td><code>--kill-process-after-error</code></td>
-<td>Normally, when the Monkey stops due to an error, the application that failed will be left
-running.  When this option is set, it will signal the system to stop the process in which the error
-occurred.
-Note, under a normal (successful) completion, the launched process(es) are not stopped, and
-the device is simply left in the last state after the final event.</td>
-</tr>
-
-<tr>
-<td><code>--monitor-native-crashes</code></td>
-<td>Watches for and reports crashes occurring in the Android system native code. If --kill-process-after-error is set, the system will stop.</td>
-</tr>
-
-<tr>
-<td><code>--wait-dbg</code></td>
-<td>Stops the Monkey from executing until a debugger is attached to it.</td>
-</tr>
-
-</table>
-
-<!-- TODO: add a section called "debugging" that covers ways to use it, 
-need to clear data, use of the seed, etc. -->
-
-<!-- TODO: add a section that lays down a contract for Monkey output so it can be
-scripted safely. -->
-
diff --git a/docs/html/tools/help/monkeyrunner_concepts.jd b/docs/html/tools/help/monkeyrunner_concepts.jd
deleted file mode 100644
index c37e64d..0000000
--- a/docs/html/tools/help/monkeyrunner_concepts.jd
+++ /dev/null
@@ -1,319 +0,0 @@
-page.title=monkeyrunner
-parent.title=Tools
-parent.link=index.html
-@jd:body
-
-<div id="qv-wrapper">
-  <div id="qv">
-  <h2>In this document</h2>
-  <ol>
-    <li>
-        <a href="#SampleProgram">A Simple monkeyrunner Program</a>
-    </li>
-    <li>
-        <a href="#APIClasses">The monkeyrunner API</a>
-    </li>
-    <li>
-        <a href="#RunningMonkeyRunner">Running monkeyrunner</a>
-    </li>
-    <li>
-        <a href="#Help">monkeyrunner Built-in Help</a>
-    </li>
-    <li>
-        <a href="#Plugins">Extending monkeyrunner with Plugins</a>
-    </li>
-  </ol>
-  <h2>See Also</h2>
-      <ol>
-        <li>
-            <a href="{@docRoot}tools/testing/testing_android.html">Testing Fundamentals</a>
-        </li>
-      </ol>
-  </div>
-</div>
-<p>
-    The monkeyrunner tool provides an API for writing programs that control an Android device
-    or emulator from outside of Android code. With monkeyrunner, you can write a Python program
-    that installs an Android application or test package, runs it, sends keystrokes to it,
-    takes screenshots of its user interface, and stores screenshots on the workstation. The
-    monkeyrunner tool is primarily designed to test applications and devices at the
-    functional/framework level and for running unit test suites, but you are free to use it for
-    other purposes.
-</p>
-<p>
-    The monkeyrunner tool is not related to the
-    <a href="{@docRoot}tools/help/monkey.html">UI/Application Exerciser Monkey</a>,
-    also known as the <code>monkey</code> tool. The <code>monkey</code> tool runs in an
-    <code><a href="{@docRoot}tools/help/adb.html">adb</a></code> shell directly on the
-    device or emulator and generates pseudo-random streams of user and system events. In comparison,
-    the monkeyrunner tool controls devices and emulators from a workstation by sending specific
-    commands and events from an API.
-</p>
-<p>
-    The monkeyrunner tool provides these unique features for Android testing:
-</p>
-<ul>
-    <li>
-        Multiple device control: The monkeyrunner API can apply one or more
-        test suites across multiple devices or emulators. You can physically attach all the devices
-        or start up all the emulators (or both) at once, connect to each one in turn
-        programmatically, and then run one or more tests. You can also start up an emulator
-        configuration programmatically, run one or more tests, and then shut down the emulator.
-    </li>
-    <li>
-        Functional testing: monkeyrunner can run an automated start-to-finish test of an Android
-        application. You provide input values with keystrokes or touch events, and view the results
-        as screenshots.
-    </li>
-    <li>
-        Regression testing - monkeyrunner can test application stability by running an application
-        and comparing its output screenshots to a set of screenshots that are known to be correct.
-    </li>
-    <li>
-        Extensible automation - Since monkeyrunner is an API toolkit, you can develop an entire
-        system of Python-based modules and programs for controlling Android devices. Besides using
-        the monkeyrunner API itself, you can use the standard Python
-        <code><a href="http://docs.python.org/library/os.html">os</a></code> and
-        <code><a href="http://docs.python.org/library/subprocess.html">subprocess</a></code>
-        modules to call Android tools such as
-        <a href="{@docRoot}tools/help/adb.html">Android Debug Bridge</a>.
-        <p>
-            You can also add your own classes to the monkeyrunner API. This is described
-            in more detail in the section
-            <a href="#Plugins">Extending monkeyrunner with plugins</a>.
-        </p>
-    </li>
-</ul>
-<p>
-    The monkeyrunner tool uses <a href="http://www.jython.org/">Jython</a>, a
-    implementation of Python that uses the Java programming language. Jython allows the
-    monkeyrunner API to interact easily with the Android framework. With Jython you can
-    use Python syntax to access the constants, classes, and methods of the API.
-</p>
-
-<h2 id="SampleProgram">A Simple monkeyrunner Program</h2>
-<p>
-    Here is a simple monkeyrunner program that connects to a device, creating a
-    <code><a href="{@docRoot}tools/help/MonkeyDevice.html">MonkeyDevice</a></code>
-    object. Using the <code>MonkeyDevice</code> object, the program installs an Android application
-    package, runs one of its activities, and sends key events to the activity.
-    The program then takes a screenshot of the result, creating a
-    <code><a href="{@docRoot}tools/help/MonkeyImage.html">MonkeyImage</a></code> object.
-    From this object, the program writes out a <code>.png</code> file containing the screenshot.
-</p>
-<pre>
-# Imports the monkeyrunner modules used by this program
-from com.android.monkeyrunner import MonkeyRunner, MonkeyDevice
-
-# Connects to the current device, returning a MonkeyDevice object
-device = MonkeyRunner.waitForConnection()
-
-# Installs the Android package. Notice that this method returns a boolean, so you can test
-# to see if the installation worked.
-device.installPackage('myproject/bin/MyApplication.apk')
-
-# sets a variable with the package's internal name
-package = 'com.example.android.myapplication'
-
-# sets a variable with the name of an Activity in the package
-activity = 'com.example.android.myapplication.MainActivity'
-
-# sets the name of the component to start
-runComponent = package + '/' + activity
-
-# Runs the component
-device.startActivity(component=runComponent)
-
-# Presses the Menu button
-device.press('KEYCODE_MENU', MonkeyDevice.DOWN_AND_UP)
-
-# Takes a screenshot
-result = device.takeSnapshot()
-
-# Writes the screenshot to a file
-result.writeToFile('myproject/shot1.png','png')
-</pre>
-
-<h2 id="APIClasses">The monkeyrunner API</h2>
-<p>
-    The monkeyrunner API is contained in three modules in the package
-    <code>com.android.monkeyrunner</code>:
-</p>
-<ul>
-    <li>
-        <code><a href="{@docRoot}tools/help/MonkeyRunner.html">MonkeyRunner</a></code>:
-        A class of utility methods for monkeyrunner programs. This class provides a method for
-        connecting monkeyrunner to a device or emulator. It also provides methods for
-        creating UIs for a monkeyrunner program and for displaying the built-in help.
-    </li>
-    <li>
-        <code><a href="{@docRoot}tools/help/MonkeyDevice.html">MonkeyDevice</a></code>:
-        Represents a device or emulator. This class provides methods for installing and
-        uninstalling packages, starting an Activity, and sending keyboard or touch events to an
-        application. You also use this class to run test packages.
-    </li>
-    <li>
-        <code><a href="{@docRoot}tools/help/MonkeyImage.html">MonkeyImage</a></code>:
-        Represents a screen capture image. This class provides methods for capturing screens,
-        converting bitmap images to various formats, comparing two MonkeyImage objects, and
-        writing an image to a file.
-    </li>
-</ul>
-<p>
-    In a Python program, you access each class as a Python module. The monkeyrunner tool
-    does not import these modules automatically. To import a module, use the
-    Python <code>from</code> statement:
-</p>
-<pre>
-from com.android.monkeyrunner import &lt;module&gt;
-</pre>
-<p>
-    where <code>&lt;module&gt;</code> is the class name you want to import. You can import more
-    than one module in the same <code>from</code> statement by separating the module names with
-    commas.
-</p>
-<h2 id="RunningMonkeyRunner">Running monkeyrunner</h2>
-<p>
-    You can either run monkeyrunner programs from a file, or enter monkeyrunner statements in
-    an interactive session. You do both by invoking the <code>monkeyrunner</code> command
-    which is found in the <code>tools/</code> subdirectory of your SDK directory.
-    If you provide a filename as an argument, the <code>monkeyrunner</code> command
-    runs the file's contents as a Python program; otherwise, it starts an interactive session.
-</p>
-<p>
-    The syntax of the <code>monkeyrunner</code> command is
-</p>
-<pre>
-monkeyrunner -plugin &lt;plugin_jar&gt; &lt;program_filename&gt; &lt;program_options&gt;
-</pre>
-<p>
-Table 1 explains the flags and arguments.
-</p>
-<p class="table-caption" id="table1">
-  <strong>Table 1.</strong> <code>monkeyrunner</code> flags and arguments.</p>
-
-<table>
-    <tr>
-        <th>Argument</th>
-        <th>Description</th>
-    </tr>
-    <tr>
-        <td>
-            <nobr>
-                <code>-plugin &lt;plugin_jar&gt;</code>
-            </nobr>
-        </td>
-        <td>
-            (Optional) Specifies a <code>.jar</code> file containing a plugin for monkeyrunner.
-            To learn more about monkeyrunner plugins, see
-            <a href="#Plugins">Extending monkeyrunner with plugins</a>. To specify more than one
-            file, include the argument multiple times.
-        </td>
-    </tr>
-    <tr>
-        <td>
-            <nobr>
-                <code>&lt;program_filename&gt;</code>
-            </nobr>
-        </td>
-        <td>
-            If you provide this argument, the <code>monkeyrunner</code> command runs the contents
-            of the file as a Python program. If the argument is not provided, the command starts an
-            interactive session.
-        </td>
-    </tr>
-    <tr>
-        <td>
-            <code>&lt;program_options&gt;</code>
-        </td>
-        <td>
-            (Optional) Flags and arguments for the program in &lt;program_file&gt;.
-        </td>
-    </tr>
-</table>
-<h2 id="Help">monkeyrunner Built-in Help</h2>
-<p>
-    You can generate an API reference for monkeyrunner by running:
-</p>
-<pre>
-monkeyrunner help.py &lt;format&gt; &lt;outfile&gt;
-</pre>
-<p>
-The arguments are:
-</p>
-    <ul>
-        <li>
-            <code>&lt;format&gt;</code> is either <code>text</code> for plain text output
-            or <code>html</code> for HTML output.
-        </li>
-        <li>
-            <code>&lt;outfile&gt;</code> is a path-qualified name for the output file.
-        </li>
-    </ul>
-<h2 id="Plugins">Extending monkeyrunner with Plugins</h2>
-<p>
-    You can extend the monkeyrunner API with classes you write in the Java programming language
-    and build into one or more <code>.jar</code> files. You can use this feature to extend the
-    monkeyrunner API with your own classes or to extend the existing classes. You can also use this
-    feature to initialize the monkeyrunner environment.
-</p>
-<p>
-    To provide a plugin to monkeyrunner, invoke the <code>monkeyrunner</code> command with the
-    <code>-plugin &lt;plugin_jar&gt;</code> argument described in
-    <a href="#table1">table 1</a>.
-</p>
-<p>
-    In your plugin code, you can import and extend the the main monkeyrunner classes
-    <code>MonkeyDevice</code>, <code>MonkeyImage</code>, and <code>MonkeyRunner</code> in
-    <code>com.android.monkeyrunner</code> (see <a href="#APIClasses">The monkeyrunner API</a>).
-</p>
-<p>
-    Note that plugins do not give you access to the Android SDK. You can't import packages
-    such as <code>com.android.app</code>. This is because monkeyrunner interacts with the
-    device or emulator below the level of the framework APIs.
-</p>
-<h3>The plugin startup class</h3>
-<p>
-    The <code>.jar</code> file for a plugin can specify a class that is instantiated before
-    script processing starts. To specify this class, add the key
-    <code>MonkeyRunnerStartupRunner</code> to the <code>.jar</code> file's
-    manifest. The value should be the name of the class to run at startup. The following
-    snippet shows how you would do this within an <code>ant</code> build script:
-</p>
-<pre>
-&lt;jar jarfile=&quot;myplugin&quot; basedir="&#36;&#123;build.dir&#125;&quot;&gt;
-&lt;manifest&gt;
-&lt;attribute name=&quot;MonkeyRunnerStartupRunner&quot; value=&quot;com.myapp.myplugin&quot;/&gt;
-&lt;/manifest&gt;
-&lt;/jar&gt;
-
-
-</pre>
-<p>
-    To get access to monkeyrunner's runtime environment, the startup class can implement
-    <code>com.google.common.base.Predicate&lt;PythonInterpreter&gt;</code>. For example, this
-    class sets up some variables in the default namespace:
-</p>
-<pre>
-package com.android.example;
-
-import com.google.common.base.Predicate;
-import org.python.util.PythonInterpreter;
-
-public class Main implements Predicate&lt;PythonInterpreter&gt; {
-    &#64;Override
-    public boolean apply(PythonInterpreter anInterpreter) {
-
-        /*
-        * Examples of creating and initializing variables in the monkeyrunner environment's
-        * namespace. During execution, the monkeyrunner program can refer to the variables "newtest"
-        * and "use_emulator"
-        *
-        */
-        anInterpreter.set("newtest", "enabled");
-        anInterpreter.set("use_emulator", 1);
-
-        return true;
-    }
-}
-</pre>
diff --git a/docs/html/tools/help/proguard.jd b/docs/html/tools/help/proguard.jd
deleted file mode 100755
index e26aca0..0000000
--- a/docs/html/tools/help/proguard.jd
+++ /dev/null
@@ -1,192 +0,0 @@
-page.title=ProGuard
-parent.title=Tools
-parent.link=index.html
-page.metaDescription=Use ProGuard to shrink, optimize, and obfuscate your code prior to release.
-@jd:body
-
- <div id="qv-wrapper">
-    <div id="qv">
-      <h2>In this document</h2>
-
-      <ol>
-        <li><a href="#enabling-gradle">Enabling ProGuard (Gradle Builds)</a></li>
-
-        <li><a href="#enabling">Enabling ProGuard (Ant Builds)</a></li>
-
-        <li><a href="#configuring">Configuring ProGuard</a></li>
-
-        <li>
-          <a href="#decoding">Decoding Obfuscated Stack Traces</a>
-
-          <ol>
-            <li><a href="#considerations">Debugging considerations for published
-            applications</a></li>
-          </ol>
-        </li>
-      </ol>
-
-      <h2>See also</h2>
-
-      <ol>
-        <li>
-          <a href="http://stuff.mit.edu/afs/sipb/project/android/sdk/android-sdk-linux/tools/proguard/docs/index.html#manual/introduction.html">ProGuard
-          Manual &raquo;</a>
-        </li>
-        <li>
-          <a href="http://stuff.mit.edu/afs/sipb/project/android/sdk/android-sdk-linux/tools/proguard/docs/index.html#manual/retrace/introduction.html">ProGuard
-          ReTrace Manual &raquo;</a>
-        </li>
-      </ol>
-    </div>
-  </div>
-
-
- 
-  <p>The <a href="http://proguard.sourceforge.net">ProGuard</a> tool shrinks, optimizes, and
-  obfuscates your code by removing unused code and
-  renaming classes, fields, and methods with semantically obscure names. The result is a smaller
-  sized <code>.apk</code> file that is more difficult to reverse engineer. Because ProGuard makes your
-  application harder to reverse engineer, it is important that you use it
-  when your application utilizes features that are sensitive to security like when you are
-  <a href="{@docRoot}google/play/licensing/index.html">Licensing Your Applications</a>.</p>
-
-  <p>ProGuard is integrated into the Android build system, so you do not have to invoke it
-  manually. ProGuard runs only when you build your application in release mode, so you do not
-  have to deal with obfuscated code when you build your application in debug mode.
-  Having ProGuard run is completely optional, but highly recommended.</p>
-
-  <p>This document describes how to enable and configure ProGuard as well as use the
-  <code>retrace</code> tool to decode obfuscated stack traces.</p>
-
-
- <h2 id="enabling-gradle">Enabling ProGuard (Gradle Builds)</h2>
-  <p>When you create a project in Android Studio or with the Gradle build system, the
-  <code>minifyEnabled</code> property in the <code>build.gradle</code> file enables and disables
-  ProGuard for release builds. The <code>minifyEnabled</code> property is part of the
-  <code>buildTypes</code> <code>release</code> block that controls the settings applied to
-  release builds. Set the <code>minifyEnabled</code> property to <code>true</code> to enable
-  ProGuard, as shown in this example. </p>
-
-  <pre class="no-pretty-print">
-  android {
-   ...
- 
-    buildTypes {
-        release {
-            minifyEnabled true
-            proguardFiles getDefaultProguardFile('proguard-android.txt'),
-            'proguard-rules.pro'
-        }
-    }
-  }
-  </pre>
-
-  <p>The <code>getDefaultProguardFile('proguard-android.txt')</code> method obtains the default
-  ProGuard settings from the Android SDK <code>tools/proguard/</code> folder. The
-  <code>proguard-android-optimize.txt</code> file is also available in this Android SDK
-  folder with the same rules but with optimizations enabled. ProGuard optimizations perform
-  analysis at the bytecode level, inside and across methods to help make your app smaller and run
-  faster. Android Studio adds the <code>proguard-rules.pro</code> file at the root of the module,
-  so you can also easily add custom ProGuard rules specific to the current module. </p>
-
-  <p>You can also add ProGuard files to the <code>getDefaultProguardFile</code>
-  directive for all release builds or as part of the <code>productFlavor</code> settings in the
-  <code>build.gradle</code> file to customize the settings applied to build variants. This example
-  adds the <code>proguard-rules-new.pro</code> to the <code>proguardFiles</code>
-  directive and the <code>other-rules.pro</code> file to the <code>flavor2</code> product flavor. </p>
-
-<pre class="no-pretty-print">
-    android {
-   ...
- 
-    buildTypes {
-        release {
-            minifyEnabled true
-            proguardFiles getDefaultProguardFile('proguard-android.txt'),
-            'proguard-rules.pro', 'proguard-rules-new.pro'
-        }
-    }
- 
-   productFlavors {
-        flavor1 {
-        }
-        flavor2 {
-            proguardFile 'other-rules.pro'
-        }
-    }
- }
-  </pre>
-
-
-  <h2 id="configuring">Configuring ProGuard</h2>
-
-  <p>For some situations, the default configurations in the ProGuard configuration file will
-  suffice. However, many situations are hard for ProGuard to analyze correctly and it might remove
-  code that it thinks is not used, but your application actually needs. Some examples include:</p>
-
-  <ul>
-    <li>a class that is referenced only in the <code>AndroidManifest.xml</code> file</li>
-
-    <li>a method called from JNI</li>
-
-    <li>dynamically referenced fields and methods</li>
-  </ul>
-
-  <p>The default ProGuard configuration file tries to cover general cases, but you might
-  encounter exceptions such as <code>ClassNotFoundException</code>, which happens when ProGuard
-  strips away an entire class that your application calls.</p>
-
-  <p>You can fix errors when ProGuard strips away your code by adding a <code>-keep</code> line in
-  the ProGuard configuration file. For example:</p>
-  <pre>
--keep public class &lt;MyClass&gt;
-</pre>
-
-  <p>There are many options and considerations when using the <code>-keep</code> option, so it is
-  highly recommended that you read the
-  <a href="http://stuff.mit.edu/afs/sipb/project/android/sdk/android-sdk-linux/tools/proguard/docs/index.html#manual/introduction.html">ProGuard
-  Manual</a> for more information about customizing your configuration file. The
-  <em>Overview of Keep options</em> and <em>Examples</em> sections are particularly helpful.
-  The <a href=
-  "http://stuff.mit.edu/afs/sipb/project/android/sdk/android-sdk-linux/tools/proguard/docs/index.html#manual/troubleshooting.html">Troubleshooting
-  </a> section of the ProGuard Manual outlines other common problems you might encounter
-  when your code gets stripped away.</p>
-
-  <h2 id="decoding">Decoding Obfuscated Stack Traces</h2>
-
-  <p>When your obfuscated code outputs a stack trace, the method names are obfuscated, which makes
-  debugging hard, if not impossible. Fortunately, whenever ProGuard runs, it outputs a
-  <code>mapping.txt</code> file, which shows you the original class, method, and field names
-  mapped to their obfuscated names.</p>
-
-  <p>The <code>retrace.bat</code> script on Windows or the <code>retrace.sh</code> script on Linux
-  or Mac OS X can convert an obfuscated stack trace to a readable one. It is located
-  in the <code>&lt;sdk_root&gt;/tools/proguard/</code> directory. The syntax for executing the
-  <code>retrace</code> tool is:</p>
-  <pre>retrace.bat|retrace.sh [-verbose] mapping.txt [&lt;stacktrace_file&gt;]</pre>
-  <p>For example:</p>
-
-  <pre>retrace.bat -verbose mapping.txt obfuscated_trace.txt</pre>
-
-  <p>If you do not specify a value for <em>&lt;stacktrace_file&gt;</em>, the <code>retrace</code> tool reads
-  from standard input.</p>
-
-  <h3 id="considerations">Debugging considerations for published applications</h3>
-
-  <p>Save the <code>mapping.txt</code> file for every release that you publish to your users.
-  By retaining a copy of the <code>mapping.txt</code> file for each release build,
-  you ensure that you can debug a problem if a user encounters a bug and submits an obfuscated stack trace.
-  A project's <code>mapping.txt</code> file is overwritten every time you do a release build, so you must be
-  careful about saving the versions that you need. The file is stored in the app <code>build/outs/</code> folder. </p>
-
-  <p>For example, say you publish an application and continue developing new features of
-  the application for a new version. You then do a release build using ProGuard soon after. The
-  build overwrites the previous <code>mapping.txt</code> file. A user submits a bug report
-  containing a stack trace from the application that is currently published. You no longer have a way
-  of debugging the user's stack trace, because the <code>mapping.txt</code> file associated with the version
-  on the user's device is gone. There are other situations where your <code>mapping.txt</code> file can be overwritten, so
-  ensure that you save a copy for every release that you anticipate you have to debug.</p>
-
-  <p>How you save the <code>mapping.txt</code> files is your decision. For example, you can rename
-  the files to include a version or build number, or you can version control them along with your
-  source code.</p>
diff --git a/docs/html/tools/help/project-mgmt.jd b/docs/html/tools/help/project-mgmt.jd
deleted file mode 100644
index 693f0de..0000000
--- a/docs/html/tools/help/project-mgmt.jd
+++ /dev/null
@@ -1,174 +0,0 @@
-page.title=Project Structure Management
-parent.title=Tools
-parent.link=index.html
-page.tags="android studio,project structure,target sdk,minimum sdk"
-@jd:body
-
-<div id="qv-wrapper">
-<div id="qv">
-  <h2>In this document</h2>
-<ol>
-  <li><a href="#dev-svc">Developer Services</a></li>
-  <li><a href="#modules">Modules</a></li>
-</ol>
-
-</div>
-</div>
-
-<p>
-  You can use the <strong>Android Studio File &gt; Project Structure</strong> dialog box to
-  change configuration settings for your Android Studio project. This dialog
-  box is useful if you need to change some of the settings you chose when you
-  created the project.
-</p>
-
-<p>
-  The Project Structure dialog box contains the following sections:
-</p>
-
-<ul>
-  <li>
-    <strong>SDK Location:</strong> Sets the location of the JDK, Android SDK,
-    and Android NDK that the project uses.
-  </li>
-
-  <li>
-    <strong>Project:</strong> Sets version information for <a
-    href="{@docRoot}tools/building/plugin-for-gradle.html">Gradle</a> and for
-    the <a href="{@docRoot}tools/building/plugin-for-gradle.html">Android plugin
-    for Gradle</a>.
-  </li>
-
-  <li>
-    <strong>Developer Services:</strong> Contains settings for Android Studio
-    add-in components from Google or third parties.
-  </li>
-
-  <li>
-    <strong>Modules:</strong> Used to set or change various module-specific
-    build settings, including the target and minimum SDK, the app signature,
-    and library dependencies. Most importantly, this is where you change
-    the settings for your project's <em>app</em> module.
-  </li>
-</ul>
-
-<p>
-  The following two sections provide information on the <a href=
-  "#dev-svc">Developer Services</a> and <a href="#modules">Modules</a>
-  sections.
-</p>
-
-<h2 id="dev-svc">
-  Developer Services
-</h2>
-
-<p>
-  The <em>Developer Services</em> section of the <em>Project Structure</em>
-  dialog box contains configuration pages
-  for several services that you can be use with your app. This section
-  contains the following pages:
-</p>
-
-<ul>
-  <li>
-    <strong>AdMob:</strong> Allows you to turn on Google's <a href=
-    "https://developers.google.com/admob/" class="external-link">AdMob</a>
-    component, which helps you understand your users and show them tailored
-    advertisements.
-  </li>
-
-  <li>
-    <strong>Analytics:</strong> Allows you to turn on <a href=
-    "https://developers.google.com/analytics/" class="external-link">Google
-    Analytics</a>, which helps you measure user interactions with your app
-    across various devices and environments.
-  </li>
-
-  <li>
-    <strong>Authentication:</strong> Allows users to use <a href=
-    "https://developers.google.com/identity/sign-in/android/" class=
-    "external-link">Google Sign-In</a> to sign in to your app with their Google
-    accounts.
-  </li>
-
-  <li>
-    <strong>Cloud:</strong> Allows you to turn on <a href=
-    "https://www.firebase.com/" class="external-link">Firebase</a> cloud-based
-    services for your app.
-  </li>
-
-  <li>
-    <strong>Notifications:</strong> Allows you to use <a href=
-    "https://developers.google.com/cloud-messaging/" class=
-    "external-link">Google Cloud Messaging</a> to communicate between your app
-    and your server.
-  </li>
-</ul>
-
-<p>
-  Turning on any of these services may cause Android Studio to add necessary
-  dependencies and permissions to your app. Each configuration page lists these
-  and other actions that Android Studio takes if you enable the associated service.
-</p>
-
-<h2 id="modules">
-  Modules
-</h2>
-
-<p>
-  The <em>Modules</em> settings section lets you change configuration
-  options for each of your project's modules. This section contains one page
-  for each module in your app. In many cases, the project has just a single
-  module, named <em>app</em>. However, if your project targets multiple form
-  factors, it might have several modules. For example, if your project contains
-  both a tablet app and a wearable app, it might have two modules, named
-  <em>mobile</em> and <em>wear</em>. For more information about project
-  modules, see <a href=
-  "{@docRoot}tools/projects/index.html#ApplicationModules">Android Application
-  Modules</a>.
-</p>
-
-<p>
-  Each module's settings page is divided into the following panes:
-</p>
-
-<ul>
-  <li>
-    <strong>Properties:</strong> Specifies the versions of the SDK and build
-    tools to use to compile the module.
-  </li>
-
-  <li>
-    <strong>Signing:</strong> Specifies the certificate to use to
-    <a href="{@docRoot}tools/publishing/app-signing.html#sign-auto">sign your
-    APK</a>.
-  </li>
-
-  <li>
-    <strong>Flavors:</strong> Lets you create multiple build <em>flavors</em>, where
-    each flavor specifies a set of configuration settings, such as the
-    module's minimum and target SDK version, and the
-    <a href="{@docRoot}tools/publishing/versioning.html">version code and
-    version name</a>. For example, you might define one flavor that has a
-    minimum SDK of 15 and a target SDK of 21, and another flavor that has a
-    minimum SDK of 19 and a target SDK of 23.
-  </li>
-
-  <li>
-    <strong>Build Types:</strong> Lets you create and modify build
-    configurations, as described in <a href=
-    "{@docRoot}tools/building/configuring-gradle.html">Configuring Gradle
-    Builds</a>. By default, every module has <em>debug</em> and
-    <em>release</em> build types, but you can define more as needed.
-  </li>
-
-  <li>
-    <strong>Dependencies:</strong> Lists the library, file, and module
-    dependencies for this module. You can add, modify, and delete dependencies
-    from this pane. For more information about module dependencies, see
-    <a href="{@docRoot}tools/building/configuring-gradle.html#declareDeps">Declare
-    dependencies</a> in <a href=
-    "{@docRoot}tools/building/configuring-gradle.html">Configuring Gradle
-    Builds</a>.
-  </li>
-</ul>
diff --git a/docs/html/tools/help/sdk-manager.jd b/docs/html/tools/help/sdk-manager.jd
deleted file mode 100755
index aaa1930..0000000
--- a/docs/html/tools/help/sdk-manager.jd
+++ /dev/null
@@ -1,166 +0,0 @@
-page.title=SDK Manager
-@jd:body
-
-
-<p>The Android SDK Manager separates the SDK tools, platforms, and other components into packages
-for easy access and management. You can also customize which sites the SDK Manager checks for new
-or updated SDK packages and add-on tools. For example, you can configure the SDK Manager
-to automatically check for updates and notify you when an installed SDK Tools package is updated.
-When you receive such a notification, you can then quickly decide whether to download the changes.  </p>
-
-<p>By default, Android Studio does not check for Android SDK updates. To enable automatic Android
-SDK checking: </p>
-<ol>
-  <li>Choose <strong>File</strong> &gt; <strong>Settings</strong>
-    &gt; <strong>Appearance & Behavior</strong> &gt; <strong>System Settings</strong>
-    &gt; <strong>Updates</strong>. </li>
-  <li>Check the <strong>Automatically check updates for Android SDK</strong> checkbox and select an
-    <ahref="{@docRoot}tools/studio/studio-config.html#update-channel">update channel</a>.</li>
-
-
-  <li>Click <strong>OK</strong> or <strong>Apply</strong> to enable the update checking. </li>
-</ol>
-
-<p>You can launch the SDK Manager in one of the following ways:</p>
-<ul>
-  <li>From the Android Studio <strong>File</strong> menu:  <strong>File</strong> &gt;
-    <strong>Settings</strong> &gt; <strong>Appearance & Behavior</strong> &gt;
-    <strong>System Settings</strong> &gt; <strong>Android SDK</strong>.</li>
-  <li>From the Android Studio <strong>Tools</strong> menu: <strong>Tools</strong> &gt;
-    <strong>Android</strong> &gt; <strong>SDK Manager</strong>.</li>
-  <li>From the SDK Manager icon
-    (<img src="{@docRoot}images/tools/sdk-manager-studio.png" style="vertical-align:sub;margin:0;height:17px" alt="" />)
-    in the menu bar.  </li>
-</ul>
-
-<p class="note"><strong>Tip:</strong> The standalone SDK Manager is still available from the
-command line, but we recommend it only for use with standalone SDK installations.</p>
-
-<p>By default, the SDK Manager installs the latest packages and tools. Click the checkbox next to
-each additional SDK platform and tool that you want to install. Clear the
-checkbox to uninstall a SDK platform or tool. Click <strong>Apply</strong> or <strong>OK</strong>
-to update the packages and tools. </p>
-
-<p class="note"><strong>Tip:</strong> When an update is available for an installed
-package, a hyphen (-) appears in the checkbox next to the package. A download icon
-(<img src="{@docRoot}images/tools/studio-sdk-dwnld-icon.png" style="vertical-align:sub;margin:0;height:17px" alt="" />)
-also appears next
-to the checkbox to indicate the pending update. An update icon
-(<img src="{@docRoot}images/tools/studio-sdk-removal-icon.png" style="vertical-align:sub;margin:0;height:17px" alt="" />) appears next to the checkbox to
-indicate pending removals.</p>
-
-<p>Click the <em>SDK Update Sites</em> tab to manage which SDK sites Android Studio checks for
-tool and add-on updates. </p>
-
-<img src="{@docRoot}images/tools/studio-sdk-manager-packages.png" alt="" />
-<p class="img-caption"><strong>Figure 1.</strong> The Android SDK Manager shows the
-SDK platforms and packages that are available and installed along with the SDK update sites.</p>
-
-<p>There are several different packages available for the Android SDK. The table below describes
-most of the available packages and where they're located in your SDK directory
-once you download them.</p>
-
-
-
-<h2 id="Recommended">Recommended Packages</h2>
-
-<p>Here's an outline of the packages required and those we recommend you use:
-</p>
-
-<dl>
-  <dt>SDK Tools</dt>
-  <dd><strong>Required.</strong> Your new SDK installation installs the latest version. Be sure
-    to respond to the Android Studio update prompts to keep your SDK Tools up-to-date.</dd>
-  <dt>SDK Platform-tools</dt>
-  <dd><strong>Required.</strong> Your new SDK installation installs the latest stable version.
-    Be sure to respond to the Android Studio update prompts to keep your SDK Platform-tools
-    up-to-date.</dd>
-  <dt>SDK Platform</dt>
-  <dd><strong>Required.</strong><em> At least one platform</em> is required in your
-environment so you're able to compile your application. In order to provide the best user experience
-on the latest devices, we recommend that you use the latest platform version as your build target.
-You'll still be able to run your app on older versions, but you must build against the latest
-version in order to use new features when running on devices with the latest version of Android.
-  <p>The SDK Manager downloads the latest Android version. It also downloads the earliest version
-  of Android (Android 2.2 (API level 8)) that we recommend that your app support. </p></dd>
-  <dt>System Image</dt>
-  <dd>Recommended. Although you might have one or more Android-powered devices on which to test
- your app, it's unlikely you have a device for every version of Android your app supports. It's
-a good practice to download system images for all versions of Android your app supports and test
-your app running on them with the
-<a href="{@docRoot}tools/devices/emulator.html">Android emulator</a>. Each SDK platform package
-contains the supported system images. Click <strong>Show Package Details</strong> to display the available
-system images for each available platform. You can also download system images when creating
-Android Virtual Devices (AVDs) in the
-<a href="{@docRoot}tools/help/avd-manager.html">AVD Manager</a>. </dd>
-
-  <dt>Android Support Library</dt>
-  <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 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>
-
-
-<p class="note"><strong>Tip:</strong> For easy access to the SDK tools from a command line, add the
-location of the SDK's <code>tools/</code> and
-<code>platform-tools</code> to your <code>PATH</code> environment variable.</p>
-
-
-<p>The above list is not comprehensive and you can <a
-href="#AddingSites">add new sites</a> to download additional packages from third parties.</p>
-
-<p>In some cases, an SDK package may require a specific minimum revision of
-another package or SDK tool.
-The development tools will notify you with warnings if there is dependency that you need to
-address. The Android SDK Manager also enforces dependencies by requiring any
-packages that are needed by those you have selected.</p>
-
-
-
-<h2 id="AddingSites">Adding New Sites</h2>
-
-<p>The <em>SDK Update Sites</em> tab displays the sites that Android Studio checks for Android SDK
-and third-party updates. You can add other sites that host their own Android SDK add-ons, then
-download the SDK add-ons from those sites.</p>
-
-<p>For example, a mobile carrier or device manufacturer might offer additional
-API libraries that are supported by their own Android-powered devices. In order
-to develop using their libraries, you must install their Android SDK add-on, if it's not already
-available as a <em>third-party add-on</em>. </p>
-
-<p>If a carrier or device manufacturer has hosted an SDK add-on repository file
-on their website, follow these steps to add their site to the Android SDK Manager:</p>
-
-<ol>
-  <li>Click the <strong>SDK Update Sites</strong> tab.</li>
-  <li>Click the <strong>Add</strong> icon in the tools area and enter the name and URL of the
-    <code>add-on</code> site.</li>
-  <li>Click <strong>OK</strong>.</li>
-  <li>Make sure the checkbox is checked in the <em>Enabled</em> column.</li>
-  <li>Click <strong>OK</strong> or <strong>Apply</strong>.</li>
-</ol>
-<p>Any SDK packages available from the site appear in the <em>SDK Platforms</em> or
-<em>SDK Tools</em> tabs.</p>
-
-
-
diff --git a/docs/html/tools/help/shell.jd b/docs/html/tools/help/shell.jd
deleted file mode 100644
index fabcf4b..0000000
--- a/docs/html/tools/help/shell.jd
+++ /dev/null
@@ -1,902 +0,0 @@
-page.title=ADB Shell Commands
-parent.title=Tools
-parent.link=index.html
-page.tags=shell,adb,am,pm,screenrecord,screencap
-@jd:body
-
-<div id="qv-wrapper">
-<div id="qv">
-  <h2>In this document</h2>
-<ol>
-  <li><a href="#shellcommands">Issuing Shell Commands</a>
-  <li><a href="#am">Using activity manager (am)</a></li>
-  <li><a href="#pm">Using package manager (pm)</a></li>
-  <li><a href="#screencap">Taking a device screenshot</a></li>
-  <li><a href="#screenrecord">Recording a device screen</a></li>
-  <li><a href="#othershellcommands">Other shell commands</a></li>
-  </li>
-</ol>
-
-</div>
-</div>
-
-<p>The <a href="{@docRoot}tools/help/adb.html">Android Debug Bridge</a> (adb) provides a Unix shell
-that you can use to run a variety of commands on an emulator or connected device. The command
-binaries are stored in the file system of the emulator or device, at <code>/system/bin/...</code>
-</p>
-
-<h2 id="shellcommands">Issuing Shell Commands</h2>
-
-<p>You can use the <code>shell</code> command to issue commands, with or without entering
-the adb remote shell on the emulator/device. To issue a single command without entering a
-remote shell, use the <code>shell</code> command like this: </p>
-
-  <pre class="no-pretty-print">adb [-d|-e|-s &lt;serialNumber&gt;] shell &lt;shell_command&gt;</pre>
-
-<p>Or enter a remote shell on an emulator/device like this:</p>
-
-  <pre class="no-pretty-print">adb [-d|-e|-s &lt;serialNumber&gt;] shell</pre>
-
-<p>When you are ready to exit the remote shell, press CTRL+D or type
-<code>exit</code>. </p>
-
-
-
-
-
-<h2 id="am">Using activity manager (am)</h2>
-
-<p>Within an adb shell, you can issue commands with the activity manager ({@code am}) tool to
-perform various system actions, such as start an activity, force-stop a process,
-broadcast an intent, modify the device screen properties, and more. While in a shell,
-the syntax is:</p>
-<pre class="no-pretty-print">
-am &lt;command>
-</pre>
-
-<p>You can also issue an activity manager command directly from adb
-without entering a remote shell. For example:</p>
-<pre class="no-pretty-print">
-adb shell am start -a android.intent.action.VIEW
-</pre>
-
-
-<p class="table-caption"><strong>Table 2.</strong> Available activity manager commands</p>
-<table>
-<tr>
-  <th>Command</th>
-  <th>Description</th>
-</tr>
-
-<tr>
-<td><code>
-start [options] &lt;INTENT>
-</code></td>
-<td>Start an {@link android.app.Activity} specified by {@code <INTENT>}. <p>See the
-<a href="#IntentSpec">Specification for &lt;INTENT> arguments</a>.
-<p>Options are:
-<ul>
-    <li>{@code -D}: Enable debugging.
-    <li>{@code -W}: Wait for launch to complete.
-    <li>{@code --start-profiler <FILE>}: Start profiler and send results to {@code <FILE>}.
-    <li>{@code -P <FILE>}: Like <code>--start-profiler</code>,
-        but profiling stops when the app goes idle.
-    <li>{@code -R}: Repeat the activity launch {@code <COUNT>} times.  Prior to each repeat,
-        the top activity will be finished.
-    <li>{@code -S}: Force stop the target app before starting the activity.
-    <li>{@code --opengl-trace}: Enable tracing of OpenGL functions.
-    <li>{@code --user <USER_ID> | current}: Specify which user to run as; if not
-        specified, then run as the current user.
-</ul>
-</td>
-</tr>
-
-<tr>
-<td><code>
-startservice [options] &lt;INTENT>
-</code></td>
-<td>Start the {@link android.app.Service} specified by {@code <INTENT>}. <p>See the
-<a href="#IntentSpec">Specification for &lt;INTENT> arguments</a>.
-<p>Options are:
-<ul>
-    <li>{@code --user <USER_ID> | current}: Specify which user to run as; if not
-        specified, then run as the current user.
-</ul>
-</td>
-</tr>
-
-<tr>
-<td><code>
-force-stop &lt;PACKAGE>
-</code></td>
-<td>Force stop everything associated with {@code <PACKAGE>} (the app's package name).
-</td>
-</tr>
-
-<tr>
-<td><code>
-kill  [options] &lt;PACKAGE>
-</code></td>
-<td> Kill all processes associated with {@code <PACKAGE>}
-  (the app's package name).  This command kills only
-  processes that are safe to kill and that will not impact the user
-  experience.
-  <p>Options are:
-  <ul>
-      <li>{@code --user <USER_ID> | all | current}: Specify user whose processes to kill;
-        all users if not specified.
-  </ul>
-</td>
-</tr>
-
-<tr>
-<td><code>
-kill-all
-</code></td>
-<td>Kill all background processes.
-</td>
-</tr>
-
-<tr>
-<td><code>
-broadcast [options] &lt;INTENT>
-</code></td>
-<td>Issue a broadcast intent. <p>See the
-<a href="#IntentSpec">Specification for &lt;INTENT> arguments</a>.
-<p>Options are:
-<ul>
-    <li>{@code [--user <USER_ID> | all | current]}: Specify which user to send to; if not
-        specified then send to all users.
-</ul>
-</td>
-</tr>
-
-<tr>
-<td><code>
-instrument [options] &lt;COMPONENT>
-</code></td>
-<td>Start monitoring with an {@link android.app.Instrumentation} instance.
-  Typically the target {@code <COMPONENT>}
-  is the form {@code <TEST_PACKAGE>/<RUNNER_CLASS>}.  <p>Options are:
-<ul>
-    <li>{@code -r}: Print raw results (otherwise decode
-        {@code <REPORT_KEY_STREAMRESULT>}).  Use with
-        {@code [-e perf true]} to generate raw output for performance measurements.
-
-    <li>{@code -e <NAME> <VALUE>}: Set argument {@code <NAME>} to {@code <VALUE>}.
-        For test runners a common form is {@code
-        -e <testrunner_flag> <value>[,<value>...]}.
-
-    <li>{@code -p <FILE>}: Write profiling data to {@code <FILE>}.
-
-    <li>{@code -w}: Wait for instrumentation to finish before returning.  Required for
-        test runners.
-
-    <li>{@code --no-window-animation}: Turn off window animations while running.
-    <li>{@code --user <USER_ID> | current}: Specify which user instrumentation runs in;
-        current user if not specified.
-</ul>
-
-</td>
-</tr>
-
-<tr>
-<td><code>
-profile start &lt;PROCESS> &lt;FILE>
-</code></td>
-<td>Start profiler on {@code <PROCESS>}, write results to {@code <FILE>}.
-</td>
-</tr>
-
-<tr>
-<td><code>
-profile stop &lt;PROCESS>
-</code></td>
-<td>Stop profiler on {@code <PROCESS>}.
-</td>
-</tr>
-
-<tr>
-<td style="white-space:nowrap"><code>
-dumpheap [options] &lt;PROCESS> &lt;FILE>
-</code></td>
-<td>Dump the heap of {@code <PROCESS>}, write to {@code <FILE>}. <p>Options are:
-<ul>
-    <li>{@code --user [<USER_ID>|current]}: When supplying a process name,
-        specify user of process to dump; uses current user if not specified.
-    <li>{@code -n}: Dump native heap instead of managed heap.
-</ul>
-</td>
-</tr>
-
-<tr>
-<td><code>
-set-debug-app [options] &lt;PACKAGE>
-</code></td>
-<td>Set application {@code <PACKAGE>} to debug.  <p>Options are:
-<ul>
-    <li>{@code -w}: Wait for debugger when application starts.
-    <li>{@code --persistent}: Retain this value.
-</ul>
-</td>
-</tr>
-
-<tr>
-<td><code>
-clear-debug-app
-</code></td>
-<td>Clear the package previous set for debugging with {@code set-debug-app}.
-</td>
-</tr>
-
-<tr>
-<td><code>
-monitor [options]
-</code></td>
-<td>Start monitoring for crashes or ANRs.  <p>Options are:
-<ul>
-    <li>{@code --gdb}: Start gdbserv on the given port at crash/ANR.
-</ul>
-</td>
-</tr>
-
-<tr>
-<td><code>
-screen-compat [on|off] &lt;PACKAGE>
-</code></td>
-<td>Control <a href="{@docRoot}guide/practices/screen-compat-mode.html">screen
-compatibility</a> mode of {@code <PACKAGE>}.</p>
-</td>
-</tr>
-
-<tr>
-<td><code>
-display-size [reset|&lt;WxH>]
-</code></td>
-<td>Override emulator/device display size.
-This command is helpful for testing your app across different screen sizes by mimicking a small
-screen resolution using a device with a large screen, and vice versa.
-<p>Example:<br><code>am display-size 1280x800</code>
-</td>
-</tr>
-
-<tr>
-<td><code>
-display-density &lt;dpi>
-</code></td>
-<td>Override emulator/device display density.
-This command is helpful for testing your app across different screen densities on high-density
-screen environment using a low density screen, and vice versa.
-<p>Example:<br><code>am display-density 480</code>
-</td>
-</tr>
-
-<tr>
-<td><code>
-to-uri &lt;INTENT>
-</code></td>
-<td>Print the given intent specification as a URI. <p>See the
-<a href="#IntentSpec">Specification for &lt;INTENT> arguments</a>.
-</td>
-</tr>
-
-<tr>
-<td><code>
-to-intent-uri &lt;INTENT>
-</code></td>
-<td>Print the given intent specification as an {@code intent:} URI. <p>See the
-<a href="#IntentSpec">Specification for &lt;INTENT> arguments</a>.
-</td>
-</tr>
-</table>
-
-
-
-
-
-<h3 id="IntentSpec">
-  <a href="" class="expandable" onclick="toggleExpandable(this,'.intents');
-return false">Specification for &lt;INTENT> arguments</a></h3>
-
-<div class="intents" style="display:none">
-
-<p>For activity manager commands that take a {@code <INTENT>} argument, you can
-specify the intent with the following options:</p>
-
-<dl>
-  <dt>{@code -a <ACTION>}</dt>
-      <dd>Specify the intent action, such as "android.intent.action.VIEW".
-      You can declare this only once.
-
-  <dt>{@code -d <DATA_URI>}</dt>
-      <dd>Specify the intent data URI, such as "content://contacts/people/1".
-      You can declare this only once.
-
-  <dt>{@code -t <MIME_TYPE>}</dt>
-      <dd>Specify the intent MIME type, such as "image/png".
-      You can declare this only once.
-
-  <dt>{@code -c <CATEGORY>}</dt>
-      <dd>Specify an intent category, such as "android.intent.category.APP_CONTACTS".
-
-  <dt>{@code -n <COMPONENT>}</dt>
-      <dd>Specify the component name with package name prefix to create an explicit intent, such
-      as "com.example.app/.ExampleActivity".
-
-  <dt>{@code -f <FLAGS>}</dt>
-      <dd>Add flags to the intent, as supported by {@link
-        android.content.Intent#setFlags setFlags()}.
-
-  <dt>{@code --esn <EXTRA_KEY>}</dt>
-      <dd>Add a null extra. This option is not supported for URI intents.
-
-  <dt>{@code -e|--es <EXTRA_KEY> <EXTRA_STRING_VALUE>}</dt>
-      <dd>Add string data as a key-value pair.
-
-  <dt>{@code --ez <EXTRA_KEY> <EXTRA_BOOLEAN_VALUE>}</dt>
-      <dd>Add boolean data as a key-value pair.
-
-  <dt>{@code --ei <EXTRA_KEY> <EXTRA_INT_VALUE>}</dt>
-      <dd>Add integer data as a key-value pair.
-
-  <dt>{@code --el <EXTRA_KEY> <EXTRA_LONG_VALUE>}</dt>
-      <dd>Add long data as a key-value pair.
-
-  <dt>{@code --ef <EXTRA_KEY> <EXTRA_FLOAT_VALUE>}</dt>
-      <dd>Add float data as a key-value pair.
-
-  <dt>{@code --eu <EXTRA_KEY> <EXTRA_URI_VALUE>}</dt>
-      <dd>Add URI data as a key-value pair.
-
-  <dt>{@code --ecn <EXTRA_KEY> <EXTRA_COMPONENT_NAME_VALUE>}</dt>
-      <dd>Add a component name, which is converted and passed as
-      a {@link android.content.ComponentName} object.
-
-  <dt>{@code --eia <EXTRA_KEY> <EXTRA_INT_VALUE>[,<EXTRA_INT_VALUE...]}</dt>
-      <dd>Add an array of integers.
-
-  <dt>{@code --ela <EXTRA_KEY> <EXTRA_LONG_VALUE>[,<EXTRA_LONG_VALUE...]}</dt>
-      <dd>Add an array of longs.
-
-  <dt>{@code --efa <EXTRA_KEY> <EXTRA_FLOAT_VALUE>[,<EXTRA_FLOAT_VALUE...]}</dt>
-      <dd>Add an array of floats.
-
-  <dt>{@code --grant-read-uri-permission}</dt>
-      <dd>Include the flag {@link android.content.Intent#FLAG_GRANT_READ_URI_PERMISSION}.
-
-  <dt>{@code --grant-write-uri-permission}</dt>
-      <dd>Include the flag {@link android.content.Intent#FLAG_GRANT_WRITE_URI_PERMISSION}.
-
-  <dt>{@code --debug-log-resolution}</dt>
-      <dd>Include the flag {@link android.content.Intent#FLAG_DEBUG_LOG_RESOLUTION}.
-
-  <dt>{@code --exclude-stopped-packages}</dt>
-      <dd>Include the flag {@link android.content.Intent#FLAG_EXCLUDE_STOPPED_PACKAGES}.
-
-  <dt>{@code --include-stopped-packages}</dt>
-      <dd>Include the flag {@link android.content.Intent#FLAG_INCLUDE_STOPPED_PACKAGES}.
-
-  <dt>{@code --activity-brought-to-front}</dt>
-      <dd>Include the flag {@link android.content.Intent#FLAG_ACTIVITY_BROUGHT_TO_FRONT}.
-
-  <dt>{@code --activity-clear-top}</dt>
-      <dd>Include the flag {@link android.content.Intent#FLAG_ACTIVITY_CLEAR_TOP}.
-
-  <dt>{@code --activity-clear-when-task-reset}</dt>
-      <dd>Include the flag {@link android.content.Intent#FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET}.
-
-  <dt>{@code --activity-exclude-from-recents}</dt>
-      <dd>Include the flag {@link android.content.Intent#FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS}.
-
-  <dt>{@code --activity-launched-from-history}</dt>
-      <dd>Include the flag {@link android.content.Intent#FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY}.
-
-  <dt>{@code --activity-multiple-task}</dt>
-      <dd>Include the flag {@link android.content.Intent#FLAG_ACTIVITY_MULTIPLE_TASK}.
-
-  <dt>{@code --activity-no-animation}</dt>
-      <dd>Include the flag {@link android.content.Intent#FLAG_ACTIVITY_NO_ANIMATION}.
-
-  <dt>{@code --activity-no-history}</dt>
-      <dd>Include the flag {@link android.content.Intent#FLAG_ACTIVITY_NO_HISTORY}.
-
-  <dt>{@code --activity-no-user-action}</dt>
-      <dd>Include the flag {@link android.content.Intent#FLAG_ACTIVITY_NO_USER_ACTION}.
-
-  <dt>{@code --activity-previous-is-top}</dt>
-      <dd>Include the flag {@link android.content.Intent#FLAG_ACTIVITY_PREVIOUS_IS_TOP}.
-
-  <dt>{@code --activity-reorder-to-front}</dt>
-      <dd>Include the flag {@link android.content.Intent#FLAG_ACTIVITY_REORDER_TO_FRONT}.
-
-  <dt>{@code --activity-reset-task-if-needed}</dt>
-      <dd>Include the flag {@link android.content.Intent#FLAG_ACTIVITY_RESET_TASK_IF_NEEDED}.
-
-  <dt>{@code --activity-single-top}</dt>
-      <dd>Include the flag {@link android.content.Intent#FLAG_ACTIVITY_SINGLE_TOP}.
-
-  <dt>{@code --activity-clear-task}</dt>
-      <dd>Include the flag {@link android.content.Intent#FLAG_ACTIVITY_CLEAR_TASK}.
-
-  <dt>{@code --activity-task-on-home}</dt>
-      <dd>Include the flag {@link android.content.Intent#FLAG_ACTIVITY_TASK_ON_HOME}.
-
-  <dt>{@code --receiver-registered-only}</dt>
-      <dd>Include the flag {@link android.content.Intent#FLAG_RECEIVER_REGISTERED_ONLY}.
-
-  <dt>{@code --receiver-replace-pending}</dt>
-      <dd>Include the flag {@link android.content.Intent#FLAG_RECEIVER_REPLACE_PENDING}.
-
-  <dt>{@code --selector}</dt>
-      <dd>Requires the use of {@code -d} and {@code -t} options to set the intent data and type.
-
-  <dt>{@code <URI> <COMPONENT> <PACKAGE>}</dt>
-      <dd>You can directly specify a URI, package name, and component name when not qualified
-      by one of the above options. When an argument is unqualified, the tool assumes the argument
-      is a URI if it contains a ":" (colon); it assumes the argument is a component name if it
-      contains a "/" (forward-slash); otherwise it assumes the argument is a package name.
-
-</dl>
-</div><!-- end 'intents' -->
-<script>
-  $(window).hashchange( function(){
-    if ((location.hash == "#IntentSpec") && !($("#IntentSpec a").hasClass("expanded"))) {
-      $("#IntentSpec a").click();
-    }
-  });
-</script>
-
-
-
-<h2 id="pm">Using package manager (pm)</h2>
-
-<p>Within an adb shell, you can issue commands with the package manager ({@code pm}) tool to
-perform actions and queries on application packages installed on the device. While in a shell,
-the syntax is:</p>
-<pre class="no-pretty-print">
-pm &lt;command>
-</pre>
-
-<p>You can also issue a package manager command directly from adb
-without entering a remote shell. For example:</p>
-<pre class="no-pretty-print">
-adb shell pm uninstall com.example.MyApp
-</pre>
-
-<p class="table-caption"><strong>Table 3.</strong> Available package manager commands.</p>
-<table>
-<tr>
-  <th>Command</th>
-  <th>Description</th>
-</tr>
-
-<tr>
-<td><code>
-list packages [options] &lt;FILTER>
-</code></td>
-<td>Prints all packages, optionally only
-  those whose package name contains the text in {@code <FILTER>}.  <p>Options:
-<ul>
-    <li>{@code -f}: See their associated file.
-    <li>{@code -d}: Filter to only show disabled packages.
-    <li>{@code -e}: Filter to only show enabled packages.
-    <li>{@code -s}: Filter to only show system packages.
-    <li>{@code -3}: Filter to only show third party packages.
-    <li>{@code -i}: See the installer for the packages.
-    <li>{@code -u}: Also include uninstalled packages.
-    <li>{@code --user <USER_ID>}: The user space to query.
-</ul>
-</td>
-</tr>
-
-<tr>
-<td><code>
-list permission-groups
-</code></td>
-<td>Prints all known permission groups.
-</td>
-</tr>
-
-<tr>
-<td><code>
-list permissions [options] &lt;GROUP>
-</code></td>
-<td>Prints all known permissions, optionally only
-  those in {@code <GROUP>}.  <p>Options:
-<ul>
-    <li>{@code -g}: Organize by group.
-    <li>{@code -f}: Print all information.
-    <li>{@code -s}: Short summary.
-    <li>{@code -d}: Only list dangerous permissions.
-    <li>{@code -u}: List only the permissions users will see.
-</ul>
-</td>
-</tr>
-
-<tr>
-<td><code>
-list instrumentation
-</code></td>
-<td>List all test packages.  <p>Options:
-  <ul>
-    <li>{@code -f}: List the APK file for the test package.
-    <li>{@code <TARGET_PACKAGE>}: List test packages for only this app.
-  </ul>
-</td>
-</tr>
-
-<tr>
-<td><code>
-list features
-</code></td>
-<td>Prints all features of the system.
-</td>
-</tr>
-
-<tr>
-<td><code>
-list libraries
-</code></td>
-<td>Prints all the libraries supported by the current device.
-</td>
-</tr>
-
-<tr>
-<td><code>
-list users
-</code></td>
-<td>Prints all users on the system.
-</td>
-</tr>
-
-<tr>
-<td><code>
-path &lt;PACKAGE>
-</code></td>
-<td>Print the path to the APK of the given {@code <PACKAGE>}.
-</td>
-</tr>
-
-<tr>
-<td><code>
-install [options]  &lt;PATH>
-</code></td>
-<td>Installs a package (specified by {@code <PATH>}) to the system.  <p>Options:
-  <ul>
-    <li>{@code -l}: Install the package with forward lock.
-    <li>{@code -r}: Reinstall an exisiting app, keeping its data.
-    <li>{@code -t}: Allow test APKs to be installed.
-    <li>{@code -i <INSTALLER_PACKAGE_NAME>}: Specify the installer package name.
-    <li>{@code -s}: Install package on the shared mass storage (such as sdcard).
-    <li>{@code -f}: Install package on the internal system memory.
-    <li>{@code -d}: Allow version code downgrade.
-    <li>{@code -g}: Grant all permissions listed in the app manifest.
-  </ul>
-</td>
-</tr>
-
-<tr>
-<td><code>
-uninstall [options] &lt;PACKAGE>
-</code></td>
-<td>Removes a package from the system. <p>Options:
-  <ul>
-    <li>{@code -k}: Keep the data and cache directories around after package removal.
-  </ul>
-</td>
-</tr>
-
-<tr>
-<td><code>
-clear &lt;PACKAGE>
-</code></td>
-<td>Deletes all data associated with a package.
-</td>
-</tr>
-
-<tr>
-<td><code>
-enable &lt;PACKAGE_OR_COMPONENT>
-</code></td>
-<td>Enable the given package or component (written as "package/class").
-</td>
-</tr>
-
-<tr>
-<td><code>
-disable &lt;PACKAGE_OR_COMPONENT>
-</code></td>
-<td>Disable the given package or component (written as "package/class").
-</td>
-</tr>
-
-<tr>
-<td style="white-space:nowrap"><code>
-disable-user [options] &lt;PACKAGE_OR_COMPONENT>
-</code></td>
-<td><p>Options:
-  <ul>
-    <li>{@code --user <USER_ID>}: The user to disable.
-  </ul>
-</td>
-</tr>
-
-<tr>
-<td><code>
-grant &lt;PACKAGE_NAME&gt; &lt;PERMISSION&gt;
-</code></td>
-<td>Grant a permission to an app. On devices running Android 6.0 (API level 23)
-and higher, may be any permission declared in the app manifest. On devices
-running Android 5.1 (API level 22) and lower, must be an optional permission defined by the
-app.
-</td>
-</tr>
-
-<tr>
-<td><code>
-revoke &lt;PACKAGE_NAME&gt; &lt;PERMISSION&gt;
-</code></td>
-<td>Revoke a permission from an app. On devices running Android 6.0 (API level
-23) and higher, may be any permission declared in the app manifest. On devices
-running Android 5.1 (API level 22) and lower, must be an optional permission defined by the
-app.
-</td>
-</tr>
-
-<tr>
-<td><code>
-set-install-location &lt;LOCATION>
-</code></td>
-<td>Changes the default install location. Location values:
-<ul>
-    <li>{@code 0}: Auto&mdash;Let system decide the best location.
-    <li>{@code 1}: Internal&mdash;install on internal device storage.
-    <li>{@code 2}: External&mdash;install on external media.
-</ul>
-<p class="note"><strong>Note:</strong> This is only intended for debugging; using this can cause
-  applications to break and other undesireable behavior.</p>
-</td>
-</tr>
-
-<tr>
-<td><code>
-get-install-location
-</code></td>
-<td>Returns the current install location. Return values:
-<ul>
-  <li>{@code 0 [auto]}: Lets system decide the best location
-  <li>{@code 1 [internal]}: Installs on internal device storage
-  <li>{@code 2 [external]}: Installs on external media
-</ul>
-</td>
-</tr>
-
-<tr>
-<td><code>
-set-permission-enforced &lt;PERMISSION> [true|false]
-</code></td>
-<td>Specifies whether the given permission should be enforced.
-</td>
-</tr>
-
-<tr>
-<td><code>
-trim-caches &lt;DESIRED_FREE_SPACE>
-</code></td>
-<td>Trim cache files to reach the given free space.
-</td>
-</tr>
-
-<tr>
-<td><code>
-create-user &lt;USER_NAME>
-</code></td>
-<td>Create a new user with the given {@code <USER_NAME>},
-  printing the new user identifier of the user.
-</td>
-</tr>
-
-<tr>
-<td><code>
-remove-user &lt;USER_ID>
-</code></td>
-<td>Remove the user with the given {@code <USER_IDENTIFIER>},
-  deleting all data associated with that user
-</td>
-</tr>
-
-<tr>
-<td><code>
-get-max-users
-</code></td>
-<td>Prints the maximum number of users supported by the device.
-</td>
-</tr>
-
-</table>
-
-
-<h2 id="screencap">Taking a device screenshot</h2>
-
-<p>The {@code screencap} command is a shell utility for taking a screenshot of a device display.
-While in a shell, the syntax is:
-</p>
-
-<pre class="no-pretty-print">
-screencap &lt;filename>
-</pre>
-
-
-<p>To use the {@code screencap} from the command line, type the following:
-
-<pre>
-$ adb shell screencap /sdcard/screen.png
-</pre>
-
-<p>Here's an example screenshot session, using the adb shell to capture the screenshot and the
-{@code pull} command to download the file from the device:<p>
-
-<pre>
-$ adb shell
-shell@ $ screencap /sdcard/screen.png
-shell@ $ exit
-$ adb pull /sdcard/screen.png
-</pre>
-
-
-<h2 id="screenrecord">Recording a device screen</h2>
-
-<p>The {@code screenrecord} command is a shell utility for recording the display of devices
-  running Android 4.4 (API level 19) and higher. The utility records screen activity to an MPEG-4
-  file.</p>
-
-<p class="note"><strong>Note:</strong> Audio is not recorded with the video file.</p>
-
-<p>A developer can use this file to create promotional or training videos. While in a shell, the syntax is:</p>
-
-<pre class="no-pretty-print">
-screenrecord [options] &lt;filename>
-</pre>
-
-<p>To use {@code screenrecord} from the command line, type the following:
-
-<pre>
-$ adb shell screenrecord /sdcard/demo.mp4
-</pre>
-
-<p>Stop the screen recording by pressing Ctrl-C, otherwise the recording stops automatically
-at three minutes or the time limit set by {@code --time-limit}.</p>
-
-<p>To begin recording your device screen, run the {@code screenrecord} command to record
-the video. Then, run the {@code pull} command to download the video from the device to the host
-computer. Here's an example recording session:<p>
-
-<pre>
-$ adb shell
-shell@ $ screenrecord --verbose /sdcard/demo.mp4
-(press Ctrl-C to stop)
-shell@ $ exit
-$ adb pull /sdcard/demo.mp4
-</pre>
-
-<p>The {@code screenrecord} utility can record at any supported resolution and bit rate you
-  request, while retaining the aspect ratio of the device display. The utility records at the native
-  display resolution and orientation by default, with a maximum length of three minutes.</p>
-
-<p>There are some known limitations of the {@code screenrecord} utility that you should be aware
-  of when using it:</p>
-
-<ul>
-  <li>Some devices may not be able to record at their native display resolution.
-    If you encounter problems with screen recording, try using a lower screen resolution.</li>
-  <li>Rotation of the screen during recording is not supported. If the screen does rotate during
-    recording, some of the screen is cut off in the recording.</li>
-</ul>
-
-
-<p class="table-caption"><strong>Table 4.</strong> {@code screenrecord} options</p>
-
-<table>
-  <tr>
-    <th>Options</th>
-    <th>Description</th>
-  </tr>
-
-  <tr>
-    <td><code>--help</code>
-    </td>
-    <td>Displays command syntax and options</td>
-  </tr>
-
-  <tr>
-    <td style="white-space:nowrap">
-      <code>--size &lt;WIDTHxHEIGHT&gt;</code>
-    </td>
-    <td>Sets the video size: {@code 1280x720}. The default value is the device's native
-      display resolution (if supported), 1280x720 if not. For best results, use a size supported
-      by your device's Advanced Video Coding (AVC) encoder.</td>
-  </tr>
-
-  <tr>
-    <td><code>--bit-rate &lt;RATE&gt;</code></td>
-    <td>Sets the video bit rate for the video, in megabits per second. The default value is 4Mbps.
-      You can increase the bit rate to improve video quality, but doing so results in larger movie
-      files. The following example sets the recording bit rate to 6Mbps:
-      <pre>screenrecord --bit-rate 6000000 &#47;sdcard&#47;demo.mp4</pre>
-      </td>
-  </tr>
-
-  <tr>
-    <td><code>--time-limit &lt;TIME&gt;</code></td>
-    <td>Sets the maximum recording time, in seconds. The default and maximum value is 180
-      (3 minutes).</td>
-  </tr>
-
-  <tr>
-    <td><code>--rotate</code></td>
-    <td>Rotates the output 90 degrees. This feature is experimental.</td>
-  </tr>
-
-  <tr>
-    <td><code>--verbose</code></td>
-    <td>Displays log information on the command-line screen. If you do not set this option,
-      the utility does not display any information while running.</td>
-  </tr>
-
-</table>
-
-
-<h2 id="othershellcommands">Other shell commands</h2>
-
-<p>For a list of all the available shell programs, use the following command:</p>
-
-<pre class="no-pretty-print">adb shell ls /system/bin</pre>
-
-<p>Help is available for most of the commands. </p>
-
-<p>Table 5 lists some of the more common adb shell commands.</p>
-
-<p class="table-caption"><strong>Table 5.</strong> Some other adb shell commands</p>
-<table>
-<tr>
-  <th>Shell Command</th>
-  <th>Description</th>
-  <th>Comments</th>
-</tr>
-
-<tr>
-<td><code>dumpsys</code></td>
-<td>Dumps system data to the screen.</td>
-<td rowspan=4">The <a href="{@docRoot}tools/debugging/ddms.html">Dalvik Debug Monitor Server</a>
-(DDMS) tool offers an integrated debug environment that you may find easier to use.
-</td>
-</tr>
-
-<tr>
-<td><code>dumpstate</code></td>
-<td>Dumps state to a file.</td>
-</tr>
-
-<tr>
-<td><code>logcat&nbsp;[option]...&nbsp;[filter-spec]...</code></td>
-<td>Enables system and app logging and prints output to the screen. </td>
-</tr>
-
-<tr>
-<td><code>dmesg</code></td>
-<td>Prints kernel debugging messages to the screen. </td>
-</tr>
-
-<tr>
-<td><code>start</code></td>
-<td>Starts (restarts) an emulator/device instance.</td>
-<td>&nbsp;</td>
-</tr>
-
-<tr>
-<td><code>stop</code></td>
-<td>Stops execution of an emulator/device instance.</td>
-<td>&nbsp;</td>
-</tr>
-
-</table>
diff --git a/docs/html/tools/help/sqlite3.jd b/docs/html/tools/help/sqlite3.jd
deleted file mode 100644
index 9cc7e98..0000000
--- a/docs/html/tools/help/sqlite3.jd
+++ /dev/null
@@ -1,59 +0,0 @@
-page.title=sqlite3
-parent.title=Tools
-parent.link=index.html
-@jd:body
-
- <p>From a remote shell to your device or from your host machine, you can use the <a href= 
-  "http://www.sqlite.org/sqlite.html">sqlite3</a> command-line program to manage SQLite databases
-  created by Android applications. The <code>sqlite3</code> tool includes many useful commands,
-  such as <code>.dump</code> to print out the contents of a table and <code>.schema</code> to print
-  the SQL CREATE statement for an existing table. The tool also gives you the ability to execute
-  SQLite commands on the fly.</p>
-
-  <p>To use <code>sqlite3</code> from a remote shell:</p>
-
-  <ol>
-    <li>Enter a remote shell by entering the following command:
-      <pre>adb [-d|-e|-s {&lt;serialNumber&gt;}] shell</pre>
-    </li>
-
-    <li>From a remote shell, start the <code>sqlite3</code> tool by entering the following command:
-      <pre>sqlite3</pre>
-
-      <p>You can also optionally specify a full path to a database that you want to explore.
-      Emulator/device instances store SQLite3 databases in the directory 
-      <code>/data/data/&lt;package_name&gt;/databases/</code>.</p>
-    </li>
-
-    <li>Once you invoke <code>sqlite3</code>, you can issue <code>sqlite3</code> commands in the
-    shell. To exit and return to the adb remote shell, enter <code>exit</code> or press
-    <code>CTRL+D</code>.</li>
-  </ol>
-  
-  
-      <p>Here's an example:</p>
-      <pre>$ adb -s emulator-5554 shell
-# sqlite3 /data/data/com.example.google.rss.rssexample/databases/rssitems.db
-SQLite version 3.3.12
-Enter ".help" for instructions
-<em>.... enter commands, then quit...</em>
-# sqlite&gt; .exit 
-</pre>
-
-  <p>To use <code>sqlite3</code> locally, instead of within a shell, 
-  pull the database file from the device and start {@code sqlite3}:</p>
-
-  <ol>
-    <li>Copy a database file from your device to your host machine:
-      <pre>
-adb pull &lt;database-file-on-device&gt;
-</pre>
-    </li>
-
-    <li>Start the sqlite3 tool from the <code>/tools</code> directory, specifying the database
-    file:
-      <pre>
-sqlite3 &lt;database-file-on-host&gt;
-</pre>
-    </li>
-  </ol>
\ No newline at end of file
diff --git a/docs/html/tools/help/systrace.jd b/docs/html/tools/help/systrace.jd
deleted file mode 100755
index 236d282..0000000
--- a/docs/html/tools/help/systrace.jd
+++ /dev/null
@@ -1,411 +0,0 @@
-page.title=Systrace
-parent.title=Tools
-parent.link=index.html
-@jd:body
-
-
-<p>The Systrace tool helps analyze the performance of your application by capturing and
-  displaying execution times of your applications processes and other Android system processes. The
-  tool combines data from the Android kernel such as the CPU scheduler, disk activity, and
-  application threads to generate an HTML report that shows an overall picture of an Android
-  device’s system processes for a given period of time.</p>
-
-<p>The Systrace tool is particularly useful in diagnosing display problems where an
-  application is slow to draw or stutters while displaying motion or animation. For more information
-  on how to use Systrace, see <a href="{@docRoot}tools/debugging/systrace.html">Analyzing
-  UI Performance with Systrace</a>.</p>
-
-<h2 id="requirements">Requirements</h2>
-
-<p>In order to run Systrace, you must have Android SDK Tools 20 or later installed. You must also
-have <a href="http://www.python.org/">Python</a> installed and included in your development
-computer's execution path. In order to generate a trace, you must connect a device running Android
-4.1 (API Level 16) or higher to your development system using a
-<a href="{@docRoot}tools/device.html#setting-up">USB debugging connection</a>.</p>
-
-<p>The Systrace tool can be run either from one of the Android SDK's graphical user interface
-tools, or from the command line. The following sections describe how to run the tool using either
-of these methods.</p>
-
-
-<h2 id="gui">User Interface</h2>
-
-<p>The Systrace tool can be run from
-<a href="{@docRoot}sdk/installing/studio.html">Android Studio</a>
-or the Android <a href="{@docRoot}tools/help/monitor.html">Device Monitor</a>.
-
-<p>To run the Systrace capture user interface:</p>
-
-<div class="toggle-content closed">
-<p style="margin-top:5px"><a href="#" onclick="return toggleContent(this)">
-  <img src="/assets/images/styles/disclosure_down.png" class="toggle-content-img" alt=""
-  />Using Android Studio</a></p>
-
-  <div class="toggle-content-toggleme">
-  <ol>
-    <li>In <a href="{@docRoot}sdk/installing/studio.html">Android Studio</a>, open an
-      Android application project.</li>
-    <li>Open the Device Monitor by selecting <strong>Tools &gt; Android &gt; Android Device
-      Monitor</strong>.</li>
-    <li>In the <strong>Devices</strong> tab, select the device on which to run a trace. If no
-      devices are listed, make sure your device is connected via USB cable and that debugging is
-      enabled on the device.</li>
-    <li>Click the Systrace icon <img src="{@docRoot}images/systrace/systrace-button.png"
-      style="margin:0"/> at the top of the <strong>Devices</strong> panel to configure tracing.</li>
-    <li>Set the tracing options and click <strong>OK</strong> to start the trace.</li>
-  </ol>
-  </div>
-</div>
-
-<div class="toggle-content closed">
-<p style="margin-top:5px"><a href="#" onclick="return toggleContent(this)">
-  <img src="/assets/images/styles/disclosure_down.png" class="toggle-content-img" alt=""
-  />Using Device Monitor</a></p>
-
-  <div class="toggle-content-toggleme">
-  <ol>
-    <li>Navigate to your SDK {@code tools/} directory.</li>
-    <li>Run the {@code monitor} program.</li>
-    <li>In the <strong>Devices</strong> tab, select the device on which to run a trace. If no
-      devices are listed, make sure your device is connected via USB cable and that debugging is
-      enabled on the device.</li>
-    <li>Click the Systrace icon <img src="{@docRoot}images/systrace/systrace-button.png"
-      style="margin:0"/> at the top of the <strong>Devices</strong> panel to configure tracing.</li>
-    <li>Set the tracing options and click <strong>OK</strong> to start the trace.</li>
-  </ol>
-  </div>
-</div>
-
-
-<h2 id="options">Command Line Usage</h2>
-
-<p>The Systrace tool has different command line options for devices running Android 4.3 (API
-level 18) and higher versus devices running Android 4.2 (API level 17) and lower. The following
-sections describe the different command line options for each version.</p>
-
-<p>The general syntax for running Systrace from the command line is as follows.</p>
-
-<pre>
-$ python systrace.py [options] [category1] [category2] ... [categoryN]
-</pre>
-
-<p>See the sections below for example Systrace sessions.</p>
-
-
-<h3 id="options-4.3">Android 4.3 and higher options</h3>
-
-<p>When you use Systrace on devices running Android 4.3 and higher, you can omit trace category tags
-to get the defaults, or you may manually specify tags for inclusion. Here is an example execution
-run that sets trace tags and generates a trace from a connected device.</p>
-
-<pre>
-$ cd <em>android-sdk</em>/platform-tools/systrace
-$ python systrace.py --time=10 -o mynewtrace.html sched gfx view wm
-</pre>
-
-<p class="note">
-  <strong>Tip:</strong> If you want to see the names of tasks in the trace output, you <em>must</em>
-  include the {@code sched} category in your command parameters.
-</p>
-
-<p>The table below lists the Systrace command line options for devices running Android 4.3
-(API level 18) and higher.</p>
-
-<table>
-  <tr>
-    <th>Option</th>
-
-    <th>Description</th>
-  </tr>
-
-  <tr>
-    <td><nobr><code>-h, --help</code></nobr></td>
-
-    <td>Show the help message.</td>
-  </tr>
-
-  <tr>
-    <td><code>-o&nbsp;&lt;<em>FILE</em>&gt;</code></td>
-
-    <td>Write the HTML trace report to the specified file.</td>
-  </tr>
-
-  <tr>
-    <td><code>-t N, --time=N</code></td>
-
-    <td>Trace activity for <em>N</em> seconds. The default value is 5 seconds.</td>
-  </tr>
-
-  <tr>
-    <td><code>-b N, --buf-size=N</code></td>
-
-    <td>Use a trace buffer size of <em>N</em> kilobytes. This option lets you limit the total size
-    of the data collected during a trace.</td>
-  </tr>
-
-  <tr>
-    <td><code>-k&nbsp;&lt;<em>KFUNCS</em>&gt;<br>
-        --ktrace=&lt;<em>KFUNCS</em>&gt;</code></td>
-
-    <td>Trace the activity of specific kernel functions, specified in a comma-separated list.</td>
-  </tr>
-
-  <tr>
-    <td><code>-l, --list-categories</code></td>
-
-    <td>List the available tracing category tags. The available tags are:
-
-      <ul>
-        <li><code>gfx</code> - Graphics</li>
-        <li><code>input</code> - Input</li>
-        <li><code>view</code> - View</li>
-        <li><code>webview</code> - WebView</li>
-        <li><code>wm</code> - Window Manager</li>
-        <li><code>am</code> - Activity Manager</li>
-        <li><code>audio</code> - Audio</li>
-        <li><code>video</code> - Video</li>
-        <li><code>camera</code> - Camera</li>
-        <li><code>hal</code> - Hardware Modules</li>
-        <li><code>res</code> - Resource Loading</li>
-        <li><code>dalvik</code> - Dalvik VM</li>
-        <li><code>rs</code> - RenderScript</li>
-        <li><code>sched</code> - CPU Scheduling</li>
-        <li><code>freq</code> - CPU Frequency</li>
-        <li><code>membus</code> - Memory Bus Utilization</li>
-        <li><code>idle</code> - CPU Idle</li>
-        <li><code>disk</code> - Disk input and output</li>
-        <li><code>load</code> - CPU Load</li>
-        <li><code>sync</code> - Synchronization Manager</li>
-        <li><code>workq</code> - Kernel Workqueues</li>
-      </ul>
-
-      <p class="note"><strong>Note:</strong> Some trace categories are not supported on all
-      devices.</p>
-
-      <p class="note"><strong>Tip:</strong> If you want to see the names of tasks in the trace
-      output, you <em>must</em> include the {@code sched} category in your command parameters.</p>
-
-    </td>
-  </tr>
-
-  <tr>
-    <td><code>-a&nbsp;&lt;<em>APP_NAME</em>&gt;<br>
-        --app=&lt;<em>APP_NAME</em>&gt;</code></td>
-
-    <td>Enable tracing for applications, specified as a comma-separated list of
-    <a href="{@docRoot}guide/topics/manifest/manifest-element.html#package">package names</a>.
-    The apps must contain tracing instrumentation calls from the {@link android.os.Trace} class.
-    For more information, see <a href="{@docRoot}tools/debugging/systrace.html#app-trace">Analyzing
-    UI Performance with Systrace</a>.
-    </td>
-  </tr>
-
-  <tr>
-    <td><code>--from-file=&lt;<em>FROM_FILE</em>&gt;</code></td>
-
-    <td>Create the interactive Systrace report from a file, instead of running a live trace.</td>
-  </tr>
-
-  <tr>
-    <td style="white-space:nowrap">
-    <code>-e &lt;<em>DEVICE_SERIAL</em>&gt;<br>
-    --serial=&lt;<em>DEVICE_SERIAL</em>&gt;</code></td>
-
-    <td>Conduct the trace on a specific connected device, identified by its
-      <a href="{@docRoot}tools/help/adb.html#devicestatus">device serial number</a>.</td>
-  </tr>
-
-</table>
-
-
-<h3 id="options-pre-4.3">Android 4.2 and lower options</h3>
-
-<p>Using Systrace on the command line with devices running Android 4.2 and lower is typically a
-two-step process. You must first set the trace tags you want to capture and then run the trace.
-Here is an example execution run that sets trace tags and generates a trace from a connected
-device.</p>
-
-<pre>
-$ cd <em>android-sdk</em>/platform-tools/systrace
-$ python systrace.py --set-tags gfx,view,wm
-$ adb shell stop
-$ adb shell start
-$ python systrace.py --disk --time=10 -o mynewtrace.html
-</pre>
-
-<p>The table below lists the Systrace command line options for devices running Android 4.2
-(API level 17) and lower.</p>
-
-<table>
-  <tr>
-    <th>Option</th>
-
-    <th>Description</th>
-  </tr>
-
-  <tr>
-    <td><nobr><code>-h, --help</code></nobr></td>
-
-    <td>Show the help message.</td>
-  </tr>
-
-  <tr>
-    <td><code>-o&nbsp;&lt;<em>FILE</em>&gt;</code></td>
-
-    <td>Write the HTML trace report to the specified file.</td>
-  </tr>
-
-  <tr>
-    <td><code>-t N, --time=N</code></td>
-
-    <td>Trace activity for <em>N</em> seconds. The default value is 5 seconds.</td>
-  </tr>
-
-  <tr>
-    <td><code>-b N, --buf-size=N</code></td>
-
-    <td>Use a trace buffer size of <em>N</em> kilobytes. This option lets you limit the total size
-    of the data collected during a trace.</td>
-  </tr>
-
-  <tr>
-    <td><code>-d, --disk</code></td>
-
-    <td>Trace disk input and output activity. This option requires root access on the device.</td>
-  </tr>
-
-  <tr>
-    <td><code>-f, --cpu-freq</code></td>
-
-    <td>Trace CPU frequency changes. Only changes to the CPU frequency are logged, so the initial
-    frequency of the CPU when tracing starts is not shown.</td>
-  </tr>
-
-  <tr>
-    <td><code>-i, --cpu-idle</code></td>
-
-    <td>Trace CPU idle events.</td>
-  </tr>
-
-  <tr>
-    <td><code>-l, --cpu-load</code></td>
-
-    <td>Trace CPU load. This value is a percentage determined by the interactive CPU frequency
-    governor.</td>
-  </tr>
-
-  <tr>
-    <td><nobr><code>-s,&nbsp;--no-cpu-sched</code></nobr></td>
-
-    <td>Prevent tracing of the CPU scheduler. This option allows for longer trace times by reducing
-    the rate of data flowing into the trace buffer.</td>
-  </tr>
-
-  <tr>
-    <td><nobr><code>-u, --bus-utilization</code></nobr></td>
-
-    <td>Trace the bus utilization levels. This option requires root access on the device.</td>
-  </tr>
-
-  <tr>
-    <td><code>-w, --workqueue</code></td>
-
-    <td>Trace kernel work queues. This option requires root access on the device.</td>
-  </tr>
-
-  <tr>
-    <td id="tags"><code>--set-tags=&lt;<em>TAGS</em>&gt;</code></td>
-
-    <td>Set the enabled trace tags in a comma separated list. The available tags are:
-      <ul>
-        <li><code>gfx</code> - Graphics</li>
-        <li><code>input</code> - Input</li>
-        <li><code>view</code> - View</li>
-        <li><code>webview</code> - WebView</li>
-        <li><code>wm</code> - Window Manager</li>
-        <li><code>am</code> - Activity Manager</li>
-        <li><code>sync</code> - Synchronization Manager</li>
-        <li><code>audio</code> - Audio</li>
-        <li><code>video</code> - Video</li>
-        <li><code>camera</code> - Camera</li>
-      </ul>
-      <p class="note"><strong>Note:</strong> When setting trace tags from the command line, you
-      must stop and restart the framework ({@code $ adb shell stop; adb shell start}) for the
-      tag tracing changes to take effect.</p>
-    </td>
-  </tr>
-
-</table>
-
-<p>You can set the trace <a href="#tags">tags</a> for Systrace on
-your Android 4.2 and lower device by navigating to <strong>Settings &gt; Developer options &gt;
-Monitoring &gt; Enable traces</strong>.</p>
-
-
-<h2 id="viewing-options">Trace Viewing Shortcuts</h2>
-
-<p>The table below lists the keyboard shortcuts that are available while viewing a Systrace
-trace HTML report.</p>
-
-<table>
-  <tr>
-    <th>Key</th>
-
-    <th>Description</th>
-  </tr>
-
-  <tr>
-    <td><strong>w</strong></td>
-
-    <td>Zoom into the trace timeline.</td>
-  </tr>
-
-  <tr>
-    <td><strong>s</strong></td>
-
-    <td>Zoom out of the trace timeline.</td>
-  </tr>
-
-  <tr>
-    <td><strong>a</strong></td>
-
-    <td>Pan left on the trace timeline.</td>
-  </tr>
-
-  <tr>
-    <td><strong>d</strong></td>
-
-    <td>Pan right on the trace timeline.</td>
-  </tr>
-
-  <tr>
-    <td><strong>e</strong></td>
-
-    <td>Center the trace timeline on the current mouse location.</td>
-  </tr>
-
-  <tr>
-    <td><strong>g</strong></td>
-
-    <td>Show grid at the start of the currently selected task.</td>
-  </tr>
-
-  <tr>
-    <td><strong>Shift+g</strong></td>
-
-    <td>Show grid at the end of the currently selected task.</td>
-  </tr>
-
-  <tr>
-    <td><strong>Right Arrow</strong></td>
-
-    <td>Select the next event on the currently selected timeline.</td>
-  </tr>
-
-  <tr>
-    <td><strong>Left Arrow</strong></td>
-
-    <td>Select the previous event on the currently selected timeline.</td>
-  </tr>
-
-</table>
diff --git a/docs/html/tools/help/theme-editor.jd b/docs/html/tools/help/theme-editor.jd
deleted file mode 100644
index 19f765f..0000000
--- a/docs/html/tools/help/theme-editor.jd
+++ /dev/null
@@ -1,166 +0,0 @@
-page.title=Theme Editor
-parent.title=Tools
-parent.link=index.html
-page.tags=theme
-@jd:body
-
-<div id="qv-wrapper">
-<div id="qv">
-  <h2>In this document</h2>
-<ol>
-  <li><a href="#basics">Theme Editor Basics</a></li>
-  <li><a href="#themes">Themes and Colors</a></li>
-  <li><a href="#device">Device-Specific Configurations</a></li>
-</ol>
-
-
-  <h2>Dependencies and Prerequisites</h2>
-  <ul>
-    <li>Android Studio 1.4.1 or higher</li>
-  </ul>
-
-</div>
-</div>
-
-<p>
-The Theme Editor is a visual assistant that helps you:
-</p>
-   <li>Create and modify
-<a href="{@docRoot}guide/topics/ui/themes.html">
-themes</a> for your app.</li>
-   <li>Adjust themes for different resource classifiers.</li>
-   <li>Visualize the effect of color changes on common UI elements.</li>
-
-<p>
-This page introduces the fundamental tasks that you can perform with the Theme
-Editor, and explains how to do so.
-</p>
-
-
-<h2 id="basics">Theme Editor Basics</h2>
-
-<p>
-This section describes how to access the Theme Editor, and how it is laid out.
-</p>
-
-<h3>Accessing the Theme Editor</h3>
-
-<p>There are two ways to open the Theme Editor:</p>
-
-<li>From an open {@code styles.xml} file, click <strong>Open editor</strong> near the top-right
-of the file window.</li>
-
-<li>From the <strong>Tools</strong> menu, select <strong>Android</strong> &gt;
-<strong>Theme Editor</strong>.</p>
-
-<h3 id="layout">Navigating the Theme Editor</h3>
-<p>
-The Theme Editor's main screen is divided into two sections. The left side of the editor
-shows what specific UI elements, such as the app bar or a raised button, look like
-when you apply the current theme to them. The right side of the editor displays
-the settings for the color resources, such as <strong>Theme parent</strong> and
-<strong>colorPrimary</strong>, that comprise the current theme. You can modify design
-themes by changing these resource settings.
-</p>
-
-<h2 id="themes">Themes and Colors</h2>
-
-<p>
-The Theme Editor allows you to create new themes, modify existing ones, and manage the
-colors that make up the themes.
-</p>
-
-<h3 id="create">Creating New Themes</h3>
-
-<p>
-To create a theme, follow these steps:
-</p>
-   <ol>
-   <li>Open the <strong>Theme</strong> dropdown menu near the top of the right
-side of the Theme Editor.</li>
-   <li>Select <strong>Create New Theme</strong>. The <em>New Theme</em> dialog appears.</li>
-   <li>Enter a name for the new theme.</li>
-   <li>In the <em>Parent theme name:</em> field, select the parent from which the theme
-   inherits initial resources.</li>
-   </ol>
-
-<h3 id="rename">Renaming Themes</h3>
-
-<p>
-To rename a theme, perform the following steps:
-</p>
-   <ol>
-   <li>Open the <strong>Theme</strong> dropdown menu near the top of the right
-side of the Theme Editor.</li>
-   <li>Select <strong>Rename AppTheme</strong>. The <em>Rename</em> dialog appears.</li>
-   <li>Enter a new name for the theme.</li>
-   <li>(optional) To see how the changes will look, click <strong>Preview</strong>.</li>
-   <li>To apply the changes, click <strong>Refactor</strong>.</li>
-   </ol>
-
-<h3 id="changing">Changing Color Resources</h3>
-
-<p>To change an existing color resource, such as <strong>colorPrimary</strong>,
-follow these steps:
-</p>
-<ol>
-<li>Click the colored square next to the name of the resource you want to change.
-The <em>Resources</em> dialog appears, containing a color picker, material-color
-palette, and other settings and information.</li>
-<li>Change the color, opacity, and name of a theme's resources as desired.</p>
-<li>To ensure that your theme uses a color from the material
-palette, click <strong>CLOSEST MATERIAL COLOR</strong>, located next to <em>Custom
-color</em>. Android Studio changes the color you picked to the material color most like it,
-and replaces <em>Custom color</em> with the name of the color from the material palette.</li>
-</ol>
-
-<p>You can also directly select colors from the material palette, which the editor displays
-as two rows of colored squares beneath the color picker.</p>
-
-<h3 id="viewing">Viewing State Lists and Colors</h3>
-
-<p>
-The Theme Editor allows you to preview
-<a href="{@docRoot}guide/topics/resources/color-list-resource.html">
-colors associated with different states.</a> To do so, open the <em>Resource</em> dialog, and click
-the <em>State List</em> tab that appears at the top of the dialog.</p>
-
-<p>
-To more fully control the states themselves, you can directly view and edit their
-properties in the XML file,
-such as {@code colors.xml}, that defines them. For more information, see the
-documentation for the {@link android.content.res.ColorStateList} class.
-</p>
-
-<h2 id="device">Device-Specific Configurations</h2>
-
-<p>
-You can choose
-<a href="{@docRoot}guide/topics/resources/providing-resources.html#Compatibility">
-device-specific</a> configurations for your app to support. Perform
-the following steps to do so:
-</p>
-
-<ol>
-<li>Click the triangle next to <em>Location</em>, near the bottom of the <a href="#changing">
-<em>Resources</em></a> dialog. The <em>Location</em> section expands, revealing
-the name of the XML file containing the
-resource, as well as a list of configuration-specific directories in which to
-place that file.</li>
-<li>If necessary, change the XML file name.</li>
-<li>Check the boxes next to the directories corresponding to the
-device-specific configurations you wish to support. Any configuration
-for which you do not specify a directory defaults to using the
-{@code values} directory.</li>
-</ol>
-
-<p>For more information about the relationship
-between directory names and configurations, see
-<a href="{@docRoot}guide/practices/screens_support.html#ConfigurationExamples">
-Supporting Multiple Screens</a>. For more information about
-supported directory names, see
-<a href="{@docRoot}guide/topics/resources/providing-resources.html#ResourceTypes">
-Providing Resources</a>.
-</p>
-
-
diff --git a/docs/html/tools/help/traceview.jd b/docs/html/tools/help/traceview.jd
deleted file mode 100644
index a268291..0000000
--- a/docs/html/tools/help/traceview.jd
+++ /dev/null
@@ -1,28 +0,0 @@
-page.title=Traceview
-parent.title=Tools
-parent.link=index.html
-@jd:body
-
-<p>Traceview is a graphical viewer for execution logs saved by your application.
-Traceview can help you debug your application and profile its performance.</p>
-
-<p>To start the Traceview tool:</p>
-
-<ul>
- <li>Start the <a href="{@docRoot}tools/help/monitor.html">Android Device Monitor</a>. </li>
- <li>In the Android Device Monitor tool bar, click <strong>DDMS</strong> and select a process. </li>
- <li>Click the <strong>Start Method Profiling</strong> icon to start method profiling. </li>
- <li>After the profiling is complete, click the <strong>Stop Method Profiling</strong> icon to
-   display the traceview. </li>
-</ul>
-
-
-<p>For more information on how to use Traceview, see
-<a href="{@docRoot}tools/debugging/debugging-tracing.html">Profiling with Traceview and
-dmtracedump</a>.
-</p>
-
-<p class="note"><strong>Note:</strong> Running <code>traceview</code> from the command line
-has been deprecated. </p>
-
-
diff --git a/docs/html/tools/help/translations-editor.jd b/docs/html/tools/help/translations-editor.jd
deleted file mode 100644
index ab557e1..0000000
--- a/docs/html/tools/help/translations-editor.jd
+++ /dev/null
@@ -1,133 +0,0 @@
-page.title=Translations Editor
-parent.title=Tools
-parent.link=index.html
-page.tags=translations
-@jd:body
-
-<div id="qv-wrapper">
-<div id="qv">
-  <h2>In this document</h2>
-<ol>
-  <li><a href="#about">About the Translations Editor</a></li>
-  <li><a href="#running">Running the Translations Editor</a></li>
-  <li><a href="#managing">Managing String Resources</a></li>
-  <li><a href="#ordering">Ordering Translation Services</a></li>
-</ol>
-
- <h2>See also</h2>
-  <ol>
-    <li><a href="{@docRoot}training/basics/supporting-devices/languages.html">Supporting Different
-    Languages</a></li>
-    <li><a href="{@docRoot}guide/topics/resources/localization.html">Localizing with Resources</a>
-    </li>
-    <li><a href="{@docRoot}guide/topics/resources/providing-resources.html">Providing Resources</a>
-    </li>
-  </ol>
-
-</div>
-</div>
-
-<p>
-If your application supports multiple languages, you need to properly manage your
-translated string resources. Android Studio provides the Translations Editor to make viewing and
-managing your translated resources easier.
-</p>
-
-<h2 id="about">About the Translations Editor</h2>
-
-<p>
-Translated resources are stored in multiple XML files in multiple directories in your project.
-Manually finding and editing resource files across many translations can be difficult. Because of
-this, your application might have missing translations that go unnoticed until after your
-application has been built and distributed to users.
-</p>
-
-<p>
-The Translations Editor lets you view and update all your string resources in one convenient
-place. The editor gives you a single view of all of your translated resources, making it easy to
-change or add translations, and even find missing translations.
-</p>
-
-<img src="{@docRoot}images/tools/studio-translations-editor.png" />
-<p class="img-caption"><strong>Figure 1.</strong> Manage locales and strings in the
-Translations Editor.</p>
-
-<h2 id="running">Running the Translations Editor</h2>
-
-<p>
-Follow these steps to start the Translations Editor:
-</p>
-
-<ol>
-  <li>In Android Studio, open an Android app project.</li>
-  <li>In the <em>Project</em> window, select the
-  <a href="{@docRoot}sdk/installing/create-project.html#ProjectView">Android view</a>.</li>
-  <li>Open the <strong>res</strong> folder, and then open the <strong>values</strong> folder.</li>
-  <li>If a <strong>strings.xml</strong> folder is present, open this folder.</li>
-  <li>Right-click the <code>strings.xml</code> file (not folder) and select <strong>Open
-    Translations Editor</strong>.</li>
-</ol>
-
-<p>
-You can also access the Translations Editor by opening a <code>strings.xml</code> file for editing
-and clicking the <strong>Open editor</strong> link, or clicking the globe icon
-<img src="{@docRoot}images/tools/studio-globe-icon.png" alt=""/> in the Design layout view and
-choosing <strong>Edit Translations</strong>.
-</p>
-
-<h2 id="managing">Managing String Resources</h2>
-
-<p>
-The Translations Editor provides a view of all your string resources and current locale
-translations. The name of each resource is listed in the Key column, along with a default value
-for the key, a checkbox to mark the key as untranslatable, and values for each locale translation.
-</p>
-
-<p>
-Edit translations by double-clicking on the translation and editing the value directly
-in the list view, or selecting the translation and editing the <strong>Translation</strong> field
-value at the bottom of the editor. The default value can be edited by double-clicking on
-the default value or selecting the default value and updating the <strong>Default Value</strong>
-field.</p>
-
-<p>
-If a resource is missing a translation and isn't marked untranslatable, the key name is
-displayed in red. If you hover over a red resource, Android Studio displays details about the
-missing translations.
-</p>
-
-<h3 id="adding">Adding a new string resource</h3>
-
-<p>
-Add a new resource by clicking the add icon <img src="{@docRoot}images/tools/studio-add-icon.png"
- alt=""/>. Android Studio prompts you for a key name,
-default value, and resource folder that contains the <code>strings.xml</code> file where the new
-resource is added.
-</p>
-
-<h3 id="adding_locales">Adding additional locales</h3>
-
-<p>
-Add additional locales by pressing the globe icon
- <img src="{@docRoot}images/tools/studio-globe-icon.png" alt=""/> and selecting the locale you want
-to add. The Translations Editor adds the new locale column and creates the translation strings XML
-file in the appropriate project directory.
-</p>
-
-<p>
-The Translations Editor has
-<a class="external-link" href="https://tools.ietf.org/html/bcp47">BCP 47</a> support, and
-combines language and region codes into a single selection for targeted localizations.
-</p>
-
-<h2 id="ordering">Ordering Translation Services</h2>
-
-<p>
-Clicking the <strong>Order a translation</strong> link opens a page in your browser where you
-can upload string resource XML files and order translation services. App translation services are
-available from Google Play and other vendors. For more information about Google Play App
-Translation Services, see the <a class="external-link"
-href="http://android-developers.blogspot.com/2013/11/app-translation-service-now-available.html">
-Google Play App Translation Service</a> announcement.
-</p>
-
diff --git a/docs/html/tools/help/uiautomator/Configurator.jd b/docs/html/tools/help/uiautomator/Configurator.jd
deleted file mode 100644
index b6e15f6..0000000
--- a/docs/html/tools/help/uiautomator/Configurator.jd
+++ /dev/null
@@ -1,960 +0,0 @@
-page.title=Configurator
-parent.title=uiautomator
-parent.link=index.html
-
-@jd:body
-<style>
-    h4.jd-details-title {background-color: #DEE8F1;}
-</style>
-
-<div id="api-info-block">
-<div class="api-level" style="margin:-95px 0 0;">
-Since <a href="/guide/topics/manifest/uses-sdk-element.html#ApiLevels">API level 18</a>
-</div>
-</div>
-
-<p>Allows you to set key parameters for running uiautomator tests. The new
-settings take effect immediately and can be changed any time during a test run.
-To modify parameters using <code><a href="#">Configurator</a></code>, first
-obtain an instance by calling <code><a href="#getInstance()">getInstance()</a></code>.
-As a best practice, make sure you always save the original value of any
-parameter that you are modifying. After running your tests with the modified
-parameters, make sure to also restore the original parameter values, otherwise
-this will impact other tests cases.</p>
-
-
-<h2>Summary</h2>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-<!-- ========== METHOD SUMMARY =========== -->
-<table id="pubmethods" class="jd-sumtable"><tr><th colspan="12">Public Methods</th></tr>
-
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            long</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="#getActionAcknowledgmentTimeout()">getActionAcknowledgmentTimeout</a></span>()</nobr>
-
-        <div class="jd-descrdiv">Gets the current timeout for waiting for an acknowledgment of generic
- uiautomator actions, such as clicks, text setting, and menu presses.</div>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-            static
-
-            <a href="#">Configurator</a></nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="#getInstance()">getInstance</a></span>()</nobr>
-
-        <div class="jd-descrdiv">Retrieves a singleton instance of Configurator.</div>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            long</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="#getKeyInjectionDelay()">getKeyInjectionDelay</a></span>()</nobr>
-
-        <div class="jd-descrdiv">Gets the current delay between key presses when injecting text input.</div>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            long</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="#getScrollAcknowledgmentTimeout()">getScrollAcknowledgmentTimeout</a></span>()</nobr>
-
-        <div class="jd-descrdiv">Gets the timeout for waiting for an acknowledgement of an
- uiautomtor scroll swipe action.</div>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            long</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="#getWaitForIdleTimeout()">getWaitForIdleTimeout</a></span>()</nobr>
-
-        <div class="jd-descrdiv">Gets the current timeout used for waiting for the user interface to go
- into an idle state.</div>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            long</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="#getWaitForSelectorTimeout()">getWaitForSelectorTimeout</a></span>()</nobr>
-
-        <div class="jd-descrdiv">Gets the current timeout for waiting for a widget to become visible in
- the user interface so that it can be matched by a selector.</div>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            <a href="#">Configurator</a></nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="#setActionAcknowledgmentTimeout(long)">setActionAcknowledgmentTimeout</a></span>(long timeout)</nobr>
-
-        <div class="jd-descrdiv">Sets the timeout for waiting for an acknowledgment of generic uiautomator
- actions, such as clicks, text setting, and menu presses.</div>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            <a href="#">Configurator</a></nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="#setKeyInjectionDelay(long)">setKeyInjectionDelay</a></span>(long delay)</nobr>
-
-        <div class="jd-descrdiv">Sets a delay between key presses when injecting text input.</div>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            <a href="#">Configurator</a></nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="#setScrollAcknowledgmentTimeout(long)">setScrollAcknowledgmentTimeout</a></span>(long timeout)</nobr>
-
-        <div class="jd-descrdiv">Sets the timeout for waiting for an acknowledgement of an
- uiautomtor scroll swipe action.</div>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            <a href="#">Configurator</a></nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="#setWaitForIdleTimeout(long)">setWaitForIdleTimeout</a></span>(long timeout)</nobr>
-
-        <div class="jd-descrdiv">Sets the timeout for waiting for the user interface to go into an idle
- state before starting a uiautomator action.</div>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            <a href="#">Configurator</a></nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="#setWaitForSelectorTimeout(long)">setWaitForSelectorTimeout</a></span>(long timeout)</nobr>
-
-        <div class="jd-descrdiv">Sets the timeout for waiting for a widget to become visible in the user
- interface so that it can be matched by a selector.</div>
-
-  </td></tr>
-
-
-
-</table>
-
-
-
-
-
-
-
-<!-- ========== METHOD SUMMARY =========== -->
-<table id="inhmethods" class="jd-sumtable"><tr><th>
-  <a href="#" class="toggle-all" onclick="return toggleAllInherited(this, null)">[Expand]</a>
-  <div style="clear:left;">Inherited Methods</div></th></tr>
-
-
-<tr class="api" >
-<td colspan="12">
-  <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
-          ><img id="inherited-methods-java.lang.Object-trigger"
-          src="../../../../../assets/images/styles/disclosure_down.png"
-          class="jd-expando-trigger-img" /></a>
-From class
-
-  java.lang.Object
-
-<div id="inherited-methods-java.lang.Object">
-  <div id="inherited-methods-java.lang.Object-list"
-        class="jd-inheritedlinks">
-  </div>
-  <div id="inherited-methods-java.lang.Object-summary" style="display: none;">
-    <table class="jd-sumtable-expando">
-
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            Object</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">clone</span>()</nobr>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            boolean</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">equals</span>(Object arg0)</nobr>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            void</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">finalize</span>()</nobr>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-            final
-
-
-            Class&lt;?&gt;</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">getClass</span>()</nobr>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            int</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">hashCode</span>()</nobr>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-            final
-
-
-            void</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">notify</span>()</nobr>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-            final
-
-
-            void</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">notifyAll</span>()</nobr>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            String</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">toString</span>()</nobr>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-            final
-
-
-            void</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">wait</span>()</nobr>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-            final
-
-
-            void</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">wait</span>(long arg0, int arg1)</nobr>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-            final
-
-
-            void</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">wait</span>(long arg0)</nobr>
-
-  </td></tr>
-
-
-</table>
-  </div>
-</div>
-</td></tr>
-
-
-</table>
-
-
-</div><!-- jd-descr (summary) -->
-
-<!-- Details -->
-
-
-
-
-
-
-
-
-<!-- XML Attributes -->
-
-
-<!-- Enum Values -->
-
-
-<!-- Constants -->
-
-
-<!-- Fields -->
-
-
-<!-- Public ctors -->
-
-
-
-<!-- ========= CONSTRUCTOR DETAIL ======== -->
-<!-- Protected ctors -->
-
-
-
-<!-- ========= METHOD DETAIL ======== -->
-<!-- Public methdos -->
-
-<h2>Public Methods</h2>
-
-
-
-<A NAME="getActionAcknowledgmentTimeout()"></A>
-
-<div class="jd-details api apilevel-18">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        public
-
-
-
-
-        long
-      </span>
-      <span class="sympad">getActionAcknowledgmentTimeout</span>
-      <span class="normal">()</span>
-    </h4>
-    <div class="jd-details-descr">
-
-  <div class="jd-tagdata jd-tagdescr"><p>Gets the current timeout for waiting for an acknowledgment of generic
- uiautomator actions, such as clicks, text setting, and menu presses.
-
- The acknowledgment is an <a href="http://developer.android.com/reference/android/view/accessibility/AccessibilityEvent.html">AccessibilityEvent</a>,
- corresponding to an action, that lets the framework determine if the
- action was successful. Generally, this timeout should not be modified.
- See <code><a href="UiObject.html">UiObject</a></code></p></div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Returns</h5>
-      <ul class="nolist"><li>current timeout in milliseconds</li></ul>
-  </div>
-  <div class="jd-tagdata">
-     <h5 class="jd-tagtitle">Since</h5>
-     <ul class="nolist"><li>Android API Level 18</li></ul>
-  </div>
-
-    </div>
-</div>
-
-
-<A NAME="getInstance()"></A>
-
-<div class="jd-details api apilevel-18">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        public
-        static
-
-
-
-        <a href="#">Configurator</a>
-      </span>
-      <span class="sympad">getInstance</span>
-      <span class="normal">()</span>
-    </h4>
-    <div class="jd-details-descr">
-
-  <div class="jd-tagdata jd-tagdescr"><p>Retrieves a singleton instance of Configurator.</p></div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Returns</h5>
-      <ul class="nolist"><li>Configurator instance</li></ul>
-  </div>
-  <div class="jd-tagdata">
-     <h5 class="jd-tagtitle">Since</h5>
-     <ul class="nolist"><li>Android API Level 18</li></ul>
-  </div>
-
-    </div>
-</div>
-
-
-<A NAME="getKeyInjectionDelay()"></A>
-
-<div class="jd-details api">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        public
-
-
-
-
-        long
-      </span>
-      <span class="sympad">getKeyInjectionDelay</span>
-      <span class="normal">()</span>
-    </h4>
-    <div class="jd-details-descr">
-
-  <div class="jd-tagdata jd-tagdescr"><p>Gets the current delay between key presses when injecting text input.
- See <code><a href="UiObject.html#setText(java.lang.String)">setText(String)</a></code></p></div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Returns</h5>
-      <ul class="nolist"><li>current delay in milliseconds</li></ul>
-  </div>
-  <div class="jd-tagdata">
-     <h5 class="jd-tagtitle">Since</h5>
-     <ul class="nolist"><li>Android API Level 18</li></ul>
-  </div>
-    </div>
-</div>
-
-
-<A NAME="getScrollAcknowledgmentTimeout()"></A>
-
-<div class="jd-details api">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        public
-
-
-
-
-        long
-      </span>
-      <span class="sympad">getScrollAcknowledgmentTimeout</span>
-      <span class="normal">()</span>
-    </h4>
-    <div class="jd-details-descr">
-
-  <div class="jd-tagdata jd-tagdescr"><p>Gets the timeout for waiting for an acknowledgement of an
- uiautomtor scroll swipe action.
-
- The acknowledgment is an <a href="http://developer.android.com/reference/android/view/accessibility/AccessibilityEvent.html">AccessibilityEvent</a>,
- corresponding to the scroll action, that lets the framework determine if
- the scroll action was successful. Generally, this timeout should not be modified.
- See <code><a href="UiScrollable.html">UiScrollable</a></code></p></div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Returns</h5>
-      <ul class="nolist"><li>current timeout in milliseconds</li></ul>
-  </div>
-  <div class="jd-tagdata">
-     <h5 class="jd-tagtitle">Since</h5>
-     <ul class="nolist"><li>Android API Level 18</li></ul>
-  </div>
-    </div>
-</div>
-
-
-<A NAME="getWaitForIdleTimeout()"></A>
-
-<div class="jd-details api">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        public
-
-
-
-
-        long
-      </span>
-      <span class="sympad">getWaitForIdleTimeout</span>
-      <span class="normal">()</span>
-    </h4>
-    <div class="jd-details-descr">
-
-  <div class="jd-tagdata jd-tagdescr"><p>Gets the current timeout used for waiting for the user interface to go
- into an idle state.
-
- By default, all core uiautomator objects except <code><a href="UiDevice.html">UiDevice</a></code> will perform
- this wait before starting to search for the widget specified by the
- object's <code><a href="UiSelector.html">UiSelector</a></code>. Once the idle state is detected or the
- timeout elapses (whichever occurs first), the object will start to wait
- for the selector to find a match.
- See <code><a href="#setWaitForSelectorTimeout(long)">setWaitForSelectorTimeout(long)</a></code></p></div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Returns</h5>
-      <ul class="nolist"><li>Current timeout value in milliseconds</li></ul>
-  </div>
-  <div class="jd-tagdata">
-     <h5 class="jd-tagtitle">Since</h5>
-     <ul class="nolist"><li>Android API Level 18</li></ul>
-  </div>
-    </div>
-</div>
-
-
-<A NAME="getWaitForSelectorTimeout()"></A>
-
-<div class="jd-details api">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        public
-
-
-
-
-        long
-      </span>
-      <span class="sympad">getWaitForSelectorTimeout</span>
-      <span class="normal">()</span>
-    </h4>
-    <div class="jd-details-descr">
-
-  <div class="jd-tagdata jd-tagdescr"><p>Gets the current timeout for waiting for a widget to become visible in
- the user interface so that it can be matched by a selector.
-
- Because user interface content is dynamic, sometimes a widget may not
- be visible immediately and won't be detected by a selector. This timeout
- allows the uiautomator framework to wait for a match to be found, up until
- the timeout elapses.</p></div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Returns</h5>
-      <ul class="nolist"><li>Current timeout value in milliseconds</li></ul>
-  </div>
-  <div class="jd-tagdata">
-     <h5 class="jd-tagtitle">Since</h5>
-     <ul class="nolist"><li>Android API Level 18</li></ul>
-  </div>
-    </div>
-</div>
-
-
-<A NAME="setActionAcknowledgmentTimeout(long)"></A>
-
-<div class="jd-details api">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        public
-
-
-
-
-        <a href="#">Configurator</a>
-      </span>
-      <span class="sympad">setActionAcknowledgmentTimeout</span>
-      <span class="normal">(long timeout)</span>
-    </h4>
-    <div class="jd-details-descr">
-
-  <div class="jd-tagdata jd-tagdescr"><p>Sets the timeout for waiting for an acknowledgment of generic uiautomator
- actions, such as clicks, text setting, and menu presses.
-
- The acknowledgment is an <a href="http://developer.android.com/reference/android/view/accessibility/AccessibilityEvent.html">AccessibilityEvent</a>,
- corresponding to an action, that lets the framework determine if the
- action was successful. Generally, this timeout should not be modified.
- See <code><a href="UiObject.html">UiObject</a></code></p></div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Parameters</h5>
-      <table class="jd-tagtable">
-        <tr>
-          <th>timeout</td>
-          <td>Timeout value in milliseconds</td>
-        </tr>
-      </table>
-  </div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Returns</h5>
-      <ul class="nolist"><li>self</li></ul>
-  </div>
-  <div class="jd-tagdata">
-     <h5 class="jd-tagtitle">Since</h5>
-     <ul class="nolist"><li>Android API Level 18</li></ul>
-  </div>
-    </div>
-</div>
-
-
-<A NAME="setKeyInjectionDelay(long)"></A>
-
-<div class="jd-details api">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        public
-
-
-
-
-        <a href="#">Configurator</a>
-      </span>
-      <span class="sympad">setKeyInjectionDelay</span>
-      <span class="normal">(long delay)</span>
-    </h4>
-    <div class="jd-details-descr">
-
-  <div class="jd-tagdata jd-tagdescr"><p>Sets a delay between key presses when injecting text input.
- See <code><a href="UiObject.html#setText(java.lang.String)">setText(String)</a></code></p></div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Parameters</h5>
-      <table class="jd-tagtable">
-        <tr>
-          <th>delay</td>
-          <td>Delay value in milliseconds</td>
-        </tr>
-      </table>
-  </div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Returns</h5>
-      <ul class="nolist"><li>self</li></ul>
-  </div>
-  <div class="jd-tagdata">
-     <h5 class="jd-tagtitle">Since</h5>
-     <ul class="nolist"><li>Android API Level 18</li></ul>
-  </div>
-    </div>
-</div>
-
-
-<A NAME="setScrollAcknowledgmentTimeout(long)"></A>
-
-<div class="jd-details api">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        public
-
-
-
-
-        <a href="#">Configurator</a>
-      </span>
-      <span class="sympad">setScrollAcknowledgmentTimeout</span>
-      <span class="normal">(long timeout)</span>
-    </h4>
-    <div class="jd-details-descr">
-
-  <div class="jd-tagdata jd-tagdescr"><p>Sets the timeout for waiting for an acknowledgement of an
- uiautomtor scroll swipe action.
-
- The acknowledgment is an <a href="http://developer.android.com/reference/android/view/accessibility/AccessibilityEvent.html">AccessibilityEvent</a>,
- corresponding to the scroll action, that lets the framework determine if
- the scroll action was successful. Generally, this timeout should not be modified.
- See <code><a href="UiScrollable.html">UiScrollable</a></code></p></div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Parameters</h5>
-      <table class="jd-tagtable">
-        <tr>
-          <th>timeout</td>
-          <td>Timeout value in milliseconds</td>
-        </tr>
-      </table>
-  </div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Returns</h5>
-      <ul class="nolist"><li>self</li></ul>
-  </div>
-  <div class="jd-tagdata">
-     <h5 class="jd-tagtitle">Since</h5>
-     <ul class="nolist"><li>Android API Level 18</li></ul>
-  </div>
-    </div>
-</div>
-
-
-<A NAME="setWaitForIdleTimeout(long)"></A>
-
-<div class="jd-details api">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        public
-
-
-
-
-        <a href="#">Configurator</a>
-      </span>
-      <span class="sympad">setWaitForIdleTimeout</span>
-      <span class="normal">(long timeout)</span>
-    </h4>
-    <div class="jd-details-descr">
-
-  <div class="jd-tagdata jd-tagdescr"><p>Sets the timeout for waiting for the user interface to go into an idle
- state before starting a uiautomator action.
-
- By default, all core uiautomator objects except <code><a href="UiDevice.html">UiDevice</a></code> will perform
- this wait before starting to search for the widget specified by the
- object's <code><a href="UiSelector.html">UiSelector</a></code>. Once the idle state is detected or the
- timeout elapses (whichever occurs first), the object will start to wait
- for the selector to find a match.
- See <code><a href="#setWaitForSelectorTimeout(long)">setWaitForSelectorTimeout(long)</a></code></p></div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Parameters</h5>
-      <table class="jd-tagtable">
-        <tr>
-          <th>timeout</td>
-          <td>Timeout value in milliseconds</td>
-        </tr>
-      </table>
-  </div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Returns</h5>
-      <ul class="nolist"><li>self</li></ul>
-  </div>
-  <div class="jd-tagdata">
-     <h5 class="jd-tagtitle">Since</h5>
-     <ul class="nolist"><li>Android API Level 18</li></ul>
-  </div>
-    </div>
-</div>
-
-
-<A NAME="setWaitForSelectorTimeout(long)"></A>
-
-<div class="jd-details api">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        public
-
-
-
-
-        <a href="#">Configurator</a>
-      </span>
-      <span class="sympad">setWaitForSelectorTimeout</span>
-      <span class="normal">(long timeout)</span>
-    </h4>
-    <div class="jd-details-descr">
-
-  <div class="jd-tagdata jd-tagdescr"><p>Sets the timeout for waiting for a widget to become visible in the user
- interface so that it can be matched by a selector.
-
- Because user interface content is dynamic, sometimes a widget may not
- be visible immediately and won't be detected by a selector. This timeout
- allows the uiautomator framework to wait for a match to be found, up until
- the timeout elapses.</p></div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Parameters</h5>
-      <table class="jd-tagtable">
-        <tr>
-          <th>timeout</td>
-          <td>Timeout value in milliseconds.</td>
-        </tr>
-      </table>
-  </div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Returns</h5>
-      <ul class="nolist"><li>self</li></ul>
-  </div>
-  <div class="jd-tagdata">
-     <h5 class="jd-tagtitle">Since</h5>
-     <ul class="nolist"><li>Android API Level 18</li></ul>
-  </div>
-    </div>
-
-
-
-
-
-<!-- ========= METHOD DETAIL ======== -->
-
-
-
-
diff --git a/docs/html/tools/help/uiautomator/IAutomationSupport.jd b/docs/html/tools/help/uiautomator/IAutomationSupport.jd
deleted file mode 100644
index 1e9e301..0000000
--- a/docs/html/tools/help/uiautomator/IAutomationSupport.jd
+++ /dev/null
@@ -1,82 +0,0 @@
-page.title=IAutomationSupport
-parent.title=uiautomator
-parent.link=index.html
-@jd:body
-<style>
-    h4.jd-details-title {background-color: #DEE8F1;}
-</style>
-
-<h2>Class Overview</h2>
-<p>Provides auxiliary support for running test cases
-
-</p>
-
-<h2>Summary</h2>
-
-<!-- ========== METHOD SUMMARY =========== -->
-<table id="pubmethods" class="jd-sumtable"><tr><th colspan="12">Public Methods</th></tr>
-
-
-
-	 
-    <tr class="api" >
-        <td class="jd-typecol">
-            abstract
-            
-            
-            
-            
-            void
-        </td>
-        <td class="jd-linkcol" width="100%">
-        <span class="sympad"><a href="#sendStatus(int, android.os.Bundle)">sendStatus</a></span>(int resultCode, Bundle status)
-        
-        <div class="jd-descrdiv">Allows the running test cases to send out interim status</div>
-  
-  </td></tr>
-
-
-
-</table>
-
-
-
-
-
-
-
-</div><!-- jd-descr (summary) -->
-
-<!-- ========= CONSTRUCTOR DETAIL ======== -->
-<!-- Protected ctors -->
-
-
-
-<!-- ========= METHOD DETAIL ======== -->
-<!-- Public methdos -->
-
-<h2>Public Methods</h2>
-
-
-
-<a id="sendStatus(int, android.os.Bundle)"></a>
-
-<div class="jd-details api "> 
-    <h4 class="jd-details-title">
-      <span class="normal">
-        public 
-         
-         
-        abstract 
-         
-        void
-      </span>
-      <span class="sympad">sendStatus</span>
-      <span class="normal">(int resultCode, Bundle status)</span>
-    </h4>
-</div>
-        
-<div class="jd-details-descr">
-  <div class="jd-tagdata jd-tagdescr"><p>Allows the running test cases to send out interim status</p></div>
-</div>
-
diff --git a/docs/html/tools/help/uiautomator/UiAutomatorTestCase.jd b/docs/html/tools/help/uiautomator/UiAutomatorTestCase.jd
deleted file mode 100644
index bd108ab..0000000
--- a/docs/html/tools/help/uiautomator/UiAutomatorTestCase.jd
+++ /dev/null
@@ -1,1381 +0,0 @@
-page.title=UiAutomatorTestCase
-parent.title=uiautomator
-parent.link=index.html
-@jd:body
-<style>
-    h4.jd-details-title {background-color: #DEE8F1;}
-</style>
-<h2>Class Overview</h2>
-<p>UI automation tests should extend this class. This class provides access
- to the following:
-<ul>
-<li><code><a href="UiDevice.html">UiDevice</a></code> instance</li>
-<li>Bundle for command line parameters</li>
-</ul>
-</p>
-
-<div class="jd-descr">
-
-
-<h2>Summary</h2>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-<!-- ======== CONSTRUCTOR SUMMARY ======== -->
-<table id="pubctors" class="jd-sumtable"><tr><th colspan="12">Public Constructors</th></tr>
-
-
-
-	 
-    <tr class="api" >
-        <td class="jd-typecol">
-            
-            
-            
-            
-            
-            
-        </td>
-        <td class="jd-linkcol" width="100%">
-        <span class="sympad"><a href="#UiAutomatorTestCase()">UiAutomatorTestCase</a></span>()
-        
-  </td></tr>
-
-
-
-</table>
-
-
-
-
-
-
-<!-- ========== METHOD SUMMARY =========== -->
-<table id="pubmethods" class="jd-sumtable"><tr><th colspan="12">Public Methods</th></tr>
-
-
-
-	 
-    <tr class="api" >
-        <td class="jd-typecol">
-            
-            
-            
-            
-            
-            <a href="IAutomationSupport.html">IAutomationSupport</a>
-        </td>
-        <td class="jd-linkcol" width="100%">
-        <span class="sympad"><a href="#getAutomationSupport()">getAutomationSupport</a></span>()
-        
-        <div class="jd-descrdiv">Provides support for running tests to report interim status</div>
-  
-  </td></tr>
-
-
-	 
-    <tr class="api" >
-        <td class="jd-typecol">
-            
-            
-            
-            
-            
-            Bundle
-        </td>
-        <td class="jd-linkcol" width="100%">
-        <span class="sympad"><a href="#getParams()">getParams</a></span>()
-        
-        <div class="jd-descrdiv">Get command line parameters.</div>
-  
-  </td></tr>
-
-
-	 
-    <tr class="api" >
-        <td class="jd-typecol">
-            
-            
-            
-            
-            
-            <a href="UiDevice.html">UiDevice</a>
-        </td>
-        <td class="jd-linkcol" width="100%">
-        <span class="sympad"><a href="#getUiDevice()">getUiDevice</a></span>()
-        
-        <div class="jd-descrdiv">Get current instance of <code><a href="UiDevice.html">UiDevice</a></code>.</div>
-  
-  </td></tr>
-
-
-	 
-    <tr class="api" >
-        <td class="jd-typecol">
-            
-            
-            
-            
-            
-            void
-        </td>
-        <td class="jd-linkcol" width="100%">
-        <span class="sympad"><a href="#sleep(long)">sleep</a></span>(long ms)
-        
-        <div class="jd-descrdiv">Calls <code><a href="null#sleep(long)">sleep(long)</a></code> to sleep</div>
-  
-  </td></tr>
-
-
-
-</table>
-
-
-
-
-
-
-
-<!-- ========== METHOD SUMMARY =========== -->
-<table id="inhmethods" class="jd-sumtable"><tr><th>
-  <a href="#" class="toggle-all" onclick="return toggleAllInherited(this, null)">[Expand]</a>
-  <div style="clear:left;">Inherited Methods</div></th></tr>
-
-
-<tr class="api apilevel-" >
-<td colspan="12">
-  <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-junit.framework.TestCase" class="jd-expando-trigger closed"
-          ><img id="inherited-methods-junit.framework.TestCase-trigger"
-          src="../../../../../assets/images/styles/disclosure_down.png"
-          class="jd-expando-trigger-img" /></a>
-From class
-
-  junit.framework.TestCase
-
-<div id="inherited-methods-junit.framework.TestCase">
-  <div id="inherited-methods-junit.framework.TestCase-list"
-        class="jd-inheritedlinks">
-  </div>
-  <div id="inherited-methods-junit.framework.TestCase-summary" style="display: none;">
-    <table class="jd-sumtable-expando">
-    
-
-
-	 
-    <tr class="api" >
-        <td class="jd-typecol">
-            
-            
-            
-            
-            
-            int
-        </td>
-        <td class="jd-linkcol" width="100%">
-        <span class="sympad">countTestCases</span>()
-        
-  </td></tr>
-
-
-	 
-    <tr class="api" >
-        <td class="jd-typecol">
-            
-            
-            
-            
-            
-            String
-        </td>
-        <td class="jd-linkcol" width="100%">
-        <span class="sympad">getName</span>()
-        
-  </td></tr>
-
-
-	 
-    <tr class="api" >
-        <td class="jd-typecol">
-            
-            
-            
-            
-            
-            TestResult
-        </td>
-        <td class="jd-linkcol" width="100%">
-        <span class="sympad">run</span>()
-        
-  </td></tr>
-
-
-	 
-    <tr class="api" >
-        <td class="jd-typecol">
-            
-            
-            
-            
-            
-            void
-        </td>
-        <td class="jd-linkcol" width="100%">
-        <span class="sympad">run</span>(TestResult arg0)
-        
-  </td></tr>
-
-
-	 
-    <tr class="api" >
-        <td class="jd-typecol">
-            
-            
-            
-            
-            
-            void
-        </td>
-        <td class="jd-linkcol" width="100%">
-        <span class="sympad">runBare</span>()
-        
-  </td></tr>
-
-
-	 
-    <tr class="api" >
-        <td class="jd-typecol">
-            
-            
-            
-            
-            
-            void
-        </td>
-        <td class="jd-linkcol" width="100%">
-        <span class="sympad">setName</span>(String arg0)
-        
-  </td></tr>
-
-
-	 
-    <tr class="api" >
-        <td class="jd-typecol">
-            
-            
-            
-            
-            
-            String
-        </td>
-        <td class="jd-linkcol" width="100%">
-        <span class="sympad">toString</span>()
-        
-  </td></tr>
-
-
-</table>
-  </div>
-</div>
-</td></tr>
-
-
-
-<tr class="api apilevel-" >
-<td colspan="12">
-  <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-junit.framework.Assert" class="jd-expando-trigger closed"
-          ><img id="inherited-methods-junit.framework.Assert-trigger"
-          src="../../../../../assets/images/styles/disclosure_down.png"
-          class="jd-expando-trigger-img" /></a>
-From class
-
-  junit.framework.Assert
-
-<div id="inherited-methods-junit.framework.Assert">
-  <div id="inherited-methods-junit.framework.Assert-list"
-        class="jd-inheritedlinks">
-  </div>
-  <div id="inherited-methods-junit.framework.Assert-summary" style="display: none;">
-    <table class="jd-sumtable-expando">
-    
-
-
-	 
-    <tr class="api" >
-        <td class="jd-typecol">
-            
-            
-            
-            static
-            
-            void
-        </td>
-        <td class="jd-linkcol" width="100%">
-        <span class="sympad">assertEquals</span>(short arg0, short arg1)
-        
-  </td></tr>
-
-
-	 
-    <tr class="api" >
-        <td class="jd-typecol">
-            
-            
-            
-            static
-            
-            void
-        </td>
-        <td class="jd-linkcol" width="100%">
-        <span class="sympad">assertEquals</span>(String arg0, int arg1, int arg2)
-        
-  </td></tr>
-
-
-	 
-    <tr class="api" >
-        <td class="jd-typecol">
-            
-            
-            
-            static
-            
-            void
-        </td>
-        <td class="jd-linkcol" width="100%">
-        <span class="sympad">assertEquals</span>(String arg0, short arg1, short arg2)
-        
-  </td></tr>
-
-
-	 
-    <tr class="api" >
-        <td class="jd-typecol">
-            
-            
-            
-            static
-            
-            void
-        </td>
-        <td class="jd-linkcol" width="100%">
-        <span class="sympad">assertEquals</span>(char arg0, char arg1)
-        
-  </td></tr>
-
-
-	 
-    <tr class="api" >
-        <td class="jd-typecol">
-            
-            
-            
-            static
-            
-            void
-        </td>
-        <td class="jd-linkcol" width="100%">
-        <span class="sympad">assertEquals</span>(String arg0, String arg1, String arg2)
-        
-  </td></tr>
-
-
-	 
-    <tr class="api" >
-        <td class="jd-typecol">
-            
-            
-            
-            static
-            
-            void
-        </td>
-        <td class="jd-linkcol" width="100%">
-        <span class="sympad">assertEquals</span>(int arg0, int arg1)
-        
-  </td></tr>
-
-
-	 
-    <tr class="api" >
-        <td class="jd-typecol">
-            
-            
-            
-            static
-            
-            void
-        </td>
-        <td class="jd-linkcol" width="100%">
-        <span class="sympad">assertEquals</span>(String arg0, double arg1, double arg2, double arg3)
-        
-  </td></tr>
-
-
-	 
-    <tr class="api" >
-        <td class="jd-typecol">
-            
-            
-            
-            static
-            
-            void
-        </td>
-        <td class="jd-linkcol" width="100%">
-        <span class="sympad">assertEquals</span>(String arg0, long arg1, long arg2)
-        
-  </td></tr>
-
-
-	 
-    <tr class="api" >
-        <td class="jd-typecol">
-            
-            
-            
-            static
-            
-            void
-        </td>
-        <td class="jd-linkcol" width="100%">
-        <span class="sympad">assertEquals</span>(byte arg0, byte arg1)
-        
-  </td></tr>
-
-
-	 
-    <tr class="api" >
-        <td class="jd-typecol">
-            
-            
-            
-            static
-            
-            void
-        </td>
-        <td class="jd-linkcol" width="100%">
-        <span class="sympad">assertEquals</span>(Object arg0, Object arg1)
-        
-  </td></tr>
-
-
-	 
-    <tr class="api" >
-        <td class="jd-typecol">
-            
-            
-            
-            static
-            
-            void
-        </td>
-        <td class="jd-linkcol" width="100%">
-        <span class="sympad">assertEquals</span>(boolean arg0, boolean arg1)
-        
-  </td></tr>
-
-
-	 
-    <tr class="api" >
-        <td class="jd-typecol">
-            
-            
-            
-            static
-            
-            void
-        </td>
-        <td class="jd-linkcol" width="100%">
-        <span class="sympad">assertEquals</span>(String arg0, float arg1, float arg2, float arg3)
-        
-  </td></tr>
-
-
-	 
-    <tr class="api" >
-        <td class="jd-typecol">
-            
-            
-            
-            static
-            
-            void
-        </td>
-        <td class="jd-linkcol" width="100%">
-        <span class="sympad">assertEquals</span>(String arg0, boolean arg1, boolean arg2)
-        
-  </td></tr>
-
-
-	 
-    <tr class="api" >
-        <td class="jd-typecol">
-            
-            
-            
-            static
-            
-            void
-        </td>
-        <td class="jd-linkcol" width="100%">
-        <span class="sympad">assertEquals</span>(String arg0, String arg1)
-        
-  </td></tr>
-
-
-	 
-    <tr class="api" >
-        <td class="jd-typecol">
-            
-            
-            
-            static
-            
-            void
-        </td>
-        <td class="jd-linkcol" width="100%">
-        <span class="sympad">assertEquals</span>(float arg0, float arg1, float arg2)
-        
-  </td></tr>
-
-
-	 
-    <tr class="api" >
-        <td class="jd-typecol">
-            
-            
-            
-            static
-            
-            void
-        </td>
-        <td class="jd-linkcol" width="100%">
-        <span class="sympad">assertEquals</span>(String arg0, byte arg1, byte arg2)
-        
-  </td></tr>
-
-
-	 
-    <tr class="api" >
-        <td class="jd-typecol">
-            
-            
-            
-            static
-            
-            void
-        </td>
-        <td class="jd-linkcol" width="100%">
-        <span class="sympad">assertEquals</span>(double arg0, double arg1, double arg2)
-        
-  </td></tr>
-
-
-	 
-    <tr class="api" >
-        <td class="jd-typecol">
-            
-            
-            
-            static
-            
-            void
-        </td>
-        <td class="jd-linkcol" width="100%">
-        <span class="sympad">assertEquals</span>(String arg0, char arg1, char arg2)
-        
-  </td></tr>
-
-
-	 
-    <tr class="api" >
-        <td class="jd-typecol">
-            
-            
-            
-            static
-            
-            void
-        </td>
-        <td class="jd-linkcol" width="100%">
-        <span class="sympad">assertEquals</span>(String arg0, Object arg1, Object arg2)
-        
-  </td></tr>
-
-
-	 
-    <tr class="api" >
-        <td class="jd-typecol">
-            
-            
-            
-            static
-            
-            void
-        </td>
-        <td class="jd-linkcol" width="100%">
-        <span class="sympad">assertEquals</span>(long arg0, long arg1)
-        
-  </td></tr>
-
-
-	 
-    <tr class="api" >
-        <td class="jd-typecol">
-            
-            
-            
-            static
-            
-            void
-        </td>
-        <td class="jd-linkcol" width="100%">
-        <span class="sympad">assertFalse</span>(String arg0, boolean arg1)
-        
-  </td></tr>
-
-
-	 
-    <tr class="api" >
-        <td class="jd-typecol">
-            
-            
-            
-            static
-            
-            void
-        </td>
-        <td class="jd-linkcol" width="100%">
-        <span class="sympad">assertFalse</span>(boolean arg0)
-        
-  </td></tr>
-
-
-	 
-    <tr class="api" >
-        <td class="jd-typecol">
-            
-            
-            
-            static
-            
-            void
-        </td>
-        <td class="jd-linkcol" width="100%">
-        <span class="sympad">assertNotNull</span>(String arg0, Object arg1)
-        
-  </td></tr>
-
-
-	 
-    <tr class="api" >
-        <td class="jd-typecol">
-            
-            
-            
-            static
-            
-            void
-        </td>
-        <td class="jd-linkcol" width="100%">
-        <span class="sympad">assertNotNull</span>(Object arg0)
-        
-  </td></tr>
-
-
-	 
-    <tr class="api" >
-        <td class="jd-typecol">
-            
-            
-            
-            static
-            
-            void
-        </td>
-        <td class="jd-linkcol" width="100%">
-        <span class="sympad">assertNotSame</span>(Object arg0, Object arg1)
-        
-  </td></tr>
-
-
-	 
-    <tr class="api" >
-        <td class="jd-typecol">
-            
-            
-            
-            static
-            
-            void
-        </td>
-        <td class="jd-linkcol" width="100%">
-        <span class="sympad">assertNotSame</span>(String arg0, Object arg1, Object arg2)
-        
-  </td></tr>
-
-
-	 
-    <tr class="api" >
-        <td class="jd-typecol">
-            
-            
-            
-            static
-            
-            void
-        </td>
-        <td class="jd-linkcol" width="100%">
-        <span class="sympad">assertNull</span>(Object arg0)
-        
-  </td></tr>
-
-
-	 
-    <tr class="api" >
-        <td class="jd-typecol">
-            
-            
-            
-            static
-            
-            void
-        </td>
-        <td class="jd-linkcol" width="100%">
-        <span class="sympad">assertNull</span>(String arg0, Object arg1)
-        
-  </td></tr>
-
-
-	 
-    <tr class="api" >
-        <td class="jd-typecol">
-            
-            
-            
-            static
-            
-            void
-        </td>
-        <td class="jd-linkcol" width="100%">
-        <span class="sympad">assertSame</span>(Object arg0, Object arg1)
-        
-  </td></tr>
-
-
-	 
-    <tr class="api" >
-        <td class="jd-typecol">
-            
-            
-            
-            static
-            
-            void
-        </td>
-        <td class="jd-linkcol" width="100%">
-        <span class="sympad">assertSame</span>(String arg0, Object arg1, Object arg2)
-        
-  </td></tr>
-
-
-	 
-    <tr class="api" >
-        <td class="jd-typecol">
-            
-            
-            
-            static
-            
-            void
-        </td>
-        <td class="jd-linkcol" width="100%">
-        <span class="sympad">assertTrue</span>(String arg0, boolean arg1)
-        
-  </td></tr>
-
-
-	 
-    <tr class="api" >
-        <td class="jd-typecol">
-            
-            
-            
-            static
-            
-            void
-        </td>
-        <td class="jd-linkcol" width="100%">
-        <span class="sympad">assertTrue</span>(boolean arg0)
-        
-  </td></tr>
-
-
-	 
-    <tr class="api" >
-        <td class="jd-typecol">
-            
-            
-            
-            static
-            
-            void
-        </td>
-        <td class="jd-linkcol" width="100%">
-        <span class="sympad">fail</span>(String arg0)
-        
-  </td></tr>
-
-
-	 
-    <tr class="api" >
-        <td class="jd-typecol">
-            
-            
-            
-            static
-            
-            void
-        </td>
-        <td class="jd-linkcol" width="100%">
-        <span class="sympad">fail</span>()
-        
-  </td></tr>
-
-
-	 
-    <tr class="api" >
-        <td class="jd-typecol">
-            
-            
-            
-            static
-            
-            void
-        </td>
-        <td class="jd-linkcol" width="100%">
-        <span class="sympad">failNotEquals</span>(String arg0, Object arg1, Object arg2)
-        
-  </td></tr>
-
-
-	 
-    <tr class="api" >
-        <td class="jd-typecol">
-            
-            
-            
-            static
-            
-            void
-        </td>
-        <td class="jd-linkcol" width="100%">
-        <span class="sympad">failNotSame</span>(String arg0, Object arg1, Object arg2)
-        
-  </td></tr>
-
-
-	 
-    <tr class="api" >
-        <td class="jd-typecol">
-            
-            
-            
-            static
-            
-            void
-        </td>
-        <td class="jd-linkcol" width="100%">
-        <span class="sympad">failSame</span>(String arg0)
-        
-  </td></tr>
-
-
-	 
-    <tr class="api" >
-        <td class="jd-typecol">
-            
-            
-            
-            static
-            
-            String
-        </td>
-        <td class="jd-linkcol" width="100%">
-        <span class="sympad">format</span>(String arg0, Object arg1, Object arg2)
-        
-  </td></tr>
-
-
-</table>
-  </div>
-</div>
-</td></tr>
-
-
-
-<tr class="api apilevel-" >
-<td colspan="12">
-  <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
-          ><img id="inherited-methods-java.lang.Object-trigger"
-          src="../../../../../assets/images/styles/disclosure_down.png"
-          class="jd-expando-trigger-img" /></a>
-From class
-
-  java.lang.Object
-
-<div id="inherited-methods-java.lang.Object">
-  <div id="inherited-methods-java.lang.Object-list"
-        class="jd-inheritedlinks">
-  </div>
-  <div id="inherited-methods-java.lang.Object-summary" style="display: none;">
-    <table class="jd-sumtable-expando">
-    
-
-
-	 
-    <tr class="api" >
-        <td class="jd-typecol">
-            
-            
-            
-            
-            
-            boolean
-        </td>
-        <td class="jd-linkcol" width="100%">
-        <span class="sympad">equals</span>(Object arg0)
-        
-  </td></tr>
-
-
-	 
-    <tr class="api" >
-        <td class="jd-typecol">
-            
-            
-            final
-            
-            
-            Class&lt;?&gt;
-        </td>
-        <td class="jd-linkcol" width="100%">
-        <span class="sympad">getClass</span>()
-        
-  </td></tr>
-
-
-	 
-    <tr class="api" >
-        <td class="jd-typecol">
-            
-            
-            
-            
-            
-            int
-        </td>
-        <td class="jd-linkcol" width="100%">
-        <span class="sympad">hashCode</span>()
-        
-  </td></tr>
-
-
-	 
-    <tr class="api" >
-        <td class="jd-typecol">
-            
-            
-            final
-            
-            
-            void
-        </td>
-        <td class="jd-linkcol" width="100%">
-        <span class="sympad">notify</span>()
-        
-  </td></tr>
-
-
-	 
-    <tr class="api" >
-        <td class="jd-typecol">
-            
-            
-            final
-            
-            
-            void
-        </td>
-        <td class="jd-linkcol" width="100%">
-        <span class="sympad">notifyAll</span>()
-        
-  </td></tr>
-
-
-	 
-    <tr class="api" >
-        <td class="jd-typecol">
-            
-            
-            
-            
-            
-            String
-        </td>
-        <td class="jd-linkcol" width="100%">
-        <span class="sympad">toString</span>()
-        
-  </td></tr>
-
-
-	 
-    <tr class="api" >
-        <td class="jd-typecol">
-            
-            
-            final
-            
-            
-            void
-        </td>
-        <td class="jd-linkcol" width="100%">
-        <span class="sympad">wait</span>()
-        
-  </td></tr>
-
-
-	 
-    <tr class="api" >
-        <td class="jd-typecol">
-            
-            
-            final
-            
-            
-            void
-        </td>
-        <td class="jd-linkcol" width="100%">
-        <span class="sympad">wait</span>(long arg0, int arg1)
-        
-  </td></tr>
-
-
-	 
-    <tr class="api" >
-        <td class="jd-typecol">
-            
-            
-            final
-            
-            
-            void
-        </td>
-        <td class="jd-linkcol" width="100%">
-        <span class="sympad">wait</span>(long arg0)
-        
-  </td></tr>
-
-
-</table>
-  </div>
-</div>
-</td></tr>
-
-
-
-<tr class="api apilevel-" >
-<td colspan="12">
-  <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-junit.framework.Test" class="jd-expando-trigger closed"
-          ><img id="inherited-methods-junit.framework.Test-trigger"
-          src="../../../../../assets/images/styles/disclosure_down.png"
-          class="jd-expando-trigger-img" /></a>
-From interface
-
-  junit.framework.Test
-
-<div id="inherited-methods-junit.framework.Test">
-  <div id="inherited-methods-junit.framework.Test-list"
-        class="jd-inheritedlinks">
-  </div>
-  <div id="inherited-methods-junit.framework.Test-summary" style="display: none;">
-    <table class="jd-sumtable-expando">
-    
-
-
-	 
-    <tr class="api" >
-        <td class="jd-typecol">
-            abstract
-            
-            
-            
-            
-            int
-        </td>
-        <td class="jd-linkcol" width="100%">
-        <span class="sympad">countTestCases</span>()
-        
-  </td></tr>
-
-
-	 
-    <tr class="api" >
-        <td class="jd-typecol">
-            abstract
-            
-            
-            
-            
-            void
-        </td>
-        <td class="jd-linkcol" width="100%">
-        <span class="sympad">run</span>(TestResult arg0)
-        
-  </td></tr>
-
-
-</table>
-  </div>
-</div>
-</td></tr>
-
-
-</table>
-
-
-</div><!-- jd-descr (summary) -->
-
-<!-- Details -->
-
-
-
-
-
-
-
-
-<!-- XML Attributes -->
-
-
-<!-- Enum Values -->
-
-
-<!-- Constants -->
-
-
-<!-- Fields -->
-
-
-<!-- Public ctors -->
-
-
-<!-- ========= CONSTRUCTOR DETAIL ======== -->
-<h2>Public Constructors</h2>
-
-
-
-<a id="UiAutomatorTestCase()"></a>
-
-<div class="jd-details api "> 
-    <h4 class="jd-details-title">
-      <span class="normal">
-        public 
-         
-         
-         
-         
-        
-      </span>
-      <span class="sympad">UiAutomatorTestCase</span>
-      <span class="normal">()</span>
-    </h4>
-      <div class="api-level">
-        <div>
-
-</div>
-        
-  
-
-      </div>
-    <div class="jd-details-descr">
-      
-  <div class="jd-tagdata jd-tagdescr"><p></p></div>
-
-    </div>
-</div>
-
-
-
-
-
-<!-- ========= CONSTRUCTOR DETAIL ======== -->
-<!-- Protected ctors -->
-
-
-
-<!-- ========= METHOD DETAIL ======== -->
-<!-- Public methdos -->
-
-<h2>Public Methods</h2>
-
-
-
-<a id="getAutomationSupport()"></a>
-
-<div class="jd-details api "> 
-    <h4 class="jd-details-title">
-      <span class="normal">
-        public 
-         
-         
-         
-         
-        <a href="IAutomationSupport.html">IAutomationSupport</a>
-      </span>
-      <span class="sympad">getAutomationSupport</span>
-      <span class="normal">()</span>
-    </h4>
-      <div class="api-level">
-        <div>
-
-</div>
-        
-  
-
-      </div>
-    <div class="jd-details-descr">
-      
-  <div class="jd-tagdata jd-tagdescr"><p>Provides support for running tests to report interim status</p></div>
-
-    </div>
-</div>
-
-
-<a id="getParams()"></a>
-
-<div class="jd-details api "> 
-    <h4 class="jd-details-title">
-      <span class="normal">
-        public 
-         
-         
-         
-         
-        Bundle
-      </span>
-      <span class="sympad">getParams</span>
-      <span class="normal">()</span>
-    </h4>
-      <div class="api-level">
-        <div>
-
-</div>
-        
-  
-
-      </div>
-    <div class="jd-details-descr">
-      
-  <div class="jd-tagdata jd-tagdescr"><p>Get command line parameters. On the command line when passing <code>-e key value</code>
- pairs, the Bundle will have the key value pairs conveniently available to the
- tests.
-</p></div>
-
-    </div>
-</div>
-
-
-<a id="getUiDevice()"></a>
-
-<div class="jd-details api "> 
-    <h4 class="jd-details-title">
-      <span class="normal">
-        public 
-         
-         
-         
-         
-        <a href="UiDevice.html">UiDevice</a>
-      </span>
-      <span class="sympad">getUiDevice</span>
-      <span class="normal">()</span>
-    </h4>
-      <div class="api-level">
-        <div>
-
-</div>
-        
-  
-
-      </div>
-    <div class="jd-details-descr">
-      
-  <div class="jd-tagdata jd-tagdescr"><p>Get current instance of <code><a href="UiDevice.html">UiDevice</a></code>. Works similar to calling the static
- <code><a href="UiDevice.html#getInstance()">getInstance()</a></code> from anywhere in the test classes.
-</p></div>
-
-    </div>
-</div>
-
-
-<a id="sleep(long)"></a>
-
-<div class="jd-details api "> 
-    <h4 class="jd-details-title">
-      <span class="normal">
-        public 
-         
-         
-         
-         
-        void
-      </span>
-      <span class="sympad">sleep</span>
-      <span class="normal">(long ms)</span>
-    </h4>
-      <div class="api-level">
-        <div>
-
-</div>
-        
-  
-
-      </div>
-    <div class="jd-details-descr">
-      
-  <div class="jd-tagdata jd-tagdescr"><p>Calls <code><a href="null#sleep(long)">sleep(long)</a></code> to sleep</p></div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Parameters</h5>
-      <table class="jd-tagtable">
-        <tr>
-          <th>ms</th>
-          <td>is in milliseconds.
-</td>
-        </tr>
-      </table>
-  </div>
-
-    </div>
-</div>
-
diff --git a/docs/html/tools/help/uiautomator/UiCollection.jd b/docs/html/tools/help/uiautomator/UiCollection.jd
deleted file mode 100644
index 78c5254..0000000
--- a/docs/html/tools/help/uiautomator/UiCollection.jd
+++ /dev/null
@@ -1,1268 +0,0 @@
-page.title=UiCollection
-parent.title=uiautomator
-parent.link=index.html
-@jd:body
-<style>
-    h4.jd-details-title {background-color: #DEE8F1;}
-</style>
-<p>Used to enumerate a container's user interface (UI) elements for the purpose of counting,
- or targeting a sub elements by a child's text or description.
-</p>
-
-
-<h2>Summary</h2>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-<!-- ======== CONSTRUCTOR SUMMARY ======== -->
-<table id="pubctors" class="jd-sumtable"><tr><th colspan="12">Public Constructors</th></tr>
-
-
-
-	 
-    <tr class="api" >
-        <td class="jd-typecol">
-            
-            
-            
-            
-            
-            
-        </td>
-        <td class="jd-linkcol" width="100%">
-        <span class="sympad"><a href="#UiCollection(com.android.uiautomator.core.UiSelector)">UiCollection</a></span>(<a href="UiSelector.html">UiSelector</a> selector)
-        
-  </td></tr>
-
-
-
-</table>
-
-
-
-
-
-
-<!-- ========== METHOD SUMMARY =========== -->
-<table id="pubmethods" class="jd-sumtable"><tr><th colspan="12">Public Methods</th></tr>
-
-
-
-	 
-    <tr class="api" >
-        <td class="jd-typecol">
-            
-            
-            
-            
-            
-            <a href="UiObject.html">UiObject</a>
-        </td>
-        <td class="jd-linkcol" width="100%">
-        <span class="sympad"><a href="#getChildByDescription(com.android.uiautomator.core.UiSelector, java.lang.String)">getChildByDescription</a></span>(<a href="UiSelector.html">UiSelector</a> childPattern, String text)
-        
-        <div class="jd-descrdiv">Searches for child UI element within the constraints of this  <code><a href="UiSelector.html">UiSelector</a></code>
- selector.</div>
-  
-  </td></tr>
-
-
-	 
-    <tr class="api" >
-        <td class="jd-typecol">
-            
-            
-            
-            
-            
-            <a href="UiObject.html">UiObject</a>
-        </td>
-        <td class="jd-linkcol" width="100%">
-        <span class="sympad"><a href="#getChildByInstance(com.android.uiautomator.core.UiSelector, int)">getChildByInstance</a></span>(<a href="UiSelector.html">UiSelector</a> childPattern, int instance)
-        
-        <div class="jd-descrdiv">Searches for child UI element within the constraints of this  <code><a href="UiSelector.html">UiSelector</a></code>.</div>
-  
-  </td></tr>
-
-
-	 
-    <tr class="api" >
-        <td class="jd-typecol">
-            
-            
-            
-            
-            
-            <a href="UiObject.html">UiObject</a>
-        </td>
-        <td class="jd-linkcol" width="100%">
-        <span class="sympad"><a href="#getChildByText(com.android.uiautomator.core.UiSelector, java.lang.String)">getChildByText</a></span>(<a href="UiSelector.html">UiSelector</a> childPattern, String text)
-        
-        <div class="jd-descrdiv">Searches for child UI element within the constraints of this  <code><a href="UiSelector.html">UiSelector</a></code>.</div>
-  
-  </td></tr>
-
-
-	 
-    <tr class="api" >
-        <td class="jd-typecol">
-            
-            
-            
-            
-            
-            int
-        </td>
-        <td class="jd-linkcol" width="100%">
-        <span class="sympad"><a href="#getChildCount(com.android.uiautomator.core.UiSelector)">getChildCount</a></span>(<a href="UiSelector.html">UiSelector</a> childPattern)
-        
-        <div class="jd-descrdiv">Counts child UI element instances matching the <code>childPattern</code>
- argument.</div>
-  
-  </td></tr>
-
-
-
-</table>
-
-
-
-
-
-
-
-<!-- ========== METHOD SUMMARY =========== -->
-<table id="inhmethods" class="jd-sumtable"><tr><th>
-  <a href="#" class="toggle-all" onclick="return toggleAllInherited(this, null)">[Expand]</a>
-  <div style="clear:left;">Inherited Methods</div></th></tr>
-
-
-<tr class="api apilevel-" >
-<td colspan="12">
-  <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-com.android.uiautomator.core.UiObject" class="jd-expando-trigger closed"
-          ><img id="inherited-methods-com.android.uiautomator.core.UiObject-trigger"
-          src="../../../../../assets/images/styles/disclosure_down.png"
-          class="jd-expando-trigger-img" /></a>
-From class
-
-  <a href="UiObject.html">com.android.uiautomator.core.UiObject</a>
-
-<div id="inherited-methods-com.android.uiautomator.core.UiObject">
-  <div id="inherited-methods-com.android.uiautomator.core.UiObject-list"
-        class="jd-inheritedlinks">
-  </div>
-  <div id="inherited-methods-com.android.uiautomator.core.UiObject-summary" style="display: none;">
-    <table class="jd-sumtable-expando">
-    
-
-
-	 
-    <tr class="api" >
-        <td class="jd-typecol">
-            
-            
-            
-            
-            
-            void
-        </td>
-        <td class="jd-linkcol" width="100%">
-        <span class="sympad"><a href="UiObject.html#clearTextField()">clearTextField</a></span>()
-        
-        <div class="jd-descrdiv">Clears the existing text contents in an editable field.</div>
-  
-  </td></tr>
-
-
-	 
-    <tr class="api" >
-        <td class="jd-typecol">
-            
-            
-            
-            
-            
-            boolean
-        </td>
-        <td class="jd-linkcol" width="100%">
-        <span class="sympad"><a href="UiObject.html#click()">click</a></span>()
-        
-        <div class="jd-descrdiv">Performs a click at the center of the visible bounds of the UI element represented
- by this UiObject.</div>
-  
-  </td></tr>
-
-
-	 
-    <tr class="api" >
-        <td class="jd-typecol">
-            
-            
-            
-            
-            
-            boolean
-        </td>
-        <td class="jd-linkcol" width="100%">
-        <span class="sympad"><a href="UiObject.html#clickAndWaitForNewWindow(long)">clickAndWaitForNewWindow</a></span>(long timeout)
-        
-        <div class="jd-descrdiv">Performs a click at the center of the visible bounds of the UI element represented
- by this UiObject and waits for window transitions.</div>
-  
-  </td></tr>
-
-
-	 
-    <tr class="api" >
-        <td class="jd-typecol">
-            
-            
-            
-            
-            
-            boolean
-        </td>
-        <td class="jd-linkcol" width="100%">
-        <span class="sympad"><a href="UiObject.html#clickAndWaitForNewWindow()">clickAndWaitForNewWindow</a></span>()
-        
-        <div class="jd-descrdiv">See <code><a href="UiObject.html#clickAndWaitForNewWindow(long)">clickAndWaitForNewWindow(long)</a></code>
- This method is intended to reliably wait for window transitions that would typically take
- longer than the usual default timeouts.</div>
-  
-  </td></tr>
-
-
-	 
-    <tr class="api" >
-        <td class="jd-typecol">
-            
-            
-            
-            
-            
-            boolean
-        </td>
-        <td class="jd-linkcol" width="100%">
-        <span class="sympad"><a href="UiObject.html#clickBottomRight()">clickBottomRight</a></span>()
-        
-        <div class="jd-descrdiv">Clicks the bottom and right corner of the UI element</div>
-  
-  </td></tr>
-
-
-	 
-    <tr class="api" >
-        <td class="jd-typecol">
-            
-            
-            
-            
-            
-            boolean
-        </td>
-        <td class="jd-linkcol" width="100%">
-        <span class="sympad"><a href="UiObject.html#clickTopLeft()">clickTopLeft</a></span>()
-        
-        <div class="jd-descrdiv">Clicks the top and left corner of the UI element</div>
-  
-  </td></tr>
-
-
-	 
-    <tr class="api" >
-        <td class="jd-typecol">
-            
-            
-            
-            
-            
-            boolean
-        </td>
-        <td class="jd-linkcol" width="100%">
-        <span class="sympad"><a href="UiObject.html#exists()">exists</a></span>()
-        
-        <div class="jd-descrdiv">Check if UI element exists.</div>
-  
-  </td></tr>
-
-
-	 
-    <tr class="api" >
-        <td class="jd-typecol">
-            
-            
-            
-            
-            
-            Rect
-        </td>
-        <td class="jd-linkcol" width="100%">
-        <span class="sympad"><a href="UiObject.html#getBounds()">getBounds</a></span>()
-        
-        <div class="jd-descrdiv">Returns the UI element's <code>bounds</code> property.</div>
-  
-  </td></tr>
-
-
-	 
-    <tr class="api" >
-        <td class="jd-typecol">
-            
-            
-            
-            
-            
-            <a href="UiObject.html">UiObject</a>
-        </td>
-        <td class="jd-linkcol" width="100%">
-        <span class="sympad"><a href="UiObject.html#getChild(com.android.uiautomator.core.UiSelector)">getChild</a></span>(<a href="UiSelector.html">UiSelector</a> selector)
-        
-        <div class="jd-descrdiv">Creates a new UiObject representing a child UI element of the element currently represented
- by this UiObject.</div>
-  
-  </td></tr>
-
-
-	 
-    <tr class="api" >
-        <td class="jd-typecol">
-            
-            
-            
-            
-            
-            int
-        </td>
-        <td class="jd-linkcol" width="100%">
-        <span class="sympad"><a href="UiObject.html#getChildCount()">getChildCount</a></span>()
-        
-        <div class="jd-descrdiv">Counts the child UI elements immediately under the UI element currently represented by
- this UiObject.</div>
-  
-  </td></tr>
-
-
-	 
-    <tr class="api" >
-        <td class="jd-typecol">
-            
-            
-            
-            
-            
-            String
-        </td>
-        <td class="jd-linkcol" width="100%">
-        <span class="sympad"><a href="UiObject.html#getContentDescription()">getContentDescription</a></span>()
-        
-        <div class="jd-descrdiv">Reads the <code>content_desc</code> property of the UI element</div>
-  
-  </td></tr>
-
-
-	 
-    <tr class="api" >
-        <td class="jd-typecol">
-            
-            
-            
-            
-            
-            <a href="UiObject.html">UiObject</a>
-        </td>
-        <td class="jd-linkcol" width="100%">
-        <span class="sympad"><a href="UiObject.html#getFromParent(com.android.uiautomator.core.UiSelector)">getFromParent</a></span>(<a href="UiSelector.html">UiSelector</a> selector)
-        
-        <div class="jd-descrdiv">Creates a new UiObject representing a child UI element from the parent element currently
- represented by this object.</div>
-  
-  </td></tr>
-
-
-	 
-    <tr class="api" >
-        <td class="jd-typecol">
-            
-            
-            
-            
-            
-            String
-        </td>
-        <td class="jd-linkcol" width="100%">
-        <span class="sympad"><a href="UiObject.html#getPackageName()">getPackageName</a></span>()
-        
-        <div class="jd-descrdiv">Reads the UI element's <code>package</code> property</div>
-  
-  </td></tr>
-
-
-	 
-    <tr class="api" >
-        <td class="jd-typecol">
-            
-            
-            final
-            
-            
-            <a href="UiSelector.html">UiSelector</a>
-        </td>
-        <td class="jd-linkcol" width="100%">
-        <span class="sympad"><a href="UiObject.html#getSelector()">getSelector</a></span>()
-        
-        <div class="jd-descrdiv">Debugging helper.</div>
-  
-  </td></tr>
-
-
-	 
-    <tr class="api" >
-        <td class="jd-typecol">
-            
-            
-            
-            
-            
-            String
-        </td>
-        <td class="jd-linkcol" width="100%">
-        <span class="sympad"><a href="UiObject.html#getText()">getText</a></span>()
-        
-        <div class="jd-descrdiv">Reads the <code>text</code> property of the UI element</div>
-  
-  </td></tr>
-
-
-	 
-    <tr class="api" >
-        <td class="jd-typecol">
-            
-            
-            
-            
-            
-            Rect
-        </td>
-        <td class="jd-linkcol" width="100%">
-        <span class="sympad"><a href="UiObject.html#getVisibleBounds()">getVisibleBounds</a></span>()
-        
-        <div class="jd-descrdiv">Returns the visible bounds of the UI element.</div>
-  
-  </td></tr>
-
-
-	 
-    <tr class="api" >
-        <td class="jd-typecol">
-            
-            
-            
-            
-            
-            boolean
-        </td>
-        <td class="jd-linkcol" width="100%">
-        <span class="sympad"><a href="UiObject.html#isCheckable()">isCheckable</a></span>()
-        
-        <div class="jd-descrdiv">Check if the UI element's <code>checkable</code> property is currently true</div>
-  
-  </td></tr>
-
-
-	 
-    <tr class="api" >
-        <td class="jd-typecol">
-            
-            
-            
-            
-            
-            boolean
-        </td>
-        <td class="jd-linkcol" width="100%">
-        <span class="sympad"><a href="UiObject.html#isChecked()">isChecked</a></span>()
-        
-        <div class="jd-descrdiv">Check if the UI element's <code>checked</code> property is currently true</div>
-  
-  </td></tr>
-
-
-	 
-    <tr class="api" >
-        <td class="jd-typecol">
-            
-            
-            
-            
-            
-            boolean
-        </td>
-        <td class="jd-linkcol" width="100%">
-        <span class="sympad"><a href="UiObject.html#isClickable()">isClickable</a></span>()
-        
-        <div class="jd-descrdiv">Check if the UI element's <code>clickable</code> property is currently true</div>
-  
-  </td></tr>
-
-
-	 
-    <tr class="api" >
-        <td class="jd-typecol">
-            
-            
-            
-            
-            
-            boolean
-        </td>
-        <td class="jd-linkcol" width="100%">
-        <span class="sympad"><a href="UiObject.html#isEnabled()">isEnabled</a></span>()
-        
-        <div class="jd-descrdiv">Check if the UI element's <code>enabled</code> property is currently true</div>
-  
-  </td></tr>
-
-
-	 
-    <tr class="api" >
-        <td class="jd-typecol">
-            
-            
-            
-            
-            
-            boolean
-        </td>
-        <td class="jd-linkcol" width="100%">
-        <span class="sympad"><a href="UiObject.html#isFocusable()">isFocusable</a></span>()
-        
-        <div class="jd-descrdiv">Check if the UI element's <code>focusable</code> property is currently true</div>
-  
-  </td></tr>
-
-
-	 
-    <tr class="api" >
-        <td class="jd-typecol">
-            
-            
-            
-            
-            
-            boolean
-        </td>
-        <td class="jd-linkcol" width="100%">
-        <span class="sympad"><a href="UiObject.html#isFocused()">isFocused</a></span>()
-        
-        <div class="jd-descrdiv">Check if the UI element's <code>focused</code> property is currently true</div>
-  
-  </td></tr>
-
-
-	 
-    <tr class="api" >
-        <td class="jd-typecol">
-            
-            
-            
-            
-            
-            boolean
-        </td>
-        <td class="jd-linkcol" width="100%">
-        <span class="sympad"><a href="UiObject.html#isLongClickable()">isLongClickable</a></span>()
-        
-        <div class="jd-descrdiv">Check if the UI element's <code>long-clickable</code> property is currently true</div>
-  
-  </td></tr>
-
-
-	 
-    <tr class="api" >
-        <td class="jd-typecol">
-            
-            
-            
-            
-            
-            boolean
-        </td>
-        <td class="jd-linkcol" width="100%">
-        <span class="sympad"><a href="UiObject.html#isScrollable()">isScrollable</a></span>()
-        
-        <div class="jd-descrdiv">Check if the UI element's <code>scrollable</code> property is currently true</div>
-  
-  </td></tr>
-
-
-	 
-    <tr class="api" >
-        <td class="jd-typecol">
-            
-            
-            
-            
-            
-            boolean
-        </td>
-        <td class="jd-linkcol" width="100%">
-        <span class="sympad"><a href="UiObject.html#isSelected()">isSelected</a></span>()
-        
-        <div class="jd-descrdiv">Check if the UI element's <code>selected</code> property is currently true</div>
-  
-  </td></tr>
-
-
-	 
-    <tr class="api" >
-        <td class="jd-typecol">
-            
-            
-            
-            
-            
-            boolean
-        </td>
-        <td class="jd-linkcol" width="100%">
-        <span class="sympad"><a href="UiObject.html#longClick()">longClick</a></span>()
-        
-        <div class="jd-descrdiv">Long clicks the center of the visible bounds of the UI element</div>
-  
-  </td></tr>
-
-
-	 
-    <tr class="api" >
-        <td class="jd-typecol">
-            
-            
-            
-            
-            
-            boolean
-        </td>
-        <td class="jd-linkcol" width="100%">
-        <span class="sympad"><a href="UiObject.html#longClickBottomRight()">longClickBottomRight</a></span>()
-        
-        <div class="jd-descrdiv">Long clicks bottom and right corner of the UI element</div>
-  
-  </td></tr>
-
-
-	 
-    <tr class="api" >
-        <td class="jd-typecol">
-            
-            
-            
-            
-            
-            boolean
-        </td>
-        <td class="jd-linkcol" width="100%">
-        <span class="sympad"><a href="UiObject.html#longClickTopLeft()">longClickTopLeft</a></span>()
-        
-        <div class="jd-descrdiv">Long clicks on the top and left corner of the UI element</div>
-  
-  </td></tr>
-
-
-	 
-    <tr class="api" >
-        <td class="jd-typecol">
-            
-            
-            
-            
-            
-            boolean
-        </td>
-        <td class="jd-linkcol" width="100%">
-        <span class="sympad"><a href="UiObject.html#setText(java.lang.String)">setText</a></span>(String text)
-        
-        <div class="jd-descrdiv">Sets the text in an editable field, after clearing the field's content.</div>
-  
-  </td></tr>
-
-
-	 
-    <tr class="api" >
-        <td class="jd-typecol">
-            
-            
-            
-            
-            
-            boolean
-        </td>
-        <td class="jd-linkcol" width="100%">
-        <span class="sympad"><a href="UiObject.html#swipeDown(int)">swipeDown</a></span>(int steps)
-        
-        <div class="jd-descrdiv">Perform the action on the UI element that is represented by this object, Also see
- #scrollToBeginning(int), #scrollToEnd(int), #scrollBackward(),
- #scrollForward().</div>
-  
-  </td></tr>
-
-
-	 
-    <tr class="api" >
-        <td class="jd-typecol">
-            
-            
-            
-            
-            
-            boolean
-        </td>
-        <td class="jd-linkcol" width="100%">
-        <span class="sympad"><a href="UiObject.html#swipeLeft(int)">swipeLeft</a></span>(int steps)
-        
-        <div class="jd-descrdiv">Perform the action on the UI element that is represented by this object.</div>
-  
-  </td></tr>
-
-
-	 
-    <tr class="api" >
-        <td class="jd-typecol">
-            
-            
-            
-            
-            
-            boolean
-        </td>
-        <td class="jd-linkcol" width="100%">
-        <span class="sympad"><a href="UiObject.html#swipeRight(int)">swipeRight</a></span>(int steps)
-        
-        <div class="jd-descrdiv">Perform the action on the UI element that is represented by this object.</div>
-  
-  </td></tr>
-
-
-	 
-    <tr class="api" >
-        <td class="jd-typecol">
-            
-            
-            
-            
-            
-            boolean
-        </td>
-        <td class="jd-linkcol" width="100%">
-        <span class="sympad"><a href="UiObject.html#swipeUp(int)">swipeUp</a></span>(int steps)
-        
-        <div class="jd-descrdiv">Perform the action on the UI element that is represented by this UiObject.</div>
-  
-  </td></tr>
-
-
-	 
-    <tr class="api" >
-        <td class="jd-typecol">
-            
-            
-            
-            
-            
-            boolean
-        </td>
-        <td class="jd-linkcol" width="100%">
-        <span class="sympad"><a href="UiObject.html#waitForExists(long)">waitForExists</a></span>(long timeout)
-        
-        <div class="jd-descrdiv">Waits a specified length of time for a UI element to become visible.</div>
-  
-  </td></tr>
-
-
-	 
-    <tr class="api" >
-        <td class="jd-typecol">
-            
-            
-            
-            
-            
-            boolean
-        </td>
-        <td class="jd-linkcol" width="100%">
-        <span class="sympad"><a href="UiObject.html#waitUntilGone(long)">waitUntilGone</a></span>(long timeout)
-        
-        <div class="jd-descrdiv">Waits a specified length of time for a UI element to become undetectable.</div>
-  
-  </td></tr>
-
-
-</table>
-  </div>
-</div>
-</td></tr>
-
-
-
-<tr class="api apilevel-" >
-<td colspan="12">
-  <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
-          ><img id="inherited-methods-java.lang.Object-trigger"
-          src="../../../../../assets/images/styles/disclosure_down.png"
-          class="jd-expando-trigger-img" /></a>
-From class
-
-  java.lang.Object
-
-<div id="inherited-methods-java.lang.Object">
-  <div id="inherited-methods-java.lang.Object-list"
-        class="jd-inheritedlinks">
-  </div>
-  <div id="inherited-methods-java.lang.Object-summary" style="display: none;">
-    <table class="jd-sumtable-expando">
-    
-
-
-	 
-    <tr class="api" >
-        <td class="jd-typecol">
-            
-            
-            
-            
-            
-            boolean
-        </td>
-        <td class="jd-linkcol" width="100%">
-        <span class="sympad">equals</span>(Object arg0)
-        
-  </td></tr>
-
-
-	 
-    <tr class="api" >
-        <td class="jd-typecol">
-            
-            
-            final
-            
-            
-            Class&lt;?&gt;
-        </td>
-        <td class="jd-linkcol" width="100%">
-        <span class="sympad">getClass</span>()
-        
-  </td></tr>
-
-
-	 
-    <tr class="api" >
-        <td class="jd-typecol">
-            
-            
-            
-            
-            
-            int
-        </td>
-        <td class="jd-linkcol" width="100%">
-        <span class="sympad">hashCode</span>()
-        
-  </td></tr>
-
-
-	 
-    <tr class="api" >
-        <td class="jd-typecol">
-            
-            
-            final
-            
-            
-            void
-        </td>
-        <td class="jd-linkcol" width="100%">
-        <span class="sympad">notify</span>()
-        
-  </td></tr>
-
-
-	 
-    <tr class="api" >
-        <td class="jd-typecol">
-            
-            
-            final
-            
-            
-            void
-        </td>
-        <td class="jd-linkcol" width="100%">
-        <span class="sympad">notifyAll</span>()
-        
-  </td></tr>
-
-
-	 
-    <tr class="api" >
-        <td class="jd-typecol">
-            
-            
-            
-            
-            
-            String
-        </td>
-        <td class="jd-linkcol" width="100%">
-        <span class="sympad">toString</span>()
-        
-  </td></tr>
-
-
-	 
-    <tr class="api" >
-        <td class="jd-typecol">
-            
-            
-            final
-            
-            
-            void
-        </td>
-        <td class="jd-linkcol" width="100%">
-        <span class="sympad">wait</span>()
-        
-  </td></tr>
-
-
-	 
-    <tr class="api" >
-        <td class="jd-typecol">
-            
-            
-            final
-            
-            
-            void
-        </td>
-        <td class="jd-linkcol" width="100%">
-        <span class="sympad">wait</span>(long arg0, int arg1)
-        
-  </td></tr>
-
-
-	 
-    <tr class="api" >
-        <td class="jd-typecol">
-            
-            
-            final
-            
-            
-            void
-        </td>
-        <td class="jd-linkcol" width="100%">
-        <span class="sympad">wait</span>(long arg0)
-        
-  </td></tr>
-
-
-</table>
-  </div>
-</div>
-</td></tr>
-
-
-</table>
-
-
-</div><!-- jd-descr (summary) -->
-
-
-<!-- ========= CONSTRUCTOR DETAIL ======== -->
-<h2>Public Constructors</h2>
-
-
-<a id="UiCollection(com.android.uiautomator.core.UiSelector)"></a>
-
-<div class="jd-details api "> 
-    <h4 class="jd-details-title">
-      <span class="normal">
-        public 
-         
-         
-         
-         
-        
-      </span>
-      <span class="sympad">UiCollection</span>
-      <span class="normal">(<a href="UiSelector.html">UiSelector</a> selector)</span>
-    </h4>
-      <div class="api-level">
-        <div>
-
-</div>
-        
-  
-
-      </div>
-    <div class="jd-details-descr">
-      
-  <div class="jd-tagdata jd-tagdescr"><p></p></div>
-
-    </div>
-</div>
-
-
-
-<!-- ========= METHOD DETAIL ======== -->
-<!-- Public methdos -->
-
-<h2>Public Methods</h2>
-
-
-<a id="getChildByDescription(com.android.uiautomator.core.UiSelector, java.lang.String)"></a>
-
-<div class="jd-details api "> 
-    <h4 class="jd-details-title">
-      <span class="normal">
-        public 
-         
-         
-         
-         
-        <a href="UiObject.html">UiObject</a>
-      </span>
-      <span class="sympad">getChildByDescription</span>
-      <span class="normal">(<a href="UiSelector.html">UiSelector</a> childPattern, String text)</span>
-    </h4>
-      <div class="api-level">
-        <div>
-
-</div>
-        
-  
-
-      </div>
-    <div class="jd-details-descr">
-      
-  <div class="jd-tagdata jd-tagdescr"><p>Searches for child UI element within the constraints of this <code><a href="UiSelector.html">UiSelector</a></code>
- selector.
-
- It looks for any child matching the <code>childPattern</code> argument that has
- a child UI element anywhere within its sub hierarchy that has content-description text.
- The returned UiObject will point at the <code>childPattern</code> instance that matched the
- search and not at the identifying child element that matched the content description.</p></p></div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Parameters</h5>
-      <table class="jd-tagtable">
-        <tr>
-          <th>childPattern</th>
-          <td><code><a href="UiSelector.html">UiSelector</a></code> selector of the child pattern to match and return</td>
-        </tr>
-        <tr>
-          <th>text</th>
-          <td>String of the identifying child contents of of the <code>childPattern</code></td>
-        </tr>
-      </table>
-  </div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Returns</h5>
-      <ul class="nolist"><li><code><a href="UiObject.html">UiObject</a></code> pointing at and instance of <code>childPattern</code></li></ul>
-  </div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Throws</h5>
-      <table class="jd-tagtable">  
-        <tr>
-            <th><a href="UiObjectNotFoundException.html">UiObjectNotFoundException</a></td>
-            <td></td>
-        </tr>
-      </table>
-  </div>
-
-    </div>
-</div>
-
-
-<a id="getChildByInstance(com.android.uiautomator.core.UiSelector, int)"></a>
-
-<div class="jd-details api "> 
-    <h4 class="jd-details-title">
-      <span class="normal">
-        public 
-         
-         
-         
-         
-        <a href="UiObject.html">UiObject</a>
-      </span>
-      <span class="sympad">getChildByInstance</span>
-      <span class="normal">(<a href="UiSelector.html">UiSelector</a> childPattern, int instance)</span>
-    </h4>
-      <div class="api-level">
-        <div>
-
-</div>
-        
-  
-
-      </div>
-    <div class="jd-details-descr">
-      
-  <div class="jd-tagdata jd-tagdescr"><p>Searches for child UI element within the constraints of this <code><a href="UiSelector.html">UiSelector</a></code>.
-
- It looks for any child matching the <code>childPattern</code> argument that has
- a child UI element anywhere within its sub hierarchy that is at the <code>instance</code>
- specified. The operation is performed only on the visible items and no scrolling is performed
- in this case.</p></div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Parameters</h5>
-      <table class="jd-tagtable">
-        <tr>
-          <th>childPattern</th>
-          <td><code><a href="UiSelector.html">UiSelector</a></code> selector of the child pattern to match and return</td>
-        </tr>
-        <tr>
-          <th>instance</th>
-          <td>int the desired matched instance of this <code>childPattern</code></td>
-        </tr>
-      </table>
-  </div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Returns</h5>
-      <ul class="nolist"><li><code><a href="UiObject.html">UiObject</a></code> pointing at and instance of <code>childPattern</code>
-</li></ul>
-  </div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Throws</h5>
-      <table class="jd-tagtable">  
-        <tr>
-            <th><a href="UiObjectNotFoundException.html">UiObjectNotFoundException</a></td>
-            <td></td>
-        </tr>
-      </table>
-  </div>
-
-    </div>
-</div>
-
-
-<a id="getChildByText(com.android.uiautomator.core.UiSelector, java.lang.String)"></a>
-
-<div class="jd-details api "> 
-    <h4 class="jd-details-title">
-      <span class="normal">
-        public 
-         
-         
-         
-         
-        <a href="UiObject.html">UiObject</a>
-      </span>
-      <span class="sympad">getChildByText</span>
-      <span class="normal">(<a href="UiSelector.html">UiSelector</a> childPattern, String text)</span>
-    </h4>
-      <div class="api-level">
-        <div>
-
-</div>
-        
-  
-
-      </div>
-    <div class="jd-details-descr">
-      
-  <div class="jd-tagdata jd-tagdescr"><p>Searches for child UI element within the constraints of this <code><a href="UiSelector.html">UiSelector</a></code>
- selector.
-
- It looks for any child matching the <code>childPattern</code> argument that has
- a child UI element anywhere within its sub hierarchy that has a text attribute equal to 
- <code>text</code>. The returned UiObject will point at the <code>childPattern</code>
- instance that matched the search and not at the identifying child element that matched the
- text attribute.</p></p></div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Parameters</h5>
-      <table class="jd-tagtable">
-        <tr>
-          <th>childPattern</th>
-          <td><code><a href="UiSelector.html">UiSelector</a></code> selector of the child pattern to match and return</td>
-        </tr>
-        <tr>
-          <th>text</th>
-          <td>String of the identifying child contents of of the <code>childPattern</code></td>
-        </tr>
-      </table>
-  </div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Returns</h5>
-      <ul class="nolist"><li><code><a href="UiObject.html">UiObject</a></code> pointing at and instance of <code>childPattern</code></li></ul>
-  </div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Throws</h5>
-      <table class="jd-tagtable">  
-        <tr>
-            <th><a href="UiObjectNotFoundException.html">UiObjectNotFoundException</a></td>
-            <td></td>
-        </tr>
-      </table>
-  </div>
-
-    </div>
-</div>
-
-
-<a id="getChildCount(com.android.uiautomator.core.UiSelector)"></a>
-
-<div class="jd-details api "> 
-    <h4 class="jd-details-title">
-      <span class="normal">
-        public 
-        int
-      </span>
-      <span class="sympad">getChildCount</span>
-      <span class="normal">(<a href="UiSelector.html">UiSelector</a> childPattern)</span>
-    </h4>
-      <div class="api-level">
-      </div>
-    <div class="jd-details-descr">
-      
-  <div class="jd-tagdata jd-tagdescr"><p>Counts child UI element instances matching the <code>childPattern</code>
- argument. The method returns the number of matching UI elements that are
- currently visible.  The count does not include items of a scrollable list
- that are off-screen.</p></div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Parameters</h5>
-      <table class="jd-tagtable">
-        <tr>
-          <th>childPattern</th>
-          <td>a <code><a href="UiSelector.html">UiSelector</a></code> that represents the matching child UI
- elements to count</td>
-        </tr>
-      </table>
-  </div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Returns</h5>
-      <ul class="nolist"><li>the number of matched childPattern under the current <code><a href="UiCollection.html">UiCollection</a></code>
-</li></ul>
-  </div>
-
-    </div>
-
diff --git a/docs/html/tools/help/uiautomator/UiDevice.jd b/docs/html/tools/help/uiautomator/UiDevice.jd
deleted file mode 100644
index 1203841..0000000
--- a/docs/html/tools/help/uiautomator/UiDevice.jd
+++ /dev/null
@@ -1,3208 +0,0 @@
-page.title=UiDevice
-parent.title=uiautomator
-parent.link=index.html
-@jd:body
-<style>
-    h4.jd-details-title {background-color: #DEE8F1;}
-</style>
-<p>Provides access to state information about the device. You can
-also use this class to simulate user actions on the device, such as pressing
-the d-pad or pressing the Home and Menu buttons.</p>
-
-<h2>Summary</h2>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-<!-- ========== METHOD SUMMARY =========== -->
-<table id="pubmethods" class="jd-sumtable"><tr><th colspan="12">Public Methods</th></tr>
-
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            void</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="#clearLastTraversedText()">clearLastTraversedText</a></span>()</nobr>
-
-        <div class="jd-descrdiv">Clears the text from the last UI traversal event.</div>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            boolean</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="#click(int, int)">click</a></span>(int x, int y)</nobr>
-
-        <div class="jd-descrdiv">Perform a click at arbitrary coordinates specified by the user</div>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            boolean</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="#drag(int, int, int, int, int)">drag</a></span>(int startX, int startY, int endX, int endY, int steps)</nobr>
-
-        <div class="jd-descrdiv">Performs a swipe from one coordinate to another coordinate.</div>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            void</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="#dumpWindowHierarchy(java.lang.String)">dumpWindowHierarchy</a></span>(String fileName)</nobr>
-
-        <div class="jd-descrdiv">Helper method used for debugging to dump the current window's layout hierarchy.</div>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            void</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="#freezeRotation()">freezeRotation</a></span>()</nobr>
-
-        <div class="jd-descrdiv">Disables the sensors and freezes the device rotation at its
- current rotation state.</div>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            String</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="#getCurrentActivityName()">getCurrentActivityName</a></span>()</nobr>
-
-        <div class="jd-descrdiv"><em>
-      This method is deprecated.
-    The results returned should be considered unreliable</em></div>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            String</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="#getCurrentPackageName()">getCurrentPackageName</a></span>()</nobr>
-
-        <div class="jd-descrdiv">Retrieves the name of the last package to report accessibility events.</div>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            int</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="#getDisplayHeight()">getDisplayHeight</a></span>()</nobr>
-
-        <div class="jd-descrdiv">Gets the height of the display, in pixels.</div>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            int</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="#getDisplayRotation()">getDisplayRotation</a></span>()</nobr>
-
-        <div class="jd-descrdiv">Returns the current rotation of the display, as defined in <code><a href="../../../../../reference/android/view/Surface.html">Surface</a></code></div>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            Point</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="#getDisplaySizeDp()">getDisplaySizeDp</a></span>()</nobr>
-
-        <div class="jd-descrdiv">Returns the display size in dp (device-independent pixel)
-
- The returned display size is adjusted per screen rotation.</div>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            int</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="#getDisplayWidth()">getDisplayWidth</a></span>()</nobr>
-
-        <div class="jd-descrdiv">Gets the width of the display, in pixels.</div>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-            static
-
-            <a href="#">UiDevice</a></nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="#getInstance()">getInstance</a></span>()</nobr>
-
-        <div class="jd-descrdiv">Retrieves a singleton instance of UiDevice</div>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            String</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="#getLastTraversedText()">getLastTraversedText</a></span>()</nobr>
-
-        <div class="jd-descrdiv">Retrieves the text from the last UI traversal event received.</div>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            String</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="#getProductName()">getProductName</a></span>()</nobr>
-
-        <div class="jd-descrdiv">Retrieves the product name of the device.</div>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            boolean</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="#hasAnyWatcherTriggered()">hasAnyWatcherTriggered</a></span>()</nobr>
-
-        <div class="jd-descrdiv">Checks if any registered <code><a href="UiWatcher.html">UiWatcher</a></code> have triggered.</div>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            boolean</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="#hasWatcherTriggered(java.lang.String)">hasWatcherTriggered</a></span>(String watcherName)</nobr>
-
-        <div class="jd-descrdiv">Checks if a specific registered  <code><a href="UiWatcher.html">UiWatcher</a></code> has triggered.</div>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            boolean</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="#isNaturalOrientation()">isNaturalOrientation</a></span>()</nobr>
-
-        <div class="jd-descrdiv">Check if the device is in its natural orientation.</div>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            boolean</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="#isScreenOn()">isScreenOn</a></span>()</nobr>
-
-        <div class="jd-descrdiv">Checks the power manager if the screen is ON.</div>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            boolean</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="#openNotification()">openNotification</a></span>()</nobr>
-
-        <div class="jd-descrdiv">Opens the notification shade.</div>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            boolean</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="#openQuickSettings()">openQuickSettings</a></span>()</nobr>
-
-        <div class="jd-descrdiv">Opens the Quick Settings shade.</div>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            boolean</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="#pressBack()">pressBack</a></span>()</nobr>
-
-        <div class="jd-descrdiv">Simulates a short press on the BACK button.</div>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            boolean</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="#pressDPadCenter()">pressDPadCenter</a></span>()</nobr>
-
-        <div class="jd-descrdiv">Simulates a short press on the CENTER button.</div>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            boolean</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="#pressDPadDown()">pressDPadDown</a></span>()</nobr>
-
-        <div class="jd-descrdiv">Simulates a short press on the DOWN button.</div>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            boolean</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="#pressDPadLeft()">pressDPadLeft</a></span>()</nobr>
-
-        <div class="jd-descrdiv">Simulates a short press on the LEFT button.</div>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            boolean</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="#pressDPadRight()">pressDPadRight</a></span>()</nobr>
-
-        <div class="jd-descrdiv">Simulates a short press on the RIGHT button.</div>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            boolean</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="#pressDPadUp()">pressDPadUp</a></span>()</nobr>
-
-        <div class="jd-descrdiv">Simulates a short press on the UP button.</div>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            boolean</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="#pressDelete()">pressDelete</a></span>()</nobr>
-
-        <div class="jd-descrdiv">Simulates a short press on the DELETE key.</div>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            boolean</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="#pressEnter()">pressEnter</a></span>()</nobr>
-
-        <div class="jd-descrdiv">Simulates a short press on the ENTER key.</div>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            boolean</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="#pressHome()">pressHome</a></span>()</nobr>
-
-        <div class="jd-descrdiv">Simulates a short press on the HOME button.</div>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            boolean</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="#pressKeyCode(int, int)">pressKeyCode</a></span>(int keyCode, int metaState)</nobr>
-
-        <div class="jd-descrdiv">Simulates a short press using a key code.</div>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            boolean</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="#pressKeyCode(int)">pressKeyCode</a></span>(int keyCode)</nobr>
-
-        <div class="jd-descrdiv">Simulates a short press using a key code.</div>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            boolean</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="#pressMenu()">pressMenu</a></span>()</nobr>
-
-        <div class="jd-descrdiv">Simulates a short press on the MENU button.</div>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            boolean</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="#pressRecentApps()">pressRecentApps</a></span>()</nobr>
-
-        <div class="jd-descrdiv">Simulates a short press on the Recent Apps button.</div>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            boolean</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="#pressSearch()">pressSearch</a></span>()</nobr>
-
-        <div class="jd-descrdiv">Simulates a short press on the SEARCH button.</div>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            void</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="#registerWatcher(java.lang.String, com.android.uiautomator.core.UiWatcher)">registerWatcher</a></span>(String name, <a href="UiWatcher.html">UiWatcher</a> watcher)</nobr>
-
-        <div class="jd-descrdiv">Registers a <code><a href="UiWatcher.html">UiWatcher</a></code> to run automatically when the testing framework is unable to
- find a match using a <code><a href="UiSelector.html">UiSelector</a></code>.</div>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            void</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="#removeWatcher(java.lang.String)">removeWatcher</a></span>(String name)</nobr>
-
-        <div class="jd-descrdiv">Removes a previously registered <code><a href="UiWatcher.html">UiWatcher</a></code>.</div>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            void</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="#resetWatcherTriggers()">resetWatcherTriggers</a></span>()</nobr>
-
-        <div class="jd-descrdiv">Resets a <code><a href="UiWatcher.html">UiWatcher</a></code> that has been triggered.</div>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            void</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="#runWatchers()">runWatchers</a></span>()</nobr>
-
-        <div class="jd-descrdiv">This method forces all registered watchers to run.</div>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            void</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="#setCompressedLayoutHeirarchy(boolean)">setCompressedLayoutHeirarchy</a></span>(boolean compressed)</nobr>
-
-        <div class="jd-descrdiv">Enables or disables layout hierarchy compression.</div>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            void</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="#setOrientationLeft()">setOrientationLeft</a></span>()</nobr>
-
-        <div class="jd-descrdiv">Simulates orienting the device to the left and also freezes rotation
- by disabling the sensors.</div>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            void</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="#setOrientationNatural()">setOrientationNatural</a></span>()</nobr>
-
-        <div class="jd-descrdiv">Simulates orienting the device into its natural orientation and also freezes rotation
- by disabling the sensors.</div>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            void</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="#setOrientationRight()">setOrientationRight</a></span>()</nobr>
-
-        <div class="jd-descrdiv">Simulates orienting the device to the right and also freezes rotation
- by disabling the sensors.</div>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            void</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="#sleep()">sleep</a></span>()</nobr>
-
-        <div class="jd-descrdiv">This method simply presses the power button if the screen is ON else
- it does nothing if the screen is already OFF.</div>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            boolean</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="#swipe(android.graphics.Point[], int)">swipe</a></span>(Point[] segments, int segmentSteps)</nobr>
-
-        <div class="jd-descrdiv">Performs a swipe between points in the Point array.</div>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            boolean</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="#swipe(int, int, int, int, int)">swipe</a></span>(int startX, int startY, int endX, int endY, int steps)</nobr>
-
-        <div class="jd-descrdiv">Performs a swipe from one coordinate to another using the number of steps
- to determine smoothness and speed.</div>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            boolean</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="#takeScreenshot(java.io.File)">takeScreenshot</a></span>(File storePath)</nobr>
-
-        <div class="jd-descrdiv">Take a screenshot of current window and store it as PNG
-
- Default scale of 1.0f (original size) and 90% quality is used
- The screenshot is adjusted per screen rotation</div>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            boolean</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="#takeScreenshot(java.io.File, float, int)">takeScreenshot</a></span>(File storePath, float scale, int quality)</nobr>
-
-        <div class="jd-descrdiv">Take a screenshot of current window and store it as PNG
-
- The screenshot is adjusted per screen rotation</div>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            void</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="#unfreezeRotation()">unfreezeRotation</a></span>()</nobr>
-
-        <div class="jd-descrdiv">Re-enables the sensors and un-freezes the device rotation allowing its contents
- to rotate with the device physical rotation.</div>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            void</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="#waitForIdle(long)">waitForIdle</a></span>(long timeout)</nobr>
-
-        <div class="jd-descrdiv">Waits for the current application to idle.</div>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            void</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="#waitForIdle()">waitForIdle</a></span>()</nobr>
-
-        <div class="jd-descrdiv">Waits for the current application to idle.</div>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            boolean</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="#waitForWindowUpdate(java.lang.String, long)">waitForWindowUpdate</a></span>(String packageName, long timeout)</nobr>
-
-        <div class="jd-descrdiv">Waits for a window content update event to occur.</div>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            void</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="#wakeUp()">wakeUp</a></span>()</nobr>
-
-        <div class="jd-descrdiv">This method simulates pressing the power button if the screen is OFF else
- it does nothing if the screen is already ON.</div>
-
-  </td></tr>
-
-
-
-</table>
-
-
-
-
-
-
-
-<!-- ========== METHOD SUMMARY =========== -->
-<table id="inhmethods" class="jd-sumtable"><tr><th>
-  <a href="#" class="toggle-all" onclick="return toggleAllInherited(this, null)">[Expand]</a>
-  <div style="clear:left;">Inherited Methods</div></th></tr>
-
-
-<tr class="api" >
-<td colspan="12">
-  <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
-          ><img id="inherited-methods-java.lang.Object-trigger"
-          src="../../../../../assets/images/styles/disclosure_down.png"
-          class="jd-expando-trigger-img" /></a>
-From class
-
-  java.lang.Object
-
-<div id="inherited-methods-java.lang.Object">
-  <div id="inherited-methods-java.lang.Object-list"
-        class="jd-inheritedlinks">
-  </div>
-  <div id="inherited-methods-java.lang.Object-summary" style="display: none;">
-    <table class="jd-sumtable-expando">
-
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            Object</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">clone</span>()</nobr>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            boolean</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">equals</span>(Object arg0)</nobr>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            void</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">finalize</span>()</nobr>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-            final
-
-
-            Class&lt;?&gt;</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">getClass</span>()</nobr>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            int</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">hashCode</span>()</nobr>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-            final
-
-
-            void</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">notify</span>()</nobr>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-            final
-
-
-            void</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">notifyAll</span>()</nobr>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            String</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">toString</span>()</nobr>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-            final
-
-
-            void</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">wait</span>()</nobr>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-            final
-
-
-            void</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">wait</span>(long arg0, int arg1)</nobr>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-            final
-
-
-            void</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">wait</span>(long arg0)</nobr>
-
-  </td></tr>
-
-
-</table>
-  </div>
-</div>
-</td></tr>
-
-
-</table>
-
-
-</div><!-- jd-descr (summary) -->
-
-<!-- Details -->
-
-
-
-
-
-
-
-
-<!-- XML Attributes -->
-
-
-<!-- Enum Values -->
-
-
-<!-- Constants -->
-
-
-<!-- Fields -->
-
-
-<!-- Public ctors -->
-
-
-
-<!-- ========= CONSTRUCTOR DETAIL ======== -->
-<!-- Protected ctors -->
-
-
-
-<!-- ========= METHOD DETAIL ======== -->
-<!-- Public methdos -->
-
-<h2>Public Methods</h2>
-
-
-
-<A NAME="clearLastTraversedText()"></A>
-
-<div class="jd-details api">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        public
-
-
-
-
-        void
-      </span>
-      <span class="sympad">clearLastTraversedText</span>
-      <span class="normal">()</span>
-    </h4>
-      <div class="api-level">
-        <div></div>
-
-
-
-      </div>
-    <div class="jd-details-descr">
-
-  <div class="jd-tagdata jd-tagdescr"><p>Clears the text from the last UI traversal event.
- See <code><a href="#getLastTraversedText()">getLastTraversedText()</a></code>.</p></div>
-
-    </div>
-</div>
-
-
-<A NAME="click(int, int)"></A>
-
-<div class="jd-details api">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        public
-
-
-
-
-        boolean
-      </span>
-      <span class="sympad">click</span>
-      <span class="normal">(int x, int y)</span>
-    </h4>
-      <div class="api-level">
-        <div></div>
-
-
-
-      </div>
-    <div class="jd-details-descr">
-
-  <div class="jd-tagdata jd-tagdescr"><p>Perform a click at arbitrary coordinates specified by the user</p></div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Parameters</h5>
-      <table class="jd-tagtable">
-        <tr>
-          <th>x</td>
-          <td>coordinate</td>
-        </tr>
-        <tr>
-          <th>y</td>
-          <td>coordinate</td>
-        </tr>
-      </table>
-  </div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Returns</h5>
-      <ul class="nolist"><li>true if the click succeeded else false</li></ul>
-  </div>
-
-    </div>
-</div>
-
-
-<A NAME="drag(int, int, int, int, int)"></A>
-
-<div class="jd-details api apilevel-18">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        public
-
-
-
-
-        boolean
-      </span>
-      <span class="sympad">drag</span>
-      <span class="normal">(int startX, int startY, int endX, int endY, int steps)</span>
-    </h4>
-    <div class="jd-details-descr">
-
-  <div class="jd-tagdata jd-tagdescr"><p>Performs a swipe from one coordinate to another coordinate. You can control
- the smoothness and speed of the swipe by specifying the number of steps.
- Each step execution is throttled to 5 milliseconds per step, so for a 100
- steps, the swipe will take around 0.5 seconds to complete.</p></div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Parameters</h5>
-      <table class="jd-tagtable">
-        <tr>
-          <th>startX</td>
-          <td>X-axis value for the starting coordinate</td>
-        </tr>
-        <tr>
-          <th>startY</td>
-          <td>Y-axis value for the starting coordinate</td>
-        </tr>
-        <tr>
-          <th>endX</td>
-          <td>X-axis value for the ending coordinate</td>
-        </tr>
-        <tr>
-          <th>endY</td>
-          <td>Y-axis value for the ending coordinate</td>
-        </tr>
-        <tr>
-          <th>steps</td>
-          <td>is the number of steps for the swipe action</td>
-        </tr>
-      </table>
-  </div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Returns</h5>
-      <ul class="nolist"><li>true if swipe is performed, false if the operation fails
- or the coordinates are invalid</li></ul>
-  </div>
-  <div class="jd-tagdata">
-     <h5 class="jd-tagtitle">Since</h5>
-     <ul class="nolist"><li>Android API Level 18</li></ul>
-  </div>
-    </div>
-</div>
-
-
-<A NAME="dumpWindowHierarchy(java.lang.String)"></A>
-
-<div class="jd-details api">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        public
-
-
-
-
-        void
-      </span>
-      <span class="sympad">dumpWindowHierarchy</span>
-      <span class="normal">(String fileName)</span>
-    </h4>
-      <div class="api-level">
-        <div></div>
-
-
-
-      </div>
-    <div class="jd-details-descr">
-
-  <div class="jd-tagdata jd-tagdescr"><p>Helper method used for debugging to dump the current window's layout hierarchy.
- The file root location is /data/local/tmp</p></div>
-
-    </div>
-</div>
-
-
-<A NAME="freezeRotation()"></A>
-
-<div class="jd-details api">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        public
-
-
-
-
-        void
-      </span>
-      <span class="sympad">freezeRotation</span>
-      <span class="normal">()</span>
-    </h4>
-      <div class="api-level">
-        <div></div>
-
-
-
-      </div>
-    <div class="jd-details-descr">
-
-  <div class="jd-tagdata jd-tagdescr"><p>Disables the sensors and freezes the device rotation at its
- current rotation state.</p></div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Throws</h5>
-      <table class="jd-tagtable">
-        <tr>
-            <th></td>
-            <td>RemoteException</td>
-        </tr>
-        <tr>
-            <th>RemoteException</td>
-            <td></td>
-        </tr>
-      </table>
-  </div>
-
-    </div>
-</div>
-
-
-<A NAME="getCurrentActivityName()"></A>
-
-<div class="jd-details api">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        public
-
-
-
-
-        String
-      </span>
-      <span class="sympad">getCurrentActivityName</span>
-      <span class="normal">()</span>
-    </h4>
-      <div class="api-level">
-        <div></div>
-
-
-
-      </div>
-    <div class="jd-details-descr">
-      <p>
-  <p class="caution"><strong>
-      This method is deprecated.</strong><br/>
-    The results returned should be considered unreliable
-  </p>
-  <div class="jd-tagdata jd-tagdescr"><p>Retrieves the last activity to report accessibility events.</p></div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Returns</h5>
-      <ul class="nolist"><li>String name of activity</li></ul>
-  </div>
-
-    </div>
-</div>
-
-
-<A NAME="getCurrentPackageName()"></A>
-
-<div class="jd-details api">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        public
-
-
-
-
-        String
-      </span>
-      <span class="sympad">getCurrentPackageName</span>
-      <span class="normal">()</span>
-    </h4>
-      <div class="api-level">
-        <div></div>
-
-
-
-      </div>
-    <div class="jd-details-descr">
-
-  <div class="jd-tagdata jd-tagdescr"><p>Retrieves the name of the last package to report accessibility events.</p></div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Returns</h5>
-      <ul class="nolist"><li>String name of package</li></ul>
-  </div>
-
-    </div>
-</div>
-
-
-<A NAME="getDisplayHeight()"></A>
-
-<div class="jd-details api">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        public
-
-
-
-
-        int
-      </span>
-      <span class="sympad">getDisplayHeight</span>
-      <span class="normal">()</span>
-    </h4>
-      <div class="api-level">
-        <div></div>
-
-
-
-      </div>
-    <div class="jd-details-descr">
-
-  <div class="jd-tagdata jd-tagdescr"><p>Gets the height of the display, in pixels. The size is adjusted based
- on the current orientation of the display.</p></div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Returns</h5>
-      <ul class="nolist"><li>height in pixels or zero on failure</li></ul>
-  </div>
-
-    </div>
-</div>
-
-
-<A NAME="getDisplayRotation()"></A>
-
-<div class="jd-details api">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        public
-
-
-
-
-        int
-      </span>
-      <span class="sympad">getDisplayRotation</span>
-      <span class="normal">()</span>
-    </h4>
-    <div class="jd-details-descr">
-
-  <div class="jd-tagdata jd-tagdescr"><p>Returns the current rotation of the display, as defined in <code><a href="../../../../../reference/android/view/Surface.html">Surface</a></code></p></div>
-
-    </div>
-    <div class="jd-tagdata">
-     <h5 class="jd-tagtitle">Since</h5>
-     <ul class="nolist"><li>Android API Level 17</li></ul>
-  </div>
-</div>
-
-
-<A NAME="getDisplaySizeDp()"></A>
-
-<div class="jd-details api apilevel-18">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        public
-
-
-
-
-        Point
-      </span>
-      <span class="sympad">getDisplaySizeDp</span>
-      <span class="normal">()</span>
-    </h4>
-    <div class="jd-details-descr">
-
-  <div class="jd-tagdata jd-tagdescr"><p>Returns the display size in dp (device-independent pixel)
-
- The returned display size is adjusted per screen rotation. Also this will return the actual
- size of the screen, rather than adjusted per system decorations (like status bar).</p></div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Returns</h5>
-      <ul class="nolist"><li>a Point containing the display size in dp
-</li></ul>
-  </div>
-  <div class="jd-tagdata">
-     <h5 class="jd-tagtitle">Since</h5>
-     <ul class="nolist"><li>Android API Level 18</li></ul>
-  </div>
-    </div>
-</div>
-
-
-<A NAME="getDisplayWidth()"></A>
-
-<div class="jd-details api">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        public
-
-
-
-
-        int
-      </span>
-      <span class="sympad">getDisplayWidth</span>
-      <span class="normal">()</span>
-    </h4>
-    <div class="jd-details-descr">
-
-  <div class="jd-tagdata jd-tagdescr"><p>Gets the width of the display, in pixels. The width and height details
- are reported based on the current orientation of the display.</p></div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Returns</h5>
-      <ul class="nolist"><li>width in pixels or zero on failure</li></ul>
-  </div>
-
-    </div>
-</div>
-
-
-<A NAME="getInstance()"></A>
-
-<div class="jd-details api">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        public
-        static
-
-
-
-        <a href="#">UiDevice</a>
-      </span>
-      <span class="sympad">getInstance</span>
-      <span class="normal">()</span>
-    </h4>
-    <div class="jd-details-descr">
-
-  <div class="jd-tagdata jd-tagdescr"><p>Retrieves a singleton instance of UiDevice</p></div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Returns</h5>
-      <ul class="nolist"><li>UiDevice instance</li></ul>
-  </div>
-
-    </div>
-</div>
-
-
-<A NAME="getLastTraversedText()"></A>
-
-<div class="jd-details api">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        public
-
-
-
-
-        String
-      </span>
-      <span class="sympad">getLastTraversedText</span>
-      <span class="normal">()</span>
-    </h4>
-      <div class="api-level">
-        <div></div>
-
-
-
-      </div>
-    <div class="jd-details-descr">
-
-  <div class="jd-tagdata jd-tagdescr"><p>Retrieves the text from the last UI traversal event received.
-
- You can use this method to read the contents in a WebView container
- because the accessibility framework fires events
- as each text is highlighted. You can write a test to perform
- directional arrow presses to focus on different elements inside a WebView,
- and call this method to get the text from each traversed element.
- If you are testing a view container that can return a reference to a
- Document Object Model (DOM) object, your test should use the view's
- DOM instead.</p></div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Returns</h5>
-      <ul class="nolist"><li>text of the last traversal event, else return an empty string</li></ul>
-  </div>
-
-    </div>
-</div>
-
-
-<A NAME="getProductName()"></A>
-
-<div class="jd-details api apilevel-17">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        public
-
-
-
-
-        String
-      </span>
-      <span class="sympad">getProductName</span>
-      <span class="normal">()</span>
-    </h4>
-    <div class="jd-details-descr">
-
-  <div class="jd-tagdata jd-tagdescr"><p>Retrieves the product name of the device.
-
- This method provides information on what type of device the test is running on. This value is
- the same as returned by invoking #adb shell getprop ro.product.name.</p></div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Returns</h5>
-      <ul class="nolist"><li>product name of the device</li></ul>
-  </div>
-  <div class="jd-tagdata">
-     <h5 class="jd-tagtitle">Since</h5>
-     <ul class="nolist"><li>Android API Level 17</li></ul>
-  </div>
-    </div>
-</div>
-
-
-<A NAME="hasAnyWatcherTriggered()"></A>
-
-<div class="jd-details api">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        public
-
-
-
-
-        boolean
-      </span>
-      <span class="sympad">hasAnyWatcherTriggered</span>
-      <span class="normal">()</span>
-    </h4>
-      <div class="api-level">
-        <div></div>
-
-
-
-      </div>
-    <div class="jd-details-descr">
-
-  <div class="jd-tagdata jd-tagdescr"><p>Checks if any registered <code><a href="UiWatcher.html">UiWatcher</a></code> have triggered.
-
- See <code><a href="#registerWatcher(java.lang.String, com.android.uiautomator.core.UiWatcher)">registerWatcher(String, UiWatcher)</a></code>
- See <code><a href="#hasWatcherTriggered(java.lang.String)">hasWatcherTriggered(String)</a></code></p></div>
-
-    </div>
-</div>
-
-
-<A NAME="hasWatcherTriggered(java.lang.String)"></A>
-
-<div class="jd-details api">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        public
-
-
-
-
-        boolean
-      </span>
-      <span class="sympad">hasWatcherTriggered</span>
-      <span class="normal">(String watcherName)</span>
-    </h4>
-      <div class="api-level">
-        <div></div>
-
-
-
-      </div>
-    <div class="jd-details-descr">
-
-  <div class="jd-tagdata jd-tagdescr"><p>Checks if a specific registered  <code><a href="UiWatcher.html">UiWatcher</a></code> has triggered.
- See <code><a href="#registerWatcher(java.lang.String, com.android.uiautomator.core.UiWatcher)">registerWatcher(String, UiWatcher)</a></code>. If a UiWatcher runs and its
- <code><a href="UiWatcher.html#checkForCondition()">checkForCondition()</a></code> call returned <code>true</code>, then
- the UiWatcher is considered triggered. This is helpful if a watcher is detecting errors
- from ANR or crash dialogs and the test needs to know if a UiWatcher has been triggered.</p></div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Returns</h5>
-      <ul class="nolist"><li>true if triggered else false</li></ul>
-  </div>
-
-    </div>
-</div>
-
-
-<A NAME="isNaturalOrientation()"></A>
-
-<div class="jd-details api">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        public
-
-
-
-
-        boolean
-      </span>
-      <span class="sympad">isNaturalOrientation</span>
-      <span class="normal">()</span>
-    </h4>
-    <div class="jd-details-descr">
-
-  <div class="jd-tagdata jd-tagdescr"><p>Check if the device is in its natural orientation. This is determined by checking if the
- orientation is at 0 or 180 degrees.</p></div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Returns</h5>
-      <ul class="nolist"><li>true if it is in natural orientation</li></ul>
-  </div>
-  <div class="jd-tagdata">
-     <h5 class="jd-tagtitle">Since</h5>
-     <ul class="nolist"><li>Android API Level 17</li></ul>
-  </div>
-    </div>
-</div>
-
-
-<A NAME="isScreenOn()"></A>
-
-<div class="jd-details api">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        public
-
-
-
-
-        boolean
-      </span>
-      <span class="sympad">isScreenOn</span>
-      <span class="normal">()</span>
-    </h4>
-      <div class="api-level">
-        <div></div>
-
-
-
-      </div>
-    <div class="jd-details-descr">
-
-  <div class="jd-tagdata jd-tagdescr"><p>Checks the power manager if the screen is ON.</p></div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Returns</h5>
-      <ul class="nolist"><li>true if the screen is ON else false</li></ul>
-  </div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Throws</h5>
-      <table class="jd-tagtable">
-        <tr>
-            <th></td>
-            <td>RemoteException</td>
-        </tr>
-        <tr>
-            <th>RemoteException</td>
-            <td></td>
-        </tr>
-      </table>
-  </div>
-
-    </div>
-</div>
-
-
-<A NAME="openNotification()"></A>
-
-<div class="jd-details api apilevel-18">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        public
-
-
-
-
-        boolean
-      </span>
-      <span class="sympad">openNotification</span>
-      <span class="normal">()</span>
-    </h4>
-    <div class="jd-details-descr">
-
-  <div class="jd-tagdata jd-tagdescr"><p>Opens the notification shade.</p></div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Returns</h5>
-      <ul class="nolist"><li>true if successful, else return false</li></ul>
-  </div>
-  <div class="jd-tagdata">
-     <h5 class="jd-tagtitle">Since</h5>
-     <ul class="nolist"><li>Android API Level 18</li></ul>
-  </div>
-    </div>
-</div>
-
-
-<A NAME="openQuickSettings()"></A>
-
-<div class="jd-details api apilevel-18">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        public
-
-
-
-
-        boolean
-      </span>
-      <span class="sympad">openQuickSettings</span>
-      <span class="normal">()</span>
-    </h4>
-    <div class="jd-details-descr">
-
-  <div class="jd-tagdata jd-tagdescr"><p>Opens the Quick Settings shade.</p></div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Returns</h5>
-      <ul class="nolist"><li>true if successful, else return false</li></ul>
-  </div>
-  <div class="jd-tagdata">
-     <h5 class="jd-tagtitle">Since</h5>
-     <ul class="nolist"><li>Android API Level 18</li></ul>
-  </div>
-    </div>
-</div>
-
-
-<A NAME="pressBack()"></A>
-
-<div class="jd-details api">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        public
-
-
-
-
-        boolean
-      </span>
-      <span class="sympad">pressBack</span>
-      <span class="normal">()</span>
-    </h4>
-      <div class="api-level">
-        <div></div>
-
-
-
-      </div>
-    <div class="jd-details-descr">
-
-  <div class="jd-tagdata jd-tagdescr"><p>Simulates a short press on the BACK button.</p></div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Returns</h5>
-      <ul class="nolist"><li>true if successful, else return false</li></ul>
-  </div>
-
-    </div>
-</div>
-
-
-<A NAME="pressDPadCenter()"></A>
-
-<div class="jd-details api">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        public
-
-
-
-
-        boolean
-      </span>
-      <span class="sympad">pressDPadCenter</span>
-      <span class="normal">()</span>
-    </h4>
-      <div class="api-level">
-        <div></div>
-
-
-
-      </div>
-    <div class="jd-details-descr">
-
-  <div class="jd-tagdata jd-tagdescr"><p>Simulates a short press on the CENTER button.</p></div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Returns</h5>
-      <ul class="nolist"><li>true if successful, else return false</li></ul>
-  </div>
-
-    </div>
-</div>
-
-
-<A NAME="pressDPadDown()"></A>
-
-<div class="jd-details api">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        public
-
-
-
-
-        boolean
-      </span>
-      <span class="sympad">pressDPadDown</span>
-      <span class="normal">()</span>
-    </h4>
-      <div class="api-level">
-        <div></div>
-
-
-
-      </div>
-    <div class="jd-details-descr">
-
-  <div class="jd-tagdata jd-tagdescr"><p>Simulates a short press on the DOWN button.</p></div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Returns</h5>
-      <ul class="nolist"><li>true if successful, else return false</li></ul>
-  </div>
-
-    </div>
-</div>
-
-
-<A NAME="pressDPadLeft()"></A>
-
-<div class="jd-details api">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        public
-
-
-
-
-        boolean
-      </span>
-      <span class="sympad">pressDPadLeft</span>
-      <span class="normal">()</span>
-    </h4>
-      <div class="api-level">
-        <div></div>
-
-
-
-      </div>
-    <div class="jd-details-descr">
-
-  <div class="jd-tagdata jd-tagdescr"><p>Simulates a short press on the LEFT button.</p></div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Returns</h5>
-      <ul class="nolist"><li>true if successful, else return false</li></ul>
-  </div>
-
-    </div>
-</div>
-
-
-<A NAME="pressDPadRight()"></A>
-
-<div class="jd-details api">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        public
-
-
-
-
-        boolean
-      </span>
-      <span class="sympad">pressDPadRight</span>
-      <span class="normal">()</span>
-    </h4>
-      <div class="api-level">
-        <div></div>
-
-
-
-      </div>
-    <div class="jd-details-descr">
-
-  <div class="jd-tagdata jd-tagdescr"><p>Simulates a short press on the RIGHT button.</p></div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Returns</h5>
-      <ul class="nolist"><li>true if successful, else return false</li></ul>
-  </div>
-
-    </div>
-</div>
-
-
-<A NAME="pressDPadUp()"></A>
-
-<div class="jd-details api">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        public
-
-
-
-
-        boolean
-      </span>
-      <span class="sympad">pressDPadUp</span>
-      <span class="normal">()</span>
-    </h4>
-      <div class="api-level">
-        <div></div>
-
-
-
-      </div>
-    <div class="jd-details-descr">
-
-  <div class="jd-tagdata jd-tagdescr"><p>Simulates a short press on the UP button.</p></div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Returns</h5>
-      <ul class="nolist"><li>true if successful, else return false</li></ul>
-  </div>
-
-    </div>
-</div>
-
-
-<A NAME="pressDelete()"></A>
-
-<div class="jd-details api">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        public
-
-
-
-
-        boolean
-      </span>
-      <span class="sympad">pressDelete</span>
-      <span class="normal">()</span>
-    </h4>
-      <div class="api-level">
-        <div></div>
-
-
-
-      </div>
-    <div class="jd-details-descr">
-
-  <div class="jd-tagdata jd-tagdescr"><p>Simulates a short press on the DELETE key.</p></div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Returns</h5>
-      <ul class="nolist"><li>true if successful, else return false</li></ul>
-  </div>
-
-    </div>
-</div>
-
-
-<A NAME="pressEnter()"></A>
-
-<div class="jd-details api">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        public
-
-
-
-
-        boolean
-      </span>
-      <span class="sympad">pressEnter</span>
-      <span class="normal">()</span>
-    </h4>
-      <div class="api-level">
-        <div></div>
-
-
-
-      </div>
-    <div class="jd-details-descr">
-
-  <div class="jd-tagdata jd-tagdescr"><p>Simulates a short press on the ENTER key.</p></div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Returns</h5>
-      <ul class="nolist"><li>true if successful, else return false</li></ul>
-  </div>
-
-    </div>
-</div>
-
-
-<A NAME="pressHome()"></A>
-
-<div class="jd-details api">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        public
-
-
-
-
-        boolean
-      </span>
-      <span class="sympad">pressHome</span>
-      <span class="normal">()</span>
-    </h4>
-      <div class="api-level">
-        <div></div>
-
-
-
-      </div>
-    <div class="jd-details-descr">
-
-  <div class="jd-tagdata jd-tagdescr"><p>Simulates a short press on the HOME button.</p></div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Returns</h5>
-      <ul class="nolist"><li>true if successful, else return false</li></ul>
-  </div>
-
-    </div>
-</div>
-
-
-<A NAME="pressKeyCode(int, int)"></A>
-
-<div class="jd-details api">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        public
-
-
-
-
-        boolean
-      </span>
-      <span class="sympad">pressKeyCode</span>
-      <span class="normal">(int keyCode, int metaState)</span>
-    </h4>
-      <div class="api-level">
-        <div></div>
-
-
-
-      </div>
-    <div class="jd-details-descr">
-
-  <div class="jd-tagdata jd-tagdescr"><p>Simulates a short press using a key code.
-
- See <code><a href="../../../../../reference/android/view/KeyEvent.html">KeyEvent</a></code>.</p></div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Parameters</h5>
-      <table class="jd-tagtable">
-        <tr>
-          <th>keyCode</td>
-          <td>the key code of the event.</td>
-        </tr>
-        <tr>
-          <th>metaState</td>
-          <td>an integer in which each bit set to 1 represents a pressed meta key</td>
-        </tr>
-      </table>
-  </div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Returns</h5>
-      <ul class="nolist"><li>true if successful, else return false</li></ul>
-  </div>
-
-    </div>
-</div>
-
-
-<A NAME="pressKeyCode(int)"></A>
-
-<div class="jd-details api">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        public
-
-
-
-
-        boolean
-      </span>
-      <span class="sympad">pressKeyCode</span>
-      <span class="normal">(int keyCode)</span>
-    </h4>
-      <div class="api-level">
-        <div></div>
-
-
-
-      </div>
-    <div class="jd-details-descr">
-
-  <div class="jd-tagdata jd-tagdescr"><p>Simulates a short press using a key code.
-
- See <code><a href="../../../../../reference/android/view/KeyEvent.html">KeyEvent</a></code></p></div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Returns</h5>
-      <ul class="nolist"><li>true if successful, else return false</li></ul>
-  </div>
-
-    </div>
-</div>
-
-
-<A NAME="pressMenu()"></A>
-
-<div class="jd-details api">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        public
-
-
-
-
-        boolean
-      </span>
-      <span class="sympad">pressMenu</span>
-      <span class="normal">()</span>
-    </h4>
-      <div class="api-level">
-        <div></div>
-
-
-
-      </div>
-    <div class="jd-details-descr">
-
-  <div class="jd-tagdata jd-tagdescr"><p>Simulates a short press on the MENU button.</p></div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Returns</h5>
-      <ul class="nolist"><li>true if successful, else return false</li></ul>
-  </div>
-
-    </div>
-</div>
-
-
-<A NAME="pressRecentApps()"></A>
-
-<div class="jd-details api">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        public
-
-
-
-
-        boolean
-      </span>
-      <span class="sympad">pressRecentApps</span>
-      <span class="normal">()</span>
-    </h4>
-      <div class="api-level">
-        <div></div>
-
-
-
-      </div>
-    <div class="jd-details-descr">
-
-  <div class="jd-tagdata jd-tagdescr"><p>Simulates a short press on the Recent Apps button.</p></div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Returns</h5>
-      <ul class="nolist"><li>true if successful, else return false</li></ul>
-  </div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Throws</h5>
-      <table class="jd-tagtable">
-        <tr>
-            <th></td>
-            <td>RemoteException</td>
-        </tr>
-        <tr>
-            <th>RemoteException</td>
-            <td></td>
-        </tr>
-      </table>
-  </div>
-
-    </div>
-</div>
-
-
-<A NAME="pressSearch()"></A>
-
-<div class="jd-details api">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        public
-
-
-
-
-        boolean
-      </span>
-      <span class="sympad">pressSearch</span>
-      <span class="normal">()</span>
-    </h4>
-      <div class="api-level">
-        <div></div>
-
-
-
-      </div>
-    <div class="jd-details-descr">
-
-  <div class="jd-tagdata jd-tagdescr"><p>Simulates a short press on the SEARCH button.</p></div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Returns</h5>
-      <ul class="nolist"><li>true if successful, else return false</li></ul>
-  </div>
-
-    </div>
-</div>
-
-
-<A NAME="registerWatcher(java.lang.String, com.android.uiautomator.core.UiWatcher)"></A>
-
-<div class="jd-details api">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        public
-
-
-
-
-        void
-      </span>
-      <span class="sympad">registerWatcher</span>
-      <span class="normal">(String name, <a href="UiWatcher.html">UiWatcher</a> watcher)</span>
-    </h4>
-      <div class="api-level">
-        <div></div>
-
-
-
-      </div>
-    <div class="jd-details-descr">
-
-  <div class="jd-tagdata jd-tagdescr"><p>Registers a <code><a href="UiWatcher.html">UiWatcher</a></code> to run automatically when the testing framework is unable to
- find a match using a <code><a href="UiSelector.html">UiSelector</a></code>. See <code><a href="#runWatchers()">runWatchers()</a></code></p></div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Parameters</h5>
-      <table class="jd-tagtable">
-        <tr>
-          <th>name</td>
-          <td>to register the UiWatcher</td>
-        </tr>
-        <tr>
-          <th>watcher</td>
-          <td><code><a href="UiWatcher.html">UiWatcher</a></code></td>
-        </tr>
-      </table>
-  </div>
-
-    </div>
-</div>
-
-
-<A NAME="removeWatcher(java.lang.String)"></A>
-
-<div class="jd-details api">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        public
-
-
-
-
-        void
-      </span>
-      <span class="sympad">removeWatcher</span>
-      <span class="normal">(String name)</span>
-    </h4>
-      <div class="api-level">
-        <div></div>
-
-
-
-      </div>
-    <div class="jd-details-descr">
-
-  <div class="jd-tagdata jd-tagdescr"><p>Removes a previously registered <code><a href="UiWatcher.html">UiWatcher</a></code>.
-
- See <code><a href="#registerWatcher(java.lang.String, com.android.uiautomator.core.UiWatcher)">registerWatcher(String, UiWatcher)</a></code></p></div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Parameters</h5>
-      <table class="jd-tagtable">
-        <tr>
-          <th>name</td>
-          <td>used to register the UiWatcher</td>
-        </tr>
-      </table>
-  </div>
-
-    </div>
-</div>
-
-
-<A NAME="resetWatcherTriggers()"></A>
-
-<div class="jd-details api">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        public
-
-
-
-
-        void
-      </span>
-      <span class="sympad">resetWatcherTriggers</span>
-      <span class="normal">()</span>
-    </h4>
-      <div class="api-level">
-        <div></div>
-
-
-
-      </div>
-    <div class="jd-details-descr">
-
-  <div class="jd-tagdata jd-tagdescr"><p>Resets a <code><a href="UiWatcher.html">UiWatcher</a></code> that has been triggered.
- If a UiWatcher runs and its <code><a href="UiWatcher.html#checkForCondition()">checkForCondition()</a></code> call
- returned <code>true</code>, then the UiWatcher is considered triggered.
- See <code><a href="#registerWatcher(java.lang.String, com.android.uiautomator.core.UiWatcher)">registerWatcher(String, UiWatcher)</a></code></p></div>
-
-    </div>
-</div>
-
-
-<A NAME="runWatchers()"></A>
-
-<div class="jd-details api">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        public
-
-
-
-
-        void
-      </span>
-      <span class="sympad">runWatchers</span>
-      <span class="normal">()</span>
-    </h4>
-      <div class="api-level">
-        <div></div>
-
-
-
-      </div>
-    <div class="jd-details-descr">
-
-  <div class="jd-tagdata jd-tagdescr"><p>This method forces all registered watchers to run.
- See <code><a href="#registerWatcher(java.lang.String, com.android.uiautomator.core.UiWatcher)">registerWatcher(String, UiWatcher)</a></code></p></div>
-
-    </div>
-</div>
-
-
-<A NAME="setCompressedLayoutHeirarchy(boolean)"></A>
-
-<div class="jd-details api apilevel-18">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        public
-
-
-
-
-        void
-      </span>
-      <span class="sympad">setCompressedLayoutHeirarchy</span>
-      <span class="normal">(boolean compressed)</span>
-    </h4>
-    <div class="jd-details-descr">
-
-  <div class="jd-tagdata jd-tagdescr"><p>Enables or disables layout hierarchy compression.
-
- If compression is enabled, the layout hierarchy derived from the Acessibility
- framework will only contain nodes that are important for uiautomator
- testing. Any unnecessary surrounding layout nodes that make viewing
- and searching the hierarchy inefficient are removed.</p></div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Parameters</h5>
-      <table class="jd-tagtable">
-        <tr>
-          <th>compressed</td>
-          <td>true to enable compression; else, false to disable</td>
-        </tr>
-      </table>
-  </div>
-  <div class="jd-tagdata">
-     <h5 class="jd-tagtitle">Since</h5>
-     <ul class="nolist"><li>Android API Level 18</li></ul>
-  </div>
-    </div>
-</div>
-
-
-<A NAME="setOrientationLeft()"></A>
-
-<div class="jd-details api">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        public
-
-
-
-
-        void
-      </span>
-      <span class="sympad">setOrientationLeft</span>
-      <span class="normal">()</span>
-    </h4>
-    <div class="jd-details-descr">
-
-  <div class="jd-tagdata jd-tagdescr"><p>Simulates orienting the device to the left and also freezes rotation
- by disabling the sensors.
-
- If you want to un-freeze the rotation and re-enable the sensors
- see <code><a href="#unfreezeRotation()">unfreezeRotation()</a></code>.</p></div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Throws</h5>
-      <table class="jd-tagtable">
-        <tr>
-            <th></td>
-            <td>RemoteException</td>
-        </tr>
-        <tr>
-            <th>RemoteException</td>
-            <td></td>
-        </tr>
-      </table>
-  </div>
-  <div class="jd-tagdata">
-     <h5 class="jd-tagtitle">Since</h5>
-     <ul class="nolist"><li>Android API Level 17</li></ul>
-  </div>
-    </div>
-</div>
-
-
-<A NAME="setOrientationNatural()"></A>
-
-<div class="jd-details api">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        public
-
-
-
-
-        void
-      </span>
-      <span class="sympad">setOrientationNatural</span>
-      <span class="normal">()</span>
-    </h4>
-    <div class="jd-details-descr">
-
-  <div class="jd-tagdata jd-tagdescr"><p>Simulates orienting the device into its natural orientation and also freezes rotation
- by disabling the sensors.
-
- If you want to un-freeze the rotation and re-enable the sensors
- see <code><a href="#unfreezeRotation()">unfreezeRotation()</a></code>.</p></div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Throws</h5>
-      <table class="jd-tagtable">
-        <tr>
-            <th></td>
-            <td>RemoteException</td>
-        </tr>
-        <tr>
-            <th>RemoteException</td>
-            <td></td>
-        </tr>
-      </table>
-  </div>
-  <div class="jd-tagdata">
-     <h5 class="jd-tagtitle">Since</h5>
-     <ul class="nolist"><li>Android API Level 17</li></ul>
-  </div>
-    </div>
-</div>
-
-
-<A NAME="setOrientationRight()"></A>
-
-<div class="jd-details api">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        public
-
-
-
-
-        void
-      </span>
-      <span class="sympad">setOrientationRight</span>
-      <span class="normal">()</span>
-    </h4>
-    <div class="jd-details-descr">
-
-  <div class="jd-tagdata jd-tagdescr"><p>Simulates orienting the device to the right and also freezes rotation
- by disabling the sensors.
-
- If you want to un-freeze the rotation and re-enable the sensors
- see <code><a href="#unfreezeRotation()">unfreezeRotation()</a></code>.</p></div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Throws</h5>
-      <table class="jd-tagtable">
-        <tr>
-            <th></td>
-            <td>RemoteException</td>
-        </tr>
-        <tr>
-            <th>RemoteException</td>
-            <td></td>
-        </tr>
-      </table>
-  </div>
-  <div class="jd-tagdata">
-     <h5 class="jd-tagtitle">Since</h5>
-     <ul class="nolist"><li>Android API Level 17</li></ul>
-  </div>
-    </div>
-</div>
-
-
-<A NAME="sleep()"></A>
-
-<div class="jd-details api">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        public
-
-
-
-
-        void
-      </span>
-      <span class="sympad">sleep</span>
-      <span class="normal">()</span>
-    </h4>
-      <div class="api-level">
-        <div></div>
-
-
-
-      </div>
-    <div class="jd-details-descr">
-
-  <div class="jd-tagdata jd-tagdescr"><p>This method simply presses the power button if the screen is ON else
- it does nothing if the screen is already OFF.</p></div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Throws</h5>
-      <table class="jd-tagtable">
-        <tr>
-            <th></td>
-            <td>RemoteException</td>
-        </tr>
-        <tr>
-            <th>RemoteException</td>
-            <td></td>
-        </tr>
-      </table>
-  </div>
-
-    </div>
-</div>
-
-
-<A NAME="swipe(android.graphics.Point[], int)"></A>
-
-<div class="jd-details api">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        public
-
-
-
-
-        boolean
-      </span>
-      <span class="sympad">swipe</span>
-      <span class="normal">(Point[] segments, int segmentSteps)</span>
-    </h4>
-      <div class="api-level">
-        <div></div>
-
-
-
-      </div>
-    <div class="jd-details-descr">
-
-  <div class="jd-tagdata jd-tagdescr"><p>Performs a swipe between points in the Point array. Each step execution is throttled
- to 5ms per step. So for a 100 steps, the swipe will take about 1/2 second to complete</p></div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Parameters</h5>
-      <table class="jd-tagtable">
-        <tr>
-          <th>segments</td>
-          <td>is Point array containing at least one Point object</td>
-        </tr>
-        <tr>
-          <th>segmentSteps</td>
-          <td>steps to inject between two Points</td>
-        </tr>
-      </table>
-  </div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Returns</h5>
-      <ul class="nolist"><li>true on success</li></ul>
-  </div>
-
-    </div>
-</div>
-
-
-<A NAME="swipe(int, int, int, int, int)"></A>
-
-<div class="jd-details api">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        public
-
-
-
-
-        boolean
-      </span>
-      <span class="sympad">swipe</span>
-      <span class="normal">(int startX, int startY, int endX, int endY, int steps)</span>
-    </h4>
-      <div class="api-level">
-        <div></div>
-
-
-
-      </div>
-    <div class="jd-details-descr">
-
-  <div class="jd-tagdata jd-tagdescr"><p>Performs a swipe from one coordinate to another using the number of steps
- to determine smoothness and speed. Each step execution is throttled to 5ms
- per step. So for a 100 steps, the swipe will take about 1/2 second to complete.</p></div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Parameters</h5>
-      <table class="jd-tagtable">
-        <tr>
-          <th>steps</td>
-          <td>is the number of move steps sent to the system</td>
-        </tr>
-      </table>
-  </div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Returns</h5>
-      <ul class="nolist"><li>false if the operation fails or the coordinates are invalid</li></ul>
-  </div>
-
-    </div>
-</div>
-
-
-<A NAME="takeScreenshot(java.io.File)"></A>
-
-<div class="jd-details api">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        public
-
-
-
-
-        boolean
-      </span>
-      <span class="sympad">takeScreenshot</span>
-      <span class="normal">(File storePath)</span>
-    </h4>
-    <div class="jd-details-descr">
-
-  <div class="jd-tagdata jd-tagdescr"><p>Take a screenshot of current window and store it as PNG
-
- Default scale of 1.0f (original size) and 90% quality is used
- The screenshot is adjusted per screen rotation</p></div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Parameters</h5>
-      <table class="jd-tagtable">
-        <tr>
-          <th>storePath</td>
-          <td>where the PNG should be written to</td>
-        </tr>
-      </table>
-  </div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Returns</h5>
-      <ul class="nolist"><li>true if screen shot is created successfully, false otherwise</li></ul>
-  </div>
-  <div class="jd-tagdata">
-     <h5 class="jd-tagtitle">Since</h5>
-     <ul class="nolist"><li>Android API Level 17</li></ul>
-  </div>
-    </div>
-</div>
-
-
-<A NAME="takeScreenshot(java.io.File, float, int)"></A>
-
-<div class="jd-details api">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        public
-
-
-
-
-        boolean
-      </span>
-      <span class="sympad">takeScreenshot</span>
-      <span class="normal">(File storePath, float scale, int quality)</span>
-    </h4>
-    <div class="jd-details-descr">
-
-  <div class="jd-tagdata jd-tagdescr"><p>Take a screenshot of current window and store it as PNG
-
- The screenshot is adjusted per screen rotation</p></div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Parameters</h5>
-      <table class="jd-tagtable">
-        <tr>
-          <th>storePath</td>
-          <td>where the PNG should be written to</td>
-        </tr>
-        <tr>
-          <th>scale</td>
-          <td>scale the screenshot down if needed; 1.0f for original size</td>
-        </tr>
-        <tr>
-          <th>quality</td>
-          <td>quality of the PNG compression; range: 0-100</td>
-        </tr>
-      </table>
-  </div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Returns</h5>
-      <ul class="nolist"><li>true if screen shot is created successfully, false otherwise</li></ul>
-  </div>
-  <div class="jd-tagdata">
-     <h5 class="jd-tagtitle">Since</h5>
-     <ul class="nolist"><li>Android API Level 17</li></ul>
-  </div>
-    </div>
-</div>
-
-
-<A NAME="unfreezeRotation()"></A>
-
-<div class="jd-details api">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        public
-
-
-
-
-        void
-      </span>
-      <span class="sympad">unfreezeRotation</span>
-      <span class="normal">()</span>
-    </h4>
-      <div class="api-level">
-        <div></div>
-
-
-
-      </div>
-    <div class="jd-details-descr">
-
-  <div class="jd-tagdata jd-tagdescr"><p>Re-enables the sensors and un-freezes the device rotation allowing its contents
- to rotate with the device physical rotation. During a test execution, it is best to
- keep the device frozen in a specific orientation until the test case execution has completed.</p></div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Throws</h5>
-      <table class="jd-tagtable">
-        <tr>
-            <th>RemoteException</td>
-            <td></td>
-        </tr>
-      </table>
-  </div>
-
-    </div>
-</div>
-
-
-<A NAME="waitForIdle(long)"></A>
-
-<div class="jd-details api">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        public
-
-
-
-
-        void
-      </span>
-      <span class="sympad">waitForIdle</span>
-      <span class="normal">(long timeout)</span>
-    </h4>
-      <div class="api-level">
-        <div></div>
-
-
-
-      </div>
-    <div class="jd-details-descr">
-
-  <div class="jd-tagdata jd-tagdescr"><p>Waits for the current application to idle.</p></div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Parameters</h5>
-      <table class="jd-tagtable">
-        <tr>
-          <th>timeout</td>
-          <td>in milliseconds</td>
-        </tr>
-      </table>
-  </div>
-
-    </div>
-</div>
-
-
-<A NAME="waitForIdle()"></A>
-
-<div class="jd-details api">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        public
-
-
-
-
-        void
-      </span>
-      <span class="sympad">waitForIdle</span>
-      <span class="normal">()</span>
-    </h4>
-      <div class="api-level">
-        <div></div>
-
-
-
-      </div>
-    <div class="jd-details-descr">
-
-  <div class="jd-tagdata jd-tagdescr"><p>Waits for the current application to idle.
- Default wait timeout is 10 seconds</p></div>
-
-    </div>
-</div>
-
-
-<A NAME="waitForWindowUpdate(java.lang.String, long)"></A>
-
-<div class="jd-details api">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        public
-
-
-
-
-        boolean
-      </span>
-      <span class="sympad">waitForWindowUpdate</span>
-      <span class="normal">(String packageName, long timeout)</span>
-    </h4>
-      <div class="api-level">
-        <div></div>
-
-
-
-      </div>
-    <div class="jd-details-descr">
-
-  <div class="jd-tagdata jd-tagdescr"><p>Waits for a window content update event to occur.
-
- If a package name for the window is specified, but the current window
- does not have the same package name, the function returns immediately.</p></div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Parameters</h5>
-      <table class="jd-tagtable">
-        <tr>
-          <th>packageName</td>
-          <td>the specified window package name (can be <code>null</code>).
-        If <code>null</code>, a window update from any front-end window will end the wait</td>
-        </tr>
-        <tr>
-          <th>timeout</td>
-          <td>the timeout for the wait</td>
-        </tr>
-      </table>
-  </div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Returns</h5>
-      <ul class="nolist"><li>true if a window update occurred, false if timeout has elapsed or if the current
-         window does not have the specified package name</li></ul>
-  </div>
-
-    </div>
-</div>
-
-
-<A NAME="wakeUp()"></A>
-
-<div class="jd-details api">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        public
-
-
-
-
-        void
-      </span>
-      <span class="sympad">wakeUp</span>
-      <span class="normal">()</span>
-    </h4>
-      <div class="api-level">
-        <div></div>
-
-
-
-      </div>
-    <div class="jd-details-descr">
-
-  <div class="jd-tagdata jd-tagdescr"><p>This method simulates pressing the power button if the screen is OFF else
- it does nothing if the screen is already ON.
-
- If the screen was OFF and it just got turned ON, this method will insert a 500ms delay
- to allow the device time to wake up and accept input.</p></div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Throws</h5>
-      <table class="jd-tagtable">
-        <tr>
-            <th></td>
-            <td>RemoteException</td>
-        </tr>
-        <tr>
-            <th>RemoteException</td>
-            <td></td>
-        </tr>
-      </table>
-  </div>
-
-    </div>
-
-
-
-
-
-<!-- ========= METHOD DETAIL ======== -->
-
-
-
-
diff --git a/docs/html/tools/help/uiautomator/UiObject.jd b/docs/html/tools/help/uiautomator/UiObject.jd
deleted file mode 100644
index 4ce257b..0000000
--- a/docs/html/tools/help/uiautomator/UiObject.jd
+++ /dev/null
@@ -1,3543 +0,0 @@
-page.title=UiObject
-parent.title=uiautomator
-parent.link=index.html
-@jd:body
-<style>
-    h4.jd-details-title {background-color: #DEE8F1;}
-</style>
-<p>A <code><a href="#">UiObject</a></code> is a representation of a view. It is
-not in any way directly bound to a view as an object reference. A <code><a href="#">UiObject</a></code>
-contains information to help it locate a matching view at runtime based on the
-<code><a href="#UiSelector.html">UiSelector</a></code> properties specified in
-its constructor. Once you create an instance of a UiObject, it can be reused for
-different views that match the selector criteria.</p>
-
-<h2>Summary</h2>
-
-
-
-
-
-
-
-
-
-
-
-
-
-<!-- =========== ENUM CONSTANT SUMMARY =========== -->
-<table id="constants" class="jd-sumtable"><tr><th colspan="12">Constants</th></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol">int</td>
-        <td class="jd-linkcol"><a href="#FINGER_TOUCH_HALF_WIDTH">FINGER_TOUCH_HALF_WIDTH</a></td>
-        <td class="jd-descrcol" width="100%"></td>
-    </tr>
-
-
-    <tr class="api" >
-        <td class="jd-typecol">int</td>
-        <td class="jd-linkcol"><a href="#SWIPE_MARGIN_LIMIT">SWIPE_MARGIN_LIMIT</a></td>
-        <td class="jd-descrcol" width="100%"></td>
-    </tr>
-
-
-    <tr class="api" >
-        <td class="jd-typecol">long</td>
-        <td class="jd-linkcol"><a href="#WAIT_FOR_EVENT_TMEOUT">WAIT_FOR_EVENT_TMEOUT</a></td>
-        <td class="jd-descrcol" width="100%"><em>
-      This constant is deprecated.
-    use <code><a href="Configurator.html#setScrollAcknowledgmentTimeout(long)">setScrollAcknowledgmentTimeout(long)</a></code>
-</em></td>
-    </tr>
-
-
-    <tr class="api" >
-        <td class="jd-typecol">long</td>
-        <td class="jd-linkcol"><a href="#WAIT_FOR_SELECTOR_POLL">WAIT_FOR_SELECTOR_POLL</a></td>
-        <td class="jd-descrcol" width="100%"></td>
-    </tr>
-
-
-    <tr class="api" >
-        <td class="jd-typecol">long</td>
-        <td class="jd-linkcol"><a href="#WAIT_FOR_SELECTOR_TIMEOUT">WAIT_FOR_SELECTOR_TIMEOUT</a></td>
-        <td class="jd-descrcol" width="100%"><em>
-      This constant is deprecated.
-    use <code><a href="Configurator.html#setWaitForSelectorTimeout(long)">setWaitForSelectorTimeout(long)</a></code>
-</em></td>
-    </tr>
-
-
-    <tr class="api" >
-        <td class="jd-typecol">long</td>
-        <td class="jd-linkcol"><a href="#WAIT_FOR_WINDOW_TMEOUT">WAIT_FOR_WINDOW_TMEOUT</a></td>
-        <td class="jd-descrcol" width="100%"></td>
-    </tr>
-
-
-
-</table>
-
-
-
-
-
-
-
-
-
-
-
-
-<!-- ======== CONSTRUCTOR SUMMARY ======== -->
-<table id="pubctors" class="jd-sumtable"><tr><th colspan="12">Public Constructors</th></tr>
-
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            </nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="#UiObject(com.android.uiautomator.core.UiSelector)">UiObject</a></span>(<a href="UiSelector.html">UiSelector</a> selector)</nobr>
-
-        <div class="jd-descrdiv">Constructs a UiObject to represent a view that matches the specified
- selector criteria.</div>
-
-  </td></tr>
-
-
-
-</table>
-
-
-
-
-
-
-<!-- ========== METHOD SUMMARY =========== -->
-<table id="pubmethods" class="jd-sumtable"><tr><th colspan="12">Public Methods</th></tr>
-
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            void</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="#clearTextField()">clearTextField</a></span>()</nobr>
-
-        <div class="jd-descrdiv">Clears the existing text contents in an editable field.</div>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            boolean</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="#click()">click</a></span>()</nobr>
-
-        <div class="jd-descrdiv">Performs a click at the center of the visible bounds of the UI element represented
- by this UiObject.</div>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            boolean</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="#clickAndWaitForNewWindow(long)">clickAndWaitForNewWindow</a></span>(long timeout)</nobr>
-
-        <div class="jd-descrdiv">Performs a click at the center of the visible bounds of the UI element represented
- by this UiObject and waits for window transitions.</div>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            boolean</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="#clickAndWaitForNewWindow()">clickAndWaitForNewWindow</a></span>()</nobr>
-
-        <div class="jd-descrdiv">Waits for window transitions that would typically take longer than the
- usual default timeouts.</div>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            boolean</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="#clickBottomRight()">clickBottomRight</a></span>()</nobr>
-
-        <div class="jd-descrdiv">Clicks the bottom and right corner of the UI element</div>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            boolean</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="#clickTopLeft()">clickTopLeft</a></span>()</nobr>
-
-        <div class="jd-descrdiv">Clicks the top and left corner of the UI element</div>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            boolean</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="#dragTo(com.android.uiautomator.core.UiObject, int)">dragTo</a></span>(<a href="#">UiObject</a> destObj, int steps)</nobr>
-
-        <div class="jd-descrdiv">Drags this object to a destination UiObject.</div>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            boolean</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="#dragTo(int, int, int)">dragTo</a></span>(int destX, int destY, int steps)</nobr>
-
-        <div class="jd-descrdiv">Drags this object to arbitrary coordinates.</div>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            boolean</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="#exists()">exists</a></span>()</nobr>
-
-        <div class="jd-descrdiv">Check if view exists.</div>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            Rect</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="#getBounds()">getBounds</a></span>()</nobr>
-
-        <div class="jd-descrdiv">Returns the view's <code>bounds</code> property.</div>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            <a href="#">UiObject</a></nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="#getChild(com.android.uiautomator.core.UiSelector)">getChild</a></span>(<a href="UiSelector.html">UiSelector</a> selector)</nobr>
-
-        <div class="jd-descrdiv">Creates a new UiObject for a child view that is under the present UiObject.</div>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            int</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="#getChildCount()">getChildCount</a></span>()</nobr>
-
-        <div class="jd-descrdiv">Counts the child views immediately under the present UiObject.</div>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            String</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="#getClassName()">getClassName</a></span>()</nobr>
-
-        <div class="jd-descrdiv">Retrieves the <code>className</code> property of the UI element.</div>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            String</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="#getContentDescription()">getContentDescription</a></span>()</nobr>
-
-        <div class="jd-descrdiv">Reads the <code>content_desc</code> property of the UI element</div>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            <a href="#">UiObject</a></nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="#getFromParent(com.android.uiautomator.core.UiSelector)">getFromParent</a></span>(<a href="UiSelector.html">UiSelector</a> selector)</nobr>
-
-        <div class="jd-descrdiv">Creates a new UiObject for a sibling view or a child of the sibling view,
- relative to the present UiObject.</div>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            String</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="#getPackageName()">getPackageName</a></span>()</nobr>
-
-        <div class="jd-descrdiv">Reads the view's <code>package</code> property</div>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-            final
-
-
-            <a href="UiSelector.html">UiSelector</a></nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="#getSelector()">getSelector</a></span>()</nobr>
-
-        <div class="jd-descrdiv">Debugging helper.</div>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            String</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="#getText()">getText</a></span>()</nobr>
-
-        <div class="jd-descrdiv">Reads the <code>text</code> property of the UI element</div>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            Rect</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="#getVisibleBounds()">getVisibleBounds</a></span>()</nobr>
-
-        <div class="jd-descrdiv">Returns the visible bounds of the view.</div>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            boolean</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="#isCheckable()">isCheckable</a></span>()</nobr>
-
-        <div class="jd-descrdiv">Checks if the UI element's <code>checkable</code> property is currently true.</div>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            boolean</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="#isChecked()">isChecked</a></span>()</nobr>
-
-        <div class="jd-descrdiv">Check if the UI element's <code>checked</code> property is currently true</div>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            boolean</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="#isClickable()">isClickable</a></span>()</nobr>
-
-        <div class="jd-descrdiv">Checks if the UI element's <code>clickable</code> property is currently true.</div>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            boolean</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="#isEnabled()">isEnabled</a></span>()</nobr>
-
-        <div class="jd-descrdiv">Checks if the UI element's <code>enabled</code> property is currently true.</div>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            boolean</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="#isFocusable()">isFocusable</a></span>()</nobr>
-
-        <div class="jd-descrdiv">Check if the UI element's <code>focusable</code> property is currently true.</div>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            boolean</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="#isFocused()">isFocused</a></span>()</nobr>
-
-        <div class="jd-descrdiv">Check if the UI element's <code>focused</code> property is currently true</div>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            boolean</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="#isLongClickable()">isLongClickable</a></span>()</nobr>
-
-        <div class="jd-descrdiv">Check if the view's <code>long-clickable</code> property is currently true</div>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            boolean</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="#isScrollable()">isScrollable</a></span>()</nobr>
-
-        <div class="jd-descrdiv">Check if the view's <code>scrollable</code> property is currently true</div>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            boolean</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="#isSelected()">isSelected</a></span>()</nobr>
-
-        <div class="jd-descrdiv">Checks if the UI element's <code>selected</code> property is currently true.</div>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            boolean</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="#longClick()">longClick</a></span>()</nobr>
-
-        <div class="jd-descrdiv">Long clicks the center of the visible bounds of the UI element</div>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            boolean</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="#longClickBottomRight()">longClickBottomRight</a></span>()</nobr>
-
-        <div class="jd-descrdiv">Long clicks bottom and right corner of the UI element</div>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            boolean</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="#longClickTopLeft()">longClickTopLeft</a></span>()</nobr>
-
-        <div class="jd-descrdiv">Long clicks on the top and left corner of the UI element</div>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            boolean</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="#performMultiPointerGesture(android.view.MotionEvent.PointerCoords[]...)">performMultiPointerGesture</a></span>(PointerCoords... touches)</nobr>
-
-        <div class="jd-descrdiv">Performs a multi-touch gesture.</div>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            boolean</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="#performTwoPointerGesture(android.graphics.Point, android.graphics.Point, android.graphics.Point, android.graphics.Point, int)">performTwoPointerGesture</a></span>(Point startPoint1, Point startPoint2, Point endPoint1, Point endPoint2, int steps)</nobr>
-
-        <div class="jd-descrdiv">Generates a two-pointer gesture with arbitrary starting and ending points.</div>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            boolean</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="#pinchIn(int, int)">pinchIn</a></span>(int percent, int steps)</nobr>
-
-        <div class="jd-descrdiv">Performs a two-pointer gesture, where each pointer moves diagonally
- toward the other, from the edges to the center of this UiObject .</div>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            boolean</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="#pinchOut(int, int)">pinchOut</a></span>(int percent, int steps)</nobr>
-
-        <div class="jd-descrdiv">Performs a two-pointer gesture, where each pointer moves diagonally
- opposite across the other, from the center out towards the edges of the
- this UiObject.</div>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            boolean</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="#setText(java.lang.String)">setText</a></span>(String text)</nobr>
-
-        <div class="jd-descrdiv">Sets the text in an editable field, after clearing the field's content.</div>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            boolean</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="#swipeDown(int)">swipeDown</a></span>(int steps)</nobr>
-
-        <div class="jd-descrdiv">Performs the swipe down action on the UiObject.</div>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            boolean</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="#swipeLeft(int)">swipeLeft</a></span>(int steps)</nobr>
-
-        <div class="jd-descrdiv">Performs the swipe left action on the UiObject.</div>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            boolean</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="#swipeRight(int)">swipeRight</a></span>(int steps)</nobr>
-
-        <div class="jd-descrdiv">Performs the swipe right action on the UiObject.</div>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            boolean</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="#swipeUp(int)">swipeUp</a></span>(int steps)</nobr>
-
-        <div class="jd-descrdiv">Performs the swipe up action on the UiObject.</div>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            boolean</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="#waitForExists(long)">waitForExists</a></span>(long timeout)</nobr>
-
-        <div class="jd-descrdiv">Waits a specified length of time for a view to become visible.</div>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            boolean</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="#waitUntilGone(long)">waitUntilGone</a></span>(long timeout)</nobr>
-
-        <div class="jd-descrdiv">Waits a specified length of time for a view to become undetectable.</div>
-
-  </td></tr>
-
-
-
-</table>
-
-
-
-
-<!-- ========== METHOD SUMMARY =========== -->
-<table id="promethods" class="jd-sumtable"><tr><th colspan="12">Protected Methods</th></tr>
-
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            AccessibilityNodeInfo</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="#findAccessibilityNodeInfo(long)">findAccessibilityNodeInfo</a></span>(long timeout)</nobr>
-
-        <div class="jd-descrdiv">Finds a matching UI element in the accessibility hierarchy, by
- using the selector for this UiObject.</div>
-
-  </td></tr>
-
-
-
-</table>
-
-
-
-
-
-<!-- ========== METHOD SUMMARY =========== -->
-<table id="inhmethods" class="jd-sumtable"><tr><th>
-  <a href="#" class="toggle-all" onclick="return toggleAllInherited(this, null)">[Expand]</a>
-  <div style="clear:left;">Inherited Methods</div></th></tr>
-
-
-<tr class="api" >
-<td colspan="12">
-  <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
-          ><img id="inherited-methods-java.lang.Object-trigger"
-          src="../../../../../assets/images/styles/disclosure_down.png"
-          class="jd-expando-trigger-img" /></a>
-From class
-
-  java.lang.Object
-
-<div id="inherited-methods-java.lang.Object">
-  <div id="inherited-methods-java.lang.Object-list"
-        class="jd-inheritedlinks">
-  </div>
-  <div id="inherited-methods-java.lang.Object-summary" style="display: none;">
-    <table class="jd-sumtable-expando">
-
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            Object</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">clone</span>()</nobr>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            boolean</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">equals</span>(Object arg0)</nobr>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            void</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">finalize</span>()</nobr>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-            final
-
-
-            Class&lt;?&gt;</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">getClass</span>()</nobr>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            int</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">hashCode</span>()</nobr>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-            final
-
-
-            void</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">notify</span>()</nobr>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-            final
-
-
-            void</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">notifyAll</span>()</nobr>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            String</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">toString</span>()</nobr>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-            final
-
-
-            void</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">wait</span>()</nobr>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-            final
-
-
-            void</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">wait</span>(long arg0, int arg1)</nobr>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-            final
-
-
-            void</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">wait</span>(long arg0)</nobr>
-
-  </td></tr>
-
-
-</table>
-  </div>
-</div>
-</td></tr>
-
-
-</table>
-
-
-</div><!-- jd-descr (summary) -->
-
-<!-- Details -->
-
-
-
-
-
-
-
-
-<!-- XML Attributes -->
-
-
-<!-- Enum Values -->
-
-
-<!-- Constants -->
-
-
-<!-- ========= ENUM CONSTANTS DETAIL ======== -->
-<h2>Constants</h2>
-
-
-
-
-<A NAME="FINGER_TOUCH_HALF_WIDTH"></A>
-
-<div class="jd-details api">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        protected
-        static
-        final
-        int
-      </span>
-        FINGER_TOUCH_HALF_WIDTH
-    </h4>
-      <div class="api-level">
-
-
-
-
-      </div>
-    <div class="jd-details-descr">
-
-  <div class="jd-tagdata jd-tagdescr"><p></p></div>
-
-
-        <div class="jd-tagdata">
-        <span class="jd-tagtitle">Constant Value: </span>
-        <span>
-
-                20
-                (0x00000014)
-
-        </span>
-        </div>
-
-    </div>
-</div>
-
-
-
-<A NAME="SWIPE_MARGIN_LIMIT"></A>
-
-<div class="jd-details api">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        protected
-        static
-        final
-        int
-      </span>
-        SWIPE_MARGIN_LIMIT
-    </h4>
-      <div class="api-level">
-
-
-
-
-      </div>
-    <div class="jd-details-descr">
-
-  <div class="jd-tagdata jd-tagdescr"><p></p></div>
-
-
-        <div class="jd-tagdata">
-        <span class="jd-tagtitle">Constant Value: </span>
-        <span>
-
-                5
-                (0x00000005)
-
-        </span>
-        </div>
-
-    </div>
-</div>
-
-
-
-<A NAME="WAIT_FOR_EVENT_TMEOUT"></A>
-
-<div class="jd-details api">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        protected
-        static
-        final
-        long
-      </span>
-        WAIT_FOR_EVENT_TMEOUT
-    </h4>
-      <div class="api-level">
-
-
-
-
-      </div>
-    <div class="jd-details-descr">
-      <p>
-  <p class="caution"><strong>
-      This constant is deprecated.</strong><br/>
-    use <code><a href="Configurator.html#setScrollAcknowledgmentTimeout(long)">setScrollAcknowledgmentTimeout(long)</a></code>
-
-  </p>
-  <div class="jd-tagdata jd-tagdescr"><p></p></div>
-
-
-        <div class="jd-tagdata">
-        <span class="jd-tagtitle">Constant Value: </span>
-        <span>
-
-                3000
-                (0x0000000000000bb8)
-
-        </span>
-        </div>
-
-    </div>
-</div>
-
-
-
-<A NAME="WAIT_FOR_SELECTOR_POLL"></A>
-
-<div class="jd-details api">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        protected
-        static
-        final
-        long
-      </span>
-        WAIT_FOR_SELECTOR_POLL
-    </h4>
-      <div class="api-level">
-
-
-
-
-      </div>
-    <div class="jd-details-descr">
-
-  <div class="jd-tagdata jd-tagdescr"><p></p></div>
-
-
-        <div class="jd-tagdata">
-        <span class="jd-tagtitle">Constant Value: </span>
-        <span>
-
-                1000
-                (0x00000000000003e8)
-
-        </span>
-        </div>
-
-    </div>
-</div>
-
-
-
-<A NAME="WAIT_FOR_SELECTOR_TIMEOUT"></A>
-
-<div class="jd-details api">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        protected
-        static
-        final
-        long
-      </span>
-        WAIT_FOR_SELECTOR_TIMEOUT
-    </h4>
-      <div class="api-level">
-
-
-
-
-      </div>
-    <div class="jd-details-descr">
-      <p>
-  <p class="caution"><strong>
-      This constant is deprecated.</strong><br/>
-    use <code><a href="Configurator.html#setWaitForSelectorTimeout(long)">setWaitForSelectorTimeout(long)</a></code>
-
-  </p>
-  <div class="jd-tagdata jd-tagdescr"><p></p></div>
-
-
-        <div class="jd-tagdata">
-        <span class="jd-tagtitle">Constant Value: </span>
-        <span>
-
-                10000
-                (0x0000000000002710)
-
-        </span>
-        </div>
-
-    </div>
-</div>
-
-
-
-<A NAME="WAIT_FOR_WINDOW_TMEOUT"></A>
-
-<div class="jd-details api">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        protected
-        static
-        final
-        long
-      </span>
-        WAIT_FOR_WINDOW_TMEOUT
-    </h4>
-      <div class="api-level">
-
-
-
-
-      </div>
-    <div class="jd-details-descr">
-
-  <div class="jd-tagdata jd-tagdescr"><p></p></div>
-
-
-        <div class="jd-tagdata">
-        <span class="jd-tagtitle">Constant Value: </span>
-        <span>
-
-                5500
-                (0x000000000000157c)
-
-        </span>
-        </div>
-
-    </div>
-</div>
-
-
-
-
-<!-- Fields -->
-
-
-<!-- Public ctors -->
-
-
-<!-- ========= CONSTRUCTOR DETAIL ======== -->
-<h2>Public Constructors</h2>
-
-
-
-<A NAME="UiObject(com.android.uiautomator.core.UiSelector)"></A>
-
-<div class="jd-details api">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        public
-
-
-
-
-
-      </span>
-      <span class="sympad">UiObject</span>
-      <span class="normal">(<a href="UiSelector.html">UiSelector</a> selector)</span>
-    </h4>
-      <div class="api-level">
-        <div></div>
-
-
-
-      </div>
-    <div class="jd-details-descr">
-
-  <div class="jd-tagdata jd-tagdescr"><p>Constructs a UiObject to represent a view that matches the specified
- selector criteria.</p></div>
-
-    </div>
-</div>
-
-
-
-
-
-<!-- ========= CONSTRUCTOR DETAIL ======== -->
-<!-- Protected ctors -->
-
-
-
-<!-- ========= METHOD DETAIL ======== -->
-<!-- Public methdos -->
-
-<h2>Public Methods</h2>
-
-
-
-<A NAME="clearTextField()"></A>
-
-<div class="jd-details api">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        public
-
-
-
-
-        void
-      </span>
-      <span class="sympad">clearTextField</span>
-      <span class="normal">()</span>
-    </h4>
-      <div class="api-level">
-        <div></div>
-
-
-
-      </div>
-    <div class="jd-details-descr">
-
-  <div class="jd-tagdata jd-tagdescr"><p>Clears the existing text contents in an editable field.
-
- The <code><a href="UiSelector.html">UiSelector</a></code> of this object must reference a UI element that is editable.
-
- When you call this method, the method first sets focus at the start edge of the field.
- The method then simulates a long-press to select the existing text, and deletes the
- selected text.
-
- If a "Select-All" option is displayed, the method will automatically attempt to use it
- to ensure full text selection.
-
- Note that it is possible that not all the text in the field is selected; for example,
- if the text contains separators such as spaces, slashes, at symbol etc.
- Also, not all editable fields support the long-press functionality.</p></div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Throws</h5>
-      <table class="jd-tagtable">
-
-        <tr>
-            <th><a href="UiObjectNotFoundException.html">UiObjectNotFoundException</a></td>
-            <td></td>
-        </tr>
-      </table>
-  </div>
-
-    </div>
-</div>
-
-
-<A NAME="click()"></A>
-
-<div class="jd-details api">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        public
-
-
-
-
-        boolean
-      </span>
-      <span class="sympad">click</span>
-      <span class="normal">()</span>
-    </h4>
-      <div class="api-level">
-        <div></div>
-
-
-
-      </div>
-    <div class="jd-details-descr">
-
-  <div class="jd-tagdata jd-tagdescr"><p>Performs a click at the center of the visible bounds of the UI element represented
- by this UiObject.</p></div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Returns</h5>
-      <ul class="nolist"><li>true id successful else false</li></ul>
-  </div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Throws</h5>
-      <table class="jd-tagtable">
-
-        <tr>
-            <th><a href="UiObjectNotFoundException.html">UiObjectNotFoundException</a></td>
-            <td></td>
-        </tr>
-      </table>
-  </div>
-
-    </div>
-</div>
-
-
-<A NAME="clickAndWaitForNewWindow(long)"></A>
-
-<div class="jd-details api">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        public
-
-
-
-
-        boolean
-      </span>
-      <span class="sympad">clickAndWaitForNewWindow</span>
-      <span class="normal">(long timeout)</span>
-    </h4>
-      <div class="api-level">
-        <div></div>
-
-
-
-      </div>
-    <div class="jd-details-descr">
-
-  <div class="jd-tagdata jd-tagdescr"><p>Performs a click at the center of the visible bounds of the UI element represented
- by this UiObject and waits for window transitions.
-
- This method differ from <code><a href="#click()">click()</a></code> only in that this method waits for a
- a new window transition as a result of the click. Some examples of a window transition:
- <li>launching a new activity</li>
- <li>bringing up a pop-up menu</li>
- <li>bringing up a dialog</li></p></div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Parameters</h5>
-      <table class="jd-tagtable">
-        <tr>
-          <th>timeout</td>
-          <td>timeout before giving up on waiting for a new window</td>
-        </tr>
-      </table>
-  </div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Returns</h5>
-      <ul class="nolist"><li>true if the event was triggered, else false</li></ul>
-  </div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Throws</h5>
-      <table class="jd-tagtable">
-
-        <tr>
-            <th><a href="UiObjectNotFoundException.html">UiObjectNotFoundException</a></td>
-            <td></td>
-        </tr>
-      </table>
-  </div>
-
-    </div>
-</div>
-
-
-<A NAME="clickAndWaitForNewWindow()"></A>
-
-<div class="jd-details api">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        public
-
-
-
-
-        boolean
-      </span>
-      <span class="sympad">clickAndWaitForNewWindow</span>
-      <span class="normal">()</span>
-    </h4>
-      <div class="api-level">
-        <div></div>
-
-
-
-      </div>
-    <div class="jd-details-descr">
-
-  <div class="jd-tagdata jd-tagdescr"><p>Waits for window transitions that would typically take longer than the
- usual default timeouts.
- See <code><a href="#clickAndWaitForNewWindow(long)">clickAndWaitForNewWindow(long)</a></code></p></div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Returns</h5>
-      <ul class="nolist"><li>true if the event was triggered, else false</li></ul>
-  </div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Throws</h5>
-      <table class="jd-tagtable">
-
-        <tr>
-            <th><a href="UiObjectNotFoundException.html">UiObjectNotFoundException</a></td>
-            <td></td>
-        </tr>
-      </table>
-  </div>
-
-    </div>
-</div>
-
-
-<A NAME="clickBottomRight()"></A>
-
-<div class="jd-details api">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        public
-
-
-
-
-        boolean
-      </span>
-      <span class="sympad">clickBottomRight</span>
-      <span class="normal">()</span>
-    </h4>
-      <div class="api-level">
-        <div></div>
-
-
-
-      </div>
-    <div class="jd-details-descr">
-
-  <div class="jd-tagdata jd-tagdescr"><p>Clicks the bottom and right corner of the UI element</p></div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Returns</h5>
-      <ul class="nolist"><li>true on success</li></ul>
-  </div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Throws</h5>
-      <table class="jd-tagtable">
-
-        <tr>
-            <th><a href="UiObjectNotFoundException.html">UiObjectNotFoundException</a></td>
-            <td></td>
-        </tr>
-      </table>
-  </div>
-
-    </div>
-</div>
-
-
-<A NAME="clickTopLeft()"></A>
-
-<div class="jd-details api">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        public
-
-
-
-
-        boolean
-      </span>
-      <span class="sympad">clickTopLeft</span>
-      <span class="normal">()</span>
-    </h4>
-      <div class="api-level">
-        <div></div>
-
-
-
-      </div>
-    <div class="jd-details-descr">
-
-  <div class="jd-tagdata jd-tagdescr"><p>Clicks the top and left corner of the UI element</p></div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Returns</h5>
-      <ul class="nolist"><li>true on success</li></ul>
-  </div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Throws</h5>
-      <table class="jd-tagtable">
-
-        <tr>
-            <th><a href="UiObjectNotFoundException.html">UiObjectNotFoundException</a></td>
-            <td></td>
-        </tr>
-      </table>
-  </div>
-
-    </div>
-</div>
-
-
-<A NAME="dragTo(com.android.uiautomator.core.UiObject, int)"></A>
-
-<div class="jd-details api">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        public
-
-
-
-
-        boolean
-      </span>
-      <span class="sympad">dragTo</span>
-      <span class="normal">(<a href="#">UiObject</a> destObj, int steps)</span>
-    </h4>
-    <div class="jd-details-descr">
-
-  <div class="jd-tagdata jd-tagdescr"><p>Drags this object to a destination UiObject.
- The number of steps specified in your input parameter can influence the
- drag speed, and varying speeds may impact the results. Consider
- evaluating different speeds when using this method in your tests.</p></div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Parameters</h5>
-      <table class="jd-tagtable">
-        <tr>
-          <th>destObj</td>
-          <td>the destination UiObject.</td>
-        </tr>
-        <tr>
-          <th>steps</td>
-          <td>usually 40 steps. You can increase or decrease the steps to change the speed.</td>
-        </tr>
-      </table>
-  </div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Returns</h5>
-      <ul class="nolist"><li>true if successful</li></ul>
-  </div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Throws</h5>
-      <table class="jd-tagtable">
-
-        <tr>
-            <th><a href="UiObjectNotFoundException.html">UiObjectNotFoundException</a></td>
-            <td></td>
-        </tr>
-      </table>
-  </div>
- <div class="jd-tagdata">
-     <h5 class="jd-tagtitle">Since</h5>
-     <ul class="nolist"><li>Android API Level 18</li></ul>
-  </div>
-    </div>
-</div>
-
-
-<A NAME="dragTo(int, int, int)"></A>
-
-<div class="jd-details api">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        public
-
-
-
-
-        boolean
-      </span>
-      <span class="sympad">dragTo</span>
-      <span class="normal">(int destX, int destY, int steps)</span>
-    </h4>
-    <div class="jd-details-descr">
-
-  <div class="jd-tagdata jd-tagdescr"><p>Drags this object to arbitrary coordinates.
- The number of steps specified in your input parameter can influence the
- drag speed, and varying speeds may impact the results. Consider
- evaluating different speeds when using this method in your tests.</p></div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Parameters</h5>
-      <table class="jd-tagtable">
-        <tr>
-          <th>destX</td>
-          <td>the X-axis coordinate.</td>
-        </tr>
-        <tr>
-          <th>destY</td>
-          <td>the Y-axis coordinate.</td>
-        </tr>
-        <tr>
-          <th>steps</td>
-          <td>usually 40 steps. You can increase or decrease the steps to change the speed.</td>
-        </tr>
-      </table>
-  </div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Returns</h5>
-      <ul class="nolist"><li>true if successful</li></ul>
-  </div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Throws</h5>
-      <table class="jd-tagtable">
-
-        <tr>
-            <th><a href="UiObjectNotFoundException.html">UiObjectNotFoundException</a></td>
-            <td></td>
-        </tr>
-      </table>
-  </div>
-  <div class="jd-tagdata">
-     <h5 class="jd-tagtitle">Since</h5>
-     <ul class="nolist"><li>Android API Level 18</li></ul>
-  </div>
-    </div>
-</div>
-
-
-<A NAME="exists()"></A>
-
-<div class="jd-details api">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        public
-
-
-
-
-        boolean
-      </span>
-      <span class="sympad">exists</span>
-      <span class="normal">()</span>
-    </h4>
-      <div class="api-level">
-        <div></div>
-
-
-
-      </div>
-    <div class="jd-details-descr">
-
-  <div class="jd-tagdata jd-tagdescr"><p>Check if view exists.
-
- This methods performs a <code><a href="#waitForExists(long)">waitForExists(long)</a></code> with zero timeout. This
- basically returns immediately whether the view represented by this UiObject
- exists or not. If you need to wait longer for this view, then see
- <code><a href="#waitForExists(long)">waitForExists(long)</a></code>.</p></div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Returns</h5>
-      <ul class="nolist"><li>true if the view represented by this UiObject does exist</li></ul>
-  </div>
-
-    </div>
-</div>
-
-
-<A NAME="getBounds()"></A>
-
-<div class="jd-details api">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        public
-
-
-
-
-        Rect
-      </span>
-      <span class="sympad">getBounds</span>
-      <span class="normal">()</span>
-    </h4>
-      <div class="api-level">
-        <div></div>
-
-
-
-      </div>
-    <div class="jd-details-descr">
-
-  <div class="jd-tagdata jd-tagdescr"><p>Returns the view's <code>bounds</code> property. See <code><a href="#getVisibleBounds()">getVisibleBounds()</a></code></p></div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Returns</h5>
-      <ul class="nolist"><li>Rect</li></ul>
-  </div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Throws</h5>
-      <table class="jd-tagtable">
-
-        <tr>
-            <th><a href="UiObjectNotFoundException.html">UiObjectNotFoundException</a></td>
-            <td></td>
-        </tr>
-      </table>
-  </div>
-
-    </div>
-</div>
-
-
-<A NAME="getChild(com.android.uiautomator.core.UiSelector)"></A>
-
-<div class="jd-details api">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        public
-
-
-
-
-        <a href="#">UiObject</a>
-      </span>
-      <span class="sympad">getChild</span>
-      <span class="normal">(<a href="UiSelector.html">UiSelector</a> selector)</span>
-    </h4>
-      <div class="api-level">
-        <div></div>
-
-
-
-      </div>
-    <div class="jd-details-descr">
-
-  <div class="jd-tagdata jd-tagdescr"><p>Creates a new UiObject for a child view that is under the present UiObject.</p></div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Parameters</h5>
-      <table class="jd-tagtable">
-        <tr>
-          <th>selector</td>
-          <td>for child view to match</td>
-        </tr>
-      </table>
-  </div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Returns</h5>
-      <ul class="nolist"><li>a new UiObject representing the child view</li></ul>
-  </div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Throws</h5>
-      <table class="jd-tagtable">
-        <tr>
-            <th><a href="UiObjectNotFoundException.html">UiObjectNotFoundException</a></td>
-            <td></td>
-        </tr>
-      </table>
-  </div>
-
-    </div>
-</div>
-
-
-<A NAME="getChildCount()"></A>
-
-<div class="jd-details api">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        public
-
-
-
-
-        int
-      </span>
-      <span class="sympad">getChildCount</span>
-      <span class="normal">()</span>
-    </h4>
-      <div class="api-level">
-        <div></div>
-
-
-
-      </div>
-    <div class="jd-details-descr">
-
-  <div class="jd-tagdata jd-tagdescr"><p>Counts the child views immediately under the present UiObject.</p></div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Returns</h5>
-      <ul class="nolist"><li>the count of child views.</li></ul>
-  </div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Throws</h5>
-      <table class="jd-tagtable">
-
-        <tr>
-            <th><a href="UiObjectNotFoundException.html">UiObjectNotFoundException</a></td>
-            <td></td>
-        </tr>
-      </table>
-  </div>
-
-    </div>
-</div>
-
-
-<A NAME="getClassName()"></A>
-
-<div class="jd-details api">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        public
-
-
-
-
-        String
-      </span>
-      <span class="sympad">getClassName</span>
-      <span class="normal">()</span>
-    </h4>
-    <div class="jd-details-descr">
-
-  <div class="jd-tagdata jd-tagdescr"><p>Retrieves the <code>className</code> property of the UI element.</p></div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Returns</h5>
-      <ul class="nolist"><li>class name of the current node represented by this UiObject</li></ul>
-  </div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Throws</h5>
-      <table class="jd-tagtable">
-        <tr>
-            <th><a href="UiObjectNotFoundException.html">UiObjectNotFoundException</a></td>
-            <td>if no match was found</td>
-        </tr>
-      </table>
-  </div>
-  <div class="jd-tagdata">
-     <h5 class="jd-tagtitle">Since</h5>
-     <ul class="nolist"><li>Android API Level 18</li></ul>
-  </div>
-    </div>
-</div>
-
-
-<A NAME="getContentDescription()"></A>
-
-<div class="jd-details api">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        public
-
-
-
-
-        String
-      </span>
-      <span class="sympad">getContentDescription</span>
-      <span class="normal">()</span>
-    </h4>
-      <div class="api-level">
-        <div></div>
-
-
-
-      </div>
-    <div class="jd-details-descr">
-
-  <div class="jd-tagdata jd-tagdescr"><p>Reads the <code>content_desc</code> property of the UI element</p></div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Returns</h5>
-      <ul class="nolist"><li>value of node attribute "content_desc"</li></ul>
-  </div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Throws</h5>
-      <table class="jd-tagtable">
-
-        <tr>
-            <th><a href="UiObjectNotFoundException.html">UiObjectNotFoundException</a></td>
-            <td></td>
-        </tr>
-      </table>
-  </div>
-
-    </div>
-</div>
-
-
-<A NAME="getFromParent(com.android.uiautomator.core.UiSelector)"></A>
-
-<div class="jd-details api">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        public
-
-
-
-
-        <a href="#">UiObject</a>
-      </span>
-      <span class="sympad">getFromParent</span>
-      <span class="normal">(<a href="UiSelector.html">UiSelector</a> selector)</span>
-    </h4>
-      <div class="api-level">
-        <div></div>
-
-
-
-      </div>
-    <div class="jd-details-descr">
-
-  <div class="jd-tagdata jd-tagdescr"><p>Creates a new UiObject for a sibling view or a child of the sibling view,
- relative to the present UiObject.</p></div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Parameters</h5>
-      <table class="jd-tagtable">
-        <tr>
-          <th>selector</td>
-          <td>for a sibling view or children of the sibling view</td>
-        </tr>
-      </table>
-  </div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Returns</h5>
-      <ul class="nolist"><li>a new UiObject representing the matched view</li></ul>
-  </div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Throws</h5>
-      <table class="jd-tagtable">
-
-        <tr>
-            <th><a href="UiObjectNotFoundException.html">UiObjectNotFoundException</a></td>
-            <td></td>
-        </tr>
-      </table>
-  </div>
-
-    </div>
-</div>
-
-
-<A NAME="getPackageName()"></A>
-
-<div class="jd-details api">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        public
-
-
-
-
-        String
-      </span>
-      <span class="sympad">getPackageName</span>
-      <span class="normal">()</span>
-    </h4>
-      <div class="api-level">
-        <div></div>
-
-
-
-      </div>
-    <div class="jd-details-descr">
-
-  <div class="jd-tagdata jd-tagdescr"><p>Reads the view's <code>package</code> property</p></div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Returns</h5>
-      <ul class="nolist"><li>true if it is else false</li></ul>
-  </div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Throws</h5>
-      <table class="jd-tagtable">
-
-        <tr>
-            <th><a href="UiObjectNotFoundException.html">UiObjectNotFoundException</a></td>
-            <td></td>
-        </tr>
-      </table>
-  </div>
-
-    </div>
-</div>
-
-
-<A NAME="getSelector()"></A>
-
-<div class="jd-details api">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        public
-
-        final
-
-
-        <a href="UiSelector.html">UiSelector</a>
-      </span>
-      <span class="sympad">getSelector</span>
-      <span class="normal">()</span>
-    </h4>
-      <div class="api-level">
-        <div></div>
-
-
-
-      </div>
-    <div class="jd-details-descr">
-
-  <div class="jd-tagdata jd-tagdescr"><p>Debugging helper. A test can dump the properties of a selector as a string
- to its logs if needed. <code>getSelector().toString();</code></p></div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Returns</h5>
-      <ul class="nolist"><li><code><a href="UiSelector.html">UiSelector</a></code></li></ul>
-  </div>
-
-    </div>
-</div>
-
-
-<A NAME="getText()"></A>
-
-<div class="jd-details api">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        public
-
-
-
-
-        String
-      </span>
-      <span class="sympad">getText</span>
-      <span class="normal">()</span>
-    </h4>
-      <div class="api-level">
-        <div></div>
-
-
-
-      </div>
-    <div class="jd-details-descr">
-
-  <div class="jd-tagdata jd-tagdescr"><p>Reads the <code>text</code> property of the UI element</p></div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Returns</h5>
-      <ul class="nolist"><li>text value of the current node represented by this UiObject</li></ul>
-  </div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Throws</h5>
-      <table class="jd-tagtable">
-        <tr>
-            <th><a href="UiObjectNotFoundException.html">UiObjectNotFoundException</a></td>
-            <td>if no match could be found</td>
-        </tr>
-      </table>
-  </div>
-
-    </div>
-</div>
-
-
-<A NAME="getVisibleBounds()"></A>
-
-<div class="jd-details api">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        public
-
-
-
-
-        Rect
-      </span>
-      <span class="sympad">getVisibleBounds</span>
-      <span class="normal">()</span>
-    </h4>
-    <div class="jd-details-descr">
-
-  <div class="jd-tagdata jd-tagdescr"><p>Returns the visible bounds of the view.
-
- If a portion of the view is visible, only the bounds of the visible portion are
- reported.</p></div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Returns</h5>
-      <ul class="nolist"><li>Rect</li></ul>
-  </div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Throws</h5>
-      <table class="jd-tagtable">
-
-        <tr>
-            <th><a href="UiObjectNotFoundException.html">UiObjectNotFoundException</a></td>
-            <td></td>
-        </tr>
-      </table>
-  </div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">See Also</h5>
-      <ul class="nolist"><li><code><a href="#getBounds()">getBounds()</a></code></li>
-      </ul>
-  </div>
-  <div class="jd-tagdata">
-     <h5 class="jd-tagtitle">Since</h5>
-     <ul class="nolist"><li>Android API Level 17</li></ul>
-  </div>
-    </div>
-</div>
-
-
-<A NAME="isCheckable()"></A>
-
-<div class="jd-details api">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        public
-
-
-
-
-        boolean
-      </span>
-      <span class="sympad">isCheckable</span>
-      <span class="normal">()</span>
-    </h4>
-      <div class="api-level">
-        <div></div>
-
-
-
-      </div>
-    <div class="jd-details-descr">
-
-  <div class="jd-tagdata jd-tagdescr"><p>Checks if the UI element's <code>checkable</code> property is currently true.</p></div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Returns</h5>
-      <ul class="nolist"><li>true if it is else false</li></ul>
-  </div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Throws</h5>
-      <table class="jd-tagtable">
-
-        <tr>
-            <th><a href="UiObjectNotFoundException.html">UiObjectNotFoundException</a></td>
-            <td></td>
-        </tr>
-      </table>
-  </div>
-
-    </div>
-</div>
-
-
-<A NAME="isChecked()"></A>
-
-<div class="jd-details api">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        public
-
-
-
-
-        boolean
-      </span>
-      <span class="sympad">isChecked</span>
-      <span class="normal">()</span>
-    </h4>
-      <div class="api-level">
-        <div></div>
-
-
-
-      </div>
-    <div class="jd-details-descr">
-
-  <div class="jd-tagdata jd-tagdescr"><p>Check if the UI element's <code>checked</code> property is currently true</p></div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Returns</h5>
-      <ul class="nolist"><li>true if it is else false</li></ul>
-  </div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Throws</h5>
-      <table class="jd-tagtable">
-        <tr>
-            <th><a href="UiObjectNotFoundException.html">UiObjectNotFoundException</a></td>
-            <td></td>
-        </tr>
-      </table>
-  </div>
-
-    </div>
-</div>
-
-
-<A NAME="isClickable()"></A>
-
-<div class="jd-details api">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        public
-
-
-
-
-        boolean
-      </span>
-      <span class="sympad">isClickable</span>
-      <span class="normal">()</span>
-    </h4>
-      <div class="api-level">
-        <div></div>
-
-
-
-      </div>
-    <div class="jd-details-descr">
-
-  <div class="jd-tagdata jd-tagdescr"><p>Checks if the UI element's <code>clickable</code> property is currently true.</p></div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Returns</h5>
-      <ul class="nolist"><li>true if it is else false</li></ul>
-  </div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Throws</h5>
-      <table class="jd-tagtable">
-
-        <tr>
-            <th><a href="UiObjectNotFoundException.html">UiObjectNotFoundException</a></td>
-            <td></td>
-        </tr>
-      </table>
-  </div>
-
-    </div>
-</div>
-
-
-<A NAME="isEnabled()"></A>
-
-<div class="jd-details api">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        public
-
-
-
-
-        boolean
-      </span>
-      <span class="sympad">isEnabled</span>
-      <span class="normal">()</span>
-    </h4>
-      <div class="api-level">
-        <div></div>
-
-
-
-      </div>
-    <div class="jd-details-descr">
-
-  <div class="jd-tagdata jd-tagdescr"><p>Checks if the UI element's <code>enabled</code> property is currently true.</p></div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Returns</h5>
-      <ul class="nolist"><li>true if it is else false</li></ul>
-  </div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Throws</h5>
-      <table class="jd-tagtable">
-
-        <tr>
-            <th><a href="UiObjectNotFoundException.html">UiObjectNotFoundException</a></td>
-            <td></td>
-        </tr>
-      </table>
-  </div>
-
-    </div>
-</div>
-
-
-<A NAME="isFocusable()"></A>
-
-<div class="jd-details api">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        public
-
-
-
-
-        boolean
-      </span>
-      <span class="sympad">isFocusable</span>
-      <span class="normal">()</span>
-    </h4>
-      <div class="api-level">
-        <div></div>
-
-
-
-      </div>
-    <div class="jd-details-descr">
-
-  <div class="jd-tagdata jd-tagdescr"><p>Check if the UI element's <code>focusable</code> property is currently true.</p></div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Returns</h5>
-      <ul class="nolist"><li>true if it is else false</li></ul>
-  </div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Throws</h5>
-      <table class="jd-tagtable">
-
-        <tr>
-            <th><a href="UiObjectNotFoundException.html">UiObjectNotFoundException</a></td>
-            <td></td>
-        </tr>
-      </table>
-  </div>
-
-    </div>
-</div>
-
-
-<A NAME="isFocused()"></A>
-
-<div class="jd-details api">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        public
-
-
-
-
-        boolean
-      </span>
-      <span class="sympad">isFocused</span>
-      <span class="normal">()</span>
-    </h4>
-      <div class="api-level">
-        <div></div>
-
-
-
-      </div>
-    <div class="jd-details-descr">
-
-  <div class="jd-tagdata jd-tagdescr"><p>Check if the UI element's <code>focused</code> property is currently true</p></div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Returns</h5>
-      <ul class="nolist"><li>true if it is else false</li></ul>
-  </div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Throws</h5>
-      <table class="jd-tagtable">
-
-        <tr>
-            <th><a href="UiObjectNotFoundException.html">UiObjectNotFoundException</a></td>
-            <td></td>
-        </tr>
-      </table>
-  </div>
-
-    </div>
-</div>
-
-
-<A NAME="isLongClickable()"></A>
-
-<div class="jd-details api">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        public
-
-
-
-
-        boolean
-      </span>
-      <span class="sympad">isLongClickable</span>
-      <span class="normal">()</span>
-    </h4>
-      <div class="api-level">
-        <div></div>
-
-
-
-      </div>
-    <div class="jd-details-descr">
-
-  <div class="jd-tagdata jd-tagdescr"><p>Check if the view's <code>long-clickable</code> property is currently true</p></div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Returns</h5>
-      <ul class="nolist"><li>true if it is else false</li></ul>
-  </div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Throws</h5>
-      <table class="jd-tagtable">
-
-        <tr>
-            <th><a href="UiObjectNotFoundException.html">UiObjectNotFoundException</a></td>
-            <td></td>
-        </tr>
-      </table>
-  </div>
-
-    </div>
-</div>
-
-
-<A NAME="isScrollable()"></A>
-
-<div class="jd-details api">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        public
-
-
-
-
-        boolean
-      </span>
-      <span class="sympad">isScrollable</span>
-      <span class="normal">()</span>
-    </h4>
-      <div class="api-level">
-        <div></div>
-
-
-
-      </div>
-    <div class="jd-details-descr">
-
-  <div class="jd-tagdata jd-tagdescr"><p>Check if the view's <code>scrollable</code> property is currently true</p></div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Returns</h5>
-      <ul class="nolist"><li>true if it is else false</li></ul>
-  </div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Throws</h5>
-      <table class="jd-tagtable">
-
-        <tr>
-            <th><a href="UiObjectNotFoundException.html">UiObjectNotFoundException</a></td>
-            <td></td>
-        </tr>
-      </table>
-  </div>
-
-    </div>
-</div>
-
-
-<A NAME="isSelected()"></A>
-
-<div class="jd-details api">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        public
-
-
-
-
-        boolean
-      </span>
-      <span class="sympad">isSelected</span>
-      <span class="normal">()</span>
-    </h4>
-      <div class="api-level">
-        <div></div>
-
-
-
-      </div>
-    <div class="jd-details-descr">
-
-  <div class="jd-tagdata jd-tagdescr"><p>Checks if the UI element's <code>selected</code> property is currently true.</p></div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Returns</h5>
-      <ul class="nolist"><li>true if it is else false</li></ul>
-  </div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Throws</h5>
-      <table class="jd-tagtable">
-
-        <tr>
-            <th><a href="UiObjectNotFoundException.html">UiObjectNotFoundException</a></td>
-            <td></td>
-        </tr>
-      </table>
-  </div>
-
-    </div>
-</div>
-
-
-<A NAME="longClick()"></A>
-
-<div class="jd-details api">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        public
-
-
-
-
-        boolean
-      </span>
-      <span class="sympad">longClick</span>
-      <span class="normal">()</span>
-    </h4>
-      <div class="api-level">
-        <div></div>
-
-
-
-      </div>
-    <div class="jd-details-descr">
-
-  <div class="jd-tagdata jd-tagdescr"><p>Long clicks the center of the visible bounds of the UI element</p></div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Returns</h5>
-      <ul class="nolist"><li>true if operation was successful</li></ul>
-  </div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Throws</h5>
-      <table class="jd-tagtable">
-
-        <tr>
-            <th><a href="UiObjectNotFoundException.html">UiObjectNotFoundException</a></td>
-            <td></td>
-        </tr>
-      </table>
-  </div>
-
-    </div>
-</div>
-
-
-<A NAME="longClickBottomRight()"></A>
-
-<div class="jd-details api">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        public
-
-
-
-
-        boolean
-      </span>
-      <span class="sympad">longClickBottomRight</span>
-      <span class="normal">()</span>
-    </h4>
-      <div class="api-level">
-        <div></div>
-
-
-
-      </div>
-    <div class="jd-details-descr">
-
-  <div class="jd-tagdata jd-tagdescr"><p>Long clicks bottom and right corner of the UI element</p></div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Returns</h5>
-      <ul class="nolist"><li>true if operation was successful</li></ul>
-  </div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Throws</h5>
-      <table class="jd-tagtable">
-
-        <tr>
-            <th><a href="UiObjectNotFoundException.html">UiObjectNotFoundException</a></td>
-            <td></td>
-        </tr>
-      </table>
-  </div>
-
-    </div>
-</div>
-
-
-<A NAME="longClickTopLeft()"></A>
-
-<div class="jd-details api">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        public
-
-
-
-
-        boolean
-      </span>
-      <span class="sympad">longClickTopLeft</span>
-      <span class="normal">()</span>
-    </h4>
-      <div class="api-level">
-        <div></div>
-
-
-
-      </div>
-    <div class="jd-details-descr">
-
-  <div class="jd-tagdata jd-tagdescr"><p>Long clicks on the top and left corner of the UI element</p></div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Returns</h5>
-      <ul class="nolist"><li>true if operation was successful</li></ul>
-  </div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Throws</h5>
-      <table class="jd-tagtable">
-
-        <tr>
-            <th><a href="UiObjectNotFoundException.html">UiObjectNotFoundException</a></td>
-            <td></td>
-        </tr>
-      </table>
-  </div>
-
-    </div>
-</div>
-
-
-<A NAME="performMultiPointerGesture(android.view.MotionEvent.PointerCoords[]...)"></A>
-
-<div class="jd-details api">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        public
-
-
-
-
-        boolean
-      </span>
-      <span class="sympad">performMultiPointerGesture</span>
-      <span class="normal">(PointerCoords... touches)</span>
-    </h4>
-    <div class="jd-details-descr">
-
-  <div class="jd-tagdata jd-tagdescr"><p>Performs a multi-touch gesture. You must specify touch coordinates for
- at least 2 pointers. Each pointer must have all of its touch steps
- defined in an array of <code><a href="../../../../../reference/android/view/MotionEvent.PointerCoords.html">MotionEvent.PointerCoords</a></code>. You can use this method to
- specify complex gestures, like circles and irregular shapes, where each
- pointer may take a different path.
-
- To create a single point on a pointer's touch path:
- <code>
-       PointerCoords p = new PointerCoords();
-       p.x = stepX;
-       p.y = stepY;
-       p.pressure = 1;
-       p.size = 1;
- </code></p></div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Parameters</h5>
-      <table class="jd-tagtable">
-        <tr>
-          <th>touches</td>
-          <td>represents the pointers' paths. Each <code><a href="../../../../../reference/android/view/MotionEvent.PointerCoords.html">MotionEvent.PointerCoords</a></code>
- array represents a different pointer. Each <code><a href="../../../../../reference/android/view/MotionEvent.PointerCoords.html">MotionEvent.PointerCoords</a></code> in an
- array element represents a touch point on a pointer's path.</td>
-        </tr>
-      </table>
-  </div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Returns</h5>
-      <ul class="nolist"><li><code>true</code> if all touch events for this gesture are injected successfully,
-         <code>false</code> otherwise</li></ul>
-  </div>
-  <div class="jd-tagdata">
-     <h5 class="jd-tagtitle">Since</h5>
-     <ul class="nolist"><li>Android API Level 18</li></ul>
-  </div>
-    </div>
-</div>
-
-
-<A NAME="performTwoPointerGesture(android.graphics.Point, android.graphics.Point, android.graphics.Point, android.graphics.Point, int)"></A>
-
-<div class="jd-details api">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        public
-
-
-
-
-        boolean
-      </span>
-      <span class="sympad">performTwoPointerGesture</span>
-      <span class="normal">(Point startPoint1, Point startPoint2, Point endPoint1, Point endPoint2, int steps)</span>
-    </h4>
-    <div class="jd-details-descr">
-
-  <div class="jd-tagdata jd-tagdescr"><p>Generates a two-pointer gesture with arbitrary starting and ending points.</p></div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Parameters</h5>
-      <table class="jd-tagtable">
-        <tr>
-          <th>startPoint1</td>
-          <td>start point of pointer 1</td>
-        </tr>
-        <tr>
-          <th>startPoint2</td>
-          <td>start point of pointer 2</td>
-        </tr>
-        <tr>
-          <th>endPoint1</td>
-          <td>end point of pointer 1</td>
-        </tr>
-        <tr>
-          <th>endPoint2</td>
-          <td>end point of pointer 2</td>
-        </tr>
-        <tr>
-          <th>steps</td>
-          <td>the number of steps for the gesture. Steps are injected
- about 5 milliseconds apart, so 100 steps may take around 0.5 seconds to complete.</td>
-        </tr>
-      </table>
-  </div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Returns</h5>
-      <ul class="nolist"><li><code>true</code> if all touch events for this gesture are injected successfully,
-         <code>false</code> otherwise</li></ul>
-  </div>
-  <div class="jd-tagdata">
-     <h5 class="jd-tagtitle">Since</h5>
-     <ul class="nolist"><li>Android API Level 18</li></ul>
-  </div>
-    </div>
-</div>
-
-
-<A NAME="pinchIn(int, int)"></A>
-
-<div class="jd-details api">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        public
-
-
-
-
-        boolean
-      </span>
-      <span class="sympad">pinchIn</span>
-      <span class="normal">(int percent, int steps)</span>
-    </h4>
-    <div class="jd-details-descr">
-
-  <div class="jd-tagdata jd-tagdescr"><p>Performs a two-pointer gesture, where each pointer moves diagonally
- toward the other, from the edges to the center of this UiObject .</p></div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Parameters</h5>
-      <table class="jd-tagtable">
-        <tr>
-          <th>percent</td>
-          <td>percentage of the object's diagonal length for the pinch gesture</td>
-        </tr>
-        <tr>
-          <th>steps</td>
-          <td>the number of steps for the gesture. Steps are injected
- about 5 milliseconds apart, so 100 steps may take around 0.5 seconds to complete.</td>
-        </tr>
-      </table>
-  </div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Returns</h5>
-      <ul class="nolist"><li><code>true</code> if all touch events for this gesture are injected successfully,
-         <code>false</code> otherwise</li></ul>
-  </div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Throws</h5>
-      <table class="jd-tagtable">
-
-        <tr>
-            <th><a href="UiObjectNotFoundException.html">UiObjectNotFoundException</a></td>
-            <td></td>
-        </tr>
-      </table>
-  </div>
-  <div class="jd-tagdata">
-     <h5 class="jd-tagtitle">Since</h5>
-     <ul class="nolist"><li>Android API Level 18</li></ul>
-  </div>
-    </div>
-</div>
-
-
-<A NAME="pinchOut(int, int)"></A>
-
-<div class="jd-details api">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        public
-
-
-
-
-        boolean
-      </span>
-      <span class="sympad">pinchOut</span>
-      <span class="normal">(int percent, int steps)</span>
-    </h4>
-    <div class="jd-details-descr">
-
-  <div class="jd-tagdata jd-tagdescr"><p>Performs a two-pointer gesture, where each pointer moves diagonally
- opposite across the other, from the center out towards the edges of the
- this UiObject.</p></div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Parameters</h5>
-      <table class="jd-tagtable">
-        <tr>
-          <th>percent</td>
-          <td>percentage of the object's diagonal length for the pinch gesture</td>
-        </tr>
-        <tr>
-          <th>steps</td>
-          <td>the number of steps for the gesture. Steps are injected
- about 5 milliseconds apart, so 100 steps may take around 0.5 seconds to complete.</td>
-        </tr>
-      </table>
-  </div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Returns</h5>
-      <ul class="nolist"><li><code>true</code> if all touch events for this gesture are injected successfully,
-         <code>false</code> otherwise</li></ul>
-  </div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Throws</h5>
-      <table class="jd-tagtable">
-
-        <tr>
-            <th><a href="UiObjectNotFoundException.html">UiObjectNotFoundException</a></td>
-            <td></td>
-        </tr>
-      </table>
-  </div>
-  <div class="jd-tagdata">
-     <h5 class="jd-tagtitle">Since</h5>
-     <ul class="nolist"><li>Android API Level 18</li></ul>
-  </div>
-    </div>
-</div>
-
-
-<A NAME="setText(java.lang.String)"></A>
-
-<div class="jd-details api">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        public
-
-
-
-
-        boolean
-      </span>
-      <span class="sympad">setText</span>
-      <span class="normal">(String text)</span>
-    </h4>
-      <div class="api-level">
-        <div></div>
-
-
-
-      </div>
-    <div class="jd-details-descr">
-
-  <div class="jd-tagdata jd-tagdescr"><p>Sets the text in an editable field, after clearing the field's content.
-
- The <code><a href="UiSelector.html">UiSelector</a></code> selector of this object must reference a UI element that is editable.
-
- When you call this method, the method first simulates a <code><a href="#click()">click()</a></code> on
- editable field to set focus. The method then clears the field's contents
- and injects your specified text into the field.
-
- If you want to capture the original contents of the field, call <code><a href="#getText()">getText()</a></code> first.
- You can then modify the text and use this method to update the field.</p></div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Parameters</h5>
-      <table class="jd-tagtable">
-        <tr>
-          <th>text</td>
-          <td>string to set</td>
-        </tr>
-      </table>
-  </div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Returns</h5>
-      <ul class="nolist"><li>true if operation is successful</li></ul>
-  </div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Throws</h5>
-      <table class="jd-tagtable">
-
-        <tr>
-            <th><a href="UiObjectNotFoundException.html">UiObjectNotFoundException</a></td>
-            <td></td>
-        </tr>
-      </table>
-  </div>
-
-    </div>
-</div>
-
-
-<A NAME="swipeDown(int)"></A>
-
-<div class="jd-details api">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        public
-
-
-
-
-        boolean
-      </span>
-      <span class="sympad">swipeDown</span>
-      <span class="normal">(int steps)</span>
-    </h4>
-      <div class="api-level">
-        <div></div>
-
-
-
-      </div>
-    <div class="jd-details-descr">
-
-  <div class="jd-tagdata jd-tagdescr"><p>Performs the swipe down action on the UiObject.
- The swipe gesture can be performed over any surface. The targeted
- UI element does not need to be scrollable.
- See also:
- <ul>
- <li><code><a href="UiScrollable.html#scrollToBeginning(int)">scrollToBeginning(int)</a></code></li>
- <li><code><a href="UiScrollable.html#scrollToEnd(int)">scrollToEnd(int)</a></code></li>
- <li><code><a href="UiScrollable.html#scrollBackward()">scrollBackward()</a></code></li>
- <li><code><a href="UiScrollable.html#scrollForward()">scrollForward()</a></code></li>
- </ul></p></div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Parameters</h5>
-      <table class="jd-tagtable">
-        <tr>
-          <th>steps</td>
-          <td>indicates the number of injected move steps into the system. Steps are
- injected about 5ms apart. So a 100 steps may take about 1/2 second to complete.</td>
-        </tr>
-      </table>
-  </div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Returns</h5>
-      <ul class="nolist"><li>true if successful</li></ul>
-  </div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Throws</h5>
-      <table class="jd-tagtable">
-
-        <tr>
-            <th><a href="UiObjectNotFoundException.html">UiObjectNotFoundException</a></td>
-            <td></td>
-        </tr>
-      </table>
-  </div>
-
-    </div>
-</div>
-
-
-<A NAME="swipeLeft(int)"></A>
-
-<div class="jd-details api">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        public
-
-
-
-
-        boolean
-      </span>
-      <span class="sympad">swipeLeft</span>
-      <span class="normal">(int steps)</span>
-    </h4>
-      <div class="api-level">
-        <div></div>
-
-
-
-      </div>
-    <div class="jd-details-descr">
-
-  <div class="jd-tagdata jd-tagdescr"><p>Performs the swipe left action on the UiObject.
- The swipe gesture can be performed over any surface. The targeted
- UI element does not need to be scrollable.
- See also:
- <ul>
- <li><code><a href="UiScrollable.html#scrollToBeginning(int)">scrollToBeginning(int)</a></code></li>
- <li><code><a href="UiScrollable.html#scrollToEnd(int)">scrollToEnd(int)</a></code></li>
- <li><code><a href="UiScrollable.html#scrollBackward()">scrollBackward()</a></code></li>
- <li><code><a href="UiScrollable.html#scrollForward()">scrollForward()</a></code></li>
- </ul></p></div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Parameters</h5>
-      <table class="jd-tagtable">
-        <tr>
-          <th>steps</td>
-          <td>indicates the number of injected move steps into the system. Steps are
- injected about 5ms apart. So a 100 steps may take about 1/2 second to complete.</td>
-        </tr>
-      </table>
-  </div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Returns</h5>
-      <ul class="nolist"><li>true if successful</li></ul>
-  </div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Throws</h5>
-      <table class="jd-tagtable">
-
-        <tr>
-            <th><a href="UiObjectNotFoundException.html">UiObjectNotFoundException</a></td>
-            <td></td>
-        </tr>
-      </table>
-  </div>
-
-    </div>
-</div>
-
-
-<A NAME="swipeRight(int)"></A>
-
-<div class="jd-details api">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        public
-
-
-
-
-        boolean
-      </span>
-      <span class="sympad">swipeRight</span>
-      <span class="normal">(int steps)</span>
-    </h4>
-      <div class="api-level">
-        <div></div>
-
-
-
-      </div>
-    <div class="jd-details-descr">
-
-  <div class="jd-tagdata jd-tagdescr"><p>Performs the swipe right action on the UiObject.
- The swipe gesture can be performed over any surface. The targeted
- UI element does not need to be scrollable.
- See also:
- <ul>
- <li><code><a href="UiScrollable.html#scrollToBeginning(int)">scrollToBeginning(int)</a></code></li>
- <li><code><a href="UiScrollable.html#scrollToEnd(int)">scrollToEnd(int)</a></code></li>
- <li><code><a href="UiScrollable.html#scrollBackward()">scrollBackward()</a></code></li>
- <li><code><a href="UiScrollable.html#scrollForward()">scrollForward()</a></code></li>
- </ul></p></div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Parameters</h5>
-      <table class="jd-tagtable">
-        <tr>
-          <th>steps</td>
-          <td>indicates the number of injected move steps into the system. Steps are
- injected about 5ms apart. So a 100 steps may take about 1/2 second to complete.</td>
-        </tr>
-      </table>
-  </div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Returns</h5>
-      <ul class="nolist"><li>true if successful</li></ul>
-  </div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Throws</h5>
-      <table class="jd-tagtable">
-
-        <tr>
-            <th><a href="UiObjectNotFoundException.html">UiObjectNotFoundException</a></td>
-            <td></td>
-        </tr>
-      </table>
-  </div>
-
-    </div>
-</div>
-
-
-<A NAME="swipeUp(int)"></A>
-
-<div class="jd-details api">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        public
-
-
-
-
-        boolean
-      </span>
-      <span class="sympad">swipeUp</span>
-      <span class="normal">(int steps)</span>
-    </h4>
-      <div class="api-level">
-        <div></div>
-
-
-
-      </div>
-    <div class="jd-details-descr">
-
-  <div class="jd-tagdata jd-tagdescr"><p>Performs the swipe up action on the UiObject.
- See also:
- <ul>
- <li><code><a href="UiScrollable.html#scrollToBeginning(int)">scrollToBeginning(int)</a></code></li>
- <li><code><a href="UiScrollable.html#scrollToEnd(int)">scrollToEnd(int)</a></code></li>
- <li><code><a href="UiScrollable.html#scrollBackward()">scrollBackward()</a></code></li>
- <li><code><a href="UiScrollable.html#scrollForward()">scrollForward()</a></code></li>
- </ul></p></div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Parameters</h5>
-      <table class="jd-tagtable">
-        <tr>
-          <th>steps</td>
-          <td>indicates the number of injected move steps into the system. Steps are
- injected about 5ms apart. So a 100 steps may take about 1/2 second to complete.</td>
-        </tr>
-      </table>
-  </div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Returns</h5>
-      <ul class="nolist"><li>true of successful</li></ul>
-  </div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Throws</h5>
-      <table class="jd-tagtable">
-
-        <tr>
-            <th><a href="UiObjectNotFoundException.html">UiObjectNotFoundException</a></td>
-            <td></td>
-        </tr>
-      </table>
-  </div>
-
-    </div>
-</div>
-
-
-<A NAME="waitForExists(long)"></A>
-
-<div class="jd-details api">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        public
-
-
-
-
-        boolean
-      </span>
-      <span class="sympad">waitForExists</span>
-      <span class="normal">(long timeout)</span>
-    </h4>
-      <div class="api-level">
-        <div></div>
-
-
-
-      </div>
-    <div class="jd-details-descr">
-
-  <div class="jd-tagdata jd-tagdescr"><p>Waits a specified length of time for a view to become visible.
-
- This method waits until the view becomes visible on the display, or
- until the timeout has elapsed. You can use this method in situations where
- the content that you want to select is not immediately displayed.</p></div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Parameters</h5>
-      <table class="jd-tagtable">
-        <tr>
-          <th>timeout</td>
-          <td>the amount of time to wait (in milliseconds)</td>
-        </tr>
-      </table>
-  </div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Returns</h5>
-      <ul class="nolist"><li>true if the view is displayed, else false if timeout elapsed while waiting</li></ul>
-  </div>
-
-    </div>
-</div>
-
-
-<A NAME="waitUntilGone(long)"></A>
-
-<div class="jd-details api">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        public
-
-
-
-
-        boolean
-      </span>
-      <span class="sympad">waitUntilGone</span>
-      <span class="normal">(long timeout)</span>
-    </h4>
-      <div class="api-level">
-        <div></div>
-
-
-
-      </div>
-    <div class="jd-details-descr">
-
-  <div class="jd-tagdata jd-tagdescr"><p>Waits a specified length of time for a view to become undetectable.
-
- This method waits until a view is no longer matchable, or until the
- timeout has elapsed.
-
- A view becomes undetectable when the <code><a href="UiSelector.html">UiSelector</a></code> of the object is
- unable to find a match because the element has either changed its state or is no
- longer displayed.
-
- You can use this method when attempting to wait for some long operation
- to compete, such as downloading a large file or connecting to a remote server.</p></div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Parameters</h5>
-      <table class="jd-tagtable">
-        <tr>
-          <th>timeout</td>
-          <td>time to wait (in milliseconds)</td>
-        </tr>
-      </table>
-  </div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Returns</h5>
-      <ul class="nolist"><li>true if the element is gone before timeout elapsed, else false if timeout elapsed
- but a matching element is still found.</li></ul>
-  </div>
-
-    </div>
-</div>
-
-
-
-
-
-<!-- ========= METHOD DETAIL ======== -->
-
-<h2>Protected Methods</h2>
-
-
-
-<A NAME="findAccessibilityNodeInfo(long)"></A>
-
-<div class="jd-details api">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        protected
-
-
-
-
-        AccessibilityNodeInfo
-      </span>
-      <span class="sympad">findAccessibilityNodeInfo</span>
-      <span class="normal">(long timeout)</span>
-    </h4>
-      <div class="api-level">
-        <div></div>
-
-
-
-      </div>
-    <div class="jd-details-descr">
-
-  <div class="jd-tagdata jd-tagdescr"><p>Finds a matching UI element in the accessibility hierarchy, by
- using the selector for this UiObject.</p></div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Parameters</h5>
-      <table class="jd-tagtable">
-        <tr>
-          <th>timeout</td>
-          <td>in milliseconds</td>
-        </tr>
-      </table>
-  </div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Returns</h5>
-      <ul class="nolist"><li>AccessibilityNodeInfo if found else null</li></ul>
-  </div>
-
-    </div>
-
-
-
-
-
-
diff --git a/docs/html/tools/help/uiautomator/UiObjectNotFoundException.jd b/docs/html/tools/help/uiautomator/UiObjectNotFoundException.jd
deleted file mode 100644
index c34fdfd..0000000
--- a/docs/html/tools/help/uiautomator/UiObjectNotFoundException.jd
+++ /dev/null
@@ -1,606 +0,0 @@
-page.title=UiObjectNotFoundException
-parent.title=uiautomator
-parent.link=index.html
-@jd:body
-<style>
-    h4.jd-details-title {background-color: #DEE8F1;}
-</style>
-<p>Generated in test runs when a <code><a href="UiSelector.html">UiSelector</a></code> selector could not be matched
- to any UI element displayed.
-</p>
-
-<h2>Summary</h2>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-<!-- ======== CONSTRUCTOR SUMMARY ======== -->
-<table id="pubctors" class="jd-sumtable"><tr><th colspan="12">Public Constructors</th></tr>
-
-
-
-	 
-    <tr class="api" >
-        <td class="jd-typecol">
-            
-            
-            
-            
-            
-            
-        </td>
-        <td class="jd-linkcol" width="100%">
-        <span class="sympad"><a href="#UiObjectNotFoundException(java.lang.String)">UiObjectNotFoundException</a></span>(String msg)
-        
-  </td></tr>
-
-
-	 
-    <tr class="api" >
-        <td class="jd-typecol">
-            
-            
-            
-            
-            
-            
-        </td>
-        <td class="jd-linkcol" width="100%">
-        <span class="sympad"><a href="#UiObjectNotFoundException(java.lang.String, java.lang.Throwable)">UiObjectNotFoundException</a></span>(String detailMessage, Throwable throwable)
-        
-  </td></tr>
-
-
-	 
-    <tr class="api" >
-        <td class="jd-typecol">
-            
-            
-            
-            
-            
-            
-        </td>
-        <td class="jd-linkcol" width="100%">
-        <span class="sympad"><a href="#UiObjectNotFoundException(java.lang.Throwable)">UiObjectNotFoundException</a></span>(Throwable throwable)
-        
-  </td></tr>
-
-
-
-</table>
-
-
-
-
-
-
-
-
-
-
-
-<!-- ========== METHOD SUMMARY =========== -->
-<table id="inhmethods" class="jd-sumtable"><tr><th>
-  <a href="#" class="toggle-all" onclick="return toggleAllInherited(this, null)">[Expand]</a>
-  <div style="clear:left;">Inherited Methods</div></th></tr>
-
-
-
-
-<tr class="api apilevel-" >
-<td colspan="12">
-  <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Throwable" class="jd-expando-trigger closed"
-          ><img id="inherited-methods-java.lang.Throwable-trigger"
-          src="../../../../../assets/images/styles/disclosure_down.png"
-          class="jd-expando-trigger-img" /></a>
-From class
-
-  java.lang.Throwable
-
-<div id="inherited-methods-java.lang.Throwable">
-  <div id="inherited-methods-java.lang.Throwable-list"
-        class="jd-inheritedlinks">
-  </div>
-  <div id="inherited-methods-java.lang.Throwable-summary" style="display: none;">
-    <table class="jd-sumtable-expando">
-    
-
-
-	 
-    <tr class="api" >
-        <td class="jd-typecol">
-            
-            synchronized
-            
-            
-            
-            Throwable
-        </td>
-        <td class="jd-linkcol" width="100%">
-        <span class="sympad">fillInStackTrace</span>()
-        
-  </td></tr>
-
-
-	 
-    <tr class="api" >
-        <td class="jd-typecol">
-            
-            
-            
-            
-            
-            Throwable
-        </td>
-        <td class="jd-linkcol" width="100%">
-        <span class="sympad">getCause</span>()
-        
-  </td></tr>
-
-
-	 
-    <tr class="api" >
-        <td class="jd-typecol">
-            
-            
-            
-            
-            
-            String
-        </td>
-        <td class="jd-linkcol" width="100%">
-        <span class="sympad">getLocalizedMessage</span>()
-        
-  </td></tr>
-
-
-	 
-    <tr class="api" >
-        <td class="jd-typecol">
-            
-            
-            
-            
-            
-            String
-        </td>
-        <td class="jd-linkcol" width="100%">
-        <span class="sympad">getMessage</span>()
-        
-  </td></tr>
-
-
-	 
-    <tr class="api" >
-        <td class="jd-typecol">
-            
-            
-            
-            
-            
-            StackTraceElement[]
-        </td>
-        <td class="jd-linkcol" width="100%">
-        <span class="sympad">getStackTrace</span>()
-        
-  </td></tr>
-
-
-	 
-    <tr class="api" >
-        <td class="jd-typecol">
-            
-            synchronized
-            
-            
-            
-            Throwable
-        </td>
-        <td class="jd-linkcol" width="100%">
-        <span class="sympad">initCause</span>(Throwable arg0)
-        
-  </td></tr>
-
-
-	 
-    <tr class="api" >
-        <td class="jd-typecol">
-            
-            
-            
-            
-            
-            void
-        </td>
-        <td class="jd-linkcol" width="100%">
-        <span class="sympad">printStackTrace</span>(PrintWriter arg0)
-        
-  </td></tr>
-
-
-	 
-    <tr class="api" >
-        <td class="jd-typecol">
-            
-            
-            
-            
-            
-            void
-        </td>
-        <td class="jd-linkcol" width="100%">
-        <span class="sympad">printStackTrace</span>(PrintStream arg0)
-        
-  </td></tr>
-
-
-	 
-    <tr class="api" >
-        <td class="jd-typecol">
-            
-            
-            
-            
-            
-            void
-        </td>
-        <td class="jd-linkcol" width="100%">
-        <span class="sympad">printStackTrace</span>()
-        
-  </td></tr>
-
-
-	 
-    <tr class="api" >
-        <td class="jd-typecol">
-            
-            
-            
-            
-            
-            void
-        </td>
-        <td class="jd-linkcol" width="100%">
-        <span class="sympad">setStackTrace</span>(StackTraceElement[] arg0)
-        
-  </td></tr>
-
-
-	 
-    <tr class="api" >
-        <td class="jd-typecol">
-            
-            
-            
-            
-            
-            String
-        </td>
-        <td class="jd-linkcol" width="100%">
-        <span class="sympad">toString</span>()
-        
-  </td></tr>
-
-
-</table>
-  </div>
-</div>
-</td></tr>
-
-
-
-<tr class="api apilevel-" >
-<td colspan="12">
-  <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
-          ><img id="inherited-methods-java.lang.Object-trigger"
-          src="../../../../../assets/images/styles/disclosure_down.png"
-          class="jd-expando-trigger-img" /></a>
-From class
-
-  java.lang.Object
-
-<div id="inherited-methods-java.lang.Object">
-  <div id="inherited-methods-java.lang.Object-list"
-        class="jd-inheritedlinks">
-  </div>
-  <div id="inherited-methods-java.lang.Object-summary" style="display: none;">
-    <table class="jd-sumtable-expando">
-    
-
-
-	 
-    <tr class="api" >
-        <td class="jd-typecol">
-            
-            
-            
-            
-            
-            boolean
-        </td>
-        <td class="jd-linkcol" width="100%">
-        <span class="sympad">equals</span>(Object arg0)
-        
-  </td></tr>
-
-
-	 
-    <tr class="api" >
-        <td class="jd-typecol">
-            
-            
-            final
-            
-            
-            Class&lt;?&gt;
-        </td>
-        <td class="jd-linkcol" width="100%">
-        <span class="sympad">getClass</span>()
-        
-  </td></tr>
-
-
-	 
-    <tr class="api" >
-        <td class="jd-typecol">
-            
-            
-            
-            
-            
-            int
-        </td>
-        <td class="jd-linkcol" width="100%">
-        <span class="sympad">hashCode</span>()
-        
-  </td></tr>
-
-
-	 
-    <tr class="api" >
-        <td class="jd-typecol">
-            
-            
-            final
-            
-            
-            void
-        </td>
-        <td class="jd-linkcol" width="100%">
-        <span class="sympad">notify</span>()
-        
-  </td></tr>
-
-
-	 
-    <tr class="api" >
-        <td class="jd-typecol">
-            
-            
-            final
-            
-            
-            void
-        </td>
-        <td class="jd-linkcol" width="100%">
-        <span class="sympad">notifyAll</span>()
-        
-  </td></tr>
-
-
-	 
-    <tr class="api" >
-        <td class="jd-typecol">
-            
-            
-            
-            
-            
-            String
-        </td>
-        <td class="jd-linkcol" width="100%">
-        <span class="sympad">toString</span>()
-        
-  </td></tr>
-
-
-	 
-    <tr class="api" >
-        <td class="jd-typecol">
-            
-            
-            final
-            
-            
-            void
-        </td>
-        <td class="jd-linkcol" width="100%">
-        <span class="sympad">wait</span>()
-        
-  </td></tr>
-
-
-	 
-    <tr class="api" >
-        <td class="jd-typecol">
-            
-            
-            final
-            
-            
-            void
-        </td>
-        <td class="jd-linkcol" width="100%">
-        <span class="sympad">wait</span>(long arg0, int arg1)
-        
-  </td></tr>
-
-
-	 
-    <tr class="api" >
-        <td class="jd-typecol">
-            
-            
-            final
-            
-            
-            void
-        </td>
-        <td class="jd-linkcol" width="100%">
-        <span class="sympad">wait</span>(long arg0)
-        
-  </td></tr>
-
-
-</table>
-  </div>
-</div>
-</td></tr>
-
-
-
-
-</table>
-
-
-</div><!-- jd-descr (summary) -->
-
-<!-- Details -->
-
-
-
-
-
-
-
-
-<!-- XML Attributes -->
-
-
-<!-- Enum Values -->
-
-
-<!-- Constants -->
-
-
-<!-- Fields -->
-
-
-<!-- Public ctors -->
-
-
-<!-- ========= CONSTRUCTOR DETAIL ======== -->
-<h2>Public Constructors</h2>
-
-
-
-<a id="UiObjectNotFoundException(java.lang.String)"></a>
-
-<div class="jd-details api "> 
-    <h4 class="jd-details-title">
-      <span class="normal">
-        public 
-         
-         
-         
-         
-        
-      </span>
-      <span class="sympad">UiObjectNotFoundException</span>
-      <span class="normal">(String msg)</span>
-    </h4>
-      <div class="api-level">
-        <div>
-
-</div>
-        
-  
-
-      </div>
-    <div class="jd-details-descr">
-      
-  <div class="jd-tagdata jd-tagdescr"><p></p></div>
-
-    </div>
-</div>
-
-
-<a id="UiObjectNotFoundException(java.lang.String, java.lang.Throwable)"></a>
-
-<div class="jd-details api "> 
-    <h4 class="jd-details-title">
-      <span class="normal">
-        public 
-         
-         
-         
-         
-        
-      </span>
-      <span class="sympad">UiObjectNotFoundException</span>
-      <span class="normal">(String detailMessage, Throwable throwable)</span>
-    </h4>
-      <div class="api-level">
-        <div>
-
-</div>
-        
-  
-
-      </div>
-    <div class="jd-details-descr">
-      
-  <div class="jd-tagdata jd-tagdescr"><p></p></div>
-
-    </div>
-</div>
-
-
-<a id="UiObjectNotFoundException(java.lang.Throwable)"></a>
-
-<div class="jd-details api "> 
-    <h4 class="jd-details-title">
-      <span class="normal">
-        public 
-         
-         
-         
-         
-        
-      </span>
-      <span class="sympad">UiObjectNotFoundException</span>
-      <span class="normal">(Throwable throwable)</span>
-    </h4>
-      <div class="api-level">
-        <div>
-
-</div>
-        
-  
-
-      </div>
-    <div class="jd-details-descr">
-      
-  <div class="jd-tagdata jd-tagdescr"><p></p></div>
-
-    </div>
diff --git a/docs/html/tools/help/uiautomator/UiScrollable.jd b/docs/html/tools/help/uiautomator/UiScrollable.jd
deleted file mode 100644
index 8f6b1dd..0000000
--- a/docs/html/tools/help/uiautomator/UiScrollable.jd
+++ /dev/null
@@ -1,3283 +0,0 @@
-page.title=UiScrollable
-parent.title=uiautomator
-parent.link=index.html
-@jd:body
-<style>
-    h4.jd-details-title {background-color: #DEE8F1;}
-</style>
-<p>A <code><a href="UiCollection.html">UiCollection</a></code>
-that supports searching for items in scrollable layout elements. This class can
-be used with horizontally or vertically scrollable controls.</p>
-<h2>Summary</h2>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-<!-- =========== ENUM CONSTANT SUMMARY =========== -->
-<table id="inhconstants" class="jd-sumtable"><tr><th>
-  <a href="#" class="toggle-all" onclick="return toggleAllInherited(this, null)">[Expand]</a>
-  <div style="clear:left;">Inherited Constants</div></th></tr>
-
-
-
-
-<tr class="api" >
-<td colspan="12">
-
-  <a href="#" onclick="return toggleInherited(this, null)" id="inherited-constants-com.android.uiautomator.core.UiObject" class="jd-expando-trigger closed"
-          ><img id="inherited-constants-com.android.uiautomator.core.UiObject-trigger"
-          src="../../../../../assets/images/styles/disclosure_down.png"
-          class="jd-expando-trigger-img" /></a>From class
-<a href="UiObject.html">com.android.uiautomator.core.UiObject</a>
-<div id="inherited-constants-com.android.uiautomator.core.UiObject">
-  <div id="inherited-constants-com.android.uiautomator.core.UiObject-list"
-        class="jd-inheritedlinks">
-  </div>
-  <div id="inherited-constants-com.android.uiautomator.core.UiObject-summary" style="display: none;">
-    <table class="jd-sumtable-expando">
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol">int</td>
-        <td class="jd-linkcol"><a href="UiObject.html#FINGER_TOUCH_HALF_WIDTH">FINGER_TOUCH_HALF_WIDTH</a></td>
-        <td class="jd-descrcol" width="100%"></td>
-    </tr>
-
-
-    <tr class="api" >
-        <td class="jd-typecol">int</td>
-        <td class="jd-linkcol"><a href="UiObject.html#SWIPE_MARGIN_LIMIT">SWIPE_MARGIN_LIMIT</a></td>
-        <td class="jd-descrcol" width="100%"></td>
-    </tr>
-
-
-    <tr class="api" >
-        <td class="jd-typecol">long</td>
-        <td class="jd-linkcol"><a href="UiObject.html#WAIT_FOR_EVENT_TMEOUT">WAIT_FOR_EVENT_TMEOUT</a></td>
-        <td class="jd-descrcol" width="100%"><em>
-      This constant is deprecated.
-    use <code><a href="Configurator.html#setScrollAcknowledgmentTimeout(long)">setScrollAcknowledgmentTimeout(long)</a></code>
-</em></td>
-    </tr>
-
-
-    <tr class="api" >
-        <td class="jd-typecol">long</td>
-        <td class="jd-linkcol"><a href="UiObject.html#WAIT_FOR_SELECTOR_POLL">WAIT_FOR_SELECTOR_POLL</a></td>
-        <td class="jd-descrcol" width="100%"></td>
-    </tr>
-
-
-    <tr class="api" >
-        <td class="jd-typecol">long</td>
-        <td class="jd-linkcol"><a href="UiObject.html#WAIT_FOR_SELECTOR_TIMEOUT">WAIT_FOR_SELECTOR_TIMEOUT</a></td>
-        <td class="jd-descrcol" width="100%"><em>
-      This constant is deprecated.
-    use <code><a href="Configurator.html#setWaitForSelectorTimeout(long)">setWaitForSelectorTimeout(long)</a></code>
-</em></td>
-    </tr>
-
-
-    <tr class="api" >
-        <td class="jd-typecol">long</td>
-        <td class="jd-linkcol"><a href="UiObject.html#WAIT_FOR_WINDOW_TMEOUT">WAIT_FOR_WINDOW_TMEOUT</a></td>
-        <td class="jd-descrcol" width="100%"></td>
-    </tr>
-
-
-</table>
-  </div>
-</div>
-</td></tr>
-
-
-
-
-</table>
-
-
-
-
-
-
-
-
-
-<!-- ======== CONSTRUCTOR SUMMARY ======== -->
-<table id="pubctors" class="jd-sumtable"><tr><th colspan="12">Public Constructors</th></tr>
-
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            </nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="#UiScrollable(com.android.uiautomator.core.UiSelector)">UiScrollable</a></span>(<a href="UiSelector.html">UiSelector</a> container)</nobr>
-
-        <div class="jd-descrdiv">Constructor.</div>
-
-  </td></tr>
-
-
-
-</table>
-
-
-
-
-
-
-<!-- ========== METHOD SUMMARY =========== -->
-<table id="pubmethods" class="jd-sumtable"><tr><th colspan="12">Public Methods</th></tr>
-
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            boolean</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="#flingBackward()">flingBackward</a></span>()</nobr>
-
-        <div class="jd-descrdiv">Performs a backwards fling action with the default number of fling
- steps (5).</div>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            boolean</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="#flingForward()">flingForward</a></span>()</nobr>
-
-        <div class="jd-descrdiv">Performs a forward fling with the default number of fling steps (5).</div>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            boolean</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="#flingToBeginning(int)">flingToBeginning</a></span>(int maxSwipes)</nobr>
-
-        <div class="jd-descrdiv">Performs a fling gesture to reach the beginning of a scrollable layout element.</div>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            boolean</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="#flingToEnd(int)">flingToEnd</a></span>(int maxSwipes)</nobr>
-
-        <div class="jd-descrdiv">Performs a fling gesture to reach the end of a scrollable layout element.</div>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            <a href="UiObject.html">UiObject</a></nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="#getChildByDescription(com.android.uiautomator.core.UiSelector, java.lang.String, boolean)">getChildByDescription</a></span>(<a href="UiSelector.html">UiSelector</a> childPattern, String text, boolean allowScrollSearch)</nobr>
-
-        <div class="jd-descrdiv">Searches for a child element in the present scrollable container.</div>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            <a href="UiObject.html">UiObject</a></nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="#getChildByDescription(com.android.uiautomator.core.UiSelector, java.lang.String)">getChildByDescription</a></span>(<a href="UiSelector.html">UiSelector</a> childPattern, String text)</nobr>
-
-        <div class="jd-descrdiv">Searches for a child element in the present scrollable container.</div>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            <a href="UiObject.html">UiObject</a></nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="#getChildByInstance(com.android.uiautomator.core.UiSelector, int)">getChildByInstance</a></span>(<a href="UiSelector.html">UiSelector</a> childPattern, int instance)</nobr>
-
-        <div class="jd-descrdiv">Searches for a child element in the present scrollable container that
- matches the selector you provided.</div>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            <a href="UiObject.html">UiObject</a></nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="#getChildByText(com.android.uiautomator.core.UiSelector, java.lang.String, boolean)">getChildByText</a></span>(<a href="UiSelector.html">UiSelector</a> childPattern, String text, boolean allowScrollSearch)</nobr>
-
-        <div class="jd-descrdiv">Searches for a child element in the present scrollable container.</div>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            <a href="UiObject.html">UiObject</a></nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="#getChildByText(com.android.uiautomator.core.UiSelector, java.lang.String)">getChildByText</a></span>(<a href="UiSelector.html">UiSelector</a> childPattern, String text)</nobr>
-
-        <div class="jd-descrdiv">Searches for a child element in the present scrollable
- container.</div>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            int</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="#getMaxSearchSwipes()">getMaxSearchSwipes</a></span>()</nobr>
-
-        <div class="jd-descrdiv">Gets the maximum number of scrolls allowed when performing a
- scroll action in search of a child element.</div>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            double</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="#getSwipeDeadZonePercentage()">getSwipeDeadZonePercentage</a></span>()</nobr>
-
-        <div class="jd-descrdiv">Returns the percentage of a widget's size that's considered as a no-touch
- zone when swiping.</div>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            boolean</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="#scrollBackward(int)">scrollBackward</a></span>(int steps)</nobr>
-
-        <div class="jd-descrdiv">Performs a backward scroll.</div>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            boolean</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="#scrollBackward()">scrollBackward</a></span>()</nobr>
-
-        <div class="jd-descrdiv">Performs a backward scroll with the default number of scroll steps (55).</div>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            boolean</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="#scrollDescriptionIntoView(java.lang.String)">scrollDescriptionIntoView</a></span>(String text)</nobr>
-
-        <div class="jd-descrdiv">Performs a forward scroll action on the scrollable layout element until
- the content-description is found, or until swipe attempts have been exhausted.</div>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            boolean</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="#scrollForward()">scrollForward</a></span>()</nobr>
-
-        <div class="jd-descrdiv">Performs a forward scroll with the default number of scroll steps (55).</div>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            boolean</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="#scrollForward(int)">scrollForward</a></span>(int steps)</nobr>
-
-        <div class="jd-descrdiv">Performs a forward scroll.</div>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            boolean</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="#scrollIntoView(com.android.uiautomator.core.UiSelector)">scrollIntoView</a></span>(<a href="UiSelector.html">UiSelector</a> selector)</nobr>
-
-        <div class="jd-descrdiv">Perform a scroll forward action to move through the scrollable layout
- element until a visible item that matches the selector is found.</div>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            boolean</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="#scrollIntoView(com.android.uiautomator.core.UiObject)">scrollIntoView</a></span>(<a href="UiObject.html">UiObject</a> obj)</nobr>
-
-        <div class="jd-descrdiv">Perform a forward scroll action to move through the scrollable layout element until
- a visible item that matches the <code><a href="UiObject.html">UiObject</a></code> is found.</div>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            boolean</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="#scrollTextIntoView(java.lang.String)">scrollTextIntoView</a></span>(String text)</nobr>
-
-        <div class="jd-descrdiv">Performs a forward scroll action on the scrollable layout element until
- the text you provided is visible, or until swipe attempts have been exhausted.</div>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            boolean</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="#scrollToBeginning(int)">scrollToBeginning</a></span>(int maxSwipes)</nobr>
-
-        <div class="jd-descrdiv">Scrolls to the beginning of a scrollable layout element.</div>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            boolean</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="#scrollToBeginning(int, int)">scrollToBeginning</a></span>(int maxSwipes, int steps)</nobr>
-
-        <div class="jd-descrdiv">Scrolls to the beginning of a scrollable layout element.</div>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            boolean</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="#scrollToEnd(int, int)">scrollToEnd</a></span>(int maxSwipes, int steps)</nobr>
-
-        <div class="jd-descrdiv">Scrolls to the end of a scrollable layout element.</div>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            boolean</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="#scrollToEnd(int)">scrollToEnd</a></span>(int maxSwipes)</nobr>
-
-        <div class="jd-descrdiv">Scrolls to the end of a scrollable layout element.</div>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            <a href="#">UiScrollable</a></nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="#setAsHorizontalList()">setAsHorizontalList</a></span>()</nobr>
-
-        <div class="jd-descrdiv">Set the direction of swipes to be horizontal when performing scroll actions.</div>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            <a href="#">UiScrollable</a></nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="#setAsVerticalList()">setAsVerticalList</a></span>()</nobr>
-
-        <div class="jd-descrdiv">Set the direction of swipes to be vertical when performing scroll actions.</div>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            <a href="#">UiScrollable</a></nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="#setMaxSearchSwipes(int)">setMaxSearchSwipes</a></span>(int swipes)</nobr>
-
-        <div class="jd-descrdiv">Sets the maximum number of scrolls allowed when performing a
- scroll action in search of a child element.</div>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            <a href="#">UiScrollable</a></nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="#setSwipeDeadZonePercentage(double)">setSwipeDeadZonePercentage</a></span>(double swipeDeadZonePercentage)</nobr>
-
-        <div class="jd-descrdiv">Sets the percentage of a widget's size that's considered as no-touch
- zone when swiping.</div>
-
-  </td></tr>
-
-
-
-</table>
-
-
-
-
-<!-- ========== METHOD SUMMARY =========== -->
-<table id="promethods" class="jd-sumtable"><tr><th colspan="12">Protected Methods</th></tr>
-
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            boolean</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="#exists(com.android.uiautomator.core.UiSelector)">exists</a></span>(<a href="UiSelector.html">UiSelector</a> selector)</nobr>
-
-        <div class="jd-descrdiv">Used privately when performing swipe searches to decide if an element has become
- visible or not.</div>
-
-  </td></tr>
-
-
-
-</table>
-
-
-
-
-
-<!-- ========== METHOD SUMMARY =========== -->
-<table id="inhmethods" class="jd-sumtable"><tr><th>
-  <a href="#" class="toggle-all" onclick="return toggleAllInherited(this, null)">[Expand]</a>
-  <div style="clear:left;">Inherited Methods</div></th></tr>
-
-
-<tr class="api" >
-<td colspan="12">
-  <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-com.android.uiautomator.core.UiCollection" class="jd-expando-trigger closed"
-          ><img id="inherited-methods-com.android.uiautomator.core.UiCollection-trigger"
-          src="../../../../../assets/images/styles/disclosure_down.png"
-          class="jd-expando-trigger-img" /></a>
-From class
-
-  <a href="UiCollection.html">com.android.uiautomator.core.UiCollection</a>
-
-<div id="inherited-methods-com.android.uiautomator.core.UiCollection">
-  <div id="inherited-methods-com.android.uiautomator.core.UiCollection-list"
-        class="jd-inheritedlinks">
-  </div>
-  <div id="inherited-methods-com.android.uiautomator.core.UiCollection-summary" style="display: none;">
-    <table class="jd-sumtable-expando">
-
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            <a href="UiObject.html">UiObject</a></nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="UiCollection.html#getChildByDescription(com.android.uiautomator.core.UiSelector, java.lang.String)">getChildByDescription</a></span>(<a href="UiSelector.html">UiSelector</a> childPattern, String text)</nobr>
-
-        <div class="jd-descrdiv">Searches for child UI element within the constraints of this UiCollection <code><a href="UiSelector.html">UiSelector</a></code>
- selector.</div>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            <a href="UiObject.html">UiObject</a></nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="UiCollection.html#getChildByInstance(com.android.uiautomator.core.UiSelector, int)">getChildByInstance</a></span>(<a href="UiSelector.html">UiSelector</a> childPattern, int instance)</nobr>
-
-        <div class="jd-descrdiv">Searches for child UI element within the constraints of this UiCollection <code><a href="UiSelector.html">UiSelector</a></code>
- selector.</div>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            <a href="UiObject.html">UiObject</a></nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="UiCollection.html#getChildByText(com.android.uiautomator.core.UiSelector, java.lang.String)">getChildByText</a></span>(<a href="UiSelector.html">UiSelector</a> childPattern, String text)</nobr>
-
-        <div class="jd-descrdiv">Searches for child UI element within the constraints of this UiCollection <code><a href="UiSelector.html">UiSelector</a></code>
- selector.</div>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            int</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="UiCollection.html#getChildCount(com.android.uiautomator.core.UiSelector)">getChildCount</a></span>(<a href="UiSelector.html">UiSelector</a> childPattern)</nobr>
-
-        <div class="jd-descrdiv">Counts child UI element instances matching the <code>childPattern</code>
- argument.</div>
-
-  </td></tr>
-
-
-</table>
-  </div>
-</div>
-</td></tr>
-
-
-
-<tr class="api" >
-<td colspan="12">
-  <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-com.android.uiautomator.core.UiObject" class="jd-expando-trigger closed"
-          ><img id="inherited-methods-com.android.uiautomator.core.UiObject-trigger"
-          src="../../../../../assets/images/styles/disclosure_down.png"
-          class="jd-expando-trigger-img" /></a>
-From class
-
-  <a href="UiObject.html">com.android.uiautomator.core.UiObject</a>
-
-<div id="inherited-methods-com.android.uiautomator.core.UiObject">
-  <div id="inherited-methods-com.android.uiautomator.core.UiObject-list"
-        class="jd-inheritedlinks">
-  </div>
-  <div id="inherited-methods-com.android.uiautomator.core.UiObject-summary" style="display: none;">
-    <table class="jd-sumtable-expando">
-
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            void</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="UiObject.html#clearTextField()">clearTextField</a></span>()</nobr>
-
-        <div class="jd-descrdiv">Clears the existing text contents in an editable field.</div>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            boolean</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="UiObject.html#click()">click</a></span>()</nobr>
-
-        <div class="jd-descrdiv">Performs a click at the center of the visible bounds of the UI element represented
- by this UiObject.</div>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            boolean</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="UiObject.html#clickAndWaitForNewWindow(long)">clickAndWaitForNewWindow</a></span>(long timeout)</nobr>
-
-        <div class="jd-descrdiv">Performs a click at the center of the visible bounds of the UI element represented
- by this UiObject and waits for window transitions.</div>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            boolean</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="UiObject.html#clickAndWaitForNewWindow()">clickAndWaitForNewWindow</a></span>()</nobr>
-
-        <div class="jd-descrdiv">Waits for window transitions that would typically take longer than the
- usual default timeouts.</div>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            boolean</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="UiObject.html#clickBottomRight()">clickBottomRight</a></span>()</nobr>
-
-        <div class="jd-descrdiv">Clicks the bottom and right corner of the UI element</div>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            boolean</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="UiObject.html#clickTopLeft()">clickTopLeft</a></span>()</nobr>
-
-        <div class="jd-descrdiv">Clicks the top and left corner of the UI element</div>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            boolean</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="UiObject.html#dragTo(com.android.uiautomator.core.UiObject, int)">dragTo</a></span>(<a href="UiObject.html">UiObject</a> destObj, int steps)</nobr>
-
-        <div class="jd-descrdiv">Drags this object to a destination UiObject.</div>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            boolean</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="UiObject.html#dragTo(int, int, int)">dragTo</a></span>(int destX, int destY, int steps)</nobr>
-
-        <div class="jd-descrdiv">Drags this object to arbitrary coordinates.</div>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            boolean</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="UiObject.html#exists()">exists</a></span>()</nobr>
-
-        <div class="jd-descrdiv">Check if view exists.</div>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            AccessibilityNodeInfo</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="UiObject.html#findAccessibilityNodeInfo(long)">findAccessibilityNodeInfo</a></span>(long timeout)</nobr>
-
-        <div class="jd-descrdiv">Finds a matching UI element in the accessibility hierarchy, by
- using the selector for this UiObject.</div>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            Rect</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="UiObject.html#getBounds()">getBounds</a></span>()</nobr>
-
-        <div class="jd-descrdiv">Returns the view's <code>bounds</code> property.</div>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            <a href="UiObject.html">UiObject</a></nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="UiObject.html#getChild(com.android.uiautomator.core.UiSelector)">getChild</a></span>(<a href="UiSelector.html">UiSelector</a> selector)</nobr>
-
-        <div class="jd-descrdiv">Creates a new UiObject for a child view that is under the present UiObject.</div>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            int</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="UiObject.html#getChildCount()">getChildCount</a></span>()</nobr>
-
-        <div class="jd-descrdiv">Counts the child views immediately under the present UiObject.</div>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            String</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="UiObject.html#getClassName()">getClassName</a></span>()</nobr>
-
-        <div class="jd-descrdiv">Retrieves the <code>className</code> property of the UI element.</div>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            String</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="UiObject.html#getContentDescription()">getContentDescription</a></span>()</nobr>
-
-        <div class="jd-descrdiv">Reads the <code>content_desc</code> property of the UI element</div>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            <a href="UiObject.html">UiObject</a></nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="UiObject.html#getFromParent(com.android.uiautomator.core.UiSelector)">getFromParent</a></span>(<a href="UiSelector.html">UiSelector</a> selector)</nobr>
-
-        <div class="jd-descrdiv">Creates a new UiObject for a sibling view or a child of the sibling view,
- relative to the present UiObject.</div>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            String</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="UiObject.html#getPackageName()">getPackageName</a></span>()</nobr>
-
-        <div class="jd-descrdiv">Reads the view's <code>package</code> property</div>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-            final
-
-
-            <a href="UiSelector.html">UiSelector</a></nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="UiObject.html#getSelector()">getSelector</a></span>()</nobr>
-
-        <div class="jd-descrdiv">Debugging helper.</div>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            String</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="UiObject.html#getText()">getText</a></span>()</nobr>
-
-        <div class="jd-descrdiv">Reads the <code>text</code> property of the UI element</div>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            Rect</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="UiObject.html#getVisibleBounds()">getVisibleBounds</a></span>()</nobr>
-
-        <div class="jd-descrdiv">Returns the visible bounds of the view.</div>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            boolean</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="UiObject.html#isCheckable()">isCheckable</a></span>()</nobr>
-
-        <div class="jd-descrdiv">Checks if the UI element's <code>checkable</code> property is currently true.</div>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            boolean</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="UiObject.html#isChecked()">isChecked</a></span>()</nobr>
-
-        <div class="jd-descrdiv">Check if the UI element's <code>checked</code> property is currently true</div>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            boolean</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="UiObject.html#isClickable()">isClickable</a></span>()</nobr>
-
-        <div class="jd-descrdiv">Checks if the UI element's <code>clickable</code> property is currently true.</div>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            boolean</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="UiObject.html#isEnabled()">isEnabled</a></span>()</nobr>
-
-        <div class="jd-descrdiv">Checks if the UI element's <code>enabled</code> property is currently true.</div>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            boolean</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="UiObject.html#isFocusable()">isFocusable</a></span>()</nobr>
-
-        <div class="jd-descrdiv">Check if the UI element's <code>focusable</code> property is currently true.</div>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            boolean</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="UiObject.html#isFocused()">isFocused</a></span>()</nobr>
-
-        <div class="jd-descrdiv">Check if the UI element's <code>focused</code> property is currently true</div>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            boolean</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="UiObject.html#isLongClickable()">isLongClickable</a></span>()</nobr>
-
-        <div class="jd-descrdiv">Check if the view's <code>long-clickable</code> property is currently true</div>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            boolean</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="UiObject.html#isScrollable()">isScrollable</a></span>()</nobr>
-
-        <div class="jd-descrdiv">Check if the view's <code>scrollable</code> property is currently true</div>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            boolean</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="UiObject.html#isSelected()">isSelected</a></span>()</nobr>
-
-        <div class="jd-descrdiv">Checks if the UI element's <code>selected</code> property is currently true.</div>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            boolean</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="UiObject.html#longClick()">longClick</a></span>()</nobr>
-
-        <div class="jd-descrdiv">Long clicks the center of the visible bounds of the UI element</div>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            boolean</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="UiObject.html#longClickBottomRight()">longClickBottomRight</a></span>()</nobr>
-
-        <div class="jd-descrdiv">Long clicks bottom and right corner of the UI element</div>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            boolean</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="UiObject.html#longClickTopLeft()">longClickTopLeft</a></span>()</nobr>
-
-        <div class="jd-descrdiv">Long clicks on the top and left corner of the UI element</div>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            boolean</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="UiObject.html#performMultiPointerGesture(android.view.MotionEvent.PointerCoords[]...)">performMultiPointerGesture</a></span>(PointerCoords... touches)</nobr>
-
-        <div class="jd-descrdiv">Performs a multi-touch gesture.</div>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            boolean</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="UiObject.html#performTwoPointerGesture(android.graphics.Point, android.graphics.Point, android.graphics.Point, android.graphics.Point, int)">performTwoPointerGesture</a></span>(Point startPoint1, Point startPoint2, Point endPoint1, Point endPoint2, int steps)</nobr>
-
-        <div class="jd-descrdiv">Generates a two-pointer gesture with arbitrary starting and ending points.</div>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            boolean</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="UiObject.html#pinchIn(int, int)">pinchIn</a></span>(int percent, int steps)</nobr>
-
-        <div class="jd-descrdiv">Performs a two-pointer gesture, where each pointer moves diagonally
- toward the other, from the edges to the center of this UiObject .</div>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            boolean</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="UiObject.html#pinchOut(int, int)">pinchOut</a></span>(int percent, int steps)</nobr>
-
-        <div class="jd-descrdiv">Performs a two-pointer gesture, where each pointer moves diagonally
- opposite across the other, from the center out towards the edges of the
- this UiObject.</div>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            boolean</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="UiObject.html#setText(java.lang.String)">setText</a></span>(String text)</nobr>
-
-        <div class="jd-descrdiv">Sets the text in an editable field, after clearing the field's content.</div>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            boolean</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="UiObject.html#swipeDown(int)">swipeDown</a></span>(int steps)</nobr>
-
-        <div class="jd-descrdiv">Performs the swipe down action on the UiObject.</div>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            boolean</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="UiObject.html#swipeLeft(int)">swipeLeft</a></span>(int steps)</nobr>
-
-        <div class="jd-descrdiv">Performs the swipe left action on the UiObject.</div>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            boolean</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="UiObject.html#swipeRight(int)">swipeRight</a></span>(int steps)</nobr>
-
-        <div class="jd-descrdiv">Performs the swipe right action on the UiObject.</div>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            boolean</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="UiObject.html#swipeUp(int)">swipeUp</a></span>(int steps)</nobr>
-
-        <div class="jd-descrdiv">Performs the swipe up action on the UiObject.</div>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            boolean</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="UiObject.html#waitForExists(long)">waitForExists</a></span>(long timeout)</nobr>
-
-        <div class="jd-descrdiv">Waits a specified length of time for a view to become visible.</div>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            boolean</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="UiObject.html#waitUntilGone(long)">waitUntilGone</a></span>(long timeout)</nobr>
-
-        <div class="jd-descrdiv">Waits a specified length of time for a view to become undetectable.</div>
-
-  </td></tr>
-
-
-</table>
-  </div>
-</div>
-</td></tr>
-
-
-
-<tr class="api" >
-<td colspan="12">
-  <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
-          ><img id="inherited-methods-java.lang.Object-trigger"
-          src="../../../../../assets/images/styles/disclosure_down.png"
-          class="jd-expando-trigger-img" /></a>
-From class
-
-  java.lang.Object
-
-<div id="inherited-methods-java.lang.Object">
-  <div id="inherited-methods-java.lang.Object-list"
-        class="jd-inheritedlinks">
-  </div>
-  <div id="inherited-methods-java.lang.Object-summary" style="display: none;">
-    <table class="jd-sumtable-expando">
-
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            Object</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">clone</span>()</nobr>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            boolean</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">equals</span>(Object arg0)</nobr>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            void</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">finalize</span>()</nobr>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-            final
-
-
-            Class&lt;?&gt;</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">getClass</span>()</nobr>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            int</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">hashCode</span>()</nobr>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-            final
-
-
-            void</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">notify</span>()</nobr>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-            final
-
-
-            void</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">notifyAll</span>()</nobr>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            String</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">toString</span>()</nobr>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-            final
-
-
-            void</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">wait</span>()</nobr>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-            final
-
-
-            void</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">wait</span>(long arg0, int arg1)</nobr>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-            final
-
-
-            void</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">wait</span>(long arg0)</nobr>
-
-  </td></tr>
-
-
-</table>
-  </div>
-</div>
-</td></tr>
-
-
-</table>
-
-
-</div><!-- jd-descr (summary) -->
-
-<!-- Details -->
-
-
-
-
-
-
-
-
-<!-- XML Attributes -->
-
-
-<!-- Enum Values -->
-
-
-<!-- Constants -->
-
-
-<!-- Fields -->
-
-
-<!-- Public ctors -->
-
-
-<!-- ========= CONSTRUCTOR DETAIL ======== -->
-<h2>Public Constructors</h2>
-
-
-
-<A NAME="UiScrollable(com.android.uiautomator.core.UiSelector)"></A>
-
-<div class="jd-details api">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        public
-
-
-
-
-
-      </span>
-      <span class="sympad">UiScrollable</span>
-      <span class="normal">(<a href="UiSelector.html">UiSelector</a> container)</span>
-    </h4>
-      <div class="api-level">
-        <div></div>
-
-
-
-      </div>
-    <div class="jd-details-descr">
-
-  <div class="jd-tagdata jd-tagdescr"><p>Constructor.</p></div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Parameters</h5>
-      <table class="jd-tagtable">
-        <tr>
-          <th>container</td>
-          <td>a <code><a href="UiSelector.html">UiSelector</a></code> selector to identify the scrollable
-     layout element.</td>
-        </tr>
-      </table>
-  </div>
-
-    </div>
-</div>
-
-
-
-
-
-<!-- ========= CONSTRUCTOR DETAIL ======== -->
-<!-- Protected ctors -->
-
-
-
-<!-- ========= METHOD DETAIL ======== -->
-<!-- Public methdos -->
-
-<h2>Public Methods</h2>
-
-
-
-<A NAME="flingBackward()"></A>
-
-<div class="jd-details api">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        public
-
-
-
-
-        boolean
-      </span>
-      <span class="sympad">flingBackward</span>
-      <span class="normal">()</span>
-    </h4>
-      <div class="api-level">
-        <div></div>
-
-
-
-      </div>
-    <div class="jd-details-descr">
-
-  <div class="jd-tagdata jd-tagdescr"><p>Performs a backwards fling action with the default number of fling
- steps (5). If the swipe direction is set to vertical,
- then the swipe will be performed from top to bottom. If the swipe
- direction is set to horizontal, then the swipes will be performed from
- left to right. Make sure to take into account devices configured with
- right-to-left languages like Arabic and Hebrew.</p></div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Returns</h5>
-      <ul class="nolist"><li>true if scrolled, and false if can't scroll anymore</li></ul>
-  </div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Throws</h5>
-      <table class="jd-tagtable">
-        <tr>
-            <th><a href="UiObjectNotFoundException.html">UiObjectNotFoundException</a></td>
-            <td></td>
-        </tr>
-      </table>
-  </div>
-
-    </div>
-</div>
-
-
-<A NAME="flingForward()"></A>
-
-<div class="jd-details api">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        public
-
-
-
-
-        boolean
-      </span>
-      <span class="sympad">flingForward</span>
-      <span class="normal">()</span>
-    </h4>
-      <div class="api-level">
-        <div></div>
-
-
-
-      </div>
-    <div class="jd-details-descr">
-
-  <div class="jd-tagdata jd-tagdescr"><p>Performs a forward fling with the default number of fling steps (5).
- If the swipe direction is set to vertical, then the swipes will be
- performed from bottom to top. If the swipe
- direction is set to horizontal, then the swipes will be performed from
- right to left. Make sure to take into account devices configured with
- right-to-left languages like Arabic and Hebrew.</p></div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Returns</h5>
-      <ul class="nolist"><li>true if scrolled, false if can't scroll anymore</li></ul>
-  </div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Throws</h5>
-      <table class="jd-tagtable">
-        <tr>
-            <th><a href="UiObjectNotFoundException.html">UiObjectNotFoundException</a></td>
-            <td></td>
-        </tr>
-      </table>
-  </div>
-
-    </div>
-</div>
-
-
-<A NAME="flingToBeginning(int)"></A>
-
-<div class="jd-details api">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        public
-
-
-
-
-        boolean
-      </span>
-      <span class="sympad">flingToBeginning</span>
-      <span class="normal">(int maxSwipes)</span>
-    </h4>
-      <div class="api-level">
-        <div></div>
-
-
-
-      </div>
-    <div class="jd-details-descr">
-
-  <div class="jd-tagdata jd-tagdescr"><p>Performs a fling gesture to reach the beginning of a scrollable layout element.
- The beginning can be at the  top-most edge in the case of vertical controls, or
- the left-most edge for horizontal controls. Make sure to take into
- account devices configured with right-to-left languages like Arabic and Hebrew.</p></div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Returns</h5>
-      <ul class="nolist"><li>true on scrolled else false</li></ul>
-  </div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Throws</h5>
-      <table class="jd-tagtable">
-        <tr>
-            <th><a href="UiObjectNotFoundException.html">UiObjectNotFoundException</a></td>
-            <td></td>
-        </tr>
-      </table>
-  </div>
-
-    </div>
-</div>
-
-
-<A NAME="flingToEnd(int)"></A>
-
-<div class="jd-details api">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        public
-
-
-
-
-        boolean
-      </span>
-      <span class="sympad">flingToEnd</span>
-      <span class="normal">(int maxSwipes)</span>
-    </h4>
-      <div class="api-level">
-        <div></div>
-
-
-
-      </div>
-    <div class="jd-details-descr">
-
-  <div class="jd-tagdata jd-tagdescr"><p>Performs a fling gesture to reach the end of a scrollable layout element.
- The end can be at the  bottom-most edge in the case of vertical controls, or
- the right-most edge for horizontal controls. Make sure to take into
- account devices configured with right-to-left languages like Arabic and Hebrew.</p></div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Returns</h5>
-      <ul class="nolist"><li>true on scrolled, else false</li></ul>
-  </div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Throws</h5>
-      <table class="jd-tagtable">
-        <tr>
-            <th><a href="UiObjectNotFoundException.html">UiObjectNotFoundException</a></td>
-            <td></td>
-        </tr>
-      </table>
-  </div>
-
-    </div>
-</div>
-
-
-<A NAME="getChildByDescription(com.android.uiautomator.core.UiSelector, java.lang.String, boolean)"></A>
-
-<div class="jd-details api">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        public
-
-
-
-
-        <a href="UiObject.html">UiObject</a>
-      </span>
-      <span class="sympad">getChildByDescription</span>
-      <span class="normal">(<a href="UiSelector.html">UiSelector</a> childPattern, String text, boolean allowScrollSearch)</span>
-    </h4>
-      <div class="api-level">
-        <div></div>
-
-
-
-      </div>
-    <div class="jd-details-descr">
-
-  <div class="jd-tagdata jd-tagdescr"><p>Searches for a child element in the present scrollable container.
- The search first looks for a child element that matches the selector
- you provided, then looks for the content-description in its children elements.
- If both search conditions are fulfilled, the method returns a {@ link UiObject}
- representing the element matching the selector (not the child element in its
- subhierarchy containing the content-description).</p></div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Parameters</h5>
-      <table class="jd-tagtable">
-        <tr>
-          <th>childPattern</td>
-          <td><code><a href="UiSelector.html">UiSelector</a></code> for a child in a scollable layout element</td>
-        </tr>
-        <tr>
-          <th>text</td>
-          <td>Content-description to find in the children of
- the <code>childPattern</code> match (may be a partial match)</td>
-        </tr>
-        <tr>
-          <th>allowScrollSearch</td>
-          <td>set to true if scrolling is allowed</td>
-        </tr>
-      </table>
-  </div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Returns</h5>
-      <ul class="nolist"><li><code><a href="UiObject.html">UiObject</a></code> representing the child element that matches the search conditions</li></ul>
-  </div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Throws</h5>
-      <table class="jd-tagtable">
-
-        <tr>
-            <th><a href="UiObjectNotFoundException.html">UiObjectNotFoundException</a></td>
-            <td></td>
-        </tr>
-      </table>
-  </div>
-
-    </div>
-</div>
-
-
-<A NAME="getChildByDescription(com.android.uiautomator.core.UiSelector, java.lang.String)"></A>
-
-<div class="jd-details api">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        public
-
-
-
-
-        <a href="UiObject.html">UiObject</a>
-      </span>
-      <span class="sympad">getChildByDescription</span>
-      <span class="normal">(<a href="UiSelector.html">UiSelector</a> childPattern, String text)</span>
-    </h4>
-      <div class="api-level">
-        <div></div>
-
-
-
-      </div>
-    <div class="jd-details-descr">
-
-  <div class="jd-tagdata jd-tagdescr"><p>Searches for a child element in the present scrollable container.
- The search first looks for a child element that matches the selector
- you provided, then looks for the content-description in its children elements.
- If both search conditions are fulfilled, the method returns a {@ link UiObject}
- representing the element matching the selector (not the child element in its
- subhierarchy containing the content-description). By default, this method performs a
- scroll search.
- See <code><a href="#getChildByDescription(com.android.uiautomator.core.UiSelector, java.lang.String, boolean)">getChildByDescription(UiSelector, String, boolean)</a></code></p></div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Parameters</h5>
-      <table class="jd-tagtable">
-        <tr>
-          <th>childPattern</td>
-          <td><code><a href="UiSelector.html">UiSelector</a></code> for a child in a scollable layout element</td>
-        </tr>
-        <tr>
-          <th>text</td>
-          <td>Content-description to find in the children of
- the <code>childPattern</code> match</td>
-        </tr>
-      </table>
-  </div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Returns</h5>
-      <ul class="nolist"><li><code><a href="UiObject.html">UiObject</a></code> representing the child element that matches the search conditions</li></ul>
-  </div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Throws</h5>
-      <table class="jd-tagtable">
-        <tr>
-            <th><a href="UiObjectNotFoundException.html">UiObjectNotFoundException</a></td>
-            <td></td>
-        </tr>
-      </table>
-  </div>
-
-    </div>
-</div>
-
-
-<A NAME="getChildByInstance(com.android.uiautomator.core.UiSelector, int)"></A>
-
-<div class="jd-details api">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        public
-
-
-
-
-        <a href="UiObject.html">UiObject</a>
-      </span>
-      <span class="sympad">getChildByInstance</span>
-      <span class="normal">(<a href="UiSelector.html">UiSelector</a> childPattern, int instance)</span>
-    </h4>
-      <div class="api-level">
-        <div></div>
-
-
-
-      </div>
-    <div class="jd-details-descr">
-
-  <div class="jd-tagdata jd-tagdescr"><p>Searches for a child element in the present scrollable container that
- matches the selector you provided. The search is performed without
- scrolling and only on visible elements.</p></div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Parameters</h5>
-      <table class="jd-tagtable">
-        <tr>
-          <th>childPattern</td>
-          <td><code><a href="UiSelector.html">UiSelector</a></code> for a child in a scollable layout element</td>
-        </tr>
-        <tr>
-          <th>instance</td>
-          <td>int number representing the occurance of
- a <code>childPattern</code> match</td>
-        </tr>
-      </table>
-  </div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Returns</h5>
-      <ul class="nolist"><li><code><a href="UiObject.html">UiObject</a></code> representing the child element that matches the search conditions</li></ul>
-  </div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Throws</h5>
-      <table class="jd-tagtable">
-        <tr>
-            <th><a href="UiObjectNotFoundException.html">UiObjectNotFoundException</a></td>
-            <td></td>
-        </tr>
-      </table>
-  </div>
-
-    </div>
-</div>
-
-
-<A NAME="getChildByText(com.android.uiautomator.core.UiSelector, java.lang.String, boolean)"></A>
-
-<div class="jd-details api">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        public
-
-
-
-
-        <a href="UiObject.html">UiObject</a>
-      </span>
-      <span class="sympad">getChildByText</span>
-      <span class="normal">(<a href="UiSelector.html">UiSelector</a> childPattern, String text, boolean allowScrollSearch)</span>
-    </h4>
-      <div class="api-level">
-        <div></div>
-
-
-
-      </div>
-    <div class="jd-details-descr">
-
-  <div class="jd-tagdata jd-tagdescr"><p>Searches for a child element in the present scrollable container. The
- search first looks for a child element that matches the
- selector you provided, then looks for the text in its children elements.
- If both search conditions are fulfilled, the method returns a {@ link UiObject}
- representing the element matching the selector (not the child element in its
- subhierarchy containing the text).</p></div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Parameters</h5>
-      <table class="jd-tagtable">
-        <tr>
-          <th>childPattern</td>
-          <td><code><a href="UiSelector.html">UiSelector</a></code> selector for a child in a scrollable layout element</td>
-        </tr>
-        <tr>
-          <th>text</td>
-          <td>String to find in the children of the <code>childPattern</code> match</td>
-        </tr>
-        <tr>
-          <th>allowScrollSearch</td>
-          <td>set to true if scrolling is allowed</td>
-        </tr>
-      </table>
-  </div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Returns</h5>
-      <ul class="nolist"><li><code><a href="UiObject.html">UiObject</a></code> representing the child element that matches the search conditions</li></ul>
-  </div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Throws</h5>
-      <table class="jd-tagtable">
-        <tr>
-            <th><a href="UiObjectNotFoundException.html">UiObjectNotFoundException</a></td>
-            <td></td>
-        </tr>
-      </table>
-  </div>
-
-    </div>
-</div>
-
-
-<A NAME="getChildByText(com.android.uiautomator.core.UiSelector, java.lang.String)"></A>
-
-<div class="jd-details api">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        public
-
-
-
-
-        <a href="UiObject.html">UiObject</a>
-      </span>
-      <span class="sympad">getChildByText</span>
-      <span class="normal">(<a href="UiSelector.html">UiSelector</a> childPattern, String text)</span>
-    </h4>
-      <div class="api-level">
-        <div></div>
-
-
-
-      </div>
-    <div class="jd-details-descr">
-
-  <div class="jd-tagdata jd-tagdescr"><p>Searches for a child element in the present scrollable
- container. The search first looks for a child element that matches the
- selector you provided, then looks for the text in its children elements.
- If both search conditions are fulfilled, the method returns a {@ link UiObject}
- representing the element matching the selector (not the child element in its
- subhierarchy containing the text). By default, this method performs a
- scroll search.
- See <code><a href="#getChildByText(com.android.uiautomator.core.UiSelector, java.lang.String, boolean)">getChildByText(UiSelector, String, boolean)</a></code></p></div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Parameters</h5>
-      <table class="jd-tagtable">
-        <tr>
-          <th>childPattern</td>
-          <td><code><a href="UiSelector.html">UiSelector</a></code> selector for a child in a scrollable layout element</td>
-        </tr>
-        <tr>
-          <th>text</td>
-          <td>String to find in the children of the <code>childPattern</code> match</td>
-        </tr>
-      </table>
-  </div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Returns</h5>
-      <ul class="nolist"><li><code><a href="UiObject.html">UiObject</a></code> representing the child element that matches the search conditions</li></ul>
-  </div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Throws</h5>
-      <table class="jd-tagtable">
-
-        <tr>
-            <th><a href="UiObjectNotFoundException.html">UiObjectNotFoundException</a></td>
-            <td></td>
-        </tr>
-      </table>
-  </div>
-
-    </div>
-</div>
-
-
-<A NAME="getMaxSearchSwipes()"></A>
-
-<div class="jd-details api">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        public
-
-
-
-
-        int
-      </span>
-      <span class="sympad">getMaxSearchSwipes</span>
-      <span class="normal">()</span>
-    </h4>
-      <div class="api-level">
-        <div></div>
-
-
-
-      </div>
-    <div class="jd-details-descr">
-
-  <div class="jd-tagdata jd-tagdescr"><p>Gets the maximum number of scrolls allowed when performing a
- scroll action in search of a child element.
- See <code><a href="#getChildByDescription(com.android.uiautomator.core.UiSelector, java.lang.String)">getChildByDescription(UiSelector, String)</a></code> and
- <code><a href="#getChildByText(com.android.uiautomator.core.UiSelector, java.lang.String)">getChildByText(UiSelector, String)</a></code>.</p></div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Returns</h5>
-      <ul class="nolist"><li>max the number of search swipes to perform until giving up</li></ul>
-  </div>
-
-    </div>
-</div>
-
-
-<A NAME="getSwipeDeadZonePercentage()"></A>
-
-<div class="jd-details api">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        public
-
-
-
-
-        double
-      </span>
-      <span class="sympad">getSwipeDeadZonePercentage</span>
-      <span class="normal">()</span>
-    </h4>
-      <div class="api-level">
-        <div></div>
-
-
-
-      </div>
-    <div class="jd-details-descr">
-
-  <div class="jd-tagdata jd-tagdescr"><p>Returns the percentage of a widget's size that's considered as a no-touch
- zone when swiping. The no-touch zone is set as a percentage of a widget's total
- width or height, denoting a margin around the swipable area of the widget.
- Swipes must start and end inside this margin. This is important when the
- widget being swiped may not respond to the swipe if started at a point
- too near to the edge. The default is 10% from either edge.</p></div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Returns</h5>
-      <ul class="nolist"><li>a value between 0 and 1</li></ul>
-  </div>
-
-    </div>
-</div>
-
-
-<A NAME="scrollBackward(int)"></A>
-
-<div class="jd-details api">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        public
-
-
-
-
-        boolean
-      </span>
-      <span class="sympad">scrollBackward</span>
-      <span class="normal">(int steps)</span>
-    </h4>
-      <div class="api-level">
-        <div></div>
-
-
-
-      </div>
-    <div class="jd-details-descr">
-
-  <div class="jd-tagdata jd-tagdescr"><p>Performs a backward scroll. If the swipe direction is set to vertical,
- then the swipes will be performed from top to bottom. If the swipe
- direction is set to horizontal, then the swipes will be performed from
- left to right. Make sure to take into account devices configured with
- right-to-left languages like Arabic and Hebrew.</p></div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Parameters</h5>
-      <table class="jd-tagtable">
-        <tr>
-          <th>steps</td>
-          <td>number of steps. Use this to control the speed of the scroll action.</td>
-        </tr>
-      </table>
-  </div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Returns</h5>
-      <ul class="nolist"><li>true if scrolled, false if can't scroll anymore</li></ul>
-  </div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Throws</h5>
-      <table class="jd-tagtable">
-        <tr>
-            <th><a href="UiObjectNotFoundException.html">UiObjectNotFoundException</a></td>
-            <td></td>
-        </tr>
-      </table>
-  </div>
-
-    </div>
-</div>
-
-
-<A NAME="scrollBackward()"></A>
-
-<div class="jd-details api">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        public
-
-
-
-
-        boolean
-      </span>
-      <span class="sympad">scrollBackward</span>
-      <span class="normal">()</span>
-    </h4>
-      <div class="api-level">
-        <div></div>
-
-
-
-      </div>
-    <div class="jd-details-descr">
-
-  <div class="jd-tagdata jd-tagdescr"><p>Performs a backward scroll with the default number of scroll steps (55).
- If the swipe direction is set to vertical,
- then the swipes will be performed from top to bottom. If the swipe
- direction is set to horizontal, then the swipes will be performed from
- left to right. Make sure to take into account devices configured with
- right-to-left languages like Arabic and Hebrew.</p></div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Returns</h5>
-      <ul class="nolist"><li>true if scrolled, and false if can't scroll anymore</li></ul>
-  </div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Throws</h5>
-      <table class="jd-tagtable">
-        <tr>
-            <th><a href="UiObjectNotFoundException.html">UiObjectNotFoundException</a></td>
-            <td></td>
-        </tr>
-      </table>
-  </div>
-
-    </div>
-</div>
-
-
-<A NAME="scrollDescriptionIntoView(java.lang.String)"></A>
-
-<div class="jd-details api">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        public
-
-
-
-
-        boolean
-      </span>
-      <span class="sympad">scrollDescriptionIntoView</span>
-      <span class="normal">(String text)</span>
-    </h4>
-      <div class="api-level">
-        <div></div>
-
-
-
-      </div>
-    <div class="jd-details-descr">
-
-  <div class="jd-tagdata jd-tagdescr"><p>Performs a forward scroll action on the scrollable layout element until
- the content-description is found, or until swipe attempts have been exhausted.
- See <code><a href="#setMaxSearchSwipes(int)">setMaxSearchSwipes(int)</a></code></p></div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Parameters</h5>
-      <table class="jd-tagtable">
-        <tr>
-          <th>text</td>
-          <td>content-description to find within the contents of this scrollable layout element.</td>
-        </tr>
-      </table>
-  </div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Returns</h5>
-      <ul class="nolist"><li>true if item is found; else, false</li></ul>
-  </div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Throws</h5>
-      <table class="jd-tagtable">
-        <tr>
-            <th><a href="UiObjectNotFoundException.html">UiObjectNotFoundException</a></td>
-            <td></td>
-        </tr>
-      </table>
-  </div>
-
-    </div>
-</div>
-
-
-<A NAME="scrollForward()"></A>
-
-<div class="jd-details api">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        public
-
-
-
-
-        boolean
-      </span>
-      <span class="sympad">scrollForward</span>
-      <span class="normal">()</span>
-    </h4>
-      <div class="api-level">
-        <div></div>
-
-
-
-      </div>
-    <div class="jd-details-descr">
-
-  <div class="jd-tagdata jd-tagdescr"><p>Performs a forward scroll with the default number of scroll steps (55).
- If the swipe direction is set to vertical,
- then the swipes will be performed from bottom to top. If the swipe
- direction is set to horizontal, then the swipes will be performed from
- right to left. Make sure to take into account devices configured with
- right-to-left languages like Arabic and Hebrew.</p></div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Returns</h5>
-      <ul class="nolist"><li>true if scrolled, false if can't scroll anymore</li></ul>
-  </div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Throws</h5>
-      <table class="jd-tagtable">
-        <tr>
-            <th><a href="UiObjectNotFoundException.html">UiObjectNotFoundException</a></td>
-            <td></td>
-        </tr>
-      </table>
-  </div>
-
-    </div>
-</div>
-
-
-<A NAME="scrollForward(int)"></A>
-
-<div class="jd-details api">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        public
-
-
-
-
-        boolean
-      </span>
-      <span class="sympad">scrollForward</span>
-      <span class="normal">(int steps)</span>
-    </h4>
-      <div class="api-level">
-        <div></div>
-
-
-
-      </div>
-    <div class="jd-details-descr">
-
-  <div class="jd-tagdata jd-tagdescr"><p>Performs a forward scroll. If the swipe direction is set to vertical,
- then the swipes will be performed from bottom to top. If the swipe
- direction is set to horizontal, then the swipes will be performed from
- right to left. Make sure to take into account devices configured with
- right-to-left languages like Arabic and Hebrew.</p></div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Parameters</h5>
-      <table class="jd-tagtable">
-        <tr>
-          <th>steps</td>
-          <td>number of steps. Use this to control the speed of the scroll action</td>
-        </tr>
-      </table>
-  </div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Returns</h5>
-      <ul class="nolist"><li>true if scrolled, false if can't scroll anymore</li></ul>
-  </div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Throws</h5>
-      <table class="jd-tagtable">
-        <tr>
-            <th><a href="UiObjectNotFoundException.html">UiObjectNotFoundException</a></td>
-            <td></td>
-        </tr>
-      </table>
-  </div>
-
-    </div>
-</div>
-
-
-<A NAME="scrollIntoView(com.android.uiautomator.core.UiSelector)"></A>
-
-<div class="jd-details api">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        public
-
-
-
-
-        boolean
-      </span>
-      <span class="sympad">scrollIntoView</span>
-      <span class="normal">(<a href="UiSelector.html">UiSelector</a> selector)</span>
-    </h4>
-      <div class="api-level">
-        <div></div>
-
-
-
-      </div>
-    <div class="jd-details-descr">
-
-  <div class="jd-tagdata jd-tagdescr"><p>Perform a scroll forward action to move through the scrollable layout
- element until a visible item that matches the selector is found.
-
- See <code><a href="#scrollDescriptionIntoView(java.lang.String)">scrollDescriptionIntoView(String)</a></code> and <code><a href="#scrollTextIntoView(java.lang.String)">scrollTextIntoView(String)</a></code>.</p></div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Parameters</h5>
-      <table class="jd-tagtable">
-        <tr>
-          <th>selector</td>
-          <td><code><a href="UiSelector.html">UiSelector</a></code> selector</td>
-        </tr>
-      </table>
-  </div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Returns</h5>
-      <ul class="nolist"><li>true if the item was found and now is in view; else, false</li></ul>
-  </div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Throws</h5>
-      <table class="jd-tagtable">
-        <tr>
-            <th><a href="UiObjectNotFoundException.html">UiObjectNotFoundException</a></td>
-            <td></td>
-        </tr>
-      </table>
-  </div>
-
-    </div>
-</div>
-
-
-<A NAME="scrollIntoView(com.android.uiautomator.core.UiObject)"></A>
-
-<div class="jd-details api">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        public
-
-
-
-
-        boolean
-      </span>
-      <span class="sympad">scrollIntoView</span>
-      <span class="normal">(<a href="UiObject.html">UiObject</a> obj)</span>
-    </h4>
-      <div class="api-level">
-        <div></div>
-
-
-
-      </div>
-    <div class="jd-details-descr">
-
-  <div class="jd-tagdata jd-tagdescr"><p>Perform a forward scroll action to move through the scrollable layout element until
- a visible item that matches the <code><a href="UiObject.html">UiObject</a></code> is found.</p></div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Parameters</h5>
-      <table class="jd-tagtable">
-        <tr>
-          <th>obj</td>
-          <td><code><a href="UiObject.html">UiObject</a></code></td>
-        </tr>
-      </table>
-  </div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Returns</h5>
-      <ul class="nolist"><li>true if the item was found and now is in view else false</li></ul>
-  </div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Throws</h5>
-      <table class="jd-tagtable">
-        <tr>
-            <th><a href="UiObjectNotFoundException.html">UiObjectNotFoundException</a></td>
-            <td></td>
-        </tr>
-      </table>
-  </div>
-
-    </div>
-</div>
-
-
-<A NAME="scrollTextIntoView(java.lang.String)"></A>
-
-<div class="jd-details api">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        public
-
-
-
-
-        boolean
-      </span>
-      <span class="sympad">scrollTextIntoView</span>
-      <span class="normal">(String text)</span>
-    </h4>
-      <div class="api-level">
-        <div></div>
-
-
-
-      </div>
-    <div class="jd-details-descr">
-
-  <div class="jd-tagdata jd-tagdescr"><p>Performs a forward scroll action on the scrollable layout element until
- the text you provided is visible, or until swipe attempts have been exhausted.
- See <code><a href="#setMaxSearchSwipes(int)">setMaxSearchSwipes(int)</a></code></p></div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Parameters</h5>
-      <table class="jd-tagtable">
-        <tr>
-          <th>text</td>
-          <td>test to look for</td>
-        </tr>
-      </table>
-  </div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Returns</h5>
-      <ul class="nolist"><li>true if item is found; else, false</li></ul>
-  </div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Throws</h5>
-      <table class="jd-tagtable">
-        <tr>
-            <th><a href="UiObjectNotFoundException.html">UiObjectNotFoundException</a></td>
-            <td></td>
-        </tr>
-      </table>
-  </div>
-
-    </div>
-</div>
-
-
-<A NAME="scrollToBeginning(int)"></A>
-
-<div class="jd-details api">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        public
-
-
-
-
-        boolean
-      </span>
-      <span class="sympad">scrollToBeginning</span>
-      <span class="normal">(int maxSwipes)</span>
-    </h4>
-      <div class="api-level">
-        <div></div>
-
-
-
-      </div>
-    <div class="jd-details-descr">
-
-  <div class="jd-tagdata jd-tagdescr"><p>Scrolls to the beginning of a scrollable layout element. The beginning
- can be at the  top-most edge in the case of vertical controls, or the
- left-most edge for horizontal controls. Make sure to take into account
- devices configured with right-to-left languages like Arabic and Hebrew.</p></div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Returns</h5>
-      <ul class="nolist"><li>true on scrolled else false</li></ul>
-  </div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Throws</h5>
-      <table class="jd-tagtable">
-        <tr>
-            <th><a href="UiObjectNotFoundException.html">UiObjectNotFoundException</a></td>
-            <td></td>
-        </tr>
-      </table>
-  </div>
-
-    </div>
-</div>
-
-
-<A NAME="scrollToBeginning(int, int)"></A>
-
-<div class="jd-details api">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        public
-
-
-
-
-        boolean
-      </span>
-      <span class="sympad">scrollToBeginning</span>
-      <span class="normal">(int maxSwipes, int steps)</span>
-    </h4>
-      <div class="api-level">
-        <div></div>
-
-
-
-      </div>
-    <div class="jd-details-descr">
-
-  <div class="jd-tagdata jd-tagdescr"><p>Scrolls to the beginning of a scrollable layout element. The beginning
- can be at the  top-most edge in the case of vertical controls, or the
- left-most edge for horizontal controls. Make sure to take into account
- devices configured with right-to-left languages like Arabic and Hebrew.</p></div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Parameters</h5>
-      <table class="jd-tagtable">
-        <tr>
-          <th>steps</td>
-          <td>use steps to control the speed, so that it may be a scroll, or fling</td>
-        </tr>
-      </table>
-  </div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Returns</h5>
-      <ul class="nolist"><li>true on scrolled else false</li></ul>
-  </div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Throws</h5>
-      <table class="jd-tagtable">
-        <tr>
-            <th><a href="UiObjectNotFoundException.html">UiObjectNotFoundException</a></td>
-            <td></td>
-        </tr>
-      </table>
-  </div>
-
-    </div>
-</div>
-
-
-<A NAME="scrollToEnd(int, int)"></A>
-
-<div class="jd-details api">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        public
-
-
-
-
-        boolean
-      </span>
-      <span class="sympad">scrollToEnd</span>
-      <span class="normal">(int maxSwipes, int steps)</span>
-    </h4>
-      <div class="api-level">
-        <div></div>
-
-
-
-      </div>
-    <div class="jd-details-descr">
-
-  <div class="jd-tagdata jd-tagdescr"><p>Scrolls to the end of a scrollable layout element. The end can be at the
- bottom-most edge in the case of vertical controls, or the right-most edge for
- horizontal controls. Make sure to take into account devices configured with
- right-to-left languages like Arabic and Hebrew.</p></div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Parameters</h5>
-      <table class="jd-tagtable">
-        <tr>
-          <th>steps</td>
-          <td>use steps to control the speed, so that it may be a scroll, or fling</td>
-        </tr>
-      </table>
-  </div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Returns</h5>
-      <ul class="nolist"><li>true on scrolled else false</li></ul>
-  </div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Throws</h5>
-      <table class="jd-tagtable">
-        <tr>
-            <th><a href="UiObjectNotFoundException.html">UiObjectNotFoundException</a></td>
-            <td></td>
-        </tr>
-      </table>
-  </div>
-
-    </div>
-</div>
-
-
-<A NAME="scrollToEnd(int)"></A>
-
-<div class="jd-details api">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        public
-
-
-
-
-        boolean
-      </span>
-      <span class="sympad">scrollToEnd</span>
-      <span class="normal">(int maxSwipes)</span>
-    </h4>
-      <div class="api-level">
-        <div></div>
-
-
-
-      </div>
-    <div class="jd-details-descr">
-
-  <div class="jd-tagdata jd-tagdescr"><p>Scrolls to the end of a scrollable layout element. The end can be at the
- bottom-most edge in the case of vertical controls, or the right-most edge for
- horizontal controls. Make sure to take into account devices configured with
- right-to-left languages like Arabic and Hebrew.</p></div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Returns</h5>
-      <ul class="nolist"><li>true on scrolled, else false</li></ul>
-  </div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Throws</h5>
-      <table class="jd-tagtable">
-        <tr>
-            <th><a href="UiObjectNotFoundException.html">UiObjectNotFoundException</a></td>
-            <td></td>
-        </tr>
-      </table>
-  </div>
-
-    </div>
-</div>
-
-
-<A NAME="setAsHorizontalList()"></A>
-
-<div class="jd-details api">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        public
-
-
-
-
-        <a href="#">UiScrollable</a>
-      </span>
-      <span class="sympad">setAsHorizontalList</span>
-      <span class="normal">()</span>
-    </h4>
-      <div class="api-level">
-        <div></div>
-
-
-
-      </div>
-    <div class="jd-details-descr">
-
-  <div class="jd-tagdata jd-tagdescr"><p>Set the direction of swipes to be horizontal when performing scroll actions.</p></div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Returns</h5>
-      <ul class="nolist"><li>reference to itself</li></ul>
-  </div>
-
-    </div>
-</div>
-
-
-<A NAME="setAsVerticalList()"></A>
-
-<div class="jd-details api">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        public
-
-
-
-
-        <a href="#">UiScrollable</a>
-      </span>
-      <span class="sympad">setAsVerticalList</span>
-      <span class="normal">()</span>
-    </h4>
-      <div class="api-level">
-        <div></div>
-
-
-
-      </div>
-    <div class="jd-details-descr">
-
-  <div class="jd-tagdata jd-tagdescr"><p>Set the direction of swipes to be vertical when performing scroll actions.</p></div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Returns</h5>
-      <ul class="nolist"><li>reference to itself</li></ul>
-  </div>
-
-    </div>
-</div>
-
-
-<A NAME="setMaxSearchSwipes(int)"></A>
-
-<div class="jd-details api">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        public
-
-
-
-
-        <a href="#">UiScrollable</a>
-      </span>
-      <span class="sympad">setMaxSearchSwipes</span>
-      <span class="normal">(int swipes)</span>
-    </h4>
-      <div class="api-level">
-        <div></div>
-
-
-
-      </div>
-    <div class="jd-details-descr">
-
-  <div class="jd-tagdata jd-tagdescr"><p>Sets the maximum number of scrolls allowed when performing a
- scroll action in search of a child element.
- See <code><a href="#getChildByDescription(com.android.uiautomator.core.UiSelector, java.lang.String)">getChildByDescription(UiSelector, String)</a></code> and
- <code><a href="#getChildByText(com.android.uiautomator.core.UiSelector, java.lang.String)">getChildByText(UiSelector, String)</a></code>.</p></div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Parameters</h5>
-      <table class="jd-tagtable">
-        <tr>
-          <th>swipes</td>
-          <td>the number of search swipes to perform until giving up</td>
-        </tr>
-      </table>
-  </div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Returns</h5>
-      <ul class="nolist"><li>reference to itself</li></ul>
-  </div>
-
-    </div>
-</div>
-
-
-<A NAME="setSwipeDeadZonePercentage(double)"></A>
-
-<div class="jd-details api">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        public
-
-
-
-
-        <a href="#">UiScrollable</a>
-      </span>
-      <span class="sympad">setSwipeDeadZonePercentage</span>
-      <span class="normal">(double swipeDeadZonePercentage)</span>
-    </h4>
-      <div class="api-level">
-        <div></div>
-
-
-
-      </div>
-    <div class="jd-details-descr">
-
-  <div class="jd-tagdata jd-tagdescr"><p>Sets the percentage of a widget's size that's considered as no-touch
- zone when swiping.
- The no-touch zone is set as percentage of a widget's total width or height,
- denoting a margin around the swipable area of the widget. Swipes must
- always start and end inside this margin. This is important when the
- widget being swiped may not respond to the swipe if started at a point
- too near to the edge. The default is 10% from either edge.</p></div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Parameters</h5>
-      <table class="jd-tagtable">
-        <tr>
-          <th>swipeDeadZonePercentage</td>
-          <td>is a value between 0 and 1</td>
-        </tr>
-      </table>
-  </div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Returns</h5>
-      <ul class="nolist"><li>reference to itself</li></ul>
-  </div>
-
-    </div>
-</div>
-
-
-
-
-
-<!-- ========= METHOD DETAIL ======== -->
-
-<h2>Protected Methods</h2>
-
-
-
-<A NAME="exists(com.android.uiautomator.core.UiSelector)"></A>
-
-<div class="jd-details api">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        protected
-
-
-
-
-        boolean
-      </span>
-      <span class="sympad">exists</span>
-      <span class="normal">(<a href="UiSelector.html">UiSelector</a> selector)</span>
-    </h4>
-      <div class="api-level">
-        <div></div>
-
-
-
-      </div>
-    <div class="jd-details-descr">
-
-  <div class="jd-tagdata jd-tagdescr"><p>Used privately when performing swipe searches to decide if an element has become
- visible or not.</p></div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Returns</h5>
-      <ul class="nolist"><li>true if found else false</li></ul>
-  </div>
-
-    </div>
-
-
-
-
-
diff --git a/docs/html/tools/help/uiautomator/UiSelector.jd b/docs/html/tools/help/uiautomator/UiSelector.jd
deleted file mode 100644
index 1f045fd..0000000
--- a/docs/html/tools/help/uiautomator/UiSelector.jd
+++ /dev/null
@@ -1,2286 +0,0 @@
-page.title=UiSelector
-parent.title=uiautomator
-parent.link=index.html
-@jd:body
-<style>
-    h4.jd-details-title {background-color: #DEE8F1;}
-</style>
-<p>Specifies the elements in the layout hierarchy for tests to target, filtered
-by properties such as text value, content-description, class name, and state
-information. You can also target an element by its location in a layout
-hierarchy.</p>
-<h2>Summary</h2>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-<!-- ======== CONSTRUCTOR SUMMARY ======== -->
-<table id="pubctors" class="jd-sumtable"><tr><th colspan="12">Public Constructors</th></tr>
-
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            </nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="#UiSelector()">UiSelector</a></span>()</nobr>
-
-  </td></tr>
-
-
-
-</table>
-
-
-
-
-
-
-<!-- ========== METHOD SUMMARY =========== -->
-<table id="pubmethods" class="jd-sumtable"><tr><th colspan="12">Public Methods</th></tr>
-
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            <a href="#">UiSelector</a></nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="#checkable(boolean)">checkable</a></span>(boolean val)</nobr>
-
-        <div class="jd-descrdiv">Set the search criteria to match widgets that are checkable.</div>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            <a href="#">UiSelector</a></nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="#checked(boolean)">checked</a></span>(boolean val)</nobr>
-
-        <div class="jd-descrdiv">Set the search criteria to match widgets that
- are currently checked (usually for checkboxes).</div>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            <a href="#">UiSelector</a></nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="#childSelector(com.android.uiautomator.core.UiSelector)">childSelector</a></span>(<a href="#">UiSelector</a> selector)</nobr>
-
-        <div class="jd-descrdiv">Adds a child UiSelector criteria to this selector.</div>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            <a href="#">UiSelector</a></nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="#className(java.lang.String)">className</a></span>(String className)</nobr>
-
-        <div class="jd-descrdiv">Set the search criteria to match the class property
- for a widget (for example, "android.widget.Button").</div>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-            &lt;T&gt;
-            <a href="#">UiSelector</a></nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="#className(java.lang.Class<T>)">className</a></span>(Class&lt;T&gt; type)</nobr>
-
-        <div class="jd-descrdiv">Set the search criteria to match the class property
- for a widget (for example, "android.widget.Button").</div>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            <a href="#">UiSelector</a></nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="#classNameMatches(java.lang.String)">classNameMatches</a></span>(String regex)</nobr>
-
-        <div class="jd-descrdiv">Set the search criteria to match the class property
- for a widget, using a regular expression.</div>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            <a href="#">UiSelector</a></nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="#clickable(boolean)">clickable</a></span>(boolean val)</nobr>
-
-        <div class="jd-descrdiv">Set the search criteria to match widgets that are clickable.</div>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            <a href="#">UiSelector</a></nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="#description(java.lang.String)">description</a></span>(String desc)</nobr>
-
-        <div class="jd-descrdiv">Set the search criteria to match the content-description
- property for a widget.</div>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            <a href="#">UiSelector</a></nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="#descriptionContains(java.lang.String)">descriptionContains</a></span>(String desc)</nobr>
-
-        <div class="jd-descrdiv">Set the search criteria to match the content-description
- property for a widget.</div>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            <a href="#">UiSelector</a></nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="#descriptionMatches(java.lang.String)">descriptionMatches</a></span>(String regex)</nobr>
-
-        <div class="jd-descrdiv">Set the search criteria to match the content-description
- property for a widget.</div>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            <a href="#">UiSelector</a></nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="#descriptionStartsWith(java.lang.String)">descriptionStartsWith</a></span>(String desc)</nobr>
-
-        <div class="jd-descrdiv">Set the search criteria to match the content-description
- property for a widget.</div>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            <a href="#">UiSelector</a></nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="#enabled(boolean)">enabled</a></span>(boolean val)</nobr>
-
-        <div class="jd-descrdiv">Set the search criteria to match widgets that are enabled.</div>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            <a href="#">UiSelector</a></nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="#focusable(boolean)">focusable</a></span>(boolean val)</nobr>
-
-        <div class="jd-descrdiv">Set the search criteria to match widgets that are focusable.</div>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            <a href="#">UiSelector</a></nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="#focused(boolean)">focused</a></span>(boolean val)</nobr>
-
-        <div class="jd-descrdiv">Set the search criteria to match widgets that have focus.</div>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            <a href="#">UiSelector</a></nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="#fromParent(com.android.uiautomator.core.UiSelector)">fromParent</a></span>(<a href="#">UiSelector</a> selector)</nobr>
-
-        <div class="jd-descrdiv">Adds a child UiSelector criteria to this selector which is used to
- start search from the parent widget.</div>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            <a href="#">UiSelector</a></nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="#index(int)">index</a></span>(int index)</nobr>
-
-        <div class="jd-descrdiv">Set the search criteria to match the widget by its node
- index in the layout hierarchy.</div>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            <a href="#">UiSelector</a></nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="#instance(int)">instance</a></span>(int instance)</nobr>
-
-        <div class="jd-descrdiv">Set the search criteria to match the
- widget by its instance number.</div>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            <a href="#">UiSelector</a></nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="#longClickable(boolean)">longClickable</a></span>(boolean val)</nobr>
-
-        <div class="jd-descrdiv">Set the search criteria to match widgets that are long-clickable.</div>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            <a href="#">UiSelector</a></nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="#packageName(java.lang.String)">packageName</a></span>(String name)</nobr>
-
-        <div class="jd-descrdiv">Set the search criteria to match the package name
- of the application that contains the widget.</div>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            <a href="#">UiSelector</a></nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="#packageNameMatches(java.lang.String)">packageNameMatches</a></span>(String regex)</nobr>
-
-        <div class="jd-descrdiv">Set the search criteria to match the package name
- of the application that contains the widget.</div>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            <a href="#">UiSelector</a></nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="#resourceId(java.lang.String)">resourceId</a></span>(String id)</nobr>
-
-        <div class="jd-descrdiv">Set the search criteria to match the given resource ID.</div>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            <a href="#">UiSelector</a></nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="#resourceIdMatches(java.lang.String)">resourceIdMatches</a></span>(String regex)</nobr>
-
-        <div class="jd-descrdiv">Set the search criteria to match the resource ID
- of the widget, using a regular expression.</div>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            <a href="#">UiSelector</a></nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="#scrollable(boolean)">scrollable</a></span>(boolean val)</nobr>
-
-        <div class="jd-descrdiv">Set the search criteria to match widgets that are scrollable.</div>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            <a href="#">UiSelector</a></nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="#selected(boolean)">selected</a></span>(boolean val)</nobr>
-
-        <div class="jd-descrdiv">Set the search criteria to match widgets that
- are currently selected.</div>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            <a href="#">UiSelector</a></nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="#text(java.lang.String)">text</a></span>(String text)</nobr>
-
-        <div class="jd-descrdiv">Set the search criteria to match the visible text displayed
- in a widget (for example, the text label to launch an app).</div>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            <a href="#">UiSelector</a></nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="#textContains(java.lang.String)">textContains</a></span>(String text)</nobr>
-
-        <div class="jd-descrdiv">Set the search criteria to match the visible text in a widget
- where the visible text must contain the string in your input argument.</div>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            <a href="#">UiSelector</a></nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="#textMatches(java.lang.String)">textMatches</a></span>(String regex)</nobr>
-
-        <div class="jd-descrdiv">Set the search criteria to match the visible text displayed in a layout
- element, using a regular expression.</div>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            <a href="#">UiSelector</a></nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="#textStartsWith(java.lang.String)">textStartsWith</a></span>(String text)</nobr>
-
-        <div class="jd-descrdiv">Set the search criteria to match visible text in a widget that is
- prefixed by the text parameter.</div>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            String</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="#toString()">toString</a></span>()</nobr>
-
-  </td></tr>
-
-
-
-</table>
-
-
-
-
-<!-- ========== METHOD SUMMARY =========== -->
-<table id="promethods" class="jd-sumtable"><tr><th colspan="12">Protected Methods</th></tr>
-
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            <a href="#">UiSelector</a></nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="#cloneSelector()">cloneSelector</a></span>()</nobr>
-
-  </td></tr>
-
-
-
-</table>
-
-
-
-
-
-<!-- ========== METHOD SUMMARY =========== -->
-<table id="inhmethods" class="jd-sumtable"><tr><th>
-  <a href="#" class="toggle-all" onclick="return toggleAllInherited(this, null)">[Expand]</a>
-  <div style="clear:left;">Inherited Methods</div></th></tr>
-
-
-<tr class="api" >
-<td colspan="12">
-  <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
-          ><img id="inherited-methods-java.lang.Object-trigger"
-          src="../../../../../assets/images/styles/disclosure_down.png"
-          class="jd-expando-trigger-img" /></a>
-From class
-
-  java.lang.Object
-
-<div id="inherited-methods-java.lang.Object">
-  <div id="inherited-methods-java.lang.Object-list"
-        class="jd-inheritedlinks">
-  </div>
-  <div id="inherited-methods-java.lang.Object-summary" style="display: none;">
-    <table class="jd-sumtable-expando">
-
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            Object</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">clone</span>()</nobr>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            boolean</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">equals</span>(Object arg0)</nobr>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            void</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">finalize</span>()</nobr>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-            final
-
-
-            Class&lt;?&gt;</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">getClass</span>()</nobr>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            int</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">hashCode</span>()</nobr>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-            final
-
-
-            void</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">notify</span>()</nobr>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-            final
-
-
-            void</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">notifyAll</span>()</nobr>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            String</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">toString</span>()</nobr>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-            final
-
-
-            void</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">wait</span>()</nobr>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-            final
-
-
-            void</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">wait</span>(long arg0, int arg1)</nobr>
-
-  </td></tr>
-
-
-
-    <tr class="api" >
-        <td class="jd-typecol"><nobr>
-
-
-            final
-
-
-            void</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">wait</span>(long arg0)</nobr>
-
-  </td></tr>
-
-
-</table>
-  </div>
-</div>
-</td></tr>
-
-
-</table>
-
-
-</div><!-- jd-descr (summary) -->
-
-<!-- Details -->
-
-
-
-
-
-
-
-
-<!-- XML Attributes -->
-
-
-<!-- Enum Values -->
-
-
-<!-- Constants -->
-
-
-<!-- Fields -->
-
-
-<!-- Public ctors -->
-
-
-<!-- ========= CONSTRUCTOR DETAIL ======== -->
-<h2>Public Constructors</h2>
-
-
-
-<A NAME="UiSelector()"></A>
-
-<div class="jd-details api">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        public
-
-
-
-
-
-      </span>
-      <span class="sympad">UiSelector</span>
-      <span class="normal">()</span>
-    </h4>
-      <div class="api-level">
-        <div></div>
-
-
-
-      </div>
-    <div class="jd-details-descr">
-
-  <div class="jd-tagdata jd-tagdescr"><p></p></div>
-
-    </div>
-</div>
-
-
-
-
-
-<!-- ========= CONSTRUCTOR DETAIL ======== -->
-<!-- Protected ctors -->
-
-
-
-<!-- ========= METHOD DETAIL ======== -->
-<!-- Public methdos -->
-
-<h2>Public Methods</h2>
-
-
-
-<A NAME="checkable(boolean)"></A>
-
-<div class="jd-details api">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        public
-
-
-
-
-        <a href="#">UiSelector</a>
-      </span>
-      <span class="sympad">checkable</span>
-      <span class="normal">(boolean val)</span>
-    </h4>
-    <div class="jd-details-descr">
-
-  <div class="jd-tagdata jd-tagdescr"><p>Set the search criteria to match widgets that are checkable.
-
- Typically, using this search criteria alone is not useful.
- You should also include additional criteria, such as text,
- content-description, or the class name for a widget.
-
- If no other search criteria is specified, and there is more
- than one matching widget, the first widget in the tree
- is selected.</p></div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Parameters</h5>
-      <table class="jd-tagtable">
-        <tr>
-          <th>val</td>
-          <td>Value to match</td>
-        </tr>
-      </table>
-  </div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Returns</h5>
-      <ul class="nolist"><li>UiSelector with the specified search criteria</li></ul>
-  </div>
-  <div class="jd-tagdata">
-     <h5 class="jd-tagtitle">Since</h5>
-     <ul class="nolist"><li>Android API Level 18</li></ul>
-  </div>
-    </div>
-</div>
-
-
-<A NAME="checked(boolean)"></A>
-
-<div class="jd-details api">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        public
-
-
-
-
-        <a href="#">UiSelector</a>
-      </span>
-      <span class="sympad">checked</span>
-      <span class="normal">(boolean val)</span>
-    </h4>
-      <div class="api-level">
-        <div></div>
-
-
-
-      </div>
-    <div class="jd-details-descr">
-
-  <div class="jd-tagdata jd-tagdescr"><p>Set the search criteria to match widgets that
- are currently checked (usually for checkboxes).
-
- Typically, using this search criteria alone is not useful.
- You should also include additional criteria, such as text,
- content-description, or the class name for a widget.
-
- If no other search criteria is specified, and there is more
- than one matching widget, the first widget in the tree
- is selected.</p></div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Parameters</h5>
-      <table class="jd-tagtable">
-        <tr>
-          <th>val</td>
-          <td>Value to match</td>
-        </tr>
-      </table>
-  </div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Returns</h5>
-      <ul class="nolist"><li>UiSelector with the specified search criteria</li></ul>
-  </div>
-
-    </div>
-</div>
-
-
-<A NAME="childSelector(com.android.uiautomator.core.UiSelector)"></A>
-
-<div class="jd-details api">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        public
-
-
-
-
-        <a href="#">UiSelector</a>
-      </span>
-      <span class="sympad">childSelector</span>
-      <span class="normal">(<a href="#">UiSelector</a> selector)</span>
-    </h4>
-      <div class="api-level">
-        <div></div>
-
-
-
-      </div>
-    <div class="jd-details-descr">
-
-  <div class="jd-tagdata jd-tagdescr"><p>Adds a child UiSelector criteria to this selector.
-
- Use this selector to narrow the search scope to
- child widgets under a specific parent widget.</p></div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Returns</h5>
-      <ul class="nolist"><li>UiSelector with this added search criterion</li></ul>
-  </div>
-
-    </div>
-</div>
-
-
-<A NAME="className(java.lang.String)"></A>
-
-<div class="jd-details api">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        public
-
-
-
-
-        <a href="#">UiSelector</a>
-      </span>
-      <span class="sympad">className</span>
-      <span class="normal">(String className)</span>
-    </h4>
-    <div class="jd-details-descr">
-
-  <div class="jd-tagdata jd-tagdescr"><p>Set the search criteria to match the class property
- for a widget (for example, "android.widget.Button").</p></div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Parameters</h5>
-      <table class="jd-tagtable">
-        <tr>
-          <th>className</td>
-          <td>Value to match</td>
-        </tr>
-      </table>
-  </div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Returns</h5>
-      <ul class="nolist"><li>UiSelector with the specified search criteria</li></ul>
-  </div>
-  <div class="jd-tagdata">
-     <h5 class="jd-tagtitle">Since</h5>
-     <ul class="nolist"><li>Android API Level 17</li></ul>
-  </div>
-    </div>
-</div>
-
-
-<A NAME="className(java.lang.Class<T>)"></A>
-
-<div class="jd-details api">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        public
-
-
-
-
-        <a href="#">UiSelector</a>
-      </span>
-      <span class="sympad">className</span>
-      <span class="normal">(Class&lt;T&gt; type)</span>
-    </h4>
-      <div class="api-level">
-        <div></div>
-
-
-
-      </div>
-    <div class="jd-details-descr">
-
-  <div class="jd-tagdata jd-tagdescr"><p>Set the search criteria to match the class property
- for a widget (for example, "android.widget.Button").</p></div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Parameters</h5>
-      <table class="jd-tagtable">
-        <tr>
-          <th>type</td>
-          <td>type</td>
-        </tr>
-      </table>
-  </div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Returns</h5>
-      <ul class="nolist"><li>UiSelector with the specified search criteria</li></ul>
-  </div>
-
-    </div>
-</div>
-
-
-<A NAME="classNameMatches(java.lang.String)"></A>
-
-<div class="jd-details api">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        public
-
-
-
-
-        <a href="#">UiSelector</a>
-      </span>
-      <span class="sympad">classNameMatches</span>
-      <span class="normal">(String regex)</span>
-    </h4>
-    <div class="jd-details-descr">
-
-  <div class="jd-tagdata jd-tagdescr"><p>Set the search criteria to match the class property
- for a widget, using a regular expression.</p></div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Parameters</h5>
-      <table class="jd-tagtable">
-        <tr>
-          <th>regex</td>
-          <td>a regular expression</td>
-        </tr>
-      </table>
-  </div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Returns</h5>
-      <ul class="nolist"><li>UiSelector with the specified search criteria</li></ul>
-  </div>
-  <div class="jd-tagdata">
-     <h5 class="jd-tagtitle">Since</h5>
-     <ul class="nolist"><li>Android API Level 17</li></ul>
-  </div>
-    </div>
-</div>
-
-
-<A NAME="clickable(boolean)"></A>
-
-<div class="jd-details api">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        public
-
-
-
-
-        <a href="#">UiSelector</a>
-      </span>
-      <span class="sympad">clickable</span>
-      <span class="normal">(boolean val)</span>
-    </h4>
-      <div class="api-level">
-        <div></div>
-
-
-
-      </div>
-    <div class="jd-details-descr">
-
-  <div class="jd-tagdata jd-tagdescr"><p>Set the search criteria to match widgets that are clickable.
-
- Typically, using this search criteria alone is not useful.
- You should also include additional criteria, such as text,
- content-description, or the class name for a widget.
-
- If no other search criteria is specified, and there is more
- than one matching widget, the first widget in the tree
- is selected.</p></div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Parameters</h5>
-      <table class="jd-tagtable">
-        <tr>
-          <th>val</td>
-          <td>Value to match</td>
-        </tr>
-      </table>
-  </div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Returns</h5>
-      <ul class="nolist"><li>UiSelector with the specified search criteria</li></ul>
-  </div>
-
-    </div>
-</div>
-
-
-<A NAME="description(java.lang.String)"></A>
-
-<div class="jd-details api">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        public
-
-
-
-
-        <a href="#">UiSelector</a>
-      </span>
-      <span class="sympad">description</span>
-      <span class="normal">(String desc)</span>
-    </h4>
-      <div class="api-level">
-        <div></div>
-
-
-
-      </div>
-    <div class="jd-details-descr">
-
-  <div class="jd-tagdata jd-tagdescr"><p>Set the search criteria to match the content-description
- property for a widget.
-
- The content-description is typically used
- by the Android Accessibility framework to
- provide an audio prompt for the widget when
- the widget is selected. The content-description
- for the widget must match exactly
- with the string in your input argument.
-
- Matching is case-sensitive.</p></div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Parameters</h5>
-      <table class="jd-tagtable">
-        <tr>
-          <th>desc</td>
-          <td>Value to match</td>
-        </tr>
-      </table>
-  </div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Returns</h5>
-      <ul class="nolist"><li>UiSelector with the specified search criteria</li></ul>
-  </div>
-
-    </div>
-</div>
-
-
-<A NAME="descriptionContains(java.lang.String)"></A>
-
-<div class="jd-details api">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        public
-
-
-
-
-        <a href="#">UiSelector</a>
-      </span>
-      <span class="sympad">descriptionContains</span>
-      <span class="normal">(String desc)</span>
-    </h4>
-      <div class="api-level">
-        <div></div>
-
-
-
-      </div>
-    <div class="jd-details-descr">
-
-  <div class="jd-tagdata jd-tagdescr"><p>Set the search criteria to match the content-description
- property for a widget.
-
- The content-description is typically used
- by the Android Accessibility framework to
- provide an audio prompt for the widget when
- the widget is selected. The content-description
- for the widget must contain
- the string in your input argument.
-
- Matching is case-insensitive.</p></div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Parameters</h5>
-      <table class="jd-tagtable">
-        <tr>
-          <th>desc</td>
-          <td>Value to match</td>
-        </tr>
-      </table>
-  </div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Returns</h5>
-      <ul class="nolist"><li>UiSelector with the specified search criteria</li></ul>
-  </div>
-
-    </div>
-</div>
-
-
-<A NAME="descriptionMatches(java.lang.String)"></A>
-
-<div class="jd-details api">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        public
-
-
-
-
-        <a href="#">UiSelector</a>
-      </span>
-      <span class="sympad">descriptionMatches</span>
-      <span class="normal">(String regex)</span>
-    </h4>
-    <div class="jd-details-descr">
-
-  <div class="jd-tagdata jd-tagdescr"><p>Set the search criteria to match the content-description
- property for a widget.
-
- The content-description is typically used
- by the Android Accessibility framework to
- provide an audio prompt for the widget when
- the widget is selected. The content-description
- for the widget must match exactly
- with the string in your input argument.</p></div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Parameters</h5>
-      <table class="jd-tagtable">
-        <tr>
-          <th>regex</td>
-          <td>a regular expression</td>
-        </tr>
-      </table>
-  </div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Returns</h5>
-      <ul class="nolist"><li>UiSelector with the specified search criteria</li></ul>
-  </div>
-  <div class="jd-tagdata">
-     <h5 class="jd-tagtitle">Since</h5>
-     <ul class="nolist"><li>Android API Level 17</li></ul>
-  </div>
-    </div>
-</div>
-
-
-<A NAME="descriptionStartsWith(java.lang.String)"></A>
-
-<div class="jd-details api">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        public
-
-
-
-
-        <a href="#">UiSelector</a>
-      </span>
-      <span class="sympad">descriptionStartsWith</span>
-      <span class="normal">(String desc)</span>
-    </h4>
-      <div class="api-level">
-        <div></div>
-
-
-
-      </div>
-    <div class="jd-details-descr">
-
-  <div class="jd-tagdata jd-tagdescr"><p>Set the search criteria to match the content-description
- property for a widget.
-
- The content-description is typically used
- by the Android Accessibility framework to
- provide an audio prompt for the widget when
- the widget is selected. The content-description
- for the widget must start
- with the string in your input argument.
-
- Matching is case-insensitive.</p></div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Parameters</h5>
-      <table class="jd-tagtable">
-        <tr>
-          <th>desc</td>
-          <td>Value to match</td>
-        </tr>
-      </table>
-  </div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Returns</h5>
-      <ul class="nolist"><li>UiSelector with the specified search criteria</li></ul>
-  </div>
-
-    </div>
-</div>
-
-
-<A NAME="enabled(boolean)"></A>
-
-<div class="jd-details api">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        public
-
-
-
-
-        <a href="#">UiSelector</a>
-      </span>
-      <span class="sympad">enabled</span>
-      <span class="normal">(boolean val)</span>
-    </h4>
-      <div class="api-level">
-        <div></div>
-
-
-
-      </div>
-    <div class="jd-details-descr">
-
-  <div class="jd-tagdata jd-tagdescr"><p>Set the search criteria to match widgets that are enabled.
-
- Typically, using this search criteria alone is not useful.
- You should also include additional criteria, such as text,
- content-description, or the class name for a widget.
-
- If no other search criteria is specified, and there is more
- than one matching widget, the first widget in the tree
- is selected.</p></div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Parameters</h5>
-      <table class="jd-tagtable">
-        <tr>
-          <th>val</td>
-          <td>Value to match</td>
-        </tr>
-      </table>
-  </div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Returns</h5>
-      <ul class="nolist"><li>UiSelector with the specified search criteria</li></ul>
-  </div>
-
-    </div>
-</div>
-
-
-<A NAME="focusable(boolean)"></A>
-
-<div class="jd-details api">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        public
-
-
-
-
-        <a href="#">UiSelector</a>
-      </span>
-      <span class="sympad">focusable</span>
-      <span class="normal">(boolean val)</span>
-    </h4>
-      <div class="api-level">
-        <div></div>
-
-
-
-      </div>
-    <div class="jd-details-descr">
-
-  <div class="jd-tagdata jd-tagdescr"><p>Set the search criteria to match widgets that are focusable.
-
- Typically, using this search criteria alone is not useful.
- You should also include additional criteria, such as text,
- content-description, or the class name for a widget.
-
- If no other search criteria is specified, and there is more
- than one matching widget, the first widget in the tree
- is selected.</p></div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Parameters</h5>
-      <table class="jd-tagtable">
-        <tr>
-          <th>val</td>
-          <td>Value to match</td>
-        </tr>
-      </table>
-  </div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Returns</h5>
-      <ul class="nolist"><li>UiSelector with the specified search criteria</li></ul>
-  </div>
-
-    </div>
-</div>
-
-
-<A NAME="focused(boolean)"></A>
-
-<div class="jd-details api">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        public
-
-
-
-
-        <a href="#">UiSelector</a>
-      </span>
-      <span class="sympad">focused</span>
-      <span class="normal">(boolean val)</span>
-    </h4>
-      <div class="api-level">
-        <div></div>
-
-
-
-      </div>
-    <div class="jd-details-descr">
-
-  <div class="jd-tagdata jd-tagdescr"><p>Set the search criteria to match widgets that have focus.
-
- Typically, using this search criteria alone is not useful.
- You should also include additional criteria, such as text,
- content-description, or the class name for a widget.
-
- If no other search criteria is specified, and there is more
- than one matching widget, the first widget in the tree
- is selected.</p></div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Parameters</h5>
-      <table class="jd-tagtable">
-        <tr>
-          <th>val</td>
-          <td>Value to match</td>
-        </tr>
-      </table>
-  </div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Returns</h5>
-      <ul class="nolist"><li>UiSelector with the specified search criteria</li></ul>
-  </div>
-
-    </div>
-</div>
-
-
-<A NAME="fromParent(com.android.uiautomator.core.UiSelector)"></A>
-
-<div class="jd-details api">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        public
-
-
-
-
-        <a href="#">UiSelector</a>
-      </span>
-      <span class="sympad">fromParent</span>
-      <span class="normal">(<a href="#">UiSelector</a> selector)</span>
-    </h4>
-      <div class="api-level">
-        <div></div>
-
-
-
-      </div>
-    <div class="jd-details-descr">
-
-  <div class="jd-tagdata jd-tagdescr"><p>Adds a child UiSelector criteria to this selector which is used to
- start search from the parent widget.
-
- Use this selector to narrow the search scope to
- sibling widgets as well all child widgets under a parent.</p></div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Returns</h5>
-      <ul class="nolist"><li>UiSelector with this added search criterion</li></ul>
-  </div>
-
-    </div>
-</div>
-
-
-<A NAME="index(int)"></A>
-
-<div class="jd-details api">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        public
-
-
-
-
-        <a href="#">UiSelector</a>
-      </span>
-      <span class="sympad">index</span>
-      <span class="normal">(int index)</span>
-    </h4>
-      <div class="api-level">
-        <div></div>
-
-
-
-      </div>
-    <div class="jd-details-descr">
-
-  <div class="jd-tagdata jd-tagdescr"><p>Set the search criteria to match the widget by its node
- index in the layout hierarchy.
-
- The index value must be 0 or greater.
-
- Using the index can be unreliable and should only
- be used as a last resort for matching. Instead,
- consider using the <code><a href="#instance(int)">instance(int)</a></code> method.</p></div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Parameters</h5>
-      <table class="jd-tagtable">
-        <tr>
-          <th>index</td>
-          <td>Value to match</td>
-        </tr>
-      </table>
-  </div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Returns</h5>
-      <ul class="nolist"><li>UiSelector with the specified search criteria</li></ul>
-  </div>
-
-    </div>
-</div>
-
-
-<A NAME="instance(int)"></A>
-
-<div class="jd-details api">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        public
-
-
-
-
-        <a href="#">UiSelector</a>
-      </span>
-      <span class="sympad">instance</span>
-      <span class="normal">(int instance)</span>
-    </h4>
-      <div class="api-level">
-        <div></div>
-
-
-
-      </div>
-    <div class="jd-details-descr">
-
-  <div class="jd-tagdata jd-tagdescr"><p>Set the search criteria to match the
- widget by its instance number.
-
- The instance value must be 0 or greater, where
- the first instance is 0.
-
- For example, to simulate a user click on
- the third image that is enabled in a UI screen, you
- could specify a a search criteria where the instance is
- 2, the <code><a href="#className(java.lang.String)">className(String)</a></code> matches the image
- widget class, and <code><a href="#enabled(boolean)">enabled(boolean)</a></code> is true.
- The code would look like this:
- <code>
- new UiSelector().className("android.widget.ImageView")
-    .enabled(true).instance(2);
- </code></p></div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Parameters</h5>
-      <table class="jd-tagtable">
-        <tr>
-          <th>instance</td>
-          <td>Value to match</td>
-        </tr>
-      </table>
-  </div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Returns</h5>
-      <ul class="nolist"><li>UiSelector with the specified search criteria</li></ul>
-  </div>
-
-    </div>
-</div>
-
-
-<A NAME="longClickable(boolean)"></A>
-
-<div class="jd-details api">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        public
-
-
-
-
-        <a href="#">UiSelector</a>
-      </span>
-      <span class="sympad">longClickable</span>
-      <span class="normal">(boolean val)</span>
-    </h4>
-    <div class="jd-details-descr">
-
-  <div class="jd-tagdata jd-tagdescr"><p>Set the search criteria to match widgets that are long-clickable.
-
- Typically, using this search criteria alone is not useful.
- You should also include additional criteria, such as text,
- content-description, or the class name for a widget.
-
- If no other search criteria is specified, and there is more
- than one matching widget, the first widget in the tree
- is selected.</p></div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Parameters</h5>
-      <table class="jd-tagtable">
-        <tr>
-          <th>val</td>
-          <td>Value to match</td>
-        </tr>
-      </table>
-  </div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Returns</h5>
-      <ul class="nolist"><li>UiSelector with the specified search criteria</li></ul>
-  </div>
-  <div class="jd-tagdata">
-     <h5 class="jd-tagtitle">Since</h5>
-     <ul class="nolist"><li>Android API Level 17</li></ul>
-  </div>
-    </div>
-</div>
-
-
-<A NAME="packageName(java.lang.String)"></A>
-
-<div class="jd-details api">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        public
-
-
-
-
-        <a href="#">UiSelector</a>
-      </span>
-      <span class="sympad">packageName</span>
-      <span class="normal">(String name)</span>
-    </h4>
-      <div class="api-level">
-        <div></div>
-
-
-
-      </div>
-    <div class="jd-details-descr">
-
-  <div class="jd-tagdata jd-tagdescr"><p>Set the search criteria to match the package name
- of the application that contains the widget.</p></div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Parameters</h5>
-      <table class="jd-tagtable">
-        <tr>
-          <th>name</td>
-          <td>Value to match</td>
-        </tr>
-      </table>
-  </div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Returns</h5>
-      <ul class="nolist"><li>UiSelector with the specified search criteria</li></ul>
-  </div>
-
-    </div>
-</div>
-
-
-<A NAME="packageNameMatches(java.lang.String)"></A>
-
-<div class="jd-details api">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        public
-
-
-
-
-        <a href="#">UiSelector</a>
-      </span>
-      <span class="sympad">packageNameMatches</span>
-      <span class="normal">(String regex)</span>
-    </h4>
-    <div class="jd-details-descr">
-
-  <div class="jd-tagdata jd-tagdescr"><p>Set the search criteria to match the package name
- of the application that contains the widget.</p></div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Parameters</h5>
-      <table class="jd-tagtable">
-        <tr>
-          <th>regex</td>
-          <td>a regular expression</td>
-        </tr>
-      </table>
-  </div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Returns</h5>
-      <ul class="nolist"><li>UiSelector with the specified search criteria</li></ul>
-  </div>
-  <div class="jd-tagdata">
-     <h5 class="jd-tagtitle">Since</h5>
-     <ul class="nolist"><li>Android API Level 17</li></ul>
-  </div>
-    </div>
-</div>
-
-
-<A NAME="resourceId(java.lang.String)"></A>
-
-<div class="jd-details api">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        public
-
-
-
-
-        <a href="#">UiSelector</a>
-      </span>
-      <span class="sympad">resourceId</span>
-      <span class="normal">(String id)</span>
-    </h4>
-    <div class="jd-details-descr">
-
-  <div class="jd-tagdata jd-tagdescr"><p>Set the search criteria to match the given resource ID.</p></div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Parameters</h5>
-      <table class="jd-tagtable">
-        <tr>
-          <th>id</td>
-          <td>Value to match</td>
-        </tr>
-      </table>
-  </div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Returns</h5>
-      <ul class="nolist"><li>UiSelector with the specified search criteria</li></ul>
-  </div>
-  <div class="jd-tagdata">
-     <h5 class="jd-tagtitle">Since</h5>
-     <ul class="nolist"><li>Android API Level 18</li></ul>
-  </div>
-    </div>
-</div>
-
-
-<A NAME="resourceIdMatches(java.lang.String)"></A>
-
-<div class="jd-details api">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        public
-
-
-
-
-        <a href="#">UiSelector</a>
-      </span>
-      <span class="sympad">resourceIdMatches</span>
-      <span class="normal">(String regex)</span>
-    </h4>
-    <div class="jd-details-descr">
-
-  <div class="jd-tagdata jd-tagdescr"><p>Set the search criteria to match the resource ID
- of the widget, using a regular expression.</p></div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Parameters</h5>
-      <table class="jd-tagtable">
-        <tr>
-          <th>regex</td>
-          <td>a regular expression</td>
-        </tr>
-      </table>
-  </div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Returns</h5>
-      <ul class="nolist"><li>UiSelector with the specified search criteria</li></ul>
-  </div>
-  <div class="jd-tagdata">
-     <h5 class="jd-tagtitle">Since</h5>
-     <ul class="nolist"><li>Android API Level 18</li></ul>
-  </div>
-    </div>
-</div>
-
-
-<A NAME="scrollable(boolean)"></A>
-
-<div class="jd-details api">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        public
-
-
-
-
-        <a href="#">UiSelector</a>
-      </span>
-      <span class="sympad">scrollable</span>
-      <span class="normal">(boolean val)</span>
-    </h4>
-      <div class="api-level">
-        <div></div>
-
-
-
-      </div>
-    <div class="jd-details-descr">
-
-  <div class="jd-tagdata jd-tagdescr"><p>Set the search criteria to match widgets that are scrollable.
-
- Typically, using this search criteria alone is not useful.
- You should also include additional criteria, such as text,
- content-description, or the class name for a widget.
-
- If no other search criteria is specified, and there is more
- than one matching widget, the first widget in the tree
- is selected.</p></div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Parameters</h5>
-      <table class="jd-tagtable">
-        <tr>
-          <th>val</td>
-          <td>Value to match</td>
-        </tr>
-      </table>
-  </div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Returns</h5>
-      <ul class="nolist"><li>UiSelector with the specified search criteria</li></ul>
-  </div>
-
-    </div>
-</div>
-
-
-<A NAME="selected(boolean)"></A>
-
-<div class="jd-details api">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        public
-
-
-
-
-        <a href="#">UiSelector</a>
-      </span>
-      <span class="sympad">selected</span>
-      <span class="normal">(boolean val)</span>
-    </h4>
-      <div class="api-level">
-        <div></div>
-
-
-
-      </div>
-    <div class="jd-details-descr">
-
-  <div class="jd-tagdata jd-tagdescr"><p>Set the search criteria to match widgets that
- are currently selected.
-
- Typically, using this search criteria alone is not useful.
- You should also include additional criteria, such as text,
- content-description, or the class name for a widget.
-
- If no other search criteria is specified, and there is more
- than one matching widget, the first widget in the tree
- is selected.</p></div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Parameters</h5>
-      <table class="jd-tagtable">
-        <tr>
-          <th>val</td>
-          <td>Value to match</td>
-        </tr>
-      </table>
-  </div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Returns</h5>
-      <ul class="nolist"><li>UiSelector with the specified search criteria</li></ul>
-  </div>
-
-    </div>
-</div>
-
-
-<A NAME="text(java.lang.String)"></A>
-
-<div class="jd-details api">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        public
-
-
-
-
-        <a href="#">UiSelector</a>
-      </span>
-      <span class="sympad">text</span>
-      <span class="normal">(String text)</span>
-    </h4>
-      <div class="api-level">
-        <div></div>
-
-
-
-      </div>
-    <div class="jd-details-descr">
-
-  <div class="jd-tagdata jd-tagdescr"><p>Set the search criteria to match the visible text displayed
- in a widget (for example, the text label to launch an app).
-
- The text for the element must match exactly with the string in your input
- argument. Matching is case-sensitive.</p></div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Parameters</h5>
-      <table class="jd-tagtable">
-        <tr>
-          <th>text</td>
-          <td>Value to match</td>
-        </tr>
-      </table>
-  </div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Returns</h5>
-      <ul class="nolist"><li>UiSelector with the specified search criteria</li></ul>
-  </div>
-
-    </div>
-</div>
-
-
-<A NAME="textContains(java.lang.String)"></A>
-
-<div class="jd-details api">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        public
-
-
-
-
-        <a href="#">UiSelector</a>
-      </span>
-      <span class="sympad">textContains</span>
-      <span class="normal">(String text)</span>
-    </h4>
-      <div class="api-level">
-        <div></div>
-
-
-
-      </div>
-    <div class="jd-details-descr">
-
-  <div class="jd-tagdata jd-tagdescr"><p>Set the search criteria to match the visible text in a widget
- where the visible text must contain the string in your input argument.
-
- The matching is case-sensitive.</p></div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Parameters</h5>
-      <table class="jd-tagtable">
-        <tr>
-          <th>text</td>
-          <td>Value to match</td>
-        </tr>
-      </table>
-  </div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Returns</h5>
-      <ul class="nolist"><li>UiSelector with the specified search criteria</li></ul>
-  </div>
-
-    </div>
-</div>
-
-
-<A NAME="textMatches(java.lang.String)"></A>
-
-<div class="jd-details api">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        public
-
-
-
-
-        <a href="#">UiSelector</a>
-      </span>
-      <span class="sympad">textMatches</span>
-      <span class="normal">(String regex)</span>
-    </h4>
-    <div class="jd-details-descr">
-
-  <div class="jd-tagdata jd-tagdescr"><p>Set the search criteria to match the visible text displayed in a layout
- element, using a regular expression.
-
- The text in the widget must match exactly with the string in your
- input argument.</p></div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Parameters</h5>
-      <table class="jd-tagtable">
-        <tr>
-          <th>regex</td>
-          <td>a regular expression</td>
-        </tr>
-      </table>
-  </div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Returns</h5>
-      <ul class="nolist"><li>UiSelector with the specified search criteria</li></ul>
-  </div>
-  <div class="jd-tagdata">
-     <h5 class="jd-tagtitle">Since</h5>
-     <ul class="nolist"><li>Android API Level 17</li></ul>
-  </div>
-    </div>
-</div>
-
-
-<A NAME="textStartsWith(java.lang.String)"></A>
-
-<div class="jd-details api">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        public
-
-
-
-
-        <a href="#">UiSelector</a>
-      </span>
-      <span class="sympad">textStartsWith</span>
-      <span class="normal">(String text)</span>
-    </h4>
-      <div class="api-level">
-        <div></div>
-
-
-
-      </div>
-    <div class="jd-details-descr">
-
-  <div class="jd-tagdata jd-tagdescr"><p>Set the search criteria to match visible text in a widget that is
- prefixed by the text parameter.
-
- The matching is case-insensitive.</p></div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Parameters</h5>
-      <table class="jd-tagtable">
-        <tr>
-          <th>text</td>
-          <td>Value to match</td>
-        </tr>
-      </table>
-  </div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Returns</h5>
-      <ul class="nolist"><li>UiSelector with the specified search criteria</li></ul>
-  </div>
-
-    </div>
-</div>
-
-
-<A NAME="toString()"></A>
-
-<div class="jd-details api">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        public
-
-
-
-
-        String
-      </span>
-      <span class="sympad">toString</span>
-      <span class="normal">()</span>
-    </h4>
-      <div class="api-level">
-        <div></div>
-
-
-
-      </div>
-    <div class="jd-details-descr">
-
-  <div class="jd-tagdata jd-tagdescr"><p></p></div>
-
-    </div>
-</div>
-
-
-
-
-
-<!-- ========= METHOD DETAIL ======== -->
-
-<h2>Protected Methods</h2>
-
-
-
-<A NAME="cloneSelector()"></A>
-
-<div class="jd-details api">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        protected
-
-
-
-
-        <a href="#">UiSelector</a>
-      </span>
-      <span class="sympad">cloneSelector</span>
-      <span class="normal">()</span>
-    </h4>
-    <div class="jd-details-descr">
-
-  <div class="jd-tagdata">
-     <h5 class="jd-tagtitle">Since</h5>
-     <ul class="nolist"><li>Android API Level 17</li></ul>
-  </div>
-
-    </div>
-
-
-
-
-
-
diff --git a/docs/html/tools/help/uiautomator/UiWatcher.jd b/docs/html/tools/help/uiautomator/UiWatcher.jd
deleted file mode 100644
index 9268c35..0000000
--- a/docs/html/tools/help/uiautomator/UiWatcher.jd
+++ /dev/null
@@ -1,74 +0,0 @@
-page.title=UiWatcher
-parent.title=uiautomator
-parent.link=index.html
-@jd:body
-<style>
-    h4.jd-details-title {background-color: #DEE8F1;}
-</style>
-
-<p>Represents a conditional watcher on the target device. To learn how to register a conditional 
- watcher, see <code><a href="UiDevice.html#registerWatcher(java.lang.String, com.android.uiautomator.core.UiWatcher)">UiDevice.registerWatcher()</a></code>.
-</p>
-<h2>Summary</h2>
-
-<!-- ========== METHOD SUMMARY =========== -->
-<table id="pubmethods" class="jd-sumtable"><tr><th colspan="12">Public Methods</th></tr>
-
-
-
-	 
-    <tr class="api" >
-        <td class="jd-typecol">
-            abstract
-            
-            
-            
-            
-            boolean
-        </td>
-        <td class="jd-linkcol" width="100%">
-        <span class="sympad"><a href="#checkForCondition()">checkForCondition</a></span>()
-        
-        <div class="jd-descrdiv">The testing framework calls this handler method automatically when the framework  
-        is unable to find a match using the <code><a href="UiSelector.html">UiSelector</a></code>.</div>
-  
-  </td></tr>
-
-</table>
-
-</div><!-- jd-descr (summary) -->
-
-
-<!-- ========= METHOD DETAIL ======== -->
-<!-- Public methdos -->
-
-<h2>Public Methods</h2>
-
-<a id="checkForCondition()"></a>
-
-<div class="jd-details api "> 
-    <h4 class="jd-details-title">
-      <span class="normal">
-        public 
-         
-         
-        abstract 
-         
-        boolean
-      </span>
-      <span class="sympad">checkForCondition</span>
-      <span class="normal">()</span>
-    </h4>
-      <div class="api-level">
-
-      </div>
-    <div class="jd-details-descr">
-      
-  <div class="jd-tagdata jd-tagdescr"><p>The testing framework calls this handler method automatically when the framework is unable to find a match using the <code><a href="UiSelector.html">UiSelector</a></code>. When a match is not found after a predetermined time has elapsed, the framework calls the checkForCondition() method of all registered watchers on the device. You can use this method to handle known blocking issues that are preventing the test from proceeding. For example, you can check if a dialog appeared that is blocking the the test, then close the dialog or perform some other appropriate action to allow the test to continue.</p></div>
-  <div class="jd-tagdata">
-      <h5 class="jd-tagtitle">Returns</h5>
-      <ul class="nolist"><li>true to indicate a matched condition, or false if no matching condition is found
-</li></ul>
-  </div>
-
-    </div>
diff --git a/docs/html/tools/help/uiautomator/index.jd b/docs/html/tools/help/uiautomator/index.jd
deleted file mode 100644
index 5eda4a3..0000000
--- a/docs/html/tools/help/uiautomator/index.jd
+++ /dev/null
@@ -1,188 +0,0 @@
-page.title=uiautomator
-parent.title=Tools
-parent.link=index.html
-@jd:body
-
-<div id="qv-wrapper">
-  <div id="qv">
-     <h2>In this document</h2>
-  <ul>
-     <li><a href="#syntax">Syntax</a></li>
-     <li><a href="#options">Options</a></li>
-     <lI><a href="#api">uiautomator API</a>
-        <ul>
-        <li><a href="#classes">Classes</a></li>
-        <li><a href="#interfaces">Interfaces</a></li>
-        <li><a href="#exceptions">Exceptions</a></li>
-        </ul>
-     </lI>
-  </ul>
-  </div>
-</div>
-
-<p>The {@code uiautomator} testing framework lets you test your user interface (UI) efficiently by creating automated functional UI testcases that can be run against your app on one or more devices.</p>
-<p>For more information on testing with the {@code uiautomator} framework, see <a href="{@docRoot}tools/testing/testing_ui.html">UI Testing</a>.</p>
-
-<h2 id="syntax">Syntax</h2>
-<p>To run your testcases on the target device, you can use the {@code adb shell} command to invoke the {@code uiautomator} tool.  The syntax is:
-<pre>
-adb shell uiautomator runtest &lt;JARS&gt; -c &lt;CLASSES&gt; [options]
-</pre>
-</p>
-<p>Here’s an example:</p>
-<pre>adb shell uiautomator runtest LaunchSettings.jar -c com.uia.example.my.LaunchSettings</pre>
-
-<h2 id="options">Command-line Options</h2>
-<p>The following table describes the subcommands and options for {@code uiautomator}.</p>
-
-<p class="table-caption" id="table1">
-<strong>Table 1.</strong> Command-line options for {@code uiautomator}</p>
-<table>
-<tr>
-  <th>Subcommand</th>
-  <th>Option</th>
-  <th>Description</th>
-</tr>
-
-<tr>
-<td rowspan="7"><code>runtest</code></td>
-<td><nobr>{@code <JARS>}</nobr></td>
-<td><strong>Required</strong>. The {@code <JARS>} argument is the name of one or more JAR files that you deployed to the target device which contain your uiautomator testcases. You can list more than one JAR file by using a space as a separator.</td>
-</tr>
-
-<tr>
-<td><nobr><code>-c &lt;CLASSES&gt; </code></nobr></td>
-<td><strong>Required (API 17 or lower)</strong>.The {@code <CLASSES>}
-argument is a list of test classes or test methods in {@code <JARS>} to run.
-<p>Each class or method must be fully 
-qualified with the package name, in one of these formats:
-<ul>
-<li>{@code package_name.class_name}</li>
-<li>{@code package_name.class_name#method_name}</li>
-</ul>
-You can list multiple classes or methods by using a space as a separator.</p>
-<p class="note"><strong>Note:</strong>This argument is not required for API 18 
-and higher. If not specified, all test cases in {@code <JARS>} will be run.
-</p>
-</td>
-</tr>
-
-<tr>
-<td><nobr><code>--nohup</code></nobr></td>
-<td>Runs the test to completion on the device even if its parent process is terminated (for example, if the device is disconnected).</td>
-</tr>
-
-<tr>
-<td><nobr><code>-e &lt;NAME&gt; &lt;VALUE&gt;</code></nobr></td>
-<td><p>Specify other name-value pairs to be passed to test classes. May be repeated.</p><p class="note"><strong>Note: </strong>The {@code -e} options cannot be combined; you must prefix each option with a separate {@code -e} flag. </p></td>
-</tr>
-
-<tr>
-<td><nobr><code>-e debug [true|false]</code></nobr></td>
-<td>Wait for debugger to connect before starting.</td>
-</tr>
-
-<tr>
-<td><code>dump [file]</code></td>
-<td>Generate an XML file with a dump of the current UI hierarchy. If a filepath is not specified, by default, the generated dump file is stored on the device in this location {@code /storage/sdcard0/window_dump.xml}.</td>
-</tr>
-
-<tr>
-<td><nobr><code>-e outputFormat simple | -s</code></nobr></td>
-<td>Enables less verbose JUnit style output.</td>
-</tr>
-
-<tr>
-<td><code>events</code></td>
-<td>&nbsp;</td>
-<td>Prints out accessibility events to the console until the connection to the device is terminated</td>
-</tr>
-</table>
-
-<h2 id="api">uiautomator API</h2>
-<p>The {@code uiautomator} API is bundled in the {@code uiautomator.jar} file under the {@code <android-sdk>/platforms/} directory.  The API includes these key classes, interfaces, and exceptions that allow you to capture and manipulate UI components on the target app:</p>
-
-<h3 id="classes">Classes</h3>
-<table>
-<tr>
-  <th>Class</th>
-  <th>Description</th>
-</tr>
-
-<tr>
-<td><nobr><a href="{@docRoot}tools/help/uiautomator/UiCollection.html">{@code com.android.uiautomator.core.UiCollection}</a></nobr></td>
-<td>Used to enumerate a container's user interface (UI) elements for the purpose of counting, or targeting a sub elements by a child's text or description.</td>
-</tr>
-
-<tr>
-<td><nobr><a href="{@docRoot}tools/help/uiautomator/UiDevice.html">{@code com.android.uiautomator.core.UiDevice}</a></nobr></td>
-<td>Provides access to state information about the device. You can also use this class to simulate user actions on the device, such as pressing the d-pad hardware button or pressing the Home and Menu buttons.</td>
-</tr>
-
-<tr>
-<td><nobr><a href="{@docRoot}tools/help/uiautomator/UiObject.html">{@code com.android.uiautomator.core.UiObject}</a></nobr></td>
-<td>Represents a user interface (UI) element.</td>
-</tr>
-
-<tr>
-<td><nobr><a href="{@docRoot}tools/help/uiautomator/UiScrollable.html">{@code com.android.uiautomator.core.UiScrollable}</a></nobr></td>
-<td>Provides support for searching for items in a scrollable UI container.</td>
-</tr>
-
-<tr>
-<td><nobr><a href="{@docRoot}tools/help/uiautomator/UiSelector.html">{@code com.android.uiautomator.core.UiSelector}</a></nobr></td>
-<td>Represents a query for one or more target UI elements on a device screen. </td>
-</tr>
-
-<tr>
-<td><nobr><a href="{@docRoot}tools/help/uiautomator/Configurator.html">{@code com.android.uiautomator.core.Configurator}</a></nobr></td>
-<td>Allows you to set key parameters for running uiautomator tests.</td>
-</tr>
-
-</table>
-
-<h3 id="interfaces">Interfaces</h3>
-
-<table>
-<tr>
-  <th>Interface</th>
-  <th>Description</th>
-</tr>
-
-<tr>
-<td><nobr><a href="{@docRoot}tools/help/uiautomator/UiWatcher.html">{@code com.android.uiautomator.core.UiWatcher}</a></nobr></td>
-<td>Represents a conditional watcher on the target device.</td>
-</tr>
-
-<tr>
-<td><nobr><a href="{@docRoot}tools/help/uiautomator/IAutomationSupport.html">{@code com.android.uiautomator.testrunner.IAutomationSupport}</a></nobr></td>
-<td>Provides auxiliary support for running test cases.</td>
-</tr>
-
-<tr>
-<td><nobr><a href="{@docRoot}tools/help/uiautomator/UiAutomatorTestCase.html">{@code com.android.uiautomator.testrunner.UiAutomatorTestCase}</a></nobr></td>
-<td>Defines an environment for running multiple tests. All {@code uiautomator} test cases should extend this class.</td>
-</tr>
-
-</table>
-
-<h3 id="exceptions">Exceptions</h3>
-
-<table>
-<tr>
-  <th>Exception</th>
-  <th>Description</th>
-</tr>
-
-<tr>
-<td><nobr><a href="{@docRoot}tools/help/uiautomator/UiObjectNotFoundException.html">{@code com.android.uiautomator.core.UiObjectNotFoundException}</a></nobr></td>
-<td>Indicates when a a <a href="{@docRoot}tools/help/uiautomator/UiSelector.html">{@code UiSelector}</a> could not be matched to any UI element displayed.</td>
-</tr>
-
-</table>
-
-
-
-
-
-
diff --git a/docs/html/tools/help/vector-asset-studio.jd b/docs/html/tools/help/vector-asset-studio.jd
deleted file mode 100644
index 491a699..0000000
--- a/docs/html/tools/help/vector-asset-studio.jd
+++ /dev/null
@@ -1,506 +0,0 @@
-page.title=Vector Asset Studio
-parent.title=Tools
-parent.link=index.html
-page.tags=vector
-@jd:body
-
-<div id="qv-wrapper">
-<div id="qv">
-  <h2>In this document</h2>
-<ol>
-  <li><a href="#about">About Vector Asset Studio</a></li>
-  <li><a href="#running">Running Vector Asset Studio</a></li>
-  <li><a href="#importing">Importing a Vector Graphic</a></li>
-  <li><a href="#layout">Adding a Vector Drawable to a Layout</a></li>
-  <li><a href="#referring">Referring to a Vector Drawable in Code</a></li>
-  <li><a href="#code">Modifying XML Code Generated by Vector Asset Studio</a></li>
-  <li><a href="#delete">Deleting a Vector Asset from a Project</a></li>
-  <li><a href="#apk">Delivering an App Containing Vector Drawables</a></li>
-</ol>
-
- <h2>See also</h2>
-  <ol>
-    <li><a href="{@docRoot}training/material/drawables.html#VectorDrawables">Create Vector Drawables</a></li>
-    <li><a href="http://www.google.com/design/icons" class="external-link">Material Icons</a></li>
-    <li><a href="{@docRoot}reference/android/graphics/drawable/Drawable.html">Drawable Class</a></li>
-    <li><a href="{@docRoot}reference/android/graphics/drawable/VectorDrawable.html">VectorDrawable Class</a></li>
-  </ol>
-
-  <h2>Videos</h2>
-  <ol>
-    <li><a href="http://www.youtube.com/watch?t=126&v=wlFVIIstKmA" class="external-link">DevBytes: Android Vector Graphics</a></li>
-    <li><a href="http://www.youtube.com/watch?v=8e3I-PYJNHg" class="external-link">Android Studio Support for Vector Graphics</a></li>
-  </ol>
-
-  <h2>Dependencies and Prerequisites</h2>
-  <ul>
-    <li><a href="{@docRoot}tools/building/plugin-for-gradle.html">Android Plugin for Gradle</a> 1.5.0 or higher</li>
-  </ul>
-
-</div>
-</div>
-
-<p>Vector Asset Studio helps you add material icons
-and import Scalable Vector Graphic (SVG) files into your app project as a drawable resource.
-Compared to raster images, vector drawables can reduce the size of your app and be resized without
-loss of image quality. They help you to more easily support different Android devices with varying
-screen sizes and resolutions because you can display one vector drawable on all of them. </p>
-
-<h2 id="about">About Vector Asset Studio</h2>
-
-<p>Vector Asset Studio adds a vector graphic to the project as an XML file that describes the image.
-Maintaining one XML file can be easier than updating multiple raster graphics at various resolutions.</p>
-
-<p>Android 4.4 (API level 20) and lower doesn't support vector drawables. If your minimum API level
-is set at one of these API levels, Vector Asset Studio also directs Gradle to generate raster images
-of the vector drawable for backward-compatibility. You can refer to vector assets as
-{@link android.graphics.drawable.Drawable} in Java code or <code>@drawable</code> in XML code; when
-your app runs, the corresponding vector or raster image displays automatically depending on the API
-level.</p>
-
-
-<h3 id="types">Supported vector graphic types</h3>
-
-<p>The Google material design specification provides <a href="http://www.google.com/design/icons" class="external-link">material icons</a>
-that you can use in your Android apps. Vector
-Asset Studio helps you choose, import, and size material icons, as well as define opacity and the
-Right-to-Left (RTL) mirroring setting.</p>
-
-<p>Vector Asset Studio also helps you to import your own SVG files. SVG is an XML-based open
-standard of the World Wide Web Consortium (W3C). Vector Asset Studio supports the essential
-standard, but not all features. When you specify an SVG file, Vector Asset Studio gives immediate
-feedback about whether the graphics code is supported or not. If the SVG code is supported, it
-converts the file into an XML file containing {@link
-android.graphics.drawable.VectorDrawable} code.</p>
-
-<h3 id="when">Considerations for SVG files</h3>
-
-<p>A vector drawable is appropriate for simple icons. The
-<a href="http://www.google.com/design/icons" class="external-link">material icons</a> provide good
-examples of the types
-of images that work well as vector drawables in an app. In contrast, many app launch icons do have
-many details, so they work better as raster images.</p>
-
-<p>The initial loading of a vector graphic can cost more CPU cycles than the corresponding raster
-image. Afterward, memory use and performance are similar between the two. We recommend that you
-limit a vector image to a maximum of 200 x 200 dp; otherwise, it can take too long to draw.</p>
-
-<p>Although vector drawables do support one or more colors, in many cases it makes sense to color
-icons black (<code>android:fillColor="#FF000000"</code>). Using this approach, you can add a
-<a href="{@docRoot}training/material/drawables.html#DrawableTint">tint</a> to the vector drawable
-that you placed in a layout, and the icon color changes to the tint color. If the icon color
-isn't black, the icon color might instead blend with the tint color.</p>
-
-<h3 id="apilevel">Vector drawable support at different API levels</h3>
-
-<p>Android 5.0 (API level 21) and higher provides vector drawable support. If your app has a
-minimum API level that is lower, Vector Asset Studio adds the vector drawable file to your
-project; also, at build time, Gradle creates Portable Network Graphic (PNG) raster images at various
-resolutions. Gradle generates the PNG densities specified by the Domain Specific Language (DSL)
-<a href="http://google.github.io/android-gradle-dsl/1.4/com.android.build.gradle.internal.dsl.ProductFlavor.html#com.android.build.gradle.internal.dsl.ProductFlavor:generatedDensities" class="external-link">generatedDensities</a> property
-in a <code>build.gradle</code> file. To generate PNGs, the build system requires Android
-Plugin for Gradle 1.5.0 or higher.</p>
-
-<p>For Android 5.0 (API level 21) and higher, Vector Asset Studio supports all of the {@link
-android.graphics.drawable.VectorDrawable} elements. For backward compatibility with Android 4.4 (API
-level 20) and lower, Vector Asset Studio supports the following XML elements:</p>
-
-<div class="wrap">
-  <div class="cols">
-    <div class="col-1of3">
-
-<p><code>&lt;vector></code></p>
-<ul>
-  <li><code>android:width</code></li>
-  <li><code>android:height</code></li>
-  <li><code>android:viewportWidth</code></li>
-  <li><code>android:viewportHeight</code></li>
-  <li><code>android:alpha</code></li>
-</ul>
-
-</div>
-
-<div class="col-1of3">
-
-<p><code>&lt;group></code></p>
-<ul>
-  <li><code>android:rotation</code></li>
-  <li><code>android:pivotX</code></li>
-  <li><code>android:pivotY</code></li>
-  <li><code>android:scaleX</code></li>
-  <li><code>android:scaleY</code></li>
-  <li><code>android:translateX</code></li>
-  <li><code>android:translateY</code></li>
-</ul>
-
-</div>
-
-
-<div class="col-1of3">
-
-<p><code>&lt;path></code></p>
-<ul>
-  <li><code>android:pathData</code></li>
-  <li><code>android:fillColor</code></li>
-  <li><code>android:strokeColor</code></li>
-  <li><code>android:strokeWidth</code></li>
-  <li><code>android:strokeAlpha</code></li>
-  <li><code>android:fillAlpha</code></li>
-  <li><code>android:strokeLineCap</code></li>
-  <li><code>android:strokeLineJoin</code></li>
-  <li><code>android:strokeMiterLimit</code></li>
-</ul>
-
-</div>
-
-</div>
-</div>
-
-<p>Only Android 5.0 (API level 21) and higher supports dynamic attributes, for example, <code>android:fillColor="?android:attr/colorControlNormal"</code>.</p>
-
-<p>You can change the XML code that Vector Asset Studio generates, although it’s not a best practice.
-Changing the values in the code should not cause any issues, as long as they’re valid and static. If
-you want to add XML elements, you need to make sure that they’re supported based on your minimum API
-level.</p>
-
-<p>For Android 5.0 (API level 21) and higher, you can use the {@link
-android.graphics.drawable.AnimatedVectorDrawable} class to animate the properties of {@link
-android.graphics.drawable.VectorDrawable}. For more information, see
-<a href="{@docRoot}training/material/animations.html#AnimVector">Animating Vector Drawables</a>.</p>
-
-<h2 id="running">Running Vector Asset Studio</h2>
-
-<p>Follow these steps to start Vector Asset Studio:</p>
-
-<ol>
-  <li>In Android Studio, open an Android app project.</li>
-  <li>In the <em>Project</em> window, select the
-  <a href="{@docRoot}sdk/installing/create-project.html#ProjectView">Android view</a>.</li>
-  <li>Right-click the <strong>res</strong> folder and select <strong>New</strong> >
-  <strong>Vector Asset</strong>.</li>
-  <p>Some other project views and folders have this menu item as well.</p>
-  <p>Vector Asset Studio appears.</p>
-  <img src="{@docRoot}images/tools/vas-materialicon.png" />
-  <li>If a <em>Need newer Android plugin for Gradle</em> dialog appears instead, correct
-  your Gradle version as follows:</li>
-    <ol type="a">
-      <li>Select <strong>File</strong> > <strong>Project Structure</strong>.</li>
-      <li>In the <em>Project Structure</em> dialog, select <strong>Project</strong>.</li>
-      <li>In the <strong>Android Plugin Version</strong> field, change the Android Plugin for Gradle
-      version to <strong>1.5.0</strong> or higher, and click <strong>OK</strong>.</li>
-      <p>Gradle syncs the project.</p>
-      <li>In the <a href="{@docRoot}sdk/installing/create-project.html#ProjectView">Android view</a>
-      of the <em>Project</em> window, right-click the <strong>res</strong> folder and select
-      <strong>New</strong> > <strong>Vector Asset</strong>.</li>
-      <p>Vector Asset Studio appears.</p>
-    </ol>
-  <li>Continue with <a href="#importing">Importing a Vector Graphic</a>.</li>
-</ol>
-
-<h2 id="importing">Importing a Vector Graphic</h2>
-
-<p>Vector Asset Studio helps you to import a vector graphics file into your app project. Follow one
-  of the following procedures:</p>
-<ul>
-  <li><a href="#materialicon">Adding a material icon</a></li>
-  <li><a href="#svg">Importing an SVG file</a></li>
-</ul>
-
-<h3 id="materialicon">Adding a material icon</h3>
-
-<p>After you <a href="#running">open Vector Asset Studio</a>, you can add a material icon as follows:</p>
-
-<ol>
-  <li>In Vector Asset Studio, select <strong>Material Icon</strong>.</li>
-  <li>Click <strong>Choose</strong>.</li>
-  <li>Select a material icon and click <strong>OK</strong>.</li>
-  <p>The icon appears in the <strong>Vector Drawable Preview</strong>.</p>
-  <li>Optionally change the resource name, size, opacity, and Right-To-Left (RTL) mirroring setting:
-    <ul>
-      <li><strong>Resource name</strong> - Type a new name if you don’t want to use the default name.
-      Vector Asset Studio automatically creates a unique name (adds a number to the end of the name)
-      if that resource name already exists in the project. The name can contain lowercase
-      characters, underscores, and digits only.</li>
-      <li><strong>Override default size from material design</strong> - Select this option if you
-      want to adjust the size of the image. When you type a new size, the change appears in the
-      preview area.</li>
-      <p>The default is 24 x 24 dp, which is defined in the
-      <a href="http://www.google.com/design/icons" class="external-link">material design</a>
-      specification. Deselect the checkbox to return to the default.</p>
-      <li><strong>Opacity</strong> - Use the slider to adjust the opacity of the image. The change
-      appears in the preview area.</li>
-      <li><strong>Enable auto mirroring for RTL layout</strong> - Select this option if you want a
-      mirror image to display when the layout is right to left, instead of left to right. For
-      example, some languages are read right to left; if you have an arrow icon, you might want to
-      display a mirror image of it in this case. Note that if you’re working with an older project,
-      you might also
-      need to add <code>android:supportsRtl="true"</code> to your app manifest. Auto-mirroring is
-      supported on Android 5.0 (API level 21) and higher only.</li>
-    </ul>
-  <li>Click <strong>Next</strong>.</li>
-  <li>Optionally change the module and resource directory:</li>
-   <ul>
-      <li><strong>Target Module</strong> - Select a module in the project where you want to add the
-      resource. For more information, see
-      <a href="{@docRoot}sdk/installing/create-project.html#CreatingAModule">Creating an Android Module</a>.</li>
-      <li><strong>Res Directory</strong> - Select the resource source set where you want to add the
-      vector asset: <code>src/main/res</code>, <code>src/debug/res</code>, <code>src/release/res</code>,
-      or a user-defined source set. The main source set applies to all build variants, including
-      debug and release. The debug and release source sets override the main source set and apply
-      to one version of a build. The debug source set is for debugging only. To define a new source
-      set, select <strong>File</strong> > <strong>Project Structure</strong> > <strong>app</strong> >
-      <strong>Build Types</strong>. For example, you could define a beta source set and create a
-      version of an icon that includes the text "BETA” in the bottom right corner. For more information, see
-      <a href="{@docRoot}tools/building/configuring-gradle.html#workBuildVariants">Working with Build Variants</a>.</li>
-    </ul>
-    <p>The <strong>Output Directories</strong> area displays the vector image and the directory
-    where it will appear.</p>
-  <li>Click <strong>Finish</strong>.</li>
-  <p>Vector Asset Studio adds an XML file defining the vector drawable to the project in the
-  <code>app/src/main/res/drawable/</code> folder. From the
-  <a href="{@docRoot}sdk/installing/create-project.html#ProjectView">Android view</a> of the <em>Project</em>
-  window, you can view the generated vector XML file in the <strong>drawable</strong> folder.</p>
-  <li>Build the project.</li>
-  <p>If the minimum API level is Android 4.4 (API level 20) and lower, Vector Asset Studio generates
-  PNG files. From the <a href="{@docRoot}sdk/installing/create-project.html#ProjectView">Project view</a>
-  of the <em>Project</em> window, you can view the generated PNG and XML files in the
-  <code>app/build/generated/res/pngs/debug/</code> folder.</p>
-  <p>You should not edit these generated raster files, but instead work with the vector XML file. The
-  build system regenerates the raster files automatically when needed so you don’t need to maintain
-  them.</p>
-</ol>
-
-<h3 id="svg">Importing a Scalable Vector Graphic (SVG)</h3>
-
-<p>After you <a href="#running">open Vector Asset Studio</a>, you can import an SVG file as follows:</p>
-
-<ol>
-  <li>In Vector Asset Studio, select <strong>Local SVG file</strong>.</li>
-  <p>The file must be on a local drive. If it’s located on the network, for example, you need to
-  download it to a local drive first.</p>
-  <li>Specify an <strong>Image file</strong> by clicking <strong>…</strong> .</li>
-  <p>The image appears in the <strong>Vector Drawable Preview</strong>.</p>
-  <p>However, if the SVG file contains unsupported features, an error appears at the bottom left of
-  Vector Asset Studio, as shown in the following figure.</p>
-  <img src="{@docRoot}images/tools/vas-svgerror.png" />
-  <p>In this case, you can’t use Vector Asset Studio to add the graphics file. Click
-    <strong>More</strong> to view the errors. For a list of supported elements, see
-  <a href="#apilevel">Vector Drawable Support at Different API Levels</a>.</p>
-  <li>Optionally change the resource name, size, opacity, and Right-To-Left (RTL) mirroring setting:</li>
-    <ul>
-      <li><strong>Resource name</strong> - Type a new name if you don’t want to use the default
-      name. Vector Asset Studio automatically creates a unique name (adds a number to the end of the
-      name) if that resource name already exists in the project. The name can contain lowercase
-      characters, underscores, and digits only.</li>
-      <li><strong>Override default size from material design</strong> - Select this option if you
-      want to adjust the size of the image. After you select it, the size changes to the size of the
-      image itself. Whenever you change the size, the change appears in the preview area.</li>
-      <p>The default is 24 x 24 dp, which is defined in the
-      <a href="http://www.google.com/design/icons" class="external-link">material design</a>
-      specification. Deselect the checkbox to return to the default.</p>
-      <li><strong>Opacity</strong> - Use the slider to adjust the opacity of the image. The change
-      appears in the preview area.</li>
-      <li><strong>Enable auto mirroring for RTL layout</strong> - Select this option if you want a
-      mirror image to display when the layout is right to left, instead of left to right. For
-      example, some languages are read right to left; if you have an arrow icon, you might want to
-      display a mirror image of it in this case. Note that if you’re working with an older project,
-      you might
-      need to add <code>android:supportsRtl="true"</code> to your app manifest.  Auto-mirroring is
-      supported on Android 5.0 (API level 21) and higher only.</li>
-    </ul>
-  <li>Click <strong>Next</strong>.</li>
-  <li>Optionally change the module and resource directory:</li>
-  <ul>
-      <li><strong>Target Module</strong> - Select a module in the project where you want to add the
-      resource. For more information, see
-      <a href="{@docRoot}sdk/installing/create-project.html#CreatingAModule">Creating an Android Module</a>.</li>
-      <li><strong>Res Directory</strong> - Select the resource source set where you want to add the
-      vector asset: <code>src/main/res</code>, <code>src/debug/res</code>, <code>src/release/res</code>,
-      or a user-defined source set. The main source set applies to all build variants, including
-      debug and release. The debug and release source sets override the main source set and apply
-      to one version of a build. The debug source set is for debugging only. To define a new source
-      set, select <strong>File</strong> > <strong>Project Structure</strong> > <strong>app</strong> >
-      <strong>Build Types</strong>. For example, you could define a beta source set and create a
-      version of an icon that includes the text "BETA” in the bottom right corner. For more information, see
-      <a href="{@docRoot}tools/building/configuring-gradle.html#workBuildVariants">Working with Build Variants</a>.</li>
-    </ul>
-    <p>The <strong>Output Directories</strong> area displays the vector image and the directory
-    where it will appear.</p>
-  <li>Click <strong>Finish</strong>.</li>
-  <p>Vector Asset Studio adds an XML file defining the vector drawable to the project in the
-  <code>app/src/main/res/drawable/</code> folder. From the
-  <a href="{@docRoot}sdk/installing/create-project.html#ProjectView">Android view</a> of the <em>Project</em>
-  window, you can view the generated vector XML file in the <strong>drawable</strong> folder.</p>
-  <li>Build the project.</li>
-  <p>If the minimum API level is Android 4.4 (API level 20) and lower, Vector Asset Studio generates
-  PNG files. From the <a href="{@docRoot}sdk/installing/create-project.html#ProjectView">Project view</a>
-  of the <em>Project</em> window, you can view the generated PNG and XML files in the
-  <code>app/build/generated/res/pngs/debug/</code> folder.</p>
-  <p>You should not edit these generated raster files, but instead work with the vector XML file. The
-  build system regenerates the raster files automatically when needed so you don’t need to maintain
-  them.</p>
-</ol>
-
-<h2 id="layout">Adding a Vector Drawable to a Layout</h2>
-
-<p>In a layout file, you can set any icon-related widget, such as {@link android.widget.ImageButton},
-{@link android.widget.ImageView}, and so on, to point to a vector asset. For example, the following
-layout shows a vector asset displayed on a button:</p>
-
-<img src="{@docRoot}images/tools/vas-layout.png" />
-
-<p>Follow these steps to display a vector asset on a widget, as shown in the figure:</p>
-
-<ol>
-  <li>Open a project and <a href="#running">import a vector asset</a>.</li>
-  <li>In the <a href="{@docRoot}sdk/installing/create-project.html#ProjectView">Android view</a> of
-  the <em>Project</em> window, double-click a layout XML file, such as <code>content_main.xml</code>.</li>
-  <li>Click the <strong>Design</strong> tab to display the
-  <a href="{@docRoot}sdk/installing/studio-layout.html">Layout Editor</a>.</li>
-  <li>Drag the {@link
-android.widget.ImageButton} widget from the <em>Palette</em> window onto the Layout Editor.</li>
-  <li>In the <em>Properties</em> window, locate the <strong>src</strong> property of the
-  <code>ImageButton</code> instance and click <strong>…</strong> .</li>
-  <li>In the <em>Resources</em> dialog, select the <strong>Project</strong> tab, navigate to the
-    <strong>Drawable</strong> folder, and select a vector asset. Click <strong>OK</strong>.</li>
-  <p>The vector asset appears on the <code>ImageButton</code> in the layout.</p>
-  <li>To change the color of the image to the accent color defined in the theme, locate the
-  <strong>tint</strong> property in the <em>Properties</em> window and click <strong>…</strong> .</li>
-  <li>In the <em>Resources</em> dialog, select the <strong>Project</strong> tab, navigate to the
-  <strong>Color</strong> folder, and select <strong>colorAccent</strong>. Click <strong>OK</strong>.</li>
-  <p>The color of the image changes to the accent color in the layout.</p>
-</ol>
-
-<p>The <code>ImageButton</code> code should be similar to the following:</p>
-
-<pre>
-&lt;ImageButton
-  android:id="@+id/imageButton"
-  android:src="@drawable/ic_build_24dp"
-  android:tint="@color/colorAccent"
-  android:layout_width="wrap_content"
-  android:layout_height="wrap_content"
-  android:layout_below="@+id/textView2"
-  android:layout_marginTop="168dp" />
-</pre>
-
-<h2 id="referring">Referring to a Vector Drawable in Code</h2>
-
-<p>You can normally refer to a vector drawable resource in a generic way in your code, and when
-your app runs, the corresponding vector or raster image displays automatically depending on the API
-level:</p>
-
-<ul>
-  <li>In most cases, you can refer to vector assets as <code>@drawable</code> in XML code or
-    {@link android.graphics.drawable.Drawable} in Java code. </li>
-  <p>For example, the following layout XML code applies the image to a view:</p>
-<pre>
-&lt;ImageView
-    android:layout_height="wrap_content"
-    android:layout_width="wrap_content"
-    android:src="@drawable/myimage" />
-</pre>
-  <p>The following Java code retrieves the image as a {@link android.graphics.drawable.Drawable}:</p>
-<pre>
-Resources res = {@link android.content.Context#getResources()};
-Drawable drawable = res.{@link android.content.res.Resources#getDrawable(int) getDrawable}(R.drawable.myimage);
-</pre>
-  <li>Occasionally, you might need to typecast the drawable resource to its exact class, such as
-  when you need to use specific features of the {@link android.graphics.drawable.VectorDrawable}
-  class. To do so, you could use Java code such as the following:</li>
-<pre>
-if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
-   VectorDrawable vectorDrawable =  (VectorDrawable) drawable;
-} else {
-   BitmapDrawable bitmapDrawable = (BitmapDrawable) drawable;
-}
-</pre>
-</ul>
-
-
-<h2 id="code">Modifying XML Code Generated by Vector Asset Studio</h2>
-
-<p>You can modify the vector asset XML code, but not the PNGs and corresponding XML code generated
-at build time. However, we don't recommended it. Vector Asset Studio makes sure that the vector
-drawable and the PNGs match, and that the manifest contains the proper code. If you add code that's
-<a href="#apilevel">not supported</a> on Android 4.4 (API level 20) and lower, your vector and PNG
-images might differ. You also need to make sure that the manifest contains the code to support your
-changes.</p>
-
-<p>Follow these steps to modify the vector XML file:</p>
-
-<ol>
-  <li>In the <em>Project</em> window, double-click the generated vector XML file in the
-  <strong>drawable</strong> folder.</li>
-  <p>The XML file appears in the editor and <em>Preview</em> windows.</p>
-
-  <img src="{@docRoot}images/tools/vas-codepreview.png" />
-
-  <li>Edit the XML code based on what’s supported by the minimum API level:</li>
-    <ul>
-      <li>Android 5.0 (API level 21) and higher - Vector Asset Studio supports all of the
-      {@link android.graphics.drawable.Drawable} and
-      {@link android.graphics.drawable.VectorDrawable} elements. You can add XML elements and
-      change values.</li>
-      <li>Android 4.4 (API level 20) and lower - Vector Asset Studio supports all of the
-      {@link android.graphics.drawable.Drawable} elements and a subset of the
-      {@link android.graphics.drawable.VectorDrawable} elements. See
-      <a href="#apilevel">Support at Different API Levels</a> for a list. You can change values in
-      the generated code and add XML elements that are supported. Dynamic attributes aren't
-      supported.</li>
-   </ul>
-  <p>For example, if you didn’t select the RTL option in Vector Asset Studio but realize you now
-  need it, you can add the <a href="{@docRoot}reference/android/R.attr.html#autoMirrored">autoMirrored</a>
-  attribute later. To view the RTL version, select <strong>Preview Right-to-Left Layout</strong> in
-  the <img src="{@docRoot}images/tools/vas-rtlmenu.png" style="vertical-align:sub;margin:0;height:17px" alt="" />
-  menu of the <em>Preview</em> window. (Select <strong>None</strong> to remove the RTL preview.)</p>
-<img src="{@docRoot}images/tools/vas-rtl.png" />
-  <p class="note"><strong>Note:</strong> If you’re working with an older project, you might need to
-  add <code>android:supportsRtl="true"</code> to your app manifest. Also, because
-  <code>autoMirrored</code> is a dynamic attribute, it's supported on Android 5.0 (API level 21) and
-  higher only.</p>
-  <li>Build the project and check that the vector and raster images look the same.</li>
-  <p>Remember that the generated PNGs could display differently in the <em>Preview</em> window than
-  in the app due to different rendering engines and any changes made to the vector drawable before a
-  build. If you add code to the vector XML file created by Vector Asset Studio, any features
-  unsupported in Android 4.4 (API level 20) and lower don't appear in the generated PNG files. As a
-  result, when you add code, you should always check that the generated PNGs match the vector
-  drawable. To do so, you could double-click the PNG in the
-  <a href="{@docRoot}sdk/installing/create-project.html#ProjectView">Project view</a> of the <em>Project</em>
-  window; the left margin of the code editor also displays the PNG image when your code refers to
-  the drawable.</p>
-  <img src="{@docRoot}images/tools/vas-imageincode.png" />
-</ol>
-
-
-<h2 id="delete">Deleting a Vector Asset from a Project</h2>
-
-<p>Follow these steps to remove a vector asset from a project:</p>
-
-<ol>
-  <li>In the <em>Project</em> window, delete the generated vector XML file by selecting the file and
-  pressing the <strong>Delete</strong> key (or select <strong>Edit</strong> > <strong>Delete</strong>).</li>
-  <p>The <em>Safe Delete</em> dialog appears.</p>
-  <li>Optionally select options to find where the file is used in the project, and click
-  <strong>OK</strong>.</li>
-  <p>Android Studio deletes the file from the project and the drive. However, if you chose to search
-  for places in the project where the file is used and some usages are found, you can view them and
-  decide whether to delete the file.</p>
-  <li>Select <strong>Build</strong> > <strong>Clean Project</strong>.</li>
-  <p>Any auto-generated PNG and XML files corresponding to the deleted vector
-  asset are removed from the project and the drive.</p>
-</ol>
-
-<h2 id="apk">Delivering an App Containing Vector Drawables</h2>
-
-<p>When your minimum API level includes Android 4.4 (API level 20) or lower, you have corresponding
-  vector and raster images in your project. In this case, you have two options for delivering your
-  APK files:</p>
-
-<ul>
-  <li>Create one APK that includes both the vector images and the corresponding raster
-    representations. This solution is the simplest to implement.</li>
-  <li>Create separate APKs for different API levels. When you don’t include the corresponding
-    raster images in the APK for Android 5.0 (API level 21) and higher, the APK can be much smaller in
-    size. For more information, see <a href="{@docRoot}google/play/publishing/multiple-apks.html">Multiple APK Support</a>.</li>
-</ul>
diff --git a/docs/html/tools/help/zipalign.jd b/docs/html/tools/help/zipalign.jd
deleted file mode 100755
index ed82b27..0000000
--- a/docs/html/tools/help/zipalign.jd
+++ /dev/null
@@ -1,67 +0,0 @@
-page.title=zipalign
-parent.title=Tools
-parent.link=index.html
-@jd:body
-
-<p>zipalign is an archive alignment tool that provides important
-optimization to Android application (.apk) files. 
-The purpose is to ensure that all uncompressed data starts
-with a particular alignment relative to the start of the file.  Specifically,
-it causes all uncompressed data within the .apk, such as images or raw files,
-to be aligned on 4-byte boundaries. This
-allows all portions to be accessed directly with {@code mmap()} even if they
-contain binary data with alignment restrictions. 
-The benefit is a reduction in the amount of RAM consumed 
-when running the application.</p>
-
-<p>This tool should always be used to align your .apk file before 
-distributing it to end-users. The Android build tools can handle
-this for you. Android Studio automatically aligns your .apk after it signs it with your 
-private key. 
-The build scripts used
-when compiling your application with Gradle also align your .apk,
-as long as you have provided the path to your keystore and the key alias in
-your project {@code gradle.properties} file, so that the build tools 
-can sign the package first.</p>
-
-<p class="caution"><strong>Caution:</strong> zipalign must only be performed
-<strong>after</strong> the .apk file has been signed with your private key.
-If you perform zipalign before signing, then the signing procedure will undo
-the alignment. Also, do not make alterations to the aligned package.
-Alterations to the archive, such as renaming or deleting entries, will
-potentially disrupt the alignment of the modified entry and all later
-entries. And any files added to an "aligned" archive will not be aligned.</p>
-
-<p>The adjustment is made by altering the size of
-the "extra" field in the zip Local File Header sections.  Existing data
-in the "extra" fields may be altered by this process.</p>
-
-<p>For more information about how to use zipalign when building your 
-application, please read <a href="{@docRoot}tools/publishing/app-signing.html">Signing
-Your Application</a>.</p>
-
-
-<h3>Usage</h3>
-
-<p>To align {@code infile.apk} and save it as {@code outfile.apk}:</p>
-
-<pre>zipalign [-f] [-v] &lt;alignment> infile.apk outfile.apk</pre>
-
-<p>To confirm the alignment of {@code existing.apk}:</p>
-
-<pre>zipalign -c -v &lt;alignment> existing.apk</pre>
-
-<p>The {@code <alignment>} is an integer that defines the byte-alignment boundaries.
-This must always be 4 (which provides 32-bit alignment) or else it effectively 
-does nothing.</p>
-
-<p>Flags:</p>
-
-<ul>
-  <li>{@code -f} : overwrite existing outfile.zip</li>
-  <li>{@code -v} : verbose output</li>
-  <li>{@code -c} : confirm the alignment of the given file</li>
-</ul>
-
-
-
diff --git a/docs/html/tools/performance/allocation-tracker/index.jd b/docs/html/tools/performance/allocation-tracker/index.jd
deleted file mode 100644
index d68f601..0000000
--- a/docs/html/tools/performance/allocation-tracker/index.jd
+++ /dev/null
@@ -1,153 +0,0 @@
-page.title=Allocation Tracker Walkthrough
-meta.tags="android, performance, profiling, tools, memoryleaks, memoryheap"
-page.tags="android", "performance", "profiling", "tools", "memoryleaks", "memoryheap"
-page.metaDescription=Record you app's memory allocations with their call stack to identify code that allocates and frees objects unnecessarily.
-page.image=tools/performance/thumbnails/tools_allocation_tracker.png
-page.article=true
-
-
-@jd:body
-
-<style>
-  .no-bullet {
-    list-style-type: none;
-  }
-  .padded {
-    padding-left: 10px;
-  }
-</style>
-
-
-<div id="tb" style="margin-left: 7px; margin-bottom: 5px;">
-
-<h2>In this document</h2>
-<ul>
-  <li><a href="#WhatYouNeed">Prerequisites</a></li>
-  <li><a href="#WorkingWithAllocationTracker">Working with Allocation Tracker</a></li>
-</ul>
-
-<h2>You should also read</h2>
-<ul>
-  <li><a href="{@docRoot}tools/performance/heap-viewer/index.html">
-    Heap Viewer Walkthrough</a></li>
-  <li><a href="{@docRoot}tools/performance/memory-monitor/index.html">
-    Memory Monitor Walkthrough</a></li>
-  <li><a href="{@docRoot}tools/performance/comparison.html">
-    Comparison: Memory Monitor, Heap Viewer, Allocation Tracker</a>
-  <li><a href="{@docRoot}tools/performance/traceview/index.html">
-    Traceview Walkthrough</a></li>
-</ul>
-
-</div>
-
-
-  <p>This walkthrough shows the basic usage and workflow for the Allocation Tracker tool in Android
-  Studio. Allocation Tracker records an app's memory allocations and lists all
-  allocated objects for the profiling cycle with their call stack, size, and allocating code.</p>
-
-  <p>What it's good for:</p>
-
-  <ul>
-    <li>Identifying where many similar object types, from roughly the same call stack, are
-    allocated and deallocated over a very short period of time.</li>
-
-    <li>Finding the places in your code that may contribute to inefficient memory use.</li>
-  </ul>
-
-  <p>Before using Allocation Tracker, profile your code with the
-  <a href="{@docRoot}tools/performance/memory-monitor/index.html">Memory
-  Monitor Tool</a>. If you see many garbage collection events in a short amount of time, use
-  <a href="{@docRoot}tools/performance/heap-viewer/index.html">Heap
-  Viewer</a> to identify candidate object types, and Allocation Tracker to determine where this is
-  happening in your code.</p>
-
-  <h2 id="WhatYouNeed">Prerequisites</h2>
-
-  <ul>
-    <li>A mobile device with <a href=
-    "http://developer.android.com/tools/device.html#developer-device-options">Developer Options</a>
-    enabled.</li>
-
-    <li>Application code. Use your own code, or the <a href=
-    "https://github.com/udacity/Sunshine-Version-2">Sunshine</a> sample app from the <a href=
-    "https://www.udacity.com/course/ud853">Android Fundamentals Udacity course</a>.</li>
-  </ul>
-
-  <h2 id="WorkingWithAllocationTracker">Working with Allocation Tracker</h2>
-
-  <p>Allocation Tracker records each memory allocation that your app performs during the profiling
-  cycle. You tell Allocation Tracker to start recording and it logs allocations
-  until you tell it to stop.</p>
-
-<hr>
-<ul class="no-bullet">
-<!-- this also hides bullet, by default outside box -->
- <li><div style="overflow:hidden">
-  <ol class="padded">
-
-    <div class="figure" style="">
-      <img src="{@docRoot}images/tools/performance/allocation-tracker/gettingstarted_image01.png"
-         alt=""
-         width="400px" />
-      <p class="img-caption">
-        <strong>Figure 1. </strong>Steps for starting Allocation Tracker in Android DDMS.
-      </p>
-    </div>
-
-    <li>Connect your mobile device to your computer.</li>
-
-    <li>Open your application in Android Studio, build the source, and run it on your device or
-      emulator.</li>
-
-    <li>Click the <b>Android</b> button at the bottom of your Android Studio window.</li>
-
-    <li>If you are using the Android Device Monitor, click the RECORD button
-        <img src="{@docRoot}images/tools/performance/allocation-tracker/gettingstarted_image02.png">
-        (Start Allocation Tracking tooltip) in the Android DDMS tool bar. If you are using Android
-        Studio, click the
-        <img src="{@docRoot}images/tools/performance/allocation-tracker/gettingstarted_image02.png">
-        icon in the <a href="{@docRoot}tools/studio/index.html#mem-cpu">Memory Monitor</a> tool
-        bar. </li>
-
-    <li>Interact with your application.</li>
-
-    <li>Click the (same) STOP button (Stop Allocation Tracking tooltip).</li>
-  </ol>
-</div></li>
-
-<li><div style="overflow:hidden">
-<hr>
-  <ol class="padded" start="7">
-
-  <div class="figure" style="">
-      <img src="{@docRoot}images/tools/performance/allocation-tracker/gettingstarted_image03.png"
-         alt=""
-         width="440px" />
-      <p class="img-caption">
-        <strong>Figure 2. </strong>Example of Allocation Tracker output in Android DDMS.
-      </p>
-    </div>
-
-    <li>After a few seconds, a pane with your recorded data opens.
-
-    <p>Note that allocations are logged on
-      the device, and the data file is transferred to the host computer, parsed for information, and
-      displayed.</p></li>
-
-    <li>The pane populates with a table.
-
-    <ul>
-      <li>Each row represents a memory allocation event.</li>
-
-      <li>Each column represents information about the allocation, such as the object type,
-      the thread, and its size. </li>
-
-      <li>The columns are movable, resizable, and sortable.</li>
-    </ul>
-
-    <p>Use the Filter to show only allocations from your app.</li>
-
-    <li>Click on an object to see its full stack trace.</li>
-  </ol>
-</div></li>
-</ul>
diff --git a/docs/html/tools/performance/batterystats-battery-historian/charts.jd b/docs/html/tools/performance/batterystats-battery-historian/charts.jd
deleted file mode 100644
index cbe9d85..0000000
--- a/docs/html/tools/performance/batterystats-battery-historian/charts.jd
+++ /dev/null
@@ -1,124 +0,0 @@
-page.title=Battery Historian Charts
-meta.tags="android, performance, profiling, tools, battery, historian, batterydrain
-page.tags="android", performance", "profiling", "tools", "battery", "historian" "batterydrain"
-page.metaDescription=Examine and interpret the collected battery usage data in your browser.
-page.image=tools/performance/thumbnails/tools_battery_historian.png
-page.article=true
-
-@jd:body
-
-<div id="tb" style="margin-left: 7px; margin-bottom: 5px;">
-
-<h2>In this document</h2>
-<ul>
-  <li><a href="#BatteryHistorianCharts">Battery Historian Charts</a></li>
-  <li><a href="#FilteringBatterystats">Filtering batterystats output</a></li>
-</ul>
-
-<h2>You should also read</h2>
-<ul>
-  <li><a href="{@docRoot}tools/performance/batterystats-battery-historian/index.html">
-    Batterystats &amp; Battery Historian Walkthrough</a></li>
-  <li><a href="{@docRoot}tools/performance/systrace/index.html">
-    Systrace Walkthrough</a></li>
-</ul>
-
-</div>
-
-
-  <p id="BatteryHistorianCharts">
-    The Battery Historian chart graphs power-relevant events over time.</p>
-
-  <p>Each row shows a colored bar segment when a system component is active
-   and thus drawing current from the battery. The chart does <i>not</i> show <i>how much</i> battery was used by the
-  component, only that the app was active. Charts are organized by category.</p>
-
-  <div class="figure" style="">
-  <img src="{@docRoot}images/tools/performance/batterystats-battery-historian/gettingstarted_image02.png"
-         alt=""
-         height="" />
-    <p class="img-caption">
-      <strong>Figure 1. </strong>Example of Battery Historian output.
-    </p>
-  </div>
-
-  <h3>Battery usage categories</h3>
-
-  <ul>
-    <li><b>battery_level</b>: When the battery level was recorded and logged.
-    Reported in percent, where 093 is 93%. Provides an overall measure of how fast the battery
-    is draining.</li>
-
-    <li><b>top</b>: The application running at the top; usually, the application that is visible to
-    the user. If you want to measure battery drain while your app is active, make sure
-    it's the top app. If you want to measure battery drain while your app is in
-    the background, make sure it's <i>not</i> the top app.</li>
-
-    <li><b>wifi_running</b>: Shows that the Wi-Fi network connection was active.</li>
-
-    <li><b>screen</b>: Screen is turned on.</li>
-
-    <li><b>phone_in_call</b>: Recorded when the phone is in a call.</li>
-
-    <li><b>wake_lock</b>: App wakes up, grabs a lock, does small work, then goes back to sleep.
-    This is one of the most important pieces of information. Waking up the phone is expensive, so
-    if you see lots of short bars here, that might be a problem.</li>
-
-    <li><b>running</b>: Shows when the CPU is awake. Check whether it is awake and asleep
-      when you expect it to be.</li>
-
-    <li><b>wake_reason</b>: The last thing that caused the kernel to wake up. If
-    it's your app, determine whether it was necessary.</li>
-
-    <li><b>mobile_radio</b>: Shows when the radio was on. Starting the radio is battery expensive.
-    Many narrow bars close to each other can indicate opportunities for
-    batching and other optimizations.</li>
-
-    <li><b>gps</b>: Indicates when the GPS was on. Make sure this is what you expect.</li>
-
-    <li><b>sync:</b> Shows when an app was syncing with a backend. The sync bar also shows which
-    app did the syncing. For users, this can show apps where they might turn syncing off to save
-    battery. Developers should sync as little as possible and only as often as necessary.</li>
-  </ul>
-
-
-  <p class="note"><strong>Note:</strong>
-    Not every chart will show every category.</p>
-
-  <h2 id="FilteringBatterystats">Filtering batterystats output</h2>
-
-  <p>You can gather additional information from the <code>batterystats.txt</code> file
-    where you saved the output from the batterystats command.</p>
-
-  <div class="figure" style="">
-<img src="{@docRoot}images/tools/performance/batterystats-battery-historian/gettingstarted_image03.png"
-         alt=""
-         width="340px" />
-    <p class="img-caption">
-      <strong>Figure 2.</strong>Example of filtered batterystats output.
-    </p>
-  </div>
-
-  <p>Open the file in a text editor and search for:</p>
-
-  <ol>
-    <li><b><code>Battery History</code></b>: A time series of power-relevant events, such as
-    screen, Wi-Fi, and app launch. These are also visible through Battery Historian.</li>
-
-    <li><b><code>Per-PID Stats</code></b>: How long each process ran.</li>
-
-    <li><b><code>Statistics since last charge</code></b>: System-wide statistics, such as
-    cell signal levels and screen brightness. Provides an overall picture of what's happening
-    with the device. This information is especially useful
-    to make sure no external events are affecting your experiment.</li>
-
-    <li><b><code>Estimated power use (mAh)</code></b> by UID and peripheral: This is currently an
-    extremely rough estimate and should not be considered experiment data.</li>
-
-    <li><b><code>Per-app mobile ms per packet</code></b>: Radio-awake-time divided by packets sent.
-    An efficient app will transfer all its traffic in batches, so the lower this number the
-    better.</li>
-
-    <li><b><code>All partial wake locks</code></b>: All app-held wakelocks, by aggregate
-    duration and count.</li>
-  </ol>
diff --git a/docs/html/tools/performance/batterystats-battery-historian/index.jd b/docs/html/tools/performance/batterystats-battery-historian/index.jd
deleted file mode 100644
index 2072df9..0000000
--- a/docs/html/tools/performance/batterystats-battery-historian/index.jd
+++ /dev/null
@@ -1,129 +0,0 @@
-page.title=Batterystats &amp; Battery Historian Walkthrough
-meta.tags="android, performance, profiling, tools, battery, batterystats, historian, batterydrain
-page.tags="android", "performance", "profiling", "tools", "battery", "batterystats", "historian", "batterydrain"
-page.metaDescription=Collect battery usage data from your device and display it graphically in your browser.
-page.image=tools/performance/thumbnails/tools_battery_historian.png
-page.article=true
-
-
-@jd:body
-
-<div id="tb" style="margin-left: 7px; margin-bottom: 5px;">
-
-<h2>You should also read</h2>
-<ul>
-  <li><a href="{@docRoot}tools/performance/batterystats-battery-historian/charts.html">
-    Battery Historian Charts</a></li>
-  <li><a href="{@docRoot}tools/performance/systrace/index.html">
-    Systrace Walkthrough</a></li>
-</ul>
-
-</div>
-
-  <p>This walkthrough shows the basic usage and workflow for the Batterystats tool and the Battery
-  Historian script.</p>
-
-  <p>Batterystats collects battery data from your device, and Battery Historian converts that data
-  into an HTML visualization that you can view in your Browser. Batterystats is part of the Android
-  framework, and Battery Historian is open-sourced and available on GitHub at <a href=
-  "https://github.com/google/battery-historian">https://github.com/google/battery-historian</a>.</p>
-
-  <p>What it's good for:</p>
-
-  <ul>
-    <li>Showing you where and how processes are drawing current from the battery.</li>
-
-    <li>Identifying tasks in your app that could be deferred or even removed to improve battery
-    life.</li>
-  </ul>
-
-  <h2>Prerequisites</h2>
-
-  <ul>
-    <li>A mobile device with <a href=
-    "http://developer.android.com/tools/device.html#developer-device-options">Developer Options</a>
-    enabled running Android 5.0 or higher.</li>
-  </ul>
-
-  <h2>Working with Batterystats &amp; Battery Historian</h2>
-
-  <div class="sidebox-wrapper" style="width:400px;">
-      <div class="sidebox" style="width:350px;">
-        <h2>Summary</h2>
-          <code>
-            <p><b>https://github.com/google/battery-historian</b></p>
-            <p>&gt; adb kill-server</p>
-            <p>&gt; adb devices</p>
-            <p>&gt; adb shell dumpsys batterystats --reset</p>
-            <p>&lt;disconnect and play with app&gt;...&lt;reconnect&gt;</p>
-            <p>&gt; adb devices</p>
-            <p>&gt;adb shell dumpsys batterystats &gt; batterystats.txt</p>
-            <p>&gt; python historian.py batterystats.txt &gt; batterystats.html</p>
-          </code>
-      </div>
-  </div>
-
-  <ol>
-
-    <li>Download the open-source Battery Historion Python script from GitHub (<a href=
-    "https://github.com/google/battery-historian">https://github.com/google/battery-historian</a>).
-    </li>
-
-    <li>Unzip the file to extract the Battery Historian folder. Inside the folder,
-      find the <code>historian.py</code> file
-      and move it to the Desktop or another <em>writable</em> directory.</li>
-
-    <li>Connect your mobile device to your computer.</li>
-
-    <li>On your computer, open a Terminal window.</li>
-
-    <li>Change to the directory where you've saved <code>historian.py</code>,
-      <br>for example:
-      <code>cd ~/Desktop</code></li>
-
-    <li>Shut down your running adb server.
-      <br><code>&gt; adb kill-server</code></li>
-
-    <li>Restart adb and check for connected devices.
-      <br><code>&gt; adb devices</code>
-      <br><img src="{@docRoot}images/tools/performance/batterystats-battery-historian/gettingstarted_image01.png">
-      <br>If you don't see any devices, make sure your phone is connected, and USB Debugging
-      is turned on, and then kill and restart adb.</li>
-
-    <li>Reset battery data gathering.
-      <br><code>&gt; adb shell dumpsys batterystats --reset</code>
-      <p>Resetting erases old battery collection data; otherewise, the output will be huge.</p>
-    </li>
-
-    <li>Disconnect your device from your computer so that you are only drawing current from the
-    device's battery.</li>
-
-    <li>Play with your app for a short time.</li>
-
-    <li>Reconnect your phone.</li>
-
-    <li>Make sure your phone is recognized: <code>&gt; adb devices</code></li>
-
-    <li>Dump all battery data. This can take a while:
-      <br><code>&gt; adb shell dumpsys batterystats &gt; batterystats.txt</code></li>
-
-    <li>Create a HTML version of the data dump for Battery Historian:
-       <br><code>&gt; python historian.py batterystats.txt &gt; batterystats.html</code></li>
-
-    <li>Open the <code>batterystats.htm</code> file in your browser.</li>
-
-    <li>Continue with <a href="{@docRoot}tools/performance/batterystats-battery-historian/charts.html">
-        Battery Historian Charts</a>.
-    </li>
-
-    <div class="figure" style="">
-      <img src="{@docRoot}images/tools/performance/batterystats-battery-historian/gettingstarted_image02.png"
-         alt=""
-      <p class="img-caption">
-        <strong>Figure 1. </strong>Battery Historian output.
-      </p>
-    </div>
-  </ol>
-
-
-
diff --git a/docs/html/tools/performance/comparison.jd b/docs/html/tools/performance/comparison.jd
deleted file mode 100644
index f79e762..0000000
--- a/docs/html/tools/performance/comparison.jd
+++ /dev/null
@@ -1,134 +0,0 @@
-page.title=Memory Profilers
-meta.tags="android, performance, profiling, tools, memory, memoryleaks, garbagecollection"
-page.tags="android", "performance", "profiling", "tools", "memory", "memoryleaks", "garbagecollection"
-page.metaDescription=Heap Viewer, Memory Monitor, and Allocation Tracker are complementary tools that visualize the memory your app uses.
-page.image=tools/performance/thumbnails/tools_memory_monitor.png
-page.article=true
-
-@jd:body
-
-<div id="tb" style="margin-left: 7px; margin-bottom: 5px;">
-
-<h2>In this document</h2>
-<ul>
-  <li><a href="#MemoryMonitor">Memory Monitor</a></li>
-  <li><a href="#HeapViewer">Heap Viewer</a></li>
-  <li><a href="#AllocationTracker">Allocation Tracker</a></li>
-
-</ul>
-
-<h2>You should also read</h2>
-<ul>
-  <li><a href="{@docRoot}tools/performance/memory-monitor/index.html">
-    Memory Monitor Walkthrough</a></li>
-  <li><a href="{@docRoot}tools/performance/heap-viewer/index.html">
-    Heap Viewer Walkthrough</a></li>
-  <li><a href="{@docRoot}tools/performance/allocation-tracker/index.html">
-    Allocation Tracker Walkthrough</a></li>
-</ul>
-
-</div>
-
-  <p>Heap Viewer, Memory Monitor, and Allocation Tracker are complementary tools that visualize the
-  memory your app uses.</p>
-
-  <ol>
-    <li>Use the
-    <a href="{@docRoot}tools/performance/memory-monitor/index.html">
-    Memory Monitor Tool</a> to find out whether undesirable garbage collection (GC) event patterns might
-    be causing your performance problems.</li>
-
-    <li>Run
-    <a href="{@docRoot}tools/performance/heap-viewer/index.html">
-    Heap Viewer</a> to identify object types that get or stay allocated
-    unexpectedely or unecessarily.</li>
-
-    <li>Use
-    <a href="{@docRoot}tools/performance/allocation-tracker/index.html">
-    Allocation Tracker</a> to identify where in your code the problem might be.</li>
-  </ol>
-
-  <h2 id="MemoryMonitor">Memory Monitor</h2>
-
-<div>
-  <div class="figure" style="">
-    <img src="{@docRoot}images/tools/performance/compare_MemoryMonitor.png"
-         alt=""
-         height="" />
-    <p class="img-caption">
-      <strong>Figure 1. </strong>Memory Monitor.
-    </p>
-  </div>
-
-  <ul>
-    <li>Shows available and used memory as they both change over time <i>for your app</i> in a
-    graph, with dips indicating Garbage Collection (GC) events.</li>
-
-    <li>Provides a quick way to test whether app slowness might be related
-    to excessive GC events.</li>
-
-    <li>Provides a quick way to see whether app crashes might be related
-    to running out of memory.</li>
-
-    <li>Runs live on your application and updates about once a second.</li>
-
-    <li>Helps quickly identify the potential of memory leaks.</li>
-
-    <li>Helps identify GC patterns for your application and determine whether
-      they are healthy and what you expect.</li>
-
-    <li>Is easy to use, and it is easy to interpret what you see.</li>
-
-    <li>However, Memory Monitor does not tell you which objects are the cause
-      of your problems, or where in your code it might be.</li>
-  </ul>
-
-    <h2 id="HeapViewer">Heap Viewer</h2>
-
-  <div class="figure" style="">
-    <img src="{@docRoot}images/tools/studio-hprof-viewer.png"
-         alt=""
-         height="" />
-    <p class="img-caption">
-      <strong>Figure 2. </strong>Heap Viewer.
-    </p>
-  </div>
-
-
-  <ul>
-    <li>Shows snapshots of a number of objects allocated by type.</li>
-
-    <li>Samples data every time a garbage collection event occurs
-      naturally or triggered by you.</li>
-
-    <li>Helps identify which object types might be involved in memory leaks.</li>
-
-    <li>However, you have to look for changes over time yourself by tracking what's
-    happening in the graph.</li>
-    <br><br><br><br>
-  </ul>
-
-    <h2 id="AllocationTracker">Allocation Tracker</h2>
-
-  <div class="figure" style="">
-    <img src="{@docRoot}images/tools/studio-allocation-tracker.png"
-         alt=""ge
-         height="" />
-    <p class="img-caption">
-      <strong>Figure 3. </strong>Allocation Tracker.
-    </p>
-  </div>
-
-  <ul>
-    <li>Shows when and where your code allocates object types, their size, allocating thread, and
-    stack traces.</li>
-
-    <li>Helps recognize memory churn through recurring allocation/deallocation patterns.</li>
-
-    <li>Can be used in combination with Heap Viewer to track down memory leaks. For example, if you
-    see a bitmap object resident on the heap, you can find its allocation location with Allocation
-    Tracker.</li>
-
-    <li>However, it takes time and experience to learn to interpret the output from this tool.</li>
-
-  </ul>
diff --git a/docs/html/tools/performance/debug-gpu-overdraw/index.jd b/docs/html/tools/performance/debug-gpu-overdraw/index.jd
deleted file mode 100644
index e6b85fd..0000000
--- a/docs/html/tools/performance/debug-gpu-overdraw/index.jd
+++ /dev/null
@@ -1,156 +0,0 @@
-page.title=Debug GPU Overdraw Walkthrough
-meta.tags="android, performance, profiling, tools, rendering, overdraw"
-page.tags="android", "performance", "profiling", "tools",  "rendering", "overdraw"
-page.metaDescription=Use color-coding to show how many times each pixel is redrawn on the screen to reduce rendering overhead.
-page.image=tools/performance/thumbnails/tools_debug_gpu_overdraw.png
-page.article=true
-
-
-@jd:body
-
-<style>
-  .no-bullet {
-    list-style-type: none;
-  }
-  .padded {
-    padding-left: 10px;
-  }
-</style>
-
-<div id="tb" style="margin-left: 7px; margin-bottom: 5px;">
-
-<h2>In this document</h2>
-<ul>
-  <li><a href="#WhatYouNeed">Prerequisites</a></li>
-  <li><a href="#VisualizingOverdraw">Visualizing Overdraw</a></li>
-</ul>
-
-<h2>You should also read</h2>
-<ul>
-  <li><a href="{@docRoot}tools/performance/profile-gpu-rendering/index.html">
-    Profile GPU Rendering Walkthrough</a></li>
-  <li><a href="{@docRoot}tools/performance/hierarchy-viewer/index.html">
-    Hierarchy Viewer Walkthrough</a></li>
-</ul>
-
-</div>
-
-  <p>This walkthrough shows how to visualize overdraw on your mobile device by color-coding
-  interface elements based on how often they are drawn underneath.</p>
-
-  <p>What it's good for:</p>
-
-  <ul>
-    <li>Showing where an app might be doing more rendering work than necessary.</li>
-
-    <li>Helping you see where you might be able to reduce rendering overhead.</li>
-  </ul>
-
-  <h2 id="WhatYouNeed">Prerequisites</h2>
-
-  <ul>
-    <li>A mobile device with <a href=
-    "http://developer.android.com/tools/device.html#developer-device-options">Developer Options</a>
-    enabled.</li>
-  </ul>
-
-
-  <h2 id="VisualizingOverdraw">Visualizing Overdraw on your Mobile Device</h2>
-
-  <ul class="no-bullet">
-  <!-- this also hides bullet, by default outside box -->
-  <li><div style="overflow:hidden">
-  <ol class="padded">
-
-    <div class="figure" style="">
-      <img
-    src="{@docRoot}images/tools/performance/debug-gpu-overdraw/gettingstarted_image01.png"
-         alt=""
-         width="400px" />
-      <p class="img-caption">
-        <strong>Figure 1. </strong>Steps for turning on Debug GPU Overdraw.
-      </p>
-    </div>
-
-    <li>On your mobile device, go to <b>Settings</b> and tap <b>Developer Options</b>.</li>
-
-    <li>In the <em>Hardware accelerated rendering</em> section,
-      select <b>Debug GPU Overdraw</b>.</li>
-
-    <li>In the <b>Debug GPU overdraw</b> popup, select <b>Show overdraw areas</b>.</li>
- </ol>
-</div></li>
-
-<li><div style="overflow:hidden">
-<hr>
-  <ol class="padded" start="5">
-
-     <div class="figure" style="padding-right:100px">
-      <img
-    src="{@docRoot}images/tools/performance/debug-gpu-overdraw/gettingstarted_image02.png"
-         alt=""
-         width="180px" />
-      <p class="img-caption">
-        <strong>Figure 2. </strong>Example of<br>Debug GPU Overdraw output.
-      </p>
-    </div>
-
-    <li>Don't panic as your screen turns into a delirium of colors.
-      The coloring is provided to help you diagnose your app's display behavior.</li>
-
-  </ol>
-</div></li>
-
-<li><div style="overflow:hidden">
-<hr>
- <ol class="padded" start="6">
-
-     <div class="figure" style="">
-      <img
-    src="{@docRoot}images/tools/performance/debug-gpu-overdraw/gettingstarted_image03.png"
-         alt=""
-         width="300px" />
-      <p class="img-caption">
-        <strong>Figure 3. </strong>Color key for Debug GPU Overdraw output.
-      </p>
-    </div>
-
-    <br><br>
-    <li>The colors are hinting at the amount of overdraw on your screen for each pixel, as
-      follows:
-
-      <ul>
-        <li><b>True color:</b> No overdraw</li>
-        <li><b>Blue:</b> Overdrawn once</li>
-        <li><b>Green:</b> Overdrawn twice</li>
-        <li><b>Pink:</b> Overdrawn three times</li>
-        <li><b>Red:</b> Overdrawn four or more times</li>
-      </ul>
-    </li>
-
-</ol>
-</div></li>
-
-<li><div style="overflow:hidden">
-<hr>
- <ol class="padded" start="7">
-
-    <div class="figure" style="">
-      <img
-    src="{@docRoot}images/tools/performance/debug-gpu-overdraw/gettingstarted_image04.png"
-         alt=""
-         width="300px" />
-      <p class="img-caption">
-        <strong>Figure 4. </strong>Examples of undesirable and desirable
-          <br>Debug GPU Overdraw output.
-      </p>
-    </div>
-
-    <br><br><br>
-    <li>Some overdraw is unavoidable. As you are tuning your app's
-      user interface, the goal is to arrive at a visualization that shows mostly true
-      colors and 1X overdraw in blue.</li>
-
-  </ol>
-</div></li>
-</ul>
diff --git a/docs/html/tools/performance/heap-viewer/index.jd b/docs/html/tools/performance/heap-viewer/index.jd
deleted file mode 100644
index bfcbe1f..0000000
--- a/docs/html/tools/performance/heap-viewer/index.jd
+++ /dev/null
@@ -1,176 +0,0 @@
-page.title=Heap Viewer Walkthrough
-meta.tags="android, performance, profiling, tools, memory, memoryleaks, memoryheap"
-page.tags="android", "performance", "profiling", "tools", "memory", "memoryleaks", "memoryheap"
-page.metaDescription=Report in real-time how many objects of what types and sizes your application is allocating and find memory leaks.
-page.image=tools/performance/thumbnails/tools_heap_viewer.png
-page.article=true
-
-@jd:body
-
-<style>
-  .no-bullet {
-    list-style-type: none;
-  }
-  .padded {
-    padding-left: 10px;
-  }
-</style>
-
-<div id="tb" style="margin-left: 7px; margin-bottom: 5px;">
-
-<h2>In this document</h2>
-<ul>
-  <li><a href="#WhatYouNeed">Prerequisites</a></li>
-  <li><a href="#WorkingWithHeapViewer">Working with Heap Viewer</a></li>
-</ul>
-
-<h2>You should also read</h2>
-<ul>
-  <li><a href="{@docRoot}tools/performance/memory-monitor/index.html">
-    Memory Monitor Walkthrough</a></li>
-  <li><a href="{@docRoot}tools/performance/allocation-tracker/index.html">
-    Allocation Tracker Walkthrough</a></li>
-  <li><a href="{@docRoot}tools/performance/comparison.html">
-    Comparison: Memory Monitor, Heap Viewer, Allocation Tracker</a>
-  <li><a href="{@docRoot}tools/performance/traceview/index.html">
-    Traceview Walkthrough</a></li>
-</ul>
-
-</div>
-
-
-  <p>This walkthrough shows the basic usage and workflow for the Heap Viewer tool. Heap Viewer
-  reports in real-time what <i>types</i> of objects your application has allocated, how many, and
-  their sizes on the heap.</p>
-
-  <p>What it's good for:</p>
-
-  <ul>
-    <li>Getting a sense of how your app allocates and frees memory.</li>
-
-    <li>Identifying memory leaks.</li>
-  </ul>
-
-  <h2 id="WhatYouNeed">Prerequisites</h2>
-
-  <ul>
-    <li>A mobile device running Android 5.0 or higher with <a href=
-    "http://developer.android.com/tools/device.html#developer-device-options">Developer Options</a>
-    enabled.</li>
-
-    <li>Application code. Use your own code, or the <a href=
-    "https://github.com/udacity/Sunshine-Version-2">Sunshine</a> sample app from the <a href=
-    "https://www.udacity.com/course/ud853">Android Fundamentals Udacity course</a>.</li>
-  </ul>
-
-  <h2 id="WorkingWithHeapViewer">Working with Heap Viewer</h2>
-
-  <ul class="no-bullet">
-  <!-- this also hides bullet, by default outside box -->
-  <li><div style="overflow:hidden">
-  <ol class="padded">
-
-    <div class="figure" style="">
-      <img src="{@docRoot}images/tools/performance/heap-viewer/gettingstarted_image01.png"
-         alt=""
-         width="400px" />
-      <p class="img-caption">
-        <strong>Figure 1. </strong>Starting Memory Monitor.
-      </p>
-    </div>
-
-    <li>Connect your mobile device to your computer.</li>
-
-    <li>Open your application in Android Studio, build the source, and run it on your device or
-      emulator.</li>
-
-    <li>Start the Android Device Monitor from Android Studio: <strong>Tools -&gt; Android
-      -> Android Device Monitor</strong>.
-
-      <p>You can also start the <a href="{@docRoot}tools/studio/index.html#mem-cpu">Memory Monitor</a>
-      in Android Studio: Click the <em>Android</em> tab in the lower-left corner of the application
-      window. The CPU and Memory Monitor views appear.</p> </li>
-
-   </ol>
-</div></li>
-
-<li><div style="overflow:hidden">
-<hr>
-  <ol class="padded" start="4">
-
-    <div class="figure" style="">
-      <img src="{@docRoot}images/tools/performance/heap-viewer/gettingstarted_image02.png"
-         alt=""
-         width="400px" />
-      <p class="img-caption">
-        <strong>Figure 2. </strong>Steps for Using Heap Viewer.
-      </p>
-    </div>
-
-    <li>In the device and application drop-downs, select the app you want to monitor.</li>
-
-</ol>
-</div></li>
-
-<li><div style="overflow:hidden">
-<hr>
-  <ol class="padded" start="8">
-
-    <div class="figure" style="">
-      <img src="{@docRoot}images/tools/performance/heap-viewer/gettingstarted_image03.png"
-         alt=""
-         width="300px"  />
-      <p class="img-caption">
-        <strong>Figure 3. </strong>Update Heap button.
-      </p>
-    </div>
-
-    <li>To save a heap dump, click the Dump Java Heap icon. The heap snapshot file
-      with the filename <code>Snapshot-yyyy.mm.dd-hh.mm.ss.hprof</code> appears in the
-      <em>Captures</em> tab.</li>
-
-</ol>
-</div></li>
-
-<li><div style="overflow:hidden">
-<hr>
-  <ol class="padded" start="9">
-
-    <div class="figure" style="">
-      <img src="{@docRoot}images/tools/performance/heap-viewer/gettingstarted_image04.png"
-         alt=""
-         width="400px" />
-      <p class="img-caption">
-        <strong>Figure 4. </strong>Triggering GC (Garbage Collection).
-      </p>
-    </div>
-
-    <li>Note the <em>Heap updates will happen
-      after every GC for this client.</em> message.</li>
-
-    <li>Click the <strong>Initiate CG</strong> icon to
-      trigger a garbage collection event.
-    </li>
-</ol>
-</div></li>
-
-<li><div style="overflow:hidden">
-<hr>
-  <ol class="padded" start="11">
-
-   <div class="figure" style="">
-      <img src="{@docRoot}images/tools/performance/heap-viewer/gettingstarted_image05.png"
-         alt=""
-         width="480px" />
-      <p class="img-caption">
-        <strong>Figure 5. </strong>Example Heap Viewer output.
-      </p>
-    </div>
-
-    <li>Double-click the heap snapshot file to open the heap viewer and see detailed information
-      about the current allocations on the heap.</li>
-
- </ol>
-</div></li>
-
- </ul>
diff --git a/docs/html/tools/performance/hierarchy-viewer/index.jd b/docs/html/tools/performance/hierarchy-viewer/index.jd
deleted file mode 100644
index ebf23e5..0000000
--- a/docs/html/tools/performance/hierarchy-viewer/index.jd
+++ /dev/null
@@ -1,330 +0,0 @@
-page.title=Hierarchy Viewer Walkthrough
-meta.tags="android, performance, profiling, tools, rendering, hierarchyviewer"
-page.tags="android", "performance", "profiling", "tools", "rendering", "hierarchyviewer"
-page.metaDescription=Visualize your app's view hierarchy to help you simplify your layouts.
-page.image=tools/performance/thumbnails/tools_hierarchy_viewer.png
-page.article=true
-
-@jd:body
-
-<style>
-  .no-bullet {
-    list-style-type: none;
-  }
-  .padded {
-    padding-left: 10px;
-  }
-</style>
-
-<div id="tb" style="margin-left: 7px; margin-bottom: 5px;">
-
-<h2>In this document</h2>
-<ul>
-  <li><a href="#WhatYouNeed">Prerequisites</a></li>
-  <li><a href="#WorkingWithHierarchyViewer">Working with Hierarchy Viewer</a></li>
-</ul>
-
-<h2>You should also read</h2>
-<ul>
-  <li><a href="{@docRoot}tools/performance/hierarchy-viewer/setup.html">
-    Device Setup for Hierarchy Viewer</a></li>
-  <li><a href="{@docRoot}tools/performance/hierarchy-viewer/profiling.html">
-    Profiling with Hierarchy Viewer</a></li>
-  <li><a href=
-    "http://developer.android.com/tools/debugging/debugging-ui.html#viewhierarchy">Hierarchy Viewer
-    </a></li>
-  <li><a href="/guide/topics/ui/overview.html#Layout">View Hierarchies</a></li>
-  <li><a href="{@docRoot}tools/performance/importing-legacy-apps.html">
-    Importing Legacy Apps into Android Studio<a></li>
-  <li><a href="{@docRoot}tools/device.html">Using Hardware Devices</a></li>
-</ul>
-
-</div>
-
-  <p>This walkthrough shows the basic usage and workflow for the Hierarchy Viewer tool.</p>
-
-  <p>The Hierarchy Viewer tool visualizes your app's <a href=
-  "http://developer.android.com/guide/topics/ui/overview.html#Layout">view hierarchy</a> and
-  profiles the relative rendering speed for each view.
-
-  <p>What it's good for:</p>
-
-  <ul>
-    <li>Simplifying your view hierarchy to reduce overdraw, and make it easier to manage.</li>
-
-    <li>Finding potential rendering performance bottlenecks related to the structure and shape of your
-    view hierarchy.</li>
-  </ul>
-
-  <h2 id="WhatYouNeed">Prerequisites</h2>
-
-  <ul>
-    <li>A mobile device set up to work with Hierarchy Viewer:</li>
-
-    <li style="list-style: none; display: inline">
-      <ol>
-        <li>You must have <a href=
-        "http://developer.android.com/tools/device.html#developer-device-options">Developer
-        Options</a> enabled on your mobile device. You must use a physical device to get
-        accurate measurements.</li>
-
-        <li>Set an {@code ANDROID_HVPROTO} environment variable on the desktop machine
-          that is connected to your device. For more information, see
-          <a href="{@docRoot}tools/performance/hierarchy-viewer/setup.html">Device Setup for Hierarchy Viewer</a>.</li>
-      </ol>
-    </li>
-
-    <li>Debuggable app code with a view hierarchy. Use your own code, or the code for the <a href=
-    "https://github.com/udacity/Sunshine-Version-2">Sunshine</a> sample app from the <a href=
-    "https://www.udacity.com/course/ud853">Android Fundamentals Udacity course</a>.</li>
-  </ul>
-
-  <h2 id="WorkingWithHierarchyViewer">Working with Hierarchy Viewer</h2>
-
-<ul class="no-bullet">
-<!-- this also hides bullet, by default outside box -->
- <li><div style="overflow:hidden">
-  <ol class="padded">
-
-     <div class="figure" style="">
-      <img src="{@docRoot}images/tools/performance/hierarchy-viewer/gettingstarted_image001.png"
-         alt=""
-         width="400px" />
-      <p class="img-caption">
-        <strong>Figure 1. </strong>Starting Android Device Monitor.
-      </p>
-    </div>
-
-    <li>Connect your mobile device to your computer.</li>
-
-    <li>Open your application in Android Studio, build the source, and run it on your device.</li>
-
-    <li>From Android Studio, start the Android Device Monitor: <b>Tools &gt; Android &gt;
-    Android Device Monitor</b>.</li>
-
-    <li>Allow <b>USB Debugging</b> on your phone (if asked).</li>
-
-</ol>
-</div></li>
-
-<li><div style="overflow:hidden">
-<hr>
-  <ol class="padded" start="6">
-
-    <div class="figure" style="">
-      <img src="{@docRoot}images/tools/performance/hierarchy-viewer/gettingstarted_image005.png"
-         alt=""
-         width="400px" />
-      <p class="img-caption">
-        <strong>Figure 2. </strong>Android Device Monitor.
-      </p>
-    </div>
-
-    <li>Figure 2 illustrates what is initially shown in the Device Monitor tool. This varies
-      depending on your setup.
-      <p>Make sure your device
-      and the package for your application are showing in the Devices (DDMS mode) or Windows
-      (Hierarchy Viewer mode) tab. You can choose <b>Window &gt; Reset Perspective</b> to get
-      back to the default arrangement.</p>
-      <p>If the app does not appear, make sure you
-      followed the <a href="{@docRoot}tools/performance/hierarchy-viewer/setup.html"> device
-      setup instructions</a>, then start over at step 1.</p></li>
-
-</ol>
-</div></li>
-
-<li><div style="overflow:hidden">
-<hr>
-  <ol class="padded" start="7">
-
-    <div class="figure" style="">
-      <img src="{@docRoot}images/tools/performance/hierarchy-viewer/gettingstarted_image002.png"
-         alt=""
-         width="400px" />
-      <p class="img-caption">
-        <strong>Figure 3. </strong>Changing Perspective to Hierarchy Viewer.
-     </p>
-    </div>
-
-    <li>In Android Device Monitor (ADM), in the menu bar, choose <b>Window &gt; Open
-    Perspective</b>, and in the popup click <b>Hierarchy View</b>.<br>
-
-    <p>OR</p>
-    <p> Click the <b>Hierarchy View</b> button if it's already visible.<br>
-    <img src="{@docRoot}images/tools/performance/hierarchy-viewer/gettingstarted_image003.png">
-    </p></li>
-
-</ol>
-</div></li>
-
-<li><div style="overflow:hidden">
-<hr>
-  <ol class="padded" start="9">
-
-    <div class="figure" style="">
-      <img src="{@docRoot}images/tools/performance/hierarchy-viewer/gettingstarted_image006.png"
-         alt=""
-         width="400px" />
-      <p class="img-caption">
-        <strong>Figure 4. </strong>Hierarchy Viewer layout.
-     </p>
-    </div>
-
-    <li>If not already open, the Hierarchy View panes open.<br>
-      The example screen in Figure&nbsp;4 shows an example of these panes.</li>
-
-  </ol>
-</div></li>
-
-<li><div style="overflow:hidden">
-<hr>
-  <ol class="padded" start="10">
-
-    <div class="figure" style="">
-      <img src="{@docRoot}images/tools/performance/hierarchy-viewer/gettingstarted_image004.png"
-         alt=""
-         width="240px" />
-      <p class="img-caption">
-        <strong>Figure 5. </strong>Resetting the Perspective.
-      </p>
-    </div>
-
-    <li>If you see a different window arrangement, in Android Device Manager, use
-    <b>Window &gt; Reset Perspective</b> to return to the default layout for this tutorial.
-
-  </ol>
-</div></li>
-
-<li><div style="overflow:hidden">
-<hr>
-  <ol class="padded" start="11">
-
-    <div class="figure" style="">
-      <img src="{@docRoot}images/tools/performance/hierarchy-viewer/gettingstarted_image007.png"
-         alt=""
-         width="400px" />
-      <p class="img-caption">
-        <strong>Figure 6. </strong>Populated Hierarchy Viewer.
-      </p>
-    </div>
-
-    <li>Double-click your application in the Windows tab. This populates the panes with the
-      view hierarchy of your application.
-      This display is a static representation of the complete view hierarchy defined for the
-      app.</li>
-
-    <li>You can adjust the sizes of the panes and ADM will preserve your
-      arrangement in future sessions.</li>
-
-  </ol>
-</div></li>
-
-<li><div style="overflow:hidden">
-<hr>
-  <ol class="padded" start="13">
-
-    <div class="figure" style="">
-      <img src="{@docRoot}images/tools/performance/hierarchy-viewer/gettingstarted_image008.png"
-         alt=""
-         width="400px" />
-      <p class="img-caption">
-      <strong>Figure 7. </strong>Hierarchy Viewer panes.
-      </p>
-    </div>
-
-    <li>If necessary, click the <b>Layout View</b> tab to hide the Console and show a wireframe of
-    your layout. The outline of the currently selected view is red. Click an outline to select
-    it.</li>
-
-    <li>The rest of the panes:
-
-      <ul>
-        <li>The <b>Tree Overview</b> in the upper right gives you a bird's-eye view of your
-        app's complete <a href=
-        "http://developer.android.com/guide/topics/ui/overview.html#Layout">View</a> <a href=
-        "http://developer.android.com/guide/topics/ui/overview.html#Layout">Hierarchy</a>.</li>
-
-        <li>In the <b>Tree Overview</b>, move the gray viewport rectangle to change what section of
-        your hierarchy shows in the <b>Tree View</b> pane (in the center).</li>
-
-        <li>In the <b>Tree View</b>, you can drag and zoom the tree using your mouse.</li>
-      </ul>
-  </ol>
-</div></li>
-
-<li><div style="overflow:hidden">
-<hr>
-  <ol class="padded" start="15">
-
-    <div class="figure" style="">
-      <img src="{@docRoot}images/tools/performance/hierarchy-viewer/gettingstarted_image009.png"
-         alt=""
-         width="400px" />
-      <p class="img-caption">
-        <strong>Figure 7. </strong>Parts of the View node display.
-      </p>
-    </div>
-
-    <li>Click on a View node to display details. Here is an annotated close-up of a node
-      and its details.</li>
-
-
-  </ol>
-</div></li>
-
-<li><div style="overflow:hidden">
-<hr>
-  <ol class="padded" start="16">
-
-    <div class="figure" style="">
-      <img src="{@docRoot}images/tools/performance/hierarchy-viewer/gettingstarted_image010.png"
-         alt=""
-         width="400px" />
-      <p class="img-caption">
-        <strong>Figure 8. </strong>Location of View Properties tab.
-      </p>
-    </div>
-
-    <li>Click the <b>View Properties</b> tab at the top right (next to the Windows tab) to see
-        properties of the selected View node.</li>
-
-   </ol>
-</div></li>
-
-<li><div style="overflow:hidden">
-<hr>
-  <ol class="padded" start="17">
-
-    <div class="figure" style="">
-      <img src="{@docRoot}images/tools/performance/hierarchy-viewer/gettingstarted_image011.png"
-         alt=""
-         width="400px" />
-      <p class="img-caption">
-        <strong>Figure 9. </strong>Rendering a view in a popup.
-      </p>
-    </div>
-
-    <li>Double-click a View node in the Tree View to render it in a popup window.</li>
-
-  </ol>
-</div></li>
-
-<li><div style="overflow:hidden">
-<hr>
-  <ol class="padded" start="18">
-
-  <div class="figure" style="">
-      <img src="{@docRoot}images/tools/performance/hierarchy-viewer/gettingstarted_image012.png"
-         alt=""
-         width="240px" />
-      <p class="img-caption">
-        <strong>Figure 10. </strong>Node with its type and id.
-      </p>
-    </div>
-
-    <li>Nodes in the Tree View show a Type, which indicates the View class,
-      and an id, which is the view identifier in your code.</li>
-
-  </ol>
-</div></li>
-</ul>
diff --git a/docs/html/tools/performance/hierarchy-viewer/profiling.jd b/docs/html/tools/performance/hierarchy-viewer/profiling.jd
deleted file mode 100644
index b505228..0000000
--- a/docs/html/tools/performance/hierarchy-viewer/profiling.jd
+++ /dev/null
@@ -1,169 +0,0 @@
-page.title=Profiling with Hierarchy Viewer
-meta.tags="android, performance, profiling, tools, rendering, hierarchyviewer
-page.tags="android", "performance", "profiling", "tools", "rendering", "hierarchyviewer"
-page.metaDescription=Profile the relative rendering speed for each view.
-page.image=tools/performance/thumbnails/tools_hierarchy_viewer_profiling.png
-page.article=true
-
-@jd:body
-
-<style>
-  .no-bullet {
-    list-style-type: none;
-  }
-  .padded {
-    padding-left: 10px;
-  }
-</style>
-
-<div id="tb" style="margin-left: 7px; margin-bottom: 5px;">
-
-<h2>In this document</h2>
-<ul>
-  <li><a href="#WhatYouNeed">Prerequisites</a></li>
-  <li><a href="#ProfilingWithHierarchyViewer">Profiling with Hierarchy Viewer</a></li>
-  <li><a href="#InterpretingResults">Interpreting Profiling Results</a></li>
-
-</ul>
-</div>
-
-<p>This walkthrough shows you how to profile your app's view hiearchy with
-  Hierarchy Viewer, and how to interpret the results.</p>
-
-<h2 id="WhatYouNeed">Prerequisites</h2>
-
-<ul>
-  <li><a href="{@docRoot}tools/performance/hierarchy-viewer/setup.html">
-    Device Setup for Hierarchy Viewer</a></li>
-  <li><a href="{@docRoot}tools/performance/hierarchy-viewer/index.html">
-    Hierarchy Viewer Walkthrough</a></li>
-</ul>
-
-<h2 id="ProfilingWithHierarchyViewer">Profiling Steps</h2>
-
-<ul class="no-bullet">
-<!-- this also hides bullet, by default outside box -->
- <li><div style="overflow:hidden">
-
-  <ol class="padded">
-
-  <div class="figure" style="">
-<img src="{@docRoot}images/tools/performance/hierarchy-viewer/gettingstarted_image014.png"
-         alt=""
-         width="400px" />
-      <p class="img-caption">
-        <strong>Figure 1. </strong>View hierarchy after profiling.
-      </p>
-    </div>
-
-    <li>Start Hierarchy Viewer for your app.</li>
-
-    <li>In the <b>Tree View</b> or the <b>Layout View</b>, click on the View node whose
-      children you want to profile.</li>
-
-    <li>To start profiling, click the small button with three circles
-<img src="{@docRoot}images/tools/performance/hierarchy-viewer/gettingstarted_image013.png">
-      at the top of the Tree View.
-
-    </li>
-
-    <li>For large view hierarchies, profiling may take a few seconds.</li>
-
-    <li>Each view in your subtree gets three dots, which can be green, yellow, or red.
-
-      <ul>
-        <li>The left dot represents the Draw Process of the rendering pipeline.</li>
-        <li>The middle dot represents the Layout Phase.</li>
-        <li>The right dot represents the Execute Phase.</li>
-      </ul>
-    </li>
-
-</ol></div>
-
-</li>
-
-<li><div style="overflow:hidden">
-<hr>
-  <ol class="padded" start="5">
-
-    <div class="figure" style="">
-<img src="{@docRoot}images/tools/performance/hierarchy-viewer/gettingstarted_image015.png"
-         alt=""
-         width="240px" />
-      <p class="img-caption">
-        <strong>Figure 2. </strong>How the colored dots relate<br>to the rendering pipeline.
-      </p>
-    </div>
-
-    <li>These dots roughly correspond to the Measure,
-     Layout, and Draw
-      phases of the processing pipeline.</li>
-
-    <li>The color of the dots indicates the relative performance
-      of this node in respect to all other profiled nodes.
-
-      <ul>
-        <li><strong>Green</strong> means the view renders faster than at least
-          half of the other views.</li>
-
-        <li><strong>Yellow</strong> means the view renders faster than the bottom
-          half of the other views.</li>
-
-        <li><strong>Red</strong> means the view is among the slowest
-         half of views.</li>
-      </ul>
-    </li>
-
-    </ol>
-</div></li>
-</ul>
-
-  <h2 id="InterpretingResults">Interpreting Hierarchy Viewer Profiling Results</h2>
-
-    <p>Hierarchy Viewer measures the <em>relative performance</em> of a
-      node</b>, so there are always red nodes in a profile, and it
-      doesn't necessarily mean that view is too slow for the users of
-      your app.</p>
-
-    <p>Hierarchy Viewer software rasterizes your Activity to acquire the timing
-      information. Rasterization is the process of taking a high-level primitive, such as a
-      circle or a vector font, and turning it into pixels on the screen. Typically,
-      rasterization is done by the GPU on your device, but in the case of
-      software rasterization, rendering is done on the CPU with
-      ordinary software. This means that the absolute
-      reported timings are correct relative to each other, but are bloated and vary
-      depending on the overall and changing CPU workload on your device and PC. Profile
-      several times to get a feel for the average measurements.</p>
-
-    <p>The following are guidelines for interpreting Hierarchy Viewer profiling output.</p>
-
-    <p>A red node is a potential problem in any situation where your app has
-      unexpectedly slow performance. In a relative setting, there is always a
-      slowest node; make sure it is the node you expect.
-      The following examples illustrate how to interpret red dots.</p>
-
-      <ul>
-        <li>Look for red dots in leaf nodes or view groups with only a few children. This
-          might point to a problem. Your app may not be slow, or it may not be slow on your
-          device, but you need to be aware of why that dot is red.
-          <a href="{@docRoot}tools/performance/systrace/index.html"> Systrace</a> or
-          <a href="{@docRoot}tools/performance/traceview/index.html"> Traceview</a>
-          can give you additional information. </li>
-
-        <li>If you have a view group with many children and a red measure phase, take a
-          look at the children to see how they are performing.</li>
-
-        <li>A view with yellow or even red dots might not be performing slowly on the
-          device. That's where the actual numbers are helpful.
-          <a href="{@docRoot}tools/performance/systrace/index.html"> Systrace</a> or
-          <a href="{@docRoot}tools/performance/traceview/index.html"> Traceview</a>
-          can give you additional information.</li>
-
-        <li>If the root view of a hierarchy has a red measure phase, red layout phase, and
-          yellow draw phase, this is somewhat typical, because it's the
-          parent of all the other views.</li>
-
-        <li>If a leaf node in a tree with 20+ views has a red draw phase, this <i>is</i> a
-          problem. Check your OnDraw method for code that shouldn't be
-          there.</li>
-       </ul>
diff --git a/docs/html/tools/performance/hierarchy-viewer/setup.jd b/docs/html/tools/performance/hierarchy-viewer/setup.jd
deleted file mode 100644
index aaac1ca..0000000
--- a/docs/html/tools/performance/hierarchy-viewer/setup.jd
+++ /dev/null
@@ -1,89 +0,0 @@
-page.title=Device Setup for Hierarchy Viewer
-meta.tags="android, performance, profiling, tools, rendering, hierarchyviewer"
-page.tags="android", "performance", "profiling", "tools", "rendering", "hierarchyviewer"
-page.metaDescription=Set up your mobile device to work with Hierarchy Viewer.
-page.image=tools/performance/thumbnails/tools_hierarchy_viewer.png
-page.article=true
-
-@jd:body
-
-<div id="tb" style="margin-left: 7px; margin-bottom: 5px;">
-
-<h2>You should also read</h2>
-<ul>
-  <li><a href="{@docRoot}tools/performance/hierarchy-viewer/index.html">
-    Hierarchy Viewer Walkthrough</a></li>
-  <li><a href="{@docRoot}tools/performance/hierarchy-viewer/profiling.html">
-    Profiling with Hierarchy Viewer</a></li>
-</ul>
-
-</div>
-
-    <p>To run Hierarchy Viewer, you must enable Developer Options on your mobile device and perform
-      some setup on your computer.</p>
-
-    <h2>Configuring Devices</h2>
-
-    <ol>
-      <li><p>Enable <a href=
-    "http://developer.android.com/tools/device.html#developer-device-options">Developer Options</a>
-    on your mobile device.</p></li>
-
-    <li>Depending on the type of device you have, do one of the following:
-      <ul>
-        <li>If you have a locked device running Android 4.0 or lower, follow the instructions
-          for <a href=
-               "https://github.com/romainguy/ViewServer">installing and configuring ViewServer</a>.
-        </li>
-        <li>If you have an unlocked device running Android 4.0 or lower,
-          no further configuration is needed.</li>
-        <li>If you have a device running Android 4.1 or higher, you must set an environment
-          variable on your development machine. For more information,
-          see <a href="#hvproto-variable">Setting the ANDROID_HVPROTO variable</a>
-      </ul>
-    </li>
-    </ol>
-
-
-    <h2 id="hvproto-variable">Setting the ANDROID_HVPROTO variable</h2>
-
-    <h3>Windows</h3>
-
-    <ol>
-      <li>Click <b>My Computer &gt; Property &gt; Advanced &gt; Environment Variables.</b></li>
-
-      <li>Click <b>New.</b></li>
-
-      <li>In variables name put: <code>ANDROID_HVPROTO</code></li>
-
-      <li>In variable value put: <code>ddm</code></li>
-
-      <li>Click <b>OK</b><./li>
-    </ol>
-
-    <h3>Mac</h3>
-
-    <ol>
-      <li>Edit <code>~/.bash_profile</code></li>
-
-      <li>Add:
-        <br><code>#Hierarchy Viewer Variable
-        <br>export ANDROID_HVPROTO=ddm</code>
-      </li>
-
-      <li><code>source ~/.bash_profile</code></li>
-    </ol>
-
-    <h3>Linux</h3>
-
-    <ol>
-      <li>Edit <code>~/.bash_profile</code></li>
-
-      <li>Add:
-
-        <br><code>#Hierarchy Viewer Variable
-        <br>export ANDROID_HVPROTO=ddm</code>
-      </li>
-
-    <li><code>source ~/.bash_profile</code></li>
-  </ol>
diff --git a/docs/html/tools/performance/importing-legacy-apps.jd b/docs/html/tools/performance/importing-legacy-apps.jd
deleted file mode 100644
index cee3519..0000000
--- a/docs/html/tools/performance/importing-legacy-apps.jd
+++ /dev/null
@@ -1,149 +0,0 @@
-page.title=Importing Legacy Apps into Android Studio
-meta.tags="android, performance, profiling, tools"
-page.tags="android", "performance", "profiling", "tools"
-page.metaDescription=Required changes when importing legacy apps into Android Studio.
-page.article=true
-
-@jd:body
-
-<div id="tb" style="margin-left: 7px; margin-bottom: 5px;">
-
-<h2>In this document</h2>
-<ul>
-  <li><a href="#WhatYouNeed">Prerequisites</a></li>
-  <li><a href="#StepsForImporting">Steps for Importing</a></li>
-</ul>
-
-<h2>You should also read</h2>
-<ul>
-  <li><a href="/tools/device.html">Using Hardware Devices</a></li>
-  <li><a href="/tools/help/index.html">Tools</a></li>
-</ul>
-
-</div>
-
-
-  <p>Importing some pre-Android-1.0 projects into Android 1.0 or newer can trigger a series of
-  errors. This document shows you how to resolve them, using a version of the Sunshine app used in
-  the <a href="https://www.udacity.com/course/ud853">Android Fundamentals Udacity Course</a> as an
-  example.</p>
-
-  <p><b>CAVEAT:</b> As with all documentation of this kind, the details are likely to vary for each
-  application and each update of Android Studio.</p>
-
-  <h2 id="WhatYouNeed">Prerequisites</h2>
-
-  <ul>
-    <li>The latest version of <a href="http://developer.android.com/sdk/index.html">Android
-    Studio</a> (this document uses version 1.1).</li>
-
-    <li>It helps to know how to <a href="https://developer.android.com/training/index.html">build
-    and run apps from Android Studio</a> on your device.</li>
-
-    <li>To use Sunshine, you need to download code from <a href=
-    "https://github.com/">github.com</a>. More info at <a href=
-    "https://help.github.com/">help.github.com</a>.</li>
-  </ul>
-
-  <h2 id="StepsForImporting">Steps for Importing Sunshine into Android Studio 1.1.0</h2>
-
-  <ol>
-    <li>Download Sunshine ZIP from GitHub: <a href=
-    "https://github.com/udacity/sunshine/tree/6.10-update-map-intent">https://github.com/udacity/sunshine/tree/6.10-update-map-intent</a>.
-    (If you are having any problems with Android Studio or the app, use the following version, or
-    your own app, to follow along with the example.<a href=
-    "https://github.com/udacity/sunshine/tree/3.13-add-share-action-provider">https://github.com/udacity/sunshine/tree/3.13-add-share-action-provider</a>)
-
-    <li>Unzip the application to extract the code folder.</li>
-
-    <li>Start Android Studio. (This works best if you close all projects, then restart.)</li>
-
-    <li>Click <b>Import</b> <b>project (Eclipse ADT, Gradle, etc.)</b>.
-      <br><img src="{@docRoot}images/tools/performance/import_image001.png">
-    </li>
-
-    <li>In the popup, find and select the Sunshine-6-10-updated-map-intent folder and click
-      <b>OK</b>.
-      <br><img src="{@docRoot}images/tools/performance/import_image002.png">
-    </li>
-
-    <li>If prompted, choose a destination folder for your project. If prompted to choose a build
-    system, choose Gradle. (These prompts vary, depending on your project and Android Studio
-    version.) If you need more guidance, see this <a href=
-    "http://www.lynda.com/articles/eclipse-into-android-studio">Lynda tutorial</a>.</li>
-
-    <li>Wait for the import to complete. If you see no errors, you are now ready to work with your
-    app.
-
-    <p><b>If you get a Gradle error:</b></p>
-
-    <li>If you get a Gradle error, you have some extra work to do.(Because the Import
-    didn&#40t finish, at this point, you may only see the <b>Gradle
-    Scripts</b> directory in your Project view.)</li>
-
-    <li>You may see the link <b>Install missing platform(s) and sync
-    project</b>, or a link to install missing build tools.
-    Click whatever link and
-    proceed.</li>
-
-    <li>The next time through, your build will fail with:
-      <br><img src="{@docRoot}images/tools/performance/import_image003.png">
-    </li>
-
-    <li>Click the <b>Fix plugin version and re-import project</b> link
-    in the error message. This will rebuild the app and present you with new of errors.
-      <br><img src="{@docRoot}images/tools/performance/import_image004.png">
-    </li>
-
-    <li>Click the <b>Gradle Settings</b> link in the error message.</li>
-
-    <li>Check the <b>Use auto-import</b> and click <b>OK</b>.
-      <br><img src="{@docRoot}images/tools/performance/import_image005.png">
-    </li>
-
-    <li>Expand the project hierarchy and find the <b>build.gradle file</b>.The file you are looking
-      for is not the one showing at the top level, but the one inside <b>Sunshine</b> <b>&gt;</b>
-      <b>app &gt; build.gradle</b>, as shown below.
-      <br><img src="{@docRoot}images/tools/performance/import_image006.png">
-   </li>
-
-    <li>Double-click the <code>build.gradle</code> file.</li>
-
-    <li>Make the following changes to the file:</li>
-      <ul>
-        <li>Set <code>compileSdkVersion 21</code></li>
-
-        <li>Set <code>targetSdkVersion 21</code></li>
-
-        <li>Replace <code>runProguard</code> with <code>minifyEnabled</code></li>
-      </ul>
-
-      <p>Your file should look like this: </p>
-        <img src="{@docRoot}images/tools/performance/import_image007.png">
-    </li>
-
-    <li>Save (Ctrl-S).</li>
-
-  <p>For the following two messages (Steps 18/19), what you see might vary. You might see either
-  message or both messages in sequence. Click the appropriate links to continue until the Language
-  Level Changed dialog opens.</p>
-
-    <li>In the code view bar, click the <b>Try again</b> link.
-      <br><img src="{@docRoot}images/tools/performance/import_image008.png">
-    </li>
-
-    <li>If you see these warnings, click the <b>Sync now</b> link.
-      <br><img src="{@docRoot}images/tools/performance/import_image009.png">
-    </li>
-
-    <li>In the Language Level Changed dialog, click <b>Yes</b>. And if you get the Gradle Running
-      dialog, <b>Yes</b> again.
-      <br><img src="{@docRoot}images/tools/performance/import_image010.png">
-    </li>
-
-    <li>After the project reloads, run the app on your device. (If it crashes the first time, try
-    again, and it will run.)
-    <br><img src="{@docRoot}images/tools/performance/import_image011.png">
-    </li>
-  </ol>
-
diff --git a/docs/html/tools/performance/index.jd b/docs/html/tools/performance/index.jd
deleted file mode 100644
index fa5af86..0000000
--- a/docs/html/tools/performance/index.jd
+++ /dev/null
@@ -1,73 +0,0 @@
-page.title=Performance Profiling Tools
-meta.tags="android, develop, performance, profiling, tools, gather"
-page.tags="android", "develop", "performance", "profiling", "tools" "gather"
-page.metaDescription=Android Studio profiling tools for evaluating your app's performance.
-page.article=true
-
-@jd:body
-
-  <p>Putting pixels on the screen involves four primary pieces of hardware.
-  To greatly simplify, the CPU computes display lists, the GPU renders images to
-  the display, the memory stores images and data, and the battery provides
-  electrical power. Each of these pieces of hardware has constraints; pushing
-  or exceeding those constraints causes your app to be slow, have
-  bad display performance, or exhaust the battery.
-
-  <p>To discover what causes your specific performance problems, you need to
-  take a look under the hood, use tools to collect data about your app's
-  execution behavior, surface that data as lists and
-  graphics, understand and analyze what you see, and improve your code.</p>
-
-  <p>Android Studio and your device provide profiling tools to record and
-  visualize the rendering, compute, memory, and battery performance of your
-  app.</p>
-
-<h2 id="rendering-tools">Rendering Analysis Tools</h2>
-
-<p>Visualize the rendering behavior and performance of your app.</p>
-
-<div class="dynamic-grid">
-  <div class="resource-widget resource-flow-layout landing col-12"
-    data-query="collection:tools/performance/rendering"
-    data-cardSizes="9x3"
-    data-maxResults="6">
-  </div>
-</div>
-
-<h2 id="memory-tools">Memory Analysis Tools</h2>
-
-<p>Visualize the memory behavior and performance of your app.</p>
-
-<div class="dynamic-grid">
-  <div class="resource-widget resource-flow-layout landing col-12"
-    data-query="collection:tools/performance/memory"
-    data-cardSizes="9x3"
-    data-maxResults="6">
-  </div>
-</div>
-
-<h2 id="cpu-tools">Compute Analysis Tools</h2>
-
-<p>Visualize the CPU behavior and performance of your app.</p>
-
-<div class="dynamic-grid">
-  <div class="resource-widget resource-flow-layout landing col-12"
-    data-query="collection:tools/performance/cpu"
-    data-cardSizes="9x3"
-    data-maxResults="4">
-  </div>
-</div>
-
-<h2 id="battery-tools">Battery Analysis Tools</h2>
-
-<p>Visualize the battery behavior and performance of your app.</p>
-
-<div class="dynamic-grid">
-  <div class="resource-widget resource-flow-layout landing col-12"
-    data-query="collection:tools/performance/battery"
-    data-cardSizes="9x3"
-    data-maxResults="4">
-  </div>
-</div>
-
-
diff --git a/docs/html/tools/performance/memory-monitor/index.jd b/docs/html/tools/performance/memory-monitor/index.jd
deleted file mode 100644
index 5b9d0c8..0000000
--- a/docs/html/tools/performance/memory-monitor/index.jd
+++ /dev/null
@@ -1,192 +0,0 @@
-page.title=Memory Monitor Walkthrough
-meta.tags="android, performance, profiling, tools, memory, memoryleaks, garbagecollection, memorymonitor"
-page.tags="android", "performance", "profiling", "tools", "memory", "memoryleaks", "garbagecollection", "memorymonitor"
-page.metaDescription=Graph memory usage and garbage collection events for your app in real-time.
-page.image=tools/performance/thumbnails/tools_memory_monitor.png
-page.article=true
-
-@jd:body
-
-<style>
-  .no-bullet {
-    list-style-type: none;
-  }
-  .padded {
-    padding-left: 10px;
-  }
-</style>
-
-<div id="tb" style="margin-left: 7px; margin-bottom: 5px;">
-
-<h2>In this document</h2>
-<ul>
-  <li><a href="#WhatYouNeed">Prerequisites</a></li>
-  <li><a href="#WorkingWithMemoryMonitor">Working with Memory Monitor</a></li>
-</ul>
-
-<h2>You should also read</h2>
-<ul>
-  <li><a href="{@docRoot}tools/performance/heap-viewer/index.html">
-    Heap Viewer Walkthrough</a></li>
-  <li><a href="{@docRoot}tools/performance/allocation-tracker/index.html">
-    Allocation Tracker Walkthrough</a></li>
-  <li><a href="{@docRoot}tools/performance/comparison.html">
-    Comparison: Memory Monitor, Heap Viewer, Allocation Tracker</a>
-  <li><a href="{@docRoot}tools/performance/traceview/index.html">
-    Traceview Walkthrough</a></li>
-</ul>
-
-</div>
-
-
-  <p>This walkthrough shows the basic usage and workflow for the Memory Monitor tool in Android
-  Studio. Memory Monitor reports in real-time how your app allocates memory.</p>
-
-  <p>What it's good for:</p>
-
-  <ul>
-    <li>Showing available and used memory in a graph, and garbage collection events over time.</li>
-
-    <li>Quickly testing whether app slowness might be related
-    to excessive garbage collection events.</li>
-
-    <li>Quickly testing whether app crashes may be related to running out of
-    memory.</li>
-  </ul>
-
-  <h2 id="WhatYouNeed">Prerequisites</h2>
-
-  <ul>
-    <li>A mobile device with <a href=
-    "http://developer.android.com/tools/device.html#developer-device-options">Developer Options</a>
-    enabled.</li>
-
-    <li>An Application with USB Debugging enabled. Use your own, or the <a href=
-    "https://github.com/udacity/Sunshine-Version-2">Sunshine</a> sample app from the <a href=
-    "https://www.udacity.com/course/ud853">Android Fundamentals Udacity course</a>.</li>
-  </ul>
-
-  <h2 id="WorkingWithMemoryMonitor">Working with Memory Monitor</h2>
-
- <ul class="no-bullet">
-<!-- this also hides bullet, by default outside box -->
- <li><div style="overflow:hidden">
-  <ol class="padded">
-
-    <div class="figure" style="">
-  <img src="{@docRoot}images/tools/performance/memory-monitor/gettingstarted_image001.png"
-         alt=""
-         width="300px" />
-      <p class="img-caption">
-        <strong>Figure 1. </strong>Enable ADB Integration.
-      </p>
-    </div>
-
-    <li>If you're using a mobile device, connect it to your computer.</li>
-
-    <li>Open your application in Android Studio, build the source,
-      and run it on your device or emulator.</li>
-
-    <li>In Android Studio, choose <strong>Tools &gt; Android &gt; Enable ADB Integration</strong>.
-
- </ol>
-</div></li>
-
-<li><div style="overflow:hidden">
-<hr>
-  <ol class="padded" start="4">
-
-    <div class="figure" style="">
-  <img src="{@docRoot}images/tools/performance/memory-monitor/gettingstarted_image001b.png"
-         alt=""
-         width="240px" />
-      <p class="img-caption">
-        <strong>Figure 2. </strong>The Android Monitor tab.
-      </p>
-    </div>
-
-    <li>Click the <strong>Android Monitor</strong> tab at the bottom of the runtime window.</li>
-
-    <li>Click the <strong>Memory</strong> tab to show the Memory Monitor tool.</li>
-
- </ol>
-</div></li>
-
-<li><div style="overflow:hidden">
-<hr>
-  <ol class="padded" start="6">
-
-    <div class="figure" style="">
-  <img src="/images/tools/performance/memory-monitor/gettingstarted_image002.png"
-         alt=""
-         width="400px" />
-      <p class="img-caption">
-        <strong>Figure 3. </strong>The Memory Monitor pane.
-      </p>
-    </div>
-
-    <li>Choose your device from the drop-down menu at the top left of the pane.
-    </li>
-
-    <li>Choose the Activity to monitor from the drop-down menu at the top right of the pane.
-    </li>
-
- </ol>
-</div></li>
-
-<li><div style="overflow:hidden">
-<hr>
-  <ol class="padded" start="8">
-
-    <div class="figure" style="">
-  <img src="{@docRoot}images/tools/performance/memory-monitor/gettingstarted_image003.png"
-         alt=""
-         width="400px" />
-      <p class="img-caption">
-        <strong>Figure 4. </strong>Allocated and free memory in Memory Monitor.
-      </p>
-    </div>
-
-    <li>Once Memory Monitor starts tracking your device, a stacked graph appears,
-      tracking memory usage over time.
-
-      <p>Dark blue: Amount of memory that your app
-      is currently using.</p>
-
-      <p>Light blue: Available, unallocated memory.</p>
-    </li>
-
-    <li>Over time, this graph updates, showing changes in memory usage.</li>
-
-    <li>As your app allocates and frees memory, the allocated amount shown in the
-      graph changes.</li>
-
-    <li>When you see the allocated memory drop by a large amount, a garbage
-      collection (GC) event has occurred.</li>
-
- </ol>
-</div></li>
-
-<li><div style="overflow:hidden">
-<hr>
-  <ol class="padded" start="12">
-
-    <div class="figure" style="">
-  <img src="{@docRoot}images/tools/performance/memory-monitor/gettingstarted_image005.png"
-         alt=""
-         width="400px" />
-      <p class="img-caption">
-        <strong>Figure 5. </strong>Forcing a GC (Garbage Collection) event.
-      </p>
-    </div>
-
-    <li>You can force a garbage collection event by clicking on the garbage truck
-      icon
-<img src="{@docRoot}images/tools/performance/memory-monitor/gettingstarted_image004.png">.
-    </li>
-
- </ol>
-</div></li>
-</ul>
-
-
diff --git a/docs/html/tools/performance/profile-gpu-rendering/index.jd b/docs/html/tools/performance/profile-gpu-rendering/index.jd
deleted file mode 100644
index 5d22e8c..0000000
--- a/docs/html/tools/performance/profile-gpu-rendering/index.jd
+++ /dev/null
@@ -1,181 +0,0 @@
-page.title=Profiling GPU Rendering Walkthrough
-meta.tags="android, performance, profiling, tools, rendering, gpu"
-page.tags="android", "performance", "profiling", "tools", "rendering", "gpu"
-page.metaDescription=Overlay a graph on your device, showing how long it takes to render UI elements relative to the 16-ms-per-frame benchmark.
-page.image=tools/performance/thumbnails/tools_profile_gpu_rendering.png
-page.article=true
-
-@jd:body
-
-<style>
-  .no-bullet {
-    list-style-type: none;
-  }
-  .padded {
-    padding-left: 10px;
-  }
-</style>
-
-<div id="tb" style="margin-left: 7px; margin-bottom: 5px;">
-
-<h2>In this document</h2>
-<ul>
-  <li><a href="#WhatYouNeed">Prerequisites</a></li>
-  <li><a href="#ProfileGPURendering">Profile GPU Rendering</a></li>
-</ul>
-
-<h2>You should also read</h2>
-<ul>
-  <li><a href="{@docRoot}tools/performance/debug-gpu-overdraw/index.html">
-    Debug GPU Overdraw Walkthrough</a></li>
-  <li><a href="{@docRoot}tools/performance/hierarchy-viewer/index.html">
-    Hierarchy Viewer Walkthrough</a></li>
-</ul>
-
-</div>
-
-  <p>This walkthrough shows how to use Profile GPU Rendering on your mobile device.</p>
-
-  <p>Profile GPU Rendering gives you a quick visual representation of how much time it takes to
-  render the frames of a UI window relative to the 16-ms-per-frame benchmark.</p>
-
-  <p>What it's good for:</p>
-
-  <ul>
-    <li>Quickly seeing how a UI window performs against the 16-ms-per-frame target.</li>
-
-    <li>Identifying whether any part of the rendering pipeline stands out in using processing
-    time.</li>
-
-    <li>Looking for spikes in frame rendering time associated with user or program actions.</li>
-  </ul>
-
-  <h2 id="WhatYouNeed">Prerequisites</h2>
-
-  <ul>
-    <li>A mobile device running at least Android 4.1 with <a href=
-    "http://developer.android.com/tools/device.html#developer-device-options">Developer Options</a>
-    enabled.</li>
-  </ul>
-
-<h2 id="ProfileGPURendering">Working with Profile GPU Rendering</h2>
-
-<ul class="no-bullet">
-<!-- this also hides bullet, by default outside box -->
- <li><div style="overflow:hidden">
-  <ol class="padded">
-
-  <div class="figure" style="">
-      <img
-src="{@docRoot}images/tools/performance/profile-gpu-rendering/gettingstarted_image001.png"
-         alt=""
-         width="400px" />
-      <p class="img-caption">
-        <strong>Figure 1. </strong>Turning on Profile GPU Rendering.
-      </p>
-    </div>
-
-    <li>On your mobile device, go to <b>Settings &gt;</b> <b>Developer Options</b>.</li>
-
-    <li>In the <em>Monitoring</em> section, select <b>Profile GPU Rendering</b>.</li>
-
-    <li>In the Profile GPU Rendering popup, choose <b>On screen as bars</b> to overlay the graphs
-    on the screen of your mobile device.</li>
-
-    <li>Go to the app that you want to profile.</li>
-
-</ol>
-</div></li>
-
-<li><div style="overflow:hidden">
-<hr>
-
-  <div class="figure" style="">
-    <img
-src="{@docRoot}images/tools/performance/profile-gpu-rendering/gettingstarted_image002.png"
-         alt=""
-         width="400px" />
-    <p class="img-caption">
-      <strong>Figure 2. </strong>Screen when Profile GPU Rendering is on.
-    </p>
-  </div>
-
-  <h3>What you see:</h3>
-
-    <ul>
-      <li>For each visible application, the tool displays a graph.</li>
-
-      <li>The horizontal axis shows time elapsing, and the vertical axis time per frame in
-        milliseconds.</li>
-
-      <li>As you interact with your application, vertical bars show up on your screen, appearing
-        from left to right, graphing frame performance over time.</li>
-
-      <li>Each vertical bar represents one frame of rendering.
-        The taller the bar, the longer it took to render.</li>
-
-      <li>The green line marks the 16 millisecond target. Every time a frame crosses the green line,
-        your app is missing a frame, and your users may see this as stuttering images.
-    </ul>
-
-</div></li>
-
-<li style="list-style-type:none;><!-- fix issue with visible disc -->
-<div style="overflow:hidden">
-<hr>
-
-  <h3>The Profile GPU Rendering Graph</h3>
-
-    <img
-src="{@docRoot}images/tools/performance/profile-gpu-rendering/gettingstarted_image003.png"
-         alt=""
-         height="" />
-    <p class="img-caption">
-      <strong>Figure 3. </strong>Enlarged Annotated Profile GPU Rendering graph.
-    </p>
-
-  <p>In this enlarged image of the Profile GPU Rending graph you can see the colored sections
-    of the graph, and what phase of the rendering pipeline each color represents.</p>
-
-  <ul>
-    <li>The <b>green line</b> represents 16 milliseconds. To achieve 60 frames per second,
-      the vertical bar for each frame needs
-      to stay below this 16 ms mark. Any time a bar pushes above this line, there may be pauses in
-      the animations.</li>
-
-    <li>Each bar has a blue, purple (only for Android version 4.0 and higher),
-      red, and orange component.</p>
-
-    <li>The <b>blue</b> section of the bar represents the time used to create and update the
-      View's display lists. If this part of the bar is tall, there may be a
-      lot of custom view drawing, or a lot of work in onDraw methods.</li>
-
-    <li>Android 4.0 and higher: The <b>purple</b> section of the bar represents the time spent
-      transferring resources to the render thread.</li>
-
-    <li>The <b>red</b> section of the bar represents the time spent by
-      Android's 2D renderer issuing commands to OpenGL to draw and redraw
-      display lists. The height of this bar is directly proportional to the sum of the time it takes each
-      display list to execute&mdash;more display lists equals a taller red bar.</li>
-
-    <li>The <b>orange</b> section of the bar represents the time the CPU is waiting for the GPU to
-      finish its work. If this bar gets tall, it means the app is doing too much work on the GPU.
-    </li>
-  </ul>
-
-  <p class="note"><strong>Note:</strong>
-    While this tool is named Profile GPU Rendering, all monitored processes actually
-    occur in the CPU. Rendering happens by submitting commands to the GPU, and the GPU renders the
-    screen asynchronously. In certain situations, the GPU can have too much work to do,
-    and your CPU will have to wait before it can submit new commands.
-    When this happens, you'll see spikes in the Process (orange bar) and Execute (red bar)
-    stages, and the command submission will block until more room is made on the
-    GPU command queue.
-  </p>
-
-  </div></li>
-</ul>
-
-
-
-
diff --git a/docs/html/tools/performance/systrace/index.jd b/docs/html/tools/performance/systrace/index.jd
deleted file mode 100644
index 97099a0..0000000
--- a/docs/html/tools/performance/systrace/index.jd
+++ /dev/null
@@ -1,182 +0,0 @@
-page.title=Systrace Walkthrough
-meta.tags="android, performance, profiling, tools, compute, systrace"
-page.tags="android", "performance", "profiling", "tools", "compute", "systrace"
-page.metaDescription=Collect system and application process execution data to identify performance bottlenecks.
-page.image=tools/performance/thumbnails/tools_systrace.png
-page.article=true
-
-@jd:body
-
-<style>
-  .no-bullet {
-    list-style-type: none;
-  }
-  .padded {
-    padding-left: 10px;
-  }
-</style>
-
-<div id="tb" style="margin-left: 7px; margin-bottom: 5px;">
-
-<h2>In this document</h2>
-<ul>
-  <li><a href="#WhatYouNeed">Prerequisites</a></li>
-  <li><a href="#WorkingWithSystrace">Working with Systrace</a></li>
-</ul>
-
-<h2>You should also read</h2>
-<ul>
-  <li><a href="{@docRoot}tools/performance/traceview/index.html">
-    Traceview Walkthrough</a></li>
-    <li><a href="{@docRoot}tools/performance/allocation-tracker/index.html">
-    Allocation Tracker Walkthrough</a></li>
-</ul>
-
-</div>
-
-  <p>This walkthrough shows the basic usage and workflow for the Systrace tool in the Android
-  Device Monitor.</p>
-
-  <p>Systrace collects system and application process execution data and generates detailed,
-  interactive reports from devices running Android 4.1 and higher.</p>
-
-  <p>What it's good for:</p>
-
-  <ul>
-    <li>Evaluating container performance.</li>
-
-    <li>Finding performance bottlenecks in the execution of your code.</li>
-  </ul>
-
-  <h2 id="WhatYouNeed">Prerequisites</h2>
-
-  <ul>
-    <li>Android SDK Tools 20.</li>
-
-    <li><a href="http://www.python.org/">Python</a> installed and included in your development
-    computer's execution path.</li>
-
-    <li>A mobile device running at least Android 4.1 with <a href=
-    "http://developer.android.com/tools/device.html#developer-device-options">Developer Options</a>
-    and USB Debugging enabled in Developer Options.</li>
-
-    <li>Application code. Use your own code, or the <a href=
-    "https://github.com/udacity/Sunshine-Version-2">Sunshine</a> sample app from the <a href=
-    "https://www.udacity.com/course/ud853">Android Fundamentals Udacity course</a>.</li>
-  </ul>
-
-  <h2 id="WorkingWithSystrace">Working with Systrace</h2>
-
-<ul class="no-bullet">
-<!-- this also hides bullet, by default outside box -->
- <li><div style="overflow:hidden">
-  <ol class="padded">
-
-    <div class="figure" style="">
-      <img src="{@docRoot}images/tools/performance/systrace/gettingstarted_image001.png"
-         alt=""
-         width="400px" />
-      <p class="img-caption">
-        <strong>Figure 1. </strong>Starting Android Device Monitor.
-      </p>
-    </div>
-
-    <li>Connect your mobile device to your computer.</li>
-
-    <li>Open your application in Android Studio, build the source, and run it on your device.</li>
-
-    <li>From Android Studio, start the Android Device Monitor: <b>Tools -&gt; Android -&gt; Android
-    Device</b> <b>Monitor</b>.
-
-</ol>
-</div></li>
-
-<li><div style="overflow:hidden">
-<hr>
-  <ol class="padded" start="4">
-
-    <div class="figure" style="">
-      <img src="{@docRoot}images/tools/performance/systrace/gettingstarted_image003.png"
-         alt=""
-         width="400px" />
-      <p class="img-caption">
-        <strong>Figure 2. </strong>Steps for starting Systrace.
-      </p>
-    </div>
-
-    <li>Make sure your
-      device and the package for your application are showing in the Devices (DDMS mode) or
-      Windows (Hierarchy Viewer mode) tab.
-
-      <p>You can choose <b>Window &gt; Reset Perspective</b> to
-      get back to the default arrangement.</p>
-    </li>
-
-    <li>Click the <b>DDMS</b> button, because Systrace is one of the DDMS tools.</li>
-
-    <li>Click the <b>Systrace</b> button
-      <img src="{@docRoot}images/tools/performance/systrace/gettingstarted_image002.png">.</li>
-</ol>
-</div></li>
-
-<li><div style="overflow:hidden">
-<hr>
-  <ol class="padded" start="7">
-
-    <div class="figure" style="">
-      <img src="{@docRoot}images/tools/performance/systrace/gettingstarted_image004.png"
-         alt=""
-         width="400px" />
-      <p class="img-caption">
-       <strong>Figure 3. </strong>Steps for creating a trace.
-      </p>
-    </div>
-
-    <li>In the <b>Android System Trace</b> popup, choose your settings for the trace.
-
-      <ul>
-        <li><b>Destination File:</b> Where the trace is stored as an HTML file. Default is in
-        your home directory as <code>trace.html</code>.</li>
-
-        <li><b>Trace Duration:</b> Default is 5 seconds,
-          and 30 seconds is a good time to choose.</li>
-
-        <li><b>Trace Buffer size:</b> Default is unlimited.</li>
-
-        <li><b>Enable Application Traces from:</b> Make sure your app is selected.</li>
-
-        <li><b>Select tags to enable:</b> Choose at least one value to trace, for example Graphics
-        and View System.</li>
-      </ul>
-    </li>
-
-    <li>Click <b>OK</b> to start tracing.</li>
-
-    <li>Interact with your app.</li>
-</ol>
-</div></li>
-
-<li><div style="overflow:hidden">
-<hr>
-  <ol class="padded" start="10">
-
-    <div class="figure" style="">
-      <img src="{@docRoot}images/tools/performance/systrace/gettingstarted_image005.png"
-         alt=""
-         width="400px" />
-      <p class="img-caption">
-        <strong>Figure 4. </strong>Example systrace output in browser.
-      </p>
-    </div>
-
-    <li>When the trace is done, you are automatically returned to Android Device Monitor.</li>
-
-    <li>Go to your home directory, or the directory you chose as the file destination.</li>
-
-    <li>Open the <code>trace.html</code> file in your browser.</li>
-
-   </ol>
-</div></li>
-</ul>
-
-
diff --git a/docs/html/tools/performance/thumbnails/tools_allocation_tracker.png b/docs/html/tools/performance/thumbnails/tools_allocation_tracker.png
deleted file mode 100644
index cbae4cd..0000000
--- a/docs/html/tools/performance/thumbnails/tools_allocation_tracker.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/tools/performance/thumbnails/tools_battery_historian.png b/docs/html/tools/performance/thumbnails/tools_battery_historian.png
deleted file mode 100644
index d1d58ac..0000000
--- a/docs/html/tools/performance/thumbnails/tools_battery_historian.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/tools/performance/thumbnails/tools_debug_gpu_overdraw.png b/docs/html/tools/performance/thumbnails/tools_debug_gpu_overdraw.png
deleted file mode 100644
index ff402d0..0000000
--- a/docs/html/tools/performance/thumbnails/tools_debug_gpu_overdraw.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/tools/performance/thumbnails/tools_heap_viewer.png b/docs/html/tools/performance/thumbnails/tools_heap_viewer.png
deleted file mode 100644
index d9028d0..0000000
--- a/docs/html/tools/performance/thumbnails/tools_heap_viewer.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/tools/performance/thumbnails/tools_hierarchy_viewer.png b/docs/html/tools/performance/thumbnails/tools_hierarchy_viewer.png
deleted file mode 100644
index 064efea..0000000
--- a/docs/html/tools/performance/thumbnails/tools_hierarchy_viewer.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/tools/performance/thumbnails/tools_hierarchy_viewer_profiling.png b/docs/html/tools/performance/thumbnails/tools_hierarchy_viewer_profiling.png
deleted file mode 100644
index e9824a4..0000000
--- a/docs/html/tools/performance/thumbnails/tools_hierarchy_viewer_profiling.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/tools/performance/thumbnails/tools_memory_monitor.png b/docs/html/tools/performance/thumbnails/tools_memory_monitor.png
deleted file mode 100644
index c761141..0000000
--- a/docs/html/tools/performance/thumbnails/tools_memory_monitor.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/tools/performance/thumbnails/tools_profile_gpu_rendering.png b/docs/html/tools/performance/thumbnails/tools_profile_gpu_rendering.png
deleted file mode 100644
index c86fb14..0000000
--- a/docs/html/tools/performance/thumbnails/tools_profile_gpu_rendering.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/tools/performance/thumbnails/tools_systrace.png b/docs/html/tools/performance/thumbnails/tools_systrace.png
deleted file mode 100644
index 567a8a7..0000000
--- a/docs/html/tools/performance/thumbnails/tools_systrace.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/tools/performance/thumbnails/tools_traceview.png b/docs/html/tools/performance/thumbnails/tools_traceview.png
deleted file mode 100644
index 16e6bdd..0000000
--- a/docs/html/tools/performance/thumbnails/tools_traceview.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/tools/performance/traceview/index.jd b/docs/html/tools/performance/traceview/index.jd
deleted file mode 100644
index 4a3f190..0000000
--- a/docs/html/tools/performance/traceview/index.jd
+++ /dev/null
@@ -1,292 +0,0 @@
-page.title=Traceview Walkthrough
-meta.tags="android, performance, profiling, tools, compute, traceview"
-page.tags="android", "performance", "profiling", "tools", "compute", "traceview"
-page.metaDescription=Log method execution over time and inspect execution data, per-thread timelines, and call stacks to track down performance issues in your source code.
-page.image=tools/performance/thumbnails/tools_traceview.png
-page.article=true
-
-@jd:body
-
-<style>
-  .no-bullet {
-    list-style-type: none;
-  }
-  .padded {
-    padding-left: 10px;
-  }
-</style>
-
-<div id="tb" style="margin-left: 7px; margin-bottom: 5px;">
-
-<h2>In this document</h2>
-<ul>
-  <li><a href="#WhatYouNeed">Prerequisites</a></li>
-  <li><a href="#WorkingWithTraceview">Working with Traceview</a></li>
-</ul>
-
-<h2>You should also read</h2>
-<ul>
-  <li><a href="{@docRoot}tools/performance/heap-viewer/index.html">
-    Heap Viewer Walkthrough</a></li>
-  <li><a href="{@docRoot}tools/performance/systrace/index.html">
-    Systrace Walkthrough</a></li>
-</ul>
-
-</div>
-
-  <p>This walkthrough shows the basic usage and workflow for the Traceview tool. Traceview logs
-  method execution over time and shows execution data, per-thread timelines, and call stacks.</p>
-
-  <p>What it's good for:</p>
-
-  <ul>
-    <li>Tracking down performance problems in your source code.</li>
-  </ul>
-
-  <h2 id="WhatYouNeed">Prerequisites</h2>
-
-  <ul>
-    <li>A mobile device with <a href=
-    "http://developer.android.com/tools/device.html#developer-device-options">Developer Options</a>
-    enabled.</li>
-
-    <li>Application code. Use your own code, or the <a href=
-    "https://github.com/udacity/Sunshine-Version-2">Sunshine</a> sample app from the <a href=
-    "https://www.udacity.com/course/ud853">Android Fundamentals Udacity course</a>.</li>
-  </ul>
-
-<h2 id="WorkingWithTraceview">Working with Traceview</h2>
-
-<ul class="no-bullet">
-<!-- this also hides bullet, by default outside box -->
- <li><div style="overflow:hidden">
-  <ol class="padded">
-
-    <div class="figure" style="">
-      <img src="{@docRoot}images/tools/performance/traceview/gettingstarted_image001.png"
-         alt=""
-         width="400px" />
-      <p class="img-caption">
-        <strong>Figure 1. </strong>Steps for starting Android Device Monitor.
-      </p>
-    </div>
-
-    <li>Connect your mobile device to your computer.</li>
-
-    <li>Open your application in Android Studio, build the source, and run it on your device.</li>
-
-    <li>Start the Android Device Monitor from Android Studio: <b>Tools -&gt; Android -&gt; Android
-    Device</b> <b>Monitor</b>.
-
-</ol>
-</div></li>
-
-<li><div style="overflow:hidden">
-<hr>
-  <ol class="padded" start="4">
-
-      <div class="figure" style="">
-      <img src="{@docRoot}images/tools/performance/traceview/gettingstarted_image002.png"
-           alt=""
-           width="400px" />
-      <p class="img-caption">
-        <strong>Figure 2. </strong>Steps for starting Traceview.
-      </p>
-    </div>
-
-    <li>Make sure your device
-      and the package for your application are showing in the <b>Devices</b> (DDMS mode) or
-      <b>Windows</b> (Hierarchy Viewer mode) tab.
-
-      <p>If necessary choose <b>Window &gt; Reset
-      Perspective</b> to get back to the default pane arrangement.</p></li>
-
-    <li>Click the <b>DDMS</b> button, because Traceview is one of the DDMS tools.</li>
-
-    <li>Select the app you want to profile.
-</ol>
-</div></li>
-
-<li><div style="overflow:hidden">
-<hr>
-  <ol class="padded" start="7">
-
-      <div class="figure" style="">
-      <img src="{@docRoot}images/tools/performance/traceview/gettingstarted_image004.png"
-         alt=""
-         width="400px" />
-      <p class="img-caption">
-        <strong>Figure 3. </strong>Starting profiling.
-      </p>
-    </div>
-
-    <li>Click the Start method profiling
-      <img src="{@docRoot}images/tools/performance/traceview/gettingstarted_image003.png">
-        button.
-    </li>
-
-</ol>
-</div></li>
-
-<li><div style="overflow:hidden">
-<hr>
-  <ol class="padded" start="8">
-
-     <div class="figure" style="">
-      <img src="{@docRoot}images/tools/performance/traceview/gettingstarted_image005.png"
-         alt=""
-         width="400px" />
-      <p class="img-caption">
-        <strong>Figure 4. </strong>Choosing profiling options.
-      </p>
-    </div>
-
-    <li>In the <b>Profiling Options</b> popup:
-
-      <ul>
-        <li>Choose <b>Sample based profiling</b></li>
-
-        <li>Keep the default sampling rate of 1000 microseconds.</li>
-
-        <li>Click <b>OK</b>.</li>
-      </ul>
-    </li>
-</ol>
-</div></li>
-
-<li><div style="overflow:hidden">
-<hr>
-  <ol class="padded" start="9">
-
-    <div class="figure" style="">
-      <img src="{@docRoot}images/tools/performance/traceview/gettingstarted_image007.png"
-         alt=""
-         width="400px" />
-      <p class="img-caption">
-        <strong>Figure 5. </strong>Stopping profiling.
-      </p>
-    </div>
-
-
-    <li>Interact with your application. If you are aware of performance issues that
-      your users experience, perform those actions.</li>
-
-    <li>Click the Stop method profiling
-      <img src="{@docRoot}images/tools/performance/traceview/gettingstarted_image006.png">
-      button.</li>
-
-    <li>Wait for the trace to load. This may take a few seconds if you recorded for a
-      long time.</li>
-</ol>
-</div></li>
-
-<li><div style="overflow:hidden">
-<hr>
-  <ol class="padded" start="12">
-
-    <div class="figure" style="">
-      <img src="{@docRoot}images/tools/performance/traceview/gettingstarted_image008.png"
-         alt=""
-         width="440px" />
-      <p class="img-caption">
-        <strong>Figure 6. </strong>Traceview output panes.
-      </p>
-    </div>
-
-    <li>Traceview has two panels: <b>Timeline</b> pane and <b>Profile</b> pane, which
-      are described below.</li>
-
-    <li>Use the <b>Find</b> box at the bottom to filter your profile results. For
-      example, if you are interested in finding the running time for a function, you can
-      search for it, and the tool will highlight it in the timeline.
-</ol>
-</div></li>
-
-<li><div style="overflow:hidden">
-<hr>
-  <ol class="padded" start="14">
-
-    <div class="figure" style="">
-      <img src="{@docRoot}images/tools/performance/traceview/gettingstarted_image009.png"
-         alt=""
-         width="400px" />
-      <p class="img-caption">
-        <strong>Figure 7. </strong>Annotated timeline panel.
-      </p>
-    </div>
-
-    <li>The <b>Timeline</b> pane visualizes how your code executes over time.
-
-      <ul>
-        <li>Each row shows a thread.</li>
-
-        <li>Each bar on the timeline is a method executing.</li>
-
-        <li>Each color is for a different method; every time a method executes, you see
-          a the same color bar.</li>
-
-        <li>The width of its bar indicates how long the method takes to execute.</li>
-      </ul>
-    </li>
-
-    <li>When you are zoomed out, a bar indicates when a method is executing.</li>
-
- </ol>
-</div></li>
-
-<li><div style="overflow:hidden">
-<hr>
-  <ol class="padded" start="16">
-
-    <div class="figure" style="">
-      <img src="{@docRoot}images/tools/performance/traceview/gettingstarted_image010.png"
-         alt=""
-         width="300px" />
-       <p class="img-caption">
-        <strong>Figure 8. </strong>Segment for method on the timeline.
-      </p>
-    </div>
-
-    <li>Zoom into the graph, and the bar for each method expands into a colored
-      U-shape, where the left side of the U indicates the start, and the right side
-      the end of the method's execution.</li>
-</ol>
-</div></li>
-
-<li><div style="overflow:hidden">
-<hr>
-  <ol class="padded" start="17">
-
-    <div class="figure" style="">
-      <img src="{@docRoot}images/tools/performance/traceview/gettingstarted_image011.png"
-         alt=""
-         width="440px" />
-      <p class="img-caption">
-        <strong>Figure 9. </strong>Traceview Profiling pane with callstack.
-      </p>
-    </div>
-
-    <li>The <b>Profiling</b> pane shows a list of methods.
-
-      <ul>
-        <li>Select a method to see who called it (Parent) and who it's
-          calling (Children).</li>
-
-        <li>The selected method is also highlighted in the <b>Timeline</b> pane.</li>
-
-        <li>The columns show exclusive and inclusive CPU and real times, percentages,
-        ratios, and how often a method was called.</li>
-
-        <li>The <em>exclusive time</em> is the time spent just in the method itself, which can
-        help you find issues within that specific method.</li>
-
-        <li>The <em>inclusive time</em> is for the method and all methods it calls, which
-        can help you find problems with your call tree.</li>
-
-      <li>The <b>Calls+Rec</b> column shows how many times a method was called recursively,
-        which can help you track down performance issues.</li>
-      </ul>
-    </li>
-  </ol>
-</div></li>
-</ul>
diff --git a/docs/html/tools/projects/index.jd b/docs/html/tools/projects/index.jd
deleted file mode 100644
index 344e844..0000000
--- a/docs/html/tools/projects/index.jd
+++ /dev/null
@@ -1,579 +0,0 @@
-page.title=Managing Projects Overview
-meta.tags="project, mipmap"
-page.tags="project", "mipmap"
-@jd:body
-
- <div id="qv-wrapper">
-    <div id="qv">
-      <h2>In this document</h2>
-
-      <ol>
-        <li><a href="#ProjectFiles">Android Project Files</a></li>
-        <li><a href="#ApplicationModules">Android Application Modules</a></li>
-          <ol>
-            <li><a href="#mipmap">Managing Launcher Icons as mipmap Resources</a></li>
-          </ol>
-        <li><a href="#LibraryModules">Library Modules</a>
-          <ol>
-            <li><a href="#considerations">Development considerations</a></li>
-          </ol>
-        </li>
-
-        <li><a href="#TestModules">Test Modules</a></li>
-
-        <li><a href="#testing">Testing a Library Module</a></li>
-      </ol>
-    </div>
-  </div>
-
-  <p>An Android <em>project</em> contains everything that defines your Android app, from app
-  source code to build configurations and test code. The SDK tools require that your projects
-  follow a specific structure so it can compile and package your application correctly.
-  If you're using Android Studio, it takes care of all this for you.</p>
-
-  <p>A <em>module</em> is the first level of containment within a project that encapsulates
-  specific types of source code files and resources. There are several types of modules
-  with a project:</p>
-
-  <dl>
-
-    <dt><strong>Android Application Modules</strong></dt>
-
-    <dd>An Android Application Module is the container for your application's source code, resource
-    files, and application level settings, such as the module-level build file, resource  files, and
-    Android Manifest file. The application module contents are eventually
-    built into the <code>.apk</code> file that gets installed on a device.</dd>
-
-    <dt><strong>Test Modules</strong></dt>
-
-    <dd>These modules contain code to test your application projects and are built into
-    test applications that run on a device. By default, Android Studio creates the
-    <em>androidTest</em> module for inserting JUnit tests. </dd>
-
-    <dt><strong>Library Modules</strong></dt>
-
-    <dd>These modules contain shareable Android source code and resources that you can reference
-    in Android projects. This is useful when you have common code that you want to reuse.
-    Library modules cannot be installed onto a device, however, they are
-    pulled into the <code>.apk</code> file at build time.</dd>
-
-
-    <dt><strong>App Engine Modules</strong></dt>
-
-    <dd>Android Studio lets you easily add a cloud backend to your application. A backend allows you
-    to implement functionality such as backing up user data to the cloud, serving content to client
-    apps, real-time interactions, sending push notifications through Google Cloud Messaging for
-    Android (GCM), and more. App Engine modules are App Engine java Servlet Module for backend
-    development, App Engine java Endpoints Module to convert server-side Java code annotations into
-    RESTful backend APIs, and App Engine Backend with Google Cloud Messaging to send push notifications
-    from your server to your Android devices. </dd>
-
-  </dl>
-
-  <p>When you use the Android development tools to create a new project and the module, the essential files
-  and folders will be created for you. There are only a handful of files and folders generated for you,
-  and some of them depend on whether you use Android Studio or the {@code android} tool to
-  generate your module. As your application grows in complexity, you might require new kinds of
-  resources, directories, and files.</p>
-
-<p class="note"><strong>Note:</strong> Project folders and files apply across the entire Android
-project and override similar module file settings.</p>
-
-
-
-
-  <h2 id="ProjectFiles">Android Project Files</h2>
-
-  <p>Android Studio project files and settings provide project-wide settings that apply across all
-  modules in the project.  </p>
-
-	<dl>
-   <dt><code>.idea</code></dt>
-
-   <dd>Directory for IntelliJ IDEA settings.</dd>
-
-
-   <dt><code>app</code></dt>
-
-   <dd>Application module directories and files. </dd>
-
-
-   <dt><code>build</code></dt>
-
-   <dd>This directory stores the build output for all project modules.</dd>
-
-
-    <dt><code>gradle</code></dt>
-
-    <dd>Contains the gradler-wrapper files. </dd>
-
-
-    <dt><code>.gitignore</code></dt>
-
-    <dd>Specifies the untracked files that Git should ignore.</dd>
-
-
-    <dt><code>build.gradle</code></dt>
-
-    <dd>Customizable properties for the build system. You can edit this file to specify the default
-    build settings used by the application modules and also set the location of your keystore and key alias
-    so that the build tools can sign your application when building in release mode. This file is
-    integral to the project, so maintain it in a source revision control system. </dd>
-
-    <dt><code>gradle.properties</code></dt>
-
-    <dd>Project-wide Gradle settings.</dd>
-
-
-    <dt><code>gradlew</code></dt>
-
-    <dd>Gradle startup script for Unix.</dd>
-
-
-    <dt><code>gradlew.bat</code></dt>
-
-    <dd>Gradle startup script for Windows. </dd>
-
-   <dt><code>local.properties</code></dt>
-
-   <dd>Customizable computer-specific properties for the build system, such as the path to the SDK
-   installation. Because the content of the file is specific to the local installation of the SDK,
-   the <code>local.properties</code> should not be maintained in a source revision control system. </dd>
-
-
-    <dt><code><project>.iml</code></dt>
-
-    <dd>Module file created by the IntelliJ IDEA to store module information.</dd>
-
-    <dt><code>settings.gradle</code></dt>
-
-    <dd>Specifies the sub-projects to build.</dd>
-
-  </dl>
-
-
-  <h2 id="ApplicationModules">Android Application Modules</h2>
-
-  <p>Android Application Modules are the modules that eventually get built into the <code>.apk</code>
-  files based on your build settings. They contain things such as application source code and resource
-  files. Most code and resource files are generated for you by default, while others should be created if
-  required. The following directories and files comprise an Android application module:</p>
-
-  <dl>
-
-    <dt><code>build/</code></dt>
-
-    <dd>Contains build folders for the specified build variants. Stored in the main application module.</dd>
-
-
-    <dt><code>libs/</code></dt>
-
-    <dd>Contains private libraries. Stored in the main application module.</dd>
-
-
-
-
-    <dt><code>src/</code></dt>
-
-    <dd>Contains your stub Activity file, which is stored at
-    <code>src<em>/main/java/&lt;namespace.appname&gt;/&lt;ActivityName&gt;</em>.java</code>. All
-    other source code files (such as <code>.java</code> or <code>.aidl</code> files) go here as
-    well.</dd>
-
-     <dl>
-       <dt><code>androidTest/</code></dt>
-
-       <dd>Contains the instrumentation tests. For more information, see the
-       <a href="{@docRoot}tools/testing/index.html">Android Test documentation</a>.</dd>
-
-       <dt><code>main/java/com.&lt;project&gt;.&lt;app&gt;</code></dt>
-
-       <dd>Contains Java code source for the app activities.</dd>
-
-       <dt><code>main/jni/</code></dt>
-
-       <dd>Contains native code using the Java Native Interface (JNI). For more information, see the
-       <a href="{@docRoot}tools/sdk/ndk/index.html">Android NDK documentation</a>.</dd>
-
-       <dt><code>main/gen/</code></dt>
-
-       <dd>Contains the Java files generated by Android Studio, such as your <code>R.java</code> file and
-       interfaces created from AIDL files.</dd>
-
-       <dt><code>main/assets/</code></dt>
-
-       <dd>This is empty. You can use it to store raw asset files. Files that you save here are
-       compiled into an <code>.apk</code> file as-is, and the original filename is preserved. You can
-       navigate this directory in the same way as a typical file system using URIs and read files as a
-       stream of bytes using the {@link android.content.res.AssetManager}. For example, this is a good
-       location for textures and game data.</dd>
-
-       <dt><code>main/res/</code></dt>
-
-       <dd>Contains application resources, such as drawable files, layout files, and string values
-       in the following directories. See
-       <a href="{@docRoot}guide/topics/resources/index.html">Application Resources</a> for more
-       information.
-
-       <dl>
-           <dt><code>anim/</code></dt>
-
-           <dd>For XML files that are compiled into animation objects. See the <a href=
-           "{@docRoot}guide/topics/resources/animation-resource.html">Animation</a> resource
-           type.</dd>
-
-           <dt><code>color/</code></dt>
-
-           <dd>For XML files that describe colors. See the <a href=
-        "  {@docRoot}guide/topics/resources/color-list-resource.html">Color Values</a> resource
-           type.</dd>
-
-           <dt><code>drawable/</code></dt>
-
-           <dd>For bitmap files (PNG, JPEG, or GIF), 9-Patch image files, and XML files that describe
-           Drawable shapes or Drawable objects that contain multiple states (normal, pressed, or
-           focused). See the <a href=
-           "{@docRoot}guide/topics/resources/drawable-resource.html">Drawable</a> resource type.</dd>
-
-
-           <dt><code>mipmap/</code></dt>
-
-           <dd>For app launcher icons. The Android system retains the resources in this folder
-           (and density-specific folders such as mipmap-xxxhdpi) regardless of the screen resolution
-           of the device where your app is installed. This behavior allows launcher apps to pick
-           the best resolution icon for your app to display on the home screen. For more information
-           about using the <code>mipmap</code> folders, see
-           <a href="#mipmap">Managing Launcher Icons as mipmap Resources</a>. </p>
-
-
-          <dt><code>layout/</code></dt>
-
-           <dd>XML files that are compiled into screen layouts (or part of a screen). See the <a href=
-           "{@docRoot}guide/topics/resources/layout-resource.html">Layout</a> resource type.</dd>
-
-           <dt><code>menu/</code></dt>
-
-           <dd>For XML files that define application menus.
-           See the <a href="{@docRoot}guide/topics/resources/menu-resource.html">Menus</a>
-           resource type.</dd>
-
-           <dt><code>raw/</code></dt>
-
-           <dd>For arbitrary raw asset files. Saving asset files here is essentially the same as
-           saving them in the <code>assets/</code> directory. The only difference is how you
-           access them. These files
-           are processed by aapt and must be referenced from the application using a resource
-           identifier in the {@code R} class. For example, this is a good place for media, such as MP3
-           or Ogg files.</dd>
-
-           <dt><code>values/</code></dt>
-
-           <dd>For XML files that define resources by XML element type. Unlike other resources in
-           the <code>res/</code> directory, resources written to XML files in this folder are not
-           referenced by the file name. Instead, the XML element type controls how the resources
-           defined within the XML files are placed into the {@code R} class.</dd>
-
-           <dt><code>xml/</code></dt>
-
-           <dd>For miscellaneous XML files that configure application components. For example, an XML
-           file that defines a {@link android.preference.PreferenceScreen}, {@link
-           android.appwidget.AppWidgetProviderInfo}, or
-           <a href="{@docRoot}reference/android/app/SearchManager.html#SearchabilityMetadata">
-           Searchability Metadata</a>. See
-           <a href="{@docRoot}guide/topics/resources/index.html">Application Resources</a>
-           for more information about configuring these application components.</dd>
-
-         </dl>
-
-      <dt><code>AndroidManifest.xml</code></dt>
-
-      <dd>The control file that describes the nature of the application and each of its components.
-      For instance, it describes: certain qualities about the activities, services, intent receivers,
-      and content providers; what permissions are requested; what external libraries are needed; what
-      device features are required, what API Levels are supported or required; and others. See the
-      <a href="{@docRoot}guide/topics/manifest/manifest-intro.html">AndroidManifest.xml</a>
-      documentation for more information</dd>
-
-   </dl>
-
-   <dt><code>.gitignore/</code></dt>
-
-   <dd>Specifies the untracked files ignored by git.</dd>
-
-   <dt><code>app.iml/</code></dt>
-
-   <dd>IntelliJ IDEA module</dd>
-
-   <dt><code>build.gradle</code></dt>
-
-   <dd>Customizable properties for the build system. You can edit this file to override default
-    build settings used by the manifest file and also set the location of your keystore and key alias
-    so that the build tools can sign your application when building in release mode. This file is
-    integral to the project, so maintain it in a source revision control system. </dd>
-
-    <dt><code>proguard-rules.pro</code></dt>
-
-    <dd>ProGuard settings file. </dd>
-
-
-  </dl>
-
-
-
-<h2 id="mipmap">Managing Launcher Icons as mipmap Resources</h2>
-
-<p>Different home screen launcher apps on different devices show app launcher icons at various
-resolutions. When app resource optimization techniques remove resources for unused
-screen densities, launcher icons can wind up looking fuzzy because the launcher app has to upscale
-a lower-resolution icon for display. To avoid these display issues, apps should use the
-<code>mipmap/</code> resource folders for launcher icons. The Android system
-preserves these resources regardless of density stripping, and ensures that launcher apps can
-pick icons with the best resolution for display. </p>
-
-<p>Make sure launcher apps show a high-resolution icon for your app by moving all densities of your
-launcher icons to density-specific <code>res/mipmap/</code> folders
-(for example <code>res/mipmap-mdpi/</code> and <code>res/mipmap-xxxhdpi/</code>). The
-<code>mipmap/</code> folders replace the <code>drawable/</code> folders for launcher icons. For
-xxhpdi launcher icons, be sure to add the higher resolution xxxhdpi versions of the
-icons to enhance the visual experience of the icons on higher resolution devices.</p>
-
-<p class="note"><strong>Note:</strong> Even if you build a single APK for all devices, it is still
-best practice to move your launcher icons to the <code>mipmap/</code> folders.</p>
-
-
-<h3>Manifest update</h3>
-
-<p>When you move your launcher icons to the <code>mipmap-[density]</code> folders, change the
-launcher icon references in the <code>AndroidManifest.xml</code> file so your manifest references
-the <code>mipmap/</code> location. This example changes the manifest file to reference the
-<code>ic_launcher</code> icon in the <code>mipmap/</code> folder. </p>
-
-<pre>
-...
-&lt;application android:name="ApplicationTitle"
-         android:label="@string/app_label"
-         android:icon="@mipmap/ic_launcher" &gt;
-         ...
-</pre>
-
-
-
-
-
-  <h2 id="LibraryModules">Library Module</h2>
-
-  <div class="sidebox-wrapper">
-    <div class="sidebox">
-      <h2>Library module example code</h2>
-
-      <p>The SDK includes an example application called <code>TicTacToeMain</code> that shows how a
-      dependent application can use code and resources from an Android Library module. The TicTacToeMain
-      application uses code and resources from an example library module called TicTacToeLib.</p>
-
-      <p>To download the sample applications and run them as modules in
-      your environment, use the <em>Android SDK Manager</em> to download the "Samples for
-      SDK API 8" (or later) module into your SDK.</p>
-
-      <p>For more information and to browse the code of the samples, see
-      the <a href="{@docRoot}resources/samples/TicTacToeMain/index.html">TicTacToeMain
-      application</a>.</p>
-    </div>
-  </div>
-
-    <p>An Android <em>library module</em> is a development module that holds shared Android
-    source code and resources. Other Android application modules can reference the library module
-    and, at build time, include its compiled sources in their <code>.apk</code> files. Multiple
-    application modules can reference the same library module and any single application module
-    can reference multiple library modules.</p>
-
-    <p class="note"><strong>Note:</strong> You need SDK Tools r14 or newer to use the new library
-    module feature that generates each library module into its own JAR file.
-    You can download the tools and platforms using the
-    <em>Android SDK Manager</em>, as described in
-    <a href="{@docRoot}tools/help/sdk-manager.html">SDK tools help</a>.</p>
-
-    <p>If you have source code and resources that are common to multiple Android projects, you
-    can move them to a library module so that it is easier to maintain across applications and
-    versions. Here are some common scenarios in which you could make use of library modules:</p>
-
-    <ul>
-      <li>If you are developing multiple related applications that use some of the same components,
-      you move the redundant components out of their respective application module and create a
-      single, reusable set of the same components in a library module.</li>
-
-      <li>If you are creating an application that exists in both free and paid versions. You move
-      the part of the application that is common to both versions into a library module. The two
-      dependent modules, with their different package names, will reference the library module
-      and provide only the difference between the two application versions.</li>
-    </ul>
-
-    <p>Structurally, a library module is similar to a standard Android application module. For
-    example, it includes a manifest file at the module root, as well as <code>src/</code>,
-    <code>res/</code> and similar directories. The module can contain the same types of source
-    code and resources as a standard Android module, stored in the same way. For example, source
-    code in the library module can access its own resources through its <code>R</code> class.</p>
-
-    <p>However, a library module differs from a standard Android application module in that you
-    cannot compile it directly to its own <code>.apk</code> and run it on an Android device.
-    Similarly, you cannot export the library module to a self-contained JAR file, as you would do
-    for a true library. Instead, you must compile the library indirectly, by referencing the
-    library in the dependent application and building that application.</p>
-
-    <p>When you build an application that depends on a library module, the SDK tools compile the
-    library into a temporary JAR file and use it in the main module, then uses the
-    result to generate the <code>.apk</code>. In cases where a resource ID is defined in both the
-    application and the library, the tools ensure that the resource declared in the application gets
-    priority and that the resource in the library module is not compiled into the application
-    <code>.apk</code>. This gives your application the flexibility to either use or redefine any
-    resource behaviors or values that are defined in any library.</p>
-
-    <p>To organize your code further, your application can add references to multiple library
-    modules, then specify the relative priority of the resources in each library. This lets you
-    build up the resources actually used in your application in a cumulative manner. When two
-    libraries referenced from an application define the same resource ID, the tools select the
-    resource from the library with higher priority and discard the other.</p>
-
-    <p>Once you have added references to library modules to your Android application module,
-    you can set their relative priority. At build time, the
-    libraries are merged with the application one at a time, starting from the lowest priority to
-    the highest.</p>
-
-    <p>Library modules can reference other library modules and can import an external library
-    (JAR) in the normal way.</p>
-
-  <h3 id="considerations">Development considerations</h3>
-
-  <p>As you develop your library modules and dependent applications, keep the points listed below
-  in mind:</p>
-
-  <ul>
-  <li><p><strong>Resource conflicts</strong></p>
-  <p>Since the tools merge the resources of a library module with those of a dependent application
-  module, a given resource ID might be defined in both modules. In this case, the tools select
-  the resource from the application, or the library with highest priority, and discard the other
-  resource. As you develop your applications, be aware that common resource IDs are likely to be
-  defined in more than one project and will be merged, with the resource from the application or
-  highest-priority library taking precedence.</p>
-  </li>
-
-  <li><p><strong>Use prefixes to avoid resource conflicts</strong></p>
-
-  <p>To avoid resource conflicts for common resource IDs, consider using a prefix or other
-  consistent naming scheme that is unique to the module (or is unique across all project modules).</p></li>
-
-  <li><p><strong>You cannot export a library module to a JAR file</strong></p>
-
-  <p>A library cannot be distributed as a binary file (such as a JAR file). This will be added in a
-  future version of the SDK Tools.</p></li>
-
-  <li><p><strong>A library module can include a JAR library</strong></p>
-
-  <p>You can develop a library module that itself includes a JAR library; however you need to
-  manually edit the dependent application modules's build path and add a path to the JAR file.</p></li>
-
-  <li><p><strong>A library module can depend on an external JAR library</strong></p>
-
-  <p>You can develop a library module that depends on an external library (for example, the Maps
-  external library). In this case, the dependent application must build against a target that
-  includes the external library (for example, the Google APIs Add-On). Note also that both the
-  library module and the dependent application must declare the external library in their manifest
-  files, in a <a href=
-  "{@docRoot}guide/topics/manifest/uses-library-element.html"><code>&lt;uses-library&gt;</code></a>
-  element.</p></li>
-
-  <li> <p><strong>Library modules cannot include raw assets</strong></p>
-
-  <p>The tools do not support the use of raw asset files (saved in the <code>assets/</code> directory)
-  in a library module. Any asset resources
-  used by an application must be stored in the <code>assets/</code> directory of the application
-  module itself. However, resource files saved in the <code>res/</code> directory are supported.</p></li>
-
-  <li><p><strong>Platform version must be lower than or equal to the Android module</strong></p>
-
-  <p>A library is compiled as part of the dependent application module, so the API used in the
-  library module must be compatible with the version of the Android library used to compile the
-  application module. In general, the library module should use an <a href=
-  "{@docRoot}guide/topics/manifest/uses-sdk-element.html#ApiLevels">API level</a> that is the same as &mdash; or lower
-  than &mdash; that used by the application. If the library module uses an API level that is
-  higher than that of the application, the application module will not compile. It is
-  perfectly acceptable to have a library that uses the Android 1.5 API (API level 3) and that is
-  used in an Android 1.6 (API level 4) or Android 2.1 (API level 7) module, for instance.</p></li>
-
-  <li> <p><strong>No restriction on library module names</strong></p>
-
-  <p>There is no requirement for the package name of a library to be the same as that of
-  applications that use it.</p></li>
-
-  <li><p><strong>Each library module creates its own R class </strong></p>
-
-  <p>When you build the dependent application modules, library modules are compiled and
-  merged with the application module. Each library has its own <code>R</code> class, named according
-  to the library's package name. The <code>R</code> class generated from main
-  module and the library module is created in all the packages that are needed including the main
-  module's package and the libraries' packages.</p></li>
-
-  <li><p><strong>Library module storage location</strong></p>
-
-  <p>There are no specific requirements on where you should store a library module, relative to a
-  dependent application module, as long as the application module can reference the library
-  module by a relative link. What is important is that the main
-  module can reference the library module through a relative link.</p></li>
-  </ul>
-
-  <h2 id="TestProjects">Test Projects</h2>
-
-  <p>Test projects contain Android applications that you write using the
-  <a href="{@docRoot}tools/testing/index.html">Testing and
-  Instrumentation framework</a>. The framework is an extension of the JUnit test framework and adds
-  access to Android system objects. </p>
-
-  <p>The test projects are now automatically part of the app source folder. When a new application
-  module is created, Android Studio creates the <code>src/androidTest</code> source set. This
-  source set contains tests for the default configuration and is combined with the <em>debug</em>
-  build type to generate a test application. </p>
-
-  <img src="{@docRoot}images/tools/studio-androidtest-folder.png">
-  <p class="img-caption"><strong>Figure 1.</strong> androidTest Folder.</p>
-
-  <p class="note"><strong>Note:</strong> The <code>src/androidTest</code> source set may not be
-  created for every type of available module template. If this source set is not created, you
-  can just create it for that module.</p>
-
-  <p>For each product flavor, create a test folder specific to that product flavor.  </p>
-
-  <dl>
-    <dt><code>src/main/</code></dt>
-    <dd><code>src/androidTest/</code></dt>
-
-    <dt><code>src/productFlavor1/</code></dt>
-    <dd><code>src/testproductFlavor1/</code></dd>
-
-    <dt><code>src/productFlavor2/</code></dt>
-    <dd><code>src/testproductFlavor2/</code></dd>
-
-  </dl>
-
-  <p>The test manifests are always generated so a manifest in a test source set is optional.</p>
-
-  <p>The test applications run against the <em>debug</em> build type.  This can be configured
-  using the <code>testBuildType</code> property in the build file.</p>
-
-
-  <p>For more information, see the
-  <a href="{@docRoot}tools/testing/index.html">Testing</a> section.</p>
-
-
-  <h2 id="testing">Testing a Library Module</h2>
-
-  <p>There are two recommended ways of setting up testing on code and resources in a library
-  module:</p>
-
-  <ul>
-    <li>You can set up a <a href="{@docRoot}tools/testing/testing_otheride.html">test
-    module</a> that instruments an application module that depends on the library module. You
-    can then add tests to the module for library-specific features.</li>
-
-    <li>You can set up a standard application module that depends on the library and put
-    the instrumentation in that module. This lets you create a self-contained module that
-    contains both the tests/instrumentations and the code to test.</li>
-  </ul>
diff --git a/docs/html/tools/projects/projects-cmdline.jd b/docs/html/tools/projects/projects-cmdline.jd
deleted file mode 100644
index f0830fe..0000000
--- a/docs/html/tools/projects/projects-cmdline.jd
+++ /dev/null
@@ -1,295 +0,0 @@
-page.title=Managing Projects from the Command Line
-parent.title=Managing Projects
-parent.link=index.html
-@jd:body
-
-  <div id="qv-wrapper">
-    <div id="qv">
-      <h2>In this document</h2>
-
-      <ol>
-        <li><a href="#CreatingAProject">Creating an Android Project</a></li>
-        <li><a href="#UpdatingAProject">Updating a Project</a></li>
-        <li><a href="#SettingUpLibraryProject">Setting up a Library Project</a>
-          <ol>
-            <li><a href="#CreatingManifestFile">Creating the manifest file</a></li>
-            <li><a href="#UpdatingLibraryProject">Updating a library project</a></li>
-          </ol>
-        </li>
-        <li><a href="#ReferencingLibraryProject">Referencing a Library Project</a>
-          <ol>
-            <li><a href="#DeclaringLibrary">Declaring library components in the manifest
-file</a></li>
-            <li><a href="#depAppBuild">Building a dependent application</a></li>
-          </ol>
-        </li>
-      </ol>
-
-      <h2>See also</h2>
-
-      <ol>
-        <li><a href=
-        "{@docRoot}tools/testing/testing_otheride.html#CreateTestProjectCommand">Testing
-        from Other IDEs</a></li>
-      </ol>
-    </div>
-  </div>
-
-  <p>The <code>android</code> tool provides you with commands to create all three types of
-  projects. An Android project contains all of the files and resources that are needed to build a
-  project into an .apk file for installation.
-
-  <ul>
-    <li>An Android project contains all of the files and resources that are needed to build a project into
-  an .apk file for installation. You need to create an Android project for any application that you
-  want to eventually install on a device.</li>
-
-  <li>You can also designate an Android project as a library project, which allows it to be shared
-  with other projects that depend on it. Once an Android project is designated as a library
-  project, it cannot be installed onto a device.</li>
-
-  <li>Test projects extend JUnit test functionality to include Android specific functionality. For
-  more information on creating a test project, see <a href=
-  "{@docRoot}tools/testing/testing_otheride.html">Testing from other IDEs</a>.</li>
-  </ul>
-
-
-  <h2 id="CreatingAProject">Creating an Android Project</h2>
-
-  <p>To create an Android project, you must use the <code>android</code> tool. When you create a
-  new project with <code>android</code>, it will generate a project directory with some default
-  application files, stub files, configuration files and a build file.</p>
-
-  <p>To create a new Android project, open a command-line, navigate to the <code>tools/</code>
-  directory of your SDK and run:</p>
-  <pre>
-android create project \
---target &lt;target_ID&gt; \
---name &lt;your_project_name&gt; \
---path path/to/your/project \
---activity &lt;your_activity_name&gt; \
---package &lt;your_package_namespace&gt;
-</pre>
-
-  <ul>
-    <li><code>target</code> is the "build target" for your application. It corresponds to an
-    Android platform library (including any add-ons, such as Google APIs) that you would like to
-    build your project against. To see a list of available targets and their corresponding IDs,
-    execute: <code>android list targets</code>.</li>
-
-    <li><code>name</code> is the name for your project. This is optional. If provided, this name
-    will be used for your .apk filename when you build your application.</li>
-
-    <li><code>path</code> is the location of your project directory. If the directory does not
-    exist, it will be created for you.</li>
-
-    <li><code>activity</code> is the name for your default {@link android.app.Activity} class. This
-    class file will be created for you inside
-    <code><em>&lt;path_to_your_project&gt;</em>/src/<em>&lt;your_package_namespace_path&gt;</em>/</code>
-    . This will also be used for your .apk filename unless you provide a <code>name</code>.</li>
-
-    <li><code>package</code> is the package namespace for your project, following the same rules as
-    for packages in the Java programming language.</li>
-  </ul>
-
-  <p>Here's an example:</p>
-  <pre>
-android create project \
---target 1 \
---name MyAndroidApp \
---path ./MyAndroidAppProject \
---activity MyAndroidAppActivity \
---package com.example.myandroid
-</pre>
-
-  <p>Once you've created your project, you're ready to begin development. You can move your project
-  folder wherever you want for development, but keep in mind that you must use the <a href=
-  "{@docRoot}tools/help/adb.html">Android Debug Bridge</a> (adb) &mdash; located in the
-  SDK <code>platform-tools/</code> directory &mdash; to send your application to the emulator (discussed
-  later). So you need access between your project solution and the <code>platform-tools/</code> folder.</p>
-
-  <p class="note"><strong>Tip:</strong> Add the <code>platform-tools/</code> as well as the <code>tools/</code> directory
-  to your <code>PATH</code> environment variable.</p>
-
-  <p class="caution"><strong>Caution:</strong> You should refrain from moving the location of the
-  SDK directory, because this will break the SDK location property located in <code>local.properties</code>.
-  If you need to update the SDK location, use the <code>android update project</code> command.
-  See <a href="#UpdatingAProject">Updating a Project</a> for more information.</p>
-
-  <h2 id="UpdatingAProject">Updating a Project</h2>
-
-  <p>If you're up grading a project from an older version of the Android SDK or want to create a new
-  project from existing code, use the <code>android update project</code> command to update the
-  project to the new development environment. You can also use this command to revise the build
-  target of an existing project (with the <code>--target</code> option) and the project name (with
-  the <code>--name</code> option). The <code>android</code> tool will generate any files and
-  folders (listed in the previous section) that are either missing or need to be updated, as needed
-  for the Android project.</p>
-
-  <p>To update an existing Android project, open a command-line and navigate to the
-  <code>tools/</code> directory of your SDK. Now run:</p>
-  <pre>
-android update project --name &lt;project_name&gt; --target &lt;target_ID&gt;
---path &lt;path_to_your_project&gt;
-</pre>
-
-  <ul>
-    <li><code>target</code> is the "build target" for your application. It corresponds to an
-    Android platform library (including any add-ons, such as Google APIs) that you would like to
-    build your project against. To see a list of available targets and their corresponding IDs,
-    execute: <code>android list targets</code>.</li>
-
-    <li><code>path</code> is the location of your project directory.</li>
-
-    <li><code>name</code> is the name for the project. This is optional&mdash;if you're not
-    changing the project name, you don't need this.</li>
-  </ul>
-
-  <p>Here's an example:</p>
-  <pre>
-android update project --name MyApp --target 2 --path ./MyAppProject
-</pre>
-
-  <h2 id="SettingUpLibraryProject">Setting up a Library Project</h2>
-
-  <p>A library project is a standard Android project, so you can create a new one in the same way
-  as you would a new application project. Specifically, you can use the <code>android</code> tool
-  to generate a new library project with all of the necessary files and folders.</p>
-
-  <p>To create a new library project, navigate to the <code>&lt;sdk&gt;/tools/</code> directory and
-  use this command:</p>
-  <pre class="no-pretty-print">
-android create lib-project --name &lt;your_project_name&gt; \
---target &lt;target_ID&gt; \
---path path/to/your/project \
---package &lt;your_library_package_namespace&gt;
-</pre>
-
-  <p>The <code>create lib-project</code> command creates a standard project structure that includes
-  preset property that indicates to the build system that the project is a library. It does this by
-  adding this line to the project's <code>project.properties</code> file:</p>
-  <pre class="no-pretty-print">
-android.library=true
-</pre>
-
-  <p>Once the command completes, the library project is created and you can begin moving source
-  code and resources into it, as described in the sections below.</p>
-
-  <p>If you want to convert an existing application project to a library project, so that other
-  applications can use it, you can do so by adding a the <code>android.library=true</code> property
-  to the application's <code>project.properties</code> file.</p>
-
-  <h3 id="CreatingManifestFile">Creating the manifest file</h3>
-
-  <p>A library project's manifest file must declare all of the shared components that it includes,
-  just as would a standard Android application. For more information, see the documentation for
-  <a href="{@docRoot}guide/topics/manifest/manifest-intro.html">AndroidManifest.xml</a>.</p>
-
-  <p>For example, the <a href=
-  "{@docRoot}resources/samples/TicTacToeLib/AndroidManifest.html">TicTacToeLib</a> example library
-  project declares the Activity <code>GameActivity</code>:</p>
-  <pre>
-&lt;manifest&gt;
-  ...
-  &lt;application&gt;
-    ...
-    &lt;activity android:name="GameActivity" /&gt;
-    ...
-  &lt;/application&gt;
-&lt;/manifest&gt;
-</pre>
-
-  <h3 id="UpdatingLibraryProject">Updating a library project</h3>
-
-  <p>If you want to update the build properties (build target, location) of the library project,
-  use this command:</p>
-  <pre>
-android update lib-project \
---target <em>&lt;target_ID&gt;</em> \
---path <em>path/to/your/project</em>
-</pre>
-
-  <h2 id="ReferencingLibraryProject">Referencing a Library Project</h2>
-
-  <p>If you are developing an application and want to include the shared code or resources from a
-  library project, you can do so easily by adding a reference to the library project in the
-  application project's build properties.</p>
-
-  <p>To add a reference to a library project, navigate to the <code>&lt;sdk&gt;/tools/</code>
-  directory and use this command:</p>
-  <pre>
-android update project \
---target <em>&lt;target_ID&gt;</em> \
---path <em>path/to/your/project</em>
---library <em>path/to/library_projectA</em>
-</pre>
-
-  <p>This command updates the application project's build properties to include a reference to the
-  library project. Specifically, it adds an <code>android.library.reference.<em>n</em></code>
-  property to the project's <code>project.properties</code> file. For example:</p>
-  <pre class="no-pretty-print">
-android.library.reference.1=path/to/library_projectA
-</pre>
-
-  <p>If you are adding references to multiple libraries, note that you can set their relative
-  priority (and merge order) by manually editing the <code>project.properties</code> file and
-  adjusting the each reference's <code>.<em>n</em></code> index as appropriate. For example, assume
-  these references:</p>
-  <pre class="no-pretty-print">
-android.library.reference.1=path/to/library_projectA
-android.library.reference.2=path/to/library_projectB
-android.library.reference.3=path/to/library_projectC
-</pre>
-
-  <p>You can reorder the references to give highest priority to <code>library_projectC</code> in
-  this way:</p>
-  <pre class="no-pretty-print">
-android.library.reference.2=path/to/library_projectA
-android.library.reference.3=path/to/library_projectB
-android.library.reference.1=path/to/library_projectC
-</pre>
-
-  <p>Note that the <code>.<em>n</em></code> index in the references must begin at "1" and increase
-  uniformly without "holes". References appearing in the index after a hole are ignored.</p>
-
-  <p>At build time, the libraries are merged with the application one at a time, starting from the
-  lowest priority to the highest. Note that a library cannot itself reference another library and
-  that, at build time, libraries are not merged with each other before being merged with the
-  application.</p>
-
-  <h3 id="DeclaringLibrary">Declaring library components in the manifest file</h3>
-
-  <p>In the manifest file of the application project, you must add declarations of all components
-  that the application will use that are imported from a library project. For example, you must
-  declare any <code>&lt;activity&gt;</code>, <code>&lt;service&gt;</code>,
-  <code>&lt;receiver&gt;</code>, <code>&lt;provider&gt;</code>, and so on, as well as
-  <code>&lt;permission&gt;</code>, <code>&lt;uses-library&gt;</code>, and similar elements.</p>
-
-  <p>Declarations should reference the library components by their fully-qualified package names,
-  where appropriate.</p>
-
-  <p>For example, the <a href=
-  "{@docRoot}resources/samples/TicTacToeMain/AndroidManifest.html">TicTacToeMain</a> example
-  application declares the library Activity <code>GameActivity</code> like this:</p>
-  <pre>
-&lt;manifest&gt;
-  ...
-  &lt;application&gt;
-    ...
-    &lt;activity android:name="com.example.android.tictactoe.library.GameActivity" /&gt;
-    ...
-  &lt;/application&gt;
-&lt;/manifest&gt;
-</pre>
-
-  <p>For more information about the manifest file, see the documentation for
-  <a href="{@docRoot}guide/topics/manifest/manifest-intro.html">AndroidManifest.xml</a>.</p>
-
-  <h3 id="depAppBuild">Building a dependent application</h3>
-
-  <p>To build an application project that depends on one or more library projects, you can use the
-  standard Gradle build commands and compile modes, as described in <a href=
-  "{@docRoot}tools/building/index.html">Building and Running</a>. The tools
-compile and merge all libraries referenced by the application as part of
-  compiling the dependent application project. No additional commands or steps are necessary.</p>
-
diff --git a/docs/html/tools/projects/templates.jd b/docs/html/tools/projects/templates.jd
deleted file mode 100644
index 676ca50..0000000
--- a/docs/html/tools/projects/templates.jd
+++ /dev/null
@@ -1,366 +0,0 @@
-page.title=Using Code Templates
-page.image=images/cards/card-using-code-templates_16x9_2x.png
-page.metaDescription=Quickly create Android app projects with various UI or functional components.
-page.tags=studio,templates,firstapp
-@jd:body
-
-  <div id="qv-wrapper">
-    <div id="qv">
-      <h2>In this document</h2>
-
-      <ol>
-        <li><a href="#app-templates">Application Templates</a>
-          <ol>
-            <li><a href="#blank-activity">BlankActivity Template</a></li>
-            <li><a href="#full-screen-activity">Full Screen Activity Template</a></li>
-            <li><a href="#master-detail-activity">Master Detail Flow Template</a></li>
-          </ol>
-        </li>
-
-        <li><a href="#activity-templates">Activity Templates</a>
-          <ol>
-            <li><a href="#login-activity">Login Activity Template</a></li>
-            <li><a href="#settings-activity">Settings Activity Template</a></li>
-          </ol>
-        </li>
-        <li><a href="#object-templates">Other Templates</a></li>
-      </ol>
-
-    </div>
-  </div>
-
-<p>The SDK tools provide templates for quickly creating Android application projects with the basic
-  structure or for adding components to your existing application modules. The code templates
-  provided by the Android SDK follow the Android design and development guidelines to get you on the
-  right track to creating a beautiful, functional application.</p>
-
-<p>There are several types of Android code templates, which can create anything from an entire
-  application down to specific application components. The main categories of code templates are as
-  follows:</p>
-
-<ul>
-  <li><a href="#app-templates">Application Templates</a></li>
-  <li><a href="#activity-templates">Activity Templates</a></li>
-  <li><a href="#object-templates">Other Templates</a></li>
-</ul>
-
-<p>
-  The templates use <a href=
-  "{@docRoot}tools/support-library/features.html">support library</a> objects
-  if such objects are available. The support library objects make new features
-  available on the widest range of platforms. For example, since the templates
-  use the <a href=
-  "{@docRoot}tools/support-library/features.html#v7-appcompat">appcompat
-  library</a>, apps based on the templates use <a href=
-  "{@docRoot}design/material/index.html">material design</a> user interface
-  principles even if they are running on older Android devices that do not
-  directly support material design.
-</p>
-
-<h2 id="app-templates">Application Templates</h2>
-
-<p>Application templates create basic Android application modules that you can immediately run and test
-  on your Android device. These templates are available when you create a new Android module,
-  though you can also use these templates to <a href="#activity-templates">add new activities</a>
-  to an existing module.</p>
-
-<p>To use Android application templates:</p>
-
-<ol>
-  <li>In Android Studio, select <strong>File &gt; New &gt; Module</strong>.</li>
-  <li>Enter the settings for your application, including <strong>Application Name</strong>,
-  <strong>Company Domain</strong>, <strong>Package name</strong>, and <strong>minimum SDK</strong>,
-  then click <strong>Next</strong>.</li>
-  <li>Select an application template to use, then click <strong>Next</strong>. For example,
-    <ul>
-      <li><a href="#blank-activity">BlankActivity</a></li>
-      <li><a href="#full-screen-activity">FullScreenActivity</a></li>
-      <li><a href="#master-detail-activity">MasterDetailFlow</a></li>
-
-    </ul>
-  </li>
-  <li>Enter the settings for your activity, including <strong>Activity Name</strong>,
-  <strong>layout Name</strong>, <strong>Title</strong>, and <strong>Menu Resource Name</strong>,
-  then click <strong>Finish</strong>.</li>
-</ol>
-
-<p class="note">
-  <strong>Note:</strong> The other activity template options also create applications, however these
-  applications require further modification before they can be launched on an Android device.
-</p>
-
-
-<h3 id="blank-activity">Blank Activity Template</h3>
-
-<table>
-  <tr>
-    <th width="206px">Example</th>
-
-    <th>Description</th>
-  </tr>
-
-  <tr>
-    <td><img src="{@docRoot}images/code_templates/ba-no-navigation.png" alt="" />
-    </td>
-
-    <td><p>The <strong>BlankActivity</strong> template with the <strong>Navigation Type:
-      None</strong> option creates a simple application that follows the
-      <a href="{@docRoot}design/index.html">Android Design</a> guidelines. Use this template to
-      create a basic, minimal app as a starting point for your project.</p>
-
-      <p>This template includes:</p>
-
-      <ul>
-        <li>Title bar ({@link android.app.ActionBar} on Android 3.0 and later)</li>
-        <li>Options menu (action overflow on Android 3.0 and later) </li>
-        <li>Basic layout</li>
-      </ul>
-    </td>
-  </tr>
-
-  <tr>
-    <td><img src="{@docRoot}images/code_templates/ba-tabs.png" alt="" />
-    </td>
-
-    <td><p>The <strong>BlankActivity</strong> template with the <strong>Navigation Type:
-      Tabs</strong> or <strong>Tabs + Swipe</strong> option creates an application with
-      three sections based on the {@link android.app.Fragment} class and a tabbed user
-      interface.</p>
-
-      <p>This template includes:</p>
-
-      <ul>
-        <li>{@link android.app.ActionBar} for tab controls</li>
-        <li>{@link android.app.Fragment} objects for section content</li>
-        <li>Optional swipe gesture support based on the
-          <a href="{@docRoot}design/patterns/swipe-views.html">swipe view</a> design pattern,
-          which extends {@link android.support.v4.app.FragmentPagerAdapter} to manage section
-          fragments</li>
-      </ul>
-    </td>
-  </tr>
-
-  <tr>
-    <td><img src="{@docRoot}images/code_templates/ba-title-strip.png" alt="" />
-    </td>
-
-    <td><p>The <strong>BlankActivity</strong> template with the <strong>Navigation Type:
-      Swipe Views + Title Strip</strong> option creates an application with three
-      {@link android.app.Fragment} sections, a compact title strip header (known as
-      <a href="{@docRoot}design/building-blocks/tabs.html#scrollable">Scrollable Tabs</a> in the
-      <a href="{@docRoot}design/index.html">Android Design</a> guide) and swipe navigation between
-      the sections, based on the <a href="{@docRoot}design/patterns/swipe-views.html">swipe
-      view</a> design pattern.</p>
-
-      <p>This template includes:</p>
-
-      <ul>
-        <li>{@link android.support.v4.view.PagerTitleStrip} for section titles</li>
-        <li>{@link android.app.Fragment} objects for section content</li>
-        <li>{@link android.support.v4.app.FragmentPagerAdapter} to manage section fragments</li>
-      </ul>
-    </td>
-  </tr>
-
-  <tr>
-    <td><img src="{@docRoot}images/code_templates/ba-dropdown.png" alt="" />
-    </td>
-
-    <td><p>The <strong>BlankActivity</strong> template with the <strong>Navigation Type:
-      Dropdown</strong> option creates an application that extends
-      {@link android.support.v4.app.FragmentActivity}, containing three
-      {@link android.app.Fragment} sections, with an {@link android.app.ActionBar} using list mode
-      navigation.</p>
-
-      <p>This template includes:</p>
-
-      <ul>
-        <li>{@link android.app.ActionBar} for list mode navigation</li>
-        <li>{@link android.app.Fragment} objects for section content</li>
-      </ul>
-    </td>
-  </tr>
-</table>
-
-
-<h3 id="full-screen-activity">Full Screen Activity Template</h3>
-
-<table>
-  <tr>
-    <th width="240px">Example</th>
-
-    <th>Description</th>
-  </tr>
-
-  <tr>
-    <td><img src="{@docRoot}images/code_templates/full-screen-activity.png" alt="" />
-    </td>
-
-    <td><p>This template provides an implementation of an activity which alternates between a
-      primary, full screen view and a view with standard user interface controls, including the
-      notification bar and application title bar. The full screen view is the default and a user
-      can activate the standard view by touching the device screen.</p>
-
-      <p>This template includes:</p>
-
-      <ul>
-        <li>{@code SystemUiHider} implementation that manages hiding of the system user interface
-          using a version-compatible approach</li>
-        <li>Basic layout</li>
-      </ul>
-    </td>
-  </tr>
-</table>
-
-
-<h3 id="master-detail-activity">Master Detail Flow Template</h3>
-
-<table>
-  <tr>
-    <th width="350px">Example</th>
-
-    <th>Description</th>
-  </tr>
-
-  <tr>
-    <td><img src="{@docRoot}images/code_templates/master-detail-flow.png" alt=""/>
-    </td>
-
-    <td><p>This template creates an adaptive layout for a set of items and associated details. On a
-      tablet device, the item list and item details are displayed on the same screen. On a smaller
-      device, the list and details are displayed on separate screens.</p>
-
-      <p class="note">
-        <strong>Note:</strong> This template follows the recommendations of the
-        <a href="{@docRoot}training/multiscreen/index.html">Designing for Multiple Screens</a>
-        Android training.
-      </p>
-
-      <p>This template includes:</p>
-
-      <ul>
-        <li>Adaptive layout using
-          <a href="{@docRoot}guide/topics/resources/providing-resources.html#AlternativeResources"
-          >alternative resource</a> XML files</li>
-        <li>{@link android.support.v4.app.FragmentActivity}, {@link android.app.Fragment} and
-          {@link android.support.v4.app.ListFragment} implementations</li>
-      </ul></td>
-  </tr>
-</table>
-
-
-<h2 id="activity-templates">Activity Templates</h2>
-
-<p>Android activity templates provide options to add new activities to your existing
-  application.</p>
-
-<p>To use Android activity templates:</p>
-
-<ol>
-  <li>Right click the project folder of the Android application where you want to add an
-    activity.</li>
-  <li>Select <strong>New &gt; Other...</strong></li>
-  <li>Select <strong>Android &gt; Android Activity</strong>, then click <strong>Next</strong>.</li>
-  <li>Select an activity template, then follow the instructions to add it to your existing
-    application.
-    <ul>
-      <li><a href="#login-activity">LoginActivity</a></li>
-      <li><a href="#settings-activity">SettingsActivity</a></li>
-      <li><a href="#blank-activity">BlankActivity</a></li>
-      <li><a href="#full-screen-activity">FullScreenActivity</a></li>
-      <li><a href="#master-detail-activity">MasterDetailFlow</a></li>
-    </ul>
-  </li>
-</ol>
-
-<p>These templates create the same type of activity as they do when used as an application template,
-however the following templates create activities which are specifically intended to be used as part
-of an existing application.</p>
-
-
-<h3 id="login-activity">Login Activity Template</h3>
-
-<table>
-  <tr>
-    <th width="206px">Example</th>
-
-    <th>Description</th>
-  </tr>
-
-  <tr>
-    <td><img src="{@docRoot}images/code_templates/login-activity.png" alt="" />
-    </td>
-
-    <td><p>This activity template provides input fields and a sample implementation of
-      an {@link android.os.AsyncTask} that asks users to login or register with their credentials.</p>
-
-      <p>This template includes:</p>
-
-      <ul>
-        <li>Recommended user interface for requesting login information</li>
-        <li>{@link android.os.AsyncTask} implementation for handing network operations separately
-          from the main user interface thread</li>
-        <li>Progress indicator during network operations</li>
-      </ul>
-    </td>
-  </tr>
-</table>
-
-
-<h3 id="settings-activity">Settings Activity Template</h3>
-
-<table>
-  <tr>
-    <th width="206px">Example</th>
-
-    <th>Description</th>
-  </tr>
-
-  <tr>
-    <td><img src="{@docRoot}images/code_templates/settings-activity.png" alt="" />
-    </td>
-
-    <td><p>This template extends the {@link android.preference.PreferenceActivity} class and uses an
-      XML file to create preference settings. This template also demonstrates how to implement
-      several data types for settings.</p>
-
-      <p>This template includes:</p>
-
-      <ul>
-        <li>Activity extending {@link android.preference.PreferenceActivity}</li>
-        <li>Preference values defined using XML files added to the {@code res/xml/} directory of
-          your project.</li>
-      </ul>
-    </td>
-  </tr>
-</table>
-
-
-<h2 id="object-templates">Other Templates</h2>
-
-<p>Android object templates provide options to add new components to your existing application,
-including the previously mentioned activities as well as the following additional items:</p>
-
-<p>To use Android object templates:</p>
-
-<ol>
-  <li>Right-click the module folder of the Android application where you want to add a code
-    component.</li>
-  <li>Select <strong>New</strong></li>
-  <li>Select the object type and template, then follow the instructions to add it to your existing
-    application.
-    <ul>
-      <li>AIDL</li>
-      <li>Activity</li>
-      <li>Folder</li>
-      <li>Fragment</li>
-      <li>Google</li>
-      <li>Other</li>
-      <li>Service</li>
-      <li>UI Component</li>
-      <li>Wear</li>
-      <li>Widget</li>
-      <li>XML</li>
-    </ul>
-  </li>
-</ol>
diff --git a/docs/html/tools/publishing/app-signing.jd b/docs/html/tools/publishing/app-signing.jd
deleted file mode 100644
index 4b74f5f..0000000
--- a/docs/html/tools/publishing/app-signing.jd
+++ /dev/null
@@ -1,362 +0,0 @@
-page.title=Signing Your Applications
-@jd:body
-
-<div id="qv-wrapper">
-<div id="qv">
-
-<h2>In this document</h2>
-
-<ol>
-<li><a href="#overview">Signing Overview</a>
-  <ol>
-  	<li><a href="#debug-mode">Signing in Debug Mode</a></li>
-  	<li><a href="#release-mode">Signing in Release Mode</a></li>
-  	<li><a href="#wear-apps">Signing Android Wear Apps</a></li>
-  </ol>
-</li>
-<li><a href="#studio">Signing Your App in Android Studio</a>
-  <ol>
-  	<li><a href="#sign-auto">Automatically Signing Your App</a></li>
-  </ol>
-</li>
-<li><a href="#studio">Signing Your App with Android Studio</a></li>
-<li><a href="#considerations">Signing Considerations</a></li>
-<li><a href="#secure-key">Securing Your Private Key</a></li>
-<li><a href="#expdebug">Expiry of the Debug Certificate</a></li>
-<li><a href="#signing-manually">Signing Your App Manually</a></li>
-</ol>
-
-<h2>See also</h2>
-
-<ol>
-<li><a href="{@docRoot}tools/publishing/versioning.html">Versioning Your Applications</a></li>
-<li><a href="{@docRoot}tools/publishing/preparing.html">Preparing to Publish</a></li>
-</ol>
-
-</div>
-</div>
-
-
-<p>Android requires that all apps be digitally signed with a certificate before they can be
-installed. Android uses this certificate to identify the author of an app, and the certificate
-does not need to be signed by a certificate authority. Android apps often use self-signed
-certificates. The app developer holds the certificate's private key.</p>
-
-
-<h2 id="overview">Signing Overview</h2>
-
-<p>You can sign an app in debug or release mode. You sign your app in debug mode during development
-and in release mode when you are ready to distribute your app. The Android SDK generates a
-certificate to sign apps in debug mode. To sign apps in release mode, you need to generate
-your own certificate.</p>
-
-<h3 id="debug-mode">Signing in Debug Mode</h3>
-
-<p>In debug mode, you sign your app with a debug certificate generated by the Android SDK tools.
-This certificate has a private key with a known password, so you can run and debug your app
-without typing the password every time you make a change to your project.</p>
-
-<p>Android Studio signs your app in debug mode automatically when
-you run or debug your project from the IDE.</p>
-
-<p>You can run and debug an app signed in debug mode on the emulator and on devices connected
-to your development machine through USB, but you cannot distribute an app signed in debug
-mode.</p>
-
-<p>By default, the <em>debug</em> configuration uses a debug keystore, with a known
-password and a default key with a known password.
-The debug keystore is located in <code>$HOME/.android/debug.keystore</code>, and
-is created if not present.
-The debug build type is set to use this debug <code>SigningConfig</code> automatically.</p>
-
-<p>For more information about how to build and run apps in debug mode, see
-<a href="{@docRoot}tools/building/index.html">Building and Running</a>.</p>
-
-<h3 id="release-mode">Signing in Release Mode</h3>
-
-<p>In release mode, you sign your app with your own certificate:</p>
-
-<ol>
-<li><em>Create a keystore.</em> A <strong>keystore</strong> is a binary file that contains a
-set of private keys. You must keep your keystore in a safe and secure place.</li>
-<li><em>Create a private key.</em> A <strong>private key</strong> represents the entity to
-be identified with the app, such as a person or a company.</li>
-<li><p>Add the signing configuration to the build file for the <code>app</code> module:</p>
-
-<pre>
-...
-android {
-    ...
-    defaultConfig { ... }
-    signingConfigs {
-        release {
-            storeFile file("myreleasekey.keystore")
-            storePassword "password"
-            keyAlias "MyReleaseKey"
-            keyPassword "password"
-        }
-    }
-    buildTypes {
-        release {
-            ...
-            signingConfig signingConfigs.release
-        }
-    }
-}
-...
-</pre>
-    </li>
-<li>Invoke the <code>assembleRelease</code> build task from Android Studio.</li>
-</ol>
-
-<p>The package in <code>app/build/apk/app-release.apk</code> is now signed with your release
-key.</p>
-
-<p class="note"><strong>Note:</strong> Including the passwords for your release key and keystore
-inside the build file is not a good security practice. Alternatively, you can configure the build
-file to obtain these passwords from environment variables or have the build process prompt you
-for these passwords.</p>
-
-<p>To obtain these passwords from environment variables:</p>
-
-<pre>
-storePassword System.getenv("KSTOREPWD")
-keyPassword System.getenv("KEYPWD")
-</pre>
-
-<p>To have the build process prompt you for these passwords if you are invoking the build from
-the command line:</p>
-
-<pre>
-storePassword System.console().readLine("\nKeystore password: ")
-keyPassword System.console().readLine("\nKey password: ")
-</pre>
-
-
-<p>After you complete this process, you can distribute your app and publish it on Google Play.</p>
-
-<p class="warning"><strong>Warning:</strong> Keep your keystore and private key in a safe and
-secure place, and ensure that you have secure backups of them. If you publish an app to Google
-Play and then lose the key with which you signed your app, you will not be able to publish
-any updates to your app, since you must always sign all versions of your app with the same
-key.</p>
-
-<p>The rest of this document provides detailed instructions about how to generate a private
-key and sign your apps in release mode with Android Studio.</p>
-
-<h3 id="wear-apps">Signing Android Wear Apps</h3>
-
-<p>When publishing Android Wear apps, you package the wearable app inside of a handheld app,
-because users cannot browse and install apps directly on the wearable. Both apps must be signed.
-For more information on packaging and signing Android Wear apps, see
-<a href="{@docRoot}training/wearables/apps/packaging.html">Packaging Wearable Apps</a>.</p>
-
-
-<h2 id="studio">Signing Your App in Android Studio</h2>
-
-<p>To sign your app in release mode in Android Studio, follow these steps:</p>
-
-<ol>
-<li>On the menu bar, click <strong>Build</strong> &gt; <strong>Generate Signed APK</strong>.</li>
-<li><p>On the <em>Generate Signed APK Wizard</em> window, click <strong>Create new</strong> to
-create a new keystore.</p>
-<p>If you already have a keystore, go to step 4.</p></li>
-<li><p>On the <em>New Key Store</em> window, provide the required information as shown
-in figure 1.</p>
-<p>Your key should be valid for at least 25 years, so you can sign app updates
-with the same key through the lifespan of your app.</p>
-<img src="{@docRoot}images/tools/signstudio2.png" alt=""
-     width="416" height="364" style="margin-top:15px"/>
-<p class="img-caption"><strong>Figure 1</strong>. Create a new keystore in Android Studio.</p>
-</li>
-<li><p>On the <em>Generate Signed APK Wizard</em> window, select a keystore, a private key, and
-enter the passwords for both. Then click <strong>Next</strong>.</p>
-<img src="{@docRoot}images/tools/signstudio1.png" alt=""
-     width="349" height="232" style="margin-top:15px"/>
-<p class="img-caption"><strong>Figure 2</strong>. Select a private key in Android Studio.</p>
-</li>
-<li><p>
-  On the next window, select a destination for the signed APK(s), select the
-  build type, (if applicable) choose the product flavor(s), and click
-  <strong>Finish</strong>.</p>
-<img src="{@docRoot}images/tools/signstudio3.png" alt=""
-     width="350" height="175" style="margin-top:15px"/>
-<p class="img-caption">
-  <strong>Figure 3</strong>. Generate signed APKs for the selected product
-  flavors.
-</p>
-<p class="note">
-  <strong>Note:</strong> If your project uses product flavors, you can select
-  multiple product flavors while holding down the <strong>Ctrl</strong> key on
-  Windown/Linux, or the <strong>Command</strong> key on Mac OSX. Android Studio
-  will generate a separate APK for each selected product flavor.
-</p>
-
-</li>
-</ol>
-
-<h3 id="sign-auto">Automatically Signing Your App</h3>
-
-<p>In Android Studio, you can configure your project to sign your release APK automatically
-during the build process:</p>
-
-<ol>
-<li>On the project browser, right click on your app and select <strong>Open Module
-Settings</strong>.</li>
-<li>On the <em>Project Structure</em> window, select your app's module under <em>Modules</em>.</li>
-<li>Click on the <strong>Signing</strong> tab.</li>
-<li><p>Select your keystore file, enter a name for this signing configuration (as you may create
-more than one), and enter the required information.</p>
-<img src="{@docRoot}images/tools/signstudio10.png" alt=""
-     width="623" height="372" style="margin-top:15px"/>
-<p class="img-caption"><strong>Figure 4</strong>. Create a signing configuration in Android
-Studio.</p>
-</li>
-<li>Click on the <strong>Build Types</strong> tab.</li>
-<li>Select the <strong>release</strong> build.</li>
-<li><p>Under <em>Signing Config</em>, select the signing configuration you just created.</p>
-<img src="{@docRoot}images/tools/signstudio11.png" alt=""
-     width="623" height="372" style="margin-top:15px"/>
-<p class="img-caption"><strong>Figure 5</strong>. Select a signing configuration in Android
-Studio.</p>
-</li>
-<li>Click <strong>OK</strong>.</li>
-</ol>
-
-<p>You can also specify your signing settings in Gradle configuration files. For more information,
-see <a href="{@docRoot}tools/building/configuring-gradle.html#configureSigning">Configuring Gradle
-Builds</a>.</p>
-
-
-
-<h2 id="considerations">Signing Considerations</h2>
-
-<p>You should sign all of your apps with the same certificate throughout the expected lifespan
-of your applications. There are several reasons why you should do so:</p>
-
-<ul>
-<li>App upgrade: When the system is installing an update to an app, it compares the certificate(s)
-in the new version with those in the existing version. The system allows the update if the
-certificates match. If you sign the new version with a different certificate, you must assign a
-different package name to the application&mdash;in this case, the user installs the new version as
-a completely new application.</li>
-<li>App modularity: Android allows apps signed by the same certificate to run in the same process,
-if the applications so requests, so that the system treats them as a single application. In this
-way you can deploy your app in modules, and users can update each of the modules independently.</li>
-<li>Code/data sharing through permissions: Android provides signature-based permissions
-enforcement, so that an app can expose functionality to another app that is signed with a
-specified certificate. By signing multiple apps with the same certificate and using
-signature-based permissions checks, your apps can share code and data in a secure manner.</li>
-</ul>
-
-<p>If you plan to support upgrades for an app, ensure that your key has a validity
-period that exceeds the expected lifespan of that app. A validity period of 25 years or more is
-recommended. When your key's validity period expires, users will no longer be able to seamlessly
-upgrade to new versions of your application.</p>
-
-<p>If you plan to publish your apps on Google Play, the key you use to sign these apps must have
-a validity period ending after 22 October 2033. Google Play enforces this requirement to ensure
-that users can seamlessly upgrade apps when new versions are available.</p>
-
-
-<h2 id="secure-key">Securing Your Private Key</h2>
-
-<p>Maintaining the security of your private key is of critical importance, both to you and to
-the user. If you allow someone to use your key, or if you leave your keystore and passwords in
-an unsecured location such that a third-party could find and use them, your authoring identity
-and the trust of the user are compromised.</p>
-
-<p>If a third party should manage to take your key without your knowledge or permission, that
-person could sign and distribute apps that maliciously replace your authentic apps or corrupt
-them. Such a person could also sign and distribute apps under your identity that attack
-other apps or the system itself, or corrupt or steal user data.</p>
-
-<p>Your private key is required for signing all future versions of your app. If you lose or
-misplace your key, you will not be able to publish updates to your existing appn. You cannot
-regenerate a previously generated key.</p>
-
-<p>Your reputation as a developer entity depends on your securing your private key properly, at
-all times, until the key is expired. Here are some tips for keeping your key secure:</p>
-
-<ul>
-<li>Select strong passwords for the keystore and key.</li>
-<li>Do not give or lend anyone your private key, and do not let unauthorized persons know your
-keystore and key passwords.</li>
-<li>Keep the keystore file containing your private key in a safe, secure place.</li>
-</ul>
-
-<p>In general, if you follow common-sense precautions when generating, using, and storing
-your key, it will remain secure.</p>
-
-
-<h2 id="expdebug">Expiry of the Debug Certificate</h2>
-
-<p>The self-signed certificate used to sign your application in debug mode has an expiration date
-of 365 days from its creation date. When the certificate expires, you will get a build error.</p>
-
-<p>To fix this problem, simply delete the <code>debug.keystore</code> file. The default storage
-location is in <code>~/.android/</code> on OS X and Linux, in <code>C:\Documents and
-Settings\&lt;user&gt;\.android\</code> on Windows XP, and in
-<code>C:\Users\&lt;user&gt;\.android\</code> on Windows Vista and Windows 7.</p>
-
-<p>The next time you build, the build tools will regenerate a new keystore and debug key.</p>
-
-<p>Note that, if your development machine is using a non-Gregorian locale, the build tools may
-erroneously generate an already-expired debug certificate, so that you get an error when trying
-to compile your application. For workaround information, see the troubleshooting topic
-<a href="{@docRoot}resources/faq/troubleshooting.html#signingcalendar">I can't compile my app
-because the build tools generated an expired debug certificate</a>.</p>
-
-
-<h2 id="signing-manually">Signing Your App Manually</h2>
-
-<p>You do not need Android Studio to sign your app. You can sign
-your app from the command line using standard tools from the Android SDK and the JDK. To sign
-an app in release mode from the command line:</p>
-
-<ol>
-<li>
-  <p>Generate a private key using
-  <code><a href="http://docs.oracle.com/javase/6/docs/technotes/tools/solaris/keytool.html"
-    >keytool</a></code>.
-  For example:</p>
-<pre class="no-pretty-print">
-$ keytool -genkey -v -keystore my-release-key.keystore
--alias alias_name -keyalg RSA -keysize 2048 -validity 10000
-</pre>
-  <p>This example prompts you for passwords for the keystore and key, and to provide the
-  Distinguished Name fields for your key. It then generates the keystore as a file called
-  <code>my-release-key.keystore</code>. The keystore contains a single key, valid for 10000 days.
-  The alias is a name that you will use later when signing your app.</p>
-</li>
-<li style="margin-top:18px">
-  <p>Compile your app in release mode to obtain an unsigned APK.</p>
-</li>
-<li style="margin-top:18px">
-  <p>Sign your app with your private key using
-  <code><a href="http://docs.oracle.com/javase/6/docs/technotes/tools/windows/jarsigner.html">jarsigner</a></code>:
-  </p>
-<pre class="no-pretty-print">
-$ jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1
--keystore my-release-key.keystore my_application.apk alias_name
-</pre>
-  <p>This example prompts you for passwords for the keystore and key. It then modifies the APK
-  in-place to sign it. Note that you can sign an APK multiple times with different keys.</p>
-</li>
-<li style="margin-top:18px">
-  <p>Verify that your APK is signed. For example:</p>
-<pre class="no-pretty-print">
-$ jarsigner -verify -verbose -certs my_application.apk
-</pre>
-</li>
-<li style="margin-top:18px">
-  <p>Align the final APK package using
-  <code><a href="{@docRoot}tools/help/zipalign.html">zipalign</a></code>.</p>
-<pre class="no-pretty-print">
-$ zipalign -v 4 your_project_name-unaligned.apk your_project_name.apk
-</pre>
-  <p><code>zipalign</code> ensures that all uncompressed data starts with a particular byte
-  alignment relative to the start of the file, which reduces the amount of RAM consumed by an
-  app.</p>
-</li>
-</ol>
diff --git a/docs/html/tools/publishing/preparing.jd b/docs/html/tools/publishing/preparing.jd
deleted file mode 100644
index 3acaedc..0000000
--- a/docs/html/tools/publishing/preparing.jd
+++ /dev/null
@@ -1,354 +0,0 @@
-page.title=Preparing for Release
-page.metaDescription=Developer documentation on how to build the signed, release-ready APK. This process is the same for all Android apps.
-@jd:body
-
-<div id="qv-wrapper">
-  <div id="qv">
-    <h2>Quickview</h2>
-    <ul>
-      <li>Learn which resources you'll need to release your app.</li>
-      <li>Find out how to configure and build your app for release.</li>
-      <li>Learn best practices for releasing your app.</li>
-    </ul>
-    <h2>In this document</h2>
-    <ol>
-      <li><a href="#publishing-intro">Introduction</a></li>
-      <li><a href="#publishing-gather">Gathering Materials and Resources</a></li>
-      <li><a href="#publishing-configure">Configuring Your Application</a></li>
-      <li><a href="#publishing-build">Building Your Application</a></li>
-      <li><a href="#publishing-resources">Preparing External Servers and Resources</a></li>
-      <li><a href="#publishing-test">Testing Your Application for Release</a></li>
-    </ol>
-    <h2>See also</h2>
-    <ol>
-      <li><a href="{@docRoot}tools/publishing/publishing_overview.html">Publishing Overview</a></li>
-      <li><a href="{@docRoot}tools/publishing/app-signing.html">Signing Your Applications</a></li>
-      <li><a href="{@docRoot}distribute/tools/launch-checklist.html">Launch Checklist for Google Play</a></li>
-    </ol>
-  </div>
-</div>
-
-<p>Before you distribute your Android application to users you need to prepare it for release. The
-preparation process is a required <a href="{@docRoot}tools/workflow/index.html">development
-task</a> for all Android applications and is the first step in the publishing process (see figure
-1).</p>
-
-<p>When you prepare your application for release, you configure, build, and test a release
-version of your application. The configuration tasks are straightforward, involving basic code
-cleanup and code modification tasks that help optimize your application. The build process is
-similar to the debug build process and can be done using JDK and Android SDK tools. The testing
-tasks serve as a final check, ensuring that your application performs as expected under real-world
-conditions. When you are finished preparing your application for release you have a signed
-<code>.apk</code> file, which you can distribute directly to users or distribute through an
-application marketplace such as Google Play.</p>
-
-<p>This document summarizes the main tasks you need to perform to prepare your application for
-release. The tasks that are described in this document apply to all Android applications regardless
-how they are released or distributed to users. If you are releasing your application through Google
-Play, you should also read <a href="{@docRoot}distribute/tools/launch-checklist.html">Publishing
-Checklist for Google Play</a> to be sure your release-ready application satisfies all Google Play
-requirements.</p>
-
-<p class="note"><strong>Note:</strong> As a best practice, your application should meet all of your
-release criteria for functionality, performance, and stability before you perform the tasks outlined
-in this document.</p>
-
-<img src="{@docRoot}images/publishing/publishing_overview_prep.png"
-     alt="Shows how the preparation process fits into the development process"
-     height="190"
-     id="figure1" />
-<p class="img-caption">
-  <strong>Figure 1.</strong> Preparing for release is a required <a
-href="{@docRoot}tools/workflow/index.html">development
-task</a> and is the first step in the publishing process.
-</p>
-
-<h2 id="publishing-intro">Introduction</h2>
-
-<p>To release your application to users you need to create a release-ready package that users can
-install and run on their Android-powered devices. The release-ready package contains the same
-components as the debug <code>.apk</code> file &mdash; compiled source code, resources, manifest
-file, and so on &mdash; and it is built using the same build tools. However, unlike the debug
-<code>.apk</code> file, the release-ready <code>.apk</code> file is signed with your own certificate
-and it is optimized with the zipalign tool.</p>
-
-<div class="figure" style="width:331px">
-  <img src="{@docRoot}images/publishing/publishing_preparing.png"
-       alt="Shows the five tasks you perform to prepare your app for release"
-       height="450" />
-  <p class="img-caption">
-    <strong>Figure 2.</strong> You perform five main tasks to prepare your application for
-    release.
-  </p>
-</div>
-
-<p>The signing and optimization tasks are usually seamless if you are building your application with
-Android Studio. For example, you can use Android Studio with the Gradle build files to compile, sign,
-and optimize your application all at once. You can also configure the Gradle build files to do the
-same when you build from the command line. For more details about using the Gradle build files, see
-the <a href="{@docRoot}sdk/installing/studio-build.html">Build System</a> guide.</p>
-
-<p>To prepare your application for release you typically perform five main tasks (see figure 2).
-Each main task may include one or more smaller tasks depending on how you are releasing your
-application. For example, if you are releasing your application through Google Play you may want
-to add special filtering rules to your manifest while you are configuring your application for
-release. Similarly, to meet Google Play publishing guidelines you may have to prepare screenshots
-and create promotional text while you are gathering materials for release.</p>
-
-<p>You usually perform the tasks listed in figure 2 after you have throroughly debugged and tested
-your application. The Android SDK contains several tools to help you test and debug your Android
-applications. For more information, see the <a
-href="{@docRoot}tools/debugging/index.html">Debugging</a> and <a
-href="{@docRoot}tools/testing/index.html">Testing</a> sections in the Dev Guide.</p>
-
-<h2 id="publishing-gather">Gathering Materials and Resources</h2>
-
-<p>To begin preparing your application for release you need to gather several supporting items. At a
-minimum this includes cryptographic keys for signing your application and an application icon. You
-might also want to include an end-user license agreement.</p>
-
-<h4 id="publishing-keys">Cryptographic keys</h4>
-
-<p>The Android system requires that each installed application be digitally signed with a
-certificate that is owned by the application's developer (that is, a certificate for which the
-developer holds the private key). The Android system uses the certificate as a means of identifying
-the author of an application and establishing trust relationships between applications. The
-certificate that you use for signing does not need to be signed by a certificate authority; the
-Android system allows you to sign your applications with a self-signed certificate. To learn about
-certificate requirements, see <a href="{@docRoot}tools/publishing/app-signing.html">Signing Your
-Applications</a>.</p>
-
-<p class="caution"><strong>Important:</strong> Your application must be signed with a cryptographic
-key whose validity period ends after 22 October 2033.</p>
-
-<p>You may also have to obtain other release keys if your application accesses a service or uses a
-third-party library that requires you to use a key that is based on your private key. For example,
-if your application uses the <a
-href="http://code.google.com/android/add-ons/google-apis/reference/com/google/android/maps/MapView.html">MapView</a>
-class, which is part of the <a
-href="http://code.google.com/android/add-ons/google-apis/maps-overview.html">Google Maps external
-library</a>, you will need to register your application with the Google Maps service and obtain
-a Maps API key. For information about getting a Maps API key, see <a
-href="http://code.google.com/android/add-ons/google-apis/mapkey.html"> Obtaining a Maps API
-key</a>.</p>
-
-<h4>Application Icon</h4>
-
-<p>Be sure you have an application icon and that it meets the recommended <a
-href="{@docRoot}guide/practices/ui_guidelines/icon_design_launcher.html">icon guidelines</a>. Your
-application's icon helps users identify your application on a device's Home
-screen and in the Launcher window. It also appears in Manage Applications, My Downloads, and
-elsewhere. In addition, publishing services such as Google Play display your icon to users.</p>
-
-<p class="note"><strong>Note:</strong> If you are releasing your application on Google Play, you
-need to create a high resolution
-  version of your icon. See <a
-href="https://www.google.com/support/androidmarket/developer/bin/answer.py?answer=1078870">Graphic
-Assets for your Application</a> for more information.</p>
-
-<h4>End-user License Agreement</h4>
-
-<p>Consider preparing an End User License Agreement (EULA) for your application. A EULA can help
-protect your person, organization, and intellectual property, and we recommend that you provide one
-with your application.</p>
-
-<h4>Miscellaneous Materials</h4>
-
-<p>You might also have to prepare promotional and marketing materials to publicize your application.
-For example, if you are releasing your application on Google Play you will need to prepare some
-promotional text and you will need to create screenshots of your application. For more
-information, see
-<a href="https://www.google.com/support/androidmarket/developer/bin/answer.py?answer=1078870">
-Graphic Assets for your Application</a></p>
-
-<h2 id="publishing-configure">Configuring Your Application for Release</h2>
-
-<p>After you gather all of your supporting materials you can start configuring your application
-for release. This section provides a summary of the configuration changes we recommend that you make
-to your source code, resource files, and application manifest prior to releasing your application.
-Although most of the configuration changes listed in this section are optional, they are
-considered good coding practices and we encourage you to implement them. In some cases,
-you may have already made these configuration changes as part of your development process.</p>
-
-<h4>Choose a good package name</h4>
-
-<p>Make sure you choose a package name that is suitable over the life of your application. You
-cannot change the package name after you distribute your application to users. You can set the
-package name in application's manifest file. For more information, see the <a
-href="{@docRoot}guide/topics/manifest/manifest-element.html#package">package</a> attribute
-documentation.</p>
-
-<h4>Turn off logging and debugging</h4>
-
-<p>Make sure you deactivate logging and disable the debugging option before you build your
-application for release. You can deactivate logging by removing calls to
-{@link android.util.Log} methods in your source files. You can disable debugging by removing the
-<code>android:debuggable</code> attribute from the <code>&lt;application&gt;</code> tag in your
-manifest file, or by setting the <code>android:debuggable</code> attribute to
-<code>false</code> in your manifest file. Also, remove any log files or static test files that
-were created in your project.</p>
-
-<p>Also, you should remove all {@link android.os.Debug} tracing calls that you
-added to your code, such as {@link android.os.Debug#startMethodTracing()} and
-{@link android.os.Debug#stopMethodTracing()} method calls.</p>
-
-<p class="caution"><strong>Important:</strong> Ensure that you disable debugging for
-your app if using {@link android.webkit.WebView} to display paid for content or if using JavaScript
-interfaces, since debugging allows users to inject scripts and extract content using Chrome
-DevTools. To disable debugging, use the
-{@link android.webkit.WebView#setWebContentsDebuggingEnabled(boolean) WebView.setWebContentsDebuggingEnabled()}
-method.</p>
-
-<h4>Clean up your project directories</h4>
-
-<p>Clean up your project and make sure it conforms to the directory structure described in <a
-href="{@docRoot}tools/projects/index.html#ApplicationProjects">Android Projects</a>.
-Leaving stray or orphaned files in your project can prevent your application from compiling and
-cause your application to behave unpredictably. At a minimum you should do the following cleanup
-tasks:</p>
-
-<ul>
-  <li>Review the contents of your <code>jni/</code>, <code>lib/</code>, and <code>src/</code>
-  directories.  The <code>jni/</code> directory should contain only source files associated with the
-  <a href="{@docRoot}tools/sdk/ndk/index.html">Android NDK</a>, such as
-  <code>.c</code>, <code>.cpp</code>, <code>.h</code>, and <code>.mk</code> files. The
-  <code>lib/</code> directory should contain only third-party library files or private library
-  files, including prebuilt shared and static libraries (for example, <code>.so</code> files). The
-  <code>src/</code> directory should contain only the source files for your application
-  (<code>.java</code> and <code>.aidl</code> files). The <code>src/</code> directory should not
-  contain any <code>.jar</code> files.</li>
-  <li>Check your project for private or proprietary data files that your application does not use
-  and remove them. For example, look in your project's <code>res/</code> directory for old
-  drawable files, layout files, and values files that you are no longer using and delete them.</li>
-  <li>Check your <code>lib/</code> directory for test libraries and remove them if they are no
-  longer being used by your application.</li>
-  <li>Review the contents of your <code>assets/</code> directory and your <code>res/raw/</code>
-    directory for raw asset files and static files that you need to update or remove prior to
-    release.</li>
-</ul>
-
-<h4>Review and update your manifest and Gradle build settings</h4>
-
-<p>Verify that the following manifest and build files items are set correctly:</p>
-
-<ul>
-  <li><a href="{@docRoot}guide/topics/manifest/uses-permission-element.html">
-  &lt;uses-permission&gt;</a> element
-    <p>You should specify only those permissions that are relevant and required for your application.</p>
-  </li>
-  <li><code>android:icon</code> and <code>android:label</code> attributes
-    <p>You must specify values for these attributes, which are located in the
-    <a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a>
-    element.</p>
-  </li>
-  <li><code>android:versionCode</code> and <code>android:versionName</code> attributes.
-    <p>We recommend that you specify values for these attributes, which are located in the
-      <a href="{@docRoot}guide/topics/manifest/manifest-element.html">&lt;manifest&gt;</a>
-      element. For more information see
-      <a href="{@docRoot}tools/publishing/versioning.html">Versioning your Application</a>.</p>
-  </li>
-</ul>
-
-<p>There are several additional manifest or build file elements that you can set if you are releasing your
-application on Google Play. For example, the <code>android:minSdkVersion</code> and
-<code>android:targetSdkVersion</code> attributes, which are located in the <a
-href="{@docRoot}guide/topics/manifest/uses-sdk-element.html"> &lt;uses-sdk&gt;</a> element. For more
-information about these and other Google Play settings, see <a
-href="{@docRoot}google/play/filters.html">Filters on Google Play</a>.</p>
-
-<h4>Address compatibility issues</h4>
-
-<p>Android provides several tools and techniques to make your application compatible with a wide
-range of devices. To make your application available to the largest number of users, consider
-doing the following:</p>
-
-<ul>
-  <li><strong>Add support for multiple screen configurations</strong>
-    <p>Make sure you meet the
-    <a href="{@docRoot}guide/practices/screens_support.html#screen-independence">
-    best practices for supporting multiple screens</a>. By supporting multiple screen configurations
-    you can create an application that functions properly and looks good on any of the screen sizes
-    supported by Android.</p>
-  </li>
-  <li><strong>Optimize your application for Android tablet devices.</strong>
-    <p>If your application is designed for devices older than Android 3.0, make it compatible
-    with Android 3.0 devices by following the guidelines and best practices described in
-    <a href="{@docRoot}guide/practices/optimizing-for-3.0.html">Optimizing Apps for Android 3.0
-    </a>.</p>
-  </li>
-  <li><strong>Consider using the Support Library</strong>
-    <p>If your application is designed for devices running Android 3.x, make your application
-    compatible with older versions of Android by adding the
-    <a href="{@docRoot}tools/support-library/index.html">Support Library</a> to your
-    application project. The Support Library provides static support libraries that you can add to
-    your Android application, which enables you to use APIs that are either not available on
-    older platform versions or use utility APIs that are not part of the framework APIs.</p>
-  </li>
-</ul>
-
-<h4>Update URLs for servers and services</h4>
-
-<p>If your application accesses remote servers or services, make sure you are using the production
-URL or path for the server or service and not a test URL or path.</p>
-
-<h4>Implement Licensing (if you are releasing on Google Play)</h4>
-
-<p>If you are releasing a paid application through Google Play, consider adding support for
-Google Play Licensing. Licensing lets you control access to your application based on whether the
-current user has purchased it. Using Google Play Licensing is optional even if you are
-releasing your app through Google Play.</p>
-
-<p>For more information about Google Play Licensing Service and how to use it in your
-application, see <a href="{@docRoot}google/play/licensing/index.html">Application Licensing</a>.</p>
-
-<h2 id="publishing-build">Building Your Application for Release</h2>
-
-<p>After you finish configuring your application you can build it into a release-ready
-<code>.apk</code> file that is signed and optimized. The JDK includes the tools for signing the
-<code>.apk</code> file (Keytool and Jarsigner); the Android SDK includes the tools for compiling and
-optimizing the <code>.apk</code> file. If you are using Android Studio or you are using
-the Gradle build system from the command line, you can automate the entire build process.
-For more information about configuring Gradle builds, see
-<a href="{@docRoot}tools/building/configuring-gradle.html">Configuring Gradle Builds</a>.</p>
-
-<h3>Building with Android Studio</h3>
-
-<p>You can use the Gradle build system, integrated with Android Studio to build a release-ready
-<code>.apk</code> file that is signed with your private key and optimized. To learn how to setup and
-run builds from Android Studio, see
-<a href="{@docRoot}tools/building/building-studio.html">Building and Running from Android Studio</a>.</p>
-
-<p>The build process assumes that you have a certificate and private key
-suitable for signing your application. If you do not have a suitable certificate and private key,
-Android Studio can help you generate one. For more information about the signing process, see
-<a href="{@docRoot}tools/publishing/app-signing.html">Signing Your Applications</a>.</p>
-
-
-<h2 id="publishing-resources">Preparing External Servers and Resources</h2>
-
-<p>If your application relies on a remote server, make sure the server is secure and that it is
-configured for production use. This is particularly important if you are implementing <a
-href="{@docRoot}google/play/billing/index.html">in-app billing</a> in your application and you are
-performing the signature verification step on a remote server.</p>
-
-<p>Also, if your application fetches content from a remote server or a real-time service (such as a
-content feed), be sure the content you are providing is up to date and production-ready.</p>
-
-<h2 id="publishing-test">Testing Your Application for Release</h2>
-
-<p>Testing the release version of your application helps ensure that your application runs properly
-under realistic device and network conditions. Ideally, you should test your application on at least
-one handset-sized device and one tablet-sized device to verify that your user interface elements are
-sized correctly and that your application's performance and battery efficiency are acceptable.</p>
-
-<p>As a starting point for testing, see
-<a href="{@docRoot}tools/testing/what_to_test.html">What to Test</a>. This article provides
-a summary of common Android situations that you should consider when you are testing. When you are
-done testing and you are satisfied that the release version of your application
-behaves correctly, you can release your application to users. For more information, see
-<a href="{@docRoot}tools/publishing/publishing_overview.html#publishing-release">Releasing Your
-Application to Users</a>. If you are publishing your application on Google Play, see
-<a href="{@docRoot}distribute/tools/launch-checklist.html">Launch Checklist
-for Google Play</a>.</p>
-
-
diff --git a/docs/html/tools/publishing/publishing_overview.jd b/docs/html/tools/publishing/publishing_overview.jd
deleted file mode 100644
index 167758a..0000000
--- a/docs/html/tools/publishing/publishing_overview.jd
+++ /dev/null
@@ -1,242 +0,0 @@
-page.title=Publishing Overview
-page.metaDescription=Start here for an overview of publishing options for Android apps.
-@jd:body
-
-<div id="qv-wrapper">
-<div id="qv">
-  <h2>Quickview</h2>
-  <ul>
-    <li>Learn how to publish Android apps.</li>
-    <li>Find out how to prepare apps for release.</li>
-    <li>Learn how to release apps to users.</li>
-  </ul>
-  <h2>In this document</h2>
-  <ol>
-    <li><a href="#publishing-prepare">Preparing Your Application for Release</a></li>
-    <li><a href="#publishing-release">Releasing Your Application to Users</a>
-  </ol>
-  <h2>See also</h2>
-  <ol>
-    <li><a href="{@docRoot}distribute/tools/launch-checklist.html">Publishing on Google Play</a></li>
-  </ol>
-</div>
-</div>
-
-<p>Publishing is the general process that makes your Android applications available to users. When you
-publish an Android application you perform two main tasks:</p>
-
-<ul>
-  <li>You prepare the application for release.
-    <p>During the preparation step you build a release version of your application, which users can
-      download and install on their Android-powered devices.</p>
-  </li>
-  <li>You release the application to users.
-    <p>During the release step you publicize, sell, and distribute the release version of your
-      application to users.</p>
-  </li>
-</ul>
-
-<p>Usually, you release your application through an application marketplace, such as <a href="{@docRoot}distribute/googleplay/index.html">Google Play</a>.
-However, you can also release applications by sending them directly to users or by letting users
-download them from your own website.</p>
-
-<p>Figure 1 shows how the publishing process fits into the overall Android <a
-href="{@docRoot}tools/workflow/index.html">application development process</a>.
-The publishing process is typically performed after you finish testing your application in a debug
-environment. Also, as a best practice, your application should meet all of your release criteria for
-functionality, performance, and stability before you begin the publishing process.</p>
-
-<img src="{@docRoot}images/publishing/publishing_overview.png" alt="Shows where the publishing
-       process fits into the overall development process" height="86" id="figure1" />
-<p class="img-caption">
-  <strong>Figure 1.</strong> Publishing is the last phase of the Android <a
-href="{@docRoot}tools/workflow/index.html">application development process</a>.
-</p>
-
-<h2 id="publishing-prepare">Preparing Your Application for Release</h2>
-
-<p>Preparing your application for release is a multi-step process that involves the following
-tasks:</p>
-
-<ul>
-  <li>Configuring your application for release.
-    <p>At a minimum you need to remove {@link android.util.Log} calls and remove the
-    <a href="{@docRoot}guide/topics/manifest/application-element.html#debug">android:debuggable</a>
-    attribute from your manifest file. You should also provide values for the
-    <code>android:versionCode</code> and <code>android:versionName</code> attributes, which are
-    located in the
-    <a href="{@docRoot}guide/topics/manifest/manifest-element.html">&lt;manifest&gt;</a>
-    element. You may also have to configure several other settings to meet Google Play
-    requirements or accomodate whatever method you're using to release your application.</p>
-    <p>If you are using Gradle build files, you can use the <em>release</em> build type to set
-    your build settings for the published version of your app.  </p>
-  </li>
-  <li>Building and signing a release version of your application.
-    <p>You can use the Gradle build files with the <em>release</em> build type to build and sign a
-    release version of your application. See
-    <a href="{@docRoot}tools/building/building-studio.html">Building and Running from Android
-      Studio</a>.</p>
-  </li>
-  <li>Testing the release version of your application.
-    <p>Before you distribute your application, you should thoroughly test the release version on at
-    least one target handset device and one target tablet device.</p>
-  </li>
-  <li>Updating application resources for release.
-    <p>You need to be sure that all application resources such as multimedia files and graphics
-    are updated and included with your application or staged on the proper production servers.</p>
-  </li>
-  <li>Preparing remote servers and services that your application depends on.
-    <p>If your application depends on external servers or services, you need to be sure they
-    are secure and production ready.</p>
-  </li>
-</ul>
-
-<p>You may have to perform several other tasks as part of the preparation process. For example, you
-will need to get a private key for signing your application, and you may need to get a Maps API
-release key if you are using the <a
-href="http://code.google.com/android/add-ons/google-apis/maps-overview.html">Google Maps external
-library</a>. You will also need to create an icon for your application, and you may want to prepare
-an End User License Agreement (EULA) to protect your person, organization, and intellectual
-property.</p>
-
-<p>When you are finished preparing your application for release you will have a signed
-<code>.apk</code> file that you can distribute to users.</p>
-
-<p>To learn how to prepare your application for release, see <a
-href="{@docRoot}tools/publishing/preparing.html">Preparing for Release</a> in the Dev Guide. This
-topic provides step-by-step instructions for configuring and building a release version of your
-application.</p>
-
-<h2 id="publishing-release">Releasing Your Application to Users</h2>
-
-<p>You can release your Android applications several ways. Usually, you release applications
-through an application marketplace such as Google Play, but you can also release applications
-on your own website or by sending an application directly to a user.
-
-<h3 id="publishing-marketplace">Releasing through an App Marketplace</h3>
-
-<p>If you want to distribute your apps to the broadest possible audience, releasing through
-an app marketplace such as Google Play is ideal. </p>
-
-<p>Google Play is the premier marketplace for Android apps and is particularly
-useful if you want to distribute your applications to a large global audience.
-However, you can distribute your apps through any app marketplace you want or
-you can use multiple marketplaces.</p>
-
-
-<h4 id="publishing-market">Releasing Your Applications on Google Play</h4>
-
-<p>Google Play is a robust publishing platform that helps you publicize, sell, and distribute
-your Android applications to users around the world. When you release your applications through
-Google Play you have access to a suite of developer tools that let you analyze your sales,
-identify market trends, and control who your applications are being distributed to. You also have
-access to several revenue-enhancing features such as <a
-href="{@docRoot}google/play/billing/index.html">in-app billing</a> and <a
-href="{@docRoot}google/play/licensing/index.html">application licensing</a>. The rich array of tools
-and features, coupled with numerous end-user community features, makes Google Play the premier
-marketplace for selling and buying Android applications.</p>
-
-<p>Releasing your application on Google Play is a simple process that involves three basic
-  steps:</p>
-
-<ul>
-  <li>Preparing promotional materials.
-    <p>To fully leverage the marketing and publicity capabilities of Google Play, you need to
-    create promotional materials for your application, such as screenshots, videos, graphics, and
-    promotional text.</p>
-  </li>
-  <li>Configuring options and uploading assets.
-    <p>Google Play lets you target your application to a worldwide pool of users and devices.
-    By configuring various Google Play settings, you can choose the countries you want to
-    reach, the listing languages you want to use, and the price you want to charge in each
-    country. You can also configure listing details such as the application type, category, and
-    content rating. When you are done configuring options you can upload your promotional materials
-    and your application as a draft (unpublished) application.</p>
-  </li>
-  <li>Publishing the release version of your application.
-    <p>If you are satisfied that your publishing settings are correctly configured and your
-    uploaded application is ready to be released to the public, you can simply click
-    <strong>Publish</strong > in the developer console and within minutes your application will be
-    live and available for download around the world.</p>
-  </li>
-</ul>
-
-<p>For information complete information, see <a href="{@docRoot}distribute/googleplay/index.html">Google Play</a>.</p>
-
-
-<h3 id="publishing-email">Releasing your application through email</h3>
-
-<div class="figure" style="width:246px">
-  <img src="{@docRoot}images/publishing/publishing_via_email.png"
-       alt="Screenshot showing the graphical user interface users see when you send them an app"
-       style="width:240px;" />
-  <p class="img-caption">
-    <strong>Figure 1.</strong> Users can simply click <strong>Install</strong> when you send them
-    an application via email.
-  </p>
-</div>
-
-<p>The easiest and quickest way to release your application is to send it to a user through
-email. To do this, you prepare your application for release and then attach it to an email
-and send it to a user. When the user opens your email message on their Android-powered device
-the Android system will recognize the APK and display an <strong>Install Now</strong>
-button in the email message (see figure 1). Users can install your application by touching the
-button.</p>
-
-<p class="note"><strong>Note:</strong> The <strong>Install Now</strong> button
-shown in Figure 1 appears only if a user has configured their device to allow
-installation from <a href="#unknown-sources">unknown sources</a> and has opened your
-email with the native Gmail application.</p>
-
-<p>Distributing applications through email is convenient if you are sending your application to
-only a few trusted users, but it provides few protections from piracy and unauthorized
-distribution; that is, anyone you send your application to can simply forward it to someone else.</p>
-
-<h2 id="publishing-website">Releasing through a web site</h2>
-
-<p>If you do not want to release your app on a marketplace like Google Play, you
-can make the app available for download on your own website or server, including
-on a private or enterprise server. To do this, you must first prepare your
-application for release in the normal way. Then all you need to do is host the
-release-ready APK file on your website and provide a download link to users.
-</p>
-
-<p>When users browse to the download link from their Android-powered devices,
-the file is downloaded and Android system automatically starts installing it on
-the device. However, the installation process will start automatically only if
-the user has configured their Settings to allow the installation of apps from
-<a href="#unknown-sources">unknown sources</a>.</p>
-
-<p>Although it is relatively easy to release your application on your own
-website, it can be inefficient. For example, if you want to monetize your
-application you will have to process and track all financial transactions
-yourself and you will not be able to use Google Play's <a
-href="{@docRoot}google/play/billing/index.html">In-app Billing service</a>
-to sell in-app products. In addition, you will not be able to use the <a
-href="{@docRoot}google/play/licensing/index.html">Licensing service</a> to
-help prevent unauthorized installation and use of your application.</p>
-
-
-<h2 id="unknown-sources">User Opt-In for Apps from Unknown Sources</h2>
-
-<div class="figure" style="width:246px;margin-top:0;">
-  <img src="{@docRoot}images/publishing/publishing_unknown_sources_sm.png"
-       alt="Screenshot showing the setting for accepting download and install of
-       apps from unknown sources." style="width:240px;" />
-  <p class="img-caption">
-    <strong>Figure 2.</strong> Users must enable the <strong>Unknown sources</strong>
-    setting before they can install apps not downloaded from Google Play.
-  </p>
-</div>
-
-<p>Android protects users from inadvertent download and install of apps from
-locations other than Google Play (which is trusted). It blocks such installs
-until the user opts-in <strong>Unknown sources</strong> in
-Settings&nbsp;<strong>&gt;</strong>&nbsp;Security, shown in Figure 2. To allow
-the installation of applications from other sources, users need to enable the
-Unknown sources setting on their devices, and they need to make this
-configuration change <em>before</em> they download your application to their
-devices.</p>
-
-<p class="note">Note that some network providers do not allow users to install
-applications from unknown sources.</p>
diff --git a/docs/html/tools/publishing/versioning.jd b/docs/html/tools/publishing/versioning.jd
deleted file mode 100644
index 9908d81..0000000
--- a/docs/html/tools/publishing/versioning.jd
+++ /dev/null
@@ -1,184 +0,0 @@
-page.title=Versioning Your Applications
-@jd:body
-
-<div id="qv-wrapper">
-<div id="qv">
-
-<h2>Quickview</h2>
-
-<ul>
-<li>Your application <em>must</em> be versioned</a></li>
-<li>You set the version in the application's manifest file</li>
-<li>How you version your applications affects how users upgrade </li>
-<li>Determine your versioning strategy early in the development process, including considerations for future releases.</li>
-</ul>
-
-<h2>In this document</h2>
-
-<ol>
-<li><a href="#appversioning">Setting Application Version</a></li>
-<li><a href="#minsdkversion">Specifying Your Application's System API Requirements</a>
-</ol>
-
-
-<h2>See also</h2>
-
-<ol>
-<li><a href="{@docRoot}tools/publishing/preparing.html">Preparing to Publish Your Application</a></li>
-<li><a href="{@docRoot}distribute/tools/launch-checklist.html">Launch Checklist for Google Play</a></li>
-<li><a href="{@docRoot}guide/topics/manifest/manifest-intro.html">The AndroidManifest.xml File</a></li>
-</ol>
-
-</div>
-</div>
-
-<p>Versioning is a critical component of your application upgrade and maintenance
-strategy. Versioning is important because:</p>
-
-<ul>
-<li>Users need to have specific information about the application version that
-is installed on their devices and the upgrade versions available for
-installation. </li>
-<li>Other applications &mdash; including other applications that you publish as
-a suite &mdash; need to query the system for your application's version, to
-determine compatibility and identify dependencies.</li>
-<li>Services through which you will publish your application(s) may also need to
-query your application for its version, so that they can display the version to
-users. A publishing service may also need to check the application version to
-determine compatibility and establish upgrade/downgrade relationships.</li>
-</ul>
-
-<p>The Android system does not use app version information to enforce
-restrictions on upgrades, downgrades, or compatibility of third-party apps. Instead, you (the
-developer) are responsible for enforcing version restrictions within your application or by
-informing users of the version restrictions and limitations. The Android system does, however,
-enforce system version compatibility as expressed by the <code>minSdkVersion</code> attribute in the
-manifest. This attribute allows an application to specify the minimum system API with which it is
-compatible. For more information see <a href="#minsdkversion">Specifying Minimum System API
-Version</a>.</p>
-
-<h2 id="appversioning">Setting Application Version</h2>
-<p>To define the version information for your application, you set attributes in
-the application's manifest file. Two attributes are available, and you should
-always define values for both of them: </p>
-
-<ul>
-<li><code>android:versionCode</code> &mdash; An integer value that represents
-the version of the application code, relative to other versions.
-
-<p>The value is an integer so that other applications can programmatically
-evaluate it, for example to check an upgrade or downgrade relationship. You can
-set the value to any integer you want, however you should make sure that each
-successive release of your application uses a greater value. The system does not
-enforce this behavior, but increasing the value with successive releases is
-normative. </p>
-
-<p>Typically, you would release the first version of your application with
-versionCode set to 1, then monotonically increase the value with each release,
-regardless whether the release constitutes a major or minor release. This means
-that the <code>android:versionCode</code> value does not necessarily have a
-strong resemblance to the application release version that is visible to the
-user (see <code>android:versionName</code>, below). Applications and publishing
-services should not display this version value to users.</p>
-
-<p class="warning">
-    <strong>Warning:</strong> The greatest possible value for <code>
-    android:versionCode</code> is <code>MAXINT</code> (2147483647). However, if
-    you upload an app with this value, your app can't ever be updated.
-</p>
-
-</li>
-<li><code>android:versionName</code> &mdash; A string value that represents the
-release version of the application code, as it should be shown to users.
-<p>The value is a string so that you can describe the application version as a
-&lt;major&gt;.&lt;minor&gt;.&lt;point&gt; string, or as any other type of
-absolute or relative version identifier. </p>
-
-<p>As with <code>android:versionCode</code>, the system does not use this value
-for any internal purpose, other than to enable applications to display it to
-users. Publishing services may also extract the <code>android:versionName</code>
-value for display to users.</p>
-</li>
-</ul>
-
-<p>You define both of these version attributes in the
-<code>&lt;manifest&gt;</code> element of the manifest file or the Gradle build file. See
-<a href="{@docRoot}tools/building/configuring-gradle.html">Configuring Gradle Builds</a>.</p>
-
-<p>Here's an example manifest that shows the <code>android:versionCode</code>
-and <code>android:versionName</code> attributes in the
-<code>&lt;manifest&gt;</code> element. </p>
-
-<pre>
-&lt;?xml version="1.0" encoding="utf-8"?&gt;
-&lt;manifest xmlns:android="http://schemas.android.com/apk/res/android"
-      package="com.example.package.name"
-      android:versionCode="2"
-      android:versionName="1.1"&gt;
-    &lt;application android:icon="@drawable/icon" android:label="@string/app_name"&gt;
-        ...
-    &lt;/application&gt;
-&lt;/manifest&gt;
-</pre>
-
-<p>In this example, note that <code>android:versionCode</code> value indicates
-that the current .apk contains the second release of the application code, which
-corresponds to a minor follow-on release, as shown by the
-<code>android:versionName</code> string. </p>
-
-<p>The Android framework provides an API to let applications query the system
-for version information about your application. To obtain version information,
-applications use the
-{@link android.content.pm.PackageManager#getPackageInfo(java.lang.String, int)}
-method of {@link android.content.pm.PackageManager PackageManager}. </p>
-
-<h2 id="minsdkversion">Specifying Your Application's System API Requirements</h2>
-
-<p>If your application requires a specific minimum version of the Android
-platform, or is designed only to support a certain range of Android platform
-versions, you can specify those version requirements as API Level identifiers
-in the application's manifest file. Doing so ensures that your
-application can only be installed on devices that
-are running a compatible version of the Android system. </p>
-
-<p>To specify API Level requirements, add a <code>&lt;uses-sdk&gt;</code>
-element in the application's manifest, with one or more of these attributes: </p>
-
-<ul>
-<li><code>android:minSdkVersion</code> &mdash; The minimum version
-of the Android platform on which the application will run, specified
-by the platform's API Level identifier. </li>
-<li><code>android:targetSdkVersion</code> &mdash; Specifies the API Level
-on which the application is designed to run. In some cases, this allows the
-application to use manifest elements or behaviors defined in the target
-API Level, rather than being restricted to using only those defined
-for the minimum API Level.</li>
-<li><code>android:maxSdkVersion</code> &mdash; The maximum version
-of the Android platform on which the application is designed to run,
-specified by the platform's API Level identifier. <strong>Important:</strong> Please read the <a
-href="{@docRoot}guide/topics/manifest/uses-sdk-element.html"><code>&lt;uses-sdk&gt;</code></a>
-documentation before using this attribute. </li>
-</ul>
-
-<p>When preparing to install your application, the system checks the value of this
-attribute and compares it to the system version. If the
-<code>android:minSdkVersion</code> value is greater than the system version, the
-system aborts the installation of the application. Similarly, the system
-installs your application only if its <code>android:maxSdkVersion</code>
-is compatible with the platform version.</p>
-
-<p>If you do not specify these attributes in your manifest, the system assumes
-that your application is compatible with all platform versions, with no
-maximum API Level. </p>
-
-<p>To specify a minimum platform version for your application, add a
-<code>&lt;uses-sdk&gt;</code> element as a child of
-<code>&lt;manifest&gt;</code>, then define the
-<code>android:minSdkVersion</code> as an attribute. </p>
-
-<p>For more information, see the <a
-href="{@docRoot}guide/topics/manifest/uses-sdk-element.html"><code>&lt;uses-sdk&gt;</code></a>
-manifest element documentation and the <a
-href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#ApiLevels">API Levels</a> document. For
-Gradle build settings, see
-<a href="{@docRoot}tools/building/configuring-gradle.html">Configuring Gradle Builds</a>.</p>
diff --git a/docs/html/tools/revisions/build-tools.jd b/docs/html/tools/revisions/build-tools.jd
deleted file mode 100755
index 5d9ba05..0000000
--- a/docs/html/tools/revisions/build-tools.jd
+++ /dev/null
@@ -1,378 +0,0 @@
-page.title=SDK Build Tools Release Notes
-
-@jd:body
-
-<div id="qv-wrapper">
-<div id="qv">
-
-  <h2>See Also</h2>
-  <ol>
-    <li><a href="{@docRoot}tools/building/index.html">Building and Running</a></li>
-  </ol>
-
-</div>
-</div>
-
-<p>Build Tools is a component of the Android SDK required for building Android
-  application code. The latest version of these tools is included in the
-  <a href="{@docRoot}sdk/index.html">SDK starter package</a> and installed in the
-  <code>&lt;sdk&gt;/build-tools/</code> directory.</p>
-
-<p>You should always keep your Build Tools component updated by downloading the latest version
-  using the <a href="{@docRoot}tools/help/sdk-manager.html">Android SDK Manager</a>. By default,
-  the Android SDK uses the most recent downloaded version of the Build Tools. If your projects
-  depend on older versions of the Build Tools, the SDK Manager allows you to download and maintain
-  separate versions of the tools for use with those projects.</p>
-
-<p>To use a specific version of the Build Tools in your application project:</p>
-
-
-  <ol>
-    <li>In the root folder of your application project, find the {@code build.gradle}
-      file.</li>
-    <li>Open the file and specify the Build Tools version by adding a {@code buildToolsVersion}
-      property to the {@code android} section:
-<pre>
-android {
-    ...
-    buildToolsVersion "17.0.0"
-    ...
-}
-</pre>
-    </li>
-  </ol>
-
-
-<h2 id="notes">Revisions</h2>
-
-<p>The sections below provide notes about releases of the Build Tools. To determine which
-revisions of the Build Tools are available in your SDK, refer to the <em>Installed Packages</em>
-listing in the Android SDK Manager.</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=""/>Build Tools, Revision 23.0.3</a> <em>(March 2016)</em>
-  </p>
-  <div class="toggle-content-toggleme">
-    <ul>
-      <li>Fix issues in the <a href="{@docRoot}guide/topics/renderscript/compute.html">RenderScript</a>
-        Support Library on arm64 devices.</li>
-      <li>Fix issues in the <a href="{@docRoot}guide/topics/renderscript/compute.html">RenderScript</a>
-        Support Library on certain Jelly Bean devices.</li>
-      <li>Support <code>renderscriptTargetAPI 21+</code> when using Android
-        Plugin for Gradle, Revision 2.1.0 and above .</li>
-    </ul>
-  </div>
-</div>
-
-<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=""/>Build Tools, Revision 23.0.2</a> <em>(November 2015)</em>
-  </p>
-  <div class="toggle-content-toggleme">
-    <ul>
-      <li>Improved the merging performance of the <code>dx</code> tool.</li>
-      <li>Fixed issues in the <a href="{@docRoot}guide/topics/renderscript/compute.html">RenderScript</a>
-        compiler for Windows.</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=""/>Build Tools, Revision 23.0.1</a> <em>(October 2015)</em>
-  </p>
-  <div class="toggle-content-toggleme">
-    <p>Fixed issues in the RenderScript tools.</p>
-  </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=""/>Build Tools, Revision 23.0.0</a> <em>(August 2015)</em>
-  </p>
-  <div class="toggle-content-toggleme">
-    <p>Added support for the Android 6.0 (API level 23) release.</p>
-  </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=""/>Build Tools, Revision 22.0.1</a> <em>(March 2015)</em>
-  </p>
-  <div class="toggle-content-toggleme">
-    <p>Fixed compatibility issues with
-    <a href="{@docRoot}guide/topics/renderscript/compute.html">RenderScript</a> kernels on
-    Android 4.4 (API level 19) to Android 4.1 (API level 16) devices.</p>
-  </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=""/>Build Tools, Revision 22.0.0</a> <em>(March 2015)</em>
-  </p>
-  <div class="toggle-content-toggleme">
-    <p>Added support for Android 5.1 (API level 22).</p>
-  </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=""/>Build Tools, Revision 21.1.2</a> <em>(February 2015)</em>
-  </p>
-  <div class="toggle-content-toggleme">
-    <p>Fixed problem with building data layouts in 32-bit mode.</p>
-  </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=""/>Build Tools, Revision 21.1.1</a> <em>(November 2014)</em>
-  </p>
-  <div class="toggle-content-toggleme">
-    <p>Fixed multidex script issues.</p>
-  </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=""/>Build Tools, Revision 21.1</a> <em>(October 2014)</em>
-  </p>
-  <div class="toggle-content-toggleme">
-    <p>Added multidex file support for APKs and Jack support to address the 64K method reference
-    limit.</p>
-  </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=""/>Build Tools, Revision 21.0.2</a> <em>(October 2014)</em>
-  </p>
-  <div class="toggle-content-toggleme">
-    <p>Complete updates for Eclipse ADT to solve instability issues on Windows platforms.</p>
-  </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=""/>Build Tools, Revision 21.0.1</a> <em>(October 2014)</em>
-  </p>
-  <div class="toggle-content-toggleme">
-    <p>Initial updates for Eclipse ADT on Windows. Please use Revision 21.0.2.</p>
-  </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=""/>Build Tools, Revision 21.0.0</a> <em>(October 2014)</em>
-  </p>
-  <div class="toggle-content-toggleme">
-
-    <dl>
-      <dt>General Notes:</dt>
-      <dd>
-        <ul>
-          <li>Added support for Android 5.0 (API level 21).</li>
-          <li>RenderScript now supports seamless 32/64-bit operation for API level 21 and higher.</li>
-          <li>Fixed issue with the Gradle build system when using the JaCoCo plugin.
-          (<a href="http://b.android.com/69174">Issue 69174</a>)</li>
-          <li>Added an <em>input-list</em> option for use with long command lines on Windows.</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=""/>Build Tools, Revision 20.0.0</a> <em>(June 2014)</em>
-  </p>
-  <div class="toggle-content-toggleme">
-
-    <dl>
-      <dt>General Notes:</dt>
-      <dd>
-        <ul>
-          <li>Added support for Android Wear.</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=""/>Build Tools, Revision 19.1.0</a> <em>(May 2014)</em>
-  </p>
-  <div class="toggle-content-toggleme">
-
-    <dl>
-      <dt>General Notes:</dt>
-      <dd>
-        <ul>
-          <li>Added <code>zipalign</code> to the Build Tools.</li>
-          <li>Modified <code>aapt</code> to ignore XML files that fail to compile.</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=""/>Build Tools, Revision 19.0.3</a> <em>(March 2014)</em>
-  </p>
-  <div class="toggle-content-toggleme">
-
-    <p>Fixed an issue with RenderScript support.</p>
-
-  </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=""/>Build Tools, Revision 19.0.2</a> <em>(February 2014)</em>
-  </p>
-  <div class="toggle-content-toggleme">
-
-    <dl>
-      <dt>Fixed RenderScript build issues:</dt>
-      <dd>
-        <ul>
-          <li>Fixed a problem with RenderScript bitcode encoding.
-            (<a href="http://b.android.com/64775">Issue 64775</a>)
-          </li>
-          <li>Fixed a problem with RenderScript missing math symbols
-            (<a href="http://b.android.com/64110">Issue 64110</a>)
-          </li>
-        </ul>
-      </dd>
-    </dl>
-    <p></p>
-
-  </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=""/>Build Tools, Revision 19.0.1</a> <em>(December 2013)</em>
-  </p>
-  <div class="toggle-content-toggleme">
-
-    <dl>
-      <dt>Fixed miscellaneous build issues:</dt>
-      <dd>
-        <ul>
-          <li>Fixed support for compiling RenderScript in NDK mode with Gradle.</li>
-          <li>Fixed {@code BufferOverflowException} problem in the dx build.
-            (<a href="http://b.android.com/61710">Issue 61710</a>)
-          </li>
-        </ul>
-      </dd>
-    </dl>
-    <p></p>
-
-  </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=""/>Build Tools, Revision 19</a> <em>(October 2013)</em>
-  </p>
-  <div class="toggle-content-toggleme">
-
-    <p>Added support for Android 4.4 (API level 19) build targets.</p>
-
-  </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=""/>Build Tools, Revision 18.1.1</a> <em>(September 2013)</em>
-  </p>
-  <div class="toggle-content-toggleme">
-
-    <p>Fixed several minor build issues.</p>
-
-  </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=""/>Build Tools, Revision 18.1.0</a> <em>(September 2013)</em>
-  </p>
-  <div class="toggle-content-toggleme">
-
-    <p>Fixed issue with RenderScript support mode.</p>
-
-  </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=""/>Build Tools, Revision 18.0.1</a> <em>(July 2013)</em>
-  </p>
-  <div class="toggle-content-toggleme">
-
-    <p>Added support for Android 4.3 (API level 18) build targets.</p>
-
-  </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=""/>Build Tools, Revision 17</a> <em>(May 2013)</em>
-  </p>
-  <div class="toggle-content-toggleme">
-
-    <p>Initial release.</p>
-
-    <dl>
-      <dt>General Notes:</dt>
-      <dd>
-        <ul>
-          <li>Included support for Android 4.2 (API level 17) build targets.</li>
-          <li>Decoupled the build-specific components of the Android SDK from the platform-tools
-          component, so that the build tools can be updated independently of the integrated
-          development environment (IDE) components.</li>
-        </ul>
-      </dd>
-    </dl>
-
-  </div>
-</div>
diff --git a/docs/html/tools/revisions/gradle-plugin.jd b/docs/html/tools/revisions/gradle-plugin.jd
deleted file mode 100644
index 540bbcd..0000000
--- a/docs/html/tools/revisions/gradle-plugin.jd
+++ /dev/null
@@ -1,623 +0,0 @@
-page.title=Android Plugin for Gradle Release Notes
-
-@jd:body
-
-<div id="qv-wrapper">
-<div id="qv">
-
-  <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 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>
-
-
-<h2 id="revisions">Revisions</h2>
-
-<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>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>
-
-<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 1.5.0</a> <em>(November 2015)</em>
-  </p>
-
-  <div class="toggle-content-toggleme">
-
-    <dl>
-    <dt>Dependencies:</dt>
-
-    <dd>
-      <ul>
-        <li>Gradle 2.2.1 or higher.</li>
-        <li>Build Tools 21.1.1 or higher.</li>
-      </ul>
-    </dd>
-
-    <dt>General Notes:</dt>
-    <dd>
-      <ul>
-      <li>Integrated the Data Binding Plugin into the Android Plugin for Gradle. To enable it, add
-        the following code to each per-project <code>build.gradle</code> file that uses the
-        plugin:</li>
-<pre>
-android {
-    dataBinding {
-        enabled = true
-    }
-}
-</pre>
-      <li>Added a new <a href="http://google.github.io/android-gradle-dsl/javadoc/1.5/" class="external-link">Transform API</a>
-       to allow third-party plugins to manipulate compiled <code>.class</code> files before they’re
-       converted to <code>.dex</code> files. The Transform API simplifies injecting custom class
-       manipulations while offering more flexibility regarding what you can manipulate. To insert a
-       transform into a build, create a new class implementing one of the <code>Transform</code>
-       interfaces, and register it with <code>android.registerTransform(theTransform)</code> or
-       <code>android.registerTransform(theTransform, dependencies)</code>. There’s no need to
-       wire tasks together. Note the following about the Transform API:</li>
-       <ul>
-        <li>A transform can apply to one or more of the following: the current project, subprojects,
-          and external libraries.</li>
-          <li>A transform must be registered globally, which applies them to all variants.</li>
-          <li>Internal code processing, through the Java Code Coverage Library (JaCoCo), ProGuard,
-            and MultiDex, now uses the Transform API. However, the Java Android Compiler Kit
-            (Jack) doesn’t use this API: only the <code>javac/dx</code> code path does.</li>
-          <li>Gradle executes the transforms in this order: JaCoCo, third-party plugins, ProGuard.
-          The execution order for third-party plugins matches the order in which the transforms are
-          added by the third party plugins; third-party plugin developers can't control the execution
-          order of the transforms through an API.</li>
-      </ul>
-      <li>Deprecated the <code>dex</code> getter from the <code>ApplicationVariant</code> class.
-        You can't access the <code>Dex</code> task through the variant API anymore because it’s now
-        accomplished through a transform. There's
-        currently no replacement for controlling the dex process.</li>
-      <li>Fixed incremental support for assets.</li>
-      <li>Improved MultiDex support by making it available for test projects, and
-        tests now automatically have the <code>com.android.support:multidex-instrumentation</code>
-        dependency.</li>
-      <li>Added the ability to properly fail a Gradle build and report the underlying error cause
-        when the Gradle build invokes asynchronous tasks and there’s a failure in the worker
-        process.</li>
-      <li>Added support for configuring a specific Application Binary Interface (ABI) in variants
-        that contain multiple ABIs.</li>
-      <li>Added support for a comma-separated list of device serial numbers for the
-        <code>ANDROID_SERIAL</code> environment variable when installing or running tests.</li>
-      <li>Fixed an installation failure on devices running Android 5.0 (API level 20) and higher
-        when the APK name contains a space.</li>
-      <li>Fixed various issues related to the Android Asset Packaging Tool (AAPT) error output.</li>
-      <li>Added JaCoCo incremental instrumentation support for faster incremental builds. The
-        Android Plugin for Gradle now invokes the JaCoCo instrumenter directly. To force a newer
-        version of the JaCoCo instrumenter, you need to add it as a build script dependency.</li>
-      <li>Fixed JaCoCo support so it ignores files that aren’t classes.</li>
-      <li>Added vector drawable support for generating PNGs at build time for backward-compatibility.
-        Android Plugin for Gradle generates PNGs for every vector drawable found in a resource
-        directory that doesn’t specify an API version or specifies an
-        <code>android:minSdkVersion</code> attribute of 20 or lower in the
-        <code>&lt;uses-sdk&gt;</code> element in the app manifest. You can set PNG densities by
-        using the <code>generatedDensities</code> property in the <code>defaultConfig</code> or
-        <code>productFlavor</code> sections of a <code>build.gradle</code> file.</li>
-      <li>Added sharing of the mockable <code>android.jar</code>, which the plugin generates only
-        once and uses for unit testing. Multiple modules, such as <code>app</code> and
-        <code>lib</code>, now share it. Delete <code>$rootDir/build</code> to regenerate it. </li>
-      <li>Changed the processing of Java resources to occur before the obfuscation tasks instead of
-        during the packaging of the APK. This change allows the obfuscation tasks to have a chance
-        to adapt the Java resources following packages obfuscation.</li>
-      <li>Fixed an issue with using Java Native Interface (JNI) code in the experimental library
-        plugin.</li>
-      <li>Added the ability to set the platform version separately from the
-        <code>android:compileSdkVersion</code> attribute in the experimental library
-        plugin.</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.3.1</a> <em>(August 2015)</em>
-  </p>
-
-  <div class="toggle-content-toggleme">
-
-    <dl>
-    <dt>Dependencies:</dt>
-
-    <dd>
-      <ul>
-        <li>Gradle 2.2.1 or higher.</li>
-        <li>Build Tools 21.1.1 or higher.</li>
-      </ul>
-    </dd>
-
-    <dt>General Notes:</dt>
-    <dd>
-      <ul>
-      <li>Fixed the <a href="{@docRoot}tools/help/zipalign.html">ZipAlign</a> task to properly
-        consume the output of the previous task when using a customized filename. </li>
-      <li>Fixed <a href="{@docRoot}guide/topics/renderscript/compute.html">Renderscript</a>
-        packaging with the <a href="{@docRoot}tools/sdk/ndk/index.html">NDK</a>. </li>
-      <li>Maintained support for the <code>createDebugCoverageReport</code> build task. </li>
-      <li>Fixed support for customized use of the <code>archiveBaseName</code> property
-        in the <code>build.gradle</code> build> file. </li>
-      <li>Fixed the <code>Invalid ResourceType</code>
-        <a href="{@docRoot}tools/help/lint.html">lint</a> warning caused by parameter method
-        annotation lookup when running
-        <a href="{@docRoot}tools/help/lint.html">lint</a> outside of Android Studio.</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.3.0</a> <em>(July 2015)</em>
-  </p>
-
-  <div class="toggle-content-toggleme">
-
-    <dl>
-    <dt>Dependencies:</dt>
-
-    <dd>
-      <ul>
-        <li>Gradle 2.2.1 or higher.</li>
-        <li>Build Tools 21.1.1 or higher.</li>
-      </ul>
-    </dd>
-
-    <dt>General Notes:</dt>
-    <dd>
-      <ul>
-      <li>Added support for the <code>com.android.build.threadPoolSize</code> property to control
-         the <code>Android</code> task thread pool size from the <code>gradle.properties</code> file
-         or the command line. The following example sets this property to 4.
-<pre>
--Pcom.android.build.threadPoolSize=4
-</pre>
-      </li>
-      <li>Set the default build behavior to exclude <code>LICENSE</code> and <code>LICENSE.txt</code>
-        files from APKs. To include these files in an APK, remove these files from the
-        <code>packagingOptions.excludes</code> property in the <code>build.gradle</code> file.
-        For example:
-<pre>
-android {
-      packagingOptions.excludes = []
-    }
-</pre>
-      </li>
-      <li>Added the <code>sourceSets</code> task to inspect the set of all available source sets. </li>
-      <li>Enhanced unit test support to recognize multi-flavor and
-        <a href="{@docRoot}tools/building/configuring-gradle.html#workBuildVariants">
-        build variant</a>  source folders. For example, to test an app with multi-flavors
-        <code>flavor1</code> and <code>flavorA</code> with the <code>Debug</code> build type,
-        the test source sets are:
-        <ul>
-          <li>test </li>
-          <li>testFlavor1 </li>
-          <li>testFlavorA </li>
-          <li>testFlavor1FlavorA </li>
-          <li>testFlavor1FlavorADebug </li>
-        </ul>
-        <p>Android tests already recognized multi-flavor source folders. </p> </li>
-      <li>Improved unit test support to:</p>
-        <ul>
-          <li>Run <code>javac</code> on main and test sources, even if the <code>useJack</code>
-            property is set to <code>true</code> in your build file. </li>
-          <li>Correctly recognize dependencies for each build type. </li>
-        </ul>
-      </li>
-      <li>Added support for specifying instrumentation test-runner arguments from the command line.
-        For example:
-<pre>
-./gradlew connectedCheck \
-   -Pandroid.testInstrumentationRunnerArguments.size=medium \
-   -Pandroid.testInstrumentationRunnerArguments.class=TestA,TestB
-</pre>
-      </li>
-      <li>Added support for arbitrary additional Android Asset Packaging Tool (AAPT) parameters
-        in the <code>build.gradle</code> file. For example:
-<pre>
-android {
-    aaptOptions {
-      additionalParameters "--custom_option", "value"
-    }
-}
-</pre>
-      </li>
-
-      <li>Added support for a <a href="{@docRoot}tools/studio/studio-features.html#test-module">
-        test APK module</a> as a separate test module, using the
-        <code>targetProjectPath</code> and <code>targetVariant</code> properties to set the APK
-        path and target variant.
-         <p class="note"><strong>Note:</strong> A test APK module does not support product
-          flavors and can only target a single variant. Also, Jacoco is not supported yet.</p>
-      </li>
-      <li>Added resource name validation before merging resources. </li>
-      <li>When building an AAR (Android ARchive) package for library modules, do not provide an
-        automatic <code>&#64;{applicationId}</code> placeholder in the
-        <a href="{@docRoot}tools/building/manifest-merge.html">manifest merger</a> settings.
-        Instead, use a different placeholder, such as <code>&#64;{libApplicationId}</code> and
-        provide a value for it if you want to include application Ids in the archive library.  </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.2.0</a> <em>(April 2015)</em>
-  </p>
-
-  <div class="toggle-content-toggleme">
-
-    <dl>
-    <dt>Dependencies:</dt>
-
-    <dd>
-      <ul>
-        <li>Gradle 2.2.1 or higher.</li>
-        <li>Build Tools 21.1.1 or higher.</li>
-      </ul>
-    </dd>
-
-    <dt>General Notes:</dt>
-    <dd>
-      <ul>
-      <li>Enhanced support for running unit tests with Gradle.  </li>
-        <ul>
-          <li>Added support to include Java-style resources in the classpath when running unit
-            tests directly from Gradle.
-          </li>
-          <li>Added unit test dependency support for Android ARchive (AAR) artifacts.
-          </li>
-          <li>Added support for the <code>unitTestVariants</code> property so unit test variants
-            can be manipulated using the <code>build.gradle</code> file.
-          </li>
-          <li>Added the <code>unitTest.all</code> code block under <code>testOptions</code> to
-            configure customized tasks for unit test. The following sample code shows how to add
-            unit test configuration settings using this new option:
-<pre>
-android {
-  testOptions {
-    unitTest.all {
-      jvmArgs '-XX:MaxPermSize=256m' // Or any other gradle option.
-    }
-  }
-}
-</pre>
-           </li>
-          <li>Fixed the handling of enums and public instance fields in the packaging of the
-           <code>mockable-android.jar</code> file.
-          </li>
-          <li>Fixed library project task dependencies so test classes recompile after changes.
-          </li>
-          </ul>
-        <li>Added the <code>testProguardFile</code> property to apply
-          <a href="{@docRoot}tools/help/proguard.html">ProGuard</a> files when minifying a test APK.
-        </li>
-        <li>Added the <code>timeOut</code> property to the <code>adbOptions</code> code block
-          for setting the maximum recording time for
-          <a href="{@docRoot}tools/help/adb.html">Android Debug Bridge</a> screen recording.
-        </li>
-        <li>Added support for 280 dpi resources.
-        </li>
-        <li>Improved performance during project evaluation.
-        </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.1.3</a> <em>(March 2015)</em>
-  </p>
-
-  <div class="toggle-content-toggleme">
-
-    <dl>
-    <dt>Dependencies:</dt>
-
-    <dd>
-      <ul>
-        <li>Gradle 2.2.1 or higher.</li>
-        <li>Build Tools 21.1.1 or higher.</li>
-      </ul>
-    </dd>
-
-    <dt>General Notes:</dt>
-    <dd>
-    <ul>
-      <li>Fixed issue with duplicated dependencies on a test app that triggered a ProGuard failure. </li>
-      <li>Fixed Comparator implementation which did not comply with the JDK Comparator contract and
-      generated a JDK 7 error.</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.1.2</a> <em>(February 2015)</em>
-  </p>
-
-  <div class="toggle-content-toggleme">
-
-    <dl>
-    <dt>Dependencies:</dt>
-
-    <dd>
-      <ul>
-        <li>Gradle 2.2.1 or higher.</li>
-        <li>Build Tools 21.1.1 or higher.</li>
-      </ul>
-    </dd>
-
-    <dt>General Notes:</dt>
-    <dd>
-    <ul>
-      <li>Normalized path when creating a mockable JAR for unit testing. </li>
-      <li>Fixed the <code>archivesBaseName</code> setting in the <code>build.gradle</code> file. </li>
-      <li>Fixed the unresolved placeholder failure in manifest merger when building a library
-      test application.</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.1.1</a> <em>(February 2015)</em>
-  </p>
-
-  <div class="toggle-content-toggleme">
-
-    <dl>
-    <dt>Dependencies:</dt>
-
-    <dd>
-      <ul>
-        <li>Gradle 2.2.1 or higher.</li>
-        <li>Build Tools 21.1.1 or higher.</li>
-      </ul>
-    </dd>
-
-    <dt>General Notes:</dt>
-    <dd>
-    <ul>
-      <li>Modified build variants so only variants that package a
-      <a href="{@docRoot}training/wearables/apps/index.html">Wear</a> app trigger Wear-specific
-      build tasks. </li>
-      <li>Changed dependency related issues to fail at build time rather than at debug time.
-      This behavior allows you to run diagnostic diagnostic tasks (such as 'dependencies') to help
-      resolve the conflict. </li>
-      <li>Fixed the <code>android.getBootClasspath()</code> method to return a value. </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.1.0</a> <em>(February 2015)</em>
-  </p>
-
-  <div class="toggle-content-toggleme">
-
-    <dl>
-    <dt>Dependencies:</dt>
-
-    <dd>
-      <ul>
-        <li>Gradle 2.2.1 or higher.</li>
-        <li>Build Tools 21.1.1 or higher.</li>
-      </ul>
-    </dd>
-
-    <dt>General Notes:</dt>
-    <dd>
-    <ul>
-      <li>Added new unit test support</li>
-      <ul>
-       <li>Enabled
-       <a href="{@docRoot}training/activity-testing/activity-unit-testing.html">unit tests</a> to
-       run on the local JVM against a special version of the <code>android.jar</code> file that is
-       compatible with popular mocking frameworks, for example Mockito. </li>
-       <li>Added new test tasks <code>testDebug</code>, <code>testRelease</code>, and
-       <code>testMyFlavorDebug</code> when using product flavors. </li>
-       <li>Added new source folders recognized as unit tests: <code>src/test/java/</code>,
-       <code>src/testDebug/java/</code>, <code>src/testMyFlavor/java/</code>.
-       <li>Added new configurations in the <code>build.gradle</code> file for declaring test-only
-       dependencies, for example, <code>testCompile 'junit:junit:4.11'</code>,
-       <code>testMyFlavorCompile 'some:library:1.0'</code>.
-        <p class="note"><strong>Note:</strong> Test-only dependencies are not currently compatible
-        with Jack (Java Android Compiler Kit). </p>
-       </li>
-       <li>Added the <code>android.testOptions.unitTests.returnDefaultValues</code> option to
-       control the behaviour of the mockable android.jar. </li>
-      </ul>
-      <li>Replaced <code>Test</code> in test task names with <code>AndroidTest</code>.
-      For example, the <code>assembleDebugTest</code> task is now
-      <code>assembleDebugAndroidTest</code> task. Unit test tasks still have <code>UnitTest</code>
-      in the task name, for example <code>assembleDebugUnitTest</code>. </li>
-      <li>Modified <a href="{@docRoot}tools/help/proguard.html">ProGuard</a> configuration files to
-      no longer apply to the test APK. If minification is enabled, ProGuard processes the test APK
-      and applies only the mapping file that is generated when minifying the main APK. </li>
-      <li>Updated dependency management</li>
-       <ul>
-       <li>Fixed issues using <code>provided</code> and <code>package</code> scopes.
-         <p class="note"><strong>Note:</strong> These scopes are incompatible with AAR
-         (Android ARchive) packages and will cause a build with AAR packages to fail.</p>
-       </li>
-       <li>Modified dependency resolution to compare the dependencies of an app under test and the
-       test app. If an artifact with the same version is found for both apps, it's not included with
-       the test app and is packaged only with the app under test. If an artifact with a different
-       version is found for both apps, the build fails.</li>
-       </ul>
-
-      <li>Added support for <code>anyDpi</code>
-      <a href="{@docRoot}guide/topics/resources/providing-resources.html"> resource qualifier</a>
-      in resource merger. </li>
-      <li>Improved evaluation and IDE sync speeds for projects with a large number of
-      Android <a href="{@docRoot}sdk/installing/create-project.html#CreatingAModule"> modules</a>. </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.0.1</a> <em>(January 2015)</em>
-  </p>
-
-  <div class="toggle-content-toggleme">
-
-    <dl>
-    <dt>Dependencies:</dt>
-
-    <dd>
-      <ul>
-        <li>Gradle 2.2.1 up to 2.3.x.
-        <p class="note"><strong>Note:</strong> This version of the Android Plugin for Gradle is
-        not compatible with Gradle 2.4 and higher. </p>
-        </li>
-        <li>Build Tools 21.1.1 or higher.</li>
-      </ul>
-    </dd>
-
-    <dt>General Notes:</dt>
-    <dd>
-    <ul>
-      <li>Fixed issue with Gradle build failure when accessing the
-      <code>extractReleaseAnnotations</code> module.
-      (<a href="http://b.android.com/81638">Issue 81638</a>).</li>
-      <li>Fixed issue with <code>Disable</code> passing the
-      <code>--no-optimize</code> setting to the Dalvik Executable (dex) bytecode.
-      (<a href="http://b.android.com/82662">Issue 82662</a>).</li>
-      <li>Fixed manifest merger issues when importing libraries with a
-      <code>targetSdkVersion</code> less than 16.</li>
-      <li>Fixed density ordering issue when using Android Studio with JDK 8.</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.0.0</a> <em>(December 2014)</em>
-  </p>
-
-  <div class="toggle-content-toggleme">
-
-    <dl>
-    <dt>Dependencies:</dt>
-
-    <dd>
-      <ul>
-        <li>Gradle 2.2.1 up to 2.3.x.
-        <p class="note"><strong>Note:</strong> This version of the Android Plugin for Gradle is
-        not compatible with Gradle 2.4 and higher. </p>
-        </li>
-        <li>Build Tools 21.1.1 or higher.</li>
-      </ul>
-    </dd>
-
-    <dt>General Notes:</dt>
-    <dd>
-      <ul>
-        <li>Initial plugin release.</li>
-      </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
diff --git a/docs/html/tools/revisions/index.jd b/docs/html/tools/revisions/index.jd
deleted file mode 100644
index 0b8db83..0000000
--- a/docs/html/tools/revisions/index.jd
+++ /dev/null
@@ -1,13 +0,0 @@
-page.title=Revisions
-page.noplus=1
-@jd:body
-
-<p>The Android SDK is composed of individual packages that may undergo
-an update at their own schedule, so some have their own set of release notes. You can
-find information about some of the packages in this section, including the core <a
-href="{@docRoot}tools/sdk/tools-notes.html">SDK Tools</a> and the latest <a
-href="{@docRoot}tools/revisions/platforms.html">SDK Platforms</a>. Release notes are also available
-for Android developer tools, such as
-<a href="{@docRoot}tools/revisions/studio.html">Android Studio</a> and the
-<a href="{@docRoot}tools/revisions/gradle-plugin.html">Android Plugin for Gradle</a>.
-</p>
diff --git a/docs/html/tools/revisions/platforms.jd b/docs/html/tools/revisions/platforms.jd
deleted file mode 100644
index b3941ae..0000000
--- a/docs/html/tools/revisions/platforms.jd
+++ /dev/null
@@ -1,1374 +0,0 @@
-page.title=SDK Platforms Release Notes
-
-@jd:body
-
-<div id="qv-wrapper">
-<div id="qv">
-
-
-<h2>See Also</h2>
-<ol>
-  <li><a href="{@docRoot}about/versions/kitkat.html">KitKat
-Highlights and APIs</a></li>
-  <li><a href="{@docRoot}about/versions/jelly-bean.html">Jelly Bean
-Highlights and APIs</a></li>
-  <li><a href="{@docRoot}about/versions/android-4.0-highlights.html">Ice Cream Sandwich
-Highlights and APIs</a></li>
-</ol>
-
-</div>
-</div>
-
-
-
-<p>This document provides release information about the SDK Platform packages required
-for app development. If you want details about the features and APIs added in each Android
-version, instead read the highlights in the <a href="{@docRoot}about/index.html">About</a>
-section.</p>
-
-<p>To compile your application against a particular version of Android, you must use the
-<a href="{@docRoot}tools/help/sdk-manager.html">SDK Manager</a> to download and install the SDK
-Platform for that release. If you want to test your application on an emulator, you must also
-download at least one System Image for that Android version.</p>
-
-
-<p>Each platform release includes system images that support a specific processor architecture,
-such as ARM EABI, Intel x86 or MIPS. Platform releases also include a system image that contains
-Google APIs. The <a href="{@docRoot}tools/help/sdk-manager.html">SDK Manager</a> lists available
-platform system images under each platform version header, for example:</p>
-
-<ul>
-  <li>ARM EABI v7a System Image</li>
-  <li>Intel x86 Atom System Image</li>
-  <li>MIPS System Image</li>
-  <li>Google APIs</li>
-</ul>
-
-<p>To determine what revisions of an Android platform you have installed, refer to the
-<em>Packages</em> listing in the Android
-<a href="{@docRoot}tools/help/sdk-manager.html">SDK Manager</a>.</p>
-
-<p class="caution"><strong>Important:</strong> To download the most recent Android
-system components from the Android SDK Manager, you must first update the SDK Tools to the
-most recent release and restart the SDK Manager. If you do not, the latest Android system
-packages may not be available for download.</p>
-
-
-<h2 id="6.0">Android 6.0</h2>
-
-<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="" />Revision 2</a> <em>(November 2015)</em>
-  </p>
-
-  <div class="toggle-content-toggleme">
-
-    <p>Fixed bugs in the layout rendering library used by Android Studio.</p>
-    <p>Dependencies:</p>
-    <ul>
-      <li>Android SDK Platform-tools r23 or higher is required.</li>
-      <li>Android SDK Tools 24.3.4 or higher is required.</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="" />Revision 1</a> <em>(August 2015)</em>
-  </p>
-
-  <div class="toggle-content-toggleme">
-
-    <p>Initial release for Android 6.0 (API level 23). For more information, see the
-    <a href="{@docRoot}preview/api-overview.html">M Preview API Overview</a>.</p>
-    <p>Dependencies:</p>
-    <ul>
-      <li>Android SDK Platform-tools r23 or higher is required.</li>
-      <li>Android SDK Tools 24.3.4 or higher is required.</li>
-    </ul>
-  </div>
-
-</div>
-
-
-<h2 id="5.1">Android 5.1</h2>
-
-<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="" />Revision 1</a> <em>(March 2015)</em>
-  </p>
-
-  <div class="toggle-content-toggleme">
-
-    <p>Initial release for Android 5.1 (API level 22). For more information, see the
-    <a href="{@docRoot}about/versions/android-5.1.html">Android 5.1 API Overview</a>.</p>
-    <p>Dependencies:</p>
-    <ul>
-      <li>Android SDK Platform-tools r22 or higher is required.</li>
-      <li>Android SDK Tools 23.0.5 or higher is required.</li>
-    </ul>
-  </div>
-
-</div>
-
-
-<h2 id="5.0">Android 5.0</h2>
-
-<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="" />Revision 2</a> <em>(December 2014)</em>
-  </p>
-
-  <div class="toggle-content-toggleme">
-
-    <p>Updated layouts in the Support Library and fixed various issues.</p>
-    <p>Dependencies:</p>
-    <ul>
-      <li>Android SDK Platform-tools r21 or higher is required.</li>
-      <li>Android SDK Tools 23.0.5 or higher is required.</li>
-    </ul>
-  </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="" />Revision 1</a> <em>(October 2014)</em>
-  </p>
-
-  <div class="toggle-content-toggleme">
-
-    <p>Initial release for Android 5.0 (API level 21). For more information, see the
-    <a href="{@docRoot}about/versions/android-5.0.html">Android 5.0 API Overview</a>.</p>
-    <p>Dependencies:</p>
-    <ul>
-      <li>Android SDK Platform-tools r21 or higher is required.</li>
-      <li>Android SDK Tools 23.0.5 or higher is required.</li>
-    </ul>
-  </div>
-
-  <h3>Device Definitions</h3>
-
-  <p>The platform includes the following new device definitions for use in creating
-  Android Virtual Devices in the <a href="{@docRoot}tools/help/avd-manager.html">AVD Manager</a>:</p>
-
-  <ul>
-  <li>Nexus 6 (5.96", 1440 x 2560, Normal 560dpi screen) </li>
-  <li>Nexus 9 (8.9", 2048 x 1536, X-Large xhdpi screen) </li>
-  </ul>
-
-</div>
-
-
-<h2 id="4.4">Android 4.4W</h2>
-
-<div class="toggle-content open">
-  <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/styles/disclosure_down.png"
-class="toggle-content-img" alt="" />Revision 2</a> <em>(October 2014)</em>
-  </p>
-
-  <div class="toggle-content-toggleme">
-
-    <p>Updated the rendering library.</p>
-
-    <p>Dependencies:</p>
-    <ul>
-      <li>Android SDK Platform-tools r20 or higher is required.</li>
-      <li>Android SDK Tools 23.0 or higher is required.</li>
-    </ul>
-  </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="" />Revision 1</a> <em>(June 2014)</em>
-  </p>
-
-  <div class="toggle-content-toggleme">
-
-    <p>Initial release for Android Wear.</p>
-    <p>Dependencies:</p>
-    <ul>
-      <li>Android SDK Platform-tools r20 or higher is required.</li>
-      <li>Android SDK Tools 23.0 or higher is required.</li>
-    </ul>
-  </div>
-
-  <h3>Device Definitions</h3>
-
-  <p>The platform includes the following device definitions for use in creating Android Virtual
-  Devices in the <a href="{@docRoot}tools/help/avd-manager.html">AVD Manager</a>:</p>
-
-  <ul>
-    <li>Android Wear Round (320 x 320, hdpi)</li>
-    <li>Android Wear Square (320 x 320, hdpi)</li>
-  </ul>
-</div>
-
-<h2 id="4.4">Android 4.4</h2>
-
-<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="" />Revision 2</a> <em>(December 2013)</em>
-  </p>
-
-  <div class="toggle-content-toggleme">
-
-    <p>Maintenance release. The system version is 4.4.2. For more information, see the
-    <a href="{@docRoot}about/versions/android-4.4.html">Android 4.4 API Overview</a>.</p>
-    <dl>
-      <dt>Dependencies:</dt>
-      <dd>Android SDK Platform-tools r19 or higher is required.</dd>
-      <dd>Android SDK Tools 22.3 or higher is recommended.</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="" />Revision 1</a> <em>(October 2013)</em>
-  </p>
-
-  <div class="toggle-content-toggleme">
-
-    <p>Initial release. The system version is 4.4. For more information, see the
-    <a href="{@docRoot}about/versions/android-4.4.html">Android 4.4 API Overview</a>.</p>
-    <dl>
-      <dt>Dependencies:</dt>
-      <dd>Android SDK Platform-tools r19 or higher is required.</dd>
-      <dd>Android SDK Tools 22.3 or higher is recommended.</dd>
-    </dl>
-
-  </div>
-</div>
-
-
-
-<h3 id="gsi-4.4">Google APIs System Image</h3>
-
-<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="" />Revision 4</a> <em>(March 2014)</em>
-  </p>
-
-  <div class="toggle-content-toggleme">
-
-    <p>This release includes
-    <a href="{@docRoot}google/play-services/index.html">Google Play services</a> version 4.3,
-    allowing you to test your application in an emulator using the latest Google Play services.</p>
-
-  </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="" />Revision 3</a> <em>(February 2014)</em>
-  </p>
-
-  <div class="toggle-content-toggleme">
-
-    <p>This release includes
-    <a href="{@docRoot}google/play-services/index.html">Google Play services</a> version 4.2.42,
-    allowing you to test your application in an emulator using the latest Google Play services.</p>
-
-  </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="" />Revision 2</a> <em>(December 2013)</em>
-  </p>
-
-  <div class="toggle-content-toggleme">
-
-    <p>This release includes
-    <a href="{@docRoot}google/play-services/index.html">Google Play services</a> version 4.0.33.</p>
-
-  </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="" />Revision 1</a> <em>(October 2013)</em>
-  </p>
-
-  <div class="toggle-content-toggleme">
-
-    <p>Initial release. This release includes
-    <a href="{@docRoot}google/play-services/index.html">Google Play services</a> version 4.0.30.
-    </p>
-
-  </div>
-</div>
-
-
-
-<h2 id="4.3">Android 4.3</h2>
-
-
-<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="" />Revision 2</a> <em>(August 2013)</em>
-  </p>
-
-  <div class="toggle-content-toggleme">
-
-    <p>Maintenance update. The system version is 4.3.</p>
-    <dl>
-      <dt>Dependencies:</dt>
-      <dd>Android SDK Platform-tools r18 or higher is required.</dd>
-      <dd>Android SDK Tools 22.0.4 or higher is recommended.</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="" />Revision 1</a> <em>(July 2013)</em>
-  </p>
-
-  <div class="toggle-content-toggleme">
-
-    <p>Initial release. The system version is 4.3.</p>
-    <dl>
-      <dt>Dependencies:</dt>
-      <dd>Android SDK Platform-tools r18 or higher is required.</dd>
-      <dd>Android SDK Tools 22.0.4 or higher is recommended.</dd>
-    </dl>
-
-  </div>
-</div>
-
-<h3 id="gsi-4.3">Google APIs System Image</h3>
-
-<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="" />Revision 3</a> <em>(September 2013)</em>
-  </p>
-
-  <div class="toggle-content-toggleme">
-
-    <p>Maintenance update. This release includes
-    <a href="{@docRoot}google/play-services/index.html">Google Play services</a> version 3.2.65.
-    </p>
-
-  </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="" />Revision 2</a> <em>(August 2013)</em>
-  </p>
-
-  <div class="toggle-content-toggleme">
-
-    <p>Maintenance update. This release includes
-    <a href="{@docRoot}google/play-services/index.html">Google Play services</a> version 3.2.25.
-    </p>
-
-  </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="" />Revision 1</a> <em>(July 2013)</em>
-  </p>
-
-  <div class="toggle-content-toggleme">
-
-    <p>Initial release. This release includes
-    <a href="{@docRoot}google/play-services/index.html">Google Play services</a> version 3.1.58.</p>
-
-  </div>
-</div>
-
-
-
-
-<h2 id="4.2">Android 4.2</h2>
-
-
-<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="" />Revision 2</a> <em>(February 2013)</em>
-  </p>
-
-  <div class="toggle-content-toggleme">
-
-    <p>Maintenance update. The system version is 4.2.2.</p>
-    <dl>
-      <dt>Dependencies:</dt>
-      <dd>SDK Tools r21 or higher is required.</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="" />Revision 1</a> <em>(November 2012)</em>
-  </p>
-
-  <div class="toggle-content-toggleme">
-
-    <p>Initial release. The system version is 4.2.</p>
-    <dl>
-      <dt>Dependencies:</dt>
-      <dd>SDK Tools r20 or higher is required.</dd>
-    </dl>
-
-  </div>
-</div>
-
-<h3>Device Definitions</h3>
-
-<p>The platform includes the following device definitions for use in creating Android Virtual
-Devices in the <a href="{@docRoot}tools/help/avd-manager.html">AVD Manager</a>:</p>
-
-<ul>
-  <li>
-    Nexus 7 (7.3", 800 x 1280, Large tvdpi screen)
-  </li>
-  <li>
-    Galaxy Nexus (4.7", 720 x 1280, Normal xhdpi screen)
-  </li>
-  <li>
-    Nexus S (4.0", 480 x 800, Normal hdpi screen)
-  </li>
-  <li>
-    Nexus One (3.7", 480 x 720, Normal hdpi screen)
-  </li>
-  <li>
-    10.1" WXGA Tablet (1280 x 800, X-Large mdpi screen)
-  </li>
-  <li>
-    7.0" WSVGA Tablet (1024 x 600, Large mdpi screen)
-  </li>
-  <li>
-    5.4" FWVGA (480 x 854, Large mdpi screen)
-  </li>
-  <li>
-    5.1" WVGA (480 x 800, Large mdpi screen)
-  </li>
-  <li>
-    4.7" WXGA (1280 x 720, Normal xhdpi screen)
-  </li>
-  <li>
-    4.65" 720p (720 x 1280, Normal xhdpi screen)
-  </li>
-  <li>
-    4.0" WVGA (480 x 800, Normal hdpi screen)
-  </li>
-  <li>
-    3.7" WVGA (480 x 800, Normal hdpi screen)
-  </li>
-  <li>
-    3.7" FWVGA slider (480 x 854, Normal hdpi screen)
-  </li>
-  <li>
-    3.4" WQVGA (240 x 432, Normal ldpi screen)
-  </li>
-  <li>
-    3.3" WQVGA (240 x 400, Normal ldpi screen)
-  </li>
-  <li>
-    3.2" QVGA ADP2 (320 x 480, Normal mdpi screen)
-  </li>
-  <li>
-    3.2" HVGA slider ADP1 (320 x 480, Normal mdpi screen)
-  </li>
-  <li>
-    2.7" QVGA slider (240 x 320, Small ldpi screen)
-  </li>
-  <li>
-    2.7" QVGA (240 x 320, Small ldpi screen)
-  </li>
-</ul>
-
-
-
-<h2 id="4.1">Android 4.1</h2>
-
-
-<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="" />Revision 3</a> <em>(October 2012)</em>
-  </p>
-
-  <div class="toggle-content-toggleme">
-
-    <p>Maintenance update. The system version is 4.1.2.</p>
-    <dl>
-      <dt>Dependencies:</dt>
-      <dd>SDK Tools r20 or higher is required.</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="" />Revision 2</a> <em>(July 2012)</em>
-  </p>
-
-  <div class="toggle-content-toggleme">
-
-    <p>Maintenance update. The system version is 4.1.1.</p>
-    <dl>
-      <dt>Dependencies:</dt>
-      <dd>SDK Tools r20 or higher is required.</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="" />Revision 1</a> <em>(June 2012)</em>
-  </p>
-
-  <div class="toggle-content-toggleme">
-
-    <p>Initial release. The system version is 4.1.0.</p>
-    <dl>
-      <dt>Dependencies:</dt>
-      <dd>SDK Tools r20 or higher is required.</dd>
-    </dl>
-
-  </div>
-</div>
-
-<h3>Emulator Skins</h3>
-
-<p>The downloadable platform includes the following emulator skins:</p>
-
-<ul>
-  <li>
-    QVGA (240x320, low density, small screen)
-  </li>
-  <li>
-    WQVGA400 (240x400, low density, normal screen)
-  </li>
-  <li>
-    WQVGA432 (240x432, low density, normal screen)
-  </li>
-  <li>
-    HVGA (320x480, medium density, normal screen)
-  </li>
-  <li>
-    WVGA800 (480x800, high density, normal screen)
-  </li>
-  <li>
-    WVGA854 (480x854 high density, normal screen)
-  </li>
-  <li>
-    WXGA720 (1280x720, extra-high density, normal screen)
-  </li>
-  <li>
-    WSVGA (1024x600, medium density, large screen)
-  </li>
-  <li>
-    WXGA800-7in (1280x800, high density, large screen) <span class="new">new</span>
-  </li>
-  <li>
-    WXGA800 (1280x800, medium density, xlarge screen)
-  </li>
-</ul>
-
-<p>To test your application on an emulator that represents the <a
-href="http://play.google.com/nexus7">Nexus 7</a> tablet device, you can create an AVD with
-the new WXGA800-7in skin. For best performance, make sure to enable <a
-href="{@docRoot}tools/devices/emulator.html#accel-graphics">graphics acceleration</a> in the
-emulator configuration.</p>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-<h2 id="4.0.3">Android 4.0.3</h2>
-
-
-<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="" />Revision 3</a> <em>(March 2012)</em>
-  </p>
-
-  <div class="toggle-content-toggleme">
-
-    <p>Maintenance update. The system version is 4.0.4.</p>
-    <p class="note"><strong>Note:</strong> This system image includes support for emulator
-hardware graphics acceleration when used with SDK Tools r17 or higher.
-(<a href="{@docRoot}tools/devices/emulator.html#accel-graphics">more info</a>)</p>
-    <dl>
-      <dt>Dependencies:</dt>
-      <dd>SDK Tools r17 or higher is required.</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="" />Revision 2</a> <em>(January 2012)</em>
-  </p>
-
-  <div class="toggle-content-toggleme">
-
-    <p>Maintenance update. The system version is 4.0.3.</p>
-    <dl>
-      <dt>Dependencies:</dt>
-      <dd>SDK Tools r14 or higher is required.</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="" />Revision 1</a> <em>(December 2011)</em>
-  </p>
-
-  <div class="toggle-content-toggleme">
-
-    <p>Initial release. The system version is 4.0.3.</p>
-    <dl>
-      <dt>Dependencies:</dt>
-      <dd>SDK Tools r14 or higher is required.</dd>
-    </dl>
-
-  </div>
-</div>
-
-<h3>Emulator Skins</h3>
-
-<p>The downloadable platform includes the following emulator skins:</p>
-
-<ul>
-  <li>
-    QVGA (240x320, low density, small screen)
-  </li>
-  <li>
-    WQVGA400 (240x400, low density, normal screen)
-  </li>
-  <li>
-    WQVGA432 (240x432, low density, normal screen)
-  </li>
-  <li>
-    HVGA (320x480, medium density, normal screen)
-  </li>
-  <li>
-    WVGA800 (480x800, high density, normal screen)
-  </li>
-  <li>
-    WVGA854 (480x854 high density, normal screen)
-  </li>
-  <li>
-    WXGA720 (1280x720, extra-high density, normal screen)
-  </li>
-  <li>
-    WSVGA (1024x600, medium density, large screen)
-  </li>
-  <li>
-    WXGA (1280x800, medium density, xlarge screen)
-  </li>
-</ul>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-<h2 id="4.0">Android 4.0</h2>
-
-
-<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 4.0, Revision 2</a> <em>(December 2011)</em>
-  </p>
-
-  <div class="toggle-content-toggleme">
-    <p>Maintenance update. The system version is 4.0.2.</p>
-    <dl>
-      <dt>Dependencies:</dt>
-      <dd>SDK Tools r14 or higher is required.</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="" />Android 4.0, Revision 1</a> <em>(October 2011)</em>
-  </p>
-
-  <div class="toggle-content-toggleme">
-    <p>Initial release. The system version is 4.0.1.</p>
-    <dl>
-      <dt>Dependencies:</dt>
-      <dd>SDK Tools r14 or higher is required.</dd>
-    </dl>
-  </div>
-</div>
-
-
-<h3>Emulator Skins</h3>
-
-<p>The downloadable platform includes the following emulator skins:</p>
-
-<ul>
-  <li>
-    QVGA (240x320, low density, small screen)
-  </li>
-  <li>
-    WQVGA400 (240x400, low density, normal screen)
-  </li>
-  <li>
-    WQVGA432 (240x432, low density, normal screen)
-  </li>
-  <li>
-    HVGA (320x480, medium density, normal screen)
-  </li>
-  <li>
-    WVGA800 (480x800, high density, normal screen)
-  </li>
-  <li>
-    WVGA854 (480x854 high density, normal screen)
-  </li>
-  <li>
-    WXGA720 (1280x720, extra-high density, normal screen) <span class="new">new</span>
-  </li>
-  <li>
-    WSVGA (1024x600, medium density, large screen) <span class="new">new</span>
-  </li>
-  <li>
-    WXGA (1280x800, medium density, xlarge screen)
-  </li>
-</ul>
-
-<p>To test your application on an emulator that represents the latest Android device, you can create
-an AVD with the new WXGA720 skin (it's an xhdpi, normal screen device). Note that the emulator
-currently doesn't support the new on-screen navigation bar for devices without hardware navigation
-buttons, so when using this skin, you must use keyboard keys <em>Home</em> for the Home button,
-<em>ESC</em> for the Back button, and <em>F2</em> or <em>Page-up</em> for the Menu button.</p>
-
-<p>However, due to performance issues in the emulator when running high-resolution screens such as
-the one for the WXGA720 skin, we recommend that you primarily use the traditional WVGA800 skin
-(hdpi, normal screen) to test your application.</p>
-
-
-
-
-
-
-
-
-
-
-
-
-
-<h2 id="3.2">Android 3.2</h2>
-
-
-
-<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 3.2, Revision 1</a> <em>(July 2011)</em>
-  </p>
-
-  <div class="toggle-content-toggleme">
-
-<dl>
-<dt>Initial release. SDK Tools r12 or higher is recommended.</dt>
-</dl>
-
-  </div>
-</div>
-
-
-
-
-<h3>Emulator Skins</h3>
-
-<p>The downloadable platform includes the following emulator skin:</p>
-
-<ul>
-  <li>
-    WXGA (1280x800, medium density, xlarge screen)
-  </li>
-</ul>
-
-<p>For more information about how to develop an application that displays
-and functions properly on all Android-powered devices, see <a
-href="{@docRoot}guide/practices/screens_support.html">Supporting Multiple
-Screens</a>.</p>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-<h2 id="3.1">Android 3.1</h2>
-
-
-<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 3.1, Revision 3</a> <em>(July 2011)</em>
-</p>
-
-<div class="toggle-content-toggleme">
-
-<dl>
-<dt>Dependencies:</dt>
-<dd>
-<p>Requires <a href="{@docRoot}tools/sdk/tools-notes.html">SDK Tools r12</a> or
-higher.</p>
-</dd>
-<dt>Notes:</dt>
-<dd>
-<p>Improvements to the platform's rendering library to support the visual layout editor in the ADT
-Eclipse plugin. This revision allows for more drawing features in ADT and fixes several
-bugs in the previous rendering library. It also unlocks several editor features that were added in
-ADT 12.</p>
-</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="" />Android 3.1, Revision 2</a> <em>(May 2011)</em>
-</p>
-
-<div class="toggle-content-toggleme">
-
-<dl>
-<dt>Dependencies:</dt>
-<dd>
-<p>Requires <a href="{@docRoot}tools/sdk/tools-notes.html">SDK Tools r11</a> or
-higher.</p>
-</dd>
-<dt>Notes:</dt>
-<dd>
-<p>Fixes an issue with the visual layout editor rendering library that prevented Android 3.1 from
-running in ADT.</p>
-</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="" />Android 3.1, Revision 1</a> <em>(May 2011)</em>
-</p>
-
-<div class="toggle-content-toggleme">
-
-<dl>
-<dt>Dependencies:</dt>
-<dd>
-<p>Requires <a href="{@docRoot}tools/sdk/tools-notes.html">SDK Tools r11</a> or
-higher.</p>
-</dd>
-</dl>
-
-</div>
-</div>
-
-
-<h3>Emulator Skins</h3>
-
-<p>The downloadable platform includes the following emulator skin:</p>
-
-<ul>
-  <li>
-    WXGA (1280x800, medium density, xlarge screen)
-  </li>
-</ul>
-
-<p>For more information about how to develop an application that displays
-and functions properly on all Android-powered devices, see <a
-href="{@docRoot}guide/practices/screens_support.html">Supporting Multiple
-Screens</a>.</p>
-
-
-
-
-
-
-
-
-
-
-
-<h2 id="3.0">Android 3.0</h2>
-
-
-<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 3.0, Revision 2</a> <em>(July 2011)</em>
-</p>
-
-<div class="toggle-content-toggleme">
-
-<dl>
-<dt>Dependencies:</dt>
-<dd>
-<p>Requires <a href="{@docRoot}tools/sdk/tools-notes.html">SDK Tools r12</a> or
-higher.</p>
-</dd>
-<dt>Notes:</dt>
-<dd>
-<p>Improvements to the platform's rendering library to support the visual layout editor in the ADT
-Eclipse plugin. This revision allows for more drawing features in ADT and fixes several
-bugs in the previous rendering library. It also unlocks several editor features that were added in
-ADT 12.</p>
-</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="" />Android 3.0, Revision 1</a> <em>(February 2011)</em>
-</p>
-
-<div class="toggle-content-toggleme">
-
-<dl>
-<dt>Dependencies:</dt>
-<dd>
-<p>Requires <a href="{@docRoot}tools/sdk/tools-notes.html">SDK Tools r10</a> or higher.</p>
-</dd>
-</dl>
-
-</div>
-</div>
-
-
-
-<h3>Emulator Skins</h3>
-
-<p>The downloadable platform includes the following emulator skin:</p>
-
-<ul>
-  <li>
-    WXGA (1280x800, medium density, xlarge screen)
-  </li>
-</ul>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-<h2 id="2.3.4">Android 2.3.4</h2>
-
-
-<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 2.3.4, Revision 1</a> <em>(May 2011)</em>
-</p>
-
-  <div class="toggle-content-toggleme">
-    <dl>
-      <dt>Dependencies:</dt>
-      <dd>
-        <p>Requires SDK Tools r11 or higher.</p>
-      </dd>
-    </dl>
-  </div>
-</div>
-
-
-<h3>Emulator Skins</h3>
-
-<p>The downloadable platform includes a set of emulator skins that you can use
-for modeling your application in different screen sizes and resolutions. The
-emulator skins are:</p>
-
-<ul>
-  <li>
-    QVGA (240x320, low density, small screen)
-  </li>
-  <li>
-    WQVGA400 (240x400, low density, normal screen)
-  </li>
-  <li>
-    WQVGA432 (240x432, low density, normal screen)
-  </li>
-  <li>
-    HVGA (320x480, medium density, normal screen)
-  </li>
-  <li>
-    WVGA800 (480x800, high density, normal screen)
-  </li>
-  <li>
-    WVGA854 (480x854 high density, normal screen)
-  </li>
-</ul>
-
-
-
-
-
-
-
-
-
-
-
-
-
-<h2 id="2.3.3">Android 2.3.3</h2>
-
-
-<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 2.3.3, Revision 2</a> <em>(July 2011)</em>
-</p>
-
-<div class="toggle-content-toggleme">
-
-<dl>
-<dt>Dependencies:</dt>
-<dd>
-<p>Requires <a href="{@docRoot}tools/sdk/tools-notes.html">SDK Tools r12</a> or
-higher.</p>
-</dd>
-<dt>Notes:</dt>
-<dd>
-<p>Improvements to the platform's rendering library to support the visual layout editor in the ADT
-Eclipse plugin. This revision allows for more drawing features in ADT and fixes several
-bugs in the previous rendering library. It also unlocks several editor features that were added in
-ADT 12.</p>
-</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="" />Android 2.3.3, Revision 1</a> <em>(February 2011)</em>
-</p>
-
-<div class="toggle-content-toggleme">
-<dl>
-<dt>Dependencies:</dt>
-<dd>
-<p>Requires SDK Tools r9 or higher.</p>
-</dd>
-</dl>
-
-</div>
-</div>
-
-
-<h3>Emulator Skins</h3>
-
-<p>The downloadable platform includes a set of emulator skins that you can use
-for modeling your application in different screen sizes and resolutions. The
-emulator skins are:</p>
-
-<ul>
-  <li>
-    QVGA (240x320, low density, small screen)
-  </li>
-  <li>
-    WQVGA400 (240x400, low density, normal screen)
-  </li>
-  <li>
-    WQVGA432 (240x432, low density, normal screen)
-  </li>
-  <li>
-    HVGA (320x480, medium density, normal screen)
-  </li>
-  <li>
-    WVGA800 (480x800, high density, normal screen)
-  </li>
-  <li>
-    WVGA854 (480x854 high density, normal screen)
-  </li>
-</ul>
-
-
-
-
-
-
-
-
-
-
-
-
-<h2 id="2.3">Android 2.3</h2>
-
-
-<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 2.3, Revision 1</a> <em>(December 2010)</em>
-</p>
-
-  <div class="toggle-content-toggleme">
-    <dl>
-      <dt>Dependencies:</dt>
-      <dd>
-      <p>Requires SDK Tools r8 or higher.</p>
-      </dd>
-    </dl>
-  </div>
-</div>
-
-
-<h3>Emulator Skins</h3>
-
-<p>The downloadable platform includes a set of emulator skins that you can use
-for modeling your application in different screen sizes and resolutions. The
-emulator skins are:</p>
-
-<ul>
-  <li>
-    QVGA (240x320, low density, small screen)
-  </li>
-  <li>
-    WQVGA400 (240x400, low density, normal screen)
-  </li>
-  <li>
-    WQVGA432 (240x432, low density, normal screen)
-  </li>
-  <li>
-    HVGA (320x480, medium density, normal screen)
-  </li>
-  <li>
-    WVGA800 (480x800, high density, normal screen)
-  </li>
-  <li>
-    WVGA854 (480x854 high density, normal screen)
-  </li>
-</ul>
-
-
-
-
-
-
-
-
-
-<h2 id="2.2">Android 2.2</h2>
-
-
-<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 {@sdkPlatformVersion}, Revision 3</a> <em>(July 2011)</em>
-</p>
-
-<div class="toggle-content-toggleme">
-
-<dl>
-<dt>Dependencies:</dt>
-<dd>
-<p>Requires <a href="{@docRoot}tools/sdk/tools-notes.html">SDK Tools r12</a> or
-higher.</p>
-</dd>
-<dt>Notes:</dt>
-<dd>
-<p>Improvements to the platform's rendering library to support the visual layout editor in the ADT
-Eclipse plugin. This revision allows for more drawing features in ADT and fixes several
-bugs in the previous rendering library. It also unlocks several editor features that were added in
-ADT 12.</p>
-</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="" />Android {@sdkPlatformVersion}, Revision 2</a> <em>(July 2010)</em>
-</p>
-
-<div class="toggle-content-toggleme">
-<dt>Dependencies:</dt>
-<dd>
-<p>Requires SDK Tools r6 or higher.</p>
-</dd>
-
-<dt>System Image:</dt>
-<dd>
-<ul>
-<li>Adds default Search Widget.</li>
-<li>Includes proper provisioning for the platform's Backup Manager. For more information about how
-to use the Backup Manager, see <a href="{@docRoot}guide/topics/data/backup.html">Data
-Backup</a>.</li>
-<li>Updates the Android 2.2 system image to FRF91.</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="" />Android {@sdkPlatformVersion}, Revision 1</a> <em>(May 2010)</em></p>
-
-<div class="toggle-content-toggleme">
-<dl>
-<dt>Dependencies:</dt>
-<dd>
-<p>Requires SDK Tools r6 or higher.</p>
-</dd>
-
-<dt>Tools:</dt>
-<dd>
-<p>Adds support for building with Android library projects. See <a href="{@docRoot}tools/sdk/tools-notes.html">SDK
-Tools, r6</a> for information.</p>
-</dd>
-
-</dl>
- </div>
-</div>
-
-
-<h3>Emulator Skins</h3>
-
-<p>The downloadable platform includes a set of emulator skins that you can use
-for modeling your application in different screen sizes and resolutions. The
-emulator skins are:</p>
-
-<ul>
-  <li>
-    QVGA (240x320, low density, small screen)
-  </li>
-  <li>
-    WQVGA (240x400, low density, normal screen)
-  </li>
-  <li>
-    FWQVGA (240x432, low density, normal screen)
-  </li>
-  <li>
-    HVGA (320x480, medium density, normal screen)
-  </li>
-  <li>
-    WVGA800 (480x800, high density, normal screen)
-  </li>
-  <li>
-    WVGA854 (480x854 high density, normal screen)
-  </li>
-</ul>
diff --git a/docs/html/tools/revisions/studio.jd b/docs/html/tools/revisions/studio.jd
deleted file mode 100755
index a65c164..0000000
--- a/docs/html/tools/revisions/studio.jd
+++ /dev/null
@@ -1,611 +0,0 @@
-page.title=Android Studio Release Notes
-
-@jd:body
-
-
-<div id="qv-wrapper">
-<div id="qv">
-
-  <h2>See also</h2>
-  <ol>
-    <li><a href="{@docRoot}sdk/installing/index.html">Installing Android Studio</a></li>
-  </ol>
-
-</div>
-</div>
-
-
-<p>Android Studio is the official IDE for Android development, and with a single download includes
-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>
-</ul>
-
-<p>For an introduction to Android Studio, read the
-<a href="{@docRoot}tools/studio/index.html">Android Studio</a> guide.</p>
-
-<p>Periodic updates are pushed to Android Studio without requiring you to update your Android
-project. To manually check for updates, select <strong>Help > Check for update</strong> (on Mac,
-select <strong>Android Studio > Check for updates</strong>).</p>
-
-
-<h2 id="Revisions">Revisions</h2>
-
-<p>The sections below provide notes about successive releases of
-Android Studio, as denoted by revision number. </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 Studio v1.5.1</a> <em>(December 2015)</em>
-  </p>
-  <div class="toggle-content-toggleme">
-    <p>Fixes and enhancements:</p>
-    <ul>
-    <li>Fixed a rendering failure issue in the Layout Editor.
-      <a href="http://b.android.com/194612">Issue: 194612</a> </li>
-    <li>Added the ability to vary <code>description</code> manifest attributes by configuration.
-      <a href="http://b.android.com/194705">Issue: 194705</a>
-    </li>
-     <li>Improved the contrast of the Android Studio Darcula appearance theme in Vector Asset Studio.
-      <a href="http://b.android.com/191819">Issue: 191819</a>
-    </li>
-    <li>Added <em>Help</em> button support to Vector Asset Studio.
-    </li>
-    <li>Added support for the <code>%</code> operator for data binding. <a href="http://b.android.com/194045">Issue: 194045</a>
-      </li>
-    <li>Fixed a case where launching an app for debugging resulted in the debugger connecting to the
-      wrong device. <a href="http://b.android.com/195167">Issue: 195167</a>
-    </li>
-    <li>Fixed a null pointer exception that could occur when attempting to run an app in
-      certain scenarios.
-    </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.0</a> <em>(November 2015)</em>
-  </p>
-  <div class="toggle-content-toggleme">
-    <p>Fixes and enhancements:</p>
-    <ul>
-    <li>Added new Memory Monitor analysis abilities to Android Monitor. When you view an HPROF file
-      captured from this monitor, the display is now more helpful so you can more quickly locate
-      problems, such as memory leaks. To use this monitor, click <strong>Android Monitor</strong> at
-      the bottom of the main window. In Android Monitor, click the <strong>Memory</strong> tab. While
-      the monitor is running, click the <strong>Dump Java Heap</strong> icon, and then click
-      <strong>Captures</strong> in the main window and double-click the file to view it. Click
-      <em>Capture Analysis</em> on the right. (The
-      Android Device Monitor can't be running at the same time as Android Monitor.)</li>
-    <li>Added new deep link and app link support. The Code Editor can automatically create an
-      intent filter for deep linking in the <code>AndroidManifest.xml</code> file. It can also
-      generate code to help you integrate with the
-      <a href="http://developers.google.com/app-indexing/android/publish" class="external-link">App Indexing API</a>
-      in an activity in a Java file. A deep link testing feature
-      helps you verify that a specified deep link can launch an app. In the <strong>General</strong>
-      tab of the <em>Run/Debug Configurations</em> dialog, you can specify deep link launch
-      options. You can also test App Indexing API calls in an activity by using the Android Monitor
-      <strong>logcat</strong> display. The Android <code>lint</code> tool now has warnings for
-      certain issues involving deep links and the App Indexing API.
-    </li>
-     <li>Added the ability to use short names when code-completing custom views in the Code Editor.
-    </li>
-    <li>Added support for more {@link android.graphics.drawable.VectorDrawable} elements to
-      <a href="{@docRoot}tools/help/vector-asset-studio.html">Vector Asset Studio</a>
-      for backward-compatibility. Vector Asset Studio can use these elements to convert vector
-      drawables into PNG raster images to use with Android 4.4 (API level 20) and lower.
-    </li>
-    <li>Added new <code>lint</code> checks for Android TV and Android Auto to give you
-      immediate, actionable feedback in Android Studio, along with several quick fixes. For example,
-      for Android TV, it can report and provide a quick fix for permissions, unsupported hardware,
-      <code>uses-feature</code> element, and missing banner issues. For Android Auto, it can
-      validate the correct usage in the descriptor file referred from your
-      <code>AndroidManifest.xml</code> file, report if there isn't an intent filter for the
-      <code>MediaBrowserService</code> class, and identify certain voice actions issues.
-      </li>
-    <li>Added new <code>lint</code> checks for insecure broadcast receivers,
-    <code>SSLCertificateSocketFactory</code> and <code>HostnameVerifier</code> class uses, and
-    <code>File.setReadable()</code> and <code>File.setWritable()</code> calls. It also detects
-    invalid manifest resource lookups, especially for resources that vary by configuration.
-    </li>
-    <li>Fixed a number of stability issues.
-    </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.4.1</a> <em>(October 2015)</em>
-  </p>
-  <div class="toggle-content-toggleme">
-    <p>Fixes and enhancements:</p>
-  <ul>
-    <li>Fixed a Gradle model caching issue that could lead to excessive Gradle syncing when the IDE
-    was restarted.
-    </li>
-    <li>Fixed a native debugging deadlock issue.
-    </li>
-    <li>Fixed an issue blocking users of the Subversion 1.9 version control system.
-    </li>
-    <li>Fixed a <em>Device Chooser</em> dialog problem where after connecting a device that was
-    unauthorized you could no longer select the emulator. <a href="http://b.android.com/189658">Issue: 189658</a>
-    </li>
-    <li>Fixed incorrect translation error reporting for locales that have a region qualifier and a
-    translation in the region (but not in the base locale). <a href="http://b.android.com/188577">Issue: 188577</a>
-    </li>
-    <li>Fixed a deadlock issue in the Theme Editor related to its interaction with the Layout
-    Editor. <a href="http://b.android.com/188070">Issue: 188070</a>
-    </li>
-    <li>Fixed a Theme Editor reload and edit conflict causing attributes to not properly update.
-    <a href="http://b.android.com/187726">Issue: 187726</a>
-    </li>
-    <li>Improved Theme Editor performance.
-    </li>
-    <li>Fixed an issue where the <code>android:required</code> attribute was ignored in the manifest.
-    <a href="http://b.android.com/187665">Issue: 187665</a>
-    </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.4.0</a> <em>(September 2015)</em>
-  </p>
-  <div class="toggle-content-toggleme">
-    <p>Fixes and enhancements:</p>
-  <ul>
-    <li>Added the <a href="{@docRoot}tools/help/vector-asset-studio.html">Vector Asset Studio</a>
-      tool for importing vector graphics, such as material icons
-      and SVG files. To use this tool, in the Android view of the Project window, right-click the
-      <strong>res</strong> folder and select <strong>New</strong> &gt; <strong>Vector Asset</strong>.
-    </li>
-    <li>Added new Android Monitor functions, GPU and Network. To use these monitors, click
-      <strong>Android Monitor</strong> at the bottom of the main window. The Android Device Monitor
-      can't be running at the same time as Android Monitor.
-    </li>
-    <li>Added an early preview of the new Theme Editor. To use this feature, select
-      <strong>Tools</strong> &gt; <strong>Android</strong> &gt; <strong>Theme Editor</strong>.
-    </li>
-    <li>Updated the Android templates for the Design Support Library. Templates now include support
-      for the Material Design specification, as well as the <code>appcompat</code> Support Library
-      for backwards compatibility.
-    </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.3.2</a> <em>(August 2015)</em>
-  </p>
-  <div class="toggle-content-toggleme">
-    <p>Fixes and enhancements:</p>
-    <ul>
-      <li>Added support for Android 6.0 (API level 23), including new icons and AVD Manager
-        support for creating devices with new screen densities.</li>
-      <li>Fixed an exception that was occuring during update checks.
-        <a href="http://b.android.com/183068">Issue: 183068</a></li>
-      <li>Fixed problem where unresolved view coordinates could cause the layout editor to crash.
-        <a href="http://b.android.com/178690">Issue: 178690</a></li>
-      <li>Fixed issue with invalid resource type warnings.
-        <a href="http://b.android.com/182433">Issue: 182433</a></li>
-      <li>Fixed lint check that was incorrectly flagging resources as private.
-        <a href="http://b.android.com/183120">Issue: 183120</a></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.3.1</a> <em>(August 2015)</em>
-  </p>
-  <div class="toggle-content-toggleme">
-    <p>Fixes and enhancements:</p>
-    <ul>
-      <li>Fixed support for creating an Android Wear Android Virtual Device (AVD) on Windows. </li>
-      <li>Updated the <em>Project Wizard</em> to use the entered project name.  </li>
-      <li>Added support to allow the Android SDK to be stored in a read-only directory.  </li>
-      <li>Updated Android Plugin for Gradle version to 1.3.0. </li>
-      <li>Fixed issues with launching a debug session from the Android Debug Bridge (adb) Unix
-        shell.  </li>
-      <li>Fixed the Java package renaming message to show the correct package name. </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.3.0</a> <em>(July 2015)</em>
-  </p>
-  <div class="toggle-content-toggleme">
-    <p>Fixes and enhancements:</p>
-    <ul>
-      <li>Added options to enable
-        <a href="{@docRoot}tools/studio/studio-features.html#dev-services">developer services</a>,
-        such as <a href="https://developers.google.com/admob/">AdMob</a> and
-        <a href="{@docRoot}distribute/analyze/start.html">Analytics</a>, in your app from within
-        Android Studio. </li>
-      <li>Added additional <a href="{@docRoot}tools/debugging/annotations.html">annotations</a>,
-        such as <code>@RequiresPermission</code>, <code>@CheckResults</code>, and
-        <code>@MainThread</code>. </li>
-      <li>Added the capability to generate Java heap dumps and analyze thread allocations from the
-        <a href="{@docRoot}tools/studio/index.html#mem-cpu">Memory Monitor</a>. You can also
-        convert Android-specific HPROF binary format files to standard HPROF format from within
-        Android Studio. </li>
-      <li>Integrated the <a href="{@docRoot}tools/help/sdk-manager.html">SDK Manager</a>
-        into Android Studio to simplify package and tools access and provide update notifications.
-        <p class="note"><strong>Note:</strong> The standalone SDK Manager is still available from
-        the command line, but is recommended for use only with standalone SDK
-        installations. </p> </li>
-      <li>Added the <code>finger</code> command in the emulator console to simulate
-        <a href="{@docRoot}tools/studio/studio-features.html#finger-print">fingerprint</a>
-        authentication.  </li>
-      <li>Added a <code>&lt;public&gt;</code> resource declaration to designate library
-         resources as
-         <a href="{@docRoot}tools/studio/studio-features.html#private-res">public and private</a>
-         resources.
-         <p class="note"><strong>Note:</strong> Requires
-         <a href="{@docRoot}tools/building/plugin-for-gradle.html">Android Plugin for Gradle</a>
-         version 1.3 or higher. </p> </li>
-      <li>Added <a href="{@docRoot}tools/data-binding/guide.html">data binding</a> support to
-        create declarative layouts that bind your application logic to layout elements. </li>
-      <li>Added support for a separate
-        <a href="{@docRoot}tools/studio/studio-features.html#test-module">test APK module</a>
-        to build test APKs in Android Studio.  </li>
-      <li>Updated the <a href="{@docRoot}tools/help/avd-manager.html">AVD Manager</a> with HAXM
-        optimizations and improved notifications. </li>
-      <li>Added 64-bit ARM and MIPS emulator support for
-        <a class="external-link" href="http://wiki.qemu.org/Main_Page">QEMU</a> 2.1. </li>
-      <li>Simplified the resolution of <a href="{@docRoot}tools/help/lint.html">lint</a> warnings
-        by adding quick fixes, such as the automatic generation of
-        <a href="{@docRoot}reference/android/os/Parcelable.html">Parcelable</a>
-        implementation.</li>
-      <li>Added <a href="{@docRoot}sdk/installing/studio-tips.html#live-templates">live template</a>
-        support for quick insertion of code snippets. </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.2.2</a> <em>(June 2015)</em>
-  </p>
-  <div class="toggle-content-toggleme">
-    <p>Fixes and enhancements:</p>
-    <ul>
-      <li>Fixed build issues that were blocking builds from completing. </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.2.1</a> <em>(May 2015)</em>
-  </p>
-  <div class="toggle-content-toggleme">
-    <p>Fixes and enhancements:</p>
-    <ul>
-      <li>Fixed minor performance and feature issues. </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.2.0</a> <em>(April 2015)</em>
-  </p>
-
-  <div class="toggle-content-toggleme">
-    <p>Fixes and enhancements:</p>
-    <ul>
-      <li>Updated the Android runtime window to include the
-        <a href="{@docRoot}tools/studio/index.html#mem-cpu">Memory Monitor</a> tool
-        and added a tab for CPU performance monitoring.</li>
-      <li>Added a <em>Captures</em> tab in the left margin to display the captured memory and CPU
-        performance data files, such as CPU method tracking and memory heap snapshots.</li>
-      <li>Expanded <a href="{@docRoot}tools/debugging/annotations.html">annotation</a>
-          support with additional metadata annotations and inferred nullability. </li>
-      <li>Enhanced the Translations Editor with additional support for Best Current Practice
-          (BCP) 47, which uses 3-letter language and region codes.</li>
-      <li>Integrated IntelliJ 14 and 14.1 features for improved code analysis and performance:</li>
-         <ul>
-          <li>Enhanced debugging to show inline values for variables and referring objects,
-            as well as perform inline evaluation of lambda and operator expressions. </li>
-          <li>Added code style detection for tab and indent sizes. </li>
-          <li>Added scratch files for code experiments and prototyping without project files.</li>
-          <li>Added the simultaneous insertion of opening and closing tags in HTML and XML files.</li>
-          <li>Added a built-in Java class decompiler so you can look at what’s inside a library
-            for which the source code is not available. </li>
-         </ul>
-         <p>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.</p>
-       </li>
-      <li>Added additional <a href="{@docRoot}tools/studio/index.html#project-view">Project Views</a>
-        for <em>Scratches</em>, <em>Project Files</em>, <em>Problems</em>, <em>Production</em>,
-        and <em>Tests</em> to enhance project management and access. </li>
-      <li>Enhanced the <strong>File &gt; Settings</strong> menu and dialogs for improved settings
-          access and management. </li>
-      <li>Added support for high-density displays for Windows and Linux. </li>
-      <li>Added support for 280 dpi resources in the <code>res/drawable-280dpi/</code> folder.
-     </ul>
-    </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.1.0</a> <em>(February 2015)</em>
-  </p>
-
-  <div class="toggle-content-toggleme">
-    <p>Various fixes and enhancements:</p>
-    <ul>
-      <li>Added support for the <a href="{@docRoot}design/wear/index.html">Android Wear</a> watch
-      template. </li>
-      <li>Modified new project and module creation to include
-      <a href="{@docRoot}tools/projects/index.html#mipmap"><code>res/mipmap</code></a> folders for
-      density-specific launcher icons. These <code>res/mipmap</code> folders replace the
-      <a href="{@docRoot}guide/topics/resources/drawable-resource.html"><code>res/drawable</code></a>
-      folders for launcher icons.  </li>
-      <li>Updated launcher icons to have a
-      <a href="{@docRoot}design/material/index.html">Material Design</a> look and added an
-      <code>xxxhdpi</code> launcher icon. </li>
-      <li>Added and enhanced <a href="{@docRoot}tools/help/lint.html"><code>lint</code></a> checks
-      for region and language combinations, launcher icons, resource names, and other common
-      code problems.</li>
-      <li>Added support for Best Current Practice (BCP) language tag 47.  </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.0.1</a> <em>(December 2014)</em>
-  </p>
-
-  <div class="toggle-content-toggleme">
-    <p>Various fixes and enhancements:</p>
-    <ul>
-      <li>Fixed AVD Manager and <strong>device.xml</strong> file lock issue. </li>
-      <li>Fixed the emulator log on Windows systems. </li>
-      <li>Fixed issue with creating AVDs with Android Studio and Android SDK installed on different
-      drives on Windows systems.</li>
-      <li>Sets the default update channel for new downloads to <strong>Stable</strong>. If you
-      installed the 1.0.0 version of Android Studio and would like stable, production-ready version
-      updates, use <strong>File > Settings > Updates</strong> to change to the <strong>Stable</strong>
-      update channel.
-      </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.0</a> <em>(December 2014)</em>
-  </p>
-
-  <div class="toggle-content-toggleme">
-    <p>Initial release of Android Studio.</p>
-  </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 v0.8.14</a> <em>(October 2014)</em>
-  </p>
-
-  <div class="toggle-content-toggleme">
-    <p>See
-    <a href="http://tools.android.com/recent/androidstudio0814inbetachannel">tools.android.com</a>
-    for a full list of changes.</p>
-  </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 v0.8.6</a> <em>(August 2014)</em>
-  </p>
-
-  <div class="toggle-content-toggleme">
-    <p>See <a href="http://tools.android.com/recent">tools.android.com</a> for a full list of changes.</p>
-  </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 v0.8.0</a> <em>(June 2014)</em>
-  </p>
-
-  <div class="toggle-content-toggleme">
-    <p>Added support for Android Wear projects.</p>
-    <p>See <a href="http://tools.android.com/recent">tools.android.com</a> for a full list of changes.</p>
-  </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 v0.5.2</a> <em>(May 2014)</em>
-  </p>
-
-  <div class="toggle-content-toggleme">
-  <ul>
-    <li>See <a href="http://tools.android.com/recent">tools.android.com</a> for a full list of changes.</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 v0.4.6</a> <em>(March 2014)</em>
-  </p>
-
-  <div class="toggle-content-toggleme">
-  <ul>
-    <li>See <a href="http://tools.android.com/recent">tools.android.com</a> for a full list of changes.</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 v0.4.2</a> <em>(Jan 2014)</em>
-  </p>
-
-  <div class="toggle-content-toggleme">
-  <ul>
-    <li>See <a href="http://tools.android.com/recent">tools.android.com</a> for a full list of changes.</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 v0.3.2</a> <em>(Oct 2013)</em>
-  </p>
-
-  <div class="toggle-content-toggleme">
-  <ul>
-    <li>See <a href="http://tools.android.com/recent">tools.android.com</a> for a full list of changes.</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 v0.2.x</a> <em>(July 2013)</em>
-  </p>
-
-  <div class="toggle-content-toggleme">
-  <ul>
-    <li>Merged in the latest IntelliJ codebase changes. Includes fixes for issues reported by Studio users such as tweaks to Linux font sizes and font rendering.</li>
-    <li>Android Gradle plug-in updated to 0.5.0.
-      <p class="caution"><strong>Caution:</strong> This new version is not backwards compatible.
-      When opening a project that uses an older version of the plug-in, Studio will show an error
-      stating <strong>Gradle &lt;project_name&gt; project refresh failed.</strong></p>
-      <p>The updated Gradle plug-in includes the following changes:</p>
-      <ul>
-        <li>Fixed IDE model to contain the output file even if it's customized through the DSL. Also
-        fixed the DSL to get/set the output file on the variant object so that it's not necessary to
-        use <code>variant.packageApplication or variant.zipAlign</code></li>
-        <li>Fixed dependency resolution so that we resolved the combination of (default config,
-        build types, flavor(s)) together instead of separately.</li>
-        <li>Fixed dependency for tests of library project to properly include all the dependencies
-        of the library itself.</li>
-        <li>Fixed case where two dependencies have the same leaf name.</li>
-        <li>Fixed issue where Proguard rules file cannot be applied on flavors.</li>
-      </ul>
-      <p>All Gradle plugin release notes are available are here: <a href=
-      "http://tools.android.com/tech-docs/new-build-system"
-      >http://tools.android.com/tech-docs/new-build-system</a>.</p>
-    </li>
-    <li>Gradle errors from aapt no longer point to merged output files in the build/ folder, they
-    point back to the real source locations.</li>
-    <li>Parallel Builds. It's now possible to use Gradle's parallel builds. Please be aware that
-    parallel builds are in "incubation" (see <a
-    href="http://www.gradle.org/docs/current/userguide/gradle_command_line.html">Gradle's
-    documentation</a>.) This feature is off by default. To enable it, go to
-    <strong>Preferences</strong> &gt; <strong>Compiler</strong> and check the box <em>Compile
-    independent modules in parallel</em>.</li>
-    <li>Further work on the new resource repository used for layout rendering, resource
-    folding in the editor, and more:
-      <ul>
-      <li>Basic support for .aar library dependencies (e.g. using a library without a local copy of
-      the sources). Still not working for resource XML validation and navigation in source editors.
-      </li>
-      <li>Cycle detection in resource references.</li>
-      <li>Quick Documentation (F1), which can show all translations of the string under the caret,
-      will now also show all resource overlays from the various Gradle flavors and build types, as
-      well as libraries. They are listed in reverse resource overlay order, with strikethrough on
-      the versions of the string that are masked.</li>
-      <li>Fixes to handle updating the merged resources when the set of module dependencies
-      change.</li>
-      <li>XML rendering fixes to properly handle character entity declarations and XML and unicode
-      escapes.</li>
-      </ul>
-    <li>Save screenshot support for the layout preview and layout editor windows.</li>
-    <li>Template bug fixes.</li>
-    <li>Lint bug fixes.</li>
-    <li>Various fixes for crash reports. Thank you, and keep filing crash reports!</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 v0.1.x</a> <em>(May 2013)</em>
-  </p>
-
-  <div class="toggle-content-toggleme">
-  <ul>
-    <li>Various bug fixes, including a fix for a common Windows installation issue.
-  </ul>
-  </div>
-</div>
-
-<p>&nbsp;</p>
-
-
-<h2 id="Troubleshooting">Troubleshooting</h2>
-
-<p>If you encounter problems in Android Studio, look at the following page
-for possible resolutions to known issues: <a href="http://tools.android.com/knownissues"
->http://tools.android.com/knownissues</a>.</p>
-
-
-
-</div><!-- end main content -->
-
-
-
-
-</div><!-- end relative position wrapper -->
-
-
-
diff --git a/docs/html/tools/sdk/eclipse-adt.jd b/docs/html/tools/sdk/eclipse-adt.jd
deleted file mode 100644
index d5f581f..0000000
--- a/docs/html/tools/sdk/eclipse-adt.jd
+++ /dev/null
@@ -1,2360 +0,0 @@
-page.title=ADT Plugin Release Notes
-
-@jd:body
-
-<div id="qv-wrapper">
-<div id="qv">
-
-  <h2>See also</h2>
-  <ol>
-    <li><a href="{@docRoot}sdk/installing/installing-adt.html">Installing the Eclipse
-Plugin</a></li>
-  </ol>
-
-</div>
-</div>
-
-<p>Android Development Tools (ADT) is a plugin for the Eclipse IDE
-that extends the capabilities of Eclipse to let you quickly set up new Android
-projects, create an application UI, add packages based on the Android
-Framework API, debug your applications using the Android SDK tools, and even
-export signed (or unsigned) {@code .apk} files in order to distribute your application.</p>
-
-<p class="note"><strong>Note:</strong>
-If you have been using Eclipse with ADT, be aware that <a
-href="{@docRoot}tools/studio/index.html">Android Studio</a> 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="/sdk/installing/migrate.html">Migrating to Android
-Studio</a>.</p>
-
-<p>Note that
-before you can install or use ADT, you must have compatible versions of both the
-Eclipse IDE and the Android SDK installed. For details, make sure to read <a
-href="{@docRoot}sdk/installing/installing-adt.html">Installing the Eclipse
-Plugin</a>. </p>
-
-
-<p>For information about the features provided by the ADT plugin, such as code
-editor features, SDK tool integration, and the graphical layout editor (for drag-and-drop layout
-editing), see the <a href="{@docRoot}tools/help/adt.html">Android Developer Tools</a>
-document.</p>
-
-
-<h2 id="notes">Revisions</h2>
-
-<p>The sections below provide notes about successive releases of
-the ADT Plugin, as denoted by revision number. </p>
-
-<p>For a summary of all known issues in ADT, see <a
-href="http://tools.android.com/knownissues">http://tools.android.com/knownissues</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=""/>ADT 23.0.7</a> <em>(August 2015)</em>
-  </p>
-
-  <div class="toggle-content-toggleme">
-<dl>
-  <dt>Dependencies:</dt>
-
-  <dd>
-    <ul>
-      <li>Java 7 or higher is required if you are targeting Android 5.0 and higher.</li>
-      <li>Java 1.6 or higher is required if you are targeting other releases.</li>
-      <li>Eclipse Indigo (Version 3.7.2) or higher is required.</li>
-      <li>This version of ADT is designed for use with
-        <a href="{@docRoot}tools/sdk/tools-notes.html">SDK Tools r24.1.2</a>.
-        If you haven't already installed SDK Tools r24.1.2 into your SDK, use the
-        Android SDK Manager to do so.</li>
-    </ul>
-  </dd>
-
-  <dt>General Notes:</dt>
-  <dd>
-    <ul>
-        <li>Fixed issues with the rendering library for the visual layout editor.</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=""/>ADT 23.0.6</a> <em>(March 2015)</em>
-  </p>
-
-  <div class="toggle-content-toggleme">
-<dl>
-  <dt>Dependencies:</dt>
-
-  <dd>
-    <ul>
-      <li>Java 7 or higher is required if you are targeting Android 5.0 and higher.</li>
-      <li>Java 1.6 or higher is required if you are targeting other releases.</li>
-      <li>Eclipse Indigo (Version 3.7.2) or higher is required.</li>
-      <li>This version of ADT is designed for use with
-        <a href="{@docRoot}tools/sdk/tools-notes.html">SDK Tools r24.1.2</a>.
-        If you haven't already installed SDK Tools r24.1.2 into your SDK, use the
-        Android SDK Manager to do so.</li>
-    </ul>
-  </dd>
-
-  <dt>General Notes:</dt>
-  <dd>
-    <ul>
-        <li>Fixed issues with the rendering library for the visual layout editor.</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=""/>ADT 23.0.4</a> <em>(October 2014)</em>
-  </p>
-
-  <div class="toggle-content-toggleme">
-<dl>
-  <dt>Dependencies:</dt>
-
-  <dd>
-    <ul>
-      <li>Java 7 or higher is required if you are targeting Android 5.0 and higher.</li>
-      <li>Java 1.6 or higher is required if you are targeting other releases.</li>
-      <li>Eclipse Indigo (Version 3.7.2) or higher is required.</li>
-      <li>This version of ADT is designed for use with
-        <a href="{@docRoot}tools/sdk/tools-notes.html">SDK Tools r23.0.4</a>.
-        If you haven't already installed SDK Tools r23.0.4 into your SDK, use the
-        Android SDK Manager to do so.</li>
-    </ul>
-  </dd>
-
-  <dt>General Notes:</dt>
-  <dd>
-    <ul>
-        <li>Fixed duplicate devices in AVD for Wear and TV.</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=""/>ADT 23.0.3</a> <em>(August 2014)</em>
-  </p>
-
-  <div class="toggle-content-toggleme">
-<dl>
-  <dt>Dependencies:</dt>
-
-  <dd>
-    <ul>
-      <li>Java 7 or higher is required if you are targeting Android 5.0 and higher.</li>
-      <li>Java 1.6 or higher is required if you are targeting other releases.</li>
-      <li>Eclipse Indigo (Version 3.7.2) or higher is required.</li>
-      <li>This version of ADT is designed for use with
-        <a href="{@docRoot}tools/sdk/tools-notes.html">SDK Tools r23.0.2</a>.
-        If you haven't already installed SDK Tools r23.0.2 into your SDK, use the
-        Android SDK Manager to do so.</li>
-    </ul>
-  </dd>
-
-  <dt>General Notes:</dt>
-  <dd>
-    <ul>
-      <li>Fixed an issue where ADT displayed a <code>NullPointerException</code> warning dialog
-          when a valid SDK was not configured. (<a href="http://b.android.com/73313">Issue
-          73313</a>)</li>
-      <li>Fixed a minor issue with RenderScript support.</li>
-      <li>Disabled APK compression.</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=""/>ADT 23.0.2</a> <em>(July 2014)</em>
-  </p>
-
-  <div class="toggle-content-toggleme">
-<dl>
-  <dt>Dependencies:</dt>
-
-  <dd>
-    <ul>
-      <li>Java 7 or higher is required if you are targeting Android 5.0 and higher.</li>
-      <li>Java 1.6 or higher is required if you are targeting other releases.</li>
-      <li>Eclipse Indigo (Version 3.7.2) or higher is required.</li>
-      <li>This version of ADT is designed for use with
-        <a href="{@docRoot}tools/sdk/tools-notes.html">SDK Tools r23.0.2</a>.
-        If you haven't already installed SDK Tools r23.0.2 into your SDK, use the
-        Android SDK Manager to do so.</li>
-    </ul>
-  </dd>
-
-  <dt>General Notes:</dt>
-  <dd>
-    <ul>
-      <li>ADT Bundle shows the Java perspective by default.</li>
-      <li>ADT Bundle 23.0.0 and prior versions would not allow updating the ADT plugins
-          due to conflicting dependencies. This version fixes that bug and should allow
-          updating to future versions of the ADT plugins.</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=""/>ADT 23.0.0</a> <em>(June 2014)</em>
-  </p>
-
-  <div class="toggle-content-toggleme">
-<dl>
-  <dt>Dependencies:</dt>
-
-  <dd>
-    <ul>
-      <li>Java 7 or higher is required if you are targeting Android 5.0 and higher.</li>
-      <li>Java 1.6 or higher is required if you are targeting other releases.</li>
-      <li>Eclipse Indigo (Version 3.7.2) or higher is required.</li>
-      <li>This version of ADT is designed for use with
-        <a href="{@docRoot}tools/sdk/tools-notes.html">SDK Tools r23.0.0</a>.
-        If you haven't already installed SDK Tools r23.0.0 into your SDK, use the
-        Android SDK Manager to do so.</li>
-    </ul>
-  </dd>
-
-  <dt>General Notes:</dt>
-  <dd>
-    <ul>
-      <li>Added the Android Wear tools and system images.</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=""/>ADT 22.6.3</a> <em>(April 2014)</em>
-  </p>
-
-  <div class="toggle-content-toggleme">
-<dl>
-  <dt>Dependencies:</dt>
-
-  <dd>
-    <ul>
-      <li>Java 1.6 or higher is required.</li>
-      <li>Eclipse Indigo (Version 3.7.2) or higher is required.</li>
-      <li>This version of ADT is designed for use with
-        <a href="{@docRoot}tools/sdk/tools-notes.html">SDK Tools r22.6.3</a>.
-        If you haven't already installed SDK Tools r22.6.3 into your SDK, use the
-        Android SDK Manager to do so.</li>
-    </ul>
-  </dd>
-
-  <dt>General Notes:</dt>
-  <dd>
-    <ul>
-      <li>Fixed a problem where the AVD manager allowed creating Android Wear virtual devices
-          with a target API Level lower than 19.</li>
-      <li>Fixed the description of Android Wear system images in the SDK Manager.</li>
-    </ul>
-  </dd>
-
-  <dt>Known Issues:</dt>
-  <dd>
-    <p>When you create an Android Wear virtual device in the AVD manager, a target API Level
-       lower than 19 may be selected by default. Make sure you select the target API Level 19
-       when creating Android Wear virtual devices.</p>
-  </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=""/>ADT 22.6.2</a> <em>(March 2014)</em>
-  </p>
-
-  <div class="toggle-content-toggleme">
-<dl>
-  <dt>Dependencies:</dt>
-
-  <dd>
-    <ul>
-      <li>Java 1.6 or higher is required.</li>
-      <li>Eclipse Indigo (Version 3.7.2) or higher is required.</li>
-      <li>This version of ADT is designed for use with
-        <a href="{@docRoot}tools/sdk/tools-notes.html">SDK Tools r22.6.2</a>.
-        If you haven't already installed SDK Tools r22.6.2 into your SDK, use the
-        Android SDK Manager to do so.</li>
-    </ul>
-  </dd>
-
-  <dt>General Notes:</dt>
-  <dd>
-    <ul>
-      <li><p>Changed the URL for the Android Developer Tools update site to require HTTPS.</p>
-          <p class="note"><strong>Note:</strong> If you are
-          <a href="{@docRoot}sdk/installing/installing-adt.html">updating ADT</a>, make sure
-          you use HTTPS in the URL for the Android Developer Tools update site.</p>
-      </li>
-      <li>Fixed a problem where Eclipse was non-responsive for a few seconds after opening
-          an XML file. (<a href="http://b.android.com/67084">Issue 67084</a>)</li>
-      <li>Fixed a problem where the SDK Manager threw a <code>NullPointerException</code> after
-          removing a virtual device that was created using the Android Wear
-          system image. (<a href="http://b.android.com/67588">Issue 67588</a>)</li>
-      <li>Fixed a problem where the layout preview for large screens in Eclipse showed the
-          resources from the <code>drawable-*</code> directories instead of those from the
-          <code>drawable-large-*</code> directories.</li>
-      <li>Fixed a problem with Nexus 5 Android virtual devices created from the command line
-          where the SD card file system was read-only.</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=""/>ADT 22.6.1</a> <em>(March 2014)</em>
-  </p>
-
-  <div class="toggle-content-toggleme">
-<dl>
-  <dt>Dependencies:</dt>
-
-  <dd>
-    <ul>
-      <li>Java 1.6 or higher is required.</li>
-      <li>Eclipse Indigo (Version 3.7.2) or higher is required.</li>
-      <li>This version of ADT is designed for use with
-        <a href="{@docRoot}tools/sdk/tools-notes.html">SDK Tools r22.6.1</a>.
-        If you haven't already installed SDK Tools r22.6.1 into your SDK, use the
-        Android SDK Manager to do so.</li>
-    </ul>
-  </dd>
-
-  <dt>General Notes:</dt>
-  <dd>
-    <ul>
-      <li>Fixed a problem where the Android Virtual Device Manager could not create new
-          virtual devices. (<a href="http://b.android.com/66661">Issue 66661</a>)</li>
-      <li><p>Fixed a problem with virtual devices created using ADT 22.3 or earlier.</p>
-          <p>If you created an Android Virtual Device using ADT 22.3 or earlier, the
-          AVD may be listed as <em>broken</em> in the AVD Manager in 22.6.1. To fix
-          this problem, select the virtual device on the AVD Manager and click
-          <strong>Repair</strong>.</p>
-      </li>
-      <li>Fixed a problem with the command line tools when creating virtual devices.
-          (<a href="http://b.android.com/66740">Issue 66740</a>)</li>
-      <li>Fixed a problem with the command line <code>lint</code> script.</li>
-    </ul>
-  </dd>
-
-  <dt>Known Issues:</dt>
-  <dd>
-    <p>When you create an Android virtual device using the Nexus 5 device definition,
-       you must enable the <em>Use Host GPU</em> option, otherwise the virtual device
-       will not start.</p>
-  </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=""/>ADT 22.6.0</a> <em>(March 2014)</em>
-  </p>
-
-  <div class="toggle-content-toggleme">
-<dl>
-  <dt>Dependencies:</dt>
-
-  <dd>
-    <ul>
-      <li>Java 1.6 or higher is required.</li>
-      <li>Eclipse Indigo (Version 3.7.2) or higher is required.</li>
-      <li>This version of ADT is designed for use with
-        <a href="{@docRoot}tools/sdk/tools-notes.html">SDK Tools r22.6</a>.
-        If you haven't already installed SDK Tools r22.6 into your SDK, use the
-        Android SDK Manager to do so.</li>
-    </ul>
-  </dd>
-
-  <dt>General Notes:</dt>
-  <dd>
-    <ul>
-      <li><p>Added support for Java 7 language features like multi-catch, try-with-resources,
-            and the diamond operator. These features require version 19 or higher
-            of the Build Tools. Try-with-resources requires <code>minSdkVersion</code>
-            19; the rest of the new language features require
-            <code>minSdkVersion</code> 8 or higher.</p>
-          <p>To use the new language features after installing ADT 22.6.0, ensure
-            that you run Eclipse on JDK 7 and change your application project settings
-            to use JDK 7.</p>
-      </li>
-      <li>Added new lint checks:
-        <ul>
-          <li>Security:
-            <ul>
-              <li>Look for code potentially affected by a <code>SecureRandom</code>
-                  vulnerability.</li>
-              <li>Check that calls to <code>checkPermission</code> use the return
-                  value.</li>
-            </ul>
-          </li>
-          <li>Check that production builds do not use mock location providers.</li>
-        </ul>
-      </li>
-      <li>Updated the New Project templates to include the
-          <a href="{@docRoot}tools/support-library/features.html#v7-appcompat">
-          v7 appcompat Support Library</a>.</li>
-      <li>Updated the Android tools libraries to include the rendering sandbox,
-          improvements for converting resource XML string declarations to layout
-          strings, and other updates.</li>
-      <li>Improved the Gradle export wizard. Note that the new importer in Android
-          Studio is the preferred way to migrate existing projects to Gradle.</li>
-      <li>Fixed a deadlock during startup.</li>
-      <li>Fixed an issue with RenderScript support. Using RenderScript support mode
-          now requires version 19.0.3 of the Build Tools.</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=""/>ADT 22.3.0</a> <em>(October 2013)</em>
-  </p>
-
-  <div class="toggle-content-toggleme">
-<dl>
-  <dt>Dependencies:</dt>
-
-  <dd>
-    <ul>
-      <li>Java 1.6 or higher is required.</li>
-      <li>Eclipse Helios (Version 3.6.2) or higher is required.</li>
-      <li>This version of ADT is designed for use with
-        <a href="{@docRoot}tools/sdk/tools-notes.html">SDK Tools r22.3</a>.
-        If you haven't already installed SDK Tools r22.3 into your SDK, use the
-        Android SDK Manager to do so.</li>
-    </ul>
-  </dd>
-
-  <dt>General Notes:</dt>
-  <dd>
-    <ul>
-      <li>Added support for Android 4.4 (API level 19).</li>
-      <li>Fixed problem with parsing view hierarchies containing classes in the java.*
-        name space.</li>
-      <li>Fixed problem importing Android projects that have the same name as an existing
-        project.</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=""/>ADT 22.2.1</a> <em>(September 2013)</em>
-  </p>
-
-  <div class="toggle-content-toggleme">
-<dl>
-  <dt>Dependencies:</dt>
-
-  <dd>
-    <ul>
-      <li>Java 1.6 or higher is required.</li>
-      <li>Eclipse Helios (Version 3.6.2) or higher is required.</li>
-      <li>This version of ADT is designed for use with
-        <a href="{@docRoot}tools/sdk/tools-notes.html">SDK Tools r22.2.1</a>.
-        If you haven't already installed SDK Tools r22.2.1 into your SDK, use the
-        Android SDK Manager to do so.</li>
-    </ul>
-  </dd>
-
-  <dt>General Notes:</dt>
-  <dd>
-    <ul>
-      <li>Fixed problem with templates that causes the new project wizard to hang.
-       (<a href="http://b.android.com/60149">Issue 60149</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=""/>ADT 22.2</a> <em>(September 2013)</em>
-  </p>
-
-  <div class="toggle-content-toggleme">
-<dl>
-  <dt>Dependencies:</dt>
-
-  <dd>
-    <ul>
-      <li>Java 1.6 or higher is required.</li>
-      <li>Eclipse Helios (Version 3.6.2) or higher is required.</li>
-      <li>This version of ADT is designed for use with
-        <a href="{@docRoot}tools/sdk/tools-notes.html">SDK Tools r22.2</a>.
-        If you haven't already installed SDK Tools r22.2 into your SDK, use the
-        Android SDK Manager to do so.</li>
-    </ul>
-  </dd>
-
-  <dt>General Notes:</dt>
-  <dd>
-    <ul>
-      <li>Updated build tools to allow use of RenderScript on older versions of Android
-       using new features in the
-       <a href="{@docRoot}tools/support-library/features.html#v8">Support Library</a>.</li>
-      <li>Reverted signing changes that sometimes trigger a signing verification problem on older
-        platforms.</li>
-      <li>Fixed problem with gradle export function for the Windows platform.</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=""/>ADT 22.0.5</a> <em>(July 2013)</em>
-  </p>
-
-  <div class="toggle-content-toggleme">
-<dl>
-  <dt>Dependencies:</dt>
-
-  <dd>
-    <ul>
-      <li>Java 1.6 or higher is required.</li>
-      <li>Eclipse Helios (Version 3.6.2) or higher is required.</li>
-      <li>This version of ADT is designed for use with
-        <a href="{@docRoot}tools/sdk/tools-notes.html">SDK Tools r22.0.5</a>.
-        If you haven't already installed SDK Tools r22.0.5 into your SDK, use the
-        Android SDK Manager to do so.</li>
-    </ul>
-  </dd>
-
-  <dt>General Notes:</dt>
-  <dd>
-    <ul>
-      <li>Fixed RenderScript compilation issue for Windows platforms.</li>
-      <li>Updated <a href="{@docRoot}tools/help/systrace.html">Systrace</a> report generation
-        in the Monitor and DDMS perspectives.</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=""/>ADT 22.0.4</a> <em>(July 2013)</em>
-  </p>
-
-  <div class="toggle-content-toggleme">
-<dl>
-  <dt>Dependencies:</dt>
-
-  <dd>
-    <ul>
-      <li>Java 1.6 or higher is required.</li>
-      <li>Eclipse Helios (Version 3.6.2) or higher is required.</li>
-      <li>This version of ADT is designed for use with
-        <a href="{@docRoot}tools/sdk/tools-notes.html">SDK Tools r22.0.4</a>.
-        If you haven't already installed SDK Tools r22.0.4 into your SDK, use the
-        Android SDK Manager to do so.</li>
-    </ul>
-  </dd>
-
-  <dt>General Notes:</dt>
-  <dd>
-    <ul>
-      <li>Fixed problem with compiling RenderScript code.</li>
-      <li>Improved Gradle export with better workflow and error reporting.</li>
-      <li>Improved Gradle multi-module export feature.</li>
-      <li>Updated build logic to force exporting of the classpath containers unless you are using
-        the Maven plugin.</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=""/>ADT 22.0.1</a> <em>(May 2013)</em>
-  </p>
-
-  <div class="toggle-content-toggleme">
-<dl>
-  <dt>Dependencies:</dt>
-
-  <dd>
-    <ul>
-      <li>Java 1.6 or higher is required.</li>
-      <li>Eclipse Helios (Version 3.6.2) or higher is required.</li>
-      <li>This version of ADT is designed for use with
-        <a href="{@docRoot}tools/sdk/tools-notes.html">SDK Tools r22.0.1</a>.
-        If you haven't already installed SDK Tools r22.0.1 into your SDK, use the
-        Android SDK Manager to do so.</li>
-    </ul>
-  </dd>
-
-  <dt>General Notes:</dt>
-  <dd>
-    <ul>
-      <li>Fixed issue with Lint ServiceCast check and fully qualified class names.
-        (<a href="http://code.google.com/p/android/issues/detail?id=55403">Issue 55403</a>)</li>
-      <li>Fixed crash issue with Lint ArraySizeDetector check.
-        (<a href="http://code.google.com/p/android/issues/detail?id=54887">Issue 54887</a>)</li>
-      <li>Fixed problem with the Gradle export feature.</li>
-      <li>Fixed version check issue for the ADT Plugin.</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=""/>ADT 22.0.0</a> <em>(May 2013)</em>
-  </p>
-
-  <div class="toggle-content-toggleme">
-<dl>
-  <dt>Dependencies:</dt>
-
-  <dd>
-    <ul>
-      <li>Java 1.6 or higher is required.</li>
-      <li>Eclipse Helios (Version 3.6.2) or higher is required.</li>
-      <li>This version of ADT is designed for use with
-        <a href="{@docRoot}tools/sdk/tools-notes.html">SDK Tools r22</a>.
-        If you haven't already installed SDK Tools r22 into your SDK, use the
-        Android SDK Manager to do so.</li>
-    </ul>
-  </dd>
-
-  <dt>General Notes:</dt>
-  <dd>
-    <ul>
-      <li>Updated tools to allow libraries to share the same package name as the applications
-        that use them.</li>
-      <li>Added new Lint checks, including checks for layout consistency,
-        {@link android.widget.RelativeLayout} siblings, {@link android.os.Parcel} creator,
-        JavaScript interfaces, {@link android.app.Service} casting, quantity strings, manifest
-        typos, orientation tags in layouts, overlapping names for 9-patches and images, and class
-        existence checks.</li>
-      <li>Updated build tools to sign applications using the BouncyCastle library instead of
-        relying on Sun JVM specific APIs.</li>
-      <li>Added an experimental Gradle build export feature for moving projects into the
-        <a href="{@docRoot}sdk/installing/studio.html">Android Studio</a> environment or for
-        setting up command-line builds with Gradle.
-        (<a href="http://tools.android.com/tech-docs/new-build-system">more info</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=""/>ADT 21.1.0</a> <em>(February 2013)</em>
-  </p>
-
-  <div class="toggle-content-toggleme">
-<dl>
-  <dt>Dependencies:</dt>
-
-  <dd>
-    <ul>
-      <li>Java 1.6 or higher is required.</li>
-      <li>Eclipse Helios (Version 3.6.2) or higher is required.</li>
-      <li>This version of ADT is designed for use with
-        <a href="{@docRoot}tools/sdk/tools-notes.html">SDK Tools r21.1</a>.
-        If you haven't already installed SDK Tools r21.1 into your SDK, use the
-        Android SDK Manager to do so.</li>
-    </ul>
-  </dd>
-
-  <dt>General Notes:</dt>
-  <dd>
-    <ul>
-      <li>Added new <a href="{@docRoot}tools/projects/templates.html">code templates</a> for
-        notifications, blank fragments and list fragments.</li>
-      <li>Added support for resource rename refactoring. Renaming a resource XML file, drawable
-        icon, an {@code R.} field name or ID in the layout editor invokes a refactoring routine
-        to update all resource references.</li>
-      <li>Added more than 15 new Lint checks, including checks for overriding older APIs, XML
-        resource problems, graphic asset issues and manifest tags.
-      <li>Updated XML Editor to respond to refactoring shortcut keys such as <strong>Refactor
-        &gt; Rename</strong>.</li>
-      <li>Updated XML Editor to improve double click handling.</li>
-      <li>Added code completion improvements for custom views, theme references and class
-        references. For example, code completion in a {@code <fragment android:name="" >} tag
-        now suggests completion with a list of fragment classes. Similarly, code completion in the
-        manifest now offers implementations suitable for the given tag.</li>
-      <li>Updated the <strong>Project Import</strong> dialog so that it shows a table for all
-        imported projects where you can edit the name of the imported project.</li>
-      <li>Added support for layout aliases in the Layout Editor.</li>
-    </ul>
-  </dd>
-
-  <dt>Bug fixes:</dt>
-  <dd>
-    <ul>
-      <li>Fixed issued with refactoring support for renaming and moving classes and packages.
-      </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=""/>ADT 21.0.1</a> <em>(December 2012)</em>
-  </p>
-
-  <div class="toggle-content-toggleme">
-<dl>
-  <dt>Dependencies:</dt>
-
-  <dd>
-    <ul>
-      <li>Java 1.6 or higher is required.</li>
-      <li>Eclipse Helios (Version 3.6.2) or higher is required.</li>
-      <li>This version of ADT is designed for use with
-        <a href="{@docRoot}tools/sdk/tools-notes.html">SDK Tools r21.0.1</a>.
-        If you haven't already installed SDK Tools r21.0.1 into your SDK, use the
-        Android SDK Manager to do so.</li>
-    </ul>
-  </dd>
-
-  <dt>General Notes:</dt>
-  <dd>
-    <ul>
-      <li>Build
-        <ul>
-          <li>Updated build to detect and handle package name conflicts between an application and
-            the libraries it depends on. Libraries cannot share package names unless all of them
-            share the same package name.
-            (<a href="http://code.google.com/p/android/issues/detail?id=40152">Issue 40152</a>,
-             <a href="http://code.google.com/p/android/issues/detail?id=40273">Issue 40273</a>)
-          </li>
-          <li>Added a flag to disable dex merging to deal with cases where merging could generate
-            a broken dex file. If this happens to your project, add the following setting to your
-            {@code project.properties} file: {@code dex.disable.merger=true} This setting
-            causes the build system to revert to the older, slower dex processing that does not
-            pre-dex libraries.</li>
-        </ul>
-      </li>
-    </ul>
-  </dd>
-
-  <dt>Bug fixes:</dt>
-  <dd>
-    <ul>
-      <li>Lint
-        <ul>
-          <li>Corrected check for {@code 0px} values in style XML elements.
-            (<a href="http://code.google.com/p/android/issues/detail?id=39601">Issue 39601</a>)
-            </li>
-          <li>Fixed incorrect flagging of formatting strings.
-            (<a href="http://code.google.com/p/android/issues/detail?id=39758">Issue 39758</a>)
-            </li>
-          <li>Fixed problem where {@code tools:ignore} directive in the manifest file was ignored
-            by the Lint tool.
-            (<a href="http://code.google.com/p/android/issues/detail?id=40136">Issue 40136</a>)
-            </li>
-          <li>Fixed problem with flagging a wakelock release inside a conditional.
-            (<a href="http://code.google.com/p/android/issues/detail?id=40424">Issue 40424</a>)
-            </li>
-          <li>Fixed incorrect reporting of missing {@code layout_width} and {@code layout_height}
-            XML fields.
-            (<a href="http://code.google.com/p/android/issues/detail?id=38958">Issue 38958</a>)
-            </li>
-          <li>Fixed handling of custom namespace attributes.</li>
-          <li>Added fixes for filtering out library project warnings.</li>
-          <li>Removed warnings about missing classes before a build.</li>
-        </ul>
-      </li>
-
-      <li>Android Virtual Device Manager
-        <ul>
-          <li>Fixed handling of {@code devices.xml} file in other locales.
-            (<a href="http://code.google.com/p/android/issues/detail?id=39704">Issue 39704</a>)
-            </li>
-          <li>Fixed problem where the AVD Manager would not allow you to create a new AVD using
-            the <strong>4.0" WVGA</strong> or <strong> 4.65" 720p</strong> device definitions.
-            (<a href="http://code.google.com/p/android/issues/detail?id=39939">Issue 39939</a>)
-            </li>
-          <li>Fixed problem where deleted device definitions were not removed.</li>
-          <li>Fixed incorrect screen resolution setting for the Nexus One device definition.</li>
-          <li>Fixed problem where writing of an AVD settings file does not properly escape
-            {@code \\} path characters.</li>
-        </ul>
-      </li>
-
-      <li>Layout Editor
-        <ul>
-          <li>Fixed problem where layout cannot render strings starting with {@code \@}.
-            (<a href="http://code.google.com/p/android/issues/detail?id=40222">Issue 40222</a>)
-            </li>
-          <li>Fixed preview error when using the {@code android:numColumns} attribute in a layout.
-            (<a href="http://code.google.com/p/android/issues/detail?id=21296">Issue 21296</a>)
-            </li>
-          <li>Fixed compatibility issue with IntelliJ layout preview caused by layout editor
-            deleting the {@code .android/devices.xml} file.</li>
-          <li>Added fixes to editor for {@link android.widget.GridLayout}.</li>
-        </ul>
-      </li>
-
-      <li>Added support for {@code ldrtl} and {@code ldltr} resource qualifiers.</li>
-      <li>Fixed problem where Android XML resources mistakenly get compiled into {@code *.out.xml}
-        output files, causing project errors.
-        (<a href="http://code.google.com/p/android/issues/detail?id=3767">Issue 3767</a>)</li>
-      <li>Fixed error which caused resource refresh operations to fail.
-        (<a href="http://code.google.com/p/android/issues/detail?id=39213">Issue 39213</a>)</li>
-      <li>Updated the Custom View code template handle to library projects properly.</li>
-      <li>Fixed support for library string resources ({@code strings.xml}) when exporting an
-        application that references a library with string resources.
-        (<a href="http://code.google.com/p/android/issues/detail?id=39751">Issue 39751</a>)</li>
-      <li>Fixed problem where bad AVD setting files caused Device Manager and graphical XML editors
-        to crash.
-        (<a href="http://code.google.com/p/android/issues/detail?id=40400">Issue 40400</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=""/>ADT 21.0.0</a> <em>(November 2012)</em>
-  </p>
-
-  <div class="toggle-content-toggleme">
-<dl>
-  <dt>Dependencies:</dt>
-
-  <dd>
-    <ul>
-      <li>Java 1.6 or higher is required.</li>
-      <li>Eclipse Helios (Version 3.6.2) or higher is required.</li>
-      <li>This version of ADT is designed for use with
-        <a href="{@docRoot}tools/sdk/tools-notes.html">SDK Tools r21</a>.
-        If you haven't already installed SDK Tools r21.0.0 into your SDK, use the
-        Android SDK Manager to do so.</li>
-    </ul>
-  </dd>
-
-  <dt>General improvements:</dt>
-  <dd>
-    <ul>
-      <li>Layout Editor
-        <ul>
-          <li>Added multi-configuration editing feature that was previewed at Google I/O
-            developer tools talk in June. For an overview, see the
-            <a href="https://www.youtube.com/watch?v=Erd2k6EKxCQ">session recording</a>
-            (starting at: 20:30).</li>
-          <li>Modified the layout logic so that setting a {@link android.app.Fragment} layout or
-            a {@link android.widget.ListView} preview layout is now applied not
-            only to the current layout but to all other configurations of the same layout.</li>
-          <li>Updated the editor to include resources from library projects in the resource chooser,
-            XML code completion, Go To Declaration and other editing contexts.</li>
-          <li>Updated the editor so that it  no longer forces all variations of a single
-            layout into a single editor. You can, for example, open both the landscape and portrait
-            versions of a layout as separate editors and quickly switch between them, or even
-            re-dock your editors to edit them simultaneously. If you prefer the previous behavior,
-            set the new option in <strong>Preferences &gt; Android &gt; Editors</strong> to use the
-            old behavior.</li>
-          <li>Improved the handling of {@link android.widget.RelativeLayout} in the layout editor,
-            so that dragging widgets around and deleting them should now result in the layout
-            working more intuitively. In particular, deleting a widget causes the constraints
-            flowing through the deleted widgets to be intelligently adjusted, and when moving
-            widgets the constraints are preserved whenever possible.</li>
-          <li>Added the ability to specify a default action in Layout Editor views, which you can
-            invoke with the <em>F2</em> key. For example, after dropping a button or text view,
-            you can press <em>F2</em> to edit its text.</li>
-          <li>Added renaming of an ID (changing the {@code android:id} attribute) by invoking the
-            <strong>Rename</strong> shortcut.</li>
-          <li>Adding a new locale is now easier with the new <strong>Add Locale...</strong> action
-            in the locale menu. In addition to creating the new values folder, it lets you edit an
-            initial set of translations for the new locale.</li>
-          <li>Updated the editor so that when a custom view (or incorrectly configured view)
-            throws an exception during initialization or painting, part of the relevant stack trace
-            is shown inline in the layout editor, and you can click on the stack frames to jump to
-            the relevant location</li>
-          <li>Improved the editor error display to show the relevant part of a stack trace
-            when a custom view throws exceptions during rendering or construction, and provides
-            hyperlinks to the stack frames.</li>
-          <li>Improved the stack trace display for exceptions for custom views that are generated
-            during rendering.</li>
-          <li>Updated the configuration chooser so that it shows full language and region names (not
-            just 2-letter codes) in menus, in the configuration dialog and other editing contexts.
-            </li>
-          <li>Improved the device menu in the configuration chooser.</li>
-        </ul>
-      </li>
-      <li>Lint
-        <ul>
-          <li>Added over 25 new lint rules for resources, locale settings, layout
-            files, incorrect use of {@link android.util.SparseArray} and
-            {@link android.os.PowerManager.WakeLock} and manifest issues.</li>
-          <li>Improved the XML export function to support the
-            <a href="https://wiki.jenkins-ci.org/display/JENKINS/Android+Lint+Plugin">Jenkins Lint
-            plugin</a>.
-          </li>
-        </ul>
-      </li>
-      <li>Editors
-        <ul>
-          <li>Modified the plugin to remember which editor mode (text or graphical) you were last
-            using for each type of editor (layout, manifest or values) and uses that mode for newly
-            opened files. This means that if you prefer to work with just XML, the editors start
-            showing you XML text editors after you have switched to them for each type of editor.</li>
-          <li>Updated XML code completion so that it completes (and shows documentation for) theme
-            references, such as {@code ?android:attr/dividerHeight}.</li>
-        </ul>
-      </li>
-      <li>Android Virtual Devices (AVD)
-        <ul>
-          <li>Added new <strong>Device Definitions</strong> tab in the AVD Manager for configuring
-            standard size and Nexus virtual devices.</li>
-          <li>Improved emulators so that they launch with a skin that is dynamically generated and
-            reflects the actual hardware configured in the AVD Manager.</li>
-        </ul>
-      </li>
-      <li>Improved the new template mechanism, cleaned up the existing templates and added
-        several new templates</li>
-      <li>Added ability to export images and frames in the Tracer for OpenGL ES tool.</li>
-      <li>Integrated the Systrace tool into the DDMS perspective.</li>
-      <li>Improved the JUnit test runner to allow a test to be run on all connected devices
-        simultaneously.</li>
-    </ul>
-  </dd>
-
-  <dt>Bug fixes:</dt>
-  <dd>
-    <ul>
-      <li>Fixed the editors so that attributes and resources specified by XML files in the
-        {@code /values} directory are validated when files are saved.</li>
-      <li>Added a workaround for a bug in Eclipse on Mac OS X 10.8 where the Property Sheet was not
-        working properly.</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=""/>ADT 20.0.3</a> <em>(August 2012)</em>
-  </p>
-
-  <div class="toggle-content-toggleme">
-<dl>
-  <dt>Dependencies:</dt>
-
-  <dd>
-    <ul>
-      <li>Java 1.6 or higher is required.</li>
-      <li>Eclipse Helios (Version 3.6.2) or higher is required.</li>
-      <li>This version of ADT is designed for use with
-        <a href="{@docRoot}tools/sdk/tools-notes.html">SDK Tools r20.0.3</a>.
-        If you haven't already installed SDK Tools r20.0.3 into your SDK, use the
-        Android SDK Manager to do so.</li>
-    </ul>
-  </dd>
-
-  <dt>Bug fixes:</dt>
-  <dd>
-    <ul>
-      <li>Fixed issue with keyboard shortcuts for editors in Eclipse Juno (Version 4.x).</li>
-      <li>Fixed problem with cached download lists in SDK Manager.</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=""/>ADT 20.0.2</a> <em>(July 2012)</em>
-  </p>
-
-  <div class="toggle-content-toggleme">
-<dl>
-  <dt>Dependencies:</dt>
-
-  <dd>
-    <ul>
-      <li>Java 1.6 or higher is required.</li>
-      <li>Eclipse Helios (Version 3.6.2) or higher is required.</li>
-      <li>This version of ADT is designed for use with
-        <a href="{@docRoot}tools/sdk/tools-notes.html">SDK Tools r20.0.1</a>.
-        If you haven't already installed SDK Tools r20.0.1 into your SDK, use the
-        Android SDK Manager to do so.</li>
-    </ul>
-  </dd>
-
-  <dt>Bug fixes:</dt>
-  <dd>
-    <ul>
-      <li>Fixed keybindings in various XML editors for Eclipse 4.x.</li>
-      <li>Fixed a bug that occurs when you try to create layout configurations that already
-        exist.</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=""/>ADT 20.0.1</a> <em>(July 2012)</em>
-  </p>
-
-  <div class="toggle-content-toggleme">
-<dl>
-  <dt>Dependencies:</dt>
-
-  <dd>
-    <ul>
-      <li>Java 1.6 or higher is required.</li>
-      <li>Eclipse Helios (Version 3.6.2) or higher is required.</li>
-      <li>This version of ADT is designed for use with
-        <a href="{@docRoot}tools/sdk/tools-notes.html">SDK Tools r20.0.1</a>.
-        If you haven't already installed SDK Tools r20.0.1 into your SDK, use the
-        Android SDK Manager to do so.</li>
-    </ul>
-  </dd>
-
-  <dt>Bug fixes:</dt>
-  <dd>
-    <ul>
-      <li>Fixed issue in the New Project Wizard related to installation of the Support Library.</li>
-      <li>Fixed several issues with New Project Wizard related to templates.</li>
-      <li>Fixed issue with the text-based launcher icon in New Project Wizard.</li>
-      <li>Fixed issue with sticky error markers in Java files.</li>
-      <li>Fixed problem with manifest merger when exporting release {@code .apk} files.</li>
-      <li>Fixed NDK support to automatically find include path on Windows.</li>
-      <li>Fixed editor startup exception for new configurations where editor would come up blank.</li>
-      <li>Added support for {@code xxhdpi} density, which was included in API Level 16.</li>
-      <li>Fixed a bug in the {@code lint} check for unprotected broadcast receivers to ignore
-unprotected receivers for default Android actions.</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=""/>ADT 20.0.0</a> <em>(June 2012)</em>
-  </p>
-
-  <div class="toggle-content-toggleme">
-<dl>
-  <dt>Dependencies:</dt>
-
-  <dd>
-    <ul>
-      <li>Java 1.6 or higher is required.</li>
-      <li>Eclipse Helios (Version 3.6.2) or higher is required.</li>
-      <li>This version of ADT is designed for use with
-        <a href="{@docRoot}sdk/tools-notes.html">SDK Tools r20</a>.
-        If you haven't already installed SDK Tools r20 into your SDK, use the Android SDK
-        Manager to do so.</li>
-    </ul>
-  </dd>
-
-  <dt>General improvements:</dt>
-  <dd>
-    <ul>
-      <li>Application Templates
-        <ul>
-          <li>Added Android application templates to allow developers to create specific types of
-applications faster, using Android-recommended best practices.</li>
-        </ul>
-      </li>
-      <li>Performance
-        <ul>
-          <li>Improved overall ADT performance and fixed memory issues. Loading SDK data
-should be up to 30% faster.</li>
-        </ul>
-      </li>
-      <li>Tracer for GLES
-        <ul>
-          <li>Added new perspective view and tools for tracing OpenGL calls for an application and
-track the visual results of each call. (<a href="{@docRoot}tools/help/gltracer.html">more info</a>)</li>
-        </ul>
-      </li>
-      <li>Lint
-        <ul>
-          <li>Added new Lint rules for manifest registrations, duplicate activity
-registrations, security checking, correct use of Toast, missing SharedPreferences commit()
-calls, Fragment class instantiation, and handler leaks.</li>
-          <li>Created tighter integration of lint with the layout editor. (<a
-href="http://tools.android.com/recent/lintfeedback">more info</a>)</li>
-          <li>Added execution of Lint tool on save option for Java files. (<a
-href="http://tools.android.com/recent/lintonsave">more info</a>)</li>
-        </ul>
-      </li>
-      <li>Layout Editor (<a href="http://tools.android.com/recent/newlayouteditorpropertysheet">more
-info</a>)
-        <ul>
-          <li>Added highlighting (in bold) for important attributes, inline preview of colors and
-images, including the corresponding resource name.</li>
-          <li>Added display of default values, when available.</li>
-          <li>Added completion of resource values and enum and flag constants.</li>
-          <li>Added support for displaying advanced properties, and nested properties for better
-categorization, for example, layout params are listed first as a single nested property.</li>
-          <li>Display Tooltips over the attribute names, not values, so they never obscure the value
-column.</li>
-          <li>Provided checkbox support for boolean values.</li>
-          <li>Added support for switching between alphabetical and natural sort orders.</li>
-          <li>Improved layout editor tool's window management for more usable editing views.</li>
-          <li>Improved the layout editor's configuration chooser header user interface.</li>
-        </ul>
-      </li>
-      <li>XML Editing
-        <ul>
-          <li>Added go to declaration support for theme references (?android:attr, ?attr:).</li>
-          <li>Improved code completion in style definitions.</li>
-          <li>Improved code completion for the {@code minSdkVersion} and {@code targetSdkVersion}
-attributes in manifest files so that version descriptions are displayed for each of the API
-levels</li>
-          <li>Provided support for code completion of custom attributes for custom views,
-including current edits to the style files.</li>
-          <li>Improved synchronization of text and graphic editors with the XML outline view,
-including outline changes and display of current selection.</li>
-        </ul>
-      </li>
-      <li>Build System
-        <ul>
-          <li>Added automatic merging of library project manifest files into the including
-project's manifest. Enable this feature with the {@code manifestmerger.enabled} property.</li>
-          <li>Added automatic ProGuard support for the {@code aapt -G} flag. This change causes
-the build system to generate a temporary ProGuard keep-rules file containing classes that
-are referenced from XML files (such as custom views) and pass this to ProGuard at shrink-time. This
-can make the resulting APK much smaller when using just a small portion of a large library project
-(such as the Android Support library), since the catch-all rules to keep all custom views from the
-default ProGuard configuration file have also been removed.</li>
-        </ul>
-      </li>
-      <li>Added support building and debugging NDK-based Android projects.</li>
-      </li>
-      <li>Added support to the Asset Studio Wizard for padding and turning off background
-shapes.</li>
-      <li>Improved LogCat to allow developers to set colors for different priorities.</li>
-      <li>Improved app Run functionality to allow running on multiple devices with a single launch.
-The target tab in the launch configuration dialog includes an option to allow launching on all
-connected devices, with the option to further narrow the list to just physical devices or just
-emulators. (This feature is available only for Run configurations, and not for Debug or JUnit
-tests.)</li>
-    <ul>
-  </dd>
-
-  <dt>Bug fixes:</dt>
-  <dd>
-    <ul>
-      <li>Fixed a number of issues where Lint incorrectly reported code errors or failed to
-flag code issues.</li>
-      <li>Fixed several bugs in the layout editor.</li>
-      <li>Fixed compatibility issues with Eclipse 4.x (Juno), including cut/copy/paste
-functions.</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=""/>ADT 18.0.0</a> <em>(April 2012)</em>
-  </p>
-
-  <div class="toggle-content-toggleme">
-<dl>
-  <dt>Dependencies:</dt>
-
-  <dd>
-    <ul>
-      <li>Java 1.6 or higher is required.</li>
-      <li>Eclipse Helios (Version 3.6.2) or higher is required.</li>
-      <li>This version of ADT is designed for use with
-        <a href="{@docRoot}tools/sdk/tools-notes.html">SDK Tools r18</a>.
-        If you haven't already installed SDK Tools r18 into your SDK, use the Android SDK
-        Manager to do so.</li>
-    </ul>
-  </dd>
-
-  <dt>Bug fixes:</dt>
-  <dd>
-    <ul>
-      <li>Fixed problem where exporting release package does not recompile libraries in release
-        mode.
-        (<a href="http://code.google.com/p/android/issues/detail?id=27940">Issue 27940</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=""/>ADT 17.0.0</a> <em>(March 2012)</em>
-  </p>
-
-  <div class="toggle-content-toggleme">
-<dl>
-  <dt>Dependencies:</dt>
-
-  <dd>
-    <ul>
-      <li>Java 1.6 or higher is required.</li>
-      <li>Eclipse Helios (Version 3.6.2) or higher is required.</li>
-      <li>This version of ADT is designed for use with
-        <a href="{@docRoot}tools/sdk/tools-notes.html">SDK Tools r17</a>.
-        If you haven't already installed SDK Tools r17 into your SDK, use the Android SDK
-        Manager to do so.</li>
-    </ul>
-  </dd>
-
-  <dt>General improvements:</dt>
-  <dd>
-    <ul>
-      <li>New build features
-        <ul>
-          <li>Added feature to automatically setup JAR dependencies. Any {@code .jar} files in the
-          {@code /libs} folder are added to the build configuration (similar to how the Ant build
-          system works). Also, {@code .jar} files needed by library projects are also automatically
-          added to projects that depend on those library projects.
-          (<a href="http://tools.android.com/recent/dealingwithdependenciesinandroidprojects">more
-          info</a>)</li>
-          <li>Added a feature that allows you to run some code only in debug mode. Builds now
-generate a class called {@code BuildConfig} containing a {@code DEBUG} constant that is
-automatically set according to your build type. You can check the ({@code BuildConfig.DEBUG})
-constant in your code to run debug-only functions.</li>
-          <li>Added support for custom views with custom attributes in libraries. Layouts using
-custom attributes must use the namespace URI {@code http://schemas.android.com/apk/res-auto} instead
-of the URI that includes the app package name. This URI is replaced with the app specific one at
-build time.</li>
-        </ul>
-      </li>
-      <li>Improved Lint features. See the <a href="{@docRoot}tools/sdk/tools-notes.html">SDK Tools r17</a>
-release notes.</li>
-      <li>Improved the Lint user interface
-        <ul>
-          <li>Added <strong>Run Lint</strong> toolbar action with a dropdown menu for selecting
-specific (or all) projects, clearing results and other actions.</li>
-          <li>Updated the results window to be organized as a tree rather than a flat list. Each
-issue type has a single top level item, which makes it easier to quickly scan through the reported
-issues and narrow down to the issues you are most interested in.</li>
-          <li>Added many new toolbar actions to the results window, including expand/collapse,
-ignore in file, ignore in project, ignore everywhere, show options, and configure columns.</li>
-          <li>Added new column options for the <strong>Lint Warnings</strong> tab, such as
-category, priority, project, file and line. The column selection (as well as the column sizes) are
-persisted. You can also click on columns to sort by those values.</li>
-          <li>Added Enable All and Disable All buttons to the Lint Options dialog, and a search
-filter textbox to filter by issue id, summary and severity.</li>
-        </ul>
-      </li>
-      <li>Added Quick Outline for XML editors (Ctrl-O, Command-O). This feature shows the structure
-of the current file including icons and ids, lets you filter and quickly jump to specific ids.</li>
-      <li>Updated the resource chooser to shows the resolved value for resources. For example,
-when selecting {@code @string/hello} the chooser displays a resolved value such as "Hello World").
-The resource chooser also now allows you to edit the chosen value directly.</li>
-      <li>Updated Layout Editor so that it does not assign default ids to layouts, includes and
-merge tags. This behavior tended to pollute the namespace with a lot of unused resources since
-layouts are not usually manipulated via code, or referenced from XML. (The RelativeLayout editor
-automatically assigns ids to views without ids when pointing to them.)</li>
-      <li>Added ability to export screenshots from the Layout Editor</li>
-    </ul>
-  </dd>
-
-  <dt>Bug fixes:</dt>
-  <dd>
-    <ul>
-      <li>Fixed problem using Layout Editor with {@link android.widget.SlidingDrawer} which could
-        not be dragged into the layout on some platforms.</li>
-      <li>Fixed preview rendering for {@link android.widget.SlidingDrawer} and
-        {@link android.widget.TabHost}.
-        (<a href="http://code.google.com/p/android/issues/detail?id=23022">Issue 23022</a>).</li>
-      <li>Fixed issues that could prevent layout rendering due to unresolvable resources.
-        (<a href="http://code.google.com/p/android/issues/detail?id=21046">Issue 21046</a>,
-        <a href="http://code.google.com/p/android/issues/detail?id=21051">Issue 21051</a>)</li>
-      <li>Fixed a bug in resource chooser which made some types of framework resources impossible to
-select. (<a href="http://code.google.com/p/android/issues/detail?id=20589">Issue 20589</a>)</li>
-      <li>Fixed a bug in the formatter where a certain whitespace pattern could result in a
-        non-space character getting deleted.
-        (<a href="http://code.google.com/p/android/issues/detail?id=23940">Issue 23940</a>)</li>
-      <li>Fixed a locale bug affecting Turkish locales in particular.
-        (<a href="http://code.google.com/p/android/issues/detail?id=23747">Issue 23747</a>)</li>
-      <li>Fixed an issue where dex complains about duplicate classes in cases where a Library
-        Project depends on the same jar files or Java-only projects.</li>
-      <li>Fixed an issue where test projects had to independently reference the library projects
-        used by an app project. Now referencing only the app project is enough.</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=""/>ADT 16.0.1</a> <em>(December 2011)</em>
-  </p>
-
-  <div class="toggle-content-toggleme">
-<dl>
-  <dt>Dependencies:</dt>
-
-  <dd>
-    <ul>
-      <li>Eclipse Helios (Version 3.6) or higher is required.</li>
-      <li>This version of ADT is designed for use with
-        <a href="{@docRoot}tools/sdk/tools-notes.html">SDK Tools r16</a>.
-        If you haven't already installed SDK Tools r16 into your SDK, use the Android SDK
-        Manager to do so.</li>
-    </ul>
-  </dd>
-
-  <dt>Bug fixes:</dt>
-  <dd>
-    <ul>
-      <li>Fixed build issue where the 9-patch could be packaged as normal bitmap in some cases.</li>
-      <li>Fixed minor issues in the <a href="http://tools.android.com/recent/lint">Lint</a>
-        tool.</li>
-      <li>Fixed minor issues in the SDK Manager.</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=""/>ADT 16.0.0</a> <em>(December 2011)</em>
-  </p>
-
-  <div class="toggle-content-toggleme">
-<dl>
-  <dt>Dependencies:</dt>
-
-  <dd>
-    <ul>
-      <li>Eclipse Helios (Version 3.6) or higher is required for ADT 16.0.0.</li>
-      <li>This version of ADT is designed for use with
-        <a href="{@docRoot}tools/sdk/tools-notes.html">SDK Tools r16</a>.
-        If you haven't already installed SDK Tools r16 into your SDK, use
-        the Android SDK Manager to do so.</li>
-    </ul>
-  </dd>
-
-  <dt>General improvements:</dt>
-  <dd>
-    <ul>
-      <li>Added Lint tool to detect common errors in Android projects. (<a
-href="http://tools.android.com/recent/lint">more info</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=""/>ADT 15.0.1</a> <em>(November 2011)</em>
-  </p>
-
-  <div class="toggle-content-toggleme">
-<dl>
-  <dt>Dependencies:</dt>
-
-  <dd>This version of ADT is designed for use with
-    <a href="{@docRoot}tools/sdk/tools-notes.html">SDK Tools r15</a>.
-    If you haven't already installed SDK Tools r15 into your SDK, use the Android SDK Manager to
-    do so.</dd>
-
-  <dt>Bug fixes:</dt>
-  <dd>
-    <ul>
-      <li>Fixed how source files are attached to library project <code>.jar</code> files.</li>
-      <li>Fixed how the <code>bin/</code> folder for library projects are refreshed. This ensures that parent projects pick up changes in library projects.</li>
-      <li>Fixed how a parent project's library container is updated when a library project is recompiled. This ensures that parent projects are
-      recompiled when code in a library project changes.</li>
-      <li>Fixed how <code>res/</code> folders are checked in library projects. This ensures that all <code>res</code> folders are properly included
-      even if Eclipse is not aware of them due to refresh issues.</li>
-      <li>Fixed issue that prevented <code>aapt</code> from running when editing certain XML files.</li>
-      <li>Fixed minor XML formatting issues.</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=""/>ADT 15.0.0</a> <em>(October 2011)</em>
-  </p>
-
-  <div class="toggle-content-toggleme">
-<dl>
-
-<dt>Dependencies:</dt>
-
-<dd>This version of ADT is designed for use with
-  <a href="{@docRoot}tools/sdk/tools-notes.html">SDK Tools r15</a>.
-  If you haven't already installed SDK Tools r15 into your SDK, use the Android SDK Manager to
-  do so.</dd>
-
-<dt>Bug fixes:</dt>
-<dd>
-<ul>
-  <li>Fixed build issue when using RenderScript in projects that target API levels 11-13
-    (<a href="http://code.google.com/p/android/issues/detail?id=21006">Issue 21006</a>).</li>
-  <li>Fixed issue when creating projects from existing source code.</li>
-  <li>Fixed issues in the SDK Manager
-    (<a href="http://code.google.com/p/android/issues/detail?id=20939">Issue 20939</a>,
-    <a href="http://code.google.com/p/android/issues/detail?id=20607">Issue 20607</a>).</li>
-  <li>Fixed a scrolling issue in the new Logcat panel of DDMS.</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=""/>ADT 14.0.0</a> <em>(October 2011)</em>
-  </p>
-
-  <div class="toggle-content-toggleme">
-<dl>
-
-<dt>Dependencies:</dt>
-
-<dd>This version of ADT is designed for use with
-  <a href="{@docRoot}tools/sdk/tools-notes.html">SDK Tools r14</a>.
-  If you haven't already installed SDK Tools r14 into your SDK, use the Android SDK Manager to
-  do so.</dd>
-
-<dt>Build system:</dt>
-<dd>
-  <ul>
-    <li>Changed <code>default.properties</code> to <code>project.properties</code> and
-    <code>build.properties</code> to <code>ant.properties</code>. ADT automatically
-    renames these files, if necessary, when you open a project in Eclipse.</li>
-    <li>Changed how library projects are built in Eclipse.</a></li>
-    <li>Changed output of <code>javac</code> from <code>bin/</code> to <code>bin/classes</code>
-    in Eclipse.</li>
-    <li>Improved incremental builds so that resource compilation runs less frequently. Builds no
-    longer run when you edit strings or layouts (unless you add a new <code>id</code>) and no longer
-    run once for each library project.</li>
-    <li>Introduced a "PNG crunch cache" that only runs on modified PNG files, instead of
-    crunching all existing PNG files, all the time.</li>
-    <li>Modified resource compilation so it no longer happens for normal save operations. It only
-    happens when running or debugging (the build option that lets you disable the packaging
-    step, which was introduced in ADT 12, is now on by default.)</li>
-  </ul>
-<p>For a complete overview of the build system changes and what you need to do to support them,
-see the <a href="http://tools.android.com/recent/buildchangesinrevision14">Android Tools Project
-site</a>.</p>
-</dd>
-
-<dt>General improvements:</dt>
-<dd>
-  <ul>
-
-
-<li>Added a Welcome Wizard to help with the initial setup of the Android
-development environment (<a href="http://tools.android.com/recent/welcomewizard">more
-info</a>).</li>
-<li>Integrated the Android Asset Studio, which helps you create icons for things
-like the launcher, menus, and tabs. (<a
-href="http://tools.android.com/recent/assetstudiointegration">more
-info</a>).</li>
-<li>Revamped the Logcat view and added support to display and filter logs by
-   application names as well as PIDs (<a
-   href="http://tools.android.com/recent/updatedlogcatviewer">more info</a>).</li>
-<li>Revamped the SDK Manager UI (<a href="http://tools.android.com/recent/newsdkmanager">more
-info</a>).</li>
-<li>Revamped the New Project and the New XML File wizards to have
-multiple pages. Sample projects are now copied into the workspace such that they can be modified
-and deleted without affecting the master copy
-(<a href="http://tools.android.com/recent/revampedwizards">more info</a>).</li>
-<li>Removed the dependency on Eclipse GEF.</li>
-</ul>
-</dd>
-
-<dt>XML and Java editors:</dt>
-<dd>
-  <ul>
-    <li>Added a new XML formatter that formats all XML files according to the
-   standard Android coding style. The formatter can also reorder
-   attributes to follow a recommended order and processes any changes made in the Layout editor.
-(<a href="http://tools.android.com/recent/xmlformatter">more info</a>).</li>
-  <li>Added the "Go to Matching" (Ctrl-Shift-P) feature, which lets you jump
-between opening and closing tags in XML files.</li>
-  <li>Added support for the "Select Enclosing Element" feature on Mac.</li>
-  <li>Added a Quickfix for extracting Strings when the caret is inside a String (<a href="">see
-more</a>).</li>
-  <li>Improved "smart indent", which allows automatic indentation and un-indentation
-   when pressing the Return key in XML editors (<a
-href="http://tools.android.com/recent/xmleditingimprovements">more info</a>).</li>
-
-  </ul>
-</dd>
-
-<dt>Layout editor:</dt>
-<dd>
-  <ul>
-    <li>Added tooltip feedback for dragging and resizing operations. For
-    example, when dragging in a relative layout, the proposed
-    constraints are shown. When resizing, the new dimensions are
-    shown (<a href="http://tools.android.com/recent/layouteditorfeedbacktooltips">more
-info</a>).</li>
-    <li>Added the ability to suppress rendering fidelity warnings (<a
-href="http://tools.android.com/recent/suppressrenderwarnings">more info</a>).</li>
-    <li>Added "Remove Container" visual refactoring that removes the
-    children of a container up to the top level and transfers
-    namespace and layout attributes if necessary (<a
-href="http://tools.android.com/recent/removecontainervisualrefactoring">more info</a>).</li>
-    <li>Added pull-right menus to the context menu for accessing
-    properties of the parents, which is useful when the children fully
-    cover the parent and make it hard to select on their own.</li>
-     <li>Improved access to properties in the context menu. The most
-    frequently set attributes for each view are listed at the top of
-    the menu. The Properties menu offers access to the most
-    recently set attributes, attributes organized by their defining
-    view, and layout attributes only or all attributes alphabetically (<a
-href="http://tools.android.com/recent/layouteditorcontextmenuimprovements">more info</a>).</li>
-  </ul>
-</dd>
-
-<dt>Bug fixes:</dt>
-<dd>Fixed many bugs and added <a
-href="http://tools.android.com/recent/miscellaneousrecentfixes">minor improvements</a>, in
-particular some <a href="http://tools.android.com/recent/linuxfixes">critical bug fixes on
-Linux</a>.</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=""/>ADT 12.0.0</a> <em>(July 2011)</em>
-  </p>
-
-  <div class="toggle-content-toggleme">
-<dl>
-
-<dt>Dependencies:</dt>
-
-<dd>This version of ADT is designed for use with
-<a href="{@docRoot}tools/sdk/tools-notes.html">SDK Tools r12</a>. If you haven't
-already installed SDK Tools r12 into your SDK, use
-the Android SDK Manager to do so.</dd>
-
-<dt>Visual Layout Editor:</dt>
-<dd>
-<ul>
-  <li>New RelativeLayout drop support with guideline suggestions for
-   attachments and cycle prevention
-   (<a href="http://tools.android.com/recent/revampedrelativelayoutsupport">more info</a>).</li>
-  <li>Resize support in most layouts along with
-  guideline snapping to the sizes dictated by <code>wrap_content</code> and <code>match_parent</code>.
-  In LinearLayout, sizes are mapped to weights instead of pixel widths.
-  (<a href="http://tools.android.com/recent/resizesupport">more info</a>).</li>
-  <li>Previews of drawables and colors in the resource chooser dialogs
-  (<a href="http://tools.android.com/recent/imageandcolorpreviews">more info</a>).</li>
-  <li>Improved error messages and links for rendering errors including
-  detection of misspelled class names
-  (<a href="http://tools.android.com/recent/improvedrenderingerrordiagnostics">more info</a>).</li>
-</ul>
-</dd>
-
-<dt>Build system:</dt>
-<dd>
-<ul>
-  <li id="build-option">A new option lets you disable the packaging step in the automatic
-  builders. This improves performance when saving files by not
-  performing a full build, which can take a long time for large projects.
-  If the option is enabled, the APK is packaged when the
-  application is deployed to a device or emulator or when the
-  release APK is exported (<a href="http://tools.android.com/recent/finercontroloveradtbuildprocess">more info</a>).</li>
-</ul>
-</dd>
-
-<dt>Bug fixes:</dt>
-<dd>Many bug fixes are part of this release
-(<a href="http://tools.android.com/recent/adt12bugfixroundup">more info</a>).</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=""/>ADT 11.0.0</a> <em>(June 2011)</em>
-  </p>
-
-  <div class="toggle-content-toggleme">
-<dl>
-
-<dt>Dependencies:</dt>
-
-<dd>This version of ADT is designed for use with SDK Tools r11. If you haven't
-already installed SDK Tools r11 into your SDK, use the Android SDK Manager to do
-so.</dd>
-
-<dt>Visual Refactoring:</dt>
-<dd>
-  <ul>
-    <li>"Extract Style" feature pulls out style-related attributes from your layout and extracts
-them as a new style defined in {@code styles.xml} (<a
-href="http://tools.android.com/recent/extractstylerefactoring">more info</a>).</li>
-    <li>"Wrap in Container" feature lets you select a group of views then surround them
-    in a new layout (a new view group, such as a LinearLayout), and transfers namespace and layout
-    parameters to the new parent (<a
-href="http://tools.android.com/recent/newrefactoringswrapinchangelayoutchangewidget">more
-info</a>).</li>
-    <li>"Change Layout" feature changes layouts from one type
-    to another, and can also flatten a layout hierarchy (<a
-href="http://tools.android.com/recent/newrefactoringswrapinchangelayoutchangewidget">more
-info</a>).</li>
-    <li>"Change Widget Type" feature changes the type of the
-    selected views to a new type. Also, a new selection context menu
-    in the visual layout editor makes it easy to select siblings as
-    well as views anywhere in the layout that have the same type (<a
-href="http://tools.android.com/recent/newrefactoringswrapinchangelayoutchangewidget">more
-info</a>).</li>
-    <li>"Extract as Include" feature finds identical collections of views
-    in other layouts and offers to combine them into a single layout that you can then include in
- each layout (<a
-href="http://tools.android.com/recent/extractasincludeimprovements">more info</a>).</li>
-    <li>Quick Assistant in Eclipse can be invoked
-    from the XML editor (with Ctrl-1) to apply any of the above
-    refactorings (and Extract String) to the current selection (<a
-href="http://tools.android.com/recent/refactoringquickassistant">more info</a>).</li>
-  </ul>
-</dd>
-
-<dt>Visual Layout Editor:</dt>
-<dd>
-  <ul>
-    <li>This is the update to the layout editor you've been waiting for! It includes (almost) all
-the goodies demonstrated at Google I/O. <a href="http://www.youtube.com/watch?v=Oq05KqjXTvs">Watch
-the video</a> on YouTube.</li>
-    <li>The palette now supports different configurations for supported widgets. That is, a single
-view is presented in various different configurations that you can drag into your layout. For
-example, there is a <em>Text Fields</em> palette category where you can drag an {@link
-android.widget.EditText} widget in as a password field, an e-mail field, a phone field, or other
-types of text boxes. Similarly, {@link android.widget.TextView} widgets are preconfigured
-with large, normal and small theme sizes, and {@link android.widget.LinearLayout} elements are
-preconfigured in horizontal and vertical configurations (<a
-href="http://tools.android.com/recent/multipletextfieldandlayouttypes">more info</a>).</li>
-    <li>The palette supports custom views. You can pick up any custom
-    implementations of the View class you've created in your project or from included libraries and
-drag them into your layout (<a
-href="http://tools.android.com/recent/customviewsinthepalette">more info</a>).</li>
-    <li>Fragments are available in the palette for placement in your layout. In the tool, you can
-choose which layout to show rendered for a given fragment tag. Go to declaration works for fragment
-classes (<a href="http://tools.android.com/recent/fragmentsupport">more info</a>).</li>
-    <li>The layout editor automatically applies a "zoom to fit" for newly
-    opened files as well as on device size and orientation changes to
-    ensure that large layouts are always fully visible unless you
-    manually zoom in.</li>
-    <li>You can drop in an {@code <include>} element from the palette, which will pop up
-    a layout chooser. When you select the layout to include, it is added with an {@code
-<include>}. Similarly, dropping images or image buttons will pop up image
-    resource choosers (<a
-href="http://tools.android.com/recent/includetagdropsupport">more info</a>).</li>
-    <li>The configuration chooser now applies the "Render Target" and
-    "Locale" settings project wide, making it trivial to check the
-    layouts for different languages or render targets without having
-    to configure these individually for each layout.</li>
-    <li>The layout editor is smarter about picking a default theme to
-    render a layout with, consulting factors like theme registrations
-    in the manifest, the SDK version, and other factors.</li>
-    <li>The layout editor is smarter about picking a default configuration to render a layout
-with, defaulting to the currently visible configuration in the previous file. It also considers the
-SDK target to determine whether to default to a tablet or phone screen size.</li>
-    <li>Basic focus support. The first text field dropped in a layout is assigned focus, and there
-are <strong>Request Focus</strong> and <strong>Clear Focus</strong> context menu items on text
-fields to change the focus.</li>
-  </ul>
-</dd>
-
-<dt>XML editors:</dt>
-<dd>
-<ul>
-  <li>Code completion has been significantly improved. It now works
-  with {@code <style>} elements, completes dimensional units,
-  sorts resource paths in values based on the attribute name, and more. There are also many fixes to
-handle text replacement (<a
-href="http://tools.android.com/recent/xmlcodecompletionimprovements">more info</a>).</li>
-  <li>AAPT errors are handled better. They are now underlined for the
-  relevant range in the editor, and a new quickfix makes it trivial
-  to create missing resources.</li>
-  <li>Code completion for drawable, animation and color XML files (<a
-href="http://tools.android.com/recent/codecompletionfordrawablescolorsandanimationfiles">more
-info</a>).</li>
-</ul>
-</dd>
-
-<dt>DDMS:</dt>
-<dd>
-<ul>
-  <li>"New Folder" action in the File Explorer.</li>
-  <li>The screenshot dialog will add timestamps to the filenames and preserve the orientation on
-snapshot refresh.</li>
-</ul>
-</dd>
-
-<dt>General notes:</dt>
-<dd>
-  <ul>
-    <li>TraceView supports zooming with the mouse-wheel in the timeline.</li>
-    <li>The New Android Project wizard now supports Eclipse working sets.</li>
-  </ul>
-</dd>
-</dl>
-<p>More information about tool changes are available on the <a
-href="http://tools.android.com/recent">Android Tools Project Site</a>.</p>
-</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=""/>ADT 10.0.1</a> <em>(March 2011)</em>
-  </p>
-
-  <div class="toggle-content-toggleme">
-
-<dl>
-
-<dt>Dependencies:</dt>
-
-<dd>This version of ADT is designed for use with SDK Tools r10. If you haven't
-already installed SDK Tools r10 into your SDK, use the Android SDK Manager to do
-so.</dd>
-
-<dt>General notes:</dt>
-<dd>
-  <ul>
-    <li>Temporary work-around to resolve the rare cases in which the layout editor will
-not open.</li>
-    <li>Fixed an issue in which ADT 10.0.0 would install on Eclipse 3.4 and lower, even though ADT
-requires Eclipse 3.5 or higher (as of 10.0.0).</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=""/>ADT 10.0.0</a> <em>(February 2011)</em>
-  </p>
-
-  <div class="toggle-content-toggleme">
-<dl>
-
-<dt>Dependencies:</dt>
-
-<dd>This version of ADT is designed for use with SDK Tools r10. If you haven't
-already installed SDK Tools r10 into your SDK, use the Android SDK Manager to do
-so.</dd>
-
-<dt>General notes:</dt>
-<dd>
-  <ul>
-  <li>The tools now automatically generate Java Programming Language source files (in the <code>gen/</code> directory) and
-    bytecode (in the <code>res/raw/</code> directory) from your <code>.rs</code> files.</li>
-  <li>A Binary XML editor has been added (<a href="http://tools.android.com/recent/binaryxmleditor">details</a>).</li>
-  <li>Traceview is now integrated into the Eclipse UI (<a href="http://tools.android.com/recent/traceviewineclipse">details</a>).</li>
-  <li>The "Go To Declaration" feature for XML and <code>.java</code> files quickly show all the matches in the project
-  and allows you jump to specific items such as string translations or <code>onClick</code> handlers
-  (<a href="http://tools.android.com/recent/gotodeclarationimprovements">details</a>).</li>
-  <li>The Resource Chooser can create items such as dimensions, integers, ids, and booleans
-  (<a href="http://tools.android.com/recent/resourcechoosercannowcreatearbitraryvalues">details</a>).</li>
-  <li>Improvements to the Visual Layout Editor:
-      <ul>
-        <li>A new Palette with categories and rendering previews
-        (<a href="http://tools.android.com/recent/newpalette">details</a>).</li>
-        <li>A Layout Actions bar that provides quick access to common layout operations
-        (<a href="http://tools.android.com/recent/layoutactionsbar">details</a>).</li>
-        <li>When the Android 3.0 rendering library is selected, layouts render more like they do on devices.
-        This includes rendering of status and title bars to more accurately reflect the actual
-        screen space available to applications
-        (<a href="http://tools.android.com/recent/systembarandactionbar">details</a>).</li>
-        <li>Zoom improvements such as fit to view, persistent scale, and keyboard access.
-        (<a href="http://tools.android.com/recent/zoomimprovements">details</a>).</li>
-        <li>Further improvements to <code>&lt;merge&gt;</code> layouts, as well as layouts with gesture overlays
-        (<a href="http://tools.android.com/recent/improvedsupportformergetags">details</a>).</li>
-        <li>Improved rendering error diagnostics.</li>
-      </ul>
-    </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=""/>ADT 9.0.0</a> <em>(January 2011)</em>
-  </p>
-
-  <div class="toggle-content-toggleme">
-<dl>
-
-<dt>Dependencies:</dt>
-
-<dd>This version of ADT is designed for use with SDK Tools r9. If you haven't
-already installed SDK Tools r9 into your SDK, use the Android SDK Manager to do
-so.</dd>
-
-<dt>General notes:</dt>
-<dd>
-  <ul>
-    <li>"Go To Declaration" hyperlink support: You can jump directly from code references (such as
-    <code>R.id.main</code>) to the corresponding XML declaration, or from XML attributes (such as
-    <code>@string</code>) to the corresponding resource definition, or from manifest XML
-    registrations to activities and services.</li>
-    <li>Improvements were made to name refactoring.</li>
-    <li>AVDs now automatically save their state, so they can restart almost instantly. You can enable this feature when
-    creating an AVD or by editing an AVD with the AVD Manager.</li>
-    <li>Improvements to the Visual Layout Editor:
-      <ul>
-        <li>Support for rendering targets: You can now choose an arbitrary Android platform to
-        render the current page, regardless of the project's minimum platform. This makes it
-        easy to verify the layout and appearance of your activity on different versions of
-        the platform.
-        </li>
-        <li>Improved support for empty and nested layouts: Dragging items over nested and
-        invisible layouts automatically enlarges and highlights these layouts, so that they
-        can receive drops.
-        </li>
-        <li>XML formatting improvements: The editor generates cleaner XML and you can now enable
-        XML auto-formatting in the <strong>Preferences</strong> menu.</li>
-        <li>Improved Outline labels: The Outline tab now displays additional information about each
-        View. Textual Views display a snippet of the actual text. Views with a source
-        (such as ImageView) displays the resource name. Included Views display the name of the View.
-        </li>
-        <li>When you right click a View in the Layout Editor,
-        the context menu now contains <strong>Edit ID...</strong> and <strong>Edit Text...</strong>
-        items. The <strong>Properties...</strong> context menus now list all of the properties and
-        provide a way to edit them
-        (<a href="http://tools.android.com/recent/editidtextandotherpropertiesviamenu">Details</a>).
-        </li>
-        <li>The layout editor now properly handles
-        <a href="{@docRoot}guide/topics/resources/layout-resource.html#include-element"><code>&lt;include&gt;</code></a>
-        and <a href="{@docRoot}guide/topics/resources/layout-resource.html#merge-element"><code>&lt;merge&gt;</code></a>
-        tags (<a href="http://tools.android.com/recent/supportforincludeandmerge">Details</a>).</li>
-        <li>"Extract as Include" refactoring: The Layout Editor has a new refactoring that allows
-        you to select one or more views in a layout, and extract it into a separate layout
-        (<a href="http://tools.android.com/recent/extractasincluderefactoring">Details</a>).</li>
-        <li>Improved diagnostics for class loading and rendering errors: Class loading and rendering
-        error messages are more useful and provide better information about the root cause of the
-        error.</li>
-        <li>Improved error handling to prevent drag and reordering operations from adding children
-        into an {@link android.widget.AdapterView}.</li>
-        <li>Outline reordering: Reordering your views in the Outline tab is much easier
-        (<a href="http://tools.android.com/recent/outlineimprovements">Details</a>).</li>
-        <li>Fix for keybinding bug where keyboard shortcuts did not work (Issues
-        <a href="http://code.google.com/p/android/issues/detail?id=13231">13231</a> and
-        <a href="http://code.google.com/p/android/issues/detail?id=13134">13134</a>).</li>
-        <li>Fix for problems with Custom layout attribute menu (Issue
-        <a href="http://code.google.com/p/android/issues/detail?id=13134">13134</a>).</li>
-        <li>Automatic configuration for various view types: Certain views have properties configured
-        by default. For example, the width of an {@link android.widget.EditText} object is set to
-        <code>match_parent</code> when added to a vertical {@link android.widget.LinearLayout}
-        or a default image is added to an {@link android.widget.ImageButton}.</li>
-        <li>Previews during dragging: Dragging from the palette or dragging within the layout editor
-        now shows live previews of the dragged item.</li>
-        <li>Navigation improvements: In the Layout Editor, double-clicking Views jumps to the
-        corresponding XML element. In the Outline view, double-clicking opens the Properties view.</li>
-        <li>The editor has Honeycomb style animation preview support.</li>
-        <li>Improved rendering support for various Views (such as TabHosts and SlidingDrawers) in
-        Honeycomb (Issues <a href="http://code.google.com/p/android/issues/detail?id=3162">3162</a>
-        and <a href="http://code.google.com/p/android/issues/detail?id=13092">13092</a>).</li>
-        <li>Included layouts can be rendered and edited in the context of the layouts that include
-        them. From a layout using an <a href="{@docRoot}guide/topics/resources/layout-resource.html#include-element">
-        <code>&lt;include&gt;</code></a> tag, double-clicking on the
-        <a href="{@docRoot}guide/topics/resources/layout-resource.html#include-element">
-        <code>&lt;include&gt;</code></a> element edits the referenced layout in the context of the
-        current layout. Additionally, when editing a layout that is included by other layouts,
-        you can quickly change between context layouts, by right clicking in the editor and choosing
-        <strong>Show included in...</strong>. This feature is only available in Honeycomb.</li>
-      </ul>
-    </li>
-    <li>This release fixes many other bugs, but the most important ones are listed below:
-  <ul>
-   <li>Fixed issue that prevented launching debug builds on productions devices when
-    <code>debuggable=true</code> was not set in the Android manifest.</li>
-    <li>The LogCat view in DDMS properly handles UTF-8 characters.</li>
-    <li>The SDK Manager is more reliable on Windows
-    (<a href="http://tools.android.com/recent/sdkmanagerfixes">Details</a>).</li>
-    <li>A JUnit initialization bug that prevented you from working with JUnit tests was fixed
-    (Issue <a href="http://code.google.com/p/android/issues/detail?id=12411">12411</a>).</li>
-  </ul>
-</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=""/>ADT 8.0.1</a> <em>(December 2010)</em>
-  </p>
-
-  <div class="toggle-content-toggleme">
-<dl>
-
-<dt>Dependencies:</dt>
-
-<p>This version of ADT is designed for use with SDK Tools r8. If you haven't
-already installed SDK Tools r8 into your SDK, use the Android SDK Manager to do
-so.</p></dd>
-
-<dt>General notes:</dt>
-<dd>
-<ul>
-  <li>This is a quick follow-up to ADT 8.0.0 to fix some bugs.</li>
-  <li>Fixes an issue in which projects failed to compile, citing a dex error.</li>
-  <li>Better ProGuard error reporting when exporting applications for release.</li>
-</ul>
-<p>Also see the recent release notes for 8.0.0, below.</p>
-</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=""/>ADT 8.0.0</a> <em>(December 2010)</em>
-  </p>
-
-  <div class="toggle-content-toggleme">
-<dl>
-
-<dt>Dependencies:</dt>
-
-<p>This version of ADT is designed for use with SDK Tools r8. If you haven't
-already installed SDK Tools r8 into your SDK, use the Android SDK Manager to do
-so.</p></dd>
-
-<dt>General notes:</dt>
-<dd>
-<ul>
-  <li>New version number scheme that follows the SDK Tools revision number. The major version
-number for your ADT plugin should now always match the revision number of your SDK Tools. For
-example, ADT 8.x is for SDK Tools r8.</li>
-  <li>Support for true debug build. You no longer need to change the value of the
-   <code>debuggable</code> attribute in the Android Manifest.
-  <p>Incremental builds automatically insert <code>debuggable="true"</code>, but if you perform
-  "export signed/unsigned application package", ADT does <em>not</em> insert it.
-  If you manually set <code>debuggable="true"</code> in the manifest file, then release builds will
-  actually create a debug build (it does not remove it if you placed it there).</p></li>
-  <li>Automatic <a href="{@docRoot}tools/help/proguard.html">ProGuard</a> support in
-  release builds. For it to work, you need to have a <code>proguard.config</code>
-  property in the <code>default.properties</code> file that points to a ProGuard config file.</li>
-  <li>Completely rewritten Visual Layout Editor. (This is still a work in progress.) Now includes:
-    <ul>
-      <li>Full drag and drop from palette to layout for all Layout classes.</li>
-      <li>Move widgets inside a Layout view, from one Layout view to another and from one layout file to another.</li>
-      <li>Contextual menu with enum/flag type properties.</li>
-      <li>New zoom controls.</li>
-    </ul></li>
-  <li>New HierarchyViewer plugin for Eclipse.</li>
-  <li>Android launch configurations no longer recompile the whole workspace on launch.</li>
-  <li>The location of <code>android.jar</code> source and javadoc can now be configured.</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=""/>ADT 0.9.9</a> <em>(September 2010)</em>
-  </p>
-
-  <div class="toggle-content-toggleme">
-<dl>
-
-<dt>Dependencies:</dt>
-
-<dd><p>ADT 0.9.9 replaces ADT 0.9.8 and is designed for use with SDK Tools r7
-and later. ADT 0.9.9 includes the ADT 0.9.8 features as well as an important
-bugfix, so we recommend that you upgrade as soon as possible. If you haven't
-already installed SDK Tools r7 into your SDK, use the Android SDK Manager to do
-so.</p></dd>
-
-<dt>General notes:</dt>
-<dd>
-<ul>
-<li>Fixes a problem in project import, in which source files were deleted in some cases.</li>
-<li>Includes all other ADT 0.9.8 features (see below).</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=""/>ADT 0.9.8</a> <em>(September 2010)</em>
-  </p>
-
-  <div class="toggle-content-toggleme">
-</ul>
-</dd>
-
-<dl>
-
-<dt>Dependencies:</dt>
-
-<dd><p>ADT 0.9.8 is now deprecated. Please use ADT 0.9.9 instead.</p></dd>
-
-<dt>General notes:</dt>
-<dd>
-<ul>
-<li>Adds a new Action, "Rename Application Package", to the Android Tools
-contextual menu. The Action does a full application package refactoring.
-<li>Adds support for library projects that don't have a source folder
-called <code>src/</code>. There is now support for any number of source folders,
-with no name restriction. They can even be in subfolder such as
-<code>src/java</code>. If you are already working with library projects created
-in ADT 0.9.7, see <a
-href="{@docRoot}tools/projects/index.html#libraryMigrating">Migrating
-library projects to ADT 0.9.8</a> for important information about moving
-to the new ADT environment.</li>
-<li>Adds support for library projects that depend on other library
-projects.</li>
-<li>Adds support for additional resource qualifiers:
-<code>car</code>/<code>desk</code>, <code>night</code>/<code>notnight</code> and
-<code>navexposed</code>/<code>navhidden</code>.</li>
-<li>Adds more device screen types in the layout editor. All screen
-resolution/density combinations listed in the <a
-href="{@docRoot}guide/practices/screens_support.html#range">Supporting
-Multiple Screens</a> are now available.</li>
-<li>Fixes problems with handling of library project names that
-contain characters that are incompatible with the Eclipse path variable.
-Now it properly sets up the link between the main project and the library
-project.</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=""/>ADT 0.9.7</a> <em>(May 2010)</em>
-  </p>
-
-  <div class="toggle-content-toggleme">
-<dl>
-<dt>Library projects:</dt>
-<dd>
-<p>The ADT Plugin now supports the use of <em>library projects</em> during
-development, a capability that lets you store shared Android application
-code and resources in a separate development project. You can then reference the
-library project from other Android projects and, at build time, the tools
-compile the shared code and resources as part of the dependent applications.
-More information about this feature is available in the <a
-href="{@docRoot}tools/projects/index.html#LibraryProjects">Creating and Managing Projects</a> document. </p>
-<p>If you are not developing in Eclipse, <a
-href="tools-notes.html">SDK Tools r6</a> provides the equivalent library
-project support through the Ant build system.</p>
-</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=""/>ADT 0.9.6</a> <em>(March 2010)</em>
-  </p>
-
-  <div class="toggle-content-toggleme">
-<dl>
-<dt>Dependencies:</dt>
-
-<dd><p>This version of ADT is designed for use with SDK Tools r5 and later. Before
-updating to ADT 0.9.6, we highly recommend that you use the Android SDK Manager to install SDK
-Tools r5 into your SDK.</p></dd>
-
-<dt>General Notes:</dt>
-<dd>
-<ul>
-<li>Editing <code>default.properties</code> outside of Eclipse will now
-automatically update the project.</li>
-<li>Loads the SDK content only when a project requires it. This will make
-Eclipse use less resources when the SDK contains many versions of Android.</li>
-<li>Resolves potential deadlock between modal dialogs, when launching ADT the
-first time with the SDK Usage panel.</li>
-<li>Fixes issues with the New Project Wizard when selecting samples.</li>
-</ul>
-</dd>
-<dt>AVD/SDK Manager:</dt>
-<dd>
-<ul>
-<li>Adds support for platform samples packages.</li>
-<li>Improves support for dependency between packages.</li>
-<li>AVDs now sorted by API level.</li>
-<li>The AVD creation dialog now enforces a minimum SD card size of 9MB.</li>
-<li>Prevents deletion of running AVDs.</li>
-</ul>
-</dd>
-<dt>DDMS:</dt>
-<dd>
-<ul>
-<li>DDMS plug-in now contains the Allocation Tracker view.</li>
-<li>New action in the Logcat view: "Go to problem" lets you go directly from an
-exception trace output to the code.</li>
-</ul>
-</dd>
-<dt>Editors:</dt>
-<dd>
-<ul>
-<li>Explode mode in the Visual Layout Editor adds a margin to all layout objects
-so that it's easier to see embedded or empty layouts.</li>
-<li>Outline mode in the Visual Layout Editor draws layout outline to make it
-easier to see layout objects.</li>
-<li>Several fixes in the configuration selector of the Visual Layout
-Editor.</li>
-</ul>
-</dd>
-<dt>Application launching:</dt>
-<dd>
-<ul>
-<li>Applications launched from ADT now behave as if they were clicked from the
-Home screen.</li>
-<li>Fixes an issue where add-ons without an optional library would not show up as valid
-targets for application launches.</li>
-<li>Resolves a possible crash when launching applications.</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=""/>ADT 0.9.5</a> <em>(December 2009)</em>
-  </p>
-
-  <div class="toggle-content-toggleme">
-<dl>
-<dt>Dependencies:</dt>
-
-<dd><p>This version of ADT requires features provided in SDK Tools r4 or higher. If you install
-ADT 0.9.5, which is highly recommended, you should use the Android SDK
-Manager to download the latest SDK Tools into your SDK. For more information,
-see <a href="{@docRoot}sdk/exploring.html">Exploring the SDK</a>.</p>
-</dd>
-
-<dt>General notes:</dt>
-<dd>
-<ul>
-<li>The AVD Launch dialog now allows you to set the scale value.</li>
-<li>Fixes a potential NullPointerException in the SDK Manager when you launch an AVD that does not
-  have a skin name specified.</li>
-<li>Fixes an XML validation issue in older Java versions.</li>
-<li>.apk packaging now properly ignores vi swap files as well as hidden files.</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=""/>ADT 0.9.4</a> <em>(October 2009)</em>
-  </p>
-
-  <div class="toggle-content-toggleme">
-<dl>
-<dt>Dependencies:</dt>
-
-<dd><p>This version of ADT requires features provided in SDK Tools r3 or higher. If you install
-ADT 0.9.4, which is highly recommended, you should use the Android SDK
-Manager to download the latest SDK Tools into your SDK. For more information,
-see <a href="{@docRoot}sdk/exploring.html">Exploring the SDK</a>.</p>
-</dd>
-
-<dt>Project Creation Wizard:</dt>
-<dd>
-<ul>
-<li>New option to create a project from a sample by choosing it from a list.</li>
-</ul>
-</dd>
-
-<dt>Layout Editor:</dt>
-<dd>
-<ul>
-<li>Improved Configuration selector that lets you see how your layout will
-render on different devices. Default device descriptions include ADP1
-and Google Ion, while SDK add-ons can also provide new descriptions.
-A new UI allows you to create custom descriptions.</li>
-<li>Adds a new clipping toggle, to let you see your full layout even if it's
-bigger than the screen.</li>
-</ul>
-</dd>
-
-<dt>DDMS integration:</dt>
-<dd>
-<ul>
-<li>Includes the improvements from the standalone DDMS, revision 3.</li>
-<li>Adds an option to open HPROF files into eclipse instead of writing them on
-disk. If a profiler such as MAT (<a href="http://eclipse.org/mat">Memory Analyzer
-Tool</a>) is installed, it'll open the file.</li>
-</ul>
-</dd>
-
-<dt>Android SDK and AVD Manager integration:</dt>
-<dd>
-<ul>
-<li>Includes the improvements from the standalone Android SDK and AVD Manager,
-revision 3.</li>
-</ul>
-</dd>
-</dl>
- </div>
-</div>
diff --git a/docs/html/tools/sdk/ndk/1.5_r1/index.jd b/docs/html/tools/sdk/ndk/1.5_r1/index.jd
deleted file mode 100644
index 2f6764b..0000000
--- a/docs/html/tools/sdk/ndk/1.5_r1/index.jd
+++ /dev/null
@@ -1,7 +0,0 @@
-page.title=Android 1.5 NDK, Release 1
-sdk.redirect=true
-sdk.redirect.path=ndk/index.html
-excludeFromSuggestions=true
-
-@jd:body
-
diff --git a/docs/html/tools/sdk/ndk/1.6_r1/index.jd b/docs/html/tools/sdk/ndk/1.6_r1/index.jd
deleted file mode 100644
index 1dc5b6f..0000000
--- a/docs/html/tools/sdk/ndk/1.6_r1/index.jd
+++ /dev/null
@@ -1,6 +0,0 @@
-page.title=Android 1.6 NDK, Release 1
-sdk.redirect=true
-sdk.redirect.path=ndk/index.html
-excludeFromSuggestions=true
-
-@jd:body
diff --git a/docs/html/tools/sdk/ndk/index.jd b/docs/html/tools/sdk/ndk/index.jd
deleted file mode 100644
index 90116d4..0000000
--- a/docs/html/tools/sdk/ndk/index.jd
+++ /dev/null
@@ -1,21 +0,0 @@
-page.title=Android NDK
-@jd:body
-
-
-
-  <p>The NDK is a toolset that allows you to implement parts
-  of your app using native-code languages such as C and C++. Typically, good use cases for the NDK
-  are CPU-intensive applications such as game engines, signal processing, and physics simulation.
-  </p>
-
-  <p>Before downloading the NDK, you should understand that <strong>the NDK
-   will not benefit most apps</strong>. As a developer, you need to balance its benefits
-  against its drawbacks. Notably, using native code on Android
-  generally does not result in a noticable performance improvement,
-  but it always increases your app complexity. In general, you should only use the NDK
-  if it is essential to your app&mdash;never because you simply prefer to program in C/C++.
-  When examining whether or not you should develop in native code, think about your requirements and
-  see if the Android framework APIs provide the functionality that you need.</p>
-
-  <a class="dac-hero-cta" href="{@docRoot}ndk/index.html">
-     <span class="dac-sprite dac-auto-chevron"></span> NDK Documentation and Downloads</a>
diff --git a/docs/html/tools/sdk/preview/features.jd b/docs/html/tools/sdk/preview/features.jd
deleted file mode 100644
index 2bdb0f4..0000000
--- a/docs/html/tools/sdk/preview/features.jd
+++ /dev/null
@@ -1,9 +0,0 @@
-excludeFromSuggestions=true
-@jd:body
-
-<script type="text/javascript">
-  document.location=toRoot+"about/versions/android-3.0.html"
-</script>
-
-<p>You should have already been redirected by your browser. Please go to the
-<a href="{@docRoot}about/versions/android-3.0.html">Android 3.0 Platform</a>.</p>
\ No newline at end of file
diff --git a/docs/html/tools/sdk/preview/index.jd b/docs/html/tools/sdk/preview/index.jd
deleted file mode 100644
index 713730e..0000000
--- a/docs/html/tools/sdk/preview/index.jd
+++ /dev/null
@@ -1,4 +0,0 @@
-sdk.redirect=true
-page.template=sdk
-excludeFromSuggestions=true
-@jd:body
diff --git a/docs/html/tools/sdk/preview/installing.jd b/docs/html/tools/sdk/preview/installing.jd
deleted file mode 100644
index d248b67..0000000
--- a/docs/html/tools/sdk/preview/installing.jd
+++ /dev/null
@@ -1,9 +0,0 @@
-excludeFromSuggestions=true
-@jd:body
-
-<script type="text/javascript">
-  document.location=toRoot+"sdk/installing/index.html"
-</script>
-
-<p>You should have already been redirected by your browser. Please go to
-<a href="{@docRoot}sdk/installing/index.html">Installing the SDK</a>.</p>
\ No newline at end of file
diff --git a/docs/html/tools/sdk/preview/requirements.jd b/docs/html/tools/sdk/preview/requirements.jd
deleted file mode 100644
index b62ee05..0000000
--- a/docs/html/tools/sdk/preview/requirements.jd
+++ /dev/null
@@ -1,9 +0,0 @@
-excludeFromSuggestions=true
-@jd:body
-
-<script type="text/javascript">
-  document.location=toRoot+"sdk/requirements.html"
-</script>
-
-<p>You should have already been redirected by your browser. Please go to the
-<a href="{@docRoot}sdk/requirements.html">SDK System Requirements</a>.</p>
\ No newline at end of file
diff --git a/docs/html/tools/sdk/preview/upgrading.jd b/docs/html/tools/sdk/preview/upgrading.jd
deleted file mode 100644
index 3b90696..0000000
--- a/docs/html/tools/sdk/preview/upgrading.jd
+++ /dev/null
@@ -1,9 +0,0 @@
-excludeFromSuggestions=true
-@jd:body
-
-<script type="text/javascript">
-  document.location=toRoot+"sdk/index.html"
-</script>
-
-<p>You should have already been redirected by your browser. Please go to
-<a href="{@docRoot}sdk/index.html">the Android SDK</a>.</p>
\ No newline at end of file
diff --git a/docs/html/tools/sdk/tools-notes.jd b/docs/html/tools/sdk/tools-notes.jd
deleted file mode 100644
index 1625716..0000000
--- a/docs/html/tools/sdk/tools-notes.jd
+++ /dev/null
@@ -1,2240 +0,0 @@
-page.title=SDK Tools Release Notes
-excludeFromSuggestions=true
-@jd:body
-
-<p>SDK Tools is a downloadable component for the Android SDK. It includes the
-complete set of development and debugging tools for the Android SDK. It is included
-with <a href="{@docRoot}tools/studio/index.html">Android Studio</a>.</p>
-
-<p>If you are already using the SDK and you want to update to the latest version
-of the SDK Tools, use the <a
-href="{@docRoot}tools/help/sdk-manager.html">SDK Manager</a> to get the
-update.</p>
-
-
-<h2 id="notes">Revisions</h2>
-
-<p>The sections below provide notes about successive releases of
-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>
-
-<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>
-
-  <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>
-
-
-
-  </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 Tools, Revision 24.4.1</a> <em>(October 2015)</em>
-  </p>
-
-  <div class="toggle-content-toggleme">
-
-    <dl>
-    <dt>Dependencies:</dt>
-
-    <dd>
-      <ul>
-        <li>Android SDK Platform-tools revision 23 or later.</li>
-      </ul>
-    </dd>
-
-    <dt>General Notes:</dt>
-    <dd>
-      <ul>
-        <li>Fixed a problem where the emulator title bar was hidden off screen.
-        (<a href="http://code.google.com/p/android/issues/detail?id=178344">Issue 178344</a>)</li>
-        <li>Enabled the emulator to resize the user data partition by including e2fsprogs binaries.
-        (<a href="http://code.google.com/p/android/issues/detail?id=189030">Issue 189030</a>)</li>
-        <li>Fixed a regression on the 32-bit Windows OS where the emulator fails to boot Android 6.0
-        (API level 23) through Android 5.0 (API level 21) system images.
-        (<a href="http://code.google.com/p/android/issues/detail?id=188326">Issue 188326</a>)</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=""/>SDK Tools, Revision 24.4.0</a> <em>(October 2015)</em>
-  </p>
-
-  <div class="toggle-content-toggleme">
-
-    <dl>
-    <dt>Dependencies:</dt>
-
-    <dd>
-      <ul>
-        <li>Android SDK Platform-tools revision 23 or later.</li>
-      </ul>
-    </dd>
-
-    <dt>General Notes:</dt>
-    <dd>
-      <ul>
-        <li>Updated the emulator so it can display an upgrade notification when a new version is
-        available.</li>
-        <li>Added the ability for the emulator to send basic crash reports. You <em>must</em> opt-in
-        through Android Studio preferences to enable crash report transmission.</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=""/>SDK Tools, Revision 24.3.4</a> <em>(August 2015)</em>
-  </p>
-
-  <div class="toggle-content-toggleme">
-
-    <dl>
-    <dt>Dependencies:</dt>
-
-    <dd>
-      <ul>
-        <li>Android SDK Platform-tools revision 23 or later.</li>
-      </ul>
-    </dd>
-
-    <dt>General Notes:</dt>
-    <dd>
-      <ul>
-        <li>Added support for Android 6.0 (API level 23) platform.</li>
-      </ul>
-    </dd>
-
-    <dt>Emulator:</dt>
-    <dd>
-      <ul>
-        <li>Improved emulator performance on multi-core Windows desktops.
-          (<a href="http://b.android.com/101040">Issue 101040</a>)</li>
-        <li>Added support for GPU emulation on Windows and Linux platforms using the
-          {@code -gpu mesa} command line option.</li>
-        <li>Enabled support for running emulators with GPU emulation through remote desktop
-          services, including Chrome Remote Desktop, Windows Terminal Services, and NoMachine.</li>
-        <li>Added support for emulators with 280 dpi and 360 dpi screen resolutions.</li>
-        <li>Improved support for GLES 2.0 extensions.</li>
-        <li>Fixed several issues with GPU emulation support.</li>
-        <li>Added support for setting the storage size on emulators using Android 4.4 (API level 19)
-          and higher.
-          (<a href="http://b.android.com/75141">Issue 75141</a>)</li>
-        <li>Fixed problem with sending long SMS messages between emulators.
-          (<a href="http://b.android.com/3539">Issue 3539</a>)</li>
-        <li>Fixed issue with emulator getting incorrect time from location objects.
-          (<a href="http://b.android.com/27272">Issue 27272</a>)</li>
-        <li>Added handling for unusual characters in paths and file names when starting emulators.
-          (<a href="http://b.android.com/35889">Issue 35889</a>)</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=""/>SDK Tools, Revision 24.3.3</a> <em>(June 2015)</em>
-  </p>
-
-  <div class="toggle-content-toggleme">
-
-    <dl>
-    <dt>Dependencies:</dt>
-
-    <dd>
-      <ul>
-        <li>Android SDK Platform-tools revision 19 or later.</li>
-      </ul>
-    </dd>
-
-    <dt>General Notes:</dt>
-    <dd>
-      <ul>
-        <li>Fixed issues with using Ant build tasks with the Eclipse ADT build structure. </li>
-        <li>Fixed the emulator boot problem on Mac OS X 10.8.5.</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=""/>SDK Tools, Revision 24.3.2</a> <em>(June 2015)</em>
-  </p>
-
-  <div class="toggle-content-toggleme">
-
-    <dl>
-    <dt>Dependencies:</dt>
-
-    <dd>
-      <ul>
-        <li>Android SDK Platform-tools revision 19 or later.</li>
-      </ul>
-    </dd>
-
-    <dt>General Notes:</dt>
-    <dd>
-      <ul>
-        <li>Fixed issues with the ARM 64-bit emulator.</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=""/>SDK Tools, Revision 24.3.1</a> <em>(June 2015)</em>
-  </p>
-
-  <div class="toggle-content-toggleme">
-
-    <dl>
-    <dt>Dependencies:</dt>
-
-    <dd>
-      <ul>
-        <li>Android SDK Platform-tools revision 19 or later.</li>
-      </ul>
-    </dd>
-
-    <dt>General Notes:</dt>
-    <dd>
-      <ul>
-        <li>Fixed issue with the <code>root/</code> and <code>lib/</code> folders. </li>
-      </ul>
-      <p class="caution"><strong>Caution:</strong> This release is known to contain issues which
-      prevent builds from completing. We strongly recommend that you update to SDK Tools 24.3.2
-      as soon as possible. </p>
-    </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=""/>SDK Tools, Revision 24.3.0</a> <em>(June 2015)</em>
-  </p>
-
-  <div class="toggle-content-toggleme">
-
-    <dl>
-    <dt>Dependencies:</dt>
-
-    <dd>
-      <ul>
-        <li>Android SDK Platform-tools revision 19 or later.</li>
-      </ul>
-    </dd>
-
-    <dt>General Notes:</dt>
-    <dd>
-      <ul>
-        <li>Fixed several minor emulator issues.</li>
-      </ul>
-      <p class="caution"><strong>Caution:</strong> This release is known to contain issues which
-      prevent builds from completing. We strongly recommend that you update to SDK Tools 24.3.2
-      as soon as possible. </p>
-    </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=""/>SDK Tools, Revision 24.2.0</a> <em>(May 2015)</em>
-  </p>
-
-  <div class="toggle-content-toggleme">
-
-    <dl>
-    <dt>Dependencies:</dt>
-
-    <dd>
-      <ul>
-        <li>Android SDK Platform-tools revision 19 or later.</li>
-      </ul>
-    </dd>
-
-    <dt>General Notes:</dt>
-    <dd>
-      <ul>
-        <li>Fixed several minor emulator issues.</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=""/>SDK Tools, Revision 24.1.2</a> <em>(February 2015)</em>
-  </p>
-
-  <div class="toggle-content-toggleme">
-
-    <dl>
-    <dt>Dependencies:</dt>
-
-    <dd>
-      <ul>
-        <li>Android SDK Platform-tools revision 19 or later.</li>
-      </ul>
-    </dd>
-
-    <dt>General Notes:</dt>
-    <dd>
-      <ul>
-        <li>Fixed boot failures of MIPS system images on Mac OS X.</li>
-        <li>Fixed AVD screen capture issues when using GPU emulation.</li>
-        <li>Fixed memory leaks in emulator system.</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=""/>SDK Tools, Revision 24.0.2</a> <em>(December 2014)</em>
-  </p>
-
-  <div class="toggle-content-toggleme">
-
-    <dl>
-    <dt>Dependencies:</dt>
-
-    <dd>
-      <ul>
-        <li>Android SDK Platform-tools revision 19 or later.</li>
-      </ul>
-    </dd>
-
-    <dt>General Notes:</dt>
-    <dd>
-      <ul>
-        <li>Fixed issue with creating projects and activities from templates using Eclipse ADT.</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=""/>SDK Tools, Revision 24.0.1</a> <em>(December 2014)</em>
-  </p>
-
-  <div class="toggle-content-toggleme">
-
-    <dl>
-    <dt>Dependencies:</dt>
-
-    <dd>
-      <ul>
-        <li>Android SDK Platform-tools revision 19 or later.</li>
-      </ul>
-    </dd>
-
-    <dt>General Notes:</dt>
-    <dd>
-      <ul>
-        <li>Fixed Java detection issue on 32-bit Windows systems.</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=""/>SDK Tools, Revision 24.0.0</a> <em>(December 2014)</em>
-  </p>
-
-  <div class="toggle-content-toggleme">
-
-    <dl>
-    <dt>Dependencies:</dt>
-
-    <dd>
-      <ul>
-        <li>Android SDK Platform-tools revision 19 or later.</li>
-      </ul>
-    </dd>
-
-    <dt>General Notes:</dt>
-    <dd>
-      <ul>
-        <li>Added support for Android Studio 1.0 and emulator enhancements.</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=""/>SDK Tools, Revision 23.0.5</a> <em>(October 2014)</em>
-  </p>
-
-  <div class="toggle-content-toggleme">
-
-    <dl>
-    <dt>Dependencies:</dt>
-
-    <dd>
-      <ul>
-        <li>Android SDK Platform-tools revision 19 or later.</li>
-        <li>If you are developing in Eclipse with ADT, note that this version of SDK Tools is
-          designed for use with ADT 23.0.4 and later. If you haven't already, update your
-        <a href="{@docRoot}tools/sdk/eclipse-adt.html">ADT Plugin</a> to 23.0.4.</li>
-        <li>If you are developing outside Eclipse, you must have
-          <a href="http://ant.apache.org/">Apache Ant</a> 1.8 or later.</li>
-      </ul>
-    </dd>
-
-    <dt>General Notes:</dt>
-    <dd>
-      <ul>
-        <li>Fixed Windows 32-bit compilation issue.</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=""/>SDK Tools, Revision 23.0.4</a> <em>(October 2014)</em>
-  </p>
-
-  <div class="toggle-content-toggleme">
-
-    <dl>
-    <dt>Dependencies:</dt>
-
-    <dd>
-      <ul>
-        <li>Android SDK Platform-tools revision 19 or later.</li>
-        <li>If you are developing in Eclipse with ADT, note that this version of SDK Tools is
-          designed for use with ADT 23.0.4 and later. If you haven't already, update your
-        <a href="{@docRoot}tools/sdk/eclipse-adt.html">ADT Plugin</a> to 23.0.4.</li>
-        <li>If you are developing outside Eclipse, you must have
-          <a href="http://ant.apache.org/">Apache Ant</a> 1.8 or later.</li>
-      </ul>
-    </dd>
-
-    <dt>General Notes:</dt>
-    <dd>
-      <ul>
-        <li>Fixed duplicate devices in AVD for Wear and TV.</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=""/>SDK Tools, Revision 23.0.2</a> <em>(July 2014)</em>
-  </p>
-
-  <div class="toggle-content-toggleme">
-
-    <dl>
-    <dt>Dependencies:</dt>
-
-    <dd>
-      <ul>
-        <li>Android SDK Platform-tools revision 19 or later.</li>
-        <li>If you are developing in Eclipse with ADT, note that this version of SDK Tools is
-          designed for use with ADT 23.0.2 and later. If you haven't already, update your
-        <a href="{@docRoot}tools/sdk/eclipse-adt.html">ADT Plugin</a> to 23.0.2.</li>
-        <li>If you are developing outside Eclipse, you must have
-          <a href="http://ant.apache.org/">Apache Ant</a> 1.8 or later.</li>
-      </ul>
-    </dd>
-
-    <dt>General Notes:</dt>
-    <dd>
-      <ul>
-        <li>Added ProGuard <code>.bat</code> files that were missing.</li>
-        <li>Added the <code>proguard-android.txt</code> file that was missing.</li>
-        <li>Renamed the <code>lombok-ast-0.2.2.jar</code> file to <code>lombok-ast.jar</code>,
-            which should allow running lint from the command line.</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=""/>SDK Tools, Revision 23.0.0</a> <em>(June 2014)</em>
-  </p>
-
-  <div class="toggle-content-toggleme">
-
-    <dl>
-    <dt>Dependencies:</dt>
-
-    <dd>
-      <ul>
-        <li>Android SDK Platform-tools revision 19 or later.</li>
-        <li>If you are developing in Eclipse with ADT, note that this version of SDK Tools is
-          designed for use with ADT 23.0.0 and later. If you haven't already, update your
-        <a href="{@docRoot}tools/sdk/eclipse-adt.html">ADT Plugin</a> to 23.0.0.</li>
-        <li>If you are developing outside Eclipse, you must have
-          <a href="http://ant.apache.org/">Apache Ant</a> 1.8 or later.</li>
-      </ul>
-    </dd>
-
-    <dt>General Notes:</dt>
-    <dd>
-      <ul>
-        <li>Added the Android Wear tools and system images.</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=""/>SDK Tools, Revision 22.6.4</a> <em>(June 2014)</em>
-  </p>
-
-  <div class="toggle-content-toggleme">
-
-    <dl>
-    <dt>Dependencies:</dt>
-
-    <dd>
-      <ul>
-        <li>Android SDK Platform-tools revision 18 or later.</li>
-        <li>If you are developing in Eclipse with ADT, note that this version of SDK Tools is
-          designed for use with ADT 22.6.3 and later. If you haven't already, update your
-        <a href="{@docRoot}tools/sdk/eclipse-adt.html">ADT Plugin</a> to 22.6.3.</li>
-        <li>If you are developing outside Eclipse, you must have
-          <a href="http://ant.apache.org/">Apache Ant</a> 1.8 or later.</li>
-      </ul>
-    </dd>
-
-    <dt>General Notes:</dt>
-    <dd>
-      <ul>
-        <li>Fixed an issue with the x86 emulator that caused Google Maps to crash.
-            (<a href="http://b.android.com/69385">Issue 69385</a>)</li>
-        <li>Fixed minor OpenGL issues.</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=""/>SDK Tools, Revision 22.6.3</a> <em>(April 2014)</em>
-  </p>
-
-  <div class="toggle-content-toggleme">
-
-    <dl>
-    <dt>Dependencies:</dt>
-
-    <dd>
-      <ul>
-        <li>Android SDK Platform-tools revision 18 or later.</li>
-        <li>If you are developing in Eclipse with ADT, note that this version of SDK Tools is
-          designed for use with ADT 22.6.3 and later. If you haven't already, update your
-        <a href="{@docRoot}tools/sdk/eclipse-adt.html">ADT Plugin</a> to 22.6.3.</li>
-        <li>If you are developing outside Eclipse, you must have
-          <a href="http://ant.apache.org/">Apache Ant</a> 1.8 or later.</li>
-      </ul>
-    </dd>
-
-    <dt>General Notes:</dt>
-    <dd>
-      <ul>
-        <li>Fixed a problem where the AVD manager allowed creating Android Wear virtual devices
-            with a target API Level lower than 19.</li>
-        <li>Fixed the description of Android Wear system images in the SDK Manager.</li>
-      </ul>
-    </dd>
-
-    <dt>Known Issues:</dt>
-    <dd>
-      <p>When you create an Android Wear virtual device in the AVD manager, a target API Level
-         lower than 19 may be selected by default. Make sure you select the target API Level 19
-         when creating Android Wear virtual devices.</p>
-    </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=""/>SDK Tools, Revision 22.6.2</a> <em>(March 2014)</em>
-  </p>
-
-  <div class="toggle-content-toggleme">
-
-    <dl>
-    <dt>Dependencies:</dt>
-
-    <dd>
-      <ul>
-        <li>Android SDK Platform-tools revision 18 or later.</li>
-        <li>If you are developing in Eclipse with ADT, note that this version of SDK Tools is
-          designed for use with ADT 22.6.2 and later. If you haven't already, update your
-        <a href="{@docRoot}tools/sdk/eclipse-adt.html">ADT Plugin</a> to 22.6.2.</li>
-        <li>If you are developing outside Eclipse, you must have
-          <a href="http://ant.apache.org/">Apache Ant</a> 1.8 or later.</li>
-      </ul>
-    </dd>
-
-    <dt>General Notes:</dt>
-    <dd>
-      <ul>
-        <li>Fixed a problem where the SDK Manager threw a <code>NullPointerException</code> after
-            removing a virtual device that was created using the Android Wear
-            system image. (<a href="http://b.android.com/67588">Issue 67588</a>)</li>
-        <li>Fixed a problem with Nexus 5 Android virtual devices created from the command line
-            where the SD card file system was read-only.</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=""/>SDK Tools, Revision 22.6.1</a> <em>(March 2014)</em>
-  </p>
-
-  <div class="toggle-content-toggleme">
-
-    <dl>
-    <dt>Dependencies:</dt>
-
-    <dd>
-      <ul>
-        <li>Android SDK Platform-tools revision 18 or later.</li>
-        <li>If you are developing in Eclipse with ADT, note that this version of SDK Tools is
-          designed for use with ADT 22.6.1 and later. If you haven't already, update your
-        <a href="{@docRoot}tools/sdk/eclipse-adt.html">ADT Plugin</a> to 22.6.1.</li>
-        <li>If you are developing outside Eclipse, you must have
-          <a href="http://ant.apache.org/">Apache Ant</a> 1.8 or later.</li>
-      </ul>
-    </dd>
-
-    <dt>General Notes:</dt>
-    <dd>
-      <ul>
-        <li>Fixed a problem where the Android Virtual Device Manager could not create new virtual
-            devices. (<a href="http://b.android.com/66661">Issue 66661</a>)</li>
-        <li><p>Fixed a problem with virtual devices created using ADT 22.3 or earlier.</p>
-            <p>If you created an Android Virtual Device using ADT 22.3 or earlier, the
-            AVD may be listed as <em>broken</em> in the AVD Manager in 22.6.1. To fix
-            this problem, select the virtual device on the AVD Manager and click
-            <strong>Repair</strong>.</p>
-        </li>
-        <li>Fixed a problem with the command line tools when creating virtual devices.
-            (<a href="http://b.android.com/66740">Issue 66740</a>)</li>
-        <li>Fixed a problem with the command line <code>lint</code> script.</li>
-      </ul>
-    </dd>
-
-    <dt>Known Issues:</dt>
-    <dd>
-      <p>When you create an Android virtual device using the Nexus 5 device definition,
-         you must enable the <em>Use Host GPU</em> option, otherwise the virtual device
-         will not start.</p>
-    </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=""/>SDK Tools, Revision 22.6</a> <em>(March 2014)</em>
-  </p>
-
-  <div class="toggle-content-toggleme">
-
-    <dl>
-    <dt>Dependencies:</dt>
-    <dd>
-      <ul>
-        <li>Android SDK Platform-tools revision 18 or later.</li>
-        <li>If you are developing in Eclipse with ADT, note that this version of SDK Tools is
-          designed for use with ADT 22.6.0 and later. If you haven't already, update your
-        <a href="{@docRoot}tools/sdk/eclipse-adt.html">ADT Plugin</a> to 22.6.0.</li>
-        <li>If you are developing outside Eclipse, you must have
-          <a href="http://ant.apache.org/">Apache Ant</a> 1.8 or later.</li>
-      </ul>
-    </dd>
-
-    <dt>General Notes:</dt>
-    <dd>
-      <ul>
-        <li><p>The command line <code>lint</code> script (<code>tools\lint.bat</code> on
-            Windows platforms, <code>tools/lint</code> on other platforms) and the
-            <code>lint</code> target on <code>ant</code> builds fail with the following
-            error:</p>
-            <p><code>Exception in thread "main" java.lang.NoClassDefFoundError:
-            lombok/ast/AstVisitor</code></p>
-            <p>As a temporary workaround, rename the file
-              <code>tools\lib\lombok-ast-0.2.2.jar</code> to
-            <code>tools\lib\lombok-ast.jar</code>.
-            We will release an updated version of the tools with a fix for
-            this issue as soon as possible.</p>
-          </li>
-        <li>Added support for Java 7 language features like multi-catch, try-with-resources,
-            and the diamond operator. These features require version 19 or higher
-            of the Build Tools. Try-with-resources requires <code>minSdkVersion</code>
-            19; the rest of the new language features require
-            <code>minSdkVersion</code> 8 or higher.</li>
-        <li>Added new lint checks:
-          <ul>
-            <li>Security:
-              <ul>
-                <li>Look for code potentially affected by a <code>SecureRandom</code>
-                    vulnerability.</li>
-                <li>Check that calls to <code>checkPermission</code> use the return value.</li>
-              </ul>
-            </li>
-            <li>Check that production builds do not use mock location providers.</li>
-            <li>Look for manifest values that are overwritten by values from Gradle build
-                scripts.</li>
-          </ul>
-        </li>
-        <li>Fixed a number of minor issues in the SDK and build system.</li>
-        <li>Emulator:
-          <ul>
-            <li>Fixed a problem with the emulator shutting down immediately for Android 1.5
-                on the Nexus One and Nexus S devices.
-                (<a href="http://b.android.com/64945">Issue 64945</a>)</li>
-            <li>Fixed a problem with port numbers longer than four digits.
-                (<a href="http://b.android.com/60024">Issue 60024</a>)</li>
-            <li>Fixed battery errors for the Nexus One and Nexus S devices.
-                (<a href="http://b.android.com/39959">Issue 39959</a>)</li>
-            <li>Fixed a problem with paths or arguments that contain
-                spaces on Windows platforms.
-                (<a href="http://b.android.com/18317">Issue 18317</a>)</li>
-            <li>Fixed a problem with long path values on Windows platforms.
-                (<a href="http://b.android.com/33336">Issue 33336</a>)</li>
-            <li>Fixed a problem with the {@code -snapshot-list} command line
-                option on 64-bit systems.
-                (<a href="http://b.android.com/34233">Issue 34233</a>)</li>
-          </ul>
-        </li>
-        <li>Fixed an issue with RenderScript support. Using RenderScript support mode
-          now requires version 19.0.3 of the Build Tools.</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 Tools, Revision 22.3</a> <em>(October 2013)</em>
-  </p>
-
-  <div class="toggle-content-toggleme">
-
-    <dl>
-    <dt>Dependencies:</dt>
-    <dd>
-      <ul>
-        <li>Android SDK Platform-tools revision 18 or later.</li>
-        <li>If you are developing in Eclipse with ADT, note that this version of SDK Tools is
-          designed for use with ADT 22.3.0 and later. If you haven't already, update your
-        <a href="{@docRoot}tools/sdk/eclipse-adt.html">ADT Plugin</a> to 22.3.0.</li>
-        <li>If you are developing outside Eclipse, you must have
-          <a href="http://ant.apache.org/">Apache Ant</a> 1.8 or later.</li>
-      </ul>
-    </dd>
-
-    <dt>General Notes:</dt>
-    <dd>
-      <ul>
-        <li>Added support for Android 4.4 (API level 19).</li>
-        <li>Fixed a number of minor bugs in the SDK and build system.</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 Tools, Revision 22.2.1</a> <em>(September 2013)</em>
-  </p>
-
-  <div class="toggle-content-toggleme">
-
-    <dl>
-    <dt>Dependencies:</dt>
-    <dd>
-      <ul>
-        <li>Android SDK Platform-tools revision 16 or later.</li>
-        <li>If you are developing in Eclipse with ADT, note that this version of SDK Tools is
-          designed for use with ADT 22.2.1 and later. If you haven't already, update your
-        <a href="{@docRoot}tools/sdk/eclipse-adt.html">ADT Plugin</a> to 22.2.1.</li>
-        <li>If you are developing outside Eclipse, you must have
-          <a href="http://ant.apache.org/">Apache Ant</a> 1.8 or later.</li>
-      </ul>
-    </dd>
-
-    <dt>General Notes:</dt>
-    <dd>
-      <ul>
-        <li>Fixed problem with templates that causes the new project wizard to hang.
-         (<a href="http://b.android.com/60149">Issue 60149</a>)</li>
-        <li>Fixed crash when using the lint command line tool because of mis-matched library
-          dependency. (<a href="http://b.android.com/60190">Issue 60190</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 Tools, Revision 22.2</a> <em>(September 2013)</em>
-  </p>
-
-  <div class="toggle-content-toggleme">
-
-    <dl>
-    <dt>Dependencies:</dt>
-    <dd>
-      <ul>
-        <li>Android SDK Platform-tools revision 16 or later.</li>
-        <li>If you are developing in Eclipse with ADT, note that this version of SDK Tools is
-          designed for use with ADT 22.2 and later. If you haven't already, update your
-        <a href="{@docRoot}tools/sdk/eclipse-adt.html">ADT Plugin</a> to 22.2.</li>
-        <li>If you are developing outside Eclipse, you must have
-          <a href="http://ant.apache.org/">Apache Ant</a> 1.8 or later.</li>
-      </ul>
-    </dd>
-
-    <dt>General Notes:</dt>
-    <dd>
-      <ul>
-        <li>Updated build tools to allow use of RenderScript on older versions of Android
-         using new features in the
-         <a href="{@docRoot}tools/support-library/features.html#v8">Support Library</a>.</li>
-        <li>Moved the Systrace tool to the {@code <sdk>/platform-tools/} directory. </li>
-        <li>Modified <a href="{@docRoot}tools/help/gltracer.html">Tracer for OpenGL ES</a> to
-          support OpenGL ES 3.0.</li>
-        <li>Lint
-          <ul>
-            <li>Fixed problem with lint not detecting custom namespaces.
-              (<a href="http://b.android.com/55673">Issue 55673</a>)</li>
-            <li>Fixed problem with the XML report including invalid characters.
-              (<a href="http://b.android.com/56205">Issue 56205</a>)</li>
-            <li>Fixed command-line execution of lint to work in headless mode to support execution
-              by build servers. (<a href="http://b.android.com/55820">Issue 55820</a>)</li>
-          </ul>
-        </li>
-        <li>Improved support for path names with spaces in the Windows command-line tools.</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 Tools, Revision 22.0.5</a> <em>(July 2013)</em>
-  </p>
-
-  <div class="toggle-content-toggleme">
-
-    <dl>
-    <dt>Dependencies:</dt>
-    <dd>
-      <ul>
-        <li>Android SDK Platform-tools revision 16 or later.</li>
-        <li>If you are developing in Eclipse with the
-          <a href="{@docRoot}tools/sdk/eclipse-adt.html">ADT Plugin</a>, note that this version of
-          SDK Tools is designed for use with ADT 22.0.5 and later. If you haven't already, update
-          ADT to 22.0.5.</li>
-        <li>If you are using <a href="{@docRoot}sdk/installing/studio.html">Android Studio</a>,
-          note that this version of the SDK Tools is designed to work with Android Studio
-          0.2.x and later.</li>
-        <li>If you are developing without an integrated development environment (IDE), you must have
-          <a href="http://ant.apache.org/">Apache Ant</a> 1.8 or later.</li>
-      </ul>
-    </dd>
-
-    <dt>General Notes:</dt>
-    <dd>
-      <ul>
-        <li>Fixed RenderScript compilation issue for Windows platforms with ant.</li>
-        <li>Updated <a href="{@docRoot}tools/help/systrace.html">Systrace</a> to work with the
-          Android 4.3 platform image.</li>
-        <li>Fixed packaging of RenderScript compiler.</li>
-        <li>Build tools 18.0.0 is obsolete and 18.0.1 should be used instead.</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 Tools, Revision 22.0.4</a> <em>(July 2013)</em>
-  </p>
-
-  <div class="toggle-content-toggleme">
-
-    <dl>
-    <dt>Dependencies:</dt>
-    <dd>
-      <ul>
-        <li>Android SDK Platform-tools revision 16 or later.</li>
-        <li>If you are developing in Eclipse with the
-          <a href="{@docRoot}tools/sdk/eclipse-adt.html">ADT Plugin</a>, note that this version of
-          SDK Tools is designed for use with ADT 22.0.4 and later. If you haven't already, update
-          ADT to 22.0.4.</li>
-        <li>If you are using <a href="{@docRoot}sdk/installing/studio.html">Android Studio</a>,
-          note that this version of the SDK Tools is designed to work with Android Studio
-          0.2.x and later.</li>
-        <li>If you are developing without an integrated development environment (IDE), you must have
-          <a href="http://ant.apache.org/">Apache Ant</a> 1.8 or later.</li>
-      </ul>
-    </dd>
-
-    <dt>General Notes:</dt>
-    <dd>
-      <ul>
-        <li>Fixed problem with compiling RenderScript code.</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 Tools, Revision 22.0.1</a> <em>(May 2013)</em>
-  </p>
-
-  <div class="toggle-content-toggleme">
-
-    <dl>
-    <dt>Dependencies:</dt>
-    <dd>
-      <ul>
-        <li>Android SDK Platform-tools revision 16 or later.</li>
-        <li>If you are developing in Eclipse with ADT, note that this version of SDK Tools is
-          designed for use with ADT 22.0.1 and later. If you haven't already, update your
-        <a href="{@docRoot}tools/sdk/eclipse-adt.html">ADT Plugin</a> to 22.0.1.</li>
-        <li>If you are developing outside Eclipse, you must have
-          <a href="http://ant.apache.org/">Apache Ant</a> 1.8 or later.</li>
-      </ul>
-    </dd>
-
-    <dt>General Notes:</dt>
-    <dd>
-      <ul>
-        <li>Fixed issue with Lint ServiceCast check and fully qualified class names.
-          (<a href="http://code.google.com/p/android/issues/detail?id=55403">Issue 55403</a>)</li>
-        <li>Fixed crash issue with Lint ArraySizeDetector check.
-          (<a href="http://code.google.com/p/android/issues/detail?id=54887">Issue 54887</a>)</li>
-        <li>Fixed a problem with the monkeyrunner tool failing to import standard python classes.
-          (<a href="http://code.google.com/p/android/issues/detail?id=55632">Issue 55632</a>)</li>
-        <li>Fixed a problem with DDMS monitor not opening heap and network statistics views due to
-          a class not found exception.
-          (<a href="http://code.google.com/p/android/issues/detail?id=55394">Issue 55394</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 Tools, Revision 22</a> <em>(May 2013)</em>
-  </p>
-
-  <div class="toggle-content-toggleme">
-
-    <dl>
-    <dt>Dependencies:</dt>
-    <dd>
-      <ul>
-        <li>Android SDK Platform-tools revision 16 or later.</li>
-        <li>If you are developing in Eclipse with ADT, note that this version of SDK Tools is
-          designed for use with ADT 22.0.0 and later. If you haven't already, update your
-        <a href="{@docRoot}tools/sdk/eclipse-adt.html">ADT Plugin</a> to 22.0.0.</li>
-        <li>If you are developing outside Eclipse, you must have
-          <a href="http://ant.apache.org/">Apache Ant</a> 1.8 or later.</li>
-    </ul>
-    </dd>
-
-    <dt>General Notes:</dt>
-    <dd>
-      <ul>
-        <li>Changed the structure of the SDK by adding a new build tool SDK Component, which is
-          based on the existing platform-tools component. This change decouples the build tools
-          versions from the IDE versions, allowing updates to the tools without requiring an
-          IDE update.</li>
-        <li>Updated tools to allow libraries to share the same package name as the applications
-          that use them.</li>
-        <li>Updated {@code draw9patch} tool to allow easier changing of markers.</li>
-        <li>Added new Lint checks, including checks for layout consistency,
-          {@link android.widget.RelativeLayout} siblings, {@link android.os.Parcel} creator,
-          JavaScript interfaces, {@link android.app.Service} casting, quantity strings, manifest
-          typos, orientation tags in layouts, overlapping names for 9-patches and images, and class
-          existence checks.</li>
-        <li>Updated build tools to sign applications using the BouncyCastle library instead of
-          relying on Sun JVM specific APIs.</li>
-        <li>Released some of the Android tools into <a href="http://www.maven.org">Maven
-          Central</a> to assist third-party tool developers. The following tools are available
-          in the repository: {@code manifest-merger}, {@code common/sdk_common}, {@code ddmlib},
-          {@code dvlib}, {@code layoutlib_api}, {@code sdklib}, and {@code lint}.</li>
-      </ul>
-    </dd>
-
-    <dt>Bug fixes:</dt>
-    <dd>
-      <ul>
-        <li>Fixed a number of minor bugs in the SDK and build system.</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 Tools, Revision 21.1</a> <em>(February 2013)</em>
-  </p>
-
-  <div class="toggle-content-toggleme">
-
-    <dl>
-    <dt>Dependencies:</dt>
-    <dd>
-      <ul>
-        <li>Android SDK Platform-tools revision 16 or later.</li>
-        <li>If you are developing in Eclipse with ADT, note that this version of SDK Tools is
-          designed for use with ADT 21.1.0 and later. If you haven't already, update your
-        <a href="{@docRoot}tools/sdk/eclipse-adt.html">ADT Plugin</a> to 21.1.0.</li>
-        <li>If you are developing outside Eclipse, you must have
-          <a href="http://ant.apache.org/">Apache Ant</a> 1.8 or later.</li>
-    </ul>
-    </dd>
-
-    <dt>General Notes:</dt>
-    <dd>
-      <ul>
-        <li>Improved error reporting in {@code dx} when dex merging fails in the build
-          system.</li>
-        <li>Added more than 15 new Lint checks, including checks for overriding older APIs, XML
-          resource problems, graphic asset issues and manifest tags.</li>
-        <li>Added new aapt feature to compile resources.</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 Tools, Revision 21.0.1</a> <em>(December 2012)</em>
-  </p>
-
-  <div class="toggle-content-toggleme">
-
-    <dl>
-    <dt>Dependencies:</dt>
-    <dd>
-      <ul>
-        <li>Android SDK Platform-tools revision 16 or later.</li>
-        <li>If you are developing in Eclipse with ADT, note that this version of SDK Tools is
-          designed for use with ADT 21.0.1 and later. If you haven't already, update your
-        <a href="{@docRoot}tools/sdk/eclipse-adt.html">ADT Plugin</a> to 21.0.1.</li>
-        <li>If you are developing outside Eclipse, you must have
-          <a href="http://ant.apache.org/">Apache Ant</a> 1.8 or later.</li>
-    </ul>
-    </dd>
-
-    <dt>General Notes:</dt>
-    <dd>
-      <ul>
-        <li>Build
-          <ul>
-            <li>Updated build to detect and handle package name conflicts between an application and
-              the libraries it depends on. Libraries cannot share package names unless all of them
-              share the same package name.
-              (<a href="http://code.google.com/p/android/issues/detail?id=40152">Issue 40152</a>,
-               <a href="http://code.google.com/p/android/issues/detail?id=40273">Issue 40273</a>)
-            </li>
-            <li>Added a flag to disable dex merging to deal with cases where merging could generate
-              a broken dex file. If this happens to your project, add the following setting to your
-              {@code project.properties} file: {@code dex.disable.merger=true} This setting
-              causes the build system to revert to the older, slower dex processing that does not
-              pre-dex libraries.</li>
-          </ul>
-        </li>
-
-        <li>RenderScript
-          <ul>
-            <li>Added support for
-              <a href="{@docRoot}guide/topics/renderscript/compute.html#filterscript">Filterscript</a>
-              compilation.</li>
-            <li>Added new project setting to control the RenderScript compilation target separately
-              from an Android project. Adding the following line to a {@code project.properties}
-              file causes RenderScript code to be compiled for Android API Level 17, while the
-              containing application can target a different (lower) API level:
-              <pre>renderscript.target = 17</pre>
-              Previously, the RenderScript compilation target was tied to the
-              {@code android:minSdkVersion} setting in the manifest.
-              (<a href="http://code.google.com/p/android/issues/detail?id=40487">Issue 40487</a>)
-            </li>
-          </ul>
-        </li>
-
-      </ul>
-    </dd>
-
-
-    <dt>Bug fixes:</dt>
-    <dd>
-      <ul>
-        <li>Lint
-          <ul>
-            <li>Corrected check for {@code 0px} values in style XML elements.
-              (<a href="http://code.google.com/p/android/issues/detail?id=39601">Issue 39601</a>)
-              </li>
-            <li>Fixed incorrect flagging of formatting strings.
-              (<a href="http://code.google.com/p/android/issues/detail?id=39758">Issue 39758</a>)
-              </li>
-            <li>Fixed problem where {@code tools:ignore} directive in the manifest file was ignored
-              by the Lint tool.
-              (<a href="http://code.google.com/p/android/issues/detail?id=40136">Issue 40136</a>)
-              </li>
-            <li>Fixed problem with flagging a wakelock release inside a conditional.
-              (<a href="http://code.google.com/p/android/issues/detail?id=40424">Issue 40424</a>)
-              </li>
-            <li>Fixed incorrect reporting of missing {@code layout_width} and {@code layout_height}
-              XML fields.
-              (<a href="http://code.google.com/p/android/issues/detail?id=38958">Issue 38958</a>)
-              </li>
-            <li>Fixed handling of custom namespace attributes.</li>
-            <li>Added fixes for filtering out library project warnings.</li>
-            <li>Removed warnings about missing classes before a build.</li>
-          </ul>
-        </li>
-
-        <li>Fixed problem with UI Automator Viewer execution script where Android tools directory
-          is not set.</li>
-        <li>Fixed problem with the SDK Manager so that it auto-selects the most recently released
-          platform on startup.</li>
-        <li>Fixed Java finding script to look for the currently supported version of Java (1.6 or
-          higher).</li>
-        <li>Fixed the SDK Manager launcher in the ADT bundle so that it can properly launch the
-          SDK Manager program when it is placed at the root of the bundle.</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 Tools, Revision 21</a> <em>(November 2012)</em>
-  </p>
-
-  <div class="toggle-content-toggleme">
-
-    <dl>
-    <dt>Dependencies:</dt>
-    <dd>
-      <ul>
-        <li>Android SDK Platform-tools revision 16 or later.</li>
-        <li>If you are developing in Eclipse with ADT, note that this version of SDK Tools is designed
-        for use with ADT 21.0.0 and later. If you haven't already, update your
-        <a href="{@docRoot}tools/sdk/eclipse-adt.html">ADT Plugin</a> to 21.0.0.</li>
-        <li>If you are developing outside Eclipse, you must have
-          <a href="http://ant.apache.org/">Apache Ant</a> 1.8 or later.</li>
-      </ul>
-    </dd>
-
-    <dt>General Notes:</dt>
-    <dd>
-      <ul>
-        <li>Build System
-          <ul>
-            <li>Added a flag that sets <em>jumbo mode</em> for DEX files, which allows a larger
-              number of strings in the DEX files. Enable this mode by adding the following line to
-              the {@code project.properties} file of your project:
-              <pre>dex.force.jumbo=true</pre></li>
-            <li>Improved the build time by pre-dexing libraries (both JAR files and library
-              projects).</li>
-            <li>Updated the build to generate {@code R} resource classes for library projects
-              with only the IDs needed by the libraries, reducing the risk of hitting DEX file
-              limits for fields and methods.</li>
-            <li>Improved the build so that several editing features (code completion, resource
-              chooser, go to declaration) properly handle library project resources.</li>
-          </ul>
-        </li>
-        <li>Lint
-          <ul>
-            <li>Added over 25 new lint rules for resources, locale settings, layout
-              files, incorrect use of {@link android.util.SparseArray} and
-              {@link android.os.PowerManager.WakeLock} and manifest issues.</li>
-            <li>Updated reporting to include errors in library projects if the library project is
-              in the list of projects to be checked.</li>
-            <li>Added a new {@code lint} target to the Ant build system for easier
-              integration with continuous build systems.</li>
-            <li>Added new {@code --sources} and {@code --classpath} arguments to point to sources
-              with different directory structures.</li>
-            <li>Improved the XML export function to support the <a
-              href="https://wiki.jenkins-ci.org/display/JENKINS/Android+Lint+Plugin">Jenkins Lint
-              plugin</a>.
-            </li>
-            <li>Added support for class file flow analysis.</li>
-          </ul>
-        </li>
-        <li>Android Virtual Devices (AVD)
-          <ul>
-            <li>Added new <strong>Device Definitions</strong> tab in the AVD Manager for configuring
-              standard size and Nexus virtual devices.</li>
-            <li>Improved emulators so that they launch with a skin that is dynamically generated and
-              reflects the actual hardware configured in the AVD Manager.</li>
-            <li>Improved support for developing Android apps on MIPS-based devices with new MIPS
-              System Images for Android Virtual Devices.</li>
-          </ul>
-        </li>
-        <li>Added {@code jobb} tool for creating and encrypting
-          <a href="{@docRoot}google/play/expansion-files.html">APK Expansion Files</a>.
-          (<a href="{@docRoot}tools/help/jobb.html">more info</a>)
-        <li>Improved the Android JUnit test runner to allow a test to be run on all connected
-          devices simultaneously.</li>
-      </ul>
-    </dd>
-
-    <dt>Bug fixes:</dt>
-    <dd>
-      <ul>
-        <li>Fixed manifest merger to properly adapt library classes in the merged manifest.</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 Tools, Revision 20.0.3</a> <em>(August 2012)</em>
-  </p>
-
-  <div class="toggle-content-toggleme">
-
-    <dl>
-    <dt>Dependencies:</dt>
-    <dd>
-      <ul>
-        <li>Android SDK Platform-tools revision 12 or later.</li>
-        <li>If you are developing in Eclipse with ADT, note that this version of SDK Tools is designed
-        for use with ADT 20.0.3 and later. If you haven't already, update your
-        <a href="{@docRoot}tools/sdk/eclipse-adt.html">ADT Plugin</a> to 20.0.3.</li>
-        <li>If you are developing outside Eclipse, you must have
-          <a href="http://ant.apache.org/">Apache Ant</a> 1.8 or later.</li>
-    </ul>
-    </dd>
-    <dt>Bug fixes:</dt>
-    <dd>
-      <ul>
-        <li>Fixed problem with cached download lists in SDK Manager.</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 Tools, Revision 20.0.1</a> <em>(July 2012)</em>
-  </p>
-
-  <div class="toggle-content-toggleme">
-
-    <dl>
-    <dt>Dependencies:</dt>
-    <dd>
-      <ul>
-        <li>Android SDK Platform-tools revision 12 or later.</li>
-        <li>If you are developing in Eclipse with ADT, note that this version of SDK Tools is designed
-        for use with ADT 20.0.1 and later. If you haven't already, update your
-        <a href="{@docRoot}tools/sdk/eclipse-adt.html">ADT Plugin</a> to 20.0.1.</li>
-        <li>If you are developing outside Eclipse, you must have
-          <a href="http://ant.apache.org/">Apache Ant</a> 1.8 or later.</li>
-    </ul>
-    </dd>
-    <dt>Bug fixes:</dt>
-    <dd>
-      <ul>
-        <li>Fixed wrong check on build state that forced repetitive Java code recompilation.</li>
-        <li>Fixed problems with running more than one emulator and running multiple emulators
-with GPU acceleration.</li>
-        <li>Improved resize algorithm for better rendering on scaled emulator windows.</li>
-        <li>Fixed a bug in the {@code lint} check for unprotected broadcast receivers to ignore
-unprotected receivers for default Android actions.</li>
-        <li>Fixed build issue for projects using RenderScript.</li>
-        <li>Fixed memory leak in the emulator.</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 Tools, Revision 20</a> <em>(June 2012)</em>
-  </p>
-
-  <div class="toggle-content-toggleme">
-  <dl>
-    <dt>Dependencies:</dt>
-    <dd>
-      <ul>
-        <li>Android SDK Platform-tools revision 12 or later.</li>
-        <li>If you are developing in Eclipse with ADT, note that this version of SDK Tools is designed for
-        use with ADT 20.0.0 and later. If you haven't already, we highly recommend updating your
-        <a href="{@docRoot}tools/sdk/eclipse-adt.html">ADT Plugin</a> to 20.0.0.</li>
-        <li>If you are developing outside Eclipse, you must have
-          <a href="http://ant.apache.org/">Apache Ant</a> 1.8 or later.</li>
-    </ul>
-    </dd>
-    <dt>General notes:</dt>
-    <dd>
-      <ul>
-        <li>Added new Device Monitor application, grouping Android debugging tools into a
-single application, including ddms, traceview, hierarchyviewer and Tracer for GLES. (<a
-href="{@docRoot}tools/help/gltracer.html">more info</a>)</li>
-        <li>Added new System Trace new tool for tracing Android system activity. This tool allow you
-to capture a slice of system activity, plus additional information tagged from the <strong>Settings
-&gt; Developer Options &gt; Monitoring: Enable traces</strong> or with specific calls added to your
-application code.</li>
-        </li>
-        <li>Build System
-          <ul>
-            <li>Added automatic merging of library project manifest files into the including
-project's manifest. Enable this feature with the {@code manifestmerger.enabled} property.</li>
-            <li>Added automatic ProGuard support for the {@code aapt -G} flag. This change causes
-the build system to generate a temporary ProGuard {@code keep-rules} file containing classes that
-are referenced from XML files (such as custom views) and pass this to ProGuard at shrink time. This
-can make the resulting APK much smaller when using just a small portion of a large library project
-(such as the Android Support library), since the catch-all rules to keep all custom views from the
-default ProGuard configuration file have also been removed.</li>
-            <li>Added two ProGuard configuration files for use in projects: {@code
-proguard-android-optimize.txt} which enables optimizations and {@code proguard-android.txt} which
-disables them.</li>
-          </ul>
-        </li>
-        <li>SDK Manager
-          <ul>
-            <li>Improved caching to reduce downloading of repository definitions.</li>
-            <li>Added <strong>Tools > Manage Add-on Sites</strong> option to improve performance by
-            allowing temporary deactivation of third-party sites if they are loading slowly.</li>
-            <li>Added settings for the SDK Manager download cache (<strong>SDK Manager > Tools >
-Options</strong>).</li>
-          </ul>
-        </li>
-      </ul>
-    </dd>
-    <dt>Bug fixes:</dt>
-    <dd>
-      <ul>
-        <li>Build
-          <ul>
-            <li>Fixed problem where test projects did not have access to the full classpath of tested
-projects, including Library Projects and third-party jars.</li>
-            <li>Fixed deployment logic so that applications with embedded tests can now be deployed
-and tested like test applications, including code coverage information.</li>
-            <li>Fixed Ant support for testing projects with libraries.</li>
-          </ul>
-        </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 Tools, Revision 19</a> <em>(April 2012)</em>
-  </p>
-
-  <div class="toggle-content-toggleme">
-    <p class="note"><strong>Note:</strong> This update of SDK Tools is only available through
-the <a href="{@docRoot}sdk/exploring.html">Android SDK Manager</a>. Use this tool to
-download and install this update.</p>
-
-    <dl>
-    <dt>Dependencies:</dt>
-    <dd>
-      <ul>
-        <li>Android SDK Platform-tools revision 9 or later.</li>
-        <li>If you are developing in Eclipse with ADT, note that this version of SDK Tools is designed for
-        use with ADT 18.0.0 and later. If you haven't already, we highly recommend updating your
-        <a href="{@docRoot}tools/sdk/eclipse-adt.html">ADT Plugin</a> to 18.0.0.</li>
-        <li>If you are developing outside Eclipse, you must have
-          <a href="http://ant.apache.org/">Apache Ant</a> 1.8 or later.</li>
-    </ul>
-    </dd>
-    <dt>Bug fixes:</dt>
-    <dd>
-      <ul>
-        <li>Fixed an issue that prevented some developers from running the emulator with GPU
-acceleration.</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 Tools, Revision 18</a> <em>(April 2012)</em>
-  </p>
-
-  <div class="toggle-content-toggleme">
-    <p class="caution"><strong>Important:</strong> To download the new Android
-    4.0 system components from the Android SDK Manager, you must first update the
-    SDK tools to revision 14 or later and restart the Android SDK Manager. If you do not,
-    the Android 4.0 system components will not be available for download.</p>
-
-    <dl>
-    <dt>Dependencies:</dt>
-    <dd>
-      <ul>
-        <li>Android SDK Platform-tools revision 9 or later.</li>
-        <li>If you are developing in Eclipse with ADT, note that this version of SDK Tools is designed for
-        use with ADT 18.0.0 and later. If you haven't already, we highly recommend updating your
-        <a href="{@docRoot}tools/sdk/eclipse-adt.html">ADT Plugin</a> to 18.0.0.</li>
-        <li>If you are developing outside Eclipse, you must have
-          <a href="http://ant.apache.org/">Apache Ant</a> 1.8 or later.</li>
-    </ul>
-    </dd>
-    <dt>General notes:</dt>
-    <dd>
-      <ul>
-        <li>Updated the SdkController app to encapsulate both sensor and multitouch emulation
-          functionality.</li>
-      </ul>
-    </dd>
-    <dt>Bug fixes:</dt>
-    <dd>
-      <ul>
-        <li>Fixed Ant issues where some jar libraries in the {@code libs/} folder are not picked up
-in some cases.</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 Tools, Revision 17</a> <em>(March 2012)</em>
-  </p>
-
-  <div class="toggle-content-toggleme">
-    <p class="caution"><strong>Important:</strong> To download the new Android
-    4.0 system components from the Android SDK Manager, you must first update the
-    SDK tools to revision 14 or later and restart the Android SDK Manager. If you do not,
-    the Android 4.0 system components will not be available for download.</p>
-
-    <dl>
-    <dt>Dependencies:</dt>
-    <dd>
-      <ul>
-        <li>Android SDK Platform-tools revision 9 or later.</li>
-        <li>If you are developing in Eclipse with ADT, note that this version of SDK Tools is designed for
-        use with ADT 17.0.0 and later. If you haven't already, we highly recommend updating your
-        <a href="{@docRoot}tools/sdk/eclipse-adt.html">ADT Plugin</a> to 17.0.0.</li>
-        <li>If you are developing outside Eclipse, you must have
-          <a href="http://ant.apache.org/">Apache Ant</a> 1.8 or later.</li>
-    </ul>
-    </dd>
-    <dt>General notes:</dt>
-    <dd>
-      <ul>
-        <li>Emulator
-          <ul>
-            <li>Added support for hardware accelerated graphics rendering. This feature requires an
-API Level 15, Revision 3 or later system image.
-(<a href="{@docRoot}tools/devices/emulator.html#accel-graphics">more info</a>)
-            </li>
-            <li>Added support for running Android x86 system images in virtualization mode on
-Windows and Mac OS X.
-(<a href="{@docRoot}tools/devices/emulator.html#accel-vm">more info</a>)
-              <p class="note"><strong>Note:</strong> Use the Android SDK Manager to download and
-install x86 system images. Android x86 system images are not available for all API levels.</p>
-            </li>
-            <li>Added experimental support for multi-touch input by enabing the emulator to receive
-              touch input from a USB-tethered physical Android device.
-              (<a href="http://tools.android.com/tips/hardware-emulation">more info</a>)</li>
-          </ul>
-        </li>
-        <li>Added viewing of live detailed network usage of an app in DDMS. (<a
-    href="http://tools.android.com/recent/detailednetworkusageinddms">more info</a>)</li>
-        <li>ProGuard
-          <ul>
-            <li>Updated the bundled ProGuard tool to version 4.7. In addition to many new features,
-this update fixes the {@code Conversion to Dalvik format failed with error 1} error some users have
-experienced.</li>
-            <li>Updated the default {@code proguard.cfg} file with better default flags for
-              Android.</li>
-            <li>Split the ProGuard configuration file has been in half, with project specific flags
-kept in project and the generic Android flags distributed (and updated) with the tools
-themselves.</li>
-          </ul>
-        </li>
-        <li>Build
-          <ul>
-            <li>Added a feature that allows you to run some code only in debug mode. Builds now
-generate a class called {@code BuildConfig} containing a {@code DEBUG} constant that is
-automatically set according to your build type. You can check the ({@code BuildConfig.DEBUG})
-constant in your code to run debug-only functions.</li>
-            <li>Fixed issue when a project and its libraries include the same jar file in their libs
-              folder. (<a href="http://tools.android.com/recent/dealingwithdependenciesinandroidprojects">more
-              info</a>)</li>
-            <li>Added support for custom views with custom attributes in libraries. Layouts using
-custom attributes must use the namespace URI {@code http://schemas.android.com/apk/res-auto} instead
-of the URI that includes the app package name. This URI is replaced with the app specific one at
-build time.</li>
-          </ul>
-        </li>
-        <li>Lint
-          <ul>
-            <li>Updated Lint to check Android application code. Lint rules which previously
-performed pattern based searches in the application code (such as the unused resource check) have
-been rewritten to use the more accurate Java-style parse trees.</li>
-            <li>Added support for checking library projects. This change means that rules such as
-the unused resource check properly handle resources declared in a library project and referenced in
-a downstream project.</li>
-            <li>Added ability to suppress Lint warnings in Java code with the new
-{@code @SuppressLint} annotation, and in XML files with the new tools: namespace and
-ignore attribute. (<a
-    href="http://tools.android.com/recent/ignoringlintwarnings">more info</a>)</li>
-            <li>New Lint checks:
-              <ul>
-                <li>Added check for Android API calls that require a version of Android higher than
-                  the minimum supported version. You can use the new {@code @TargetApi} annotation
-                  to suppress warnings when the code is wrapped in a system version condition.
-                  (<a href="http://tools.android.com/recent/lintapicheck">more info</a>)</li>
-                <li>Added over 20 new Lint rules, including checks for
-                  <a href="http://tools.android.com/recent/lintperformancechecks">performance</a>,
-                  XML layouts, manifest and file handling.</li>
-              </ul>
-            </li>
-          </ul>
-        </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 Tools, Revision 16</a> <em>(December 2011)</em>
-  </p>
-
-  <div class="toggle-content-toggleme">
-    <p class="caution"><strong>Important:</strong> To download the new Android
-    4.0 system components from the Android SDK Manager, you must first update the
-    SDK tools to revision 14 or later and restart the Android SDK Manager. If you do not,
-    the Android 4.0 system components will not be available for download.</p>
-
-<dl>
-<dt>Dependencies:</dt>
-<dd>
-  <ul>
-    <li>Android SDK Platform-tools revision 9 or later.</li>
-    <li>If you are developing in Eclipse with ADT, note that this version of SDK Tools is designed for use
-    with ADT 16.0.0 and later. If you haven't already, we highly recommend updating your
-    <a href="{@docRoot}tools/sdk/eclipse-adt.html">ADT Plugin</a> to 16.0.0.</li>
-    <li>If you are developing outside Eclipse, you must have <a href="http://ant.apache.org/">Apache
-    Ant</a> 1.8 or later.</li>
-</ul>
-</dd>
-<dt>General notes:</dt>
-<dd>
-  <ul>
-    <li>Added Lint tools to detect common errors in Android projects.
-      (<a href="http://tools.android.com/recent/lint">more info</a>)</li>
-    <li>Added sensor emulation support, which allows the emulator to read sensor data from a
-      physical Android device.
-      (<a href="http://tools.android.com/recent/sensoremulation">more info</a>)</li>
-    <li>Added support for using a webcam to emulate a camera on Mac OS X.</li>
-  </ul>
-</dd>
-<dt>Bug fixes:</dt>
-<dd>
-  <ul>
-    <li>Snapshots now work for Android 4.0 system images.</li>
-    <li>Fixed several small issues for the build file.
-    (<a href="http://code.google.com/p/android/issues/detail?id=21023">Issue 21023</a>,
-    <a href="http://code.google.com/p/android/issues/detail?id=21267">Issue 21267</a>,
-    <a href="http://code.google.com/p/android/issues/detail?id=21465">Issue 21465</a>,
-    <a href="http://code.google.com/p/android/issues/detail?id=21525">Issue 21525</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 Tools, Revision 15</a> <em>(October 2011)</em>
-  </p>
-
-  <div class="toggle-content-toggleme">
-    <p class="caution"><strong>Important:</strong> To download the new Android
-    4.0 system components from the Android SDK Manager, you must first update the
-    SDK tools to revision 14 or later and restart the Android SDK Manager. If you do not,
-    the Android 4.0 system components will not be available for download.</p>
-  <dl>
-<dt>Dependencies:</dt>
-<dd>
-  <ul><li>Android SDK Platform-tools revision 9 or later.</li>
-  <li>If you are developing in Eclipse with ADT, note that this version of SDK Tools is designed for use
-  with ADT 15.0.0 and later. If you haven't already, we highly recommend updating your <a
-  href="{@docRoot}tools/sdk/eclipse-adt.html">ADT Plugin</a> to 15.0.0.</li>
-  <li>If you are developing outside Eclipse, you must have <a href="http://ant.apache.org/">Apache
-  Ant</a> 1.8 or later.</li>
-</ul>
-
-<dt>Bug fixes:</dt>
-<dd>
-  <ul>
-    <li>Fixed emulator crash on Linux due to improper webcam detection
-    (<a href="http://code.google.com/p/android/issues/detail?id=20952">Issue 20952</a>).</li>
-    <li>Fixed emulator issue when using the <code>-wipe-data</code> argument.</li>
-    <li>Fixed build issue when using RenderScript in projects that target API levels 11-13
-    (<a href="http://code.google.com/p/android/issues/detail?id=21006">Issue 21006</a>).</li>
-    <li>Fixed issue when creating an AVD using the GoogleTV addon
-    (<a href="http://code.google.com/p/android/issues/detail?id=20963">Issue 20963</a>).</li>
-    <li>Fixed <code>ant test</code>
-    (<a href="http://code.google.com/p/android/issues/detail?id=20979">Issue 20979</a>).</li>
-    <li>Fixed <code>android update project</code>
-    (<a href="http://code.google.com/p/android/issues/detail?id=20535">Issue 20535</a>).</li>
-    <li>Fixed scrolling issue in the new Logcat panel of DDMS.</li>
-    <li>Fixed issue with MonkeyRunner
-    (<a href="http://code.google.com/p/android/issues/detail?id=20964">Issue 20964</a>).</li>
-    <li>Fixed issues in the SDK Manager
-    (<a href="http://code.google.com/p/android/issues/detail?id=20939">Issue 20939</a>,
-    <a href="http://code.google.com/p/android/issues/detail?id=20607">Issue 20607</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 Tools, Revision 14</a> <em>(October 2011)</em>
-  </p>
-
-  <div class="toggle-content-toggleme">
-    <p class="note"><strong>Important:</strong> To download the new Android
-    4.0 system components from the Android SDK Manager, you must first update the
-    SDK tools to revision 14 and restart the Android SDK Manager. If you do not,
-    the Android 4.0 system components will not be available for download.</p>
-  <dl>
-<dt>Dependencies:</dt>
-<dd>
-  <ul><li>Android SDK Platform-tools revision 8 or later.</li>
-  <li>If you are developing in Eclipse with ADT, note that this version of SDK Tools is designed for use
-  with ADT 14.0.0 and later. If you haven't already, we highly recommend updating your <a
-  href="{@docRoot}tools/sdk/eclipse-adt.html">ADT Plugin</a> to 14.0.0.</li>
-  <li>If you are developing outside Eclipse, you must have <a href="http://ant.apache.org/">Apache
-  Ant</a> 1.8 or later.</li>
-</ul>
-
-<dt>General notes:</dt>
-<dd>
-  <ul>
-    <li>Added webcam support to Android 4.0 or later platforms to emulate rear-facing cameras when
-    one webcam is present, and to emulate both rear-facing and front-facing cameras when two
-    webcams are present. Webcam support is for Windows and Linux only.
-    Mac support will come in a later release.</li>
-    <li>Changed <code>default.properties</code> to <code>project.properties</code> and
-    <code>build.properties</code> to <code>ant.properties</code>. Any existing
-    projects that you build with Ant must be updated with the <code>android update project</code>
-    command.</li>
-    <li>Changed Ant <code>build.xml</code> file to support improvements to the
-    build system and added and modified Ant commands to support these changes. For a list of Ant
-commands, see the
-<a href="{@docRoot}tools/building/building-cmdline.html#AntReference">Ant Command
-Reference</a>.</li>
-    <li>Changed how library projects are built.</li>
-    <li>Improved incremental builds, so that resource compilation runs less frequently. Builds no
-    longer run when you edit strings or layouts (unless you add a new <code>id</code>) and no longer
-    run once for each library project.</li>
-    <li>Introduced a "PNG crunch cache" that only runs on modified PNG files, instead of
-    crunching all existing PNG files, all the time.</li>
-    <li>Revamped the SDK Manager UI (<a href="http://tools.android.com/recent/newsdkmanager">more
-info</a>).</li>
-  </ul>
-  <p>For a complete overview of the build system changes and what you need to do to support them,
-see the <a href="http://tools.android.com/recent/buildchangesinrevision14">Android Tools Project
-site</a>.</p>
-</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 Tools, Revision 13</a> <em>(September 2011)</em>
-  </p>
-
-  <div class="toggle-content-toggleme">
-  <dl>
-<dt>Dependencies:</dt>
-<dd>
-<p>If you are developing in Eclipse with ADT, note that this version of SDK Tools is designed for use with
-ADT 12.0.0 and later. If you haven't already, we highly recommend updating your <a
-href="{@docRoot}tools/sdk/eclipse-adt.html">ADT Plugin</a> to 12.0.0.</p>
-
-<p>If you are developing outside Eclipse, you must have <a href="http://ant.apache.org/">Apache
-Ant</a> 1.8 or later.</p>
-
-<dt>General notes:</dt>
-<dd>
-  <ul>
-    <li>Fix compilation issue in Ant (<code>dex</code> step) when paths have spaces.</li>
-    <li>Fix issue in emulator installation when paths have spaces.</li>
-    <li>Fix issue when AVD paths have spaces.</li>
-    <li>Fix rendering issue when using emulator scaling (<a href="http://code.google.com/p/android/issues/detail?id=18299">see more</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 Tools, Revision 12</a> <em>(July 2011)</em>
-  </p>
-
-  <div class="toggle-content-toggleme">
-  <dl>
-<dt>Dependencies:</dt>
-<dd>
-<p>If you are developing in Eclipse with ADT, note that this version of SDK Tools is designed for use with
-ADT 12.0.0 and later. If you haven't already, we highly recommend updating your <a
-href="{@docRoot}tools/sdk/eclipse-adt.html">ADT Plugin</a> to 12.0.0.</p>
-
-<p>If you are developing outside Eclipse, you must have <a href="http://ant.apache.org/">Apache
-Ant</a> 1.8 or later.</p>
-
-<dt>General notes:</dt>
-<dd>
-  <ul>
-    <li>The AVD manager and emulator can now use system images
-    compiled for ARM v7 and x86 CPUs.</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 Tools, Revision 11</a> <em>(May 2011)</em>
-  </p>
-
-  <div class="toggle-content-toggleme">
-  <dl>
-<dt>Dependencies:</dt>
-<dd>
-<p>If you are developing in Eclipse with ADT, note that this version of SDK Tools is designed for use with
-ADT 10.0.1 and later. If you haven't already, we highly recommend updating your <a
-href="{@docRoot}tools/sdk/eclipse-adt.html">ADT Plugin</a> to 10.0.1.</p>
-
-<p>If you are developing outside Eclipse, you must have <a href="http://ant.apache.org/">Apache
-Ant</a> 1.8 or later.</p>
-
-<dt>General notes:</dt>
-<dd>
-  <ul>
-    <li>Miscellaneous emulator changes to support Android 3.1.</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 Tools, Revision 10</a> <em>(February 2011)</em>
-  </p>
-
-  <div class="toggle-content-toggleme">
-  <dl>
-<dt>Dependencies:</dt>
-<dd>
-<p>If you are developing in Eclipse with ADT, note that this version of SDK Tools is
-designed for use with ADT 10.0.0 and later. After installing SDK Tools r10, we
-highly recommend updating your ADT Plugin to 10.0.0.</p>
-
-<p>If you are developing outside Eclipse, you must have <a href="http://ant.apache.org/">Apache
-Ant</a> 1.8 or later.</p>
-
-<dt>General notes:</dt>
-<dd>
-  <ul>
-    <li>The tools now automatically generate Java Programming Language source files (in the
-<code>gen</code> directory) and
-    bytecode (in the <code>res/raw</code> directory) from your native <code>.rs</code> files</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 Tools, Revision 9</a> <em>(January 2011)</em>
-  </p>
-
-  <div class="toggle-content-toggleme">
-  <dl>
-<dt>Dependencies:</dt>
-<dd>
-<p>If you are developing in Eclipse with ADT, note that this version of SDK Tools is
-designed for use with ADT 9.0.0 and later. After installing SDK Tools r9, we
-highly recommend updating your ADT Plugin to 9.0.0.</p>
-
-<p>If you are developing outside Eclipse, you must have <a href="http://ant.apache.org/">Apache
-Ant</a> 1.8 or later.</p>
-
-<dt>Upgrading to SDK Tools r9:</dt>
-<dd>
-<p>If you are upgrading to SDK Tools r9 from SDK Tools r7 or earlier, the default installed location
-for the <code>adb</code> tool has changed from <code>&lt;<em>SDK</em>&gt;/tools/adb</code> to
-<code>&lt;<em>SDK</em>&gt;/platform-tools/adb</code>. This means that you should
-add the new location to your PATH and modify any custom build scripts to
-reference the new location. Copying the <code>adb</code> executable from the new
-location to the old is not recommended, since subsequent updates to the SDK
-Tools will delete the file.</p>
-</dd>
-
-<dt>General notes:</dt>
-<dd>
-  <ul>
-    <li>The default ProGuard configuration, <code>proguard.cfg</code>, now ignores the following classes:
-      <ul>
-        <li>classes that extend {@link android.preference.Preference}</li>
-        <li>classes that extend {@link android.app.backup.BackupAgentHelper}</li>
-      </ul>
-    </li>
-    <li>Ant lib rules now allow you to override <code>java.encoding</code>, <code>java.source</code>,
-    and <code>java.target</code> properties.</li>
-    <li>The default encoding for the <code>javac</code> Ant task is now UTF-8.</li>
-    <li>The LogCat view in DDMS now properly displays UTF-8 characters.</li>
-    <li>The SDK Manager is more reliable on Windows. For details on the improvements, see the
-    <a href="http://tools.android.com/recent/sdkmanagerfixes">Android Tools Project Site</a>. </li>
-    <li>Early look at the new snapshot feature: To improve startup time for the emulator, you can
-enable snapshots for the system state. The emulator will then restore to the state when it last
-closed almost instantly. <strong>Note:</strong> The snapshot feature is still under active
-development and might not always perform as expected.</li>
-    <li>Fixed the missing JAR file error that prevented <code>draw9patch</code> from running.</li>
-    <li>Fixed the Windows launch scripts <code>hierarchyviewer</code> and <code>ddms</code> to support
-    the new location of <code>adb</code>.</li>
-    <li>Known issues with emulator performance: Because the Android emulator must simulate the ARM
-instruction set architecture on your computer, emulator performance is  slow. We're working hard to
-resolve the performance issues and it will improve in future releases.</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 Tools, Revision 8</a> <em>(December 2010)</em>
-  </p>
-
-  <div class="toggle-content-toggleme">
-<dl>
-<dt>Dependencies:</dt>
-<dd>
-<p>If you are developing in Eclipse with ADT, note that this version of SDK Tools is
-designed for use with ADT 8.0.0 and later. After installing SDK Tools r8, we
-highly recommend updating your ADT Plugin to 8.0.0.</p>
-
-<p>If you are developing outside Eclipse, you must have <a href="http://ant.apache.org/">Apache
-Ant</a> 1.8 or later.</p>
-
-<p>Also note that SDK Tools r8 requires a new SDK component called
-<em>Platform-tools</em>. The new Platform-tools component lets all SDK platforms
-(Android 2.1, Android 2.2, and so on) use the same (latest) version of build
-tools such as <code>adb</code>, <code>aapt</code>, <code>aidl</code>, and
-<code>dx</code>. To download the Platform-tools component, use the Android SDK
-Manager, as described in <a href="{@docRoot}sdk/exploring.html">Exploring the
-SDK</a></p>
-
-<dt>Upgrading from SDK Tools r7:</dt>
-<dd>
-<p>If you are upgrading to SDK Tools r8 from an earlier version, note that the
-the default installed location for the <code>adb</code> tool has changed from
-<code>&lt;<em>SDK</em>&gt;/tools/adb</code> to
-<code>&lt;<em>SDK</em>&gt;/platform-tools/adb</code>. This means that you should
-add the new location to your PATH and modify any custom build scripts to
-reference the new location. Copying the <code>adb</code> executable from the new
-location to the old is not recommended, since subsequent updates to the SDK
-Tools will delete the file.</p>
-</dd>
-
-<dt>General notes:</dt>
-<dd>
-<ul>
-<li>All SDK platforms now support Library Projects.</li>
-<li>Support for a true debug build. Developers no longer need to add the
-<code>android:debuggable</code> attribute to the
-<code>&lt;application&gt;</code> tag in the manifest &mdash; the build tools add
-the attribute automatically. In Eclipse/ADT, all incremental builds are assumed
-to be debug builds, so the tools insert <code>android:debuggable="true"</code>.
-When exporting a signed release build, the tools do not add the attribute. In
-Ant, a <code>ant debug</code> command automatically inserts the
-<code>android:debuggable="true"</code> attribute, while <code>ant release</code>
-does not. If <code>android:debuggable="true"</code> is manually set, then
-<code>ant release</code> will actually do a debug build, rather than a release
-build.</li>
-<li>Automatic ProGuard support in release builds. Developers generate a ProGuard
-configuration file using the <code>android</code> tool &mdash; the build tools
-then automatically run ProGuard against the project sources during the build.
-For more information, see the <a
-href="{@docRoot}tools/help/proguard.html">ProGuard</a>
-documentation. </li>
-<li>New overridable Ant javac properties: <code>java.encoding</code>,
-<code>java.source</code>, and <code>java.target</code> (default values are
-"ascii", "1.5", and "1.5", respectively).</li>
-<li>New UI for the HierarchyViewer tool.</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 Tools, Revision 7</a> <em>(September 2010)</em>
-  </p>
-
-  <div class="toggle-content-toggleme">
-<dl>
-<dt>Dependencies:</dt>
-<dd>
-<p>If you are developing in Eclipse with ADT, note that this version of SDK Tools is
-designed for use with ADT 0.9.8 and later. After installing SDK Tools r7, we
-highly recommend updating your ADT Plugin to 0.9.8.</p>
-</dd>
-
-<dt>General notes:</dt>
-<dd>
-<ul>
-<li>Added support for library projects that depend on other library projects.</li>
-<li>Adds support for aidl files in library projects.</li>
-<li>Adds support for extension targets in Ant build to perform tasks between the
-normal tasks: <code>-pre-build</code>, <code>-pre-compile</code>, and
-<code>-post-compile</code>.</li>
-<li>Adds support for "headless" SDK update. See <code>android -h update sdk</code>
-for more information.</li>
-<li>Fixes location control in DDMS to work in any locale not using '.' as a
-decimal point.</li>
-</ul>
-</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 Tools, Revision 6</a> <em>(May 2010)</em>
-  </p>
-
-  <div class="toggle-content-toggleme">
-<dl>
-<dt>Dependencies:</dt>
-<dd>
-<p>If you are developing in Eclipse with ADT, note that this version of SDK Tools is
-designed for use with ADT 0.9.7 and later. After installing SDK Tools r6, we
-highly recommend updating your ADT Plugin to 0.9.7.</p>
-</dd>
-
-<dt>Library projects:</dt>
-<dd>
-<p>The SDK Tools now support the use of <em>library projects</em> during
-development, a capability that lets you store shared Android application
-code and resources in a separate development project. You can then reference the
-library project from other Android projects and, at build time, the tools
-compile the shared code and resources as part of the dependent applications.
-More information about this feature is available in the <a
-href="{@docRoot}tools/projects/index.html#LibraryProjects">Creating and Managing Projects</a> document.</p>
-<p>If you are developing in Eclipse, <a href="eclipse-adt.html">ADT</a>
-provides the equivalent library project support.</p>
-</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 Tools, Revision 5</a> <em>(March 2010)</em>
-  </p>
-
-  <div class="toggle-content-toggleme">
-<dl>
-<dt>Dependencies:</dt>
-<dd><ul>
-<li>If you are developing in Eclipse with ADT, note that this version of SDK Tools is
-designed for use with ADT 0.9.6 and later. After installing SDK Tools r5, we
-highly recommend updating your ADT Plugin to 0.9.6.</li>
-<li>For Mac OS platforms, OS X 10.4.x (Tiger) is no longer
-officially supported. </li>
-</ul>
-</dd>
-
-<dt>SDK and AVD Manager:</dt>
-<dd>
-<ul>
-<li>Fixes SSL download for the standalone version of the SDK Updater.</li>
-<li>Fixes issue with 64-bit JVM on Windows.</li>
-<li>Adds support for platform samples components.</li>
-<li>Improves support for dependency between components.</li>
-<li>AVDs now sorted by API level.</li>
-<li>The AVD creation dialog now enforces a minimum SD card size of 9MB.</li>
-<li>Prevents deletion of running AVDs.</li>
-<li>Settings are now automatically saved, no need to click "Apply".</li>
-</ul>
-</dd>
-
-<dt>Emulator:</dt>
-<dd>
-<ul>
-<li>Emulator now requires SD card to be 9MB or more.</li>
-</ul>
-</dd>
-
-<dt>Layoutopt:</dt>
-<dd>
-<ul>
-<li>Fixes <code>layoutopt.bat</code> to execute correctly on Windows.</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 Tools, Revision 4</a> <em>(December 2009)</em>
-  </p>
-
-  <div class="toggle-content-toggleme">
-<dl>
-<dt>Dependencies:</dt>
-<dd><p>This version of SDK Tools is compatible with ADT 0.9.5 and later, but not
-compatible with earlier versions. If you are developing in Eclipse with ADT, you
-<strong>must</strong> update your ADT plugin to version 0.9.5 or higher if you
-install SDK Tools r4 in your SDK. </p></dd>
-
-<dt>General notes:</dt>
-<dd>
-<ul>
-<li>Launcher script now forces GDK_NATIVE_WINDOW=true (linux only), to fix a
-compatibility issue between GTK and SWT.</li>
-</ul>
-</dd>
-
-<dt>Android SDK and AVD Manager:</dt>
-<dd>
-<ul>
-<li>AVD Launch dialog now shows scale value.</li>
-<li>Fixes potential NPE in SDK Manager on AVD launch, for older AVD with no
-skin name specified.</li>
-<li>Fixes XML validation issue in on older Java versions.</li>
-<li>No longer forces the use of Java 1.5 on Mac OS X.</li>
-</ul>
-</dd>
-
-<dt>Emulator:</dt>
-<dd>
-<ul>
-<li>No longer limits the size of the system partition.</li>
-</ul>
-</dd>
-
-<dt>Ant build tools:</dt>
-<dd>
-<ul>
-<li>.apk packaging now properly ignores vi swap files as well as hidden files.</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 Tools, Revision 3</a> <em>(October 2009)</em>
-  </p>
-
-  <div class="toggle-content-toggleme">
-<dl>
-<dt>Dependencies:</dt>
-<dd><p>This version of SDK Tools is compatible with ADT 0.9.4 and later, but not
-compatible with earlier versions. If you are developing in Eclipse with ADT, you
-<strong>must</strong> update your ADT plugin to version 0.9.4 or higher if you
-install SDK Tools r3 in your SDK.</p>
-</dd>
-
-<dt>Android tool:</dt>
-<dd>
-<ul>
-<li>Adds new <code>android create test-project</code> and <code>android update
-test-project</code> commands to allow for greater flexibility in the location of the
-main and test projects.</li>
-</ul>
-</dd>
-
-<dt>DDMS:</dt>
-<dd>
-<ul>
-<li>Adds a button to dump HPROF file for running applications (app must be able
-to write to the sdcard).</li>
-<li>Button to start/stop profiling of a running application (app must be able to
-write to the sdcard). Upon stop, Traceview will automatically be launched to
-display the trace.</li>
-<li>Fixed DDMS, Traceview, and the AVD Mananger/SDK Updater to run on Mac OS X
-10.6.</li>
-<li>Fixed screenshot support for devices running 32-bit framebuffer.</li>
-</ul>
-</dd>
-
-<dt>Android SDK and AVD Manager:</dt>
-<dd>
-<ul>
-<li>Provides a new UI that lets you set options for controlling
-the emulator skin, screen size/density, and scale factor used when launching
-an AVD.</li>
-<li>Provides improved AVD creation UI, which lets you customize the hardware
-properties of your AVDs.</li>
-<li>Now enforces dependencies between platforms and tools components, and
-between SDK add-ons and platforms.</li>
-</ul>
-</dd>
-
-<dt>Layoutopt, a new tool for optimizing layouts:</dt>
-
-<dd><p>The SDK Tools r3 package includes <code>layoutopt</code>, a new command-line
-tool that helps you optimize your layout hierarchies. When run against your
-layout files, the tool analyzes their hierarchies and notifies you of
-inefficiencies and other potential issues. The tool also provides simple
-solutions for the issues it finds. For usage, see <a
-href="/tools/help/layoutopt.html">layoutopt</a>.</p>
-</dd>
-</dl>
-</div>
-</div>
diff --git a/docs/html/tools/studio/code-tools.jd b/docs/html/tools/studio/code-tools.jd
deleted file mode 100644
index 4033bfc..0000000
--- a/docs/html/tools/studio/code-tools.jd
+++ /dev/null
@@ -1,28 +0,0 @@
-page.title=Android Studio Code Tools
-
-@jd:body
-
-<p>
-  Android Studio provides a number of coding features to assist with writing and building your
-  app. These tools help you write code faster and improve quality.
-</p>
-
-<dl>
-  <dt><a href="{@docRoot}tools/debugging/improving-w-lint.html">Lint</a></dt>
-    <dd>The Lint tool is a static code analysis tool that checks your Android
-    project source files for potential bugs and optimization improvements.</dd>
-
-  <dt><a href="{@docRoot}tools/debugging/annotations.html">Code Annotations</a></dt>
-    <dd>Annotations help you improve code readability and improve code inspector output,
-      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.
-    </dd>
-
-</dl>
-
-
diff --git a/docs/html/tools/studio/eclipse-transition-guide.jd b/docs/html/tools/studio/eclipse-transition-guide.jd
deleted file mode 100644
index aaacbe3..0000000
--- a/docs/html/tools/studio/eclipse-transition-guide.jd
+++ /dev/null
@@ -1,773 +0,0 @@
-page.title=Transition Guide for Eclipse ADT
-@jd:body
-
-
-<div id="qv-wrapper">
-<div id="qv">
-
-<h2>In this document</h2>
-  <ol>
-    <li><a href="#project-structure">Project Structure</a></li>
-    <li><a href="#manifest-settings">Manifest Settings</a></li>
-    <li><a href="#dependencies">Dependencies</a></li>
-    <li><a href="#build-process">Gradle-based Build Process</a></li>
-    <li><a href="#debug-inspect">Debugging and Code Inspections</a></li>
-    <li><a href="#resource-optimization">Resource Optimization</a></li>
-    <li><a href="#signing">App Signing</a></li>
-    <li><a href="#support-lib">Android Support Repository and Google Play services Repository</a></li>
-    <li><a href="#app-package">App Packaging</a></li>
-    <li><a href="#software-updates">Software Updates </a></li>
-    <li><a href="#version-control">Version Control</a></li>
-    </ol>
-
-  <h2>See also</h2>
-  <ol>
-    <li><a class="external-link"
-      href="http://confluence.jetbrains.com/display/IntelliJIDEA/FAQ+on+Migrating+to+IntelliJ+IDEA">
-      IntelliJ FAQ on migrating to IntelliJ IDEA</a></li>
-    <li><a class="external-link"
-      href="https://confluence.jetbrains.com/display/IntelliJIDEA/IntelliJ+IDEA+for+Eclipse+Users">
-      IntelliJ IntelliJ for Eclipse Users</a></li>
-    <li><a href="{@docRoot}tools/studio/index.html">Android Studio Overview</a> </li>
-  </ol>
-
-</div>
-</div>
-
-
-<p>This document describes the differences between Eclipse ADT and Android Studio, including project
-  structure, build system, debugging, and application packaging. This guide is intended to help you
-  transition to using Android Studio as your development environment.</p>
-
-<h2 id="project-structure">Project Structure </h2>
-<p>Eclipse provides workspaces as a common area for grouping related projects, configurations, and
-settings. In Android Studio, each instance of Android Studio contains a top-level project with one
-or more app modules. Each app module folder contains the equivalent to an Eclipse
-project, the complete source sets for that module, including {@code src/main} and
-{@code src/androidTest} directories, resources, build file, and the Android manifest. In general,
-to update and build your app you modify the files under each module's
-{@code src/main} directory for source code updates, the <code>gradle.build</code> file for
-build specification, and the files under {@code src/androidTest} directory for test case creation. </p>
-
-<p>You can also customize the view of the project files in Android Studio to focus on specific
-aspects of your app development: </p>
-
-<ul>
-  <li><em>Packages</em> </li>
-  <li><em>Project Files</em> </li>
-  <li><em>Scratches</em> </li>
-  <li><em>Problems</em> </li>
-  <li><em>Production</em> </li>
-  <li><em>Tests</em> </li>
-</ul>
-
-
-<p>The following table shows the general mapping of the Eclipse ADT project structure and file
-locations to Android Studio.</p>
-
-<p class="table-caption" id="table-project-structure-mapping">
-  <strong>Table 1.</strong> Project structure mapping.</p>
-
-<table>
-    <tr>
-        <th scope="col">Eclipse ADT</th>
-        <th scope="col">Android Studio</th>
-    </tr>
-
-    <tr>
-        <td>Workspace </td>
-        <td>Project </td>
-    </tr>
-
-    <tr>
-        <td>Project </td>
-        <td>Module </td>
-    </tr>
-
-     <tr>
-        <td>Project-specific JRE </td>
-        <td>Module JDK </td>
-     </tr>
-
-     <tr>
-        <td>Classpath variable </td>
-        <td>Path variable</td>
-     </tr>
-
-     <tr>
-        <td>Project dependency</td>
-        <td>Module dependency</td>
-     </tr>
-
-     <tr>
-        <td>Library Module</td>
-        <td>Library </td>
-     </tr>
-
-     <tr>
-       <td><code>AndroidManifest.xml</code></td>
-       <td><code>app/src/main/AndroidManifest.xml</code> </td>
-     </tr>
-     <tr>
-       <td><code>assets/</code></td>
-       <td><code>app/src/main/assets</code> </td>
-     </tr>
-     <tr>
-       <td><code>res/</code></td>
-       <td><code>app/src/main/res/</code> </td>
-     </tr>
-     <tr>
-       <td><code>src/</code></td>
-       <td><code>app/src/main/java/ </code> </td>
-     </tr>
-     <tr>
-       <td><code>tests/src/</code></td>
-       <td><code>app/src/androidTest/java/</code> </td>
-     </tr>
-
-   </table>
-
-
-
-<p>Table 2 shows Eclipse ADT and Android Studio project views. </p>
-
-<p class="table-caption" id="table2">
-  <strong>Table 2.</strong> Comparing project views.</p>
-<table>
-  <tbody><tr>
-    <th>Eclipse ADT</th>
-    <th>Android Studio Project View</th>
-    <th>Android Studio Android View</th>
-  </tr>
-  <tr>
-    <td><img src="{@docRoot}images/tools/eclipse-notepad-pre-import--structure.png"/>  </td>
-    <td><img src="{@docRoot}images/tools/studio-import-project-structure-project.png"/>  </td>
-    <td><img src="{@docRoot}images/tools/studio-import-project-structure-android.png"/>  </td>
-  </tr>
- </tbody>
-</table>
-
-
-<p class="note"><strong>Note:</strong> Multiple instances of Android Studio can be used to develop
-independent projects. </p>
-
-
-
-
-<h2 id="manifest-settings">Manifest Settings</h2>
-<p>Android Studio and <a href="http://www.gradle.org">Gradle</a>-based builds support
-<a href="{@docRoot}tools/building/configuring-gradle.html#workBuildVariants"> build variants</a>,
-which are combinations of <code>productFlavor</code> and <code>buildTypes</code>, to customize
-your build outputs. To support these custom builds, several elements in the
-<code>AndroidManifest.xml</code> file are now properties in the <code>defaultConfig</code> and
-<code>productFlavors</code> blocks in the <code>build.gradle</code> file. The import process
-copies these manifest settings to the properties in the <code>build.gradle</code> file.
-These properties overwrite the settings in any other manifest files as shown in table 3. </p>
-
-<p class="table-caption" id="table-manifest-gradle-settings">
-  <strong>Table 3.</strong> Manifest and Gradle property settings.</p>
-<table>
-    <tr>
-        <th scope="col">Manifest Setting</th>
-        <th scope="col">build.gradle Setting</th>
-    </tr>
-    <tr>
-        <td><code>&lt;uses-sdk</code> <br>
-            <p><code>android:minSdkVersion</code></p>
-            <p><code>android:targetSdkVersion /&gt;</code></p>
-    </td>
-        <td> <br>
-           <p><code>minSdkVersion</code></p>
-           <p><code>targetSdkVersion</code></p> </td>
-    </tr>
-    <tr>
-        <td><code>&lt;manifest</code>
-            <p>package (Required in the default manifest file.) </p>
-            <p><code>android:versionCode</code></p>
-            <p><code>android:versionName /&gt;</code></p>
-    </td>
-        <td> <br>
-            <p><code>applicationId</code> (See
-            <a href="{@docRoot}tools/studio/index.html#app-id"> Application ID
-            for Package Identification</a>)</p>
-            <p><code>versionCode</code></p>
-            <p><code>versionName</code></p> </td>
-    </tr>
-
-   </table>
-
-
-<p>Although these settings may no longer appear in the default app manifest file, they are still
-valid manifest entries and may still appear in manifests from older projects, imported projects,
-dependencies, and libraries.</p>
-
-<p>The <code>package</code> element must still be specified in the manifest file. It is used in
-your source code to refer to your <code>R</code> class and to resolve any relative activity/service
-registrations. </p>
-
-<p class="note"><strong>Note:</strong> When multiple manifests are present in your app, for
-example a library manifest and a <code>src/main/</code> manifest, the build process combines
-the manifest settings into a single merged manifest based on the manifest priority and
-manifest merge settings. For more information about the manifest merge process and merge settings,
-see
-<a href="{@docRoot}tools/building/manifest-merger.html"> Manifest Merger</a>. </p>
-
-
-<h2>Application ID for package identification </h2>
-<p>With the Android build system, the <code>applicationId</code> attribute is used to
-uniquely identify application packages for publishing. The application ID is set in the
-<code>android</code> section of the <code>build.gradle</code> file. This field is populated in the
-build file as part of the migration process. </p>
-
-<pre>
-apply plugin: &#39;com.android.application&#39;
-
-android {
-   compileSdkVersion 19
-   buildToolsVersion "19.1"
-
-   defaultConfig {
-       <strong>applicationId "com.example.my.app"</strong>
-       minSdkVersion 15
-       targetSdkVersion 19
-       versionCode 1
-       versionName "1.0"
-   }
- ...
-</pre>
-
-<p class="note"><strong>Note:</strong> The <code>applicationId</code> is specified only in your
-<code>build.gradle</code> file, and not in the <code>AndroidManifest.xml</code> file.</p>
-
-<p><a href="{@docRoot}tools/building/configuring-gradle.html#workBuildVariants">Build variants</a>
-enable you to uniquely identify different
-packages for each product flavor and build type. The application ID in the build type setting can
-be added as a suffix to the ID specified for the product flavors. The following example adds the
-<code>.debug</code> suffix to the application ID of the <code>pro</code> and <code>free</code>
-product flavors: </p>
-
-<pre>
-productFlavors {
-     pro {
-          applicationId = &quot;com.example.my.pkg.pro&quot;
-     }
-     free {
-          applicationId = &quot;com.example.my.pkg.free&quot;
-     }
-}
-
-buildTypes {
-    debug {
-          applicationIdSuffix &quot;.debug&quot;
-    }
-}
-....
-</pre>
-
-
-
-<h2 id="dependencies">Dependencies</h2>
-<p>During the import process, Android Studio imports the current Eclipse ADT dependencies and
-downloads any project libraries as Android Studio modules. The dependency declarations are added to
-the <code>build.gradle</code> file. The declarations include a
-<a href="#scopes">dependency scope</a>, such as
-<code>compile</code>, to specify in which builds the dependency is included. </p>
-
-<p>The following example shows how to add an external library JAR dependency so it's included in
-each compile:</p>
-
-<pre>
-dependencies {
-    compile files(&#39;libs/*.jar&#39;)
-}
-
-android {
-    ...
-}
-</pre>
-
-<p class="note"><strong>Note:</strong> Android Studio supports the Android ARchive (AAR) format
-for the distribution of Android library projects as dependencies. For more information, see
-<a href="{@docRoot}tools/building/configuring-gradle.html">Configuring Gradle Builds</a>. </p>
-
-
-<p>The import process replaces any well-known source libraries, binary libraries, and JAR files
-that have known Maven coordinates with Maven dependencies, so you no longer need to
-maintain these dependencies manually. </p>
-
-<p>Android Studio enables access to Maven, JCenter, and Ivy repositories with the
-<code>repositories</code> block in the <code>build.gradle</code> as a shortcut to specifying
-the URL of the repository.
-
-<p>If there are required repositories not declared in the <code>build.gradle</code> file, first add
-the repository to the <code>repositories</code> block, and then declare the dependencies in a way
-that Maven, JCenter, or Ivy declare their artifacts. The following example shows how to add the
-Maven repository with the guava 11.0.2 dependency using the <code>mavenCentral()</code> property: </p>
-
-<pre>
-repositories {
-    mavenCentral()
-}
-
-android {
-    ...
-}
-
-dependencies {
-    compile &#39;com.google.guava:guava:11.0.2&#39;
-    instrumentationtestCompile &#39;com.squareup.fast-android:1:0.4&#39;
-}
-
-</pre>
-
-<p>The Android Studio project created during the import process can also re-use any
-dependencies on other components. These components can be external binary packages or other
-<a href="http://www.gradle.org">Gradle</a> projects. If a dependency has dependencies of its own,
-those dependencies are also included in the new Android Studio project. </p>
-
-
-<p class="note"><strong>Note:</strong> If there were references to Eclipse ADT workspace library
-files in the <code>project.properties</code> or <code>.classpath</code> files
-that were not imported from the Eclipse project, you can now add dependencies to these library files
-in the <code>build.gradle</code> file. For more information, see
-<a href="{@docRoot}tools/building/configuring-gradle.html">Configuring Gradle Builds</a>. </p>
-
-
-<h3 id="scopes">Dependency and compilation scopes </h3>
-<p>Android Studio supports compilation scopes to customize which dependencies get
-included in each build, for example assigning different dependencies to different
-<a href="{@docRoot}tools/building/configuring-gradle.html#workBuildVariants"> build variants</a>.</p>
-
-<p>This list shows the Android Studio scope names and definitions: </p>
-
-<ul>
- <li>compile - <code>compile</code> </li>
- <li>run time - <code>package</code></li>
- <li>testCompile - <code>AndroidTestCompile</code></li>
- <li>testRuntime - <code>AndroidTestRunPackage</code></li>
- <li>buildTypeCompile - <code>buildTypeCompile</code> </li>
- <li>productFlavorCompile - <code>productFlavorCompile</code> </li>
-</ul>
-
-<p class="note"><strong>Note:</strong> Dependencies for library projects must be added with the
-<code>compile</code> scope. </p>
-
-
-<p>With the <a href="http://www.gradle.org">Gradle</a>-based DSL, you can also add custom
-dependency scopes, such as <code>betaCompile file('libs/protobug.jar')</code> to define a beta
-build dependency. </p>
-
-<p>The scope and compilation configuration in the build file determine the
-components compiled into the app, added to the compilation classpath, and packaged in the final
-APK file. Based on the dependency and compilation scope, different compilation configurations
-can be specified to include the dependencies and classpaths, for example: </p>
-
-<ul>
-<li><code>compile</code> - for the main application. </li>
-<li><code>androidTestCompile</code> - for the test application. </li>
-<li><code>debugCompile</code> - for the debug buildType application.</li>
-<li><code>releaseCompile</code> - for the release buildType application. </li>
-</ul>
-
-<p class="note"><strong>Note:</strong> Because it’s not possible to build an APK that does not
-have an associated <code>buildType</code>, the APK built from your app is always configured with
-at least two dependency and compile configurations: <code>compile</code> and
-<code>debugCompile</code>. </p>
-
-<p>Unlike Eclipse ADT, by default Android Studio does not compile your code when there are changes.
-Use the <strong>File &gt; Settings &gt; Build, Execution, Deployment Compiler</strong> option
-to enable automatic compilation. </p>
-
-
-
-<h2 id="build-process">Gradle-based Build Process </h2>
-<p>Android Studio imports the Eclipse ADT Ant-based
-build tasks and converts the tasks to <a href="http://www.gradle.org">Gradle</a>-based build tasks.
-These new build tasks include the
-main <code>assemble</code> task and at least two outputs based on the default build types:
-a <code>debug</code> APK and a
-<code>release</code> APK. Each of these build tasks has its own Android build system anchor task
-to facilitate building them independently: </p>
-<ul>
-  <li><code>assemble</code></li>
-  <li><code>assembleDebug</code></li>
-  <li><code>assembleRelease</code></li>
-</ul>
-
-<p>In Android Studio, you can view all the supported build tasks in the
-<em>Gradle</em> project tab. </p>
-
-<p>With the <a href="http://www.gradle.org">Gradle</a>-based build system, Android Studio uses a
-<a href="http://www.gradle.org">Gradle</a> wrapper to fully integrate the
-Android Plugin for Gradle. The Android Plugin for Gradle also
-runs independent of Android Studio. This means that with Android Studio build system your build
-output is always the same, whether you build your Android apps from Android Studio, from the
-command line on your machine, or on machines where Android Studio is not installed (such as
-continuous integration servers). </p>
-
-<p>Unlike Eclipse ADT with dependent plugin and build updates, the <code>build.gradle</code>
-files allow you to customize the build settings for each Android Studio module and build variant,
-so the build versions can be set independently, and are not dependent on the Android Studio
-or build tools versions. This makes it easy to maintain and build legacy apps along with your
-current app, using build variants to generate different APKs from the same app modules, but
-built with different build versions and build chains. </p>
-
-<p>For more details about the Android Studio build system, see
-<a href="{@docRoot}sdk/installing/studio-build.html">Build System Overview</a>.</p>
-
-<h3>Using the Android Studio build system's declarative logic </h3>
-<p>In contrast with the XML statements in Ant build files, the Android build system and
-<a href="http://www.gradle.org">Gradle</a> DSL provide a declarative build language so you can
-easily extend the Gradle-based build process beyond the typical XML build tasks. For example,
-this build file shows how to define a custom function to inject a dynamic <code>versionCode</code>
-in build outputs: </p>
-
-<pre>
-def getVersionCode) {
-      def code = …
-      return code
-}
-
-android {
-    defaultConfig {
-        versionCode getVersionCode()
-              …
-    }
-}
-</pre>
-
-<p>This example shows how to append <em>debug</em> to your package and version names used in the
-<code>debug</code> build variant of your app: </p>
-
-<pre>
-android {
-    buildTypes {
-        debug {
-            packageNameSuffix ‘.debug’
-            versionNameSuffix ‘-DEBUG’
-              }
-            beta {
-                   …
-            }
-        }
-}
-</pre>
-
-
-<p>You can also use the declarative DSL in the Android build system to generate custom build
-versions, for example a debuggable version of your release APK. This examples adds the
-<code>debuggable true</code> property to the <code>release</code> build type in the
-<code>build.gradle</code> file to build an identical debuggable version of the release package.  </p>
-
-<pre>
-android {
-    buildTypes {
-        debugRelease.initWith(buildTypes.release)
-        debugRelease {
-            debuggable true
-            packageNameSuffix &#39;.debugrelease&#39;
-            signingConfig signingConfigs.debug
-        }
-
-    }
-    sourceSets.debugRelease.setRoot(&#39;src/release&#39;)
-}
-</pre>
-
-
-
-
-
-
-<h2 id="debug-inspect">Debugging and Code Inspections</h2>
-<p>Using code inspection tools such as <a href="{@docRoot}tools/help/lint.html">lint</a> is a
-standard part of Android development. Android Studio extends
-<a href="{@docRoot}tools/help/lint.html">lint</a> support with additional
-<a href="{@docRoot}tools/help/lint.html">lint</a> checks and supports Android
-<a href="{@docRoot}tools/debugging/annotations.html">annotations</a> that
-allow you to help detect more subtle code problems, such as null pointer exceptions and resource
-type conflicts. Annotations are added as metadata tags that you attach to variables, parameters,
-and return values to inspect method return values, passed parameters, and local variables and
-fields.  </p>
-
-<p>For more information on enabling <a href="{@docRoot}tools/help/lint.html">lint</a> inspections
-and running <a href="{@docRoot}tools/help/lint.html">lint</a>,
-see <a href="{@docRoot}tools/debugging/improving-w-lint.html">Improving Your Code with lint</a>.
-For more information about using annotations, see
-<a href="{@docRoot}tools/debugging/annotations.html#annotations">Improving your Code with
-Annotations</a>. </p>
-
-<p>In addition to code inspection, Android Studio provides an integrated
-<a href="{@docRoot}tools/studio/index.html#mem-cpu">memory and CPU monitor</a> view so you
-can more easily monitor your app's performance and memory usage to track CPU usage, find
-deallocated objects, locate memory leaks, and track the amount of memory the connected device is
-using. </p>
-
-
-
-<h2 id="resource-optimization">Resource Optimization </h2>
-<p>After importing and building your app, Android Studio supports several
-<a href="http://www.gradle.org">Gradle</a>-based properties to help you minimize your app's
-resource utilization. </p>
-
-
-<h3>Resource shrinking</h3>
-<p>In Android Studio, resource shrinking enables the automatic removal of unused resources from
-your packaged app and also removes resources from library dependencies if the resources are not
-actually used by your app.</p>
-
-<p>Use the <code>shrinkResources</code> attribute in the <code>buildType</code> block in your
-<code>build.gradle</code> file to enable resource shrinking. For example, if your application is
-using <a href="{@docRoot}google/play-services/index.html">Google Play services</a>
-to access Google Drive functionality, and you are not currently using
-<a href="{@docRoot}google/play-services/plus.html">Google+ Sign In</a>, then
-this setting removes the various drawable assets for the <code>SignInButton</code> buttons. </p>
-
-<p class="note"><strong>Note:</strong> Resource shrinking works in conjunction with code shrinking
-tools, such as <a href="{@docRoot}tools/help/proguard.html">ProGuard</a>. </p>
-
-<p>To enable resource shrinking, update the <code>buildTypes</code> block in the
-<code>build.gradle</code> file to include <code>minifyEnabled true</code>,
-<code>shrinkResources true</code>, and <code>proguardFiles</code> settings as shown in the
-following example <a href="http://www.gradle.org">Gradle</a> build file.</p>
-
-<pre>
-android {
-    ...
-
-    buildTypes {
-        release {
-            minifyEnabled true
-            shrinkResources true
-            proguardFiles getDefaultProguardFile('proguard-android.txt'),
-            'proguard-rules.pro'
-        }
-    }
-}
-</pre>
-
-
-
-<h3>Filtering language resources</h3>
-<p>Use the <code>resConfig</code> attribute in your <code>build.gradle</code> file
-to filter the locale resources included in your packaged app. This filtering can be especially
-useful when library dependencies such as <code>appcompat-v7</code> and other libraries such as
-<code>google-play-services_lib</code> are included in your app. </p>
-
-<p>The following example limits the locale resources to three language settings: <code>en</code>,
-<code>de</code>, and <code>es</code>:</p>
-
-<pre>
-apply plugin: 'android'
-
-android {
-    compileSdkVersion 22
-    buildToolsVersion "22.0.1"
-
-    defaultConfig {
-        minSdkVersion 8
-        targetSdkVersion 22
-        versionCode 1
-        versionName "1.0"
-        resConfigs "en", "de", "es" //Define the included language resources.
-    }
-...
-
-</pre>
-
-
-
-<h4>Filtering bundled resources</h4>
-<p>You can also use the <code>resConfig</code> build setting to limit the bundled resources
-in any resource folder. For example, you could also add <code>resConfigs</code>
-settings for density folders, such as <code>mdpi</code> or <code>hdpi</code> to limit the drawable
-resources that are packaged in your <code>APK</code> file. This example limits the app's
-bundled resources to medium-density (MDPI) and high-density (HDPI) resources. </p>
-
-<pre>
-android {
-    defaultConfig {
-        ...
-        resConfigs "mdpi", "hdpi"
-    }
-}
-</pre>
-
-For more information about screen and resource densities, see
-<a href="{@docRoot}guide/practices/screens_support.html">Supporting Multiple Screens</a>
-and <a href="{@docRoot}training/multiscreen/screendensities.html">Supporting Different Densities</a>.
-
-
-<h3>Resource merging </h3>
-<p>With Android Studio, identical resources, such as copies of launcher and menu icons, may end up
-in different resource folders throughout your app. To reduce resource duplication and improve
-the performance of your app, Android Studio merges resources with an identical resource name, type,
-and qualifier into a single resource and passes the single, merged resource to the Android Asset
-Packaging Tool (AAPT) for distribution in the APK file. </p>
-
-<p>The resource merging process looks for identical resources in the following <code>/res/</code>
-folders: </p>
-<ul>
-  <li>AAR bundles of library project dependencies</li>
-  <li><code>src/main/</code> </li>
-  <li><code>src/<em>productFlavor</em>/</code> </li>
-  <li><code>src/<em>buildType</em>/</code> </li>
-</ul>
-
-<p>Identical resources are merged in the following low to high priority order: </p>
-<pre>
-dependencies --> src/main/ --> src/productFlavor/ --> src/buildType/
-</pre>
-
-<p>For example, if the <code>res/ic_menu.png</code> file is included in both the
-<code>src/main/res/</code> and <code>src/productFlavor/res/</code> folders, the resources are merged
-so only the file with the higher priority, in this case the <code>src/productFlavor/res/</code>
-file, is included in the APK file. </p>
-
-<p class="note"><strong>Note:</strong> Identical resources in the same source set are not merged
-and instead generate a resource merge error. This can happen if the <code>sourceSet</code> property
-in the <code>build.gradle</code> file is used to define multiple source sets, for example
-<code>src/main/res/</code> and <code>src/main/res2/</code>, and these folders contain identical
-resources. </p>
-
-
-
-
-<h2 id="signing">App Signing and ProGuard </h2>
-<p>Based on the imported Eclipse ADT app settings, Android Studio automatically sets up your app
-signing and maintains any ProGuard settings. </p>
-
-<h3>App Signing</h3>
-<p>If your app used a debug certificate in Eclipse ADT, Android Studio continues to reference that
-certificate. Otherwise, the <code>debug</code> configuration uses the Android Studio generated
-debug keystore, with a known password and a default key with a known password located in
-<code>$HOME/.android/debug.keystore</code>. The <code>debug</code> build type is set to use this
-debug <code>SigningConfig</code> automatically when you run or debug your project
-from Android Studio. </p>
-
-<p>In release mode, Android Studio applies the release certificate used in Eclipse ADT. If no
-release certificate was located during the import process, add the release signing configuration to
-the <code>build.gradle</code> file or use the <strong> Build > Generate Signed APK</strong> menu
-option to open the Generate Signed APK Wizard. For more information about signing your app, see
-<a href="{@docRoot}tools/publishing/app-signing.html">Signing Your Applications</a>. </p>
-
-
-<h3>ProGuard</h3>
-<p>If the <a href="{@docRoot}tools/help/proguard.html">ProGuard</a> option is specified in the
-<code>project.properties</code> file in the Eclipse ADT project, Android Studio imports the
-<a href="{@docRoot}tools/help/proguard.html">ProGuard</a> files and adds the
-<a href="{@docRoot}tools/help/proguard.html">ProGuard</a> settings to the
-<code>build.gradle</code> file. <a href="{@docRoot}tools/help/proguard.html">ProGuard</a> is
-supported through the <code>minifyEnabled</code> property as shown in this example. </p>
-
-<pre>
-android {
-    buildTypes {
-        release {
-            minifyEnabled true
-            proguardFile getDefaultProguardFile(&#39;proguard-android.txt&#39;)
-        }
-    }
-
-    productFlavors {
-        flavor1 {
-        }
-        flavor2 {
-            proguardFile &#39;some-other-rules.txt&#39;
-        }
-    }
-}
-
-</pre></p>
-
-
-
-
-<h2 id="support-lib">Android Support Repository and Google Play services Repository</h2>
-<p>While Eclipse ADT uses the Android <a href="{@docRoot}tools/support-library/index.html">Support
-Library</a> and Google Play services Library, Android Studio replaces these libraries during the
-import process with the Android Support Repository and Google Repository to maintain
-compatible functionality and support new Android features. Android Studio adds these dependencies
-as Maven dependencies using the known Maven coordinates, so these dependencies do not require
-manual updates.  </p>
-
-<p>In Eclipse, in order to use a
-<a href="{@docRoot}tools/support-library/index.html">Support Library</a>, you must modify your
-project's classpath dependencies within your development environment for each
-<a href="{@docRoot}tools/support-library/index.html">Support Library</a> you want to use. In
-Android Studio, you no longer need to copy library sources into your
-own projects, you can simply declare a dependency and the library is automatically downloaded and
-merged into your project. This includes automatically merging in resources, manifest entries,
-<a href="{@docRoot}tools/help/proguard.html">ProGuard</a> exclusion rules, and custom lint rules
-at build time. </p>
-
-<p>Android Studio also supports binary library Android ARchives (AARs). AARs are a library project's
-main output as a combination of compiled code (as a jar file and/or native .so files) and
-resources (manifest, res, assets). <p/>
-
-
-<h2 id="app-package">App Packaging</h2>
-<p>The Android build system introduces the use of the <code>applicationId</code> attribute to
-uniquely identify application packages for publishing. The application ID is set in the
-<code>android</code> section of the <code>build.gradle</code> file. </p>
-
-<p>The <code>applicationId</code> is specified only in your <code>build.gradle</code> file, and
-not in the
-<code>AndroidManifest.xml</code> file. The Gradle-based build system enables you
-to uniquely identify different packages for each build variant based on product flavors and build
-types. You can also add the <code>applicationIdSuffix</code> property to the build type in the
-<code>build.gradle</code> file to append an identifier, such as '.debug', to the  application ID
-generated for each product flavor. </p>
-
-
-
-<h2 id="software-updates">Software Updates</h2>
-<p>Android Studio provides several levels of update and maintenance to help you keep Android Studio
-up-to-date based on your code-level preference: </p>
-
-<ul>
-  <li><strong>Canary channel</strong>: Canary builds provide bleeding edge releases and are updated
-  about weekly. These builds do get tested, but are still subject to bugs, as these are
-  early releases. This is not recommended for production.</li>
-  <li><strong>Dev channel</strong>: Dev builds are canary builds that passed initial testing and
-  usage. They are updated roughly bi-weekly or monthly.</li>
-  <li><strong>Beta channel</strong>: Beta builds provide beta-quality releases for final testing
-  and feedback before a production release.</li>
-  <li><strong>Stable channel</strong>: Stable builds provide stable, production-ready release
-  versions.</li>
-</ul>
-
-
-
-<h2 id="version-control">Version Control </h2>
-<p>Eclipse ADT supports version control through the use of plugins, such as the EGit and Subversive
-plug-ins.  </p>
-
-<p>Android Studio supports a variety of version control systems (Git, GitHub, CVS, Mercurial,
-Subversion, and Google Cloud) so version control operations can continue from within Android
-Studio. </p>
-
-<p>After importing your Eclipse ADT app into Android Studio, use the
-Android Studio <em>VCS</em> menu options to enable VCS support for the desired version control
-system, create a repository, import the new files into version control, and perform other version
-control operations.  </p>
-
-<p class="note"><strong>Note:</strong> You can also use the
-<strong>File &gt; Setting &gt; Version Control</strong> menu option to setup and modify the version
-control settings. </p>
-
-<h3>Files to ignore </h3>
-<p>A number of Android Studio files are typically not added to version control as these are
-temporary files or files that get overwritten with each build. These files are listed in
-an exclusion file, such as <code>.gitignore</code>, for the project and each app module.
-Typically, the following files are excluded from version control:  </p>
-
-<ul>
-  <li>.gradle </li>
-  <li>/local.properties </li>
-  <li>/.idea/workspace.xml </li>
-  <li>/.idea/libraries </li>
-  <li>.DS_Store</li>
-  <li>/build </li>
-  <li>/captures </li>
-</ul>
diff --git a/docs/html/tools/studio/index.jd b/docs/html/tools/studio/index.jd
deleted file mode 100644
index b3ed82d..0000000
--- a/docs/html/tools/studio/index.jd
+++ /dev/null
@@ -1,396 +0,0 @@
-page.title=Android Studio Overview
-page.image=images/cards/card-android-studio-overview_16x9_2x.jpg
-page.metaDescription=The basics of working with Android Studio, from projects to build and performance.
-page.tags=studio,sdk,tools,firstapp
-@jd:body
-
-<div id="qv-wrapper">
-<div id="qv">
-
-    <h2>In this document</h2>
-    <ol>
-      <li><a href="#project-structure">Project Structure</a></li>
-      <li><a href="#build-system">Gradle Build System</a></li>
-      <li><a href="#debug-perf">Debug and Profile Tools</a></li>
-    </ol>
-
-
-<a class="button" href="{@docRoot}sdk/index.html" style="margin:15px">
-  Get Android Studio
-</a>
-
-</div>
-</div>
-
-
-<p>Android Studio is the official IDE for Android app development, based on
-<a class="external-link" href="https://www.jetbrains.com/idea/" target=
-"_blank">IntelliJ IDEA</a>. On top of IntelliJ's powerful code editor and
-developer tools, Android Studio offers even more features that enhance your
-productivity when building Android apps, such as:</p>
-
-
-<ul>
-  <li>A flexible Gradle-based build system</li>
-  <li>Build variants and multiple APK file generation</li>
-  <li>Code templates to help you build common app features</li>
-  <li>A rich layout editor with support for drag and drop theme editing</li>
-  <li>Lint tools to catch performance, usability, version compatibility, and other problems</li>
-  <li>Code shrinking with ProGuard and resource shrinking with Gradle</li>
-  <li>Built-in support for
-  <a href="http://developers.google.com/cloud/devtools/android_studio_templates/">Google Cloud Platform</a>,
-  making it easy to integrate Google Cloud Messaging and App Engine</li>
-</ul>
-
-<p>This page provides an introduction to basic Android Studio features. For
-more detailed guides to using Android Studio, start by browsing pages in the
-<a href="{@docRoot}tools/workflow/index.html">Workflow</a> section.</p>
-
-<p>For a summary of the latest changes, see the <a href=
-"{@docRoot}tools/revisions/studio.html">Android Studio Release Notes</a>.</p>
-
-
-
-<h2 id="project-structure">Project Structure</h2>
-
-<div class="figure" style="width:230px">
-<img src="{@docRoot}images/tools/studio/studio-project-files.png" width="230" />
-<p class="img-caption"><strong>Figure 1.</strong> The project files in Android
-view.</p>
-</div>
-
-<p>Each project in Android Studio contains one or more modules with source code
-files and resource files. Different types of modules include:</p>
-
-<ul>
-<li>Android app modules</li>
-<li>Test modules</li>
-<li>Library modules</li>
-<li>App Engine modules</li>
-</ul>
-
-<p>By default, Android Studio displays your project files in the
-<em>Android</em> project view, as shown in figure 1.
-This view is organized by modules to
-provide quick access to the key source files of your
-project.</p>
-
-<p>All the build files are visible at the top level
-under <strong>Gradle Scripts</strong> and each app module
-contains the following three elements:</p></p>
-<ul>
-  <li><b>manifests</b>: Manifest files.</li>
-  <li><b>java</b>: Source code files.</li>
-  <li><b>res</b>: Resource files.</li>
-</ul>
-
-<p>The Android project structure on disk differs
-from this flattened representation. To see the actual file structure of the
-project, select <strong>Project</strong> from the <strong>Project</strong>
-drop-down (in figure 1, it's showing as <strong>Android</strong>).</p>
-
-<p>You can also customize the view of the project files to focus on specific
-aspects of your app development. For example, selecting the
-<strong>Problems</strong> view of your project displays links to the source
-files containing any recognized coding and syntax errors, such as missing an
-XML element closing tag in a layout file.</p>
-
-<p>For more information, see
-<a class="external-link" href="http://confluence.jetbrains.com/display/IntelliJIDEA/Project+Organization">IntelliJ project organization</a>
-and <a href="{@docRoot}tools/projects/index.html">Managing Projects</a>.</p>
-
-
-<h2 id="build-system">Gradle Build System</h2>
-
-<p>Android Studio uses Gradle as the foundation of the build system, with
-more Android-specific capabilities provided by the <a
-href="{@docRoot}tools/revisions/gradle-plugin.html">Android Plugin for
-Gradle</a>. This build system
-runs as an integrated tool from the Android Studio menu and independently from
-the command line. You can use the features of the build system to:</p>
-
-<ul>
-    <li>Customize, configure, and extend the build process.</li>
-    <li>Create multiple APKs for your app with different features using the same project and
-    modules.</li>
-    <li>Reuse code and resources across source sets.</li>
-</ul>
-
-<p>The flexibility of Gradle enables you to achieve all of this without
-modifying your app's core source files. To build an Android Studio project, see
-<a href="{@docRoot}tools/building/building-studio.html">Building and Running
-from Android Studio</a>. To configure custom build settings in an Android
-Studio project, see <a href=
-"{@docRoot}tools/building/configuring-gradle.html">Configuring Gradle
-Builds</a>.</p>
-
-
-
-
-<h2 id="debug-perf">Debug and Profile Tools</h2>
-
-<p>Android Studio assists you in debugging and improving the
-performance of your code, including inline debugging and
-performance analysis tools.</p>
-
-
-<h3 id="inline-debug">Inline debugging</h3>
-
-<p>Use inline debugging to enhance your code walk-throughs in the debugger view
-with inline verification of references, expressions, and variable values.
-Inline debug information includes:</p>
-
-<ul>
- <li>Inline variable values</li>
- <li>Referring objects that reference a selected object </li>
- <li>Method return values</li>
- <li>Lambda and operator expressions</li>
- <li>Tool tip values</li>
-</ul>
-
-<p>To enable inline debugging, in the <em>Debug</em> window click the Settings icon
-<img src="{@docRoot}images/tools/studio-debug-settings-icon.png"/> and select the
-check box for <strong>Show Values In Editor</strong>.</p>
-
-<h3 id="mem-cpu">Memory and CPU monitor</h3>
-<p>Android Studio provides a memory and CPU monitor view so you can more easily monitor your
-app's performance and memory usage to track CPU usage, find deallocated objects, locate memory
-leaks, and track the amount of memory the connected device is using. With your app running on a
-device or emulator, click the <strong>Android</strong> tab in the lower left corner of the
-runtime window to launch the Android runtime window. Click the <strong>Memory</strong> or
-<strong>CPU</strong> tab. </p>
-
-<img src="{@docRoot}images/tools/studio-memory-monitor.png"
-srcset="{@docRoot}images/tools/studio-memory-monitor2x.png 2x" width"635" height="171" alt="" />
-    <p class="img-caption"><strong>Figure 2.</strong> Monitor memory and CPU usage.</p>
-
-<h4 id="heap-dump">Heap dump </h4>
-<p>When you're monitoring memory usage in Android Studio you can, at the same time, initiate
-garbage collection and dump the Java heap to a heap snapshot in an Android-specific HPROF binary
-format file. The HPROF viewer displays classes, instances of each class, and a reference tree to
-help you track memory usage and find memory leaks. </p>
-
-<img src="{@docRoot}images/tools/studio-hprof-viewer.png" alt="" />
-    <p class="img-caption"><strong>Figure 3.</strong> HPROF viewer with heap dump.</p>
-
-<p>To create a snapshot of the Android app heap memory, click the
-Dump Java Heap icon (<img src="{@docRoot}images/tools/studio-dump-heap-icon.png" style="vertical-align:bottom;margin:0;height:17px"/>)
-in the Memory Monitor. Android Studio creates the heap snapshot file with the filename
-<code>Snapshot-yyyy.mm.dd-hh.mm.ss.hprof</code>
-in the <em>Captures</em> tab. Double-click the heap snapshot file to open the HPROF viewer.</p>
-
-<p>To convert a heap dump to standard HPROF format in Android Studio, right-click a heap
-snapshot in the <em>Captures</em> view and select <strong>Export to standard .hprof</strong>. </p>
-
-
-
-<h4 id="alloc-tracker">Allocation tracker </h4>
-<p>Android Studio allows you to track memory allocation as it monitors memory use. Tracking memory
-allocation allows you to monitor where objects are being allocated when you perform certain actions.
-Knowing these allocations enables you to  adjust the method
-calls related to those actions to optimize your app's performance and memory use. </p>
-
-<img src="{@docRoot}images/tools/studio-allocation-tracker.png" alt="" />
-    <p class="img-caption"><strong>Figure 4.</strong> Allocation tracker.</p>
-
-<p>For information about tracking and analyzing allocations, see
-  <a href="{@docRoot}/tools/help/am-memory.html#tracking">Memory Monitor</a>.
-</p>
-
-
-<h3>Data file access</h3>
-<p>The Android SDK tools, such as <a href="{@docRoot}tools/help/systrace.html">Systrace</a>,
-<a href="{@docRoot}tools/help/logcat.html">logcat</a>, and
-<a href="{@docRoot}tools/help/traceview.html">Traceview</a>, generate performance and debugging
-data for detailed app analysis.</p>
-
-<p>To view the available generated data files, click <strong>Captures</strong> in the left
-corner of the runtime window. In the list of the generated files, double-click a file to view
-the data. Right-click any <code>.hprof</code> files to convert them to a standard
-<a href="{@docRoot}tools/help/hprof-conv.html"><code>.hprof</code> </a> file format.</p>
-
-
-<h3>Code inspections</h3>
-<p>In Android Studio, the configured <a href="{@docRoot}tools/help/lint.html"><code>lint</code></a>
-and other IDE inspections run automatically whenever you compile your program. In addition to the
-configured {@code lint} checks, additional
-<a class="external-link" href="https://www.jetbrains.com/idea/help/inspection-basics.html?search=inspection"
-target="_blank">IntelliJ code inspections</a> and annotation validation run to streamline code
-review.</p>
-
-
-<p>Android Studio enables several <code>lint</code> checks
-to ensure:
-<ul>
-  <li><code> Cipher.getInstance()</code> is used with safe values</li>
-  <li>In custom Views, the associated declare-styleable for the custom view uses the same
-  base name as the class name</li>
-  <li>Security check for fragment injection</li>
-  <li>Where ever property assignment no longer works as expected</li>
-  <li>Gradle plugin version is compatible with the SDK</li>
-  <li>Right to left validation </li>
-  <li>Required API version</li>
-  <li>many others</li>
-</ul>
-
-
-<p>Hovering over an inspection error displays the full issue explanation inline for easy error
-resolution. There is also a helpful hyperlink at the end of the error message for additional
-error information.</p>
-
-<p>With Android Studio, you can also run {@code lint} inspections for a specific build variant, or
-for all build variants. You can configure the {@code lint} inspections that run by adding a
-<code>lintOptions</code> property to the Android settings in the <code>build.gradle</code>
-file.  </p>
-
-<pre>
-android {
-    lintOptions {
-       // set to true to turn off analysis progress reporting by lint
-       quiet true
-       // if true, stop the gradle build if errors are found
-       abortOnError false
-       // if true, only report errors
-       ignoreWarnings true
-    }
-</pre>
-
-
-<p>You can also manage inspection profiles and configure inspections within Android Studio.
-Choose <strong>File &gt; Settings &gt;</strong>, expand the <strong>Editor</strong> options,
-and select <strong>Inspections</strong>.
-The <em>Inspection Configuration</em> page appears with the supported inspections.</p>
-<p><img src="{@docRoot}images/tools/studio-inspections-config.png" alt="" /> </p>
-<p class="img-caption"><strong>Figure 5.</strong> Configure inspections.</p>
-
-<p class="note"><strong>Note:</strong> To change the behavior of specific
-inspection notifications, change the inspection severity, for example from <em>warning</em>
-to <em>error</em>. </p>
-
-
-<p>To manually run inspections in Android Studio, choose <strong>Analyze &gt; Inspect Code</strong>.
-The <em>Inspections Scope</em> dialog appears so you can specify the desired inspection profile and scope.</p>
-
-
-<p>For more information, see
-<a href="{@docRoot}tools/debugging/improving-w-lint.html">Improving Your Code with {@code lint}</a>
-and <a href="{@docRoot}tools/help/lint.html">lint tool</a>.</p>
-
-
-
-<h3 id="annotations">Annotations in Android Studio</h3>
-<p>Android Studio supports annotations for variables, parameters, and return values to help you
-catch bugs, such as null pointer exceptions and resource type conflicts. The
-<a href="{@docRoot}tools/help/sdk-manager.html">Android SDK Manager</a> packages
-the {@link android.support.annotation Support-Annotations} library
-in the Android Support Repository for use with Android
-Studio. Android Studio validates the configured annotations during code inspection. </p>
-
-<p>To add annotations to your code in Android Studio, first add a dependency for the
-{@link android.support.annotation Support-Annotations} library:</p>
-<ol>
- <li>Select <strong>File &gt; Project Structure</strong>.</li>
- <li>In the <em>Project Structure</em> dialog, select the desired module, click the
- <strong>Dependencies</strong> tab. </li>
- <li>Click the <img src="{@docRoot}images/tools/studio-add-icon.png"/> icon to include a
- <strong>Library dependency</strong>.</li>
- <li>In the <em>Choose Library Dependency</em> dialog, select <code>support-annotations</code> and
- click <strong>Ok</strong>. </li>
-</ol>
-
-<p>The <code>build.gradle</code> file is updated with the <code>support-annotations</code>
-dependency.</p>
-
-<p>You can also manually add this dependency to your <code>build.gradle</code> file, as shown in
-the following example.  </p>
-
-<pre>
-dependencies {
-    compile fileTree(dir: 'libs', include: ['*.jar'])
-    compile 'com.android.support:appcompat-v7:22.0.0'
-    <strong>compile 'com.android.support:support-annotations:22.0.0'</strong>
-}
-</pre>
-
-
-
-<h4>Inferring nullability</h4>
-<p>A nullability analysis scans the contracts throughout the method hierarchies in your code to
-detect:</p>
-<ul>
- <li>Calling methods that can return null </li>
- <li>Methods that should not return null </li>
- <li>Variables, such as fields, local variables, and parameters, that can be null </li>
- <li>Variables, such as fields, local variables, and parameters, that cannot hold a null value </li>
-</ul>
-
-<p>The analysis then automatically inserts the appropriate null annotations in the detected
-locations. </p>
-
-<p>To run a nullability analysis in Android Studio,
-select the <strong>Analyze &gt; Infer Nullity</strong>
-menu option. Android Studio inserts the Android
-{@link android.support.annotation.Nullable @Nullable} and
-{@link android.support.annotation.NonNull @NonNull} annotations in detected locations
-in your code. After running a null analysis, it's good practice to verify the injected
-annotations.</p>
-
-<p class="note"><strong>Note:</strong> The nullability analysis may insert the IntelliJ
-<a class="external-link" href="https://www.jetbrains.com/idea/help/-nullable-and-notnull-annotations.html?search=annotations">
-<code>&#64;Nullable</code></a> and
-<a class="external-link" href="https://www.jetbrains.com/idea/help/-nullable-and-notnull-annotations.html?search=annotations">
-<code>&#64;NotNull</code></a> annotations instead of the Android null annotations. When running
-a null analysis, manually search and replace any IntelliJ annotations or include
-<code>com.intellij:annotations:12.0</code> as a compile dependency in your
-<code>build.gradle</code> file. This example includes the IntelliJ annotations 12.0 library as a
-dependency in the <code>build.gradle</code> file:
-
-<pre>
-dependencies {
-    compile fileTree(dir: 'libs', include: ['*.jar'])
-    compile 'com.android.support:appcompat-v7:22.0.0'
-    compile 'com.android.support:support-annotations:22.0.0'
-    <strong>compile 'com.intellij:annotations:12.0'</strong>
-}
-</pre>
-
-</p>
-
-
-<h4>Validating annotations</h4>
-<p>You can also manually add nullability, resource, and enumerated annotations throughout your code
-to perform validations for a variety of reference values, such as
-<a href="{@docRoot}reference/android/R.string.html"><code>R.string</code></a> resources,
-<a href="{@docRoot}guide/topics/resources/drawable-resource.htm"><code>Drawable</code></a>
-resources,
-<a href="{@docRoot}reference/android/graphics/Color.html"><code>Color</code></a> resources,
-and enumerated constants. </p>
-
-<p>Run <strong>Analyze &gt; Inspect Code</strong> to validate the configured annotations. </p>
-
-<p>For a complete list of the supported annotations, either use the auto-complete feature to display
-the available options for the <code>import android.support.annotation</code> statement or
-view the contents of the
-{@link android.support.annotation Support-Annotations}
-library. </p>
-
-<p>For more details about Android annotations, see
-<a href="{@docRoot}tools/debugging/annotations.html">Improving Code Inspection with Annotations</a>.
-
-<h3>Log messages</h3>
-<p>When you build and run your app with Android Studio, you can view adb and device log messages
-(logcat) by clicking <strong>Android</strong> at the bottom of the window.</p>
-
-<p>If you want to debug your app with the
-<a href="{@docRoot}tools/help/monitor.html">Android Debug Monitor</a>, you can launch it by
-clicking <strong>Monitor</strong>
-<img src="{@docRoot}images/tools/monitor-studio.png" style="vertical-align:bottom;margin:0;height:19px"/>
-in the toolbar. The Debug Monitor is where you can find the complete set of
-<a href="{@docRoot}tools/debugging/ddms.html">DDMS</a> tools for profiling your app,
-controlling device behaviors, and more. It also includes the Hierarchy Viewer tools to help
-<a href="{@docRoot}tools/debugging/debugging-ui.html"> optimize your layouts</a>.</p>
-
-
-
-
-
diff --git a/docs/html/tools/studio/studio-config.jd b/docs/html/tools/studio/studio-config.jd
deleted file mode 100644
index 88835d0..0000000
--- a/docs/html/tools/studio/studio-config.jd
+++ /dev/null
@@ -1,189 +0,0 @@
-page.title=Configuration
-page.metaDescription=Learn about the Android Studio configuration.
-page.tags=studio, configuration
-@jd:body
-
-<div id="qv-wrapper">
-<div id="qv">
-
-    <h2>In this document</h2>
-    <ol>
-      <li><a href="#sdk-mgr">SDK Manager</a></li>
-      <li><a href="#update-channel">Update Channels</a></li>
-      <li><a href="#proxy">Proxy Settings</a></li>
-    </ol>
-
-  <h2>See also</h2>
-  <ol>
-    <li><a href="{@docRoot}sdk/installing/index.html?pkg=studio">Installing Android Studio</a></li>
-    <li><a href="{@docRoot}tools/workflow/index.html">Workflow</a></li>
-    <li><a href="{@docRoot}sdk/installing/studio-features.html">Build System</a></li>
-  </ol>
-
-</div>
-</div>
-
-
-<p>Android Studio provides wizards and templates that verify your system
-requirements, such as the Java Development Kit (JDK) and available RAM, and configure default
-settings, such as an optimized default Android Virtual Device (AVD) emulation and updated system
-images. This document describes additional configuration settings you may want to use to
-customize your use of Android Studio. </p>
-
-<p>For specific documentation about emulator and device setup and use, see
-<a href="{@docRoot}tools/devices/index.html">Managing Virtual Devices</a>,
-<a href="{@docRoot}tools/device.html">Using Hardware Devices</a>, and
-<a href="{@docRoot}tools/extras/oem-usb.html">OEM USB Drivers</a>. </p>
-
-
-<h2 id="sdk-mgr">SDK Manager</h2>
-<p>After the initial Android Studio installation and setup, use the
-<a href="{@docRoot}tools/help/sdk-manager.html">SDK Manager</a> to verify and update the tools,
-platforms, packages, and other components used by your apps. You can also use the
-<strong>File</strong> &gt; <strong>Settings</strong> &gt;
-<strong>Appearance & Behavior</strong> &gt; <strong>System Settings</strong> &gt;
-<strong>Updates</strong> to configure the SDK Manager to automatically prompt whenever updates are
-available. </p>
-
-<p class="note"><strong>Note:</strong> You can also customize the <code>build.gradle</code> file
-so each app uses a specific build chain and compilation options. For more information see,
-<a href="{@docRoot}tools/building/configuring-gradle.html">Configuring Gradle Builds</a>.   </p>
-
-
-
-<h2 id="update-channel">Update channels</h2>
-<p>Android Studio provides four update channels to keep Android Studio up-to-date based on your
-code-level preference:
-<ul>
-  <li><strong>Canary channel</strong>: Canary builds provide bleeding edge releases, updated
-  about weekly. While these builds do get tested, they are still subject to bugs, as we want
-  people to see what's new as soon as possible. This is not recommended for production.</li>
-  <li><strong>Dev channel</strong>: Dev builds are hand-picked older canary builds that survived
-  the test of time. They are updated roughly bi-weekly or monthly.</li>
-  <li><strong>Beta channel</strong>: Beta builds are used for beta-quality releases before a
-  production release.</li>
-  <li><strong>Stable channel</strong>: Used for stable, production-ready versions.</li>
-</ul>
-</p>
-
-<p>By default, Android Studio uses the <em>Stable</em> channel. Use
-<strong>File > Settings > Appearance & Behavior System Settings > Updates</strong> to change your
-channel setting. </p>
-
-
-
-<h2 id="proxy">Proxy Settings</h2>
-<p>Proxies serve as intermediary connection points between HTTP clients and web servers that add
-security and privacy to internet connections.</p>
-
-<p>To support running Android Studio behind a firewall, set the proxy settings for the
-Android Studio IDE and the SDK Manager. Use the Android Studio IDE HTTP Proxy settings page to set
-the HTTP proxy settings for Android Studio. The SDK Manager has a separate HTTP Proxy settings
-page.</p>
-
-<p>When running the Android Plugin for Gradle from the command line or on machines where
-Android Studio is not installed, such as continuous integration servers, set the proxy settings
-in the Gradle build file.</p>
-
-<p class="note"><strong>Note:</strong> After the initial installation of the Android Studio bundle,
-Android Studio can run with internet access or off-line. However, Android Studio requires an
-internet connection for Setup Wizard synchronization, 3rd-party library access, access to remote
-repositories, Gradle initialization and synchronization, and Android Studio version updates.</p>
-
-
-<h3>Setting up the Android Studio Proxy</h3>
-<p>Android Studio supports HTTP proxy settings so you can run Android Studio behind a firewall or
-secure network. To set the HTTP proxy settings in Android Studio:</p>
-<ol>
- <li>From the main menu choose <strong>File &gt; Settings &gt; Appearance & Behavior -- System
- Settings -- HTTP Proxy</strong>.
-
-<li>In Android Studio, open the IDE Settings dialog.
-  <ul>
-     <li>On Windows and Linux, choose
-     <strong>File &gt; Settings &gt; IDE Setting -- HTTP Proxy</strong>. </li>
-     <li>On Mac, choose
-     <strong>Android Studio &gt; Preferences &gt; IDE Setting -- HTTP Proxy</strong>. </li>
-   </ul>
- The HTTP Proxy page appears.</li>
- <li>Select <strong>auto-detection</strong> to use an auto-configuration URL to configure the
- proxy settings or <strong>manual</strong> to enter each of the settings. For a detailed explanation
- of these settings, see
- <a href="https://www.jetbrains.com/idea/help/http-proxy.html">HTTP Proxy</a>. </li>
- <li>Click <strong>Apply</strong> to enable the proxy settings. </li>
-</ol>
-
-<h3>Android Plugin for Gradle HTTP proxy settings</h3>
-When running the Android Plugin from the command line or on machines where Android Studio is not
-installed, set the Android Plugin for Gradle proxy settings in the Gradle build file.</p>
-
-<p>For application-specific HTTP proxy settings, set the proxy settings in the
-{@code build.gradle} file as required for each application module.</p>
-<pre>
-apply plugin: 'com.android.application'
-
-android {
-    ...
-
-    defaultConfig {
-        ...
-        systemProp.http.proxyHost=proxy.company.com
-        systemProp.http.proxyPort=443
-        systemProp.http.proxyUser=userid
-        systemProp.http.proxyPassword=password
-        systemProp.http.auth.ntlm.domain=domain
-    }
-    ...
-}
-</pre>
-
-
-
-<p>For project-wide HTTP proxy settings, set the proxy settings in the
-<code>gradle/gradle.properties</code> file. </p>
-
-<pre>
-# Project-wide Gradle settings.
-...
-
-systemProp.http.proxyHost=proxy.company.com
-systemProp.http.proxyPort=443
-systemProp.http.proxyUser=username
-systemProp.http.proxyPassword=password
-systemProp.http.auth.ntlm.domain=domain
-
-systemProp.https.proxyHost=proxy.company.com
-systemProp.https.proxyPort=443
-systemProp.https.proxyUser=username
-systemProp.https.proxyPassword=password
-systemProp.https.auth.ntlm.domain=domain
-
-...
-</pre>
-
-
-<p>For information about using Gradle properties for proxy settings, see the
- <a href="http://www.gradle.org/docs/current/userguide/build_environment.html">Gradle User Guide</a>.</p>
-
-<p class="note"><strong>Note:</strong> When using Android Studio, the settings in the Android
-Studio IDE HTTP proxy settings page override the HTTP proxy settings in the
-<strong>gradle.properties</strong> file.</p>
-
-
-
-<h3>SDK Manager HTTP Proxy Settings </h3>
-<p>SDK Manager proxy settings enable proxy internet access for Android package and library
-updates from SDK Manager packages. </p>
-
-<p>To set the SDK Manager settings for proxy internet access, start the SDK Manager and open the
-SDK Manager page. </p>
-
-<ul>
-   <li>On Windows, select <strong>Tools &gt; Options</strong> from the menu bar. </li>
-   <li>On Mac and Linux, choose <strong>Tools &gt; Options</strong> from the system menu bar. </li>
- </ul>
-
-<p>The Android SDK Manager page appears. Enter the settings and click <strong>Apply</strong>. </p>
-
-
-
diff --git a/docs/html/tools/studio/studio-features.jd b/docs/html/tools/studio/studio-features.jd
deleted file mode 100644
index 080a124..0000000
--- a/docs/html/tools/studio/studio-features.jd
+++ /dev/null
@@ -1,340 +0,0 @@
-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">
-<div id="qv">
-
-    <h2>In this document</h2>
-    <ol>
-      <li><a href="#trans-editor">Translations Editor</a></li>
-      <li><a href="#git-samples">Android Code Samples on GitHub</a></li>
-      <li><a href="#template-support">Expanded Template and Form Factor Support</a></li>
-      <li><a href="#project-settings">Android Studio and Project Settings</a></li>
-      <li><a href="#finger-print">Fingerprint Support</a></li>
-      <li><a href="#dev-services">Developer Services</a></li>
-      <li><a href="#private-res">Public and Private Resources</a></li>
-      <li><a href="#support-apis">Editor Support for the Latest Android APIs</a></li>
-      <li><a href="#test-module">Test APK Module</a></li>
-    </ol>
-
-  <h2>See also</h2>
-  <ol>
-    <li><a href="{@docRoot}tools/workflow/index.html">Workflow</a></li>
-    <li><a href="{@docRoot}sdk/installing/studio-build.html">Build System</a></li>
-    <li><a href="{@docRoot}sdk/installing/studio-tips.html">Android Studio Tip & Tricks</a></li>
-  </ol>
-
-</div>
-</div>
-
-
-<p>If you're new to Android Studio or exploring recent updates, this
-page provides an introduction to some key Android Studio features.</p>
-
-<p>For specific Android Studio how-to documentation, see the pages in the <a href=
-"{@docRoot}tools/workflow/index.html">Workflow</a> section, such as
-<a href="{@docRoot}sdk/installing/create-project.html">Managing Projects from Android Studio</a>
-and
-<a href="{@docRoot}tools/building/building-studio.html">Building and Running from Android Studio</a>. </p>
-
-
-
-<h2 id="trans-editor">Translations Editor</h2>
-<p>If your application supports multiple languages, you need to properly manage your
-translated string resources. The Translations Editor lets you view and update all your string
-resources in one convenient place.</p>
-
-<p>
-Use the Translations Editor to view all your translated resources, modify translations, and add
-new locales. You can provide default values for your resources and mark resources as
-untranslatable. The Translations Editor also marks resources with missing translations in red,
-and provides a link to a page where you can upload resource files and order translation services.
-</p>
-
-<p>For more details on the Translations Editor, see
-<a href="{@docRoot}tools/help/translations-editor.html">Translations Editor</a>.</p>
-
-    <img src="{@docRoot}images/tools/studio-translations-editor.png" />
-    <p class="img-caption"><strong>Figure 1.</strong> Manage locales and strings in the
-    Translations Editor.</p>
-
-<h2 id="git-samples">Android Code Samples on GitHub</h2>
-<p>Clicking <strong>Import Samples</strong> from the <strong>File</strong> menu or <em>Welcome</em>
-page provides seamless access to Google code samples on GitHub.</p>
-    <p><img src="{@docRoot}images/tools/studio-samples-githubaccess.png" /></p>
-    <p class="img-caption"><strong>Figure 2.</strong> Get code samples from GitHub.</p>
-
-
-    <p><img src="{@docRoot}images/tools/studio-sample-in-editor.png" /></p>
-    <p class="img-caption"><strong>Figure 3.</strong> Imported code sample.</p>
-
-
-
-<h2 id="template-support">Expanded Template and Form Factor Support</h2>
-<p>Android Studio supports templates for Google Services and expands the available device
-types. </p>
-
-    <h4> Android Wear and TV support</h4>
-    <p>For easy cross-platform development, the Project Wizard provides templates for
-    creating your apps for Android Wear and TV. </p>
-    <p><img src="{@docRoot}images/tools/studio-tvwearsupport.png"  />
-
-      <p class="img-caption"><strong>Figure 4.</strong> Supported form factors.</p>
-    <p>During app creation, the Project Wizard also displays an API Level dialog to help you choose
-    the best <em>minSdkVersion</em> for your project.</p>
-
-
-    <h4> Google App Engine integration (Google Cloud Platform/Messaging)</h4>
-    <p>Quick cloud integration. Using Google App Engine to connect to the Google cloud
-    and create a cloud end-point is as easy as selecting <em>File > New Module > App Engine Java
-    Servlet Module</em> and specifying the module, package, and client names. </p>
-    <p><img src="{@docRoot}images/tools/studio-cloudmodule.png" /></p>
-    <p class="img-caption"><strong>Figure 5</strong> Google App Engine integration.</p>
-
-
-<h2 id="project-settings">Android Studio and Project Settings</h2>
-<p>Android Studio provides setting dialogs so you can manage the most important Android Studio and
-project settings from the <strong>File &gt; Project Structure</strong> and
-<strong>File &gt; Settings</strong> menus. For example, you can use the
-<strong>File &gt; Project Structure</strong> menu or
-the <code>build.gradle</code> file to update your <code>productFlavor</code> settings.
-Additional settings from the <strong>File &gt; Project Structure</strong> menus include:
-<ul>
- <li>SDK and JDK location </li>
- <li>SDK version </li>
- <li>Gradle and Android Plugin for Gradle versions </li>
- <li>Build tools version </li>
- <li>Multidex setting</li>
- <li><code>buildTypes</code> </li>
- <li>Dependencies </li>
-</ul>
-</p>
-
-<p>Use the <strong>File &gt; Settings</strong> menu to modify the Android Studio or project
-behavior, such a UI themes, system settings, and version control. </p>
-
-
-
-<h2 id="finger-print">Fingerprint Support</h2>
-<p>Android Studio provides the {@code finger} command, allowing you to simulate, and thus validate,
-fingerprint authentication for your app. After you set up your app to accept
-<a href="https://developer.android.com/preview/api-overview.html#authentication">fingerprint
-authentication</a>, your emulator or device should display the fingerprint authentication screen,
-as shown below. </p>
-
-    <p><img src="{@docRoot}images/tools/studio-fingerprint.png" /></p>
-    <p class="img-caption"><strong>Figure 6</strong> Fingerprint authentication.</p>
-
-<p>Open a terminal session, and telnet to the emulator. For example:</p>
-<pre>
-{@code telnet localhost 5554}
-</pre>
-
-<p>Enter the <code>finger</code> command to simulate finger touch and removal: </p>
-
-<ul>
-   <li><code>finger touch &lt;fingerprint-id&gt;</code> to simulate a finger touching the sensor</li>
-   <li><code>finger remove</code> to simulate finger removal </li>
-</ul>
-
-<p>Your app should respond as if a user touched, and then removed their finger from, the
-fingerprint sensor. </p>
-
-
-<h2 id="dev-services">Developer Services</h2>
-<p>Android Studio supports enabling these developer services in your app: </p>
-<ul>
-  <li>Ads using <a href="https://developers.google.com/admob/">AdMob</a></li>
-  <li>Analytics <a href="https://developers.google.com/analytics/">Google Analytics</a></li>
-  <li>Authentication using <a href="https://developers.google.com/identity/sign-in/android/">Google
-    Sign-in</a> </li>
-  <li>Notifications using <a href="https://developers.google.com/cloud-messaging/">Google
-    Cloud Messaging</a> </li>
-</ul>
-
-<p>Enabling a developer service adds the required dependencies and, when applicable, also modifies
-the related configuration files. To activate the service, you must perform
-service-specific updates, such as loading an ad in the <code>MainActivity</code> class for ad
-display.</p>
-
-<p>To enable an Android developer service, select the <code>File &gt; Project Structure</code>
-menu option and click a service under the <em>Developer Services</em> sub-menu. The service
-configuration page appears. In the service configuration page, click the service check box to
-enable the service and click <strong>OK</strong>. Android Studio updates your library dependencies
-for the selected service and, for Analytics, updates the <code>AndroidManifest.xml</code> and
-other tracker configuration files. You can enable multiple services within the same app. For more
-detail about starting the services, refer to each service's specific activation instructions. </p>
-
-
-
-<h2 id="private-res">Public and Private Resources</h2>
-<p>By default, Android Studio treats all library resources as public: A public library resource is
-available to library clients for use outside the library, and appears in code completion suggestions
-and other resource references. Android Studio also, however, supports the use of private library
-resources. A private library resource can only be used within the source library, and does not
-appear in code completion lists and other resource references. </p>
-
-<p>You cannot explicitly declare a library resource as private. Instead, if you declare any library
-resources as public, Android Studio assumes all the other library resources are private. </p>
-
-<p>An app treats all Android library resources as public unless you explicitly declare at least one
-resource in the library as public. Declaring one public resource causes your app to treat all other,
-undeclared resources in the library as private. </p>
-
-<p class="note"><strong>Note:</strong> Declaring public and private resources requires the
-<a href="{@docRoot}tools/building/plugin-for-gradle.html">Android Plugin for Gradle</a> version
-1.3 or higher. </p>
-
-
-<p>To declare a resource as public and set other undeclared resources as private, add a
-<code>&lt;public&gt;</code> declaration with the resource name and type in the resource file.
-This example shows the public declaration for the <code>mylib_app_name</code> string resource. </p>
-
-<pre>
-&lt;resources&gt;
-    &lt;public name="mylib_app_name" type="string"/&gt;
-&lt;/resources&gt;
-</pre>
-
-<p>For large numbers of declarations, we recommended that you place the public marker declarations
-in a separate file named <code>public.xml</code>. </p>
-
-<p>To help enforce private resource access, a <a href="{@docRoot}tools/help/lint.html">lint</a>
-warning appears when a client of a library references a private resource. Many Android libraries,
-such as the
-<a href="{@docRoot}tools/support-library/features.html#design">Design Support Library</a> and the
-<a href="{@docRoot}tools/support-library/features.html#v7-appcompat">v7 appcompat Library</a>,
-declare public resources to display only resources that developers can directly reference.
-</p>
-
-<p class="note"><strong>Note:</strong> If your app requires a private resource, copy the
-private resource from the library to the location in your app where it is needed. </p>
-
-<p>When the build system builds an Android Archive (AAR) file, it extracts the
-<code>&lt;public&gt;</code> resource declarations into a <code>public.txt</code> file, which is
-packaged inside the AAR file next to the <code>R.txt</code> file. The <code>public.txt</code> file
-contains a simple list of the declared public resources, describing their names and types. </p>
-
-<p>For a complete list of the available Android resource types, see
-<a href="http://developer.android.com/guide/topics/resources/available-resources.html">Resource
-Types</a></li> and
-<a href="http://developer.android.com/guide/topics/resources/more-resources.html">More Resource
-Types</a></li>. </p>
-
-
-
-<h2 id="support-apis">Editor Support for the Latest Android APIs</h2>
-<p>Android Studio supports the
-<a href="{@docRoot}design/material/index.html">Material Design</a></li> themes, widgets, and
-graphics, such as shadow layers and API version rendering (showing the layout across different
-UI versions). Also, the drawable XML tags and attributes, such as <code>&lt;ripple&gt;</code>
-and <code>&lt;animated-selector&gt;</code>, are supported.</p>
-
-
-
-<h2 id="test-module">Test APK Module</h2>
-<p>Android Studio supports adding a separate <code>test</code> module to your app so you can
-generate a test APK. This <code>test</code> module resides at the same level as your app and
-contains: the tests and instrumentation used to run the test APK on an Android device; an
-<code>Android Manifest.xml</code> file for test APK configuration settings; and, a
-<code>build.gradle</code> file for build settings.</p>
-
-<p>The <code>test</code> module cannot contain a <code>src/androidTest/</code> folder and does
-not support build variants. If you have different product flavors in your main application APK,
-create a different test module for each build variant.</p>
-
-
-<p>To create a test APK module:
-
-<ul>
-  <li>Use the <strong>File &gt; New &gt; Module</strong> menu option to create a
-    <code>test</code> module consisting of the following directories and files:
-    <ul>
-      <li><code>./test/</code> </li>
-      <li><code>./test/build.gradle</code> </li>
-      <li><code>./test/src/main/java/com/android/tests/basic/MainTest.java</code> </li>
-      <li><code>./test/src/main/AndroidManifest.xml</code> </li>
-    </ul>
-  </li>
-  <li>In the <code>build.gradle</code> file, add the required properties to the
-    <code>android</code> block.
-    <ul>
-      <li><code>targetProjectPath ':&lt;app name&gt;'</code> specifies the main application APK
-        to test. </li>
-      <li><code>targetVariant ':&lt;buildType&gt;'</code> specifies the target build type.</li>
-    </ul>
-    <p>Here is an example of <code>build.gradle</code> file property settings: </p>
-
-<pre>
-android {
-    compileSdkVersion 19
-    buildToolsVersion = ‘21.1.3’
-
-    targetProjectPath ':app'
-    targetVariant 'debug'
-}
-</pre>
-  </li>
-  <li>Define the instrumentation entries in the manifest file.
-    <p>Here is an example of <code>&lt;instrumentation&gt;</code> settings in the manifest file: </p>
-
-<pre>
-&lt;?xml version="1.0" encoding="utf-8"?&gt;
-&lt;manifest xmlns:android="http://schemas.android.com/apk/res/android"
-      package="com.android.tests.basic.test"&gt;
-
-      &lt;uses-sdk android:minSdkVersion="16" android:targetSdkVersion="16" /&gt;
-
-      &lt;application>
-            &gt;uses-library android:name="android.test.runner" /&gt;
-      &lt;/application>
-
-      &lt;instrumentation android:name="android.test.InstrumentationTestRunner"
-                       android:targetPackage="com.android.tests.basic"
-                       android:handleProfiling="false"
-                       android:functionalTest="false"
-                       android:label="Tests for com.android.tests.basic"/&gt;
-&lt;/manifest&lt;
-</pre>
-
-<p class="note"><strong>Note:</strong> The <code>targetPackage</code> in the instrumentation
-settings specifies the package of the test variant. </p>
-
-   </li>
-   <li>In the <code>build.gradle</code> file for the tested app, include additional artifacts
-     that the test APK requires, such as the <code> classes.jar</code> file, by adding the
-     {@code publishNonDefault} property to the {@code Android} block, and assigning that property
-     a value of {@code true}.
-     <p>Here is an example of the <code>build.gradle</code> file that includes additional
-     artifacts: </p></li>
-<pre>
-android {
-    compileSdkVersion 19
-    buildToolsVersion = ‘21.1.3’
-
-    publishNonDefault true
-}
-</pre>
- </li>
-</ul>
-
-
-<p>In the {@code test} module in this example, the {@code build.gradle} file specifies the
-properties for the project path and target build type variant. </p>
-
-    <p><img src="{@docRoot}images/tools/studio-test-module.png" /></p>
-    <p class="img-caption"><strong>Figure 3.</strong> Test module for APK testing.</p>
-
-
-<p class="note"><strong>Note:</strong> By default, the test module's build variant uses the
-<code>debug</code> build type. You can configure additional build types using the
-<code>testBuildType</code> property in the <code>defaultConfig</code> block in the main
-app's <code>build.gradle</code> file. </p>
-
-
diff --git a/docs/html/tools/studio/ui-tools.jd b/docs/html/tools/studio/ui-tools.jd
deleted file mode 100644
index 2d25de6..0000000
--- a/docs/html/tools/studio/ui-tools.jd
+++ /dev/null
@@ -1,32 +0,0 @@
-page.title=Android Studio User Interface Tools
-
-@jd:body
-
-<p>
-  Android Studio provides a number of user interface tools to assist you with creating layouts,
-  implementing style themes, and building graphic or text resources for your app.
-</p>
-
-<dl>
-
-   <dt><a href="{@docRoot}sdk/installing/studio-layout.html">Layout Editor</a></dt>
-        <dd>Drag and drop user interface elements to build layouts for your app.
-        </dd>
-
-   <dt><a href="{@docRoot}tools/help/theme-editor.html">Theme Editor</a></dt>
-        <dd>Build re-usable user interface styles for layouts and widgets in your app.
-        </dd>
-
-    <dt><a href="{@docRoot}tools/help/translations-editor.html">Translations Editor</a></dt>
-        <dd>View and update all your string resource translations in one convenient place.
-        </dd>
-
-    <dt><a href="{@docRoot}tools/help/vector-asset-studio.html">Vector Asset Studio</a></dt>
-        <dd>Add material icons and import Scalable Vector Graphic (SVG) files into your
-        Android Studio project as a drawable resource.</dd>
-
-    <dt><a href="{@docRoot}tools/help/image-asset-studio.html">Image Asset Studio</a></dt>
-      <dd>Generate custom icons for your Android applications from existing images,
-        clipart, or text.</dd>
-
-</dl>
diff --git a/docs/html/tools/testing/index.jd b/docs/html/tools/testing/index.jd
deleted file mode 100644
index a454891..0000000
--- a/docs/html/tools/testing/index.jd
+++ /dev/null
@@ -1,19 +0,0 @@
-page.title=Testing
-@jd:body
-
-<p>Android provides an integrated testing framework that helps you test all aspects
-of your app. The Android <a href="{@docRoot}sdk/installing/index.html">SDK</a> and
-<a href="{@docRoot}tools/testing-support-library/index.html">Testing Support Library</a> include
-tools and APIs for setting up and running test apps within an emulator or on the device you are
-targeting. You can build and execute tests whether you are working in Android Studio or working
-from the command line.</p>
-
-<p>To familiarize yourself with mobile app testing in Android, start by reading these resources:</p>
-<ul>
-  <li><a href="{@docRoot}tools/testing/testing_android.html">Testing Concepts</a>: Learn key
-    concepts related to Android app testing and get an overview of the testing tools and APIs
-    that Google provides.</li>
-  <li><a href="{@docRoot}training/testing/start/index.html">Getting Started with Testing</a>: Learn
-    how to build and run your tests, step-by-step, using the testing APIs and tools that
-    Google provides.</li>
-</ul>
diff --git a/docs/html/tools/testing/testing-tools.jd b/docs/html/tools/testing/testing-tools.jd
deleted file mode 100644
index c60199f7..0000000
--- a/docs/html/tools/testing/testing-tools.jd
+++ /dev/null
@@ -1,56 +0,0 @@
-page.title=Android Testing Tools
-@jd:body
-
-<div id="qv-wrapper">
-<div id="qv">
-  <h2>See also</h2>
-  <ol>
-    <li><a href="{@docRoot}training/testing/index.html">Best Practices for Testing</a></li>
-  </ol>
-</div>
-</div>
-
-  <p>
-    Testing is a critical software development activity because it helps you
-    improve the quality of your apps, ensure better user satisfaction, and
-    reduce overall development time spent on fixing defects.
-  </p>
-
-  <p>The following sections describe tools that help
-  you test your mobile apps for the Android platform.</a>
-
-<dl>
-  <dt><strong><a href="{@docRoot}tools/testing-support-library/index.html">Android
-  Testing Support Library</a></strong></dt>
-    <dd>This library provides a set of APIs that allow
-    you to quickly build and run test code for your apps, including JUnit 4 and functional user
-    interface (UI) tests. The Android Testing Support Library includes the following test automation
-    tools:
-
-  <ul>
-    <li><a href="{@docRoot}tools/testing-support-library/index.html#AndroidJUnitRunner">AndroidJUnitRunner</a>:
-      JUnit 4-compatible test runner for Android
-    </li>
-
-    <li><a href="{@docRoot}tools/testing-support-library/index.html#Espresso">Espresso</a>:
-    UI testing framework; suitable for functional UI testing within an app
-    </li>
-
-    <li><a href="{@docRoot}tools/testing-support-library/index.html#UIAutomator">UI Automator</a>:
-    UI testing framework; suitable for cross-app functional UI testing across system and installed apps
-    </li>
-  </ul>
-    </dd>
-
-    <dt><strong><a href="{@docRoot}tools/help/monkey.html">Monkey</a></strong></dt>
-    <dd>This tool runs on your emulator or device and generates pseudo-random streams of user
-events such as clicks, touches, or gestures, as well as a number of  system-level events. You can
-use the Monkey tool to stress-test applications that you are developing, in a random yet
-repeatable manner.
-     </dd>
-
-  <dt><strong><a href="{@docRoot}tools/help/monkeyrunner_concepts.html">monkeyrunner</a></strong></dt>
-    <dd>This testing system provides an API for writing programs that control an Android device or
-emulator from outside of Android code.</dd>
-
-</dl>
\ No newline at end of file
diff --git a/docs/html/tools/testing/testing_android.jd b/docs/html/tools/testing/testing_android.jd
deleted file mode 100755
index 5adb7e9..0000000
--- a/docs/html/tools/testing/testing_android.jd
+++ /dev/null
@@ -1,292 +0,0 @@
-page.title=Testing Concepts
-parent.title=Testing
-parent.link=index.html
-@jd:body
-
-<div id="qv-wrapper">
-  <div id="qv">
-  <h2>In this document</h2>
-  <ol>
-    <li><a href="#TestStructure">Test Structure</a></li>
-    <li><a href="#TestAPI">Testing APIs</a>
-      <ol>
-        <li>
-          <a href="#JUnit">JUnit</a>
-        </li>
-        <li>
-          <a href="#Instrumentation">Instrumentation</a>
-        </li>
-        <li>
-            <a href="#TestingSupportLibraryClasses">Android Testing Support Library APIs</a>
-        </li>
-        <li>
-          <a href="#AssertionClasses">Assertion classes</a>
-        </li>
-      </ol>
-    </li>
-    <li>
-        <a href="#Monkeys">Monkey and Monkeyrunner</a>
-    </li>
-  </ol>
-  <h2>See also</h2>
-  <ol>
-      <li><a href="{@docRoot}training/testing/start/index.html">Getting Started with Testing</a></li>
-  </ol>
-  </div>
-</div>
-
-<p>
-This document describes key concepts related to Android app testing. It assumes you have a basic
-knowledge of the <a href="http://junit.org/" class="external-link">JUnit</a> testing framework.</p>
-
-<h2 id="TestStructure">Test Structure</h2>
-<p>Android testing is based on JUnit. In general, a JUnit test is a method whose statements test a
-part of the application. You organize test methods into classes called
-<em>test cases</em>. You can further organize these classes into <em>test suites</em>.</p>
-<p>In JUnit, you build one or more test classes and use a test runner to
-execute them. In Android, you use <a href="{@docRoot}tools/studio/index.html">
-Android Studio </a>(or the <a href="{@docRoot}tools/building/plugin-for-gradle.html">
-Android Plugin for Gradle</a>) to build one or more test source files into an
-<em>Android test app</em>.</p>
-
-<p>From your testing environment, you can run your test in one of the following ways:</p>
-<ul>
-    <li><strong>On your local machine:</strong> Compile the test classes and
-        execute them locally on the Java Virtual Machine (JVM) using the JUnit test runner.</li>
-    <li><strong>On a device or emulator</strong>: Install the test app and the app
-under test to a physical device or emulator, and then execute your tests using an Android-specific
-test runner (such as <a href="{@docRoot}tools/testing-support-library/index.html#AndroidJUnitRunner">
-{@code AndroidJUnitRunner}</a>).</li>
-</ul>
-
-<p>The structure of your test code and the way you build and run the tests in Android Studio depend
-on the type of testing you are performing. The following table summarizes the common testing types
-for Android:</p>
-
-<table>
-<tr><th>Type</th>
-    <th>Subtype</th>
-    <th>Description</th></tr>
-
-<tr><td rowspan="3">Unit tests</td>
-    <tr><td>Local Unit Tests</td>
-        <td>Unit tests that run on your local machine only. These tests are compiled to run locally
-on the JVM to minimize execution time. Use this approach to run unit tests
-that have no dependencies on the Android framework or have dependencies that mock objects can
-satisfy.</td></tr>
-    <tr><td>Instrumented unit tests</td>
-        <td>Unit 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} of the
-app under test. Use this approach to run unit tests that have Android dependencies which mock
-objects cannot easily satisfy.</td></tr>
-
-<tr><td rowspan="3">Integration Tests</td>
-    <tr><td>Components within your app only</td>
-        <td>This type of test verifies that the target app behaves as expected when a user performs
-a specific action or enters a specific input in its activities. For example, it allows you to check
-that the target app returns the correct UI output in response to user interactions in the app’s
-activities. UI testing frameworks like
-<a href="{@docRoot}tools/testing-support-library/index.html#Espresso">Espresso</a> allow you to
-programmatically simulate user actions and test complex intra-app user interactions.</td></tr>
-    <tr><td>Cross-app Components</td>
-    <td>This type of test verifies the correct behavior of interactions between different user
-apps or between user apps and system apps. For example, you might want to test that your app behaves
-correctly when the user performs an action in the Android Settings menu. UI testing frameworks
-that support cross-app interactions, such as UI Automator, allow you to create tests for such
-scenarios.</td></tr>
-</table>
-
-<p>Based on the type of test you want to create, you need to configure the test code source
-location and the project dependencies in Android Studio as described in
-<a href="{@docRoot}training/testing/start/index.html">Getting Started with Testing</a>.</p>
-
-<h2 id="TestAPI">Testing APIs</h2>
-<p>The following list summarizes the common APIs related to app testing for Android.</p>
-
-<h3 id="JUnit">JUnit</h3>
-
-<p>You should write your unit or integration test class as a JUnit 4 test class.
-<a href="http://junit.org/" class="external-link">JUnit</a> is the most popular
-and widely-used unit testing framework for Java. The framework offers a convenient way to perform
-common setup, teardown, and assertion operations in your test.</p>
-
-<p>JUnit 4 allows you to write tests in a cleaner and more
-flexible way than its predecessor versions. Unlike the previous approach to Android unit testing
-based on JUnit 3, with JUnit 4, you do not need to extend the {@code junit.framework.TestCase}
-class. You also do not need to prepend the {@code test} keyword to your test method name, or
-use any classes in the {@code junit.framework} or {@code junit.extensions} package.</p>
-
-<p>A basic JUnit 4 test class is a Java class that contains one or more test methods.
-A test method begins with the {@code &#64;Test} annotation and contains the code to exercise
-and verify a single functionality (that is, a logical <em>unit</em>) in the component that you want
-to test.</p>
-<p>The following snippet shows an example JUnit 4 integration test that uses the Espresso
-APIs to perform a click action on a UI element, then checks to see if an expected string is
-displayed.</p>
-<pre>
-&#64;RunWith(AndroidJUnit4.class)
-&#64;LargeTest
-public class MainActivityInstrumentationTest {
-
-    &#64;Rule
-    public ActivityTestRule<MainActivity> mActivityRule = new ActivityTestRule<>(
-            MainActivity.class);
-
-    &#64;Test
-    public void sayHello(){
-        onView(withText("Say hello!")).perform(click());
-
-        onView(withId(R.id.textView)).check(matches(withText("Hello, World!")));
-    }
-}
-</pre>
-<p>In your JUnit 4 test class, you can call out sections in your test code for
-special processing by using the following annotations:</p>
-<ul>
-<li>
-{@code &#64;Before}: Use this annotation to specify a block of code that contains test setup
-operations. The test class invokes this code block before each test. You can have multiple
-{@code &#64;Before} methods but the order in which the test class calls these methods
-is not guaranteed.
-</li>
-<li>
-{@code &#64;After}: This annotation specifies a block of code that contains test
-tear-down operations. The test class calls this code block after every test method. You can define
-multiple {@code &#64;After} operations in your test code. Use this annotation to release any
-resources from memory.
-</li>
-<li>
-{@code &#64;Test}: Use this annotation to mark a test method. A single test class can contain
-multiple test methods, each prefixed with this annotation.
-</li>
-<li>
-{@code &#64;Rule}: Rules allow you to flexibly add or redefine the behavior of each test
-method in a reusable way. In Android testing, use this annotation together with
-one of the test rule classes that the Android Testing Support Library provides, such as
-<a href="{@docRoot}reference/android/support/test/rule/ActivityTestRule.html">
-{@code ActivityTestRule}</a> or
-<a href="{@docRoot}reference/android/support/test/rule/ServiceTestRule.html">
-{@code ServiceTestRule}</a>.
-</li>
-<li>
-{@code &#64;BeforeClass}: Use this annotation to specify static methods for each test class to
-invoke only once. This testing step is useful for expensive operations such as connecting to a
-database.
-</li>
-<li>
-{@code &#64;AfterClass}: Use this annotation to specify static methods for the test class to invoke
-only after all tests in the class have run. This testing step is useful for releasing any
-resources allocated in the {@code &#64;BeforeClass} block.
-</li>
-<li>
-{@code &#64;Test(timeout=&lt;milliseconds&gt;)}: Some annotations support the ability to pass in
-elements for which you can set values. For example, you can specify a timeout period for the test.
-If the test starts but does not complete within the given timeout period, it automatically fails.
-You must specify the timeout period in milliseconds, for example: {@code &#64;Test(timeout=5000)}.
-</li>
-</ul>
-<p>For more annotations, see the documentation for
-<a href="//junit.sourceforge.net/javadoc/org/junit/package-summary.html" class="external-link">
-JUnit annotations</a> and the
-<a href="{@docRoot}android/support/test/annotation/package-summary.html">
-Android-specific annotations</a>.
-<p>
-    You use the JUnit {@link junit.framework.Assert} class to verify the correctness of an object's
-    state. The assert methods compare values you expect from a test to the actual results and
-    throw an exception if the comparison fails. <a href="#AssertionClasses">
-    Assertion classes</a> describes these methods in more detail.
-</p>
-
-</p>
-<h3 id="Instrumentation">Instrumentation</h3>
-<p>
-    Android instrumentation is a set of control methods or hooks in the Android system. These
-    hooks control an Android component independently of its normal lifecycle. They also control how
-    Android loads applications.
-</p>
-<p>
-    The following diagram summarizes the testing framework:
-</p>
-<div style="width: 70%; margin-left:auto; margin-right:auto;">
-<a href="{@docRoot}images/testing/test_framework.png">
-    <img src="{@docRoot}images/testing/test_framework.png"
-        alt="The Android testing framework"/>
-</a>
-</div>
-<p>
-Normally, an Android component runs in a lifecycle that the system determines. For example, an
-{@link android.app.Activity} object's lifecycle starts when an {@link android.content.Intent}
-activates the {@link android.app.Activity}. The system calls the object's <code>onCreate()</code>
-method, on then the <code>onResume()</code> method. When the user starts another application, the
-system calls the <code>onPause()</code> method. If the {@link android.app.Activity} code calls
-the <code>finish()</code> method, the system calls the <code>onDestroy()</code> method. The Android
-framework API does not provide a way for your code to invoke these callback methods directly, but
-you can do so using instrumentation.
-</p>
-<p>
-The system runs all the components of an application in the same process. You can allow some
-components, such as content providers, to run in a separate process,
-but you can't force an application to run in the same process as another application that is
-already running.
-</p>
-<p>
-Instrumentation can load both a test package and the app under test into the
-same process. Since the application components and their tests are in the same process, your
-tests can invoke methods in the components, and modify and examine fields in the components.
-</p>
-<h3 id="TestingSupportLibraryClasses">Android Testing Support Library APIs</h3>
-<p>
-The <a href="{@docRoot}tools/testing-support-library/index.html">Android Testing Support Library</a>
-provides a set of APIs that allow you to quickly build and run test code for your apps, including
-JUnit 4 and functional user interface (UI) tests. The library includes the following
-instrumentation-based APIs that are useful when you want to automate your tests:</p>
-<ul>
-    <li><a href="{@docRoot}tools/testing-support-library/index.html#AndroidJUnitRunner">
-        {@code AndroidJUnitRunner}</a>:
-      JUnit 4-compatible test runner for Android
-    </li>
-
-    <li><a href="{@docRoot}tools/testing-support-library/index.html#Espresso">Espresso</a>:
-    UI testing framework; suitable for functional UI testing within an app
-    </li>
-
-    <li><a href="{@docRoot}tools/testing-support-library/index.html#UIAutomator">UI Automator</a>:
-    UI testing framework; suitable for cross-app functional UI testing across system and installed
-    apps</li>
-  </ul>
-
-<h3 id="AssertionClasses">Assertion classes</h3>
-<p>Because Android Testing Support Library APIs extend JUnit, you can use assertion methods to
-display the results of tests. An assertion method compares an actual value returned by a test to an
-expected value, and throws an AssertionException if the comparison test fails. Using assertions
-is more convenient than logging, and provides better test performance.
-</p>
-<p>To simplify your test development, we recommend that you use the
-<a href="https://github.com/hamcrest"
-class="external-link">Hamcrest</a> library, which lets you create more flexible tests using the
-Hamcrest matcher APIs.</p>
-
-<h2 id="Monkeys">Monkey and Monkeyrunner</h2>
-<p>
-    The SDK provides two tools for functional-level application testing:
-</p>
-    <ul>
-        <li>
-The <a href="{@docRoot}tools/help/monkey.html">UI/Application Exerciser Monkey</a>,
-            usually called "monkey", is a command-line tool that sends pseudo-random streams of
-            keystrokes, touches, and gestures to a device. You run it with the
-            <a href="{@docRoot}tools/help/adb.html">Android Debug Bridge</a> (adb) tool.
-            You use it to stress-test your application and report back errors that are encountered.
-            You can repeat a stream of events by running the tool each time with the same random
-            number seed.
-        </li>
-        <li>
-    The <a href="{@docRoot}tools/help/monkeyrunner_concepts.html">monkeyrunner</a> tool
-            is an API and execution environment for test programs written in Python. The API
-            includes functions for connecting to a device, installing and uninstalling packages,
-            taking screenshots, comparing two images, and running a test package against an
-            application. Using the API, you can write a wide range of large, powerful, and complex
-            tests. You run programs that use the API with the <code>monkeyrunner</code> command-line
-            tool.
-        </li>
-    </ul>
\ No newline at end of file
diff --git a/docs/html/tools/testing/testing_otheride.jd b/docs/html/tools/testing/testing_otheride.jd
deleted file mode 100755
index 4b2a6b1..0000000
--- a/docs/html/tools/testing/testing_otheride.jd
+++ /dev/null
@@ -1,461 +0,0 @@
-page.title=Testing from the Command-Line
-
-@jd:body
-
-<div id="qv-wrapper">
-    <div id="qv">
-        <h2>In this document</h2>
-            <ol>
-                <li>
-                    <a href="#RunTestsCommand">Running Tests</a>
-                    <ol>
-                        <li>
-                            <a href="#RunTestsGradle">Running unit tests with Gradle</a>
-                        </li>
-                        <li>
-                            <a href="#RunTestsDevice">Running tests with adb</a>
-                        </li>
-                    </ol>
-                </li>
-                <li>
-                    <a href="#AMSyntax">Using the Instrument Command</a>
-                    <ol>
-                        <li>
-                            <a href="#AMOptionsSyntax">Instrument options</a>
-                        </li>
-                        <li>
-                            <a href="#RunTestExamples">Instrument examples</a>
-                        </li>
-                    </ol>
-                </li>
-            </ol>
-        <h2>See Also</h2>
-            <ol>
-                <li>
-                    <a href="{@docRoot}tools/help/adb.html">Android Debug Bridge</a>
-                </li>
-            </ol>
-    </div>
-</div>
-<p>
-    This document describes how to create and run tests directly from the command line. This
-    document assumes that you already know how to create a Android application in your programming
-    environment.
-</p>
-
-<h2 id="RunTestsCommand">Running Tests</h2>
-<p>
-    You can run tests from the command-line, either with Gradle or with an
-    <a href="{@docRoot}tools/help/adb.html">
-    Android Debug Bridge (adb)</a> shell.
-</p>
-<h3 id="RunTestsGradle">Running unit tests with Gradle</h3>
-
-<p>The <a href="{@docRoot}tools/building/plugin-for-gradle.html">Android Plugin for Gradle</a>
-lets you run unit tests from your Gradle project via the command-line. For more information on
-how to build unit tests for your app, see
-<a href="{@docRoot}training/testing/unit-testing/index.html">Building Effective Unit Tests</a>.</p>
-
-<p>The table below summarizes how to run your unit tests with Gradle:</p>
-<table>
-    <tr>
-        <th>Unit Test Type</th>
-        <th>Command To Run</th>
-        <th>Test Result Location</th>
-    </tr>
-    <tr>
-        <td>Local unit test</td>
-        <td>Call the {@code test} task:
-<pre>
-./gradlew test
-</pre></td>
-        <td>
-HTML test result files:
-{@code &lt;path_to_your_project&gt;/app/build/reports/tests/} directory.
-<p>XML test result files:
-{@code &lt;path_to_your_project&gt;/app/build/test-results/} directory.
-</p></td>
-    </tr>
-    <tr>
-        <td>Instrumented unit test</td>
-        <td>Call the {@code connectedAndroidTest} (or {@code cAT}) task:
-<pre>
-./gradlew cAT
-</pre>
-        </td>
-        <td>
-HTML test result files:
-{@code &lt;path_to_your_project&gt;/app/build/outputs/reports/androidTests/connected/} directory.
-<p>XML test result files:
-{@code &lt;path_to_your_project&gt;/app/build/outputs/androidTest-results/connected/} directory.
-</p></td>
-    </tr>
-</table>
-
-<h3 id="RunTestsDevice">Running tests with ADB</h3>
-<p>
-    When you run tests from the command-line with
-    <a href="{@docRoot}tools/help/adb.html">
-    Android Debug Bridge (adb)</a>, you get more options for choosing the tests
-    to run than with any other method. You can select individual test methods, filter tests
-    according to their annotation, or specify testing options. Since the test run is controlled
-    entirely from a command-line, you can customize your testing with shell scripts in various ways.
-</p>
-<p>
-    To run a test from the command-line, you run <code>adb shell</code> to start a command-line
-    shell on your device or emulator, and then in the shell run the <code>am instrument</code>
-    command. You control <code>am</code> and your tests with command-line flags.
-</p>
-<p>
-    As a shortcut, you can start an <code>adb</code> shell, call <code>am instrument</code>, and
-    specify command-line flags all on one input line. The shell opens on the device or emulator,
-    runs your tests, produces output, and then returns to the command-line on your computer.
-</p>
-<p>
-    To run a test with <code>am instrument</code>:
-</p>
-<ol>
-    <li>
-        If necessary, rebuild your main application and test package.
-    </li>
-    <li>
-        Install your test package and main application Android package files
-        (<code>.apk</code> files) to your current Android device or emulator</li>
-    <li>
-        At the command-line, enter:
-<pre>
-$ adb shell am instrument -w &lt;test_package_name&gt;/&lt;runner_class&gt;
-</pre>
-        <p>
-            where <code>&lt;test_package_name&gt;</code> is the Android package name of your test
-            application, and <code>&lt;runner_class&gt;</code> is the name of the Android test
-            runner class you are using. The Android package name is the value of the
-            <code>package</code> attribute of the <code>manifest</code> element in the manifest file
-            (<code>AndroidManifest.xml</code>) of your test package. The Android test runner
-            class is usually
-<a href="{@docRoot}reference/android/support/test/runner/AndroidJUnitRunner.html">
-{@code AndroidJUnitRunner}</a>.
-        </p>
-        <p>
-            Your test results appear in <code>STDOUT</code>.
-        </p>
-    </li>
-</ol>
-<p>
-    This operation starts an <code>adb</code> shell, then runs <code>am instrument</code>
-    with the specified parameters. This particular form of the command will run all of the tests
-    in your test package. You can control this behavior with flags that you pass to
-    <code>am instrument</code>. These flags are described in the next section.
-</p>
-<h2 id="AMSyntax">Using the am instrument Command</h2>
-<p>
-    The general syntax of the <code>am instrument</code> command is:
-</p>
-<pre>
-am instrument [flags] &lt;test_package&gt;/&lt;runner_class&gt;
-</pre>
-<p>
-    The main input parameters to <code>am instrument</code> are described in the following table:
-</p>
-<table>
-    <tr>
-        <th>
-            Parameter
-        </th>
-        <th>
-            Value
-        </th>
-        <th>
-            Description
-        </th>
-    </tr>
-    <tr>
-        <td>
-            <code>&lt;test_package&gt;</code>
-        </td>
-        <td>
-            The Android package name of the test package.
-        </td>
-        <td>
-            The value of the <code>package</code> attribute of the <code>manifest</code>
-            element in the test package's manifest file.
-        </td>
-    </tr>
-    <tr>
-        <td>
-            <code>&lt;runner_class&gt;</code>
-        </td>
-        <td>
-            The class name of the instrumented test runner you are using.
-        </td>
-        <td>
-            This is usually
-<a href="{@docRoot}reference/android/support/test/runner/AndroidJUnitRunner.html">
-{@code AndroidJUnitRunner}</a>.
-        </td>
-    </tr>
-</table>
-
-<p>
-    The flags for <code>am instrument</code> are described in the following table:
-</p>
-<table>
-    <tr>
-        <th>
-            Flag
-        </th>
-        <th>
-            Value
-        </th>
-        <th>
-            Description
-        </th>
-    </tr>
-    <tr>
-        <td>
-            <code>-w</code>
-        </td>
-        <td>
-            (none)
-        </td>
-        <td>
-            Forces <code>am instrument</code> to wait until the instrumentation terminates
-            before terminating itself. The net effect is to keep the shell open until the tests
-            have finished. This flag is not required, but if you do not use it, you will not
-            see the results of your tests.
-        </td>
-    </tr>
-    <tr>
-        <td>
-            <code>-r</code>
-        </td>
-        <td>
-            (none)
-        </td>
-        <td>
-            Outputs results in raw format. Use this flag when you want to collect
-            performance measurements, so that they are not formatted as test results. This flag is
-            designed for use with the flag <code>-e perf true</code> (documented in the section
-            <a href="#AMOptionsSyntax">Instrument options</a>).
-        </td>
-    </tr>
-    <tr>
-        <td>
-            <code>-e</code>
-        </td>
-        <td>
-             &lt;test_options&gt;
-        </td>
-        <td>
-            Provides testing options as key-value pairs. The
-            <code>am instrument</code> tool passes these to the specified instrumentation class
-            via its <code>onCreate()</code> method. You can specify multiple occurrences of
-            <code>-e &lt;test_options&gt;</code>. The keys and values are described in the
-            section <a href="#AMOptionsSyntax">am instrument options</a>. You can only use these
-            key-value pairs with
-<a href="{@docRoot}reference/android/support/test/runner/AndroidJUnitRunner.html">
-{@code AndroidJUnitRunner}</a> or with {@link android.test.InstrumentationTestRunner} and its
-subclasses. Using them with any other class has no effect.
-        </td>
-    </tr>
-</table>
-
-<h3 id="AMOptionsSyntax">am instrument options</h3>
-<p>
-    The <code>am instrument</code> tool passes testing options to
-<a href="{@docRoot}reference/android/support/test/runner/AndroidJUnitRunner.html">
-{@code AndroidJUnitRunner}</a> or {@link android.test.InstrumentationTestRunner} in the form of
-key-value pairs, using the <code>-e</code> flag, with this syntax:
-</p>
-<pre>
--e &lt;key&gt; &lt;value&gt;
-</pre>
-<p>
-    Some keys accept multiple values. You specify multiple values in a comma-separated list.
-    For example, this invocation of
-<a href="{@docRoot}reference/android/support/test/runner/AndroidJUnitRunner.html">
-{@code AndroidJUnitRunner}</a> provides multiple values for the <code>package</code> key:
-</p>
-<pre>
-$ adb shell am instrument -w -e package com.android.test.package1,com.android.test.package2 \
-&gt; com.android.test/android.support.test.runner.AndroidJUnitRunner
-</pre>
-<p>The following table lists the key-value pairs you can use with your test runner.</p>
-<table>
-    <tr>
-        <th>Key</th>
-        <th>Value</th>
-        <th>Description</th>
-    </tr>
-    <tr>
-        <td>
-            <code>package</code>
-        </td>
-        <td>
-            &lt;Java_package_name&gt;
-        </td>
-        <td>
-            The fully-qualified <em>Java</em> package name for one of the packages in the test
-            application. Any test case class that uses this package name is executed. Notice that
-            this is not an <em>Android</em> package name; a test package has a single
-            Android package name but may have several Java packages within it.
-        </td>
-    </tr>
-    <tr>
-        <td rowspan="2"><code>class</code></td>
-        <td>&lt;class_name&gt;</td>
-        <td>
-            The fully-qualified Java class name for one of the test case classes. Only this test
-            case class is executed.
-        </td>
-    </tr>
-    <tr>
-        <td>&lt;class_name&gt;<strong>#</strong>method name</td>
-        <td>
-            A fully-qualified test case class name, and one of its methods. Only this method is
-            executed. Note the hash mark (#) between the class name and the method name.
-        </td>
-    </tr>
-    <tr>
-        <td><code>func</code></td>
-        <td><code>true</code></td>
-        <td>
-            Runs all test classes that extend {@link android.test.InstrumentationTestCase}.
-        </td>
-    </tr>
-    <tr>
-        <td><code>unit</code></td>
-        <td><code>true</code></td>
-        <td>
-            Runs all test classes that do <em>not</em> extend either
-            {@link android.test.InstrumentationTestCase} or
-            {@link android.test.PerformanceTestCase}.
-        </td>
-    </tr>
-    <tr>
-        <td><code>size</code></td>
-        <td>
-            [<code>small</code> | <code>medium</code> | <code>large</code>]
-        </td>
-        <td>
-            Runs a test method annotated by size. The annotations are <code>&#64;SmallTest</code>,
-            <code>&#64;MediumTest</code>, and <code>&#64;LargeTest</code>.
-        </td>
-    </tr>
-    <tr>
-        <td><code>perf</code></td>
-        <td><code>true</code></td>
-        <td>
-            Runs all test classes that implement {@link android.test.PerformanceTestCase}.
-            When you use this option, also specify the <code>-r</code> flag for
-            <code>am instrument</code>, so that the output is kept in raw format and not
-            re-formatted as test results.
-        </td>
-    </tr>
-    <tr>
-        <td><code>debug</code></td>
-        <td><code>true</code></td>
-        <td>
-            Runs tests in debug mode.
-        </td>
-    </tr>
-    <tr>
-        <td><code>log</code></td>
-        <td><code>true</code></td>
-        <td>
-            Loads and logs all specified tests, but does not run them. The test
-            information appears in <code>STDOUT</code>. Use this to verify combinations of other
-            filters and test specifications.
-        </td>
-    </tr>
-    <tr>
-        <td><code>emma</code></td>
-        <td><code>true</code></td>
-        <td>
-            Runs an EMMA code coverage analysis and writes the output to
-            <code>/data/&lt;app_package&gt;/coverage.ec</code> on the device. To override the
-            file location, use the <code>coverageFile</code> key that is described in the
-            following entry.
-            <p class="note">
-                <strong>Note:</strong> This option requires an EMMA-instrumented build of the test
-                application, which you can generate with the <code>coverage</code> target.
-            </p>
-        </td>
-    </tr>
-    <tr>
-        <td><code>coverageFile</code></td>
-        <td><code>&lt;filename&gt;</code></td>
-        <td>
-            Overrides the default location of the EMMA coverage file on the device. Specify this
-            value as a path and filename in UNIX format. The default filename is described in the
-            entry for the <code>emma</code> key.
-        </td>
-    </tr>
-</table>
-<strong><code>-e</code> Flag Usage Notes</strong>
-<ul>
-    <li>
-        <code>am instrument</code> invokes
-        {@link android.test.InstrumentationTestRunner#onCreate(Bundle)}
-        with a {@link android.os.Bundle} containing the key-value pairs.
-    </li>
-    <li>
-        The <code>package</code> key takes precedence over the <code>class</code> key. If you
-        specifiy a package, and then separately specify a class within that package, Android
-        will run all the tests in the package and ignore the <code>class</code> key.
-    </li>
-    <li>
-        The <code>func</code> key and <code>unit</code> key are mutually exclusive.
-    </li>
-</ul>
-<h3 id="RunTestExamples">Usage examples</h3>
-<p>
-The following sections provide examples of using <code>am instrument</code> to run tests.
-They are based on the following structure:</p>
-<ul>
-    <li>
-        The test package has the Android package name <code>com.android.demo.app.tests</code>
-    </li>
-    <li>
-        Two instrumented test classes:
-        <ul>
-            <li>{@code Foo1} which contains the test method {@code bar1}, and</li>
-            <li>{@code Foo2} which contains test methods {@code bar2} and {@code bar3}</li>
-        </ul>
-    </li>
-    <li>
-        The test runner is
-<a href="{@docRoot}reference/android/support/test/runner/AndroidJUnitRunner.html">
-{@code AndroidJUnitRunner}</a>.
-    </li>
-</ul>
-<h4>Running the entire test package</h4>
-<p>
-    To run all of the test classes in the test package, enter:
-</p>
-<pre>
-$ adb shell am instrument -w com.android.demo.app.tests/android.support.test.runner.AndroidJUnitRunner
-</pre>
-<h4>Running all tests in a test case class</h4>
-<p>
-    To run all of the tests in the class <code>UnitTests</code>, enter:
-</p>
-<pre>
-$ adb shell am instrument -w  \
-&gt; -e class com.android.demo.app.tests.Foo \
-&gt; com.android.demo.app.tests/android.support.test.runner.AndroidJUnitRunner
-</pre>
-<p>
-  <code>am instrument</code> gets the value of the <code>-e</code> flag, detects the
-  <code>class</code> keyword, and runs all the methods in the <code>UnitTests</code> class.
-</p>
-<h4>Selecting a subset of tests</h4>
-<p>
-    To run all of the tests in <code>Foo1</code>, and the <code>bar3</code> method in
-    <code>Foo2</code>, enter:
-</p>
-<pre>
-$ adb shell am instrument -w \
-&gt; -e class com.android.demo.app.tests.Foo1,com.android.demo.app.tests.Foo2#bar3 \
-&gt; com.android.demo.app.tests/android.support.test.runner.AndroidJUnitRunner
-</pre>
diff --git a/docs/html/tools/tools_toc.cs b/docs/html/tools/tools_toc.cs
deleted file mode 100644
index 3ce0d11..0000000
--- a/docs/html/tools/tools_toc.cs
+++ /dev/null
@@ -1,446 +0,0 @@
-<ul id="nav">
-
-  <li class="nav-section">
-    <div class="nav-section-header"><a href="<?cs var:toroot
-?>sdk/index.html"><span class="en">Download</span></a></div>
-    <ul>
-      <li><a href="<?cs var:toroot ?>sdk/installing/index.html">
-          <span class="en">Install Android Studio</span></a></li>
-    </ul>
-  </li>
-
-
-<!-- Workflow menu-->
-
-  <li class="nav-section">
-    <div class="nav-section-header">
-        <a href="<?cs var:toroot ?>tools/workflow/index.html"><span class="en">Workflow</span></a>
-    </div>
-    <ul>
-      <li><a href="<?cs var:toroot ?>tools/projects/index.html">
-          <span class="en">Projects</span></a>
-      </li>
-      <li><a href="<?cs var:toroot ?>tools/building/index.html">
-          <span class="en">Build and Run</span></a>
-      </li>
-      <li><a href="<?cs var:toroot ?>tools/devices/index.html">
-        <span class="en">Virtual Devices</span></a></li>
-
-      <li class="nav-section">
-        <div class="nav-section-header"><a href="<?cs var:toroot ?>tools/device.html">
-          <span class="en">Hardware Devices</span></a></div>
-        <ul>
-          <li><a href="<?cs var:toroot ?>tools/extras/oem-usb.html">
-            <span class="en">USB Drivers</span></a></li>
-        </ul>
-      </li>
-
-      <li><a href="<?cs var:toroot?>tools/testing/index.html">
-        <span class="en">Testing</span></a>
-      </li>
-
-      <li><a href="<?cs var:toroot ?>tools/debugging/index.html">
-          <span class="en">Debugging</span></a></li>
-
-      <li class="nav-section">
-        <div class="nav-section-header"><a href="<?cs var:toroot ?>tools/publishing/publishing_overview.html"
-          zh-cn-lang="发布概述"><span class="en">Publishing</span></a></div>
-        <ul>
-          <li><a href="<?cs var:toroot ?>tools/publishing/preparing.html" zh-cn-lang="准备发布"><span class="en">Preparing for Release</span></a></li>
-          <li><a href="<?cs var:toroot ?>tools/publishing/versioning.html"><span class="en">Versioning Your Apps</span></a></li>
-          <li><a href="<?cs var:toroot ?>tools/publishing/app-signing.html"><span class="en">Signing Your Apps</span></a></li>
-        </ul>
-      </li>
-
-    </ul>
-  </li> <!-- end of Workflow -->
-
-
-<!-- Android Studio menu-->
-
- <li class="nav-section">
-    <div class="nav-section-header">
-      <a href="<?cs var:toroot?>tools/studio/index.html"><span class="en">Android Studio</span></a>
-    </div>
-    <ul>
-      <li><a href="<?cs var:toroot ?>tools/studio/studio-features.html">
-          Features</a></li>
-
-      <li class="nav-section">
-        <div class="nav-section-header"><a href="<?cs var:toroot ?>tools/studio/studio-config.html">
-          Configuration</a></div>
-          <ul>
-            <li><a href="<?cs var:toroot ?>tools/help/sdk-manager.html">SDK Manager</a></li>
-          </ul>
-      </li>
-
-      <li class="nav-section">
-        <div class="nav-section-header">
-          <a href="<?cs var:toroot ?>sdk/installing/create-project.html">
-          Project Tools</a></div>
-          <ul>
-            <li><a href="<?cs var:toroot ?>tools/help/project-mgmt.html">
-              <span class="en">Project Structure Management</span></a></li>
-            <li><a href="<?cs var:toroot ?>tools/projects/templates.html">
-              <span class="en">Using Code Templates</span></a></li>
-            <li><a href="<?cs var:toroot ?>tools/building/building-studio.html">
-              <span class="en">Building and Running</span></a></li>
-          </ul>
-      </li>
-
-      <li class="nav-section">
-        <div class="nav-section-header"><a href="<?cs var:toroot ?>tools/studio/code-tools.html">
-          Code Tools</a></div>
-          <ul>
-            <li><a href="<?cs var:toroot ?>tools/debugging/improving-w-lint.html">
-              <span class="en">Improving Your Code with lint</span></a></li>
-            <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>
-          </ul>
-      </li>
-
-      <li class="nav-section">
-        <div class="nav-section-header"><a href="<?cs var:toroot ?>tools/studio/ui-tools.html">
-          UI Tools</a></div>
-          <ul>
-            <li><a href="<?cs var:toroot ?>sdk/installing/studio-layout.html">
-              <span class="en">Layout Editor</span></a></li>
-            <li><a href="<?cs var:toroot ?>tools/help/theme-editor.html">
-              <span class="en">Theme Editor</span></a></li>
-            <li><a href="<?cs var:toroot ?>tools/help/translations-editor.html">
-              <span class="en">Translations Editor</span></a>
-            <li><a href="<?cs var:toroot ?>tools/help/vector-asset-studio.html">
-              <span class="en">Vector Asset Studio</span></a></li>
-            <li><a href="<?cs var:toroot ?>tools/help/image-asset-studio.html">
-              <span class="en">Image Asset Studio</span></a></li>
-          </ul>
-      </li>
-
-      <li><a href="<?cs var:toroot ?>tools/devices/managing-avds.html">
-        <span class="en">AVD Manager</span></a></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>
-            <li><a href="<?cs var:toroot ?>tools/debugging/ddms.html">
-              <span class="en">DDMS</span></a></li>
-          </ul>
-      </li>
-
-      <li class="nav-section">
-        <div class="nav-section-header">
-          <a href="<?cs var:toroot ?>tools/help/android-monitor.html">Android Monitor</a></div>
-        <ul>
-          <li><a href="<?cs var:toroot ?>tools/help/am-logcat.html"><span
-            class="en">logcat Monitor</span></a>
-          </li>
-          <li><a href="<?cs var:toroot ?>tools/help/am-memory.html"><span
-            class="en">Memory Monitor</span></a>
-          </li>
-          <li><a href="<?cs var:toroot ?>tools/help/am-cpu.html"><span
-            class="en">CPU Monitor</span></a>
-          </li>
-          <li><a href="<?cs var:toroot ?>tools/help/am-gpu.html"><span
-            class="en">GPU Monitor</span></a>
-          </li>
-          <li><a href="<?cs var:toroot ?>tools/help/am-network.html"><span
-            class="en">Network Monitor</span></a>
-          </li>
-        </ul>
-      </li>
-
-      <li><a href="<?cs var:toroot ?>sdk/installing/studio-tips.html">
-          Tips and Tricks</a></li>
-
-      <li class="nav-section">
-        <div class="nav-section-header"><a href="<?cs var:toroot ?>sdk/installing/migrate.html">
-        <span class="en">
-          Migrating from Eclipse ADT</span></a></div>
-          <ul>
-            <li><a href="<?cs var:toroot ?>tools/studio/eclipse-transition-guide.html">
-            <span class="en">Transition Guide</span></a></li>
-          </ul>
-      </li>
-    </ul>
-
- </li><!-- End of Android Studio menu -->
-
-
-  <li class="nav-section">
-    <div class="nav-section-header"><a href="<?cs var:toroot ?>tools/help/index.html"><span
-class="en">Tools Help</span></a></div>
-    <ul>
-      <li><a href="<?cs var:toroot ?>tools/help/adb.html">adb</a></li>
-      <li class="nav-section">
-        <div class="nav-section-header">
-          <a href="<?cs var:toroot ?>tools/help/android.html">android</a></div>
-          <ul>
-            <li><a href="<?cs var:toroot ?>tools/devices/managing-avds-cmdline.html"><span class="en">
-              Managing AVDs</span></a></li>
-            <li><a href="<?cs var:toroot ?>tools/projects/projects-cmdline.html"><span class="en">
-              Managing Projects</span></a></li>
-          </ul>
-      </li>
-      <li><a href="<?cs var:toroot ?>tools/help/avd-manager.html">AVD Manager</a></li>
-      <li><a href="<?cs var:toroot ?>tools/help/bmgr.html">bmgr</a>
-      <li><a href="<?cs var:toroot ?>tools/help/desktop-head-unit.html">Desktop Head Unit</a></li>
-      <li><a href="<?cs var:toroot ?>tools/help/monitor.html">Device Monitor</a></li>
-      <li><a href="<?cs var:toroot ?>tools/help/dmtracedump.html">dmtracedump</a></li>
-      <li><a href="<?cs var:toroot ?>tools/help/draw9patch.html">Draw 9-Patch</a></li>
-
-      <li><a href="<?cs var:toroot ?>tools/help/etc1tool.html">etc1tool</a></li>
-
-      <li class="nav-section">
-        <div class="nav-section-header">
-          <a href="<?cs var:toroot ?>tools/help/hierarchy-viewer.html">
-            <span class="en">Hierarchy Viewer</span></a></div>
-          <ul>
-            <li><a href="<?cs var:toroot ?>tools/debugging/debugging-ui.html">
-              <span class="en">Optimizing your UI</span></a></li>
-          </ul>
-      </li>
-
-      <li><a href="<?cs var:toroot ?>tools/help/hprof-conv.html">hprof-conv</a></li>
-      <li><a href="<?cs var:toroot ?>tools/help/jobb.html">jobb</a></li>
-      <li><a href="<?cs var:toroot ?>tools/help/lint.html">lint</span></a></li>
-      <li class="nav-section">
-        <div class="nav-section-header">
-          <a href="<?cs var:toroot ?>tools/help/logcat.html">logcat</a></div>
-          <ul>
-            <li><a href="<?cs var:toroot ?>tools/debugging/debugging-log.html">
-              <span class="en">Reading and Writing Logs</span></a></li>
-          </ul>
-      </li>
-      <li><a href="<?cs var:toroot ?>tools/help/mksdcard.html">mksdcard</a></li>
-       <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>
-  </li>
-
-  </li><!-- end of tools help -->
-
-
-<!-- Build System menu-->
-
-  <li class="nav-section">
-    <div class="nav-section-header">
-      <a href="<?cs var:toroot ?>sdk/installing/studio-build.html">Build System</a>
-    </div>
-    <ul>
-      <li><a href="<?cs var:toroot ?>tools/building/building-cmdline.html">
-        <span class="en">Running Gradle Builds</span></a></li>
-      <li><a href="<?cs var:toroot ?>tools/building/configuring-gradle.html">
-        <span class="en">Configuring Gradle Builds</span></a></li>
-      <li><a href="<?cs var:toroot ?>tools/building/plugin-for-gradle.html">
-        <span class="en">Android Plugin for Gradle</span></a></li>
-      <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>
-      </ul>
-  </li><!-- end of build system -->
-
-
-<!-- Performance Tools menu-->
-  <li class="nav-section">
-    <div class="nav-section-header">
-      <a href="<?cs var:toroot ?>tools/performance/index.html">Performance Tools</a>
-    </div>
-    <ul>
-      <li><a href="<?cs var:toroot ?>tools/performance/debug-gpu-overdraw/index.html">
-        Overdraw Debugger</a>
-      </li>
-      <li><a href="<?cs var:toroot ?>tools/performance/profile-gpu-rendering/index.html">
-        Rendering Profiler</a>
-      </li>
-      <li class="nav-section">
-        <div class="nav-section-header">
-          <a href="<?cs var:toroot ?>tools/performance/hierarchy-viewer/index.html">
-          Hierarchy Viewer</a></div>
-        <ul>
-          <li><a href="<?cs var:toroot ?>tools/performance/hierarchy-viewer/setup.html"><span
-            class="en">Setup</span></a>
-          </li>
-          <li><a href="<?cs var:toroot ?>tools/performance/hierarchy-viewer/profiling.html"><span
-            class="en">Profiling</span></a>
-          </li>
-        </ul>
-      </li>
-      <li class="nav-section">
-        <div class="nav-section-header">
-          <a href="<?cs var:toroot ?>tools/performance/comparison.html">
-          Memory Profilers</a></div>
-        <ul>
-          <li><a href="<?cs var:toroot ?>tools/performance/memory-monitor/index.html"><span
-            class="en">Memory Monitor</span></a>
-          </li>
-          <li><a href="<?cs var:toroot ?>tools/performance/heap-viewer/index.html"><span
-            class="en">Heap Viewer</span></a>
-          </li>
-          <li><a href="<?cs var:toroot ?>tools/performance/allocation-tracker/index.html"><span
-            class="en">Allocation Tracker</span></a>
-          </li>
-          <li><a href="<?cs var:toroot ?>tools/debugging/debugging-memory.html">
-            <span class="en">Investigating Your RAM Usage</span></a></li>
-        </ul>
-      </li>
-
-      <li class="nav-section">
-        <div class="nav-section-header">
-          <a href="<?cs var:toroot ?>tools/debugging/debugging-tracing.html">
-            <span class="en">Traceview</span></a>
-        </div>
-        <ul>
-          <li><a href="<?cs var:toroot ?>tools/performance/traceview/index.html">
-            Walkthrough</a>
-          </li>
-          <li><a href="<?cs var:toroot ?>tools/help/traceview.html">
-            Command Reference</a></li>
-        </ul>
-      </li>
-
-      <li class="nav-section">
-        <div class="nav-section-header">
-          <a href="<?cs var:toroot ?>tools/debugging/systrace.html">
-          <span class="en">Systrace</span></a>
-        </div>
-        <ul>
-          <li><a href="<?cs var:toroot ?>tools/performance/systrace/index.html">
-            Walkthrough</a></li>
-           <li><a href="<?cs var:toroot ?>tools/help/systrace.html">
-            Command Reference</a></li>
-        </ul>
-      </li>
-
-      <li class="nav-section">
-        <div class="nav-section-header">
-          <a href="<?cs var:toroot ?>tools/performance/batterystats-battery-historian/index.html">
-          Battery Profilers</a></div>
-        <ul>
-          <li><a href="<?cs var:toroot ?>tools/performance/batterystats-battery-historian/charts.html"><span
-            class="en">Historian Charts</span></a>
-          </li>
-        </ul>
-      </li>
-    </ul>
-  </li><!-- End Performance Tools menu-->
-
-
-  <!-- Testing Tools menu-->
-
-  <li class="nav-section">
-    <div class="nav-section-header">
-      <a href="<?cs var:toroot ?>tools/testing/testing-tools.html">
-      <span class="en">Testing Tools</span></a></div>
-    <ul>
-      <li><a href="<?cs var:toroot ?>tools/testing/testing_android.html">Testing Concepts</a></li>
-      <li class="nav-section">
-         <div class="nav-section-header">
-         <a href="<?cs var:toroot ?>tools/testing-support-library/index.html"><span
-class="en">Testing Support Library</span></a></div>
-         <ul>
-            <li><a href="<?cs var:toroot ?>reference/android/support/test/package-summary.html">
-            API Reference</a></li>
-         </ul>
-      </li>
-      <li><a href="<?cs var:toroot ?>training/testing/start/index.html">
-      Testing with Android Studio</a></li>
-      <li><a href="<?cs var:toroot ?>tools/testing/testing_otheride.html">
-      Testing from the Command-Line</a></li>
-      <li><a href="<?cs var:toroot ?>tools/help/monkey.html">monkey</a></li>
-      <li class="nav-section">
-        <div class="nav-section-header"><a href="<?cs var:toroot
-?>tools/help/monkeyrunner_concepts.html"><span class="en">monkeyrunner</span></a></div>
-        <ul>
-          <li><a href="<?cs var:toroot ?>tools/help/MonkeyDevice.html"><span
-class="en">MonkeyDevice</span></a></li>
-          <li><a href="<?cs var:toroot ?>tools/help/MonkeyImage.html"><span
-class="en">MonkeyImage</span></a></li>
-          <li><a href="<?cs var:toroot ?>tools/help/MonkeyRunner.html"><span
-class="en">MonkeyRunner</span></a></li>
-        </ul>
-      </li>
-    </ul>
-  </li><!-- end of testing support library -->
-
-
-<!-- Support Library menu-->
-
-  <li class="nav-section">
-    <div class="nav-section-header"><a href="<?cs var:toroot ?>tools/support-library/index.html"><span
-class="en">Support Library</span></a></div>
-    <ul>
-      <li><a href="<?cs var:toroot ?>tools/support-library/features.html">Features</a></li>
-      <li><a href="<?cs var:toroot ?>tools/support-library/setup.html">Setup</a></li>
-    </ul>
-  </li><!-- end of support library -->
-
-  <li class="nav-section">
-    <div class="nav-section-header empty"><a href="<?cs var:toroot ?>tools/data-binding/guide.html"><span
-class="en">Data Binding Library</span></a></div>
-  </li><!-- end of support library -->
-
-
-<!-- Revision menu-->
-
-  <li class="nav-section">
-    <div class="nav-section-header"><a href="<?cs var:toroot
-?>tools/revisions/index.html"><span class="en">Revisions</span></a></div>
-    <ul>
-      <li><a href="<?cs var:toroot ?>tools/revisions/studio.html">
-        <span class="en">Android Studio</span>
-      </a></li>
-      <li><a href="<?cs var:toroot ?>tools/sdk/tools-notes.html">
-        <span class="en">SDK Tools</span>
-      </a></li>
-      <li><a href="<?cs var:toroot ?>tools/revisions/build-tools.html">
-        <span class="en">SDK Build Tools</span>
-      </a></li>
-      <li><a href="<?cs var:toroot ?>tools/revisions/gradle-plugin.html">
-        <span class="en">Android Plugin for Gradle</span>
-      </a></li>
-      <li><a href="<?cs var:toroot ?>tools/revisions/platforms.html">
-        <span class="en">SDK Platforms</span></a></li>
-      <li><a href="<?cs var:toroot ?>tools/sdk/eclipse-adt.html">
-        <span class="en">ADT Plugin</span></a></li>
-    </ul>
-  </li>
-
-  <li class="nav-section">
-    <div class="nav-section-header empty">
-      <a href="<?cs var:toroot ?>tools/sdk/ndk/index.html">NDK</a>
-    </div>
-  </li>
-
-<!--  <li class="nav-section">
-    <div class="nav-section-header">
-    <a href="<?cs var:toroot ?>tools/adk/index.html">
-      <span class="en">ADK</span></a>
-    </div>
-    <ul>
-      <li><a href="<?cs var:toroot ?>tools/adk/adk2.html">ADK 2012 Guide</a></li>
-      <li><a href="<?cs var:toroot ?>tools/adk/adk.html">ADK 2011 Guide</a></li>
-    </ul>
-  </li> -->
-
-<script type="text/javascript">
-<!--
-    buildToggleLists();
-    changeNavLang(getLangPref());
-//-->
-</script>
diff --git a/docs/html/tools/workflow.jd b/docs/html/tools/workflow.jd
deleted file mode 100755
index edf7400..0000000
--- a/docs/html/tools/workflow.jd
+++ /dev/null
@@ -1,149 +0,0 @@
-page.title=Introduction
-@jd:body
-
-<p>Developing applications for Android devices is facilitated by a group of tools that are
-  provided with the SDK. You can access these tools through Android Studio or from the command line. Developing with Android Studio is the preferred method because
-  it can directly invoke the tools that you need while developing applications.</p>
-
-  <p>However, you may choose to develop with another IDE or a simple text editor and invoke the
-  tools on the command line or with scripts. This is a less streamlined way to develop because you
-  will sometimes have to call command line tools manually, but you will have access to the same
-  number of features that you would have in Android Studio.</p>
-
-<div class="figure" style="width:461px">
-  <img src="{@docRoot}images/developing/developing_overview.png"
-       alt="Development process for Android applications"
-       height="738" />
-  <p class="img-caption">
-    <strong>Figure 1.</strong> The development process for Android applications.
-  </p>
-</div>
-
-<p>The basic steps for developing applications (with or without Android Studio) are shown in figure 1. The
-development steps encompass four development phases, which include:</p>
-
-<ul>
-  <li><strong>Setup</strong>
-    <p>During this phase you install and set up your development environment. You also create
-      Android Virtual Devices (AVDs) and connect hardware devices on which you can install your
-      applications.</p>
-    <p>See <a href="{@docRoot}tools/devices/index.html">Managing Virtual Devices</a>
-      and <a href="{@docRoot}tools/device.html">Using Hardware Devices</a> for more
-      information.
-  </li>
-  <li><strong>Development</strong>
-    <p>During this phase you set up and develop your Android project, which contains all of the
-    source code and resource files for your application. For more informations, see
-    <a href="{@docRoot}tools/projects/index.html">Create an Android project</a>.</p>
-  </li>
-  <li><strong>Debugging and Testing</strong>
-    <p>During this phase you build your project into a debuggable <code>.apk</code> package that you
-    can install and run on the emulator or an Android-powered device. Android Studio uses
-    a build system based on <a href="http://www.gradle.org/" target="_android">Gradle</a>
-    that provides flexibility, customized build variants, dependency resolution, and much more.
-    If you're using another IDE, you can build your project using Gradle and install it on a device
-    using <a href="{@docRoot}tools/help/adb.html">adb</a>. For more information, see
-    <a href="{@docRoot}tools/building/index.html">Build and run your application</a>.</p>
-    <p>Next, you debug your application using a JDWP-compliant debugger along with the debugging
-    and logging tools that are provided with the Android SDK. Android Studio already comes packaged with
-    a compatible debugger. For more information see,
-    <a href="{@docRoot}tools/debugging/index.html">Debug your application with the
-      SDK debugging and logging tools</a>.</p>
-    <p>Last, you test your application using various Android SDK testing tools. For more
-    information, see <a href="{@docRoot}tools/testing/index.html">Test your application
-    with the Testing and Instrumentation framework</a>.</p>
-  </li>
-  <li><strong>Publishing</strong>
-    <p>During this phase you configure and build your application for release and distribute your
-      application to users. For more information, see
-      <a href="{@docRoot}tools/publishing/publishing_overview.html">Publishing Overview</a>.</p>
-  </li>
-</ul>
-
-<h2 id="EssentialTools">Essential command line tools</h2>
-
-  <p>When developing in IDEs or editors other than Android Studio, be familiar with
-  all of the tools below, because you will have to run them from the command line.</p>
-
-  <dl>
-    <dt><a href="{@docRoot}tools/help/android.html">android</a></dt>
-
-    <dd>Create and update Android projects and create, move, and delete AVDs.</dd>
-
-    <dt><a href="{@docRoot}tools/devices/emulator.html">Android Emulator</a></dt>
-
-    <dd>Run your Android applications on an emulated Android platform.</dd>
-
-    <dt><a href="{@docRoot}tools/help/adb.html">Android Debug Bridge</a></dt>
-
-    <dd>Interface with your emulator or connected device (install apps, shell the device, issue
-    commands, etc.).</dd>
-  </dl>
-
-  <p>In addition to the above tools that are included with the SDK, you need the following open
-  source and third-party tools:</p>
-
-  <dl>
-    <a href="http://www.gradle.org/">Gradle</a> 
-
-    <dd>To compile and build your Android project into an installable .apk file.</dd>
-
-    <dt>Keytool</dt>
-
-    <dd>To generate a keystore and private key, used to sign your .apk file. Keytool is part of the
-    JDK.</dd>
-
-    <dt>Jarsigner (or similar signing tool)</dt>
-
-    <dd>To sign your .apk file with a private key generated by Keytool. Jarsigner is part of the
-    JDK.</dd>
-  </dl>
-
-  <p>If you are using Android Studio, tools such as <code>adb</code> and <code>android</code>
-  are automatically called by Android Studio, so you don't have to manually invoke these tools.
-  You need to be familiar with <code>adb</code>, however, because certain functions are not
-accessible from
-  Android Studio, such as the <code>adb</code> shell commands. You might also need to call Keytool and
-Jarsigner to
-  sign your applications, but you can set up Android Studio to do this automatically as well.</p>
-
-<p>For more information on the tools provided with the Android SDK, see the
-  <a href="{@docRoot}tools/index.html">Tools</a> section of the documentation.</p>
-
-<h2 id="ThirdParty">Other Third-Party Development Tools</h2>
-<p>
-	The tools described in this section are not developed by the Android SDK team. The Android Dev Guide
-	    does not provide documentation for these tools. Please refer to the linked documents in each
-	    section for documentation.
-</p>
-<h3 id="IntelliJ">Developing in IntelliJ IDEA</h3>
-<div style="float: right">
-<img alt="The IntelliJ graphical user interface" height="500px"
-src="{@docRoot}images/developing/intellijidea_android_ide.png"/>
-</div>
-<p>
-	IntelliJ IDEA is a powerful Java IDE from JetBrains that provides
-	full-cycle Android development support in both the free Community
-	Edition and the Ultimate edition.
-</p>
-<p>
-	The IDE ensures compatibility with the latest Android SDK and offers a
-	smart code editor with completion, quick navigation between code and
-	resources, a graphical debugger, unit testing support using Android
-	Testing Framework, and the ability to run applications in either the
-	emulator or a USB-connected device.
-</p>
-<p>
-	<strong>Links:</strong>
-</p>
-<ul>
-	<li>
-    	<a href="http://www.jetbrains.com/idea">IntelliJ IDEA official website</a>
-</li>
-	<li>
-    	<a href="http://www.jetbrains.com/idea/features/google_android.html">Android support in IntelliJ IDEA</a>
-</li>
-	<li>
-    	<a href="http://wiki.jetbrains.net/intellij/Android">IntelliJ IDEA Android Tutorials</a>
-	</li>
-</ul>
diff --git a/docs/html/tools/workflow/index.jd b/docs/html/tools/workflow/index.jd
deleted file mode 100644
index b32fa26..0000000
--- a/docs/html/tools/workflow/index.jd
+++ /dev/null
@@ -1,121 +0,0 @@
-page.title=Developer Workflow
-@jd:body
-
-<p>To develop apps for Android, you use a set of tools that are included in Android Studio.
-In addition to using the tools from Android Studio,
-you can also access most of the SDK tools from the command line. Developing with Android Studio is the
-preferred method because it can directly invoke the tools that you need while developing applications.</p>
-
-<p>However, you may choose to develop with another IDE or a simple text editor and invoke the
-tools on the command line or with scripts. This is a less streamlined way to develop because you
-will sometimes have to call command line tools manually, but you will have access to the same
-number of features that you would have in Android Studio.</p>
-
-<div class="figure" style="width:461px">
-  <img src="{@docRoot}images/developing/developing_overview.png"
-       alt="Development process for Android applications"
-       height="738" />
-  <p class="img-caption">
-    <strong>Figure 1.</strong> The development process for Android applications.
-  </p>
-</div>
-
-<h2>App Workflow</h2>
-
-<p>The basic steps for developing applications (with or without Android Studio) are shown in 
-figure 1. The development steps encompass four development phases, which include:</p>
-
-<ul>
-  <li><strong>Environment Setup</strong>
-    <p>During this phase you install and set up your development environment. You also create
-      Android Virtual Devices (AVDs) and connect hardware devices on which you can install your
-      applications.</p>
-    <p>See <a href="{@docRoot}tools/devices/index.html">Managing Virtual Devices</a>
-      and <a href="{@docRoot}tools/device.html">Using Hardware Devices</a> for more
-      information.
-  </li>
-  <li><strong>Project Setup and Development</strong>
-    <p>During this phase you set up and develop your Android Studio project and application modules,
-    which contain all of the source code and resource files for your application. For more
-    information, see
-    <a href="{@docRoot}tools/projects/index.html">Create an Android project</a>.</p>
-  </li>
-  <li><strong>Building, Debugging and Testing</strong>
-    <p>During this phase you build your project into a debuggable <code>.apk</code> package(s)
-    that you can install and run on the emulator or an Android-powered device. Android Studio uses
-    a build system based on <a href="http://www.gradle.org/" target="_android">Gradle</a>
-    that provides flexibility, customized build variants, dependency resolution, and much more.
-    If you're using another IDE, you can build your project using Gradle and install it on a device
-    using <a href="{@docRoot}tools/help/adb.html">adb</a>. For more information, see
-    <a href="{@docRoot}tools/building/index.html">Build and run your application</a>.</p>
-    <p>Next, with Android Studio you debug your application using the
-    <a href="{@docRoot}tools/help/monitor.html">Android Device Monitor</a> and device log messages
-    (<a href="{@docRoot}tools/help/logcat.html">logcat</a>) along with the IntelliJ IDEA intelligent
-    coding features. You can also use a JDWP-compliant debugger along with the debugging and logging
-    tools that are provided with the Android SDK. For more information see
-    <a href="{@docRoot}tools/debugging/index.html">Debug your application with the SDK debugging and logging tools</a>.</p>
-    <p>Last, you test your application using various Android SDK testing tools. For more
-    information, see <a href="{@docRoot}tools/testing/index.html">Test your application
-    with the Testing and Instrumentation framework</a>.</p>
-  </li>
-  <li><strong>Publishing</strong>
-    <p>During this phase you configure and build your application for release and distribute your
-    application to users. For more information, see
-    <a href="{@docRoot}tools/publishing/publishing_overview.html">Publishing
-    Overview</a>.</p>
-  </li>
-</ul>
-
-
-
-<h2 id="EssentialTools">Essential command line tools</h2>
-
-  <p>When developing in IDEs or editors other than Android Studio, be familiar with
-  all of the tools below, because you will have to run them from the command line or script.</p>
-
-  <dl>
-    <dt><a href="{@docRoot}tools/help/android.html">android</a></dt>
-
-    <dd>Create and update Android projects and create, move, and delete AVDs.</dd>
-
-    <dt><a href="{@docRoot}tools/help/emulator.html">Android Emulator</a></dt>
-
-    <dd>Run your Android applications on an emulated Android platform.</dd>
-
-    <dt><a href="{@docRoot}tools/help/adb.html">Android Debug Bridge</a></dt>
-
-    <dd>Interface with your emulator or connected device (install apps, shell the device, issue
-    commands, etc.).</dd>
-  </dl>
-
-  <p>In addition to the above tools that are included with the SDK, you need the following open
-  source and third-party tools:</p>
-
-  <dl>
-    <dt><a href="http://www.gradle.org/">Gradle</a> </dt>
-
-    <dd>To compile and build your Android project into an installable .apk file(s).</dd>
-
-    <dt>Keytool</dt>
-
-    <dd>To generate a keystore and private key, used to sign your .apk file. Keytool is part of the
-    JDK.</dd>
-
-    <dt>Jarsigner (or similar signing tool)</dt>
-
-    <dd>To sign your .apk file with a private key generated by Keytool. Jarsigner is part of the
-    JDK.</dd>
-  </dl>
-
-  <p>If you are using Android Studio, tools such as <code>adb</code> and <code>android</code>
-  are automatically called by Android Studio so you don't have to manually invoke these tools.
-  You need to be familiar with <code>adb</code>, however, because certain functions are not
-  accessible from Android Studio, such as the <code>adb</code> shell commands. You might also
-  need to call Keytool and Jarsigner to sign your applications, but you can set up Android Studio 
-  to do this automatically as well.</p>
-
-<p>For more information on the tools provided with the Android SDK, see the
-  <a href="{@docRoot}tools/help/index.html">Tools</a> section of the documentation.</p>
-
-
-
diff --git a/docs/html/training/_book.yaml b/docs/html/training/_book.yaml
index cd4df43..8f8fab2 100644
--- a/docs/html/training/_book.yaml
+++ b/docs/html/training/_book.yaml
@@ -4,8 +4,9 @@
   section:
   - title: Building Your First App
     path: /training/basics/firstapp/index.html
-    custom_link_attributes:
-    - description="After you've installed the Android SDK, start with this class to learn the basics about Android app development."
+    path_attributes:
+    - name: description
+      value: After you've installed the Android SDK, start with this class to learn the basics about Android app development.
     section:
     - title: Creating an Android Project
       path: /training/basics/firstapp/creating-project.html
@@ -17,8 +18,9 @@
       path: /training/basics/firstapp/starting-activity.html
   - title: Supporting Different Devices
     path: /training/basics/supporting-devices/index.html
-    custom_link_attributes:
-    - description="How to build your app with alternative resources that provide an optimized user experience on multiple device form factors using a single APK."
+    path_attributes:
+    - name: description
+      value: How to build your app with alternative resources that provide an optimized user experience on multiple device form factors using a single APK.
     section:
     - title: Supporting Different Languages
       path: /training/basics/supporting-devices/languages.html
@@ -28,137 +30,215 @@
       path: /training/basics/supporting-devices/platforms.html
   - title: Managing the Activity Lifecycle
     path: /training/basics/activity-lifecycle/index.html
-    custom_link_attributes:
-    - ja-lang="アクティビティのライフサイクル 管理"
-    - ko-lang="액티비티 수명 주기 관리하기"
-    - pt-br-lang="Como gerenciar o ciclo de vida da atividade"
-    - ru-lang="Управление жизненным циклом операций"
-    - zh-cn-lang="管理活动生命周期"
-    - zh-tw-lang="管理應用行為顯示生命週期"
-    - description="How Android activities live and die and how to create a seamless user experience by implementing lifecycle callback methods."
+    path_attributes:
+    - name: ja-lang
+      value: アクティビティのライフサイクル 管理
+    - name: ko-lang
+      value: 액티비티 수명 주기 관리하기
+    - name: pt-br-lang
+      value: Como gerenciar o ciclo de vida da atividade
+    - name: ru-lang
+      value: Управление жизненным циклом операций
+    - name: zh-cn-lang
+      value: 管理活动生命周期
+    - name: zh-tw-lang
+      value: 管理應用行為顯示生命週期
+    - name: description
+      value: How Android activities live and die and how to create a seamless user experience by implementing lifecycle callback methods.
     section:
     - title: Starting an Activity
       path: /training/basics/activity-lifecycle/starting.html
-      custom_link_attributes:
-      - ja-lang="アクティビティを開始する"
-      - ko-lang="액티비티 시작하기"
-      - pt-br-lang="Iniciando uma atividade"
-      - ru-lang="Запуск операции"
-      - zh-cn-lang="开始活动"
-      - zh-tw-lang="啟動應用行為顯示"
+      path_attributes:
+      - name: ja-lang
+        value: アクティビティを開始する
+      - name: ko-lang
+        value: 액티비티 시작하기
+      - name: pt-br-lang
+        value: Iniciando uma atividade
+      - name: ru-lang
+        value: Запуск операции
+      - name: zh-cn-lang
+        value: 开始活动
+      - name: zh-tw-lang
+        value: 啟動應用行為顯示
     - title: Pausing and Resuming an Activity
       path: /training/basics/activity-lifecycle/pausing.html
     - title: Stopping and Restarting an Activity
       path: /training/basics/activity-lifecycle/stopping.html
-      custom_link_attributes:
-      - ja-lang="アクティビティの一時停止と再開"
-      - ko-lang="액티비티 일시정지 및 재개하기"
-      - pt-br-lang="Pausando e reiniciando uma atividade"
-      - ru-lang="Приостановка и возобновление операции"
-      - zh-cn-lang="暂停和继续活动"
-      - zh-tw-lang="暫停並繼續應用行為顯示"
+      path_attributes:
+      - name: ja-lang
+        value: アクティビティの一時停止と再開
+      - name: ko-lang
+        value: 액티비티 일시정지 및 재개하기
+      - name: pt-br-lang
+        value: Pausando e reiniciando uma atividade
+      - name: ru-lang
+        value: Приостановка и возобновление операции
+      - name: zh-cn-lang
+        value: 暂停和继续活动
+      - name: zh-tw-lang
+        value: 暫停並繼續應用行為顯示
     - title: Recreating an Activity
       path: /training/basics/activity-lifecycle/recreating.html
-      custom_link_attributes:
-      - ja-lang="アクティビティを再作成する"
-      - ko-lang="액티비티 재생성하기"
-      - pt-br-lang="Recriando uma atividade"
-      - ru-lang="Воссоздание операции"
-      - zh-cn-lang="重新创建活动"
-      - zh-tw-lang="重新建立應用行為顯示"
+      path_attributes:
+      - name: ja-lang
+        value: アクティビティを再作成する
+      - name: ko-lang
+        value: 액티비티 재생성하기
+      - name: pt-br-lang
+        value: Recriando uma atividade
+      - name: ru-lang
+        value: Воссоздание операции
+      - name: zh-cn-lang
+        value: 重新创建活动
+      - name: zh-tw-lang
+        value: 重新建立應用行為顯示
   - title: Building a Dynamic UI with Fragments
     path: /training/basics/fragments/index.html
-    custom_link_attributes:
-    - description="How to build a user interface for your app that is flexible enough to present multiple UI components on large screens and a more constrained set of UI components on smaller screens—essential for building a single APK for both phones and tablets."
+    path_attributes:
+    - name: description
+      value: How to build a user interface for your app that is flexible enough to present multiple UI components on large screens and a more constrained set of UI components on smaller screens—essential for building a single APK for both phones and tablets.
     section:
     - title: Creating a Fragment
       path: /training/basics/fragments/creating.html
     - title: Building a Flexible UI
       path: /training/basics/fragments/fragment-ui.html
-      custom_link_attributes:
-      - zh-cn-lang="构建灵活的界面"
+      path_attributes:
+      - name: zh-cn-lang
+        value: 构建灵活的界面
     - title: Communicating with Other Fragments
       path: /training/basics/fragments/communicating.html
   - title: Saving Data
     path: /training/basics/data-storage/index.html
-    custom_link_attributes:
-    - ja-lang="データの保存"
-    - ko-lang="데이터 저장하기"
-    - pt-br-lang="Salvando dados"
-    - ru-lang="Сохранение данных"
-    - zh-cn-lang="保存数据"
-    - zh-tw-lang="儲存資料"
-    - description="How to save data on the device, whether it's temporary files, downloaded app assets, user media, structured data, or something else."
+    path_attributes:
+    - name: ja-lang
+      value: データの保存
+    - name: ko-lang
+      value: 데이터 저장하기
+    - name: pt-br-lang
+      value: Salvando dados
+    - name: ru-lang
+      value: Сохранение данных
+    - name: zh-cn-lang
+      value: 保存数据
+    - name: zh-tw-lang
+      value: 儲存資料
+    - name: description
+      value: How to save data on the device, whether it's temporary files, downloaded app assets, user media, structured data, or something else.
     section:
     - title: Saving Key-Value Sets
       path: /training/basics/data-storage/shared-preferences.html
-      custom_link_attributes:
-      - ja-lang="キー値セットを保存する"
-      - ko-lang="키-값 세트 저장하기"
-      - pt-br-lang="Salvando conjuntos de valor-chave"
-      - ru-lang="Сохранение наборов \"ключ-значение\""
-      - zh-cn-lang="保存键值集"
-      - zh-tw-lang="儲存索引鍵值組"
+      path_attributes:
+      - name: ja-lang
+        value: キー値セットを保存する
+      - name: ko-lang
+        value: 키-값 세트 저장하기
+      - name: pt-br-lang
+        value: Salvando conjuntos de valor-chave
+      - name: ru-lang
+        value: Сохранение наборов "ключ-значение"
+      - name: zh-cn-lang
+        value: 保存键值集
+      - name: zh-tw-lang
+        value: 儲存索引鍵值組
     - title: Saving Files
       path: /training/basics/data-storage/files.html
-      custom_link_attributes:
-      - ja-lang="ファイルを保存する"
-      - ko-lang="파일 저장하기"
-      - pt-br-lang="Salvando arquivos"
-      - ru-lang="Сохранение файлов"
-      - zh-cn-lang="保存文件"
-      - zh-tw-lang="儲存檔案"
+      path_attributes:
+      - name: ja-lang
+        value: ファイルを保存する
+      - name: ko-lang
+        value: 파일 저장하기
+      - name: pt-br-lang
+        value: Salvando arquivos
+      - name: ru-lang
+        value: Сохранение файлов
+      - name: zh-cn-lang
+        value: 保存文件
+      - name: zh-tw-lang
+        value: 儲存檔案
     - title: Saving Data in SQL Databases
       path: /training/basics/data-storage/databases.html
-      custom_link_attributes:
-      - ja-lang="SQL データベースにデータを保存する"
-      - ko-lang="SQL 데이터베이스에 데이터 저장하기"
-      - pt-br-lang="Salvando dados em bancos de dados do SQL"
-      - ru-lang="Сохранение данных в базах данных SQL"
-      - zh-cn-lang="在 SQL 数据库中保存数据"
-      - zh-tw-lang="在 SQL 資料庫中儲存資料"
+      path_attributes:
+      - name: ja-lang
+        value: SQL データベースにデータを保存する
+      - name: ko-lang
+        value: SQL 데이터베이스에 데이터 저장하기
+      - name: pt-br-lang
+        value: Salvando dados em bancos de dados do SQL
+      - name: ru-lang
+        value: Сохранение данных в базах данных SQL
+      - name: zh-cn-lang
+        value: 在 SQL 数据库中保存数据
+      - name: zh-tw-lang
+        value: 在 SQL 資料庫中儲存資料
   - title: Interacting with Other Apps
     path: /training/basics/intents/index.html
-    custom_link_attributes:
-    - ja-lang="他のアプリとの相互操作"
-    - ko-lang="액티비티 수명 주기 관리하기"
-    - pt-br-lang="Interagindo com outros aplicativos"
-    - ru-lang="Взаимодействие с другими приложениями"
-    - zh-cn-lang="与其他应用交互"
-    - zh-tw-lang="與其他應用程式互動"
-    - description="How to build a user experience that leverages other apps available on the device to perform advanced user tasks, such as capture a photo or view an address on a map."
+    path_attributes:
+    - name: ja-lang
+      value: 他のアプリとの相互操作
+    - name: ko-lang
+      value: 액티비티 수명 주기 관리하기
+    - name: pt-br-lang
+      value: Interagindo com outros aplicativos
+    - name: ru-lang
+      value: Взаимодействие с другими приложениями
+    - name: zh-cn-lang
+      value: 与其他应用交互
+    - name: zh-tw-lang
+      value: 與其他應用程式互動
+    - name: description
+      value: How to build a user experience that leverages other apps available on the device to perform advanced user tasks, such as capture a photo or view an address on a map.
     section:
     - title: Sending the User to Another App
       path: /training/basics/intents/sending.html
-      custom_link_attributes:
-      - ja-lang="別のアプリにユーザーを送る"
-      - ko-lang="다른 앱으로 사용자 보내기"
-      - pt-br-lang="Enviando o usuário para outro aplicativo"
-      - ru-lang="Направление пользователя в другое приложение"
-      - zh-cn-lang="向另一个应用发送用户"
-      - zh-tw-lang="將使用者傳送至其他應用程式"
+      path_attributes:
+      - name: ja-lang
+        value: 別のアプリにユーザーを送る
+      - name: ko-lang
+        value: 다른 앱으로 사용자 보내기
+      - name: pt-br-lang
+        value: Enviando o usuário para outro aplicativo
+      - name: ru-lang
+        value: Направление пользователя в другое приложение
+      - name: zh-cn-lang
+        value: 向另一个应用发送用户
+      - name: zh-tw-lang
+        value: 將使用者傳送至其他應用程式
     - title: Getting a Result from the Activity
       path: /training/basics/intents/result.html
-      custom_link_attributes:
-      - ja-lang="アクティビティから結果を取得する"
-      - ko-lang="액티비티로부터 결과 가져오기"
-      - pt-br-lang="Obtendo resultados de uma atividade"
-      - ru-lang="Получение результата операции"
-      - zh-cn-lang="获取活动的结果"
-      - zh-tw-lang="從應用行為顯示取得結果"
+      path_attributes:
+      - name: ja-lang
+        value: アクティビティから結果を取得する
+      - name: ko-lang
+        value: 액티비티로부터 결과 가져오기
+      - name: pt-br-lang
+        value: Obtendo resultados de uma atividade
+      - name: ru-lang
+        value: Получение результата операции
+      - name: zh-cn-lang
+        value: 获取活动的结果
+      - name: zh-tw-lang
+        value: 從應用行為顯示取得結果
     - title: Allowing Other Apps to Start Your Activity
       path: /training/basics/intents/filters.html
-      custom_link_attributes:
-      - ja-lang="他のアプリからのアクティビティの開始を許可する"
-      - ko-lang="다른 앱이 자신의 액티비티를 시작하도록 허용하기"
-      - pt-br-lang="Permitindo que outros aplicativos iniciem sua atividade"
-      - ru-lang="Разрешение другим приложениям на запуск вашей операции"
-      - zh-cn-lang="允许其他应用开始您的活动"
-      - zh-tw-lang="允許其他應用程式啟動您的應用行為顯示"
+      path_attributes:
+      - name: ja-lang
+        value: 他のアプリからのアクティビティの開始を許可する
+      - name: ko-lang
+        value: 다른 앱이 자신의 액티비티를 시작하도록 허용하기
+      - name: pt-br-lang
+        value: Permitindo que outros aplicativos iniciem sua atividade
+      - name: ru-lang
+        value: Разрешение другим приложениям на запуск вашей операции
+      - name: zh-cn-lang
+        value: 允许其他应用开始您的活动
+      - name: zh-tw-lang
+        value: 允許其他應用程式啟動您的應用行為顯示
   - title: Working with System Permissions
     path: /training/permissions/index.html
-    custom_link_attributes:
-    - description="How to declare that your app needs access to features and resources outside of its 'sandbox', and how to request those privileges at runtime."
+    path_attributes:
+    - name: description
+      value: How to declare that your app needs access to features and resources outside of its 'sandbox', and how to request those privileges at runtime.
     section:
     - title: Declaring Permissions
       path: /training/permissions/declaring.html
@@ -172,8 +252,9 @@
   section:
   - title: Sharing Simple Data
     path: /training/sharing/index.html
-    custom_link_attributes:
-    - description="How to take your app interaction to the next level by sharing information with other apps, receive information back, and provide a simple and scalable way to perform Share actions with user content."
+    path_attributes:
+    - name: description
+      value: How to take your app interaction to the next level by sharing information with other apps, receive information back, and provide a simple and scalable way to perform Share actions with user content.
     section:
     - title: Sending Simple Data to Other Apps
       path: /training/sharing/send.html
@@ -183,8 +264,9 @@
       path: /training/sharing/shareaction.html
   - title: Sharing Files
     path: /training/secure-file-sharing/index.html
-    custom_link_attributes:
-    - description="How to provide secure access to a file associated with your app using a content URI and temporary access permissions."
+    path_attributes:
+    - name: description
+      value: How to provide secure access to a file associated with your app using a content URI and temporary access permissions.
     section:
     - title: Setting Up File Sharing
       path: /training/secure-file-sharing/setup-sharing.html
@@ -196,8 +278,9 @@
       path: /training/secure-file-sharing/retrieve-info.html
   - title: Sharing Files with NFC
     path: /training/beam-files/index.html
-    custom_link_attributes:
-    - description="How to transfer files between devices using the NFC Android Beam feature."
+    path_attributes:
+    - name: description
+      value: How to transfer files between devices using the NFC Android Beam feature.
     section:
     - title: Sending Files to Another Device
       path: /training/beam-files/send-files.html
@@ -209,8 +292,9 @@
   section:
   - title: Managing Audio Playback
     path: /training/managing-audio/index.html
-    custom_link_attributes:
-    - description="How to respond to hardware audio key presses, request audio focus when playing audio, and respond appropriately to changes in audio focus."
+    path_attributes:
+    - name: description
+      value: How to respond to hardware audio key presses, request audio focus when playing audio, and respond appropriately to changes in audio focus.
     section:
     - title: Controlling Your App's Volume and Playback
       path: /training/managing-audio/volume-playback.html
@@ -220,8 +304,9 @@
       path: /training/managing-audio/audio-output.html
   - title: Capturing Photos
     path: /training/camera/index.html
-    custom_link_attributes:
-    - description="How to leverage existing camera apps on the user's device to capture photos or control the camera hardware directly and build your own camera app."
+    path_attributes:
+    - name: description
+      value: How to leverage existing camera apps on the user's device to capture photos or control the camera hardware directly and build your own camera app.
     section:
     - title: Taking Photos Simply
       path: /training/camera/photobasics.html
@@ -231,8 +316,9 @@
       path: /training/camera/cameradirect.html
   - title: Printing Content
     path: /training/printing/index.html
-    custom_link_attributes:
-    - description="How to print photos, HTML documents, and custom documents from your app."
+    path_attributes:
+    - name: description
+      value: How to print photos, HTML documents, and custom documents from your app.
     section:
     - title: Photos
       path: /training/printing/photos.html
@@ -246,8 +332,9 @@
   section:
   - title: Displaying Bitmaps Efficiently
     path: /training/displaying-bitmaps/index.html
-    custom_link_attributes:
-    - description="How to load and process bitmaps while keeping your user interface responsive and avoid exceeding memory limits."
+    path_attributes:
+    - name: description
+      value: How to load and process bitmaps while keeping your user interface responsive and avoid exceeding memory limits.
     section:
     - title: Loading Large Bitmaps Efficiently
       path: /training/displaying-bitmaps/load-bitmap.html
@@ -261,8 +348,9 @@
       path: /training/displaying-bitmaps/display-bitmap.html
   - title: Displaying Graphics with OpenGL ES
     path: /training/graphics/opengl/index.html
-    custom_link_attributes:
-    - description="How to create OpenGL graphics within the Android app framework and respond to touch input."
+    path_attributes:
+    - name: description
+      value: How to create OpenGL graphics within the Android app framework and respond to touch input.
     section:
     - title: Building an OpenGL ES Environment
       path: /training/graphics/opengl/environment.html
@@ -278,8 +366,9 @@
       path: /training/graphics/opengl/touch.html
   - title: Animating Views Using Scenes and Transitions
     path: /training/transitions/index.html
-    custom_link_attributes:
-    - description="How to animate state changes in a view hierarchy using transitions."
+    path_attributes:
+    - name: description
+      value: How to animate state changes in a view hierarchy using transitions.
     section:
     - title: The Transitions Framework
       path: /training/transitions/overview.html
@@ -291,8 +380,9 @@
       path: /training/transitions/custom-transitions.html
   - title: Adding Animations
     path: /training/animation/index.html
-    custom_link_attributes:
-    - description="How to add transitional animations to your user interface."
+    path_attributes:
+    - name: description
+      value: How to add transitional animations to your user interface.
     section:
     - title: Crossfading Two Views
       path: /training/animation/crossfade.html
@@ -310,8 +400,9 @@
   section:
   - title: Connecting Devices Wirelessly
     path: /training/connect-devices-wirelessly/index.html
-    custom_link_attributes:
-    - description="How to find and connect to local devices using Network Service Discovery and how to create peer-to-peer connections with Wi-Fi."
+    path_attributes:
+    - name: description
+      value: How to find and connect to local devices using Network Service Discovery and how to create peer-to-peer connections with Wi-Fi.
     section:
     - title: Using Network Service Discovery
       path: /training/connect-devices-wirelessly/nsd.html
@@ -321,8 +412,9 @@
       path: /training/connect-devices-wirelessly/nsd-wifi-direct.html
   - title: Performing Network Operations
     path: /training/basics/network-ops/index.html
-    custom_link_attributes:
-    - description="How to create a network connection, monitor the connection for changes in connectivity, and perform transactions with XML data."
+    path_attributes:
+    - name: description
+      value: How to create a network connection, monitor the connection for changes in connectivity, and perform transactions with XML data.
     section:
     - title: Connecting to the Network
       path: /training/basics/network-ops/connecting.html
@@ -332,8 +424,9 @@
       path: /training/basics/network-ops/xml.html
   - title: Transferring Data Without Draining the Battery
     path: /training/efficient-downloads/index.html
-    custom_link_attributes:
-    - description="How to minimize your app's impact on the battery when performing downloads and other network transactions."
+    path_attributes:
+    - name: description
+      value: How to minimize your app's impact on the battery when performing downloads and other network transactions.
     section:
     - title: Optimizing Downloads for Efficient Network Access
       path: /training/efficient-downloads/efficient-network-access.html
@@ -345,8 +438,9 @@
       path: /training/efficient-downloads/connectivity_patterns.html
   - title: Syncing to the Cloud
     path: /training/backup/index.html
-    custom_link_attributes:
-    - description="How to sync and back up app and user data to remote web services in the cloud and how to restore the data back to multiple devices."
+    path_attributes:
+    - name: description
+      value: How to sync and back up app and user data to remote web services in the cloud and how to restore the data back to multiple devices.
     section:
     - title: Configuring Auto Backup
       path: /training/backup/autosyncapi.html
@@ -354,12 +448,14 @@
       path: /training/backup/backupapi.html
   - title: Resolving Cloud Save Conflicts
     path: /training/cloudsave/conflict-res.html
-    custom_link_attributes:
-    - description="How to design a robust conflict resolution strategy for apps that save data to the cloud."
+    path_attributes:
+    - name: description
+      value: How to design a robust conflict resolution strategy for apps that save data to the cloud.
   - title: Transferring Data Using Sync Adapters
     path: /training/sync-adapters/index.html
-    custom_link_attributes:
-    - description="How to transfer data between the cloud and the device using the Android sync adapter framework"
+    path_attributes:
+    - name: description
+      value: How to transfer data between the cloud and the device using the Android sync adapter framework
     section:
     - title: Creating a Stub Authenticator
       path: /training/sync-adapters/creating-authenticator.html
@@ -371,8 +467,9 @@
       path: /training/sync-adapters/running-sync-adapter.html
   - title: Transmitting Network Data Using Volley
     path: /training/volley/index.html
-    custom_link_attributes:
-    - description="How to perform fast, scalable UI operations over the network using Volley"
+    path_attributes:
+    - name: description
+      value: How to perform fast, scalable UI operations over the network using Volley
     section:
     - title: Sending a Simple Request
       path: /training/volley/simple.html
@@ -388,8 +485,9 @@
   section:
   - title: Making Your App Location-Aware
     path: /training/location/index.html
-    custom_link_attributes:
-    - description="How to add location-aware features to your app by getting the user's current location."
+    path_attributes:
+    - name: description
+      value: How to add location-aware features to your app by getting the user's current location.
     section:
     - title: Getting the Last Known Location
       path: /training/location/retrieve-current.html
@@ -403,16 +501,18 @@
       path: /training/location/geofencing.html
   - title: Adding Maps
     path: /training/maps/index.html
-    custom_link_attributes:
-    - description="How to add maps and mapping information to your app."
+    path_attributes:
+    - name: description
+      value: How to add maps and mapping information to your app.
 
 - title: Building Apps with User Info & Sign-In
   path: /training/building-userinfo.html
   section:
   - title: Accessing Contacts Data
     path: /training/contacts-provider/index.html
-    custom_link_attributes:
-    - description="How to use Android's central address book, the Contacts Provider, to display contacts and their details and modify contact information."
+    path_attributes:
+    - name: description
+      value: How to use Android's central address book, the Contacts Provider, to display contacts and their details and modify contact information.
     section:
     - title: Retrieving a List of Contacts
       path: /training/contacts-provider/retrieve-names.html
@@ -424,16 +524,18 @@
       path: /training/contacts-provider/display-contact-badge.html
   - title: Adding Sign-In
     path: /training/sign-in/index.html
-    custom_link_attributes:
-    - description="How to add user sign-in functionality to your app."
+    path_attributes:
+    - name: description
+      value: How to add user sign-in functionality to your app.
 
 - title: Building Apps for Wearables
   path: /training/building-wearables.html
   section:
   - title: Adding Wearable Features to Notifications
     path: /training/wearables/notifications/index.html
-    custom_link_attributes:
-    - description="How to build handheld notifications that are synced to and look great on wearables."
+    path_attributes:
+    - name: description
+      value: How to build handheld notifications that are synced to and look great on wearables.
     section:
     - title: Creating a Notification
       path: /training/wearables/notifications/creating.html
@@ -445,8 +547,9 @@
       path: /training/wearables/notifications/stacks.html
   - title: Creating Wearable Apps
     path: /training/wearables/apps/index.html
-    custom_link_attributes:
-    - description="How to build apps that run directly on wearables."
+    path_attributes:
+    - name: description
+      value: How to build apps that run directly on wearables.
     section:
     - title: Creating and Running a Wearable App
       path: /training/wearables/apps/creating.html
@@ -462,8 +565,9 @@
       path: /training/wearables/apps/bt-debugging.html
   - title: Creating Custom UIs
     path: /training/wearables/ui/index.html
-    custom_link_attributes:
-    - description="How to create custom user interfaces for wearable apps."
+    path_attributes:
+    - name: description
+      value: How to create custom user interfaces for wearable apps.
     section:
     - title: Defining Layouts
       path: /training/wearables/ui/layouts.html
@@ -479,8 +583,9 @@
       path: /training/wearables/ui/exit.html
   - title: Sending and Syncing Data
     path: /training/wearables/data-layer/index.html
-    custom_link_attributes:
-    - description="How to sync data between handhelds and wearables."
+    path_attributes:
+    - name: description
+      value: How to sync data between handhelds and wearables.
     section:
     - title: Accessing the Wearable Data Layer
       path: /training/wearables/data-layer/accessing.html
@@ -494,8 +599,9 @@
       path: /training/wearables/data-layer/events.html
   - title: Creating Watch Faces
     path: /training/wearables/watch-faces/index.html
-    custom_link_attributes:
-    - description="How to create watch faces for wearables."
+    path_attributes:
+    - name: description
+      value: How to create watch faces for wearables.
     section:
     - title: Designing Watch Faces
       path: /training/wearables/watch-faces/designing.html
@@ -515,70 +621,85 @@
       path: /training/wearables/watch-faces/performance.html
   - title: Detecting Location
     path: /training/articles/wear-location-detection.html
-    custom_link_attributes:
-    - description="How to detect location data on Android Wear devices."
+    path_attributes:
+    - name: description
+      value: How to detect location data on Android Wear devices.
   - title: Requesting Permissions
     path: /training/articles/wear-permissions.html
-    custom_link_attributes:
-    - description="How to request permissions on Android Wear devices."
+    path_attributes:
+    - name: description
+      value: How to request permissions on Android Wear devices.
   - title: Using the Speaker
     path: /training/wearables/wearable-sounds.html
-    custom_link_attributes:
-    - description="How to use the speaker on Android Wear devices."
+    path_attributes:
+    - name: description
+      value: How to use the speaker on Android Wear devices.
 
 - title: Building Apps for TV
   path: /training/tv/index.html
   section:
   - title: Building TV Apps
     path: /training/tv/start/index.html
-    custom_link_attributes:
-    - ja-lang="TV アプリのビルド"
-    - description="How to start building TV apps or extend your existing app to run on TV devices."
+    path_attributes:
+    - name: ja-lang
+      value: TV アプリのビルド
+    - name: description
+      value: How to start building TV apps or extend your existing app to run on TV devices.
     section:
     - title: Getting Started with TV Apps
       path: /training/tv/start/start.html
-      custom_link_attributes:
-      - ja-lang="TV アプリのビルドを開始する"
+      path_attributes:
+      - name: ja-lang
+        value: TV アプリのビルドを開始する
     - title: Handling TV Hardware
       path: /training/tv/start/hardware.html
-      custom_link_attributes:
-      - ja-lang="TV ハードウェアを処理する"
+      path_attributes:
+      - name: ja-lang
+        value: TV ハードウェアを処理する
     - title: Building TV Layouts
       path: /training/tv/start/layouts.html
-      custom_link_attributes:
-      - ja-lang="TV 向けレイアウトをビルドする"
+      path_attributes:
+      - name: ja-lang
+        value: TV 向けレイアウトをビルドする
     - title: Creating TV Navigation
       path: /training/tv/start/navigation.html
-      custom_link_attributes:
-      - ja-lang="TV 用のナビゲーションを作成する"
+      path_attributes:
+      - name: ja-lang
+        value: TV 用のナビゲーションを作成する
   - title: Building TV Playback Apps
     path: /training/tv/playback/index.html
-    custom_link_attributes:
-    - ja-lang="TV 再生アプリのビルド"
-    - description="How to build apps that provide media catalogs and play content."
+    path_attributes:
+    - name: ja-lang
+      value: TV 再生アプリのビルド
+    - name: description
+      value: How to build apps that provide media catalogs and play content.
     section:
     - title: Creating a Catalog Browser
       path: /training/tv/playback/browse.html
-      custom_link_attributes:
-      - ja-lang="カタログ ブラウザを作成する"
+      path_attributes:
+      - name: ja-lang
+        value: カタログ ブラウザを作成する
     - title: Providing a Card View
       path: /training/tv/playback/card.html
     - title: Building a Details View
       path: /training/tv/playback/details.html
-      custom_link_attributes:
-      - ja-lang="詳細ビューをビルドする"
+      path_attributes:
+      - name: ja-lang
+        value: 詳細ビューをビルドする
     - title: Displaying a Now Playing Card
       path: /training/tv/playback/now-playing.html
-      custom_link_attributes:
-      - ja-lang="再生中カードを表示する"
+      path_attributes:
+      - name: ja-lang
+        value: 再生中カードを表示する
     - title: Adding a Guided Step
       path: /training/tv/playback/guided-step.html
     - title: Enabling Background Playback
       path: /training/tv/playback/options.html
   - title: Helping Users Find Content on TV
     path: /training/tv/discovery/index.html
-    custom_link_attributes:
-    - description="How to help users discover content from your app."
+    path_attributes:
+    - name: description
+      value: How to help users discover content from your app.
     section:
     - title: Recommending TV Content
       path: /training/tv/discovery/recommendations.html
@@ -588,12 +709,14 @@
       path: /training/tv/discovery/in-app-search.html
   - title: Building TV Games
     path: /training/tv/games/index.html
-    custom_link_attributes:
-    - description="How to build games for TV."
+    path_attributes:
+    - name: description
+      value: How to build games for TV.
   - title: Building TV Channels
     path: /training/tv/tif/index.html
-    custom_link_attributes:
-    - description="How to build channels for TV."
+    path_attributes:
+    - name: description
+      value: How to build channels for TV.
     section:
     - title: Developing a TV Input Service
       path: /training/tv/tif/tvinput.html
@@ -603,24 +726,28 @@
       path: /training/tv/tif/ui.html
   - title: TV Apps Checklist
     path: /training/tv/publishing/checklist.html
-    custom_link_attributes:
-    - description="An itemized list of requirements for TV apps."
+    path_attributes:
+    - name: description
+      value: An itemized list of requirements for TV apps.
 
 - title: Building Apps for Auto
   path: /training/auto/index.html
   section:
   - title: Getting Started with Auto
     path: /training/auto/start/index.html
-    custom_link_attributes:
-    - description="How to start building or extending apps that work with Auto devices."
+    path_attributes:
+    - name: description
+      value: How to start building or extending apps that work with Auto devices.
   - title: Playing Audio for Auto
     path: /training/auto/audio/index.html
-    custom_link_attributes:
-    - description="How to extend audio apps to play content on Auto devices."
+    path_attributes:
+    - name: description
+      value: How to extend audio apps to play content on Auto devices.
   - title: Messaging for Auto
     path: /training/auto/messaging/index.html
-    custom_link_attributes:
-    - description="How to extend text messaging apps to work with Auto devices."
+    path_attributes:
+    - name: description
+      value: How to extend text messaging apps to work with Auto devices.
 
 - title: Building Apps for Work
   path: /training/enterprise/index.html
@@ -639,8 +766,9 @@
   section:
   - title: Designing Effective Navigation
     path: /training/design-navigation/index.html
-    custom_link_attributes:
-    - description="How to plan your app's screen hierarchy and forms of navigation so users can effectively and intuitively traverse your app content using various navigation patterns."
+    path_attributes:
+    - name: description
+      value: How to plan your app's screen hierarchy and forms of navigation so users can effectively and intuitively traverse your app content using various navigation patterns.
     section:
     - title: Planning Screens and Their Relationships
       path: /training/design-navigation/screen-planning.html
@@ -654,8 +782,9 @@
       path: /training/design-navigation/wireframing.html
   - title: Implementing Effective Navigation
     path: /training/implementing-navigation/index.html
-    custom_link_attributes:
-    - description="How to implement various navigation patterns such as swipe views, a navigation drawer, and up navigation."
+    path_attributes:
+    - name: description
+      value: How to implement various navigation patterns such as swipe views, a navigation drawer, and up navigation.
     section:
     - title: Creating Swipe Views with Tabs
       path: /training/implementing-navigation/lateral.html
@@ -669,8 +798,9 @@
       path: /training/implementing-navigation/descendant.html
   - title: Notifying the User
     path: /training/notify-user/index.html
-    custom_link_attributes:
-    - description="How to display messages called notifications outside of your application's UI."
+    path_attributes:
+    - name: description
+      value: How to display messages called notifications outside of your application's UI.
     section:
     - title: Building a Notification
       path: /training/notify-user/build-notification.html
@@ -684,8 +814,9 @@
       path: /training/notify-user/display-progress.html
   - title: Supporting Swipe-to-Refresh
     path: /training/swipe/index.html
-    custom_link_attributes:
-    - description="How to modify your app's layout to support manual content updates triggered by the swipe-to-refresh gesture."
+    path_attributes:
+    - name: description
+      value: How to modify your app's layout to support manual content updates triggered by the swipe-to-refresh gesture.
     section:
     - title: Adding Swipe-to-Refresh To Your App
       path: /training/swipe/add-swipe-interface.html
@@ -693,8 +824,9 @@
       path: /training/swipe/respond-refresh-request.html
   - title: Adding Search Functionality
     path: /training/search/index.html
-    custom_link_attributes:
-    - description="How to properly add a search interface to your app and create a searchable database."
+    path_attributes:
+    - name: description
+      value: How to properly add a search interface to your app and create a searchable database.
     section:
     - title: Setting up the Search Interface
       path: /training/search/setup.html
@@ -704,8 +836,9 @@
       path: /training/search/backward-compat.html
   - title: Making Your App Content Searchable by Google
     path: /training/app-indexing/index.html
-    custom_link_attributes:
-    - description="How to enable deep linking and indexing of your application content so that users can open this content directly from their mobile search results."
+    path_attributes:
+    - name: description
+      value: How to enable deep linking and indexing of your application content so that users can open this content directly from their mobile search results.
     section:
     - title: Enabling Deep Links for App Content
       path: /training/app-indexing/deep-linking.html
@@ -713,47 +846,64 @@
       path: /training/app-indexing/enabling-app-indexing.html
   - title: Optimizing Content for the Assistant
     path: /training/articles/assistant.html
-    custom_link_attributes:
-    - description="Support contextually relevant actions through the Assist API."
+    path_attributes:
+    - name: description
+      value: Support contextually relevant actions through the Assist API.
   - title: Handling App Links
     path: /training/app-links/index.html
-    custom_link_attributes:
-    - description="How to enable the system to handle web requests by taking the user directly to your app instead of your website."
+    path_attributes:
+    - name: description
+      value: How to enable the system to handle web requests by taking the user directly to your app instead of your website.
 
 - title: Best Practices for User Interface
   path: /training/best-ui.html
   section:
   - title: Designing for Multiple Screens
     path: /training/multiscreen/index.html
-    custom_link_attributes:
-    - es-lang="Cómo diseñar aplicaciones para varias pantallas"
-    - ja-lang="複数画面のデザイン"
-    - zh-cn-lang="针对多种屏幕进行设计"
-    - description="How to build a user interface that's flexible enough to fit perfectly on any screen and how to create different interaction patterns that are optimized for different screen sizes."
+    path_attributes:
+    - name: es-lang
+      value: Cómo diseñar aplicaciones para varias pantallas
+    - name: ja-lang
+      value: 複数画面のデザイン
+    - name: zh-cn-lang
+      value: 针对多种屏幕进行设计
+    - name: description
+      value: How to build a user interface that's flexible enough to fit perfectly on any screen and how to create different interaction patterns that are optimized for different screen sizes.
     section:
     - title: Supporting Different Screen Sizes
       path: /training/multiscreen/screensizes.html
-      custom_link_attributes:
-      - es-lang="Cómo admitir varios tamaños de pantalla"
-      - ja-lang="さまざまな画面サイズのサポート"
-      - ko-lang="다양한 화면 크기 지원"
-      - zh-cn-lang="支持各种屏幕尺寸"
+      path_attributes:
+      - name: es-lang
+        value: Cómo admitir varios tamaños de pantalla
+      - name: ja-lang
+        value: さまざまな画面サイズのサポート
+      - name: ko-lang
+        value: 다양한 화면 크기 지원
+      - name: zh-cn-lang
+        value: 支持各种屏幕尺寸
     - title: Supporting Different Screen Densities
       path: /training/multiscreen/screendensities.html
-      custom_link_attributes:
-      - es-lang="Cómo admitir varias densidades de pantalla"
-      - ja-lang="さまざまな画面密度のサポート"
-      - zh-cn-lang="支持各种屏幕密度"
+      path_attributes:
+      - name: es-lang
+        value: Cómo admitir varias densidades de pantalla
+      - name: ja-lang
+        value: さまざまな画面密度のサポート
+      - name: zh-cn-lang
+        value: 支持各种屏幕密度
     - title: Implementing Adaptive UI Flows
       path: /training/multiscreen/adaptui.html
-      custom_link_attributes:
-      - es-lang="Cómo implementar interfaces de usuario adaptables"
-      - ja-lang="順応性のある UI フローの実装"
-      - zh-cn-lang="实施自适应用户界面流程"
+      path_attributes:
+      - name: es-lang
+        value: Cómo implementar interfaces de usuario adaptables
+      - name: ja-lang
+        value: 順応性のある UI フローの実装
+      - name: zh-cn-lang
+        value: 实施自适应用户界面流程
   - title: Adding the App Bar
     path: /training/appbar/index.html
-    custom_link_attributes:
-    - description="How to use the support library's toolbar widget to implement an app bar that displays properly on a wide range of devices."
+    path_attributes:
+    - name: description
+      value: How to use the support library's toolbar widget to implement an app bar that displays properly on a wide range of devices.
     section:
     - title: Setting Up the App Bar
       path: /training/appbar/setting-up.html
@@ -765,8 +915,9 @@
       path: /training/appbar/action-views.html
   - title: Showing Pop-Up Messages
     path: /training/snackbar/index.html
-    custom_link_attributes:
-    - description="How to use the support library's Snackbar widget to display a brief pop-up message."
+    path_attributes:
+    - name: description
+      value: How to use the support library's Snackbar widget to display a brief pop-up message.
     section:
     - title: Building and Displaying a Pop-Up Message
       path: /training/snackbar/showing.html
@@ -774,8 +925,9 @@
       path: /training/snackbar/action.html
   - title: Creating Custom Views
     path: /training/custom-views/index.html
-    custom_link_attributes:
-    - description="How to build custom UI widgets that are interactive and smooth."
+    path_attributes:
+    - name: description
+      value: How to build custom UI widgets that are interactive and smooth.
     section:
     - title: Creating a Custom View Class
       path: /training/custom-views/create-view.html
@@ -787,8 +939,9 @@
       path: /training/custom-views/optimizing-view.html
   - title: Creating Backward-Compatible UIs
     path: /training/backward-compatible-ui/index.html
-    custom_link_attributes:
-    - description="How to use UI components and other APIs from the more recent versions of Android while remaining compatible with older versions of the platform."
+    path_attributes:
+    - name: description
+      value: How to use UI components and other APIs from the more recent versions of Android while remaining compatible with older versions of the platform.
     section:
     - title: Abstracting the New APIs
       path: /training/backward-compatible-ui/abstracting.html
@@ -800,8 +953,9 @@
       path: /training/backward-compatible-ui/using-component.html
   - title: Implementing Accessibility
     path: /training/accessibility/index.html
-    custom_link_attributes:
-    - description="How to make your app accessible to users with vision impairment or other physical disabilities."
+    path_attributes:
+    - name: description
+      value: How to make your app accessible to users with vision impairment or other physical disabilities.
     section:
     - title: Developing Accessible Applications
       path: /training/accessibility/accessible-app.html
@@ -811,8 +965,9 @@
       path: /training/accessibility/testing.html
   - title: Managing the System UI
     path: /training/system-ui/index.html
-    custom_link_attributes:
-    - description="How to hide and show status and navigation bars across different versions of Android, while managing the display of other screen components."
+    path_attributes:
+    - name: description
+      value: How to hide and show status and navigation bars across different versions of Android, while managing the display of other screen components.
     section:
     - title: Dimming the System Bars
       path: /training/system-ui/dim.html
@@ -826,110 +981,184 @@
       path: /training/system-ui/visibility.html
   - title: Creating Apps with Material Design
     path: /training/material/index.html
-    custom_link_attributes:
-    - es-lang="Crear aplicaciones con Material Design"
-    - in-lang="Desain Bahan untuk Pengembang"
-    - ja-lang="マテリアル デザインでのアプリ作成"
-    - ko-lang="개발자를 위한 머티리얼 디자인"
-    - pt-br-lang="Material Design para desenvolvedores"
-    - ru-lang="Создание приложений с помощью Material Design"
-    - vi-lang="Material Design cho Nhà phát triển"
-    - zh-cn-lang="面向开发者的材料设计"
-    - zh-tw-lang="開發人員材料設計"
-    - description="How to implement material design on Android."
+    path_attributes:
+    - name: es-lang
+      value: Crear aplicaciones con Material Design
+    - name: in-lang
+      value: Desain Bahan untuk Pengembang
+    - name: ja-lang
+      value: マテリアル デザインでのアプリ作成
+    - name: ko-lang
+      value: 개발자를 위한 머티리얼 디자인
+    - name: pt-br-lang
+      value: Material Design para desenvolvedores
+    - name: ru-lang
+      value: Создание приложений с помощью Material Design
+    - name: vi-lang
+      value: Material Design cho Nhà phát triển
+    - name: zh-cn-lang
+      value: 面向开发者的材料设计
+    - name: zh-tw-lang
+      value: 開發人員材料設計
+    - name: description
+      value: How to implement material design on Android.
     section:
     - title: Getting Started
       path: /training/material/get-started.html
-      custom_link_attributes:
-      - es-lang="Comencemos"
-      - in-lang="Memulai"
-      - ja-lang="スタート ガイド"
-      - ko-lang="시작하기"
-      - pt-br-lang="Como iniciar"
-      - ru-lang="Начало работы"
-      - vi-lang="Bắt đầu"
-      - zh-cn-lang="入门指南"
-      - zh-tw-lang="開始使用"
+      path_attributes:
+      - name: es-lang
+        value: Comencemos
+      - name: in-lang
+        value: Memulai
+      - name: ja-lang
+        value: スタート ガイド
+      - name: ko-lang
+        value: 시작하기
+      - name: pt-br-lang
+        value: Como iniciar
+      - name: ru-lang
+        value: Начало работы
+      - name: vi-lang
+        value: Bắt đầu
+      - name: zh-cn-lang
+        value: 入门指南
+      - name: zh-tw-lang
+        value: 開始使用
     - title: Using the Material Theme
       path: /training/material/theme.html
-      custom_link_attributes:
-      - es-lang="Usar el tema Material"
-      - in-lang="Menggunakan Tema Bahan"
-      - ja-lang="マテリアル テーマの使用"
-      - ko-lang="머티어리얼 테마 사용"
-      - pt-br-lang="Como usar o tema do Material"
-      - ru-lang="Использование темы Material Design"
-      - vi-lang="Sử dụng Chủ đề Material"
-      - zh-cn-lang="使用材料主题"
-      - zh-tw-lang="使用材料設計風格"
+      path_attributes:
+      - name: es-lang
+        value: Usar el tema Material
+      - name: in-lang
+        value: Menggunakan Tema Bahan
+      - name: ja-lang
+        value: マテリアル テーマの使用
+      - name: ko-lang
+        value: 머티어리얼 테마 사용
+      - name: pt-br-lang
+        value: Como usar o tema do Material
+      - name: ru-lang
+        value: Использование темы Material Design
+      - name: vi-lang
+        value: Sử dụng Chủ đề Material
+      - name: zh-cn-lang
+        value: 使用材料主题
+      - name: zh-tw-lang
+        value: 使用材料設計風格
     - title: Creating Lists and Cards
       path: /training/material/lists-cards.html
-      custom_link_attributes:
-      - es-lang="Crear listas y tarjetas"
-      - in-lang="Membuat Daftar dan Kartu"
-      - ja-lang="リストとカードの作成"
-      - ko-lang="목록 및 카드 생성"
-      - pt-br-lang="Como criar listas e cartões"
-      - ru-lang="Создание списков и подсказок"
-      - vi-lang="Tạo Danh sách và Thẻ"
-      - zh-cn-lang="创建列表与卡片"
-      - zh-tw-lang="建立清單和卡片"
+      path_attributes:
+      - name: es-lang
+        value: Crear listas y tarjetas
+      - name: in-lang
+        value: Membuat Daftar dan Kartu
+      - name: ja-lang
+        value: リストとカードの作成
+      - name: ko-lang
+        value: 목록 및 카드 생성
+      - name: pt-br-lang
+        value: Como criar listas e cartões
+      - name: ru-lang
+        value: Создание списков и подсказок
+      - name: vi-lang
+        value: Tạo Danh sách và Thẻ
+      - name: zh-cn-lang
+        value: 创建列表与卡片
+      - name: zh-tw-lang
+        value: 建立清單和卡片
     - title: Defining Shadows and Clipping Views
       path: /training/material/shadows-clipping.html
-      custom_link_attributes:
-      - es-lang="Definir vistas de recorte y sombras"
-      - in-lang="Mendefinisikan Bayangan dan Memangkas Tampilan"
-      - ja-lang="シャドウとクリッピング ビューの定義"
-      - ko-lang="그림자 정의 및 뷰 클리핑"
-      - pt-br-lang="Como definir sombras e recortar visualizações"
-      - ru-lang="Определение теней и обрезка представлений"
-      - vi-lang="Định nghĩa Đổ bóng và Dạng xem Cắt hình"
-      - zh-cn-lang="定义阴影与裁剪视图"
-      - zh-tw-lang="定義陰影和裁剪檢視"
+      path_attributes:
+      - name: es-lang
+        value: Definir vistas de recorte y sombras
+      - name: in-lang
+        value: Mendefinisikan Bayangan dan Memangkas Tampilan
+      - name: ja-lang
+        value: シャドウとクリッピング ビューの定義
+      - name: ko-lang
+        value: 그림자 정의 및 뷰 클리핑
+      - name: pt-br-lang
+        value: Como definir sombras e recortar visualizações
+      - name: ru-lang
+        value: Определение теней и обрезка представлений
+      - name: vi-lang
+        value: Định nghĩa Đổ bóng và Dạng xem Cắt hình
+      - name: zh-cn-lang
+        value: 定义阴影与裁剪视图
+      - name: zh-tw-lang
+        value: 定義陰影和裁剪檢視
     - title: Working with Drawables
       path: /training/material/drawables.html
-      custom_link_attributes:
-      - es-lang="Trabajar con interfaces dibujables"
-      - in-lang="Bekerja dengan Drawable"
-      - ja-lang="ドローアブルの使用"
-      - ko-lang="Drawable 사용"
-      - pt-br-lang="Como trabalhar com desenháveis"
-      - ru-lang="Работа с элементами дизайна"
-      - vi-lang="Làm việc với Nội dung vẽ được"
-      - zh-cn-lang="使用 Drawables"
-      - zh-tw-lang="使用可繪項目"
+      path_attributes:
+      - name: es-lang
+        value: Trabajar con interfaces dibujables
+      - name: in-lang
+        value: Bekerja dengan Drawable
+      - name: ja-lang
+        value: ドローアブルの使用
+      - name: ko-lang
+        value: Drawable 사용
+      - name: pt-br-lang
+        value: Como trabalhar com desenháveis
+      - name: ru-lang
+        value: Работа с элементами дизайна
+      - name: vi-lang
+        value: Làm việc với Nội dung vẽ được
+      - name: zh-cn-lang
+        value: 使用 Drawables
+      - name: zh-tw-lang
+        value: 使用可繪項目
     - title: Defining Custom Animations
       path: /training/material/animations.html
-      custom_link_attributes:
-      - es-lang="Definir animaciones personalizadas"
-      - in-lang="Mendefinisikan Animasi Custom"
-      - ja-lang="カスタム アニメーションの定義"
-      - ko-lang="사용자지정 애니메이션 정의"
-      - pt-br-lang="Como definir animações personalizadas"
-      - ru-lang="Определение настраиваемой анимации"
-      - vi-lang="Định nghĩa Hoạt hình Tùy chỉnh"
-      - zh-cn-lang="定义定制动画"
-      - zh-tw-lang="定義自訂動畫"
+      path_attributes:
+      - name: es-lang
+        value: Definir animaciones personalizadas
+      - name: in-lang
+        value: Mendefinisikan Animasi Custom
+      - name: ja-lang
+        value: カスタム アニメーションの定義
+      - name: ko-lang
+        value: 사용자지정 애니메이션 정의
+      - name: pt-br-lang
+        value: Como definir animações personalizadas
+      - name: ru-lang
+        value: Определение настраиваемой анимации
+      - name: vi-lang
+        value: Định nghĩa Hoạt hình Tùy chỉnh
+      - name: zh-cn-lang
+        value: 定义定制动画
+      - name: zh-tw-lang
+        value: 定義自訂動畫
     - title: Maintaining Compatibility
       path: /training/material/compatibility.html
-      custom_link_attributes:
-      - es-lang="Mantener la compatibilidad"
-      - in-lang="Mempertahankan Kompatibilitas"
-      - ja-lang="互換性の維持"
-      - ko-lang="호환성 유지"
-      - pt-br-lang="Como manter a compatibilidade"
-      - ru-lang="Обеспечение совместимости"
-      - vi-lang="Duy trì Tính tương thích"
-      - zh-cn-lang="维护兼容性"
-      - zh-tw-lang="維持相容性"
+      path_attributes:
+      - name: es-lang
+        value: Mantener la compatibilidad
+      - name: in-lang
+        value: Mempertahankan Kompatibilitas
+      - name: ja-lang
+        value: 互換性の維持
+      - name: ko-lang
+        value: 호환성 유지
+      - name: pt-br-lang
+        value: Como manter a compatibilidade
+      - name: ru-lang
+        value: Обеспечение совместимости
+      - name: vi-lang
+        value: Duy trì Tính tương thích
+      - name: zh-cn-lang
+        value: 维护兼容性
+      - name: zh-tw-lang
+        value: 維持相容性
 
 - title: Best Practices for User Input
   path: /training/best-user-input.html
   section:
   - title: Using Touch Gestures
     path: /training/gestures/index.html
-    custom_link_attributes:
-    - description="How to write apps that allow users to interact with the touch screen via touch gestures."
+    path_attributes:
+    - name: description
+      value: How to write apps that allow users to interact with the touch screen via touch gestures.
     section:
     - title: Detecting Common Gestures
       path: /training/gestures/detector.html
@@ -945,8 +1174,9 @@
       path: /training/gestures/viewgroup.html
   - title: Handling Keyboard Input
     path: /training/keyboard-input/index.html
-    custom_link_attributes:
-    - description="How to specify the appearance and behaviors of soft input methods (such as on-screen keyboards) and how to optimize the experience with hardware keyboards."
+    path_attributes:
+    - name: description
+      value: How to specify the appearance and behaviors of soft input methods (such as on-screen keyboards) and how to optimize the experience with hardware keyboards.
     section:
     - title: Specifying the Input Method Type
       path: /training/keyboard-input/style.html
@@ -958,8 +1188,9 @@
       path: /training/keyboard-input/commands.html
   - title: Supporting Game Controllers
     path: /training/game-controllers/index.html
-    custom_link_attributes:
-    - description="How to write apps that support game controllers."
+    path_attributes:
+    - name: description
+      value: How to write apps that support game controllers.
     section:
     - title: Handling Controller Actions
       path: /training/game-controllers/controller-input.html
@@ -973,8 +1204,9 @@
   section:
   - title: Running in a Background Service
     path: /training/run-background-service/index.html
-    custom_link_attributes:
-    - description="How to improve UI performance and responsiveness by sending work to a Service running in the background"
+    path_attributes:
+    - name: description
+      value: How to improve UI performance and responsiveness by sending work to a Service running in the background
     section:
     - title: Creating a Background Service
       path: /training/run-background-service/create-service.html
@@ -984,8 +1216,9 @@
       path: /training/run-background-service/report-status.html
   - title: Loading Data in the Background
     path: /training/load-data-background/index.html
-    custom_link_attributes:
-    - description="How to use CursorLoader to query data without affecting UI responsiveness."
+    path_attributes:
+    - name: description
+      value: How to use CursorLoader to query data without affecting UI responsiveness.
     section:
     - title: Running a Query with a CursorLoader
       path: /training/load-data-background/setup-loader.html
@@ -993,8 +1226,9 @@
       path: /training/load-data-background/handle-results.html
   - title: Managing Device Awake State
     path: /training/scheduling/index.html
-    custom_link_attributes:
-    - description="How to use repeating alarms and wake locks to run background jobs."
+    path_attributes:
+    - name: description
+      value: How to use repeating alarms and wake locks to run background jobs.
     section:
     - title: Keeping the Device Awake
       path: /training/scheduling/wakelock.html
@@ -1006,16 +1240,19 @@
   section:
   - title: Managing Your App's Memory
     path: /training/articles/memory.html
-    custom_link_attributes:
-    - description="How to keep your app's memory footprint small in order to improve performance on a variety of mobile devices."
+    path_attributes:
+    - name: description
+      value: How to keep your app's memory footprint small in order to improve performance on a variety of mobile devices.
   - title: Performance Tips
     path: /training/articles/perf-tips.html
-    custom_link_attributes:
-    - description="How to optimize your app's performance in various ways to improve its responsiveness and battery efficiency."
+    path_attributes:
+    - name: description
+      value: How to optimize your app's performance in various ways to improve its responsiveness and battery efficiency.
   - title: Improving Layout Performance
     path: /training/improving-layouts/index.html
-    custom_link_attributes:
-    - description="How to identify problems in your app's layout performance and improve the UI responsiveness."
+    path_attributes:
+    - name: description
+      value: How to identify problems in your app's layout performance and improve the UI responsiveness.
     section:
     - title: Optimizing Layout Hierarchies
       path: /training/improving-layouts/optimizing-layout.html
@@ -1027,11 +1264,15 @@
       path: /training/improving-layouts/smooth-scrolling.html
   - title: Optimizing Battery Life
     path: /training/monitoring-device-state/index.html
-    custom_link_attributes:
-    - es-lang="Cómo optimizar la duración de la batería"
-    - ja-lang="電池消費量の最適化"
-    - zh-cn-lang="优化电池使用时间"
-    - description="How to minimize the amount of power your app requires by adapting to current power conditions and performing power-hungry tasks at proper intervals."
+    path_attributes:
+    - name: es-lang
+      value: Cómo optimizar la duración de la batería
+    - name: ja-lang
+      value: 電池消費量の最適化
+    - name: zh-cn-lang
+      value: 优化电池使用时间
+    - name: description
+      value: How to minimize the amount of power your app requires by adapting to current power conditions and performing power-hungry tasks at proper intervals.
     section:
     - title: Reducing Network Battery Drain
       path: /training/performance/battery/network/index.html
@@ -1052,32 +1293,45 @@
       path: /training/monitoring-device-state/doze-standby.html
     - title: Monitoring the Battery Level and Charging State
       path: /training/monitoring-device-state/battery-monitoring.html
-      custom_link_attributes:
-      - es-lang="Cómo controlar el nivel de batería y el estado de carga"
-      - ja-lang="電池残量と充電状態の監視"
-      - zh-cn-lang="监控电池电量和充电状态"
+      path_attributes:
+      - name: es-lang
+        value: Cómo controlar el nivel de batería y el estado de carga
+      - name: ja-lang
+        value: 電池残量と充電状態の監視
+      - name: zh-cn-lang
+        value: 监控电池电量和充电状态
     - title: Determining and Monitoring the Docking State and Type
       path: /training/monitoring-device-state/docking-monitoring.html
-      custom_link_attributes:
-      - es-lang="Cómo determinar y controlar el tipo de conector y el estado de la conexión"
-      - ja-lang="ホルダーの装着状態とタイプの特定と監視"
-      - zh-cn-lang="确定和监控基座对接状态和类型"
+      path_attributes:
+      - name: es-lang
+        value: Cómo determinar y controlar el tipo de conector y el estado de la conexión
+      - name: ja-lang
+        value: ホルダーの装着状態とタイプの特定と監視
+      - name: zh-cn-lang
+        value: 确定和监控基座对接状态和类型
     - title: Determining and Monitoring the Connectivity Status
       path: /training/monitoring-device-state/connectivity-monitoring.html
-      custom_link_attributes:
-      - es-lang="Cómo determinar y controlar el estado de la conectividad"
-      - ja-lang="接続状態の特定と監視"
-      - zh-cn-lang="确定和监控网络连接状态"
+      path_attributes:
+      - name: es-lang
+        value: Cómo determinar y controlar el estado de la conectividad
+      - name: ja-lang
+        value: 接続状態の特定と監視
+      - name: zh-cn-lang
+        value: 确定和监控网络连接状态
     - title: Manipulating Broadcast Receivers On Demand
       path: /training/monitoring-device-state/manifest-receivers.html
-      custom_link_attributes:
-      - es-lang="Cómo manipular los receptores de emisión bajo demanda"
-      - ja-lang="オンデマンドでのブロードキャスト レシーバ操作"
-      - zh-cn-lang="根据需要操作广播接收器"
+      path_attributes:
+      - name: es-lang
+        value: Cómo manipular los receptores de emisión bajo demanda
+      - name: ja-lang
+        value: オンデマンドでのブロードキャスト レシーバ操作
+      - name: zh-cn-lang
+        value: 根据需要操作广播接收器
   - title: Sending Operations to Multiple Threads
     path: /training/multiple-threads/index.html
-    custom_link_attributes:
-    - description="How to improve the performance and scalability of long-running operations by dispatching work to multiple threads."
+    path_attributes:
+    - name: description
+      value: How to improve the performance and scalability of long-running operations by dispatching work to multiple threads.
     section:
     - title: Specifying the Code to Run on a Thread
       path: /training/multiple-threads/define-runnable.html
@@ -1089,68 +1343,81 @@
       path: /training/multiple-threads/communicate-ui.html
   - title: Keeping Your App Responsive
     path: /training/articles/perf-anr.html
-    custom_link_attributes:
-    - description="How to keep your app responsive to user interaction so the UI does not lock-up and display an \"Application Not Responding\" dialog."
+    path_attributes:
+    - name: description
+      value: How to keep your app responsive to user interaction so the UI does not lock-up and display an "Application Not Responding" dialog.
   - title: JNI Tips
     path: /training/articles/perf-jni.html
-    custom_link_attributes:
-    - description="How to efficiently use the Java Native Interface with the Android NDK."
+    path_attributes:
+    - name: description
+      value: How to efficiently use the Java Native Interface with the Android NDK.
   - title: SMP Primer for Android
     path: /training/articles/smp.html
-    custom_link_attributes:
-    - description="Tips for coding Android apps on symmetric multiprocessor systems."
+    path_attributes:
+    - name: description
+      value: Tips for coding Android apps on symmetric multiprocessor systems.
 
 - title: Best Practices for Security & Privacy
   path: /training/best-security.html
   section:
   - title: Security Tips
     path: /training/articles/security-tips.html
-    custom_link_attributes:
-    - description="How to perform various tasks and keep your app's data and your user's data secure."
+    path_attributes:
+    - name: description
+      value: How to perform various tasks and keep your app's data and your user's data secure.
   - title: Security with HTTPS and SSL
     path: /training/articles/security-ssl.html
-    custom_link_attributes:
-    - description="How to ensure that your app is secure when performing network transactions."
+    path_attributes:
+    - name: description
+      value: How to ensure that your app is secure when performing network transactions.
   - title: Updating Your Security Provider to Protect Against SSL Exploits
     path: /training/articles/security-gms-provider.html
-    custom_link_attributes:
-    - description="How to use and update Google Play services security provider, to protect against SSL exploits."
+    path_attributes:
+    - name: description
+      value: How to use and update Google Play services security provider, to protect against SSL exploits.
   - title: Checking Device Compatibility with SafetyNet
     path: /training/safetynet/index.html
-    custom_link_attributes:
-    - description="How to use the SafetyNet service to analyze a device where your app is running and get information about its compatibility with your app."
+    path_attributes:
+    - name: description
+      value: How to use the SafetyNet service to analyze a device where your app is running and get information about its compatibility with your app.
   - title: Enhancing Security with Device Management Policies
     path: /training/enterprise/device-management-policy.html
-    custom_link_attributes:
-    - description="How to create an application that enforces security policies on devices."
+    path_attributes:
+    - name: description
+      value: How to create an application that enforces security policies on devices.
 
 - title: Best Practices for Permissions & Identifiers
   path: /training/best-permissions-ids.html
   section:
   - title: Permissions and User Data
     path: /training/articles/user-data-overview.html
-    custom_link_attributes:
-    - description="Overview of app permissions on Android and how they affect your users."
+    path_attributes:
+    - name: description
+      value: Overview of app permissions on Android and how they affect your users.
   - title: Best Practices for App Permissions
     path: /training/articles/user-data-permissions.html
-    custom_link_attributes:
-    - description="How to manage permissions the right way for users."
+    path_attributes:
+    - name: description
+      value: How to manage permissions the right way for users.
   - title: Best Practices for Unique Identifiers
     path: /training/articles/user-data-ids.html
-    custom_link_attributes:
-    - description="Unique identifiers available and how to choose the right one for your use case."
+    path_attributes:
+    - name: description
+      value: Unique identifiers available and how to choose the right one for your use case.
 
 - title: Best Practices for Testing
   path: /training/testing/index.html
   section:
   - title: Getting Started with Testing
     path: /training/testing/start/index.html
-    custom_link_attributes:
-    - description="How to get started with testing your Android applications."
+    path_attributes:
+    - name: description
+      value: How to get started with testing your Android applications.
   - title: Building Effective Unit Tests
     path: /training/testing/unit-testing/index.html
-    custom_link_attributes:
-    - description="How to build effective unit tests for Android apps."
+    path_attributes:
+    - name: description
+      value: How to build effective unit tests for Android apps.
     section:
     - title: Building Local Unit Tests
       path: /training/testing/unit-testing/local-unit-tests.html
@@ -1158,8 +1425,9 @@
       path: /training/testing/unit-testing/instrumented-unit-tests.html
   - title: Automating UI Tests
     path: /training/testing/ui-testing/index.html
-    custom_link_attributes:
-    - description="How to automate your user interface tests for Android apps."
+    path_attributes:
+    - name: description
+      value: How to automate your user interface tests for Android apps.
     section:
     - title: Testing UI for a Single App
       path: /training/testing/ui-testing/espresso-testing.html
@@ -1167,8 +1435,9 @@
       path: /training/testing/ui-testing/uiautomator-testing.html
   - title: Testing App Component Integrations
     path: /training/testing/integration-testing/index.html
-    custom_link_attributes:
-    - description="How to build effective integration tests for Android apps."
+    path_attributes:
+    - name: description
+      value: How to build effective integration tests for Android apps.
     section:
     - title: Testing Your Service
       path: /training/testing/integration-testing/service-testing.html
@@ -1176,16 +1445,18 @@
       path: /training/testing/integration-testing/content-provider-testing.html
   - title: Testing Display Performance
     path: /training/testing/performance.html
-    custom_link_attributes:
-    - description="How to automate UI performance testing."
+    path_attributes:
+    - name: description
+      value: How to automate UI performance testing.
 
 - title: Using Google Play to Distribute & Monetize
   path: /training/distribute.html
   section:
   - title: Selling In-app Products
     path: /training/in-app-billing/index.html
-    custom_link_attributes:
-    - description="How to sell in-app products from your application using In-app Billing."
+    path_attributes:
+    - name: description
+      value: How to sell in-app products from your application using In-app Billing.
     section:
     - title: Preparing Your App
       path: /training/in-app-billing/preparing-iab-app.html
@@ -1197,8 +1468,9 @@
       path: /training/in-app-billing/test-iab-app.html
   - title: Maintaining Multiple APKs
     path: /training/multiple-apks/index.html
-    custom_link_attributes:
-    - description="How to publish your app on Google Play with separate APKs that target different devices, while using a single app listing."
+    path_attributes:
+    - name: description
+      value: How to publish your app on Google Play with separate APKs that target different devices, while using a single app listing.
     section:
     - title: Creating Multiple APKs for Different API Levels
       path: /training/multiple-apks/api.html
diff --git a/docs/html/training/accessibility/testing.jd b/docs/html/training/accessibility/testing.jd
index 6563f4e..9b30b84 100644
--- a/docs/html/training/accessibility/testing.jd
+++ b/docs/html/training/accessibility/testing.jd
@@ -158,7 +158,7 @@
 the Explore by Touch system feature. The TalkBack accessibility service comes preinstalled on most
 Android devices and can also be downloaded for free from
 <a href="https://play.google.com/store/apps/details?id=com.google.android.marvin.talkback">Google
-Play</a>. The Explore by Touch system feature is available on devices running Android 4.0 and later.
+Play</a>.
 </p>
 
 <h4 id="testing-talkback">Testing with TalkBack</h4>
@@ -192,7 +192,7 @@
   hover events over user interface controls.
 </p>
 
-<p>To enable Explore by Touch on Android 4.0 and later:</p>
+<p>To enable Explore by Touch:</p>
 <ol>
   <li>Launch the <strong>Settings</strong> application.</li>
   <li>Navigate to the <strong>Accessibility</strong> category and select it.</li>
@@ -239,7 +239,7 @@
 than keyboards and D-pads. While gestures allow users to focus on nearly any on-screen
 content, keyboard and D-pad navigation only allow focus on input fields and buttons.</p>
 
-<p>To enable gesture navigation on Android 4.1 and later:</p>
+<p>To enable gesture navigation:</p>
 <ul>
   <li>Enable both TalkBack and the Explore by Touch feature as described in the
     <a href="#testing-ebt">Testing with Explore by Touch</a>. When <em>both</em> of these
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..80309ee 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/articles/security-tips.jd b/docs/html/training/articles/security-tips.jd
index a3b7529..abf6711 100644
--- a/docs/html/training/articles/security-tips.jd
+++ b/docs/html/training/articles/security-tips.jd
@@ -150,7 +150,7 @@
 href="{@docRoot}guide/topics/manifest/grant-uri-permission-element.html">
 &lt;grant-uri-permission element&gt;</a></code>.</p>
 
-<p>When accessing a content provider, use parameterized query methods such as 
+<p>When accessing a content provider, use parameterized query methods such as
 {@link android.content.ContentProvider#query(Uri,String[],String,String[],String) query()},
 {@link android.content.ContentProvider#update(Uri,ContentValues,String,String[]) update()}, and
 {@link android.content.ContentProvider#delete(Uri,String,String[]) delete()} to avoid
@@ -207,13 +207,13 @@
 protection level</a> on permissions for IPC communication between applications
 provided by a single developer.</p>
 
-<p>Do not leak permission-protected data.  This occurs when your app exposes data
-over IPC that is only available because it has a specific permission, but does
-not require that permission of any clients of it’s IPC interface. More
-details on the potential impacts, and frequency of this type of problem is
-provided in this research paper published at USENIX: <a
-href="http://www.cs.berkeley.edu/~afelt/felt_usenixsec2011.pdf">http://www.cs.be
-rkeley.edu/~afelt/felt_usenixsec2011.pdf</a></p>
+<p>Do not leak permission-protected data. This occurs when your app exposes
+data over IPC that is available only because your app has permission to access
+that data. The clients of your app's IPC interface may not have that same
+data-access permission. More details on the frequency and potential effects
+of this issue appear in <a class="external-link"
+href="https://www.usenix.org/legacy/event/sec11/tech/full_papers/Felt.pdf"> this
+research paper</a>, published at USENIX.
 
 
 
@@ -431,14 +431,14 @@
 <p>Use {@link android.webkit.WebView#addJavascriptInterface
 addJavaScriptInterface()} with
 particular care because it allows JavaScript to invoke operations that are
-normally reserved for Android applications.  If you use it, expose 
+normally reserved for Android applications.  If you use it, expose
 {@link android.webkit.WebView#addJavascriptInterface addJavaScriptInterface()} only to
 web pages from which all input is trustworthy.  If untrusted input is allowed,
 untrusted JavaScript may be able to invoke Android methods within your app.  In general, we
 recommend exposing {@link android.webkit.WebView#addJavascriptInterface
 addJavaScriptInterface()} only to JavaScript that is contained within your application APK.</p>
 
-<p>If your application accesses sensitive data with a 
+<p>If your application accesses sensitive data with a
 {@link android.webkit.WebView}, you may want to use the
 {@link android.webkit.WebView#clearCache clearCache()} method to delete any files stored
 locally. Server-side
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
diff --git a/docs/html/training/tv/start/hardware.jd b/docs/html/training/tv/start/hardware.jd
index 9a66c09..97cf7ff 100644
--- a/docs/html/training/tv/start/hardware.jd
+++ b/docs/html/training/tv/start/hardware.jd
@@ -115,6 +115,10 @@
     <td>Sensors</td>
     <td>{@code android.hardware.sensor}</td>
   </tr>
+  <tr>
+    <td>Screen in portrait orientation</td>
+    <td>{@code android.hardware.screen.portrait}</td>
+  </tr>
 </table>
 
 <p id="cont-mic" class="note">
diff --git a/docs/html/training/tv/start/index.jd b/docs/html/training/tv/start/index.jd
index 5426ad7..cbd9b49 100644
--- a/docs/html/training/tv/start/index.jd
+++ b/docs/html/training/tv/start/index.jd
@@ -50,6 +50,10 @@
     Getting Started with TV Apps</a></dt>
     <dd>Learn how to create a new Android Studio project for TV apps or modify your existing
       app project to run on TV devices.</dd>
+  <dt><a href="{@docRoot}training/tv/start/hardware.html">
+    Handling TV Hardware</a></dt>
+    <dd>Learn how to check if your app is running on TV hardware, handle unsupported hardware
+      features, and manage controller devices.</dd>
   <dt><a href="{@docRoot}training/tv/start/layouts.html">
     Building TV Layouts</a></dt>
     <dd>Learn the minimum requirements for TV layouts and how to implement them.</dd>
@@ -57,8 +61,4 @@
     Creating TV Navigation</a></dt>
     <dd>Learn the requirements for TV navigation and how to implement TV-compatible
       navigation.</dd>
-  <dt><a href="{@docRoot}training/tv/start/hardware.html">
-    Handling TV Hardware</a></dt>
-    <dd>Learn how to check if your app is running on TV hardware, handle unsupported hardware
-      features, and manage controller devices.</dd>
 </dl>
diff --git a/docs/html/training/tv/start/start.jd b/docs/html/training/tv/start/start.jd
index 0c04bfa..babde77 100755
--- a/docs/html/training/tv/start/start.jd
+++ b/docs/html/training/tv/start/start.jd
@@ -201,9 +201,12 @@
 <h3 id="banner">Provide a home screen banner</h3>
 
 <p>
-  An application must provide a home screen banner for each localization if it includes a Leanback
-  launcher intent filter. The banner is the app launch point that appears on the home screen in the
-  apps and games rows. Desribe the banner in the manifest as follows:
+  An application must provide a home screen banner image for each localization
+  if it includes a Leanback launcher intent filter. The banner is the app launch
+  point that appears on the home screen in the apps and games rows. When designing your banner,
+  follow the design requirements described in
+  <a href="{@docRoot}design/tv/patterns.html#banner">Banners</a>.
+  To add the banner to your app, describe the banner in the manifest as follows:
 </p>
 
 <pre>
@@ -223,11 +226,6 @@
   tag to supply a banner for a specific activity.
 </p>
 
-<p>
-  See <a href="{@docRoot}design/tv/patterns.html#banner">Banners</a> in the UI Patterns for TV
-  design guide.
-</p>
-
 <h3 id="transition-color">Change the launcher color</h3>
 
 <p>When a TV app launches, the system displays an animation that resembles an expanding, filled
diff --git a/docs/html/training/wearables/watch-faces/service.jd b/docs/html/training/wearables/watch-faces/service.jd
index e94ee56..4246f60 100755
--- a/docs/html/training/wearables/watch-faces/service.jd
+++ b/docs/html/training/wearables/watch-faces/service.jd
@@ -218,8 +218,6 @@
 &lt;service
     android:name=".AnalogWatchFaceService"
     android:label="&#64;string/analog_name"
-    android:allowEmbedded="true"
-    android:taskAffinity=""
     android:permission="android.permission.BIND_WALLPAPER" >
     &lt;meta-data
         android:name="android.service.wallpaper"
diff --git a/docs/image_sources/tools/support-library/appbar-kitkat-orig.png b/docs/image_sources/tools/support-library/appbar-kitkat-orig.png
new file mode 100644
index 0000000..ab680ce
--- /dev/null
+++ b/docs/image_sources/tools/support-library/appbar-kitkat-orig.png
Binary files differ
diff --git a/graphics/java/android/graphics/Canvas.java b/graphics/java/android/graphics/Canvas.java
index af99f79..c65880b 100644
--- a/graphics/java/android/graphics/Canvas.java
+++ b/graphics/java/android/graphics/Canvas.java
@@ -1266,7 +1266,7 @@
     /**
      * @hide
      */
-    protected static void throwIfCannotDraw(Bitmap bitmap) {
+    protected void throwIfCannotDraw(Bitmap bitmap) {
         if (bitmap.isRecycled()) {
             throw new RuntimeException("Canvas: trying to use a recycled bitmap " + bitmap);
         }
diff --git a/graphics/java/android/graphics/PixelCopy.java b/graphics/java/android/graphics/PixelCopy.java
deleted file mode 100644
index c599126..0000000
--- a/graphics/java/android/graphics/PixelCopy.java
+++ /dev/null
@@ -1,104 +0,0 @@
-package android.graphics;
-
-import android.annotation.NonNull;
-import android.os.Handler;
-import android.view.Surface;
-import android.view.SurfaceView;
-import android.view.ThreadedRenderer;
-
-/**
- * Provides a mechanisms to issue pixel copy requests to allow for copy
- * operations from {@link Surface} to {@link Bitmap}
- *
- * @hide
- */
-public final class PixelCopy {
-    /**
-     * Contains the result of a pixel copy request
-     */
-    public static final class Response {
-        /**
-         * Indicates whether or not the copy request completed successfully.
-         * If this is true, then {@link #bitmap} contains the result of the copy.
-         * If this is false, {@link #bitmap} is unmodified from the originally
-         * passed destination.
-         *
-         * For example a request might fail if the source is protected content
-         * so copies are not allowed. Similarly if the source has nothing to
-         * copy from, because either no frames have been produced yet or because
-         * it has already been destroyed, then this will be false.
-         */
-        public boolean success;
-
-        /**
-         * The output bitmap. This is always the same object that was passed
-         * to request() as the 'dest' bitmap. If {@link #success} is true this
-         * contains a copy of the pixels of the source object. If {@link #success}
-         * is false then this is unmodified.
-         */
-        @NonNull
-        public Bitmap bitmap;
-    }
-
-    public interface OnPixelCopyFinished {
-        /**
-         * Callback for when a pixel copy request has completed. This will be called
-         * regardless of whether the copy succeeded or failed.
-         *
-         * @param response Contains the result of the copy request which includes
-         * whether or not the copy was successful.
-         */
-        void onPixelCopyFinished(PixelCopy.Response response);
-    }
-
-    /**
-     * Requests for the display content of a {@link SurfaceView} to be copied
-     * into a provided {@link Bitmap}.
-     *
-     * The contents of the source will be scaled to fit exactly inside the bitmap.
-     * The pixel format of the source buffer will be converted, as part of the copy,
-     * to fit the the bitmap's {@link Bitmap.Config}. The most recently queued buffer
-     * in the SurfaceView's Surface will be used as the source of the copy.
-     *
-     * @param source The source from which to copy
-     * @param dest The destination of the copy. The source will be scaled to
-     * match the width, height, and format of this bitmap.
-     * @param listener Callback for when the pixel copy request completes
-     * @param listenerThread The callback will be invoked on this Handler when
-     * the copy is finished.
-     */
-    public static void request(@NonNull SurfaceView source, @NonNull Bitmap dest,
-            @NonNull OnPixelCopyFinished listener, @NonNull Handler listenerThread) {
-        request(source.getHolder().getSurface(), dest, listener, listenerThread);
-    }
-
-    /**
-     * Requests a copy of the pixels from a {@link Surface} to be copied into
-     * a provided {@link Bitmap}.
-     *
-     * The contents of the source will be scaled to fit exactly inside the bitmap.
-     * The pixel format of the source buffer will be converted, as part of the copy,
-     * to fit the the bitmap's {@link Bitmap.Config}. The most recently queued buffer
-     * in the Surface will be used as the source of the copy.
-     *
-     * @param source The source from which to copy
-     * @param dest The destination of the copy. The source will be scaled to
-     * match the width, height, and format of this bitmap.
-     * @param listener Callback for when the pixel copy request completes
-     * @param listenerThread The callback will be invoked on this Handler when
-     * the copy is finished.
-     */
-    public static void request(@NonNull Surface source, @NonNull Bitmap dest,
-            @NonNull OnPixelCopyFinished listener, @NonNull Handler listenerThread) {
-        // TODO: Make this actually async and fast and cool and stuff
-        final PixelCopy.Response response = new PixelCopy.Response();
-        response.success = ThreadedRenderer.copySurfaceInto(source, dest);
-        response.bitmap = dest;
-        listenerThread.post(new Runnable() {
-            @Override
-            public void run() {
-                listener.onPixelCopyFinished(response);
-            }
-        });
-    }
-}
diff --git a/graphics/java/android/graphics/pdf/PdfRenderer.java b/graphics/java/android/graphics/pdf/PdfRenderer.java
index feb8052..520ebe5 100644
--- a/graphics/java/android/graphics/pdf/PdfRenderer.java
+++ b/graphics/java/android/graphics/pdf/PdfRenderer.java
@@ -129,6 +129,10 @@
      * <strong>Note:</strong> This class takes ownership of the passed in file descriptor
      * and is responsible for closing it when the renderer is closed.
      * </p>
+     * <p>
+     * If the file is from an untrusted source it is recommended to run the renderer in a separate,
+     * isolated process with minimal permissions to limit the impact of security exploits.
+     * </p>
      *
      * @param input Seekable file descriptor to read from.
      *
diff --git a/graphics/java/android/view/PixelCopy.java b/graphics/java/android/view/PixelCopy.java
new file mode 100644
index 0000000..29bf963
--- /dev/null
+++ b/graphics/java/android/view/PixelCopy.java
@@ -0,0 +1,153 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.view;
+
+import android.annotation.IntDef;
+import android.annotation.NonNull;
+import android.graphics.Bitmap;
+import android.os.Handler;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+
+/**
+ * Provides a mechanisms to issue pixel copy requests to allow for copy
+ * operations from {@link Surface} to {@link Bitmap}
+ */
+public final class PixelCopy {
+
+    /** @hide */
+    @Retention(RetentionPolicy.SOURCE)
+    @IntDef({SUCCESS, ERROR_UNKNOWN, ERROR_TIMEOUT, ERROR_SOURCE_NO_DATA,
+        ERROR_SOURCE_INVALID, ERROR_DESTINATION_INVALID})
+    public @interface CopyResultStatus {}
+
+    /** The pixel copy request succeeded */
+    public static final int SUCCESS = 0;
+
+    /** The pixel copy request failed with an unknown error. */
+    public static final int ERROR_UNKNOWN = 1;
+
+    /**
+     * A timeout occurred while trying to acquire a buffer from the source to
+     * copy from.
+     */
+    public static final int ERROR_TIMEOUT = 2;
+
+    /**
+     * The source has nothing to copy from. When the source is a {@link Surface}
+     * this means that no buffers have been queued yet. Wait for the source
+     * to produce a frame and try again.
+     */
+    public static final int ERROR_SOURCE_NO_DATA = 3;
+
+    /**
+     * It is not possible to copy from the source. This can happen if the source
+     * is hardware-protected or destroyed.
+     */
+    public static final int ERROR_SOURCE_INVALID = 4;
+
+    /**
+     * The destination isn't a valid copy target. If the destination is a bitmap
+     * this can occur if the bitmap is too large for the hardware to copy to.
+     * It can also occur if the destination has been destroyed.
+     */
+    public static final int ERROR_DESTINATION_INVALID = 5;
+
+    /**
+     * Listener for observing the completion of a PixelCopy request.
+     */
+    public interface OnPixelCopyFinishedListener {
+        /**
+         * Callback for when a pixel copy request has completed. This will be called
+         * regardless of whether the copy succeeded or failed.
+         *
+         * @param copyResult Contains the resulting status of the copy request.
+         * This will either be {@link PixelCopy#SUCCESS} or one of the
+         * <code>PixelCopy.ERROR_*</code> values.
+         */
+        void onPixelCopyFinished(@CopyResultStatus int copyResult);
+    }
+
+    /**
+     * Requests for the display content of a {@link SurfaceView} to be copied
+     * into a provided {@link Bitmap}.
+     *
+     * The contents of the source will be scaled to fit exactly inside the bitmap.
+     * The pixel format of the source buffer will be converted, as part of the copy,
+     * to fit the the bitmap's {@link Bitmap.Config}. The most recently queued buffer
+     * in the SurfaceView's Surface will be used as the source of the copy.
+     *
+     * @param source The source from which to copy
+     * @param dest The destination of the copy. The source will be scaled to
+     * match the width, height, and format of this bitmap.
+     * @param listener Callback for when the pixel copy request completes
+     * @param listenerThread The callback will be invoked on this Handler when
+     * the copy is finished.
+     */
+    public static void request(@NonNull SurfaceView source, @NonNull Bitmap dest,
+            @NonNull OnPixelCopyFinishedListener listener, @NonNull Handler listenerThread) {
+        request(source.getHolder().getSurface(), dest, listener, listenerThread);
+    }
+
+    /**
+     * Requests a copy of the pixels from a {@link Surface} to be copied into
+     * a provided {@link Bitmap}.
+     *
+     * The contents of the source will be scaled to fit exactly inside the bitmap.
+     * The pixel format of the source buffer will be converted, as part of the copy,
+     * to fit the the bitmap's {@link Bitmap.Config}. The most recently queued buffer
+     * in the Surface will be used as the source of the copy.
+     *
+     * @param source The source from which to copy
+     * @param dest The destination of the copy. The source will be scaled to
+     * match the width, height, and format of this bitmap.
+     * @param listener Callback for when the pixel copy request completes
+     * @param listenerThread The callback will be invoked on this Handler when
+     * the copy is finished.
+     */
+    public static void request(@NonNull Surface source, @NonNull Bitmap dest,
+            @NonNull OnPixelCopyFinishedListener listener, @NonNull Handler listenerThread) {
+        validateBitmapDest(dest);
+        if (!source.isValid()) {
+            throw new IllegalArgumentException("Surface isn't valid, source.isValid() == false");
+        }
+        // TODO: Make this actually async and fast and cool and stuff
+        int result = ThreadedRenderer.copySurfaceInto(source, dest);
+        listenerThread.post(new Runnable() {
+            @Override
+            public void run() {
+                listener.onPixelCopyFinished(result);
+            }
+        });
+    }
+
+    private static void validateBitmapDest(Bitmap bitmap) {
+        // TODO: Pre-check max texture dimens if we can
+        if (bitmap == null) {
+            throw new IllegalArgumentException("Bitmap cannot be null");
+        }
+        if (bitmap.isRecycled()) {
+            throw new IllegalArgumentException("Bitmap is recycled");
+        }
+        if (!bitmap.isMutable()) {
+            throw new IllegalArgumentException("Bitmap is immutable");
+        }
+    }
+
+    private PixelCopy() {}
+}
diff --git a/include/androidfw/ZipUtils.h b/include/androidfw/ZipUtils.h
index 094eaa8..55575d7 100644
--- a/include/androidfw/ZipUtils.h
+++ b/include/androidfw/ZipUtils.h
@@ -21,6 +21,7 @@
 #define __LIBS_ZIPUTILS_H
 
 #include <stdint.h>
+#include <string.h>
 #include <stdio.h>
 #include <time.h>
 
@@ -63,16 +64,21 @@
 
     /*
      * Utility function to convert ZIP's time format to a timespec struct.
+     *
+     * NOTE: this method will clear all existing state from |timespec|.
      */
     static inline void zipTimeToTimespec(uint32_t when, struct tm* timespec) {
         const uint32_t date = when >> 16;
+
+        memset(timespec, 0, sizeof(struct tm));
         timespec->tm_year = ((date >> 9) & 0x7F) + 80; // Zip is years since 1980
-        timespec->tm_mon = (date >> 5) & 0x0F;
+        timespec->tm_mon = ((date >> 5) & 0x0F) - 1;
         timespec->tm_mday = date & 0x1F;
 
         timespec->tm_hour = (when >> 11) & 0x1F;
         timespec->tm_min = (when >> 5) & 0x3F;
         timespec->tm_sec = (when & 0x1F) << 1;
+        timespec->tm_isdst = -1;
     }
 private:
     ZipUtils() {}
diff --git a/libs/androidfw/tests/ZipUtils_test.cpp b/libs/androidfw/tests/ZipUtils_test.cpp
index c6038b5..7293843 100644
--- a/libs/androidfw/tests/ZipUtils_test.cpp
+++ b/libs/androidfw/tests/ZipUtils_test.cpp
@@ -45,7 +45,7 @@
     EXPECT_EQ(2011, t.tm_year + 1900)
             << "Year was improperly converted.";
 
-    EXPECT_EQ(6, t.tm_mon)
+    EXPECT_EQ(5, t.tm_mon)
             << "Month was improperly converted.";
 
     EXPECT_EQ(29, t.tm_mday)
@@ -59,6 +59,11 @@
 
     EXPECT_EQ(40, t.tm_sec)
             << "Second was improperly converted.";
+
+    // We don't have enough information to determine timezone related info.
+    EXPECT_EQ(-1, t.tm_isdst);
+    EXPECT_EQ(0, t.tm_gmtoff);
+    EXPECT_EQ(nullptr, t.tm_zone);
 }
 
 }
diff --git a/libs/hwui/BakedOpDispatcher.cpp b/libs/hwui/BakedOpDispatcher.cpp
index 5fb8425..0f670a8 100644
--- a/libs/hwui/BakedOpDispatcher.cpp
+++ b/libs/hwui/BakedOpDispatcher.cpp
@@ -344,7 +344,8 @@
         const SkPaint& paint, int vertexBufferRenderFlags) {
     if (CC_LIKELY(vertexBuffer.getVertexCount())) {
         bool shadowInterp = vertexBufferRenderFlags & VertexBufferRenderFlags::ShadowInterp;
-        const int transformFlags = TransformFlags::OffsetByFudgeFactor;
+        const int transformFlags = vertexBufferRenderFlags & VertexBufferRenderFlags::Offset
+                ? TransformFlags::OffsetByFudgeFactor : 0;
         Glop glop;
         GlopBuilder(renderer.renderState(), renderer.caches(), &glop)
                 .setRoundRectClipState(state.roundRectClipState)
@@ -568,7 +569,7 @@
                 op.unmappedBounds.getWidth(), op.unmappedBounds.getHeight(), op.paint);
         const AutoTexture holder(texture);
         if (CC_LIKELY(holder.texture)) {
-            renderPathTexture(renderer, state, op.unmappedBounds.left, op.unmappedBounds.right,
+            renderPathTexture(renderer, state, op.unmappedBounds.left, op.unmappedBounds.top,
                     *texture, *(op.paint));
         }
     } else {
diff --git a/libs/hwui/GlopBuilder.cpp b/libs/hwui/GlopBuilder.cpp
index fdbe76a..0a8e3f3 100644
--- a/libs/hwui/GlopBuilder.cpp
+++ b/libs/hwui/GlopBuilder.cpp
@@ -471,18 +471,19 @@
     return *this;
 }
 
-GlopBuilder& GlopBuilder::setFillExternalTexture(Texture& texture) {
+GlopBuilder& GlopBuilder::setFillExternalTexture(Texture& texture, Matrix4& textureTransform) {
     TRIGGER_STAGE(kFillStage);
     REQUIRE_STAGES(kMeshStage | kRoundRectClipStage);
 
     mOutGlop->fill.texture = { &texture,
             GL_TEXTURE_EXTERNAL_OES, GL_LINEAR, GL_CLAMP_TO_EDGE,
-            nullptr };
+            &textureTransform };
 
     setFill(SK_ColorWHITE, 1.0f, SkXfermode::kSrc_Mode, Blend::ModeOrderSwap::NoSwap,
             nullptr, nullptr);
 
     mDescription.modulate = mOutGlop->fill.color.a < 1.0f;
+    mDescription.hasTextureTransform = true;
     return *this;
 }
 
diff --git a/libs/hwui/GlopBuilder.h b/libs/hwui/GlopBuilder.h
index b6c186d..a9dd56f 100644
--- a/libs/hwui/GlopBuilder.h
+++ b/libs/hwui/GlopBuilder.h
@@ -73,7 +73,7 @@
     // TODO: Texture should probably know and own its target.
     // setFillLayer() forces it to GL_TEXTURE which isn't always correct.
     // Similarly setFillLayer normally forces its own wrap & filter mode
-    GlopBuilder& setFillExternalTexture(Texture& texture);
+    GlopBuilder& setFillExternalTexture(Texture& texture, Matrix4& textureTransform);
 
     GlopBuilder& setTransform(const Snapshot& snapshot, const int transformFlags) {
         return setTransform(*snapshot.transform, transformFlags);
diff --git a/libs/hwui/Matrix.h b/libs/hwui/Matrix.h
index 36007cd..9cde5d6 100644
--- a/libs/hwui/Matrix.h
+++ b/libs/hwui/Matrix.h
@@ -236,6 +236,8 @@
 
     static const Matrix4& identity();
 
+    void invalidateType() { mType = kTypeUnknown; }
+
 private:
     mutable uint8_t mType;
 
diff --git a/libs/hwui/Readback.cpp b/libs/hwui/Readback.cpp
index 4a32589..55f823d 100644
--- a/libs/hwui/Readback.cpp
+++ b/libs/hwui/Readback.cpp
@@ -30,7 +30,7 @@
 namespace android {
 namespace uirenderer {
 
-bool Readback::copySurfaceInto(renderthread::RenderThread& renderThread,
+CopyResult Readback::copySurfaceInto(renderthread::RenderThread& renderThread,
         Surface& surface, SkBitmap* bitmap) {
     // TODO: Clean this up and unify it with LayerRenderer::copyLayer,
     // of which most of this is copied from.
@@ -44,12 +44,12 @@
                 || destHeight > caches.maxTextureSize) {
         ALOGW("Can't copy surface into bitmap, %dx%d exceeds max texture size %d",
                 destWidth, destHeight, caches.maxTextureSize);
-        return false;
+        return CopyResult::DestinationInvalid;
     }
     GLuint fbo = renderState.createFramebuffer();
     if (!fbo) {
         ALOGW("Could not obtain an FBO");
-        return false;
+        return CopyResult::UnknownError;
     }
 
     SkAutoLockPixels alp(*bitmap);
@@ -101,19 +101,26 @@
     // Setup the source
     sp<GraphicBuffer> sourceBuffer;
     sp<Fence> sourceFence;
-    status_t err = surface.getLastQueuedBuffer(&sourceBuffer, &sourceFence);
+    Matrix4 texTransform;
+    status_t err = surface.getLastQueuedBuffer(&sourceBuffer, &sourceFence,
+            texTransform.data);
+    texTransform.invalidateType();
     if (err != NO_ERROR) {
         ALOGW("Failed to get last queued buffer, error = %d", err);
-        return false;
+        return CopyResult::UnknownError;
     }
     if (!sourceBuffer.get()) {
         ALOGW("Surface doesn't have any previously queued frames, nothing to readback from");
-        return false;
+        return CopyResult::SourceEmpty;
+    }
+    if (sourceBuffer->getUsage() & GRALLOC_USAGE_PROTECTED) {
+        ALOGW("Surface is protected, unable to copy from it");
+        return CopyResult::SourceInvalid;
     }
     err = sourceFence->wait(500 /* ms */);
     if (err != NO_ERROR) {
         ALOGE("Timeout (500ms) exceeded waiting for buffer fence, abandoning readback attempt");
-        return false;
+        return CopyResult::Timeout;
     }
 
     // TODO: Can't use Image helper since it forces GL_TEXTURE_2D usage via
@@ -130,7 +137,7 @@
 
     if (sourceImage == EGL_NO_IMAGE_KHR) {
         ALOGW("Error creating image (%#x)", eglGetError());
-        return false;
+        return CopyResult::UnknownError;
     }
     GLuint sourceTexId;
     // Create a 2D texture to sample from the EGLImage
@@ -141,7 +148,7 @@
     GLenum status = GL_NO_ERROR;
     while ((status = glGetError()) != GL_NO_ERROR) {
         ALOGW("Error creating image (%#x)", status);
-        return false;
+        return CopyResult::UnknownError;
     }
 
     Texture sourceTexture(caches);
@@ -159,8 +166,8 @@
         Glop glop;
         GlopBuilder(renderState, caches, &glop)
                 .setRoundRectClipState(nullptr)
-                .setMeshTexturedUvQuad(nullptr, Rect(0, 1, 1, 0)) // TODO: simplify with VBO
-                .setFillExternalTexture(sourceTexture)
+                .setMeshTexturedUnitQuad(nullptr)
+                .setFillExternalTexture(sourceTexture, texTransform)
                 .setTransform(Matrix4::identity(), TransformFlags::None)
                 .setModelViewMapUnitToRect(destRect)
                 .build();
@@ -178,7 +185,7 @@
 
     GL_CHECKPOINT(MODERATE);
 
-    return true;
+    return CopyResult::Success;
 }
 
 } // namespace uirenderer
diff --git a/libs/hwui/Readback.h b/libs/hwui/Readback.h
index ea03c82..a112c42 100644
--- a/libs/hwui/Readback.h
+++ b/libs/hwui/Readback.h
@@ -24,9 +24,19 @@
 namespace android {
 namespace uirenderer {
 
+// Keep in sync with PixelCopy.java codes
+enum class CopyResult {
+    Success = 0,
+    UnknownError = 1,
+    Timeout = 2,
+    SourceEmpty = 3,
+    SourceInvalid = 4,
+    DestinationInvalid = 5,
+};
+
 class Readback {
 public:
-    static bool copySurfaceInto(renderthread::RenderThread& renderThread,
+    static CopyResult copySurfaceInto(renderthread::RenderThread& renderThread,
             Surface& surface, SkBitmap* bitmap);
 };
 
diff --git a/libs/hwui/renderthread/RenderProxy.cpp b/libs/hwui/renderthread/RenderProxy.cpp
index 5e37856..54af282 100644
--- a/libs/hwui/renderthread/RenderProxy.cpp
+++ b/libs/hwui/renderthread/RenderProxy.cpp
@@ -623,12 +623,13 @@
             *args->surface, args->bitmap);
 }
 
-bool RenderProxy::copySurfaceInto(sp<Surface>& surface, SkBitmap* bitmap) {
+int RenderProxy::copySurfaceInto(sp<Surface>& surface, SkBitmap* bitmap) {
     SETUP_TASK(copySurfaceInto);
     args->bitmap = bitmap;
     args->surface = surface.get();
     args->thread = &RenderThread::getInstance();
-    return (bool) staticPostAndWait(task);
+    return static_cast<int>(
+            reinterpret_cast<intptr_t>( staticPostAndWait(task) ));
 }
 
 void RenderProxy::post(RenderTask* task) {
diff --git a/libs/hwui/renderthread/RenderProxy.h b/libs/hwui/renderthread/RenderProxy.h
index c39319d..898b314 100644
--- a/libs/hwui/renderthread/RenderProxy.h
+++ b/libs/hwui/renderthread/RenderProxy.h
@@ -127,7 +127,7 @@
     ANDROID_API void removeFrameMetricsObserver(FrameMetricsObserver* observer);
     ANDROID_API long getDroppedFrameReportCount();
 
-    ANDROID_API static bool copySurfaceInto(sp<Surface>& surface, SkBitmap* bitmap);
+    ANDROID_API static int copySurfaceInto(sp<Surface>& surface, SkBitmap* bitmap);
 
 private:
     RenderThread& mRenderThread;
diff --git a/libs/hwui/tests/unit/BakedOpDispatcherTests.cpp b/libs/hwui/tests/unit/BakedOpDispatcherTests.cpp
index 5471486..de57cd1e 100644
--- a/libs/hwui/tests/unit/BakedOpDispatcherTests.cpp
+++ b/libs/hwui/tests/unit/BakedOpDispatcherTests.cpp
@@ -21,6 +21,8 @@
 #include <BakedOpRenderer.h>
 #include <tests/common/TestUtils.h>
 
+#include <SkDashPathEffect.h>
+
 using namespace android::uirenderer;
 
 static BakedOpRenderer::LightInfo sLightInfo;
@@ -71,12 +73,17 @@
     ASSERT_EQ(1, glopCount) << "Exactly one Glop expected";
 }
 
-RENDERTHREAD_TEST(BakedOpDispatcher, onArc_position) {
+RENDERTHREAD_TEST(BakedOpDispatcher, pathTexture_positionOvalArc) {
     SkPaint strokePaint;
     strokePaint.setStyle(SkPaint::kStroke_Style);
     strokePaint.setStrokeWidth(4);
-    ArcOp op(Rect(10, 15, 20, 25), Matrix4::identity(), nullptr, &strokePaint, 0, 270, true);
-    testUnmergedGlopDispatch(renderThread, &op, [] (const Glop& glop) {
+
+    float intervals[] = {1.0f, 1.0f};
+    auto dashEffect = SkDashPathEffect::Create(intervals, 2, 0);
+    strokePaint.setPathEffect(dashEffect);
+    dashEffect->unref();
+
+    auto textureGlopVerifier = [] (const Glop& glop) {
         // validate glop produced by renderPathTexture (so texture, unit quad)
         auto texture = glop.fill.texture.texture;
         ASSERT_NE(nullptr, texture);
@@ -85,15 +92,20 @@
                 << "Should see conservative offset from PathCache::computeBounds";
         Rect expectedBounds(10, 15, 20, 25);
         expectedBounds.outset(expectedOffset);
-#if !HWUI_NEW_OPS
-        EXPECT_EQ(expectedBounds, glop.bounds) << "bounds outset by stroke 'offset'";
-#endif
+
         Matrix4 expectedModelView;
         expectedModelView.loadTranslate(10 - expectedOffset, 15 - expectedOffset, 0);
         expectedModelView.scale(10 + 2 * expectedOffset, 10 + 2 * expectedOffset, 1);
         EXPECT_EQ(expectedModelView, glop.transform.modelView)
                 << "X and Y offsets, and scale both applied to model view";
-    });
+    };
+
+    // Arc and Oval will render functionally the same glop, differing only in texture content
+    ArcOp arcOp(Rect(10, 15, 20, 25), Matrix4::identity(), nullptr, &strokePaint, 0, 270, true);
+    testUnmergedGlopDispatch(renderThread, &arcOp, textureGlopVerifier);
+
+    OvalOp ovalOp(Rect(10, 15, 20, 25), Matrix4::identity(), nullptr, &strokePaint);
+    testUnmergedGlopDispatch(renderThread, &ovalOp, textureGlopVerifier);
 }
 
 RENDERTHREAD_TEST(BakedOpDispatcher, onLayerOp_bufferless) {
@@ -109,3 +121,37 @@
         EXPECT_FLOAT_EQ(128 / 255.0f, glop.fill.color.a) << "Rect quad should use op alpha";
     });
 }
+
+static int getGlopTransformFlags(renderthread::RenderThread& renderThread, RecordedOp* op) {
+    int result = 0;
+    testUnmergedGlopDispatch(renderThread, op, [&result] (const Glop& glop) {
+        result = glop.transform.transformFlags;
+    });
+    return result;
+}
+
+RENDERTHREAD_TEST(BakedOpDispatcher, offsetFlags) {
+    Rect bounds(10, 15, 20, 25);
+    SkPaint paint;
+    SkPaint aaPaint;
+    aaPaint.setAntiAlias(true);
+
+    RoundRectOp roundRectOp(bounds, Matrix4::identity(), nullptr, &paint, 0, 270);
+    EXPECT_EQ(TransformFlags::None, getGlopTransformFlags(renderThread, &roundRectOp))
+            << "Expect no offset for round rect op.";
+
+    const float points[4] = {0.5, 0.5, 1.0, 1.0};
+    PointsOp antiAliasedPointsOp(bounds, Matrix4::identity(), nullptr, &aaPaint, points, 4);
+    EXPECT_EQ(TransformFlags::None, getGlopTransformFlags(renderThread, &antiAliasedPointsOp))
+                << "Expect no offset for AA points.";
+    PointsOp pointsOp(bounds, Matrix4::identity(), nullptr, &paint, points, 4);
+    EXPECT_EQ(TransformFlags::OffsetByFudgeFactor, getGlopTransformFlags(renderThread, &pointsOp))
+            << "Expect an offset for non-AA points.";
+
+    LinesOp antiAliasedLinesOp(bounds, Matrix4::identity(), nullptr, &aaPaint, points, 4);
+    EXPECT_EQ(TransformFlags::None, getGlopTransformFlags(renderThread, &antiAliasedLinesOp))
+            << "Expect no offset for AA lines.";
+    LinesOp linesOp(bounds, Matrix4::identity(), nullptr, &paint, points, 4);
+    EXPECT_EQ(TransformFlags::OffsetByFudgeFactor, getGlopTransformFlags(renderThread, &linesOp))
+            << "Expect an offset for non-AA lines.";
+}
\ No newline at end of file
diff --git a/media/java/android/media/AudioTrack.java b/media/java/android/media/AudioTrack.java
index 2fa3a72..12e88a2 100644
--- a/media/java/android/media/AudioTrack.java
+++ b/media/java/android/media/AudioTrack.java
@@ -233,9 +233,9 @@
      */
     private final Object mPlayStateLock = new Object();
     /**
-     * Sizes of the native audio buffer.
+     * Sizes of the audio buffer.
      * These values are set during construction and can be stale.
-     * To obtain the current native audio buffer frame count use {@link #getBufferSizeInFrames()}.
+     * To obtain the current audio buffer frame count use {@link #getBufferSizeInFrames()}.
      */
     private int mNativeBufferSizeInBytes = 0;
     private int mNativeBufferSizeInFrames = 0;
@@ -342,20 +342,22 @@
      *   {@link AudioFormat#ENCODING_PCM_8BIT},
      *   and {@link AudioFormat#ENCODING_PCM_FLOAT}.
      * @param bufferSizeInBytes the total size (in bytes) of the internal buffer where audio data is
-     *   read from for playback. This should be a multiple of the frame size in bytes.
+     *   read from for playback. This should be a nonzero multiple of the frame size in bytes.
      *   <p> If the track's creation mode is {@link #MODE_STATIC},
      *   this is the maximum length sample, or audio clip, that can be played by this instance.
      *   <p> If the track's creation mode is {@link #MODE_STREAM},
      *   this should be the desired buffer size
      *   for the <code>AudioTrack</code> to satisfy the application's
-     *   natural latency requirements.
+     *   latency requirements.
      *   If <code>bufferSizeInBytes</code> is less than the
-     *   minimum buffer size for the output sink, it is automatically increased to the minimum
+     *   minimum buffer size for the output sink, it is increased to the minimum
      *   buffer size.
      *   The method {@link #getBufferSizeInFrames()} returns the
-     *   actual size in frames of the native buffer created, which
-     *   determines the frequency to write
+     *   actual size in frames of the buffer created, which
+     *   determines the minimum frequency to write
      *   to the streaming <code>AudioTrack</code> to avoid underrun.
+     *   See {@link #getMinBufferSize(int, int, int)} to determine the estimated minimum buffer size
+     *   for an AudioTrack instance in streaming mode.
      * @param mode streaming or static buffer. See {@link #MODE_STATIC} and {@link #MODE_STREAM}
      * @throws java.lang.IllegalArgumentException
      */
@@ -392,13 +394,24 @@
      *   See {@link AudioFormat#ENCODING_PCM_16BIT} and
      *   {@link AudioFormat#ENCODING_PCM_8BIT},
      *   and {@link AudioFormat#ENCODING_PCM_FLOAT}.
-     * @param bufferSizeInBytes the total size (in bytes) of the buffer where audio data is read
-     *   from for playback. If using the AudioTrack in streaming mode, you can write data into
-     *   this buffer in smaller chunks than this size. If using the AudioTrack in static mode,
-     *   this is the maximum size of the sound that will be played for this instance.
-     *   See {@link #getMinBufferSize(int, int, int)} to determine the minimum required buffer size
-     *   for the successful creation of an AudioTrack instance in streaming mode. Using values
-     *   smaller than getMinBufferSize() will result in an initialization failure.
+     * @param bufferSizeInBytes the total size (in bytes) of the internal buffer where audio data is
+     *   read from for playback. This should be a nonzero multiple of the frame size in bytes.
+     *   <p> If the track's creation mode is {@link #MODE_STATIC},
+     *   this is the maximum length sample, or audio clip, that can be played by this instance.
+     *   <p> If the track's creation mode is {@link #MODE_STREAM},
+     *   this should be the desired buffer size
+     *   for the <code>AudioTrack</code> to satisfy the application's
+     *   latency requirements.
+     *   If <code>bufferSizeInBytes</code> is less than the
+     *   minimum buffer size for the output sink, it is increased to the minimum
+     *   buffer size.
+     *   The method {@link #getBufferSizeInFrames()} returns the
+     *   actual size in frames of the buffer created, which
+     *   determines the minimum frequency to write
+     *   to the streaming <code>AudioTrack</code> to avoid underrun.
+     *   You can write data into this buffer in smaller chunks than this size.
+     *   See {@link #getMinBufferSize(int, int, int)} to determine the estimated minimum buffer size
+     *   for an AudioTrack instance in streaming mode.
      * @param mode streaming or static buffer. See {@link #MODE_STATIC} and {@link #MODE_STREAM}
      * @param sessionId Id of audio session the AudioTrack must be attached to
      * @throws java.lang.IllegalArgumentException
@@ -425,13 +438,23 @@
      * @param format a non-null {@link AudioFormat} instance describing the format of the data
      *     that will be played through this AudioTrack. See {@link AudioFormat.Builder} for
      *     configuring the audio format parameters such as encoding, channel mask and sample rate.
-     * @param bufferSizeInBytes the total size (in bytes) of the buffer where audio data is read
-     *   from for playback. If using the AudioTrack in streaming mode, you can write data into
-     *   this buffer in smaller chunks than this size. If using the AudioTrack in static mode,
-     *   this is the maximum size of the sound that will be played for this instance.
-     *   See {@link #getMinBufferSize(int, int, int)} to determine the minimum required buffer size
-     *   for the successful creation of an AudioTrack instance in streaming mode. Using values
-     *   smaller than getMinBufferSize() will result in an initialization failure.
+     * @param bufferSizeInBytes the total size (in bytes) of the internal buffer where audio data is
+     *   read from for playback. This should be a nonzero multiple of the frame size in bytes.
+     *   <p> If the track's creation mode is {@link #MODE_STATIC},
+     *   this is the maximum length sample, or audio clip, that can be played by this instance.
+     *   <p> If the track's creation mode is {@link #MODE_STREAM},
+     *   this should be the desired buffer size
+     *   for the <code>AudioTrack</code> to satisfy the application's
+     *   latency requirements.
+     *   If <code>bufferSizeInBytes</code> is less than the
+     *   minimum buffer size for the output sink, it is increased to the minimum
+     *   buffer size.
+     *   The method {@link #getBufferSizeInFrames()} returns the
+     *   actual size in frames of the buffer created, which
+     *   determines the minimum frequency to write
+     *   to the streaming <code>AudioTrack</code> to avoid underrun.
+     *   See {@link #getMinBufferSize(int, int, int)} to determine the estimated minimum buffer size
+     *   for an AudioTrack instance in streaming mode.
      * @param mode streaming or static buffer. See {@link #MODE_STATIC} and {@link #MODE_STREAM}.
      * @param sessionId ID of audio session the AudioTrack must be attached to, or
      *   {@link AudioManager#AUDIO_SESSION_ID_GENERATE} if the session isn't known at construction
@@ -662,9 +685,8 @@
          * If using the {@link AudioTrack} in streaming mode
          * (see {@link AudioTrack#MODE_STREAM}, you can write data into this buffer in smaller
          * chunks than this size. See {@link #getMinBufferSize(int, int, int)} to determine
-         * the minimum required buffer size for the successful creation of an AudioTrack instance
-         * in streaming mode. Using values smaller than <code>getMinBufferSize()</code> will result
-         * in an exception when trying to build the <code>AudioTrack</code>.
+         * the estimated minimum buffer size for the creation of an AudioTrack instance
+         * in streaming mode.
          * <br>If using the <code>AudioTrack</code> in static mode (see
          * {@link AudioTrack#MODE_STATIC}), this is the maximum size of the sound that will be
          * played by this instance.
@@ -1106,7 +1128,7 @@
      * size and capacity may enlarge to accommodate.
      * <p> If the <code>AudioTrack</code> encoding indicates compressed data,
      * e.g. {@link AudioFormat#ENCODING_AC3}, then the frame count returned is
-     * the size of the native <code>AudioTrack</code> buffer in bytes.
+     * the size of the <code>AudioTrack</code> buffer in bytes.
      * <p> See also {@link AudioManager#getProperty(String)} for key
      * {@link AudioManager#PROPERTY_OUTPUT_FRAMES_PER_BUFFER}.
      * @return current size in frames of the <code>AudioTrack</code> buffer.
@@ -1120,7 +1142,7 @@
      * Limits the effective size of the <code>AudioTrack</code> buffer
      * that the application writes to.
      * <p> A write to this AudioTrack will not fill the buffer beyond this limit.
-     * If a blocking write is used then the write will block until the the data
+     * If a blocking write is used then the write will block until the data
      * can fit within this limit.
      * <p>Changing this limit modifies the latency associated with
      * the buffer for this track. A smaller size will give lower latency
@@ -1134,7 +1156,7 @@
      * <p>This method is only supported for PCM audio.
      * It is not supported for compressed audio tracks.
      *
-     * @param bufferSizeInFrames requested buffer size
+     * @param bufferSizeInFrames requested buffer size in frames
      * @return the actual buffer size in frames or an error code,
      *    {@link #ERROR_BAD_VALUE}, {@link #ERROR_INVALID_OPERATION}
      * @throws IllegalStateException if track is not initialized.
@@ -1150,19 +1172,19 @@
     }
 
     /**
-     *  Returns the maximum size of the native <code>AudioTrack</code> buffer.
+     *  Returns the maximum size of the <code>AudioTrack</code> buffer in frames.
      *  <p> If the track's creation mode is {@link #MODE_STATIC},
      *  it is equal to the specified bufferSizeInBytes on construction, converted to frame units.
-     *  A static track's native frame count will not change.
+     *  A static track's frame count will not change.
      *  <p> If the track's creation mode is {@link #MODE_STREAM},
      *  it is greater than or equal to the specified bufferSizeInBytes converted to frame units.
      *  For streaming tracks, this value may be rounded up to a larger value if needed by
      *  the target output sink, and
-     *  if the track is subsequently routed to a different output sink, the native
+     *  if the track is subsequently routed to a different output sink, the
      *  frame count may enlarge to accommodate.
      *  <p> If the <code>AudioTrack</code> encoding indicates compressed data,
      *  e.g. {@link AudioFormat#ENCODING_AC3}, then the frame count returned is
-     *  the size of the native <code>AudioTrack</code> buffer in bytes.
+     *  the size of the <code>AudioTrack</code> buffer in bytes.
      *  <p> See also {@link AudioManager#getProperty(String)} for key
      *  {@link AudioManager#PROPERTY_OUTPUT_FRAMES_PER_BUFFER}.
      *  @return maximum size in frames of the <code>AudioTrack</code> buffer.
@@ -1252,8 +1274,10 @@
     }
 
     /**
-     * Returns the minimum buffer size required for the successful creation of an AudioTrack
-     * object to be created in the {@link #MODE_STREAM} mode. Note that this size doesn't
+     * Returns the estimated minimum buffer size required for an AudioTrack
+     * object to be created in the {@link #MODE_STREAM} mode.
+     * The size is an estimate because it does not consider either the route or the sink,
+     * since neither is known yet.  Note that this size doesn't
      * guarantee a smooth playback under load, and higher values should be chosen according to
      * the expected frequency at which the buffer will be refilled with additional data to play.
      * For example, if you intend to dynamically set the source sample rate of an AudioTrack
diff --git a/media/java/android/media/MediaCodec.java b/media/java/android/media/MediaCodec.java
index c73cad4..5b0845c 100644
--- a/media/java/android/media/MediaCodec.java
+++ b/media/java/android/media/MediaCodec.java
@@ -1290,10 +1290,10 @@
    </tr>
    <tr>
     <td>-</td>
+    <td>(16+)</td>
+    <td>(16+)</td>
     <td>16+</td>
-    <td>16+</td>
-    <td>16+</td>
-    <td>16+</td>
+    <td>(16+)</td>
     <td>(16+)</td>
     <td>-</td>
     <td class=fn>{@link #setVideoScalingMode setVideoScalingMode}</td>
@@ -2429,6 +2429,9 @@
      * set of output buffers returned by {@link #getOutputBuffers} from
      * this point on.
      *
+     * <p>Additionally, this event signals that the video scaling mode
+     * may have been reset to the default.</p>
+     *
      * @deprecated This return value can be ignored as {@link
      * #getOutputBuffers} has been deprecated.  Client should
      * request a current buffer using on of the get-buffer or
@@ -2996,6 +2999,10 @@
     /**
      * If a surface has been specified in a previous call to {@link #configure}
      * specifies the scaling mode to use. The default is "scale to fit".
+     * <p class=note>The scaling mode may be reset to the <strong>default</strong> each time an
+     * {@link #INFO_OUTPUT_BUFFERS_CHANGED} event is received from the codec; therefore, the client
+     * must call this method after every buffer change event (and before the first output buffer is
+     * released for rendering) to ensure consistent scaling mode.</p>
      * @throws IllegalArgumentException if mode is not recognized.
      * @throws IllegalStateException if in the Released state.
      */
diff --git a/media/java/android/media/MediaCodecInfo.java b/media/java/android/media/MediaCodecInfo.java
index 7af9c24..b9ed269 100644
--- a/media/java/android/media/MediaCodecInfo.java
+++ b/media/java/android/media/MediaCodecInfo.java
@@ -700,13 +700,22 @@
                 CodecProfileLevel[] profLevs, int[] colFmts, boolean encoder, int flags,
                 MediaFormat defaultFormat, MediaFormat info) {
             final Map<String, Object> map = info.getMap();
-            profileLevels = profLevs;
             colorFormats = colFmts;
             mFlagsVerified = flags;
             mDefaultFormat = defaultFormat;
             mCapabilitiesInfo = info;
             mMime = mDefaultFormat.getString(MediaFormat.KEY_MIME);
 
+            /* VP9 introduced profiles around 2016, so some VP9 codecs may not advertise any
+               supported profiles. Determine the level for them using the info they provide. */
+            if (profLevs.length == 0 && mMime.equalsIgnoreCase(MediaFormat.MIMETYPE_VIDEO_VP9)) {
+                CodecProfileLevel profLev = new CodecProfileLevel();
+                profLev.profile = CodecProfileLevel.VP9Profile0;
+                profLev.level = VideoCapabilities.equivalentVP9Level(info);
+                profLevs = new CodecProfileLevel[] { profLev };
+            }
+            profileLevels = profLevs;
+
             if (mMime.toLowerCase().startsWith("audio/")) {
                 mAudioCaps = AudioCapabilities.create(info, this);
                 mAudioCaps.setDefaultFormat(mDefaultFormat);
@@ -1238,7 +1247,8 @@
         private Range<Double> estimateFrameRatesFor(int width, int height) {
             Size size = findClosestSize(width, height);
             Range<Long> range = mMeasuredFrameRates.get(size);
-            Double ratio = (double)(size.getWidth() * size.getHeight()) / (width * height);
+            Double ratio = getBlockCount(size.getWidth(), size.getHeight())
+                    / (double)Math.max(getBlockCount(width, height), 1);
             return Range.create(range.getLower() * ratio, range.getUpper() * ratio);
         }
 
@@ -1441,6 +1451,74 @@
             return ret;
         }
 
+        private static Pair<Range<Integer>, Range<Integer>> parseWidthHeightRanges(Object o) {
+            Pair<Size, Size> range = Utils.parseSizeRange(o);
+            if (range != null) {
+                try {
+                    return Pair.create(
+                            Range.create(range.first.getWidth(), range.second.getWidth()),
+                            Range.create(range.first.getHeight(), range.second.getHeight()));
+                } catch (IllegalArgumentException e) {
+                    Log.w(TAG, "could not parse size range '" + o + "'");
+                }
+            }
+            return null;
+        }
+
+        /** @hide */
+        public static int equivalentVP9Level(MediaFormat info) {
+            final Map<String, Object> map = info.getMap();
+
+            Size blockSize = Utils.parseSize(map.get("block-size"), new Size(8, 8));
+            int BS = blockSize.getWidth() * blockSize.getHeight();
+
+            Range<Integer> counts = Utils.parseIntRange(map.get("block-count-range"), null);
+            int FS = counts == null ? 0 : BS * counts.getUpper();
+
+            Range<Long> blockRates =
+                Utils.parseLongRange(map.get("blocks-per-second-range"), null);
+            long SR = blockRates == null ? 0 : BS * blockRates.getUpper();
+
+            Pair<Range<Integer>, Range<Integer>> dimensionRanges =
+                parseWidthHeightRanges(map.get("size-range"));
+            int D = dimensionRanges == null ? 0 : Math.max(
+                    dimensionRanges.first.getUpper(), dimensionRanges.second.getUpper());
+
+            Range<Integer> bitRates = Utils.parseIntRange(map.get("bitrate-range"), null);
+            int BR = bitRates == null ? 0 : Utils.divUp(bitRates.getUpper(), 1000);
+
+            if (SR <=      829440 && FS <=    36864 && BR <=    200 && D <=   512)
+                return CodecProfileLevel.VP9Level1;
+            if (SR <=     2764800 && FS <=    73728 && BR <=    800 && D <=   768)
+                return CodecProfileLevel.VP9Level11;
+            if (SR <=     4608000 && FS <=   122880 && BR <=   1800 && D <=   960)
+                return CodecProfileLevel.VP9Level2;
+            if (SR <=     9216000 && FS <=   245760 && BR <=   3600 && D <=  1344)
+                return CodecProfileLevel.VP9Level21;
+            if (SR <=    20736000 && FS <=   552960 && BR <=   7200 && D <=  2048)
+                return CodecProfileLevel.VP9Level3;
+            if (SR <=    36864000 && FS <=   983040 && BR <=  12000 && D <=  2752)
+                return CodecProfileLevel.VP9Level31;
+            if (SR <=    83558400 && FS <=  2228224 && BR <=  18000 && D <=  4160)
+                return CodecProfileLevel.VP9Level4;
+            if (SR <=   160432128 && FS <=  2228224 && BR <=  30000 && D <=  4160)
+                return CodecProfileLevel.VP9Level41;
+            if (SR <=   311951360 && FS <=  8912896 && BR <=  60000 && D <=  8384)
+                return CodecProfileLevel.VP9Level5;
+            if (SR <=   588251136 && FS <=  8912896 && BR <= 120000 && D <=  8384)
+                return CodecProfileLevel.VP9Level51;
+            if (SR <=  1176502272 && FS <=  8912896 && BR <= 180000 && D <=  8384)
+                return CodecProfileLevel.VP9Level52;
+            if (SR <=  1176502272 && FS <= 35651584 && BR <= 180000 && D <= 16832)
+                return CodecProfileLevel.VP9Level6;
+            if (SR <= 2353004544L && FS <= 35651584 && BR <= 240000 && D <= 16832)
+                return CodecProfileLevel.VP9Level61;
+            if (SR <= 4706009088L && FS <= 35651584 && BR <= 480000 && D <= 16832)
+                return CodecProfileLevel.VP9Level62;
+            // returning largest level
+            return CodecProfileLevel.VP9Level62;
+        }
+
         private void parseFromInfo(MediaFormat info) {
             final Map<String, Object> map = info.getMap();
             Size blockSize = new Size(mBlockWidth, mBlockHeight);
@@ -1456,23 +1534,11 @@
             blockRates =
                 Utils.parseLongRange(map.get("blocks-per-second-range"), null);
             mMeasuredFrameRates = getMeasuredFrameRates(map);
-            {
-                Object o = map.get("size-range");
-                Pair<Size, Size> sizeRange = Utils.parseSizeRange(o);
-                if (sizeRange != null) {
-                    try {
-                        widths = Range.create(
-                                sizeRange.first.getWidth(),
-                                sizeRange.second.getWidth());
-                        heights = Range.create(
-                                sizeRange.first.getHeight(),
-                                sizeRange.second.getHeight());
-                    } catch (IllegalArgumentException e) {
-                        Log.w(TAG, "could not parse size range '" + o + "'");
-                        widths = null;
-                        heights = null;
-                    }
-                }
+            Pair<Range<Integer>, Range<Integer>> sizeRanges =
+                parseWidthHeightRanges(map.get("size-range"));
+            if (sizeRanges != null) {
+                widths = sizeRanges.first;
+                heights = sizeRanges.second;
             }
             // for now this just means using the smaller max size as 2nd
             // upper limit.
@@ -2101,40 +2167,42 @@
                 maxBlocksPerSecond = 829440;
                 maxBlocks = 36864;
                 maxBps = 200000;
+                int maxDim = 512;
 
                 for (CodecProfileLevel profileLevel: profileLevels) {
-                    long SR = 0;
-                    int FS = 0;
-                    int BR = 0;
+                    long SR = 0; // luma sample rate
+                    int FS = 0;  // luma picture size
+                    int BR = 0;  // bit rate kbps
+                    int D = 0;   // luma dimension
                     switch (profileLevel.level) {
                         case CodecProfileLevel.VP9Level1:
-                            SR =      829440; FS =    36864; BR =    200; break;
+                            SR =      829440; FS =    36864; BR =    200; D =   512; break;
                         case CodecProfileLevel.VP9Level11:
-                            SR =     2764800; FS =    73728; BR =    800; break;
+                            SR =     2764800; FS =    73728; BR =    800; D =   768; break;
                         case CodecProfileLevel.VP9Level2:
-                            SR =     4608000; FS =   122880; BR =   1800; break;
+                            SR =     4608000; FS =   122880; BR =   1800; D =   960; break;
                         case CodecProfileLevel.VP9Level21:
-                            SR =     9216000; FS =   245760; BR =   3600; break;
+                            SR =     9216000; FS =   245760; BR =   3600; D =  1344; break;
                         case CodecProfileLevel.VP9Level3:
-                            SR =    20736000; FS =   552960; BR =   7200; break;
+                            SR =    20736000; FS =   552960; BR =   7200; D =  2048; break;
                         case CodecProfileLevel.VP9Level31:
-                            SR =    36864000; FS =   983040; BR =  12000; break;
+                            SR =    36864000; FS =   983040; BR =  12000; D =  2752; break;
                         case CodecProfileLevel.VP9Level4:
-                            SR =    83558400; FS =  2228224; BR =  18000; break;
+                            SR =    83558400; FS =  2228224; BR =  18000; D =  4160; break;
                         case CodecProfileLevel.VP9Level41:
-                            SR =   160432128; FS =  2228224; BR =  30000; break;
+                            SR =   160432128; FS =  2228224; BR =  30000; D =  4160; break;
                         case CodecProfileLevel.VP9Level5:
-                            SR =   311951360; FS =  8912896; BR =  60000; break;
+                            SR =   311951360; FS =  8912896; BR =  60000; D =  8384; break;
                         case CodecProfileLevel.VP9Level51:
-                            SR =   588251136; FS =  8912896; BR = 120000; break;
+                            SR =   588251136; FS =  8912896; BR = 120000; D =  8384; break;
                         case CodecProfileLevel.VP9Level52:
-                            SR =  1176502272; FS =  8912896; BR = 180000; break;
+                            SR =  1176502272; FS =  8912896; BR = 180000; D =  8384; break;
                         case CodecProfileLevel.VP9Level6:
-                            SR =  1176502272; FS = 35651584; BR = 180000; break;
+                            SR =  1176502272; FS = 35651584; BR = 180000; D = 16832; break;
                         case CodecProfileLevel.VP9Level61:
-                            SR = 2353004544L; FS = 35651584; BR = 240000; break;
+                            SR = 2353004544L; FS = 35651584; BR = 240000; D = 16832; break;
                         case CodecProfileLevel.VP9Level62:
-                            SR = 4706009088L; FS = 35651584; BR = 480000; break;
+                            SR = 4706009088L; FS = 35651584; BR = 480000; D = 16832; break;
                         default:
                             Log.w(TAG, "Unrecognized level "
                                     + profileLevel.level + " for " + mime);
@@ -2155,10 +2223,11 @@
                     maxBlocksPerSecond = Math.max(SR, maxBlocksPerSecond);
                     maxBlocks = Math.max(FS, maxBlocks);
                     maxBps = Math.max(BR * 1000, maxBps);
+                    maxDim = Math.max(D, maxDim);
                 }
 
                 final int blockSize = 8;
-                int maxLengthInBlocks = Utils.divUp(maxBlocks, blockSize);
+                int maxLengthInBlocks = Utils.divUp(maxDim, blockSize);
                 maxBlocks = Utils.divUp(maxBlocks, blockSize * blockSize);
                 maxBlocksPerSecond = Utils.divUp(maxBlocksPerSecond, blockSize * blockSize);
 
@@ -2620,20 +2689,20 @@
         public static final int VP9Profile3HDR = 0x2000;
 
         // from OMX_VIDEO_VP9LEVELTYPE
-        public static final int VP9Level1  = 0x0;
-        public static final int VP9Level11 = 0x1;
-        public static final int VP9Level2  = 0x2;
-        public static final int VP9Level21 = 0x4;
-        public static final int VP9Level3  = 0x8;
-        public static final int VP9Level31 = 0x10;
-        public static final int VP9Level4  = 0x20;
-        public static final int VP9Level41 = 0x40;
-        public static final int VP9Level5  = 0x80;
-        public static final int VP9Level51 = 0x100;
-        public static final int VP9Level52 = 0x200;
-        public static final int VP9Level6  = 0x400;
-        public static final int VP9Level61 = 0x800;
-        public static final int VP9Level62 = 0x1000;
+        public static final int VP9Level1  = 0x1;
+        public static final int VP9Level11 = 0x2;
+        public static final int VP9Level2  = 0x4;
+        public static final int VP9Level21 = 0x8;
+        public static final int VP9Level3  = 0x10;
+        public static final int VP9Level31 = 0x20;
+        public static final int VP9Level4  = 0x40;
+        public static final int VP9Level41 = 0x80;
+        public static final int VP9Level5  = 0x100;
+        public static final int VP9Level51 = 0x200;
+        public static final int VP9Level52 = 0x400;
+        public static final int VP9Level6  = 0x800;
+        public static final int VP9Level61 = 0x1000;
+        public static final int VP9Level62 = 0x2000;
 
         // from OMX_VIDEO_HEVCPROFILETYPE
         public static final int HEVCProfileMain        = 0x01;
@@ -2676,6 +2745,7 @@
         public static final int DolbyVisionProfileDvheDtr = 0x10;
         public static final int DolbyVisionProfileDvheStn = 0x20;
         public static final int DolbyVisionProfileDvheDth = 0x40;
+        public static final int DolbyVisionProfileDvheDtb = 0x80;
 
         // from OMX_VIDEO_DOLBYVISIONLEVELTYPE
         public static final int DolbyVisionLevelHd24    = 0x1;
diff --git a/media/java/android/media/MediaFormat.java b/media/java/android/media/MediaFormat.java
index 346f083..93c595f 100644
--- a/media/java/android/media/MediaFormat.java
+++ b/media/java/android/media/MediaFormat.java
@@ -46,7 +46,8 @@
  * <tr><td>{@link #KEY_HEIGHT}</td><td>Integer</td><td></td></tr>
  * <tr><td>{@link #KEY_COLOR_FORMAT}</td><td>Integer</td><td>set by the user
  *         for encoders, readable in the output format of decoders</b></td></tr>
- * <tr><td>{@link #KEY_FRAME_RATE}</td><td>Integer or Float</td><td><b>encoder-only</b></td></tr>
+ * <tr><td>{@link #KEY_FRAME_RATE}</td><td>Integer or Float</td><td>required for <b>encoders</b>,
+ *         optional for <b>decoders</b></td></tr>
  * <tr><td>{@link #KEY_CAPTURE_RATE}</td><td>Integer</td><td></td></tr>
  * <tr><td>{@link #KEY_I_FRAME_INTERVAL}</td><td>Integer</td><td><b>encoder-only</b></td></tr>
  * <tr><td>{@link #KEY_INTRA_REFRESH_PERIOD}</td><td>Integer</td><td><b>encoder-only</b>, optional</td></tr>
@@ -197,7 +198,19 @@
 
     /**
      * A key describing the frame rate of a video format in frames/sec.
-     * The associated value is an integer or a float.
+     * The associated value is normally an integer when the value is used by the platform,
+     * but video codecs also accept float configuration values.
+     * Specifically, {@link MediaExtractor#getTrackFormat MediaExtractor} provides an integer
+     * value corresponding to the frame rate information of the track if specified and non-zero.
+     * Otherwise, this key is not present. {@link MediaCodec#configure MediaCodec} accepts both
+     * float and integer values. This represents the desired operating frame rate if the
+     * {@link #KEY_OPERATING_RATE} is not present and {@link #KEY_PRIORITY} is {@code 0}
+     * (realtime). For video encoders this value corresponds to the intended frame rate,
+     * although encoders are expected
+     * to support variable frame rate based on {@link MediaCodec.BufferInfo#presentationTimeUs
+     * buffer timestamp}. This key is not used in the {@code MediaCodec}
+     * {@link MediaCodec#getInputFormat input}/{@link MediaCodec#getOutputFormat output} formats,
+     * nor by {@link MediaMuxer#addTrack MediaMuxer}.
      */
     public static final String KEY_FRAME_RATE = "frame-rate";
 
diff --git a/media/java/android/media/tv/TvInputManager.java b/media/java/android/media/tv/TvInputManager.java
index 1d894e1..22bb5f1 100644
--- a/media/java/android/media/tv/TvInputManager.java
+++ b/media/java/android/media/tv/TvInputManager.java
@@ -188,6 +188,9 @@
             RECORDING_ERROR_RESOURCE_BUSY})
     public @interface RecordingError {}
 
+    static final int RECORDING_ERROR_START = 0;
+    static final int RECORDING_ERROR_END = 2;
+
     /**
      * Error for {@link TvInputService.RecordingSession#notifyError(int)} and
      * {@link TvRecordingClient.RecordingCallback#onError(int)}: The requested operation cannot be
@@ -195,7 +198,7 @@
      * for the problem is defined on the higher version than application's
      * <code>android:targetSdkVersion</code>.
      */
-    public static final int RECORDING_ERROR_UNKNOWN = 0;
+    public static final int RECORDING_ERROR_UNKNOWN = RECORDING_ERROR_START;
 
     /**
      * Error for {@link TvInputService.RecordingSession#notifyError(int)} and
@@ -209,7 +212,7 @@
      * {@link TvRecordingClient.RecordingCallback#onError(int)}: Recording cannot proceed because
      * a required recording resource was not able to be allocated.
      */
-    public static final int RECORDING_ERROR_RESOURCE_BUSY = 2;
+    public static final int RECORDING_ERROR_RESOURCE_BUSY = RECORDING_ERROR_END;
 
     /** @hide */
     @Retention(RetentionPolicy.SOURCE)
diff --git a/media/java/android/media/tv/TvInputService.java b/media/java/android/media/tv/TvInputService.java
index 488b284..168fcdc 100644
--- a/media/java/android/media/tv/TvInputService.java
+++ b/media/java/android/media/tv/TvInputService.java
@@ -1613,7 +1613,14 @@
          * <li>{@link TvInputManager#RECORDING_ERROR_RESOURCE_BUSY}
          * </ul>
          */
-        public void notifyError(@TvInputManager.RecordingError final int error) {
+        public void notifyError(@TvInputManager.RecordingError int error) {
+            if (error < TvInputManager.RECORDING_ERROR_START
+                    || error > TvInputManager.RECORDING_ERROR_END) {
+                Log.w(TAG, "notifyError - invalid error code (" + error
+                        + ") is changed to RECORDING_ERROR_UNKNOWN.");
+                error = TvInputManager.RECORDING_ERROR_UNKNOWN;
+            }
+            final int validError = error;
             executeOrPostRunnableOnMainThread(new Runnable() {
                 @MainThread
                 @Override
@@ -1621,7 +1628,7 @@
                     try {
                         if (DEBUG) Log.d(TAG, "notifyError");
                         if (mSessionCallback != null) {
-                            mSessionCallback.onError(error);
+                            mSessionCallback.onError(validError);
                         }
                     } catch (RemoteException e) {
                         Log.w(TAG, "error in notifyError", e);
diff --git a/media/jni/Android.mk b/media/jni/Android.mk
index 29739ca..2c28a10 100644
--- a/media/jni/Android.mk
+++ b/media/jni/Android.mk
@@ -33,6 +33,7 @@
     libutils \
     libbinder \
     libmedia \
+    libmediadrm \
     libskia \
     libui \
     liblog \
diff --git a/media/jni/android_media_MediaCrypto.cpp b/media/jni/android_media_MediaCrypto.cpp
index 35da84c..2adbfee 100644
--- a/media/jni/android_media_MediaCrypto.cpp
+++ b/media/jni/android_media_MediaCrypto.cpp
@@ -28,7 +28,6 @@
 #include <cutils/properties.h>
 #include <media/ICrypto.h>
 #include <media/IMediaDrmService.h>
-#include <media/IMediaPlayerService.h>
 #include <media/stagefright/foundation/ADebug.h>
 
 namespace android {
@@ -63,30 +62,14 @@
 // static
 sp<ICrypto> JCrypto::MakeCrypto() {
     sp<IServiceManager> sm = defaultServiceManager();
-    sp<ICrypto> crypto;
 
-    char value[PROPERTY_VALUE_MAX];
-    if (property_get("media.mediadrmservice.enable", value, NULL)
-        && (!strcmp("1", value) || !strcasecmp("true", value))) {
-        sp<IBinder> binder =
-            sm->getService(String16("media.drm"));
-        sp<IMediaDrmService> service =
-            interface_cast<IMediaDrmService>(binder);
-        if (service == NULL) {
-            return NULL;
-        }
-        crypto = service->makeCrypto();
-    } else {
-        sp<IBinder> binder =
-            sm->getService(String16("media.player"));
-        sp<IMediaPlayerService> service =
-            interface_cast<IMediaPlayerService>(binder);
-        if (service == NULL) {
-            return NULL;
-        }
-        crypto = service->makeCrypto();
+    sp<IBinder> binder = sm->getService(String16("media.drm"));
+    sp<IMediaDrmService> service = interface_cast<IMediaDrmService>(binder);
+    if (service == NULL) {
+        return NULL;
     }
 
+    sp<ICrypto> crypto = service->makeCrypto();
     if (crypto == NULL || (crypto->initCheck() != OK && crypto->initCheck() != NO_INIT)) {
         return NULL;
     }
diff --git a/media/jni/android_media_MediaDrm.cpp b/media/jni/android_media_MediaDrm.cpp
index 73ddedf..c4450af 100644
--- a/media/jni/android_media_MediaDrm.cpp
+++ b/media/jni/android_media_MediaDrm.cpp
@@ -31,7 +31,6 @@
 #include <cutils/properties.h>
 #include <media/IDrm.h>
 #include <media/IMediaDrmService.h>
-#include <media/IMediaPlayerService.h>
 #include <media/stagefright/foundation/ADebug.h>
 #include <media/stagefright/MediaErrors.h>
 
@@ -354,30 +353,14 @@
 // static
 sp<IDrm> JDrm::MakeDrm() {
     sp<IServiceManager> sm = defaultServiceManager();
-    sp<IDrm> drm;
 
-    char value[PROPERTY_VALUE_MAX];
-    if (property_get("media.mediadrmservice.enable", value, NULL)
-        && (!strcmp("1", value) || !strcasecmp("true", value))) {
-        sp<IBinder> binder =
-            sm->getService(String16("media.drm"));
-        sp<IMediaDrmService> service =
-            interface_cast<IMediaDrmService>(binder);
-        if (service == NULL) {
-            return NULL;
-        }
-        drm = service->makeDrm();
-    } else {
-        sp<IBinder> binder =
-            sm->getService(String16("media.player"));
-        sp<IMediaPlayerService> service =
-            interface_cast<IMediaPlayerService>(binder);
-        if (service == NULL) {
-            return NULL;
-        }
-        drm = service->makeDrm();
+    sp<IBinder> binder = sm->getService(String16("media.drm"));
+    sp<IMediaDrmService> service = interface_cast<IMediaDrmService>(binder);
+    if (service == NULL) {
+        return NULL;
     }
 
+    sp<IDrm> drm = service->makeDrm();
     if (drm == NULL || (drm->initCheck() != OK && drm->initCheck() != NO_INIT)) {
         return NULL;
     }
diff --git a/packages/CtsShim/Android.mk b/packages/CtsShim/Android.mk
index 537b171..b827bdf 100644
--- a/packages/CtsShim/Android.mk
+++ b/packages/CtsShim/Android.mk
@@ -20,23 +20,19 @@
 # Variant: Privileged app
 
 include $(CLEAR_VARS)
+
+LOCAL_MODULE := CtsShimPrivPrebuilt
+LOCAL_MODULE_TAGS := optional
 # this needs to be a privileged application
 LOCAL_PRIVILEGED_MODULE := true
+LOCAL_MODULE_CLASS := APPS
+LOCAL_BUILT_MODULE_STEM := package.apk
+# Make sure the build system doesn't try to resign the APK
+LOCAL_CERTIFICATE := PRESIGNED
 
-LOCAL_MODULE_TAGS := optional
-LOCAL_SDK_VERSION := current
-LOCAL_PROGUARD_ENABLED := disabled
-LOCAL_DEX_PREOPT := false
+LOCAL_SRC_FILES := CtsShimPriv.apk
 
-LOCAL_PACKAGE_NAME := CtsShimPriv
-
-#TODO need to find the correct certificate
-#Change in conjunction with cts/hostsidetests/appsecurity/test-apps/IntentFilterApp
-LOCAL_CERTIFICATE := platform
-LOCAL_MANIFEST_FILE := priv_shim/AndroidManifest.xml
-
-include $(BUILD_PACKAGE)
-
+include $(BUILD_PREBUILT)
 
 
 ###########################################################
@@ -44,18 +40,14 @@
 
 include $(CLEAR_VARS)
 
+LOCAL_MODULE := CtsShimPrebuilt
 LOCAL_MODULE_TAGS := optional
-LOCAL_SDK_VERSION := current
-LOCAL_PROGUARD_ENABLED := disabled
-LOCAL_DEX_PREOPT := false
+LOCAL_MODULE_CLASS := APPS
+LOCAL_BUILT_MODULE_STEM := package.apk
+# Make sure the build system doesn't try to resign the APK
+LOCAL_CERTIFICATE := PRESIGNED
 
-LOCAL_PACKAGE_NAME := CtsShim
+LOCAL_SRC_FILES := CtsShim.apk
 
-#TODO need to find the correct certificate
-#Change in conjunction with cts/hostsidetests/appsecurity/test-apps/IntentFilterApp
-LOCAL_CERTIFICATE := platform
-LOCAL_MANIFEST_FILE := shim/AndroidManifest.xml
-
-include $(BUILD_PACKAGE)
-
+include $(BUILD_PREBUILT)
 
diff --git a/packages/CtsShim/CtsShim.apk b/packages/CtsShim/CtsShim.apk
new file mode 100644
index 0000000..18e8e33
--- /dev/null
+++ b/packages/CtsShim/CtsShim.apk
Binary files differ
diff --git a/packages/CtsShim/CtsShimPriv.apk b/packages/CtsShim/CtsShimPriv.apk
new file mode 100644
index 0000000..48f35d3
--- /dev/null
+++ b/packages/CtsShim/CtsShimPriv.apk
Binary files differ
diff --git a/packages/CtsShim/build/.gitignore b/packages/CtsShim/build/.gitignore
new file mode 100644
index 0000000..e893c13
--- /dev/null
+++ b/packages/CtsShim/build/.gitignore
@@ -0,0 +1,3 @@
+*.pk8
+*.pem
+
diff --git a/packages/CtsShim/build/Android.mk b/packages/CtsShim/build/Android.mk
new file mode 100644
index 0000000..b550c1c
--- /dev/null
+++ b/packages/CtsShim/build/Android.mk
@@ -0,0 +1,72 @@
+#
+# Copyright (C) 2016 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+LOCAL_PATH := $(my-dir)
+
+###########################################################
+# Variant: Privileged app
+
+include $(CLEAR_VARS)
+# this needs to be a privileged application
+LOCAL_PRIVILEGED_MODULE := true
+
+LOCAL_MODULE_TAGS := optional
+LOCAL_SDK_VERSION := current
+LOCAL_PROGUARD_ENABLED := disabled
+LOCAL_DEX_PREOPT := false
+
+LOCAL_PACKAGE_NAME := CtsShimPriv
+
+LOCAL_MANIFEST_FILE := shim_priv/AndroidManifest.xml
+
+include $(BUILD_PACKAGE)
+
+
+###########################################################
+# Variant: Privileged app upgrade
+
+include $(CLEAR_VARS)
+# this needs to be a privileged application
+LOCAL_PRIVILEGED_MODULE := true
+
+LOCAL_MODULE_TAGS := optional
+LOCAL_SDK_VERSION := current
+LOCAL_PROGUARD_ENABLED := disabled
+LOCAL_DEX_PREOPT := false
+
+LOCAL_PACKAGE_NAME := CtsShimPrivUpgrade
+
+LOCAL_MANIFEST_FILE := shim_priv_upgrade/AndroidManifest.xml
+
+include $(BUILD_PACKAGE)
+
+
+###########################################################
+# Variant: System app
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE_TAGS := optional
+LOCAL_SDK_VERSION := current
+LOCAL_PROGUARD_ENABLED := disabled
+LOCAL_DEX_PREOPT := false
+
+LOCAL_PACKAGE_NAME := CtsShim
+
+LOCAL_MANIFEST_FILE := shim/AndroidManifest.xml
+
+include $(BUILD_PACKAGE)
+
diff --git a/packages/CtsShim/build/README b/packages/CtsShim/build/README
new file mode 100644
index 0000000..11e434f
--- /dev/null
+++ b/packages/CtsShim/build/README
@@ -0,0 +1,33 @@
+
+The CTS shim is a package that resides on a device's /system partition in order
+to verify certain upgrade scenarios. Not only must it not contain code, but, it
+must specify the singular APK that can be used to upgrade it.
+
+NOTE: The need to include a binary on the system image may be deprecated if a
+solution involving a temporarily writable /system partition is implemented.
+
+MAKING THE PREBUILTS
+In order to generate the upgrade key, the shim directory needs to be built multiple
+times. First to generate the upgrade APK [so its hash can be obtained] and again
+once the hash has been included as part of the pre-installed APK.
+
+build:
+    $ mmm frameworks/base/packages/CtsShim/build
+
+update the manifest:
+    $ sed -i -e "s/__HASH__/`sha512sum out/target/product/shamu/system/priv-app/CtsShimPrivUpgrade/CtsShimPrivUpgrade.apk | cut -d' ' -f1`/" \
+        frameworks/base/packages/CtsShim/build/shim_priv/AndroidManifest.xml
+
+build:
+    $ mmm frameworks/base/packages/CtsShim/build
+
+update prebuilts:
+    $ cp out/target/product/shamu/system/priv-app/CtsShimPrivUpgrade/CtsShimPrivUpgrade.apk \
+        cts/hostsidetests/appsecurity/test-apps/IntentFilterApp
+    $ cp out/target/product/shamu/system/priv-app/CtsShimPriv/CtsShimPriv.apk \
+        frameworks/base/packages/CtsShim
+
+revert manifest:
+    $ pushd frameworks/base && git checkout -- packages/CtsShim/build/shim_priv/AndroidManifest.xml && popd
+
+Finally, upload and submit both the cts/ and frameworks/base/ repos.
\ No newline at end of file
diff --git a/packages/CtsShim/shim/AndroidManifest.xml b/packages/CtsShim/build/shim/AndroidManifest.xml
similarity index 89%
rename from packages/CtsShim/shim/AndroidManifest.xml
rename to packages/CtsShim/build/shim/AndroidManifest.xml
index ee4b547..ac32d94 100644
--- a/packages/CtsShim/shim/AndroidManifest.xml
+++ b/packages/CtsShim/build/shim/AndroidManifest.xml
@@ -16,8 +16,13 @@
 
 <!-- Manifest for the system CTS shim -->
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
-        package="com.android.cts.system.ctsshim">
-    <application android:label="CtsShim">
+    xmlns:tools="http://schemas.android.com/tools"
+    package="com.android.cts.ctsshim"
+    tools:ignore="MissingVersion" >
+
+    <application
+        android:hasCode="false"
+        tools:ignore="AllowBackup,MissingApplicationIcon" >
 
         <!-- These activities don't actually exist; define them just to test the filters !-->
 
diff --git a/packages/CtsShim/priv_shim/AndroidManifest.xml b/packages/CtsShim/build/shim_priv/AndroidManifest.xml
similarity index 95%
rename from packages/CtsShim/priv_shim/AndroidManifest.xml
rename to packages/CtsShim/build/shim_priv/AndroidManifest.xml
index 0a3f823..68c6a74 100644
--- a/packages/CtsShim/priv_shim/AndroidManifest.xml
+++ b/packages/CtsShim/build/shim_priv/AndroidManifest.xml
@@ -16,8 +16,16 @@
 
 <!-- Manifest for the privileged CTS shim -->
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
-        package="com.android.cts.priv.ctsshim">
-    <application android:label="CtsShim">
+    xmlns:tools="http://schemas.android.com/tools"
+    package="com.android.cts.priv.ctsshim"
+    tools:ignore="MissingVersion" >
+
+    <restrict-upgrade
+        android:hash="__HASH__" />
+
+    <application
+        android:hasCode="false"
+        tools:ignore="AllowBackup,MissingApplicationIcon" >
 
         <!-- These activities don't actually exist; define them just to test the filters !-->
 
diff --git a/packages/CtsShim/priv_shim/AndroidManifest.xml b/packages/CtsShim/build/shim_priv_upgrade/AndroidManifest.xml
similarity index 79%
copy from packages/CtsShim/priv_shim/AndroidManifest.xml
copy to packages/CtsShim/build/shim_priv_upgrade/AndroidManifest.xml
index 0a3f823..af96dfd 100644
--- a/packages/CtsShim/priv_shim/AndroidManifest.xml
+++ b/packages/CtsShim/build/shim_priv_upgrade/AndroidManifest.xml
@@ -14,10 +14,15 @@
      limitations under the License.
 -->
 
-<!-- Manifest for the privileged CTS shim -->
+<!-- Manifest for the privileged CTS shim upgrade -->
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
-        package="com.android.cts.priv.ctsshim">
-    <application android:label="CtsShim">
+    xmlns:tools="http://schemas.android.com/tools"
+    package="com.android.cts.priv.ctsshim"
+    tools:ignore="MissingVersion" >
+
+    <application
+        android:hasCode="false"
+        tools:ignore="AllowBackup,MissingApplicationIcon" >
 
         <!-- These activities don't actually exist; define them just to test the filters !-->
 
@@ -47,7 +52,7 @@
 
         <!-- upgrade test; single, equivalent filter -->
         <activity android:name=".UpgradeMatch">
-            <intent-filter android:priority="100">
+            <intent-filter android:priority="500">
                 <action android:name="com.android.cts.action.MATCH" />
                 <category android:name="android.intent.category.INFO" />
             </intent-filter>
@@ -55,103 +60,102 @@
 
         <!-- upgrade test; multiple, equivalent filters -->
         <activity android:name=".UpgradeMatchMultiple">
-            <intent-filter android:priority="100">
+            <intent-filter android:priority="500">
                 <action android:name="com.android.cts.action.MATCH_MULTIPLE" />
-                <category android:name="android.intent.category.INFO" />
-            </intent-filter>
-
-            <intent-filter android:priority="150">
-                <action android:name="com.android.cts.action.MATCH_MULTIPLE" />
-                <category android:name="android.intent.category.DEFAULT" />
-                <data android:scheme="http" />
-                <data android:scheme="https" />
-                <data android:host="www.google.com" android:port="80" />
-                <data android:host="www.google.com" android:port="8080" />
-                <data android:host="goo.gl" android:port="443" />
             </intent-filter>
         </activity>
 
-        <!-- upgrade test; lower priority -->
+        <!-- upgrade test; lower priority is okay -->
         <activity android:name=".UpgradeLowerPriority">
-            <intent-filter android:priority="100">
+            <intent-filter android:priority="75">
                 <action android:name="com.android.cts.action.LOWER_PRIORITY" />
                 <category android:name="android.intent.category.INFO" />
             </intent-filter>
         </activity>
 
-        <!-- upgrade test; action subset -->
+        <!-- upgrade test; action subset is "equivalent" -->
         <activity android:name=".UpgradeActionSubset">
             <intent-filter android:priority="100">
-                <action android:name="com.android.cts.action.ACTION_SUB" />
                 <action android:name="com.android.cts.action.ACTION_SUB_2" />
-                <action android:name="com.android.cts.action.ACTION_SUB_3" />
                 <category android:name="android.intent.category.DEFAULT" />
             </intent-filter>
         </activity>
 
-        <!-- upgrade test; category subset -->
+        <!-- upgrade test; category subset is "equivalent" -->
         <activity android:name=".UpgradeCategorySubset">
             <intent-filter android:priority="100">
                 <action android:name="com.android.cts.action.CATEGORY_SUB" />
                 <category android:name="android.intent.category.INFO" />
-                <category android:name="android.intent.category.DEFAULT" />
             </intent-filter>
         </activity>
 
-        <!-- upgrade test; scheme subset -->
+        <!-- upgrade test; scheme subset is "equivalent" -->
         <activity android:name=".UpgradeSchemeSubset">
             <intent-filter android:priority="100">
                 <action android:name="com.android.cts.action.SCHEME_SUB" />
-                <data android:scheme="content" />
                 <data android:scheme="flubber" />
-                <data android:scheme="zoodle" />
             </intent-filter>
         </activity>
 
-        <!-- upgrade test; authority subset -->
+        <!-- upgrade test; authority subset is "equivalent" -->
         <activity android:name=".UpgradeAuthoritySubset">
             <intent-filter android:priority="100">
                 <action android:name="com.android.cts.action.AUTHORITY_SUB" />
-                <data android:host="www.google.com" android:port="80" />
-                <data android:host="www.google.com" android:port="8080" />
-                <data android:host="mail.google.com" android:port="80" />
                 <data android:host="goo.gl" android:port="443" />
             </intent-filter>
         </activity>
 
+        <!-- upgrade test; new activity cannot get >0 priority -->
+        <activity android:name=".UpgradeNewActivity">
+            <intent-filter android:priority="100">
+                <action android:name="com.android.cts.action.NEW_ACTIVITY" />
+                <category android:name="android.intent.category.INFO" />
+            </intent-filter>
+        </activity>
 
-        <!-- upgrade test; new action -->
+        <!-- upgrade test; new action cannot get >0 priority -->
         <activity android:name=".UpgradeNewAction">
             <intent-filter android:priority="100">
                 <action android:name="com.android.cts.action.NEW_ACTION" />
-                <category android:name="android.intent.category.DEFAULT" />
+                <action android:name="com.android.cts.action.NEW_ACTION_2" />
             </intent-filter>
         </activity>
 
-        <!-- upgrade test; new category -->
+        <!-- upgrade test; new category cannot get >0 priority -->
         <activity android:name=".UpgradeNewCategory">
             <intent-filter android:priority="100">
                 <action android:name="com.android.cts.action.NEW_CATEGORY" />
+                <category android:name="android.intent.category.INFO" />
                 <category android:name="android.intent.category.DEFAULT" />
+                <category android:name="android.intent.category.DOODLE" />
             </intent-filter>
         </activity>
 
-        <!-- upgrade test; new scheme -->
+        <!-- upgrade test; new scheme cannot get >0 priority -->
         <activity android:name=".UpgradeNewScheme">
             <intent-filter android:priority="100">
                 <action android:name="com.android.cts.action.NEW_SCHEME" />
                 <data android:scheme="content" />
+                <data android:scheme="flubber" />
+                <data android:scheme="zoodle" />
+                <data android:scheme="zowie" />
             </intent-filter>
         </activity>
 
-        <!-- upgrade test; new authority -->
+        <!-- upgrade test; new authority cannot get >0 priority -->
         <activity android:name=".UpgradeNewAuthority">
             <intent-filter android:priority="100">
                 <action android:name="com.android.cts.action.NEW_AUTHORITY" />
                 <data android:host="www.google.com" android:port="80" />
+                <data android:host="www.google.com" android:port="8080" />
+                <data android:host="mail.google.com" android:port="80" />
+                <data android:host="goo.gl" android:port="443" />
+                <data android:host="www.google.com" android:port="443" />
             </intent-filter>
         </activity>
 
+        <uses-library android:name="android.test.runner" />
     </application>
+
 </manifest>
 
diff --git a/packages/DocumentsUI/res/values-es-rUS/strings.xml b/packages/DocumentsUI/res/values-es-rUS/strings.xml
index 60f5f96..cbb148f 100644
--- a/packages/DocumentsUI/res/values-es-rUS/strings.xml
+++ b/packages/DocumentsUI/res/values-es-rUS/strings.xml
@@ -138,6 +138,6 @@
       <item quantity="other">¿Deseas borrar <xliff:g id="COUNT_1">%1$d</xliff:g> elementos?</item>
       <item quantity="one">¿Deseas borrar <xliff:g id="COUNT_0">%1$d</xliff:g> elemento?</item>
     </plurals>
-    <string name="too_many_selected" msgid="6781456208116966753">"Solo puedes seleccionar hasta mil elementos a la vez"</string>
-    <string name="too_many_in_select_all" msgid="8281987479885307456">"Solo se seleccionaron mil elementos"</string>
+    <string name="too_many_selected" msgid="6781456208116966753">"Solo puedes seleccionar hasta 1,000 elementos a la vez"</string>
+    <string name="too_many_in_select_all" msgid="8281987479885307456">"Solo se seleccionaron 1,000 elementos"</string>
 </resources>
diff --git a/packages/DocumentsUI/res/values-iw/strings.xml b/packages/DocumentsUI/res/values-iw/strings.xml
index f5cc079..2889860 100644
--- a/packages/DocumentsUI/res/values-iw/strings.xml
+++ b/packages/DocumentsUI/res/values-iw/strings.xml
@@ -162,6 +162,6 @@
       <item quantity="other">האם למחוק <xliff:g id="COUNT_1">%1$d</xliff:g> פריטים?</item>
       <item quantity="one">האם למחוק <xliff:g id="COUNT_0">%1$d</xliff:g> פריט?</item>
     </plurals>
-    <string name="too_many_selected" msgid="6781456208116966753">"מצטערים, ניתן לבחור עד אלף פריטים בלבד בבת אחת"</string>
-    <string name="too_many_in_select_all" msgid="8281987479885307456">"ניתן לבחור אלף פריטים בלבד"</string>
+    <string name="too_many_selected" msgid="6781456208116966753">"מצטערים, ניתן לבחור בבת אחת אלף פריטים לכל היותר"</string>
+    <string name="too_many_in_select_all" msgid="8281987479885307456">"ניתן לבחור אלף פריטים לכל היותר"</string>
 </resources>
diff --git a/packages/DocumentsUI/res/values-kk-rKZ/strings.xml b/packages/DocumentsUI/res/values-kk-rKZ/strings.xml
index d20b648f..dcb8464 100644
--- a/packages/DocumentsUI/res/values-kk-rKZ/strings.xml
+++ b/packages/DocumentsUI/res/values-kk-rKZ/strings.xml
@@ -138,6 +138,6 @@
       <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> элементті жою керек пе?</item>
       <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> элементті жою керек пе?</item>
     </plurals>
-    <string name="too_many_selected" msgid="6781456208116966753">"Бір әрекетпен тек 1000 элемент таңдауға болады"</string>
+    <string name="too_many_selected" msgid="6781456208116966753">"Бір жолы тек 1000 элемент таңдауға болады"</string>
     <string name="too_many_in_select_all" msgid="8281987479885307456">"Тек 1000 элемент таңдалды"</string>
 </resources>
diff --git a/packages/DocumentsUI/src/com/android/documentsui/BaseActivity.java b/packages/DocumentsUI/src/com/android/documentsui/BaseActivity.java
index 44d7136..50273af 100644
--- a/packages/DocumentsUI/src/com/android/documentsui/BaseActivity.java
+++ b/packages/DocumentsUI/src/com/android/documentsui/BaseActivity.java
@@ -32,6 +32,7 @@
 import android.content.pm.PackageInfo;
 import android.content.pm.PackageManager;
 import android.content.pm.ProviderInfo;
+import android.database.ContentObserver;
 import android.net.Uri;
 import android.os.AsyncTask;
 import android.os.Bundle;
@@ -46,7 +47,6 @@
 import android.view.KeyEvent;
 import android.view.Menu;
 import android.view.MenuItem;
-import android.view.WindowManager;
 import android.widget.Spinner;
 
 import com.android.documentsui.SearchViewManager.SearchManagerListener;
@@ -78,6 +78,12 @@
     List<EventListener> mEventListeners = new ArrayList<>();
 
     private final String mTag;
+    private final ContentObserver mRootsCacheObserver = new ContentObserver(new Handler()) {
+        @Override
+        public void onChange(boolean selfChange) {
+            new HandleRootsChangedTask(BaseActivity.this).execute(getCurrentRoot());
+        }
+    };
 
     @LayoutRes
     private int mLayoutId;
@@ -118,14 +124,8 @@
 
         mRoots = DocumentsApplication.getRootsCache(this);
 
-        mRoots.setOnCacheUpdateListener(
-                new RootsCache.OnCacheUpdateListener() {
-                    @Override
-                    public void onCacheUpdate() {
-                        new HandleRootsChangedTask(BaseActivity.this)
-                                .execute(getCurrentRoot());
-                    }
-                });
+        getContentResolver().registerContentObserver(
+                RootsCache.sNotificationUri, false, mRootsCacheObserver);
 
         mSearchManager = new SearchViewManager(this, icicle);
 
@@ -190,7 +190,7 @@
 
     @Override
     protected void onDestroy() {
-        mRoots.setOnCacheUpdateListener(null);
+        getContentResolver().unregisterContentObserver(mRootsCacheObserver);
         super.onDestroy();
     }
 
@@ -793,6 +793,7 @@
 
     private static final class HandleRootsChangedTask
             extends PairedTask<BaseActivity, RootInfo, RootInfo> {
+        RootInfo mCurrentRoot;
         DocumentInfo mDefaultRootDocument;
 
         public HandleRootsChangedTask(BaseActivity activity) {
@@ -802,11 +803,10 @@
         @Override
         protected RootInfo run(RootInfo... roots) {
             assert(roots.length == 1);
-
-            final RootInfo currentRoot = roots[0];
+            mCurrentRoot = roots[0];
             final Collection<RootInfo> cachedRoots = mOwner.mRoots.getRootsBlocking();
             for (final RootInfo root : cachedRoots) {
-                if (root.getUri().equals(currentRoot.getUri())) {
+                if (root.getUri().equals(mCurrentRoot.getUri())) {
                     // We don't need to change the current root as the current root was not removed.
                     return null;
                 }
@@ -827,6 +827,14 @@
                 return;
             }
 
+            // If the activity has been launched for the specific root and it is removed, finish the
+            // activity.
+            final Uri uri = mOwner.getIntent().getData();
+            if (uri != null && uri.equals(mCurrentRoot.getUri())) {
+                mOwner.finish();
+                return;
+            }
+
             // Clear entire backstack and start in new root.
             mOwner.mState.onRootChanged(defaultRoot);
             mOwner.mSearchManager.update(defaultRoot);
diff --git a/packages/DocumentsUI/src/com/android/documentsui/QuickViewIntentBuilder.java b/packages/DocumentsUI/src/com/android/documentsui/QuickViewIntentBuilder.java
index c78face..af6aee7 100644
--- a/packages/DocumentsUI/src/com/android/documentsui/QuickViewIntentBuilder.java
+++ b/packages/DocumentsUI/src/com/android/documentsui/QuickViewIntentBuilder.java
@@ -101,7 +101,10 @@
                     }
                 }
 
-                intent.putExtra(Intent.EXTRA_INDEX, documentLocation);
+                // The documentLocation variable contains an index in "uris". However,
+                // ClipData contains a slice of "uris", so we need to shift the location
+                // so it points to the same Uri.
+                intent.putExtra(Intent.EXTRA_INDEX, documentLocation - range.getLower());
                 intent.setClipData(clipData);
 
                 return intent;
@@ -147,12 +150,12 @@
             authority = getCursorString(cursor, RootCursorWrapper.COLUMN_AUTHORITY);
             uri = DocumentsContract.buildDocumentUri(authority, id);
 
-            if (id.equals(mDocument.documentId)) {
-                if (DEBUG) Log.d(TAG, "Found starting point for QV. " + i);
-                documentLocation = i;
-            }
-
             uris.add(uri);
+
+            if (id.equals(mDocument.documentId)) {
+                documentLocation = uris.size() - 1;  // Position in "uris", not in the model.
+                if (DEBUG) Log.d(TAG, "Found starting point for QV. " + documentLocation);
+            }
         }
 
         return documentLocation;
diff --git a/packages/DocumentsUI/src/com/android/documentsui/RootsCache.java b/packages/DocumentsUI/src/com/android/documentsui/RootsCache.java
index 559348e..88eeb49 100644
--- a/packages/DocumentsUI/src/com/android/documentsui/RootsCache.java
+++ b/packages/DocumentsUI/src/com/android/documentsui/RootsCache.java
@@ -67,7 +67,6 @@
 
     private final Context mContext;
     private final ContentObserver mObserver;
-    private OnCacheUpdateListener mCacheUpdateListener;
 
     private final RootInfo mRecentsRoot;
 
@@ -119,10 +118,6 @@
         }
     }
 
-    static interface OnCacheUpdateListener {
-        void onCacheUpdate();
-    }
-
     /**
      * Gather roots from all known storage providers.
      */
@@ -280,13 +275,6 @@
             return null;
         }
 
-        @Override
-        protected void onPostExecute(Void result) {
-            if (mCacheUpdateListener != null) {
-                mCacheUpdateListener.onCacheUpdate();
-            }
-        }
-
         private void handleDocumentsProvider(ProviderInfo info) {
             // Ignore stopped packages for now; we might query them
             // later during UI interaction.
@@ -445,10 +433,6 @@
         }
     }
 
-    public void setOnCacheUpdateListener(OnCacheUpdateListener cacheUpdateListener) {
-        mCacheUpdateListener = cacheUpdateListener;
-    }
-
     /**
      * Returns the default root for the specified state.
      */
diff --git a/packages/DocumentsUI/src/com/android/documentsui/Shared.java b/packages/DocumentsUI/src/com/android/documentsui/Shared.java
index 07c3cdbc..784d30f 100644
--- a/packages/DocumentsUI/src/com/android/documentsui/Shared.java
+++ b/packages/DocumentsUI/src/com/android/documentsui/Shared.java
@@ -156,7 +156,8 @@
 
     /**
      * Compare two strings against each other using system default collator in a
-     * case-insensitive mode.
+     * case-insensitive mode. Clusters strings prefixed with {@link DIR_PREFIX}
+     * before other items.
      */
     public static int compareToIgnoreCaseNullable(String lhs, String rhs) {
         final boolean leftEmpty = TextUtils.isEmpty(lhs);
@@ -169,14 +170,6 @@
         return sCollator.compare(lhs, rhs);
     }
 
-    /**
-     * Compare two strings against each other using system default collator in a
-     * case-insensitive mode.
-     */
-    public static int compareToIgnoreCase(String lhs, String rhs) {
-        return sCollator.compare(lhs, rhs);
-    }
-
     public static boolean isHardwareKeyboardAvailable(Context context) {
         return context.getResources().getConfiguration().keyboard != Configuration.KEYBOARD_NOKEYS;
     }
diff --git a/packages/DocumentsUI/src/com/android/documentsui/dirlist/DirectoryFragment.java b/packages/DocumentsUI/src/com/android/documentsui/dirlist/DirectoryFragment.java
index b67f6a2..312acb5 100644
--- a/packages/DocumentsUI/src/com/android/documentsui/dirlist/DirectoryFragment.java
+++ b/packages/DocumentsUI/src/com/android/documentsui/dirlist/DirectoryFragment.java
@@ -710,10 +710,10 @@
             void onDocumentsReady(List<DocumentInfo> docs) {
                 Intent intent;
 
-                // Filter out directories - those can't be shared.
+                // Filter out directories and virtual files - those can't be shared.
                 List<DocumentInfo> docsForSend = new ArrayList<>();
                 for (DocumentInfo doc: docs) {
-                    if (!Document.MIME_TYPE_DIR.equals(doc.mimeType)) {
+                    if (!doc.isDirectory() && !doc.isVirtualDocument()) {
                         docsForSend.add(doc);
                     }
                 }
diff --git a/packages/DocumentsUI/src/com/android/documentsui/dirlist/Model.java b/packages/DocumentsUI/src/com/android/documentsui/dirlist/Model.java
index e2a28ad9a..0a2960f 100644
--- a/packages/DocumentsUI/src/com/android/documentsui/dirlist/Model.java
+++ b/packages/DocumentsUI/src/com/android/documentsui/dirlist/Model.java
@@ -20,6 +20,8 @@
 import static com.android.documentsui.State.SORT_ORDER_DISPLAY_NAME;
 import static com.android.documentsui.State.SORT_ORDER_LAST_MODIFIED;
 import static com.android.documentsui.State.SORT_ORDER_SIZE;
+import static com.android.documentsui.model.DocumentInfo.getCursorLong;
+import static com.android.documentsui.model.DocumentInfo.getCursorString;
 
 import android.database.Cursor;
 import android.database.MergeCursor;
@@ -48,7 +50,6 @@
 @VisibleForTesting
 public class Model {
     private static final String TAG = "Model";
-    private static final String EMPTY = "";
 
     private boolean mIsLoading;
     private List<UpdateListener> mUpdateListeners = new ArrayList<>();
@@ -63,13 +64,6 @@
     private String mIds[] = new String[0];
     private int mSortOrder = SORT_ORDER_DISPLAY_NAME;
 
-    private int mAuthorityIndex = -1;
-    private int mDocIdIndex = -1;
-    private int mMimeTypeIndex = -1;
-    private int mDisplayNameIndex = -1;
-    private int mSizeIndex = -1;
-    private int mLastModifiedIndex = -1;
-
     @Nullable String info;
     @Nullable String error;
     @Nullable DocumentInfo doc;
@@ -111,14 +105,6 @@
         mCursor = result.cursor;
         mCursorCount = mCursor.getCount();
         mSortOrder = result.sortOrder;
-        mAuthorityIndex = mCursor.getColumnIndex(RootCursorWrapper.COLUMN_AUTHORITY);
-        assert(mAuthorityIndex != -1);
-        mDocIdIndex = mCursor.getColumnIndex(Document.COLUMN_DOCUMENT_ID);
-        mMimeTypeIndex = mCursor.getColumnIndex(Document.COLUMN_MIME_TYPE);
-        mDisplayNameIndex = mCursor.getColumnIndex(Document.COLUMN_DISPLAY_NAME);
-        mLastModifiedIndex = mCursor.getColumnIndex(Document.COLUMN_LAST_MODIFIED);
-        mSizeIndex = mCursor.getColumnIndex(Document.COLUMN_SIZE);
-
         doc = result.doc;
 
         updateModelData();
@@ -163,7 +149,10 @@
 
         mCursor.moveToPosition(-1);
         for (int pos = 0; pos < mCursorCount; ++pos) {
-            mCursor.moveToNext();
+            if (!mCursor.moveToNext()) {
+                Log.e(TAG, "Fail to move cursor to next pos: " + pos);
+                return;
+            }
             positions[pos] = pos;
 
             // Generates a Model ID for a cursor entry that refers to a document. The Model ID is a
@@ -171,23 +160,26 @@
             // If the cursor is a merged cursor over multiple authorities, then prefix the ids
             // with the authority to avoid collisions.
             if (mCursor instanceof MergeCursor) {
-                mIds[pos] = getStringOrEmpty(mAuthorityIndex) + "|" + getStringOrEmpty(mDocIdIndex);
+                mIds[pos] = getCursorString(mCursor, RootCursorWrapper.COLUMN_AUTHORITY) + "|" +
+                        getCursorString(mCursor, Document.COLUMN_DOCUMENT_ID);
             } else {
-                mIds[pos] = getStringOrEmpty(mDocIdIndex);
+                mIds[pos] = getCursorString(mCursor, Document.COLUMN_DOCUMENT_ID);
             }
 
-            mimeType = getStringOrEmpty(mMimeTypeIndex);
+            mimeType = getCursorString(mCursor, Document.COLUMN_MIME_TYPE);
             isDirs[pos] = Document.MIME_TYPE_DIR.equals(mimeType);
 
-            switch (mSortOrder) {
+            switch(mSortOrder) {
                 case SORT_ORDER_DISPLAY_NAME:
-                    displayNames[pos] = getStringOrEmpty(mDisplayNameIndex);
+                    final String displayName = getCursorString(
+                            mCursor, Document.COLUMN_DISPLAY_NAME);
+                    displayNames[pos] = displayName;
                     break;
                 case SORT_ORDER_LAST_MODIFIED:
-                    longValues[pos] = getLastModified();
+                    longValues[pos] = getLastModified(mCursor);
                     break;
                 case SORT_ORDER_SIZE:
-                    longValues[pos] = getDocSize();
+                    longValues[pos] = getCursorLong(mCursor, Document.COLUMN_SIZE);
                     break;
             }
         }
@@ -243,7 +235,7 @@
                 } else {
                     final String lhs = pivotValue;
                     final String rhs = sortKey[mid];
-                    compare = Shared.compareToIgnoreCase(lhs, rhs);
+                    compare = Shared.compareToIgnoreCaseNullable(lhs, rhs);
                 }
 
                 if (compare < 0) {
@@ -364,42 +356,13 @@
     }
 
     /**
-     * @return Value of the string column, or an empty string if no value, or empty value.
-     */
-    private String getStringOrEmpty(int columnIndex) {
-        if (columnIndex == -1)
-            return EMPTY;
-        final String result = mCursor.getString(columnIndex);
-        return result != null ? result : EMPTY;
-    }
-
-    /**
      * @return Timestamp for the given document. Some docs (e.g. active downloads) have a null
-     * or missing timestamp - these will be replaced with MAX_LONG so that such files get sorted to
-     * the top when sorting by date.
+     * timestamp - these will be replaced with MAX_LONG so that such files get sorted to the top
+     * when sorting by date.
      */
-    private long getLastModified() {
-        if (mLastModifiedIndex == -1)
-            return Long.MAX_VALUE;
-        try {
-            final long result = mCursor.getLong(mLastModifiedIndex);
-            return result > 0 ? result : Long.MAX_VALUE;
-        } catch (NumberFormatException e) {
-            return Long.MAX_VALUE;
-        }
-    }
-
-    /**
-     * @return Size for the given document. If the size is unknown or invalid, returns 0.
-     */
-    private long getDocSize() {
-        if (mSizeIndex == -1)
-            return 0;
-        try {
-            return mCursor.getLong(mSizeIndex);
-        } catch (NumberFormatException e) {
-            return 0;
-        }
+    long getLastModified(Cursor cursor) {
+        long l = getCursorLong(mCursor, Document.COLUMN_LAST_MODIFIED);
+        return (l == -1) ? Long.MAX_VALUE : l;
     }
 
     public @Nullable Cursor getItem(String modelId) {
diff --git a/packages/ExtServices/src/android/ext/services/notification/Ranker.java b/packages/ExtServices/src/android/ext/services/notification/Ranker.java
index 3ef2aea..fefedf8 100644
--- a/packages/ExtServices/src/android/ext/services/notification/Ranker.java
+++ b/packages/ExtServices/src/android/ext/services/notification/Ranker.java
@@ -68,9 +68,7 @@
                     if (notificationsForPackage == null) {
                         notificationsForPackage = new LinkedHashSet<>();
                     }
-                    if (notificationsForPackage.contains(sbn.getKey())) {
-                        return;
-                    }
+
                     notificationsForPackage.add(sbn.getKey());
                     mUnbundledNotifications.put(sbn.getPackageName(), notificationsForPackage);
 
diff --git a/packages/PrintSpooler/AndroidManifest.xml b/packages/PrintSpooler/AndroidManifest.xml
index ed6fdb7..2da4d6a 100644
--- a/packages/PrintSpooler/AndroidManifest.xml
+++ b/packages/PrintSpooler/AndroidManifest.xml
@@ -57,7 +57,7 @@
 
         <activity
             android:name=".ui.PrintActivity"
-            android:configChanges="screenSize|smallestScreenSize|orientation|locale|keyboard|keyboardHidden|fontScale|uiMode|layoutDirection"
+            android:configChanges="mnc|mnc|touchscreen|navigation|screenLayout|screenSize|smallestScreenSize|orientation|locale|keyboard|keyboardHidden|fontScale|uiMode|layoutDirection|density"
             android:permission="android.permission.BIND_PRINT_SPOOLER_SERVICE"
             android:theme="@style/Theme.PrintActivity">
             <intent-filter>
diff --git a/packages/PrintSpooler/src/com/android/printspooler/model/PageContentRepository.java b/packages/PrintSpooler/src/com/android/printspooler/model/PageContentRepository.java
index bb35917..999d82d 100644
--- a/packages/PrintSpooler/src/com/android/printspooler/model/PageContentRepository.java
+++ b/packages/PrintSpooler/src/com/android/printspooler/model/PageContentRepository.java
@@ -510,7 +510,12 @@
         public void destroy() {
             if (mBoundToService) {
                 mBoundToService = false;
-                mContext.unbindService(AsyncRenderer.this);
+                try {
+                    mContext.unbindService(AsyncRenderer.this);
+                } catch (IllegalArgumentException e) {
+                    // Service might have been forcefully unbound in onDestroy()
+                    Log.e(LOG_TAG, "Cannot unbind service", e);
+                }
             }
 
             mPageContentCache.invalidate();
diff --git a/packages/PrintSpooler/src/com/android/printspooler/ui/PrintActivity.java b/packages/PrintSpooler/src/com/android/printspooler/ui/PrintActivity.java
index c411186..cc0b4ca 100644
--- a/packages/PrintSpooler/src/com/android/printspooler/ui/PrintActivity.java
+++ b/packages/PrintSpooler/src/com/android/printspooler/ui/PrintActivity.java
@@ -268,7 +268,7 @@
                 new Runnable() {
             @Override
             public void run() {
-                if (isFinishing()) {
+                if (isFinishing() || isDestroyed()) {
                     // onPause might have not been able to cancel the job, see PrintActivity#onPause
                     // To be sure, cancel the job again. Double canceling does no harm.
                     mSpoolerProvider.getSpooler().setPrintJobState(mPrintJob.getId(),
@@ -288,12 +288,8 @@
         // the first batch of results which will be delivered
         // after reading historical data. This should be pretty
         // fast, so just wait before showing the UI.
-        mPrinterRegistry = new PrinterRegistry(PrintActivity.this,
-                new Runnable() {
-            @Override
-            public void run() {
-                onPrinterRegistryReady(documentAdapter);
-            }
+        mPrinterRegistry = new PrinterRegistry(PrintActivity.this, () -> {
+            (new Handler(getMainLooper())).post(() -> onPrinterRegistryReady(documentAdapter));
         }, LOADER_ID_PRINT_REGISTRY, LOADER_ID_PRINT_REGISTRY_INT);
     }
 
@@ -324,7 +320,8 @@
 
                 // If we are finishing or we are in a state that we do not need any
                 // data from the printing app, then no need to finish.
-                if (isFinishing() || (isFinalState(mState) && !mPrintedDocument.isUpdating())) {
+                if (isFinishing() || isDestroyed() ||
+                        (isFinalState(mState) && !mPrintedDocument.isUpdating())) {
                     return;
                 }
                 setState(STATE_PRINT_CANCELED);
@@ -622,6 +619,17 @@
     }
 
     @Override
+    protected void onDestroy() {
+        if (mPrintedDocument != null) {
+            mPrintedDocument.cancel(true);
+        }
+
+        doFinish();
+
+        super.onDestroy();
+    }
+
+    @Override
     protected void onActivityResult(int requestCode, int resultCode, Intent data) {
         switch (requestCode) {
             case ACTIVITY_REQUEST_CREATE_FILE: {
@@ -964,7 +972,7 @@
     }
 
     private void ensureProgressUiShown() {
-        if (isFinishing()) {
+        if (isFinishing() || isDestroyed()) {
             return;
         }
         if (mUiState != UI_STATE_PROGRESS) {
@@ -976,7 +984,7 @@
     }
 
     private void ensurePreviewUiShown() {
-        if (isFinishing()) {
+        if (isFinishing() || isDestroyed()) {
             return;
         }
         if (mUiState != UI_STATE_PREVIEW) {
@@ -987,7 +995,7 @@
     }
 
     private void ensureErrorUiShown(CharSequence message, int action) {
-        if (isFinishing()) {
+        if (isFinishing() || isDestroyed()) {
             return;
         }
         if (mUiState != UI_STATE_ERROR) {
@@ -1267,6 +1275,7 @@
         mPageRangeTitle = (TextView) findViewById(R.id.page_range_title);
         mPageRangeEditText = (EditText) findViewById(R.id.page_range_edittext);
         mPageRangeEditText.setVisibility(View.INVISIBLE);
+        mPageRangeTitle.setVisibility(View.INVISIBLE);
         mPageRangeEditText.setOnFocusChangeListener(mSelectAllOnFocusListener);
         mPageRangeEditText.addTextChangedListener(new RangeTextWatcher());
 
@@ -1353,7 +1362,7 @@
 
     @Override
     public void onLoaderReset(Loader<List<PrintServiceInfo>> loader) {
-        if (!isFinishing()) {
+        if (!(isFinishing() || isDestroyed())) {
             onLoadFinished(loader, null);
         }
     }
@@ -2036,7 +2045,9 @@
             mSpoolerProvider.destroy();
         }
 
-        setState(mProgressMessageController.cancel());
+        if (mProgressMessageController != null) {
+            setState(mProgressMessageController.cancel());
+        }
 
         if (mState != STATE_INITIALIZING) {
             mPrintedDocument.finish();
diff --git a/packages/SettingsLib/res/values-be-rBY/strings.xml b/packages/SettingsLib/res/values-be-rBY/strings.xml
index 75297d5..1c15082 100644
--- a/packages/SettingsLib/res/values-be-rBY/strings.xml
+++ b/packages/SettingsLib/res/values-be-rBY/strings.xml
@@ -91,7 +91,7 @@
     <string name="tether_settings_title_bluetooth" msgid="355855408317564420">"Bluetooth-мадэм"</string>
     <string name="tether_settings_title_usb_bluetooth" msgid="5355828977109785001">"Мадэм"</string>
     <string name="tether_settings_title_all" msgid="8356136101061143841">"Мадэм і партатыўны хотспот"</string>
-    <string name="managed_user_title" msgid="8109605045406748842">"Усе рабочыя праграмы"</string>
+    <string name="managed_user_title" msgid="8109605045406748842">"Усе працоўныя праграмы"</string>
     <string name="user_guest" msgid="8475274842845401871">"Госць"</string>
     <string name="unknown" msgid="1592123443519355854">"Невядома"</string>
     <string name="running_process_item_user_label" msgid="3129887865552025943">"Карыстальнiк: <xliff:g id="USER_NAME">%1$s</xliff:g>"</string>
@@ -123,7 +123,7 @@
     <string name="tts_engine_settings_button" msgid="1030512042040722285">"Запуск налад модулю"</string>
     <string name="tts_engine_preference_section_title" msgid="448294500990971413">"Выбраны модуль"</string>
     <string name="tts_general_section_title" msgid="4402572014604490502">"Агульныя"</string>
-    <string name="tts_reset_speech_pitch_title" msgid="5789394019544785915">"Скід вышыні голасу падчас гаворкі"</string>
+    <string name="tts_reset_speech_pitch_title" msgid="5789394019544785915">"Скід вышыні голасу падчас маўлення"</string>
     <string name="tts_reset_speech_pitch_summary" msgid="8700539616245004418">"Скінуць вышыню голасу, з якой прагаворваецца тэкст, да стандартнай."</string>
   <string-array name="tts_rate_entries">
     <item msgid="6695494874362656215">"Вельмі павольна"</item>
diff --git a/packages/SettingsLib/res/values-eu-rES/strings.xml b/packages/SettingsLib/res/values-eu-rES/strings.xml
index 4ac1d83..6340d50 100644
--- a/packages/SettingsLib/res/values-eu-rES/strings.xml
+++ b/packages/SettingsLib/res/values-eu-rES/strings.xml
@@ -124,7 +124,7 @@
     <string name="tts_engine_preference_section_title" msgid="448294500990971413">"Motor hobetsia"</string>
     <string name="tts_general_section_title" msgid="4402572014604490502">"Orokorra"</string>
     <string name="tts_reset_speech_pitch_title" msgid="5789394019544785915">"Berrezarri ahots-tonua"</string>
-    <string name="tts_reset_speech_pitch_summary" msgid="8700539616245004418">"Berrezarri testua esateko ahots-tonua lehenetsira."</string>
+    <string name="tts_reset_speech_pitch_summary" msgid="8700539616245004418">"Berrezarri testua esateko ahots-tonu lehenetsia."</string>
   <string-array name="tts_rate_entries">
     <item msgid="6695494874362656215">"Oso motela"</item>
     <item msgid="4795095314303559268">"Motela"</item>
diff --git a/packages/SettingsLib/res/values-ky-rKG/strings.xml b/packages/SettingsLib/res/values-ky-rKG/strings.xml
index 48718f1..f6a7592 100644
--- a/packages/SettingsLib/res/values-ky-rKG/strings.xml
+++ b/packages/SettingsLib/res/values-ky-rKG/strings.xml
@@ -124,7 +124,7 @@
     <string name="tts_engine_preference_section_title" msgid="448294500990971413">"Тандалган жарак"</string>
     <string name="tts_general_section_title" msgid="4402572014604490502">"Жалпы"</string>
     <string name="tts_reset_speech_pitch_title" msgid="5789394019544785915">"Сүйлөө тонун баштапкы абалга келтирүү"</string>
-    <string name="tts_reset_speech_pitch_summary" msgid="8700539616245004418">"Текст айтылчу тонду демейки тоного коюңуз."</string>
+    <string name="tts_reset_speech_pitch_summary" msgid="8700539616245004418">"Текст айтылчу тонду демейки тонго коюңуз."</string>
   <string-array name="tts_rate_entries">
     <item msgid="6695494874362656215">"Өтө жай"</item>
     <item msgid="4795095314303559268">"Жай"</item>
diff --git a/packages/SettingsLib/res/values-sk/strings.xml b/packages/SettingsLib/res/values-sk/strings.xml
index 25aa283..64dd02b 100644
--- a/packages/SettingsLib/res/values-sk/strings.xml
+++ b/packages/SettingsLib/res/values-sk/strings.xml
@@ -124,7 +124,7 @@
     <string name="tts_engine_preference_section_title" msgid="448294500990971413">"Preferovaný nástroj"</string>
     <string name="tts_general_section_title" msgid="4402572014604490502">"Všeobecné"</string>
     <string name="tts_reset_speech_pitch_title" msgid="5789394019544785915">"Obnoviť výšku hlasu"</string>
-    <string name="tts_reset_speech_pitch_summary" msgid="8700539616245004418">"Obnovte predvolenú výšku hlasu vyslovujúceho text"</string>
+    <string name="tts_reset_speech_pitch_summary" msgid="8700539616245004418">"Obnovte predvolenú výšku hlasu vyslovujúceho text."</string>
   <string-array name="tts_rate_entries">
     <item msgid="6695494874362656215">"Veľmi pomaly"</item>
     <item msgid="4795095314303559268">"Pomaly"</item>
diff --git a/packages/SettingsLib/res/values/strings.xml b/packages/SettingsLib/res/values/strings.xml
index 74c98e4..efa34ff 100644
--- a/packages/SettingsLib/res/values/strings.xml
+++ b/packages/SettingsLib/res/values/strings.xml
@@ -421,8 +421,6 @@
     <string name="wifi_aggressive_handover">Aggressive Wi\u2011Fi to Cellular handover</string>
     <!-- Setting Checkbox title whether to enable WiFi Scanning in the presence of traffic. [CHAR LIMIT=80] -->
     <string name="wifi_allow_scan_with_traffic">Always allow Wi\u2011Fi Roam Scans</string>
-    <!-- Setting Checkbox title whether to enable WiFi Scanning in the presence of traffic. [CHAR LIMIT=80] -->
-    <string name="legacy_dhcp_client">Use legacy DHCP client</string>
     <!-- Setting Checkbox title whether to always keep cellular data active. [CHAR LIMIT=80] -->
     <string name="mobile_data_always_on">Cellular data always active</string>
     <!-- Setting Checkbox title for disabling Bluetooth absolute volume -->
diff --git a/packages/SettingsLib/src/com/android/settingslib/drawer/SettingsDrawerActivity.java b/packages/SettingsLib/src/com/android/settingslib/drawer/SettingsDrawerActivity.java
index bcbc6ac..bf75046 100644
--- a/packages/SettingsLib/src/com/android/settingslib/drawer/SettingsDrawerActivity.java
+++ b/packages/SettingsLib/src/com/android/settingslib/drawer/SettingsDrawerActivity.java
@@ -52,7 +52,7 @@
     protected static final boolean DEBUG_TIMING = false;
     private static final String TAG = "SettingsDrawerActivity";
 
-    static final String EXTRA_SHOW_MENU = "show_drawer_menu";
+    public static final String EXTRA_SHOW_MENU = "show_drawer_menu";
 
     private static List<DashboardCategory> sDashboardCategories;
     private static HashMap<Pair<String, String>, Tile> sTileCache;
diff --git a/packages/SettingsProvider/src/com/android/providers/settings/GenerationRegistry.java b/packages/SettingsProvider/src/com/android/providers/settings/GenerationRegistry.java
new file mode 100644
index 0000000..48533fa
--- /dev/null
+++ b/packages/SettingsProvider/src/com/android/providers/settings/GenerationRegistry.java
@@ -0,0 +1,160 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.providers.settings;
+
+import android.os.Bundle;
+import android.os.UserManager;
+import android.provider.Settings;
+import android.util.MemoryIntArray;
+import android.util.Slog;
+import android.util.SparseIntArray;
+import com.android.internal.annotations.GuardedBy;
+
+import java.io.IOException;
+
+/**
+ * This class tracks changes for global/secure/system tables on a
+ * per user basis and updates a shared memory region which client
+ * processes can read to determine if their local caches are stale,
+ */
+final class GenerationRegistry {
+    private static final String LOG_TAG = "GenerationTracker";
+
+    private static final boolean DEBUG = false;
+
+    private final Object mLock;
+
+    @GuardedBy("mLock")
+    private final SparseIntArray mKeyToIndexMap = new SparseIntArray();
+
+    @GuardedBy("mLock")
+    private final MemoryIntArray mImpl;
+
+    public GenerationRegistry(Object lock) {
+        mLock = lock;
+        // One for the global table, two for system and secure tables for a
+        // managed profile (managed profile is not included in the max user
+        // count), ten for partially deleted users if users are quickly removed,
+        // and twice max user count for system and secure.
+        final int size = 1 + 2 + 10 + 2 * UserManager.getMaxSupportedUsers();
+        MemoryIntArray impl = null;
+        try {
+            impl = new MemoryIntArray(size, false);
+        } catch (IOException e) {
+            Slog.e(LOG_TAG, "Error creating generation tracker", e);
+        }
+        mImpl = impl;
+    }
+
+    public void incrementGeneration(int key) {
+        synchronized (mLock) {
+            if (mImpl != null) {
+                try {
+                    final int index = getKeyIndexLocked(key);
+                    if (index >= 0) {
+                        final int generation = mImpl.get(index) + 1;
+                        mImpl.set(index, generation);
+                    }
+                } catch (IOException e) {
+                    Slog.e(LOG_TAG, "Error updating generation id", e);
+                }
+            }
+        }
+    }
+
+    public void addGenerationData(Bundle bundle, int key) {
+        synchronized (mLock) {
+            if (mImpl != null) {
+                final int index = getKeyIndexLocked(key);
+                if (index >= 0) {
+                    bundle.putParcelable(Settings.CALL_METHOD_TRACK_GENERATION_KEY, mImpl);
+                    bundle.putInt(Settings.CALL_METHOD_GENERATION_INDEX_KEY, index);
+                    if (DEBUG) {
+                        Slog.i(LOG_TAG, "Exported index:" + index + " for key:"
+                                + SettingsProvider.keyToString(key));
+                    }
+                }
+            }
+        }
+    }
+
+    private int getKeyIndexLocked(int key) {
+        int index = mKeyToIndexMap.get(key, -1);
+        if (index < 0) {
+            index = findNextEmptyIndex();
+            if (index >= 0) {
+                try {
+                    mImpl.set(index, 1);
+                    mKeyToIndexMap.append(key, index);
+                    if (DEBUG) {
+                        Slog.i(LOG_TAG, "Allocated index:" + index + " for key:"
+                                + SettingsProvider.keyToString(key));
+                    }
+                } catch (IOException e) {
+                    Slog.e(LOG_TAG, "Cannot write to generation memory array", e);
+                }
+            } else {
+                Slog.e(LOG_TAG, "Could not allocate generation index");
+            }
+        }
+        return index;
+    }
+
+    public void onUserRemoved(int userId) {
+        synchronized (mLock) {
+            if (mImpl != null && mKeyToIndexMap.size() > 0) {
+                final int secureKey = SettingsProvider.makeKey(
+                        SettingsProvider.SETTINGS_TYPE_SECURE, userId);
+                resetSlotForKeyLocked(secureKey);
+
+                final int systemKey = SettingsProvider.makeKey(
+                        SettingsProvider.SETTINGS_TYPE_SYSTEM, userId);
+                resetSlotForKeyLocked(systemKey);
+            }
+        }
+    }
+
+    private void resetSlotForKeyLocked(int key) {
+        final int index = mKeyToIndexMap.get(key, -1);
+        if (index >= 0) {
+            mKeyToIndexMap.delete(key);
+            try {
+                mImpl.set(index, 0);
+                if (DEBUG) {
+                    Slog.i(LOG_TAG, "Freed index:" + index + " for key:"
+                            + SettingsProvider.keyToString(key));
+                }
+            } catch (IOException e) {
+                Slog.e(LOG_TAG, "Cannot write to generation memory array", e);
+            }
+        }
+    }
+
+    private int findNextEmptyIndex() {
+        try {
+            final int size = mImpl.size();
+            for (int i = 0; i < size; i++) {
+                if (mImpl.get(i) == 0) {
+                    return i;
+                }
+            }
+        } catch (IOException e) {
+            Slog.e(LOG_TAG, "Error reading generation memory array", e);
+        }
+        return -1;
+    }
+}
\ No newline at end of file
diff --git a/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java b/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java
index 8dc247a..5ff9c0c 100644
--- a/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java
+++ b/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java
@@ -42,6 +42,7 @@
 import android.os.Binder;
 import android.os.Build;
 import android.os.Bundle;
+import android.os.Debug;
 import android.os.DropBoxManager;
 import android.os.Environment;
 import android.os.Handler;
@@ -51,9 +52,9 @@
 import android.os.Process;
 import android.os.RemoteException;
 import android.os.SELinux;
-import android.os.SystemProperties;
 import android.os.UserHandle;
 import android.os.UserManager;
+import android.os.UserManagerInternal;
 import android.provider.Settings;
 import android.text.TextUtils;
 import android.util.ArraySet;
@@ -64,6 +65,7 @@
 import com.android.internal.content.PackageMonitor;
 import com.android.internal.os.BackgroundThread;
 import com.android.providers.settings.SettingsState.Setting;
+import com.android.server.LocalServices;
 import com.android.server.SystemConfig;
 
 import java.io.File;
@@ -146,8 +148,15 @@
             Settings.NameValueTable.VALUE
     };
 
-    private static final Bundle NULL_SETTING = Bundle.forPair(Settings.NameValueTable.VALUE, null);
+    public static final int SETTINGS_TYPE_GLOBAL = 0;
+    public static final int SETTINGS_TYPE_SYSTEM = 1;
+    public static final int SETTINGS_TYPE_SECURE = 2;
 
+    public static final int SETTINGS_TYPE_MASK = 0xF0000000;
+    public static final int SETTINGS_TYPE_SHIFT = 28;
+
+    private static final Bundle NULL_SETTING_BUNDLE = Bundle.forPair(
+            Settings.NameValueTable.VALUE, null);
 
     // Per user secure settings that moved to the for all users global settings.
     static final Set<String> sSecureMovedToGlobalSettings = new ArraySet<>();
@@ -196,6 +205,40 @@
     // We have to call in the package manager with no lock held,
     private volatile IPackageManager mPackageManager;
 
+    public static int makeKey(int type, int userId) {
+        return (type << SETTINGS_TYPE_SHIFT) | userId;
+    }
+
+    public static int getTypeFromKey(int key) {
+        return key >>> SETTINGS_TYPE_SHIFT;
+    }
+
+    public static int getUserIdFromKey(int key) {
+        return key & ~SETTINGS_TYPE_MASK;
+    }
+
+    public static String settingTypeToString(int type) {
+        switch (type) {
+            case SETTINGS_TYPE_GLOBAL: {
+                return "SETTINGS_GLOBAL";
+            }
+            case SETTINGS_TYPE_SECURE: {
+                return "SETTINGS_SECURE";
+            }
+            case SETTINGS_TYPE_SYSTEM: {
+                return "SETTINGS_SYSTEM";
+            }
+            default: {
+                return "UNKNOWN";
+            }
+        }
+    }
+
+    public static String keyToString(int key) {
+        return "Key[user=" + getUserIdFromKey(key) + ";type="
+                + settingTypeToString(getTypeFromKey(key)) + "]";
+    }
+
     @Override
     public boolean onCreate() {
         synchronized (mLock) {
@@ -204,6 +247,7 @@
             mSettingsRegistry = new SettingsRegistry();
         }
         registerBroadcastReceivers();
+        startWatchingUserRestrictionChanges();
         return true;
     }
 
@@ -213,28 +257,28 @@
         switch (method) {
             case Settings.CALL_METHOD_GET_GLOBAL: {
                 Setting setting = getGlobalSetting(name);
-                return packageValueForCallResult(setting);
+                return packageValueForCallResult(setting, isTrackingGeneration(args));
             }
 
             case Settings.CALL_METHOD_GET_SECURE: {
                 Setting setting = getSecureSetting(name, requestingUserId);
-                return packageValueForCallResult(setting);
+                return packageValueForCallResult(setting, isTrackingGeneration(args));
             }
 
             case Settings.CALL_METHOD_GET_SYSTEM: {
                 Setting setting = getSystemSetting(name, requestingUserId);
-                return packageValueForCallResult(setting);
+                return packageValueForCallResult(setting, isTrackingGeneration(args));
             }
 
             case Settings.CALL_METHOD_PUT_GLOBAL: {
                 String value = getSettingValue(args);
-                insertGlobalSetting(name, value, requestingUserId);
+                insertGlobalSetting(name, value, requestingUserId, false);
                 break;
             }
 
             case Settings.CALL_METHOD_PUT_SECURE: {
                 String value = getSettingValue(args);
-                insertSecureSetting(name, value, requestingUserId);
+                insertSecureSetting(name, value, requestingUserId, false);
                 break;
             }
 
@@ -335,13 +379,13 @@
 
         switch (table) {
             case TABLE_GLOBAL: {
-                if (insertGlobalSetting(name, value, UserHandle.getCallingUserId())) {
+                if (insertGlobalSetting(name, value, UserHandle.getCallingUserId(), false)) {
                     return Uri.withAppendedPath(Settings.Global.CONTENT_URI, name);
                 }
             } break;
 
             case TABLE_SECURE: {
-                if (insertSecureSetting(name, value, UserHandle.getCallingUserId())) {
+                if (insertSecureSetting(name, value, UserHandle.getCallingUserId(), false)) {
                     return Uri.withAppendedPath(Settings.Secure.CONTENT_URI, name);
                 }
             } break;
@@ -398,12 +442,12 @@
         switch (args.table) {
             case TABLE_GLOBAL: {
                 final int userId = UserHandle.getCallingUserId();
-                return deleteGlobalSetting(args.name, userId) ? 1 : 0;
+                return deleteGlobalSetting(args.name, userId, false) ? 1 : 0;
             }
 
             case TABLE_SECURE: {
                 final int userId = UserHandle.getCallingUserId();
-                return deleteSecureSetting(args.name, userId) ? 1 : 0;
+                return deleteSecureSetting(args.name, userId, false) ? 1 : 0;
             }
 
             case TABLE_SYSTEM: {
@@ -439,12 +483,12 @@
         switch (args.table) {
             case TABLE_GLOBAL: {
                 final int userId = UserHandle.getCallingUserId();
-                return updateGlobalSetting(args.name, value, userId) ? 1 : 0;
+                return updateGlobalSetting(args.name, value, userId, false) ? 1 : 0;
             }
 
             case TABLE_SECURE: {
                 final int userId = UserHandle.getCallingUserId();
-                return updateSecureSetting(args.name, value, userId) ? 1 : 0;
+                return updateSecureSetting(args.name, value, userId, false) ? 1 : 0;
             }
 
             case TABLE_SYSTEM: {
@@ -557,11 +601,15 @@
 
                 switch (intent.getAction()) {
                     case Intent.ACTION_USER_REMOVED: {
-                        mSettingsRegistry.removeUserStateLocked(userId, true);
+                        synchronized (mLock) {
+                            mSettingsRegistry.removeUserStateLocked(userId, true);
+                        }
                     } break;
 
                     case Intent.ACTION_USER_STOPPED: {
-                        mSettingsRegistry.removeUserStateLocked(userId, false);
+                        synchronized (mLock) {
+                            mSettingsRegistry.removeUserStateLocked(userId, false);
+                        }
                     } break;
                 }
             }
@@ -582,6 +630,92 @@
                 UserHandle.ALL, true);
     }
 
+    private void startWatchingUserRestrictionChanges() {
+        // TODO: The current design of settings looking different based on user restrictions
+        // should be reworked to keep them separate and system code should check the setting
+        // first followed by checking the user restriction before performing an operation.
+        UserManagerInternal userManager = LocalServices.getService(UserManagerInternal.class);
+        userManager.addUserRestrictionsListener((int userId, Bundle newRestrictions,
+                Bundle prevRestrictions) -> {
+            // We are changing the settings affected by restrictions to their current
+            // value with a forced update to ensure that all cross profile dependencies
+            // are taken into account. Also make sure the settings update to.. the same
+            // value passes the security checks, so clear binder calling id.
+            if (newRestrictions.containsKey(UserManager.DISALLOW_SHARE_LOCATION)
+                    != prevRestrictions.containsKey(UserManager.DISALLOW_SHARE_LOCATION)) {
+                final long identity = Binder.clearCallingIdentity();
+                try {
+                    synchronized (mLock) {
+                        Setting setting = getSecureSetting(
+                                Settings.Secure.LOCATION_PROVIDERS_ALLOWED, userId);
+                        updateSecureSetting(Settings.Secure.LOCATION_PROVIDERS_ALLOWED,
+                                setting != null ? setting.getValue() : null, userId, true);
+                    }
+                } finally {
+                    Binder.restoreCallingIdentity(identity);
+                }
+            }
+            if (newRestrictions.containsKey(UserManager.DISALLOW_INSTALL_UNKNOWN_SOURCES)
+                    != prevRestrictions.containsKey(UserManager.DISALLOW_INSTALL_UNKNOWN_SOURCES)) {
+                final long identity = Binder.clearCallingIdentity();
+                try {
+                    synchronized (mLock) {
+                        Setting setting = getGlobalSetting(Settings.Global.INSTALL_NON_MARKET_APPS);
+                        updateGlobalSetting(Settings.Global.INSTALL_NON_MARKET_APPS,
+                                setting != null ? setting.getValue() : null, userId, true);
+                    }
+                } finally {
+                    Binder.restoreCallingIdentity(identity);
+                }
+            }
+            if (newRestrictions.containsKey(UserManager.DISALLOW_DEBUGGING_FEATURES)
+                    != prevRestrictions.containsKey(UserManager.DISALLOW_DEBUGGING_FEATURES)) {
+                final long identity = Binder.clearCallingIdentity();
+                try {
+                    synchronized (mLock) {
+                        Setting setting = getGlobalSetting(Settings.Global.ADB_ENABLED);
+                        updateGlobalSetting(Settings.Global.ADB_ENABLED,
+                                setting != null ? setting.getValue() : null, userId, true);
+                    }
+                } finally {
+                    Binder.restoreCallingIdentity(identity);
+                }
+            }
+            if (newRestrictions.containsKey(UserManager.ENSURE_VERIFY_APPS)
+                    != prevRestrictions.containsKey(UserManager.ENSURE_VERIFY_APPS)) {
+                final long identity = Binder.clearCallingIdentity();
+                try {
+                    synchronized (mLock) {
+                        Setting enable = getGlobalSetting(
+                                Settings.Global.PACKAGE_VERIFIER_ENABLE);
+                        updateGlobalSetting(Settings.Global.PACKAGE_VERIFIER_ENABLE,
+                                enable != null ? enable.getValue() : null, userId, true);
+                        Setting include = getGlobalSetting(
+                                Settings.Global.PACKAGE_VERIFIER_INCLUDE_ADB);
+                        updateGlobalSetting(Settings.Global.PACKAGE_VERIFIER_INCLUDE_ADB,
+                                include != null ? include.getValue() : null, userId, true);
+                    }
+                } finally {
+                    Binder.restoreCallingIdentity(identity);
+                }
+            }
+            if (newRestrictions.containsKey(UserManager.DISALLOW_CONFIG_MOBILE_NETWORKS)
+                    != prevRestrictions.containsKey(UserManager.DISALLOW_CONFIG_MOBILE_NETWORKS)) {
+                final long identity = Binder.clearCallingIdentity();
+                try {
+                    synchronized (mLock) {
+                        Setting setting = getGlobalSetting(
+                                Settings.Global.PREFERRED_NETWORK_MODE);
+                        updateGlobalSetting(Settings.Global.PREFERRED_NETWORK_MODE,
+                                setting != null ? setting.getValue() : null, userId, true);
+                    }
+                } finally {
+                    Binder.restoreCallingIdentity(identity);
+                }
+            }
+        });
+    }
+
     private Cursor getAllGlobalSettings(String[] projection) {
         if (DEBUG) {
             Slog.v(LOG_TAG, "getAllGlobalSettings()");
@@ -590,7 +724,7 @@
         synchronized (mLock) {
             // Get the settings.
             SettingsState settingsState = mSettingsRegistry.getSettingsLocked(
-                    SettingsRegistry.SETTINGS_TYPE_GLOBAL, UserHandle.USER_SYSTEM);
+                    SETTINGS_TYPE_GLOBAL, UserHandle.USER_SYSTEM);
 
             List<String> names = settingsState.getSettingNamesLocked();
 
@@ -617,34 +751,39 @@
 
         // Get the value.
         synchronized (mLock) {
-            return mSettingsRegistry.getSettingLocked(SettingsRegistry.SETTINGS_TYPE_GLOBAL,
+            return mSettingsRegistry.getSettingLocked(SETTINGS_TYPE_GLOBAL,
                     UserHandle.USER_SYSTEM, name);
         }
     }
 
-    private boolean updateGlobalSetting(String name, String value, int requestingUserId) {
+    private boolean updateGlobalSetting(String name, String value, int requestingUserId,
+            boolean forceNotify) {
         if (DEBUG) {
             Slog.v(LOG_TAG, "updateGlobalSetting(" + name + ", " + value + ")");
         }
-        return mutateGlobalSetting(name, value, requestingUserId, MUTATION_OPERATION_UPDATE);
+        return mutateGlobalSetting(name, value, requestingUserId, MUTATION_OPERATION_UPDATE,
+                forceNotify);
     }
 
-    private boolean insertGlobalSetting(String name, String value, int requestingUserId) {
+    private boolean insertGlobalSetting(String name, String value, int requestingUserId,
+            boolean forceNotify) {
         if (DEBUG) {
             Slog.v(LOG_TAG, "insertGlobalSetting(" + name + ", " + value + ")");
         }
-        return mutateGlobalSetting(name, value, requestingUserId, MUTATION_OPERATION_INSERT);
+        return mutateGlobalSetting(name, value, requestingUserId, MUTATION_OPERATION_INSERT,
+                forceNotify);
     }
 
-    private boolean deleteGlobalSetting(String name, int requestingUserId) {
+    private boolean deleteGlobalSetting(String name, int requestingUserId, boolean forceNotify) {
         if (DEBUG) {
             Slog.v(LOG_TAG, "deleteGlobalSettingLocked(" + name + ")");
         }
-        return mutateGlobalSetting(name, null, requestingUserId, MUTATION_OPERATION_DELETE);
+        return mutateGlobalSetting(name, null, requestingUserId, MUTATION_OPERATION_DELETE,
+                forceNotify);
     }
 
     private boolean mutateGlobalSetting(String name, String value, int requestingUserId,
-            int operation) {
+            int operation, boolean forceNotify) {
         // Make sure the caller can change the settings - treated as secure.
         enforceWritePermission(Manifest.permission.WRITE_SECURE_SETTINGS);
 
@@ -662,20 +801,19 @@
             switch (operation) {
                 case MUTATION_OPERATION_INSERT: {
                     return mSettingsRegistry
-                            .insertSettingLocked(SettingsRegistry.SETTINGS_TYPE_GLOBAL,
-                                    UserHandle.USER_SYSTEM, name, value, getCallingPackage());
+                            .insertSettingLocked(SETTINGS_TYPE_GLOBAL, UserHandle.USER_SYSTEM,
+                                    name, value, getCallingPackage(), forceNotify);
                 }
 
                 case MUTATION_OPERATION_DELETE: {
-                    return mSettingsRegistry.deleteSettingLocked(
-                            SettingsRegistry.SETTINGS_TYPE_GLOBAL,
-                            UserHandle.USER_SYSTEM, name);
+                    return mSettingsRegistry.deleteSettingLocked(SETTINGS_TYPE_GLOBAL,
+                            UserHandle.USER_SYSTEM, name, forceNotify);
                 }
 
                 case MUTATION_OPERATION_UPDATE: {
                     return mSettingsRegistry
-                            .updateSettingLocked(SettingsRegistry.SETTINGS_TYPE_GLOBAL,
-                                    UserHandle.USER_SYSTEM, name, value, getCallingPackage());
+                            .updateSettingLocked(SETTINGS_TYPE_GLOBAL, UserHandle.USER_SYSTEM,
+                                    name, value, getCallingPackage(), forceNotify);
                 }
             }
         }
@@ -693,7 +831,7 @@
 
         synchronized (mLock) {
             List<String> names = mSettingsRegistry.getSettingsNamesLocked(
-                    SettingsRegistry.SETTINGS_TYPE_SECURE, callingUserId);
+                    SETTINGS_TYPE_SECURE, callingUserId);
 
             final int nameCount = names.size();
 
@@ -708,11 +846,11 @@
 
                 // Special case for location (sigh).
                 if (isLocationProvidersAllowedRestricted(name, callingUserId, owningUserId)) {
-                    return null;
+                    continue;
                 }
 
                 Setting setting = mSettingsRegistry.getSettingLocked(
-                        SettingsRegistry.SETTINGS_TYPE_SECURE, owningUserId, name);
+                        SETTINGS_TYPE_SECURE, owningUserId, name);
                 appendSettingToCursor(result, setting);
             }
 
@@ -733,44 +871,50 @@
 
         // Special case for location (sigh).
         if (isLocationProvidersAllowedRestricted(name, callingUserId, owningUserId)) {
-            return null;
+            return mSettingsRegistry.getSettingsLocked(SETTINGS_TYPE_SECURE,
+                    owningUserId).getNullSetting();
         }
 
         // Get the value.
         synchronized (mLock) {
-            return mSettingsRegistry.getSettingLocked(SettingsRegistry.SETTINGS_TYPE_SECURE,
+            return mSettingsRegistry.getSettingLocked(SETTINGS_TYPE_SECURE,
                     owningUserId, name);
         }
     }
 
-    private boolean insertSecureSetting(String name, String value, int requestingUserId) {
+    private boolean insertSecureSetting(String name, String value, int requestingUserId,
+            boolean forceNotify) {
         if (DEBUG) {
             Slog.v(LOG_TAG, "insertSecureSetting(" + name + ", " + value + ", "
                     + requestingUserId + ")");
         }
 
-        return mutateSecureSetting(name, value, requestingUserId, MUTATION_OPERATION_INSERT);
+        return mutateSecureSetting(name, value, requestingUserId, MUTATION_OPERATION_INSERT,
+                forceNotify);
     }
 
-    private boolean deleteSecureSetting(String name, int requestingUserId) {
+    private boolean deleteSecureSetting(String name, int requestingUserId, boolean forceNotify) {
         if (DEBUG) {
             Slog.v(LOG_TAG, "deleteSecureSetting(" + name + ", " + requestingUserId + ")");
         }
 
-        return mutateSecureSetting(name, null, requestingUserId, MUTATION_OPERATION_DELETE);
+        return mutateSecureSetting(name, null, requestingUserId, MUTATION_OPERATION_DELETE,
+                forceNotify);
     }
 
-    private boolean updateSecureSetting(String name, String value, int requestingUserId) {
+    private boolean updateSecureSetting(String name, String value, int requestingUserId,
+            boolean forceNotify) {
         if (DEBUG) {
             Slog.v(LOG_TAG, "updateSecureSetting(" + name + ", " + value + ", "
                     + requestingUserId + ")");
         }
 
-        return mutateSecureSetting(name, value, requestingUserId, MUTATION_OPERATION_UPDATE);
+        return mutateSecureSetting(name, value, requestingUserId, MUTATION_OPERATION_UPDATE,
+                forceNotify);
     }
 
     private boolean mutateSecureSetting(String name, String value, int requestingUserId,
-            int operation) {
+            int operation, boolean forceNotify) {
         // Make sure the caller can change the settings.
         enforceWritePermission(Manifest.permission.WRITE_SECURE_SETTINGS);
 
@@ -793,28 +937,25 @@
 
         // Special cases for location providers (sigh).
         if (Settings.Secure.LOCATION_PROVIDERS_ALLOWED.equals(name)) {
-            return updateLocationProvidersAllowedLocked(value, owningUserId);
+            return updateLocationProvidersAllowedLocked(value, owningUserId, forceNotify);
         }
 
         // Mutate the value.
         synchronized (mLock) {
             switch (operation) {
                 case MUTATION_OPERATION_INSERT: {
-                    return mSettingsRegistry
-                            .insertSettingLocked(SettingsRegistry.SETTINGS_TYPE_SECURE,
-                                    owningUserId, name, value, getCallingPackage());
+                    return mSettingsRegistry.insertSettingLocked(SETTINGS_TYPE_SECURE,
+                            owningUserId, name, value, getCallingPackage(), forceNotify);
                 }
 
                 case MUTATION_OPERATION_DELETE: {
-                    return mSettingsRegistry.deleteSettingLocked(
-                            SettingsRegistry.SETTINGS_TYPE_SECURE,
-                            owningUserId, name);
+                    return mSettingsRegistry.deleteSettingLocked(SETTINGS_TYPE_SECURE,
+                            owningUserId, name, forceNotify);
                 }
 
                 case MUTATION_OPERATION_UPDATE: {
-                    return mSettingsRegistry
-                            .updateSettingLocked(SettingsRegistry.SETTINGS_TYPE_SECURE,
-                                    owningUserId, name, value, getCallingPackage());
+                    return mSettingsRegistry.updateSettingLocked(SETTINGS_TYPE_SECURE,
+                            owningUserId, name, value, getCallingPackage(), forceNotify);
                 }
             }
         }
@@ -832,7 +973,7 @@
 
         synchronized (mLock) {
             List<String> names = mSettingsRegistry.getSettingsNamesLocked(
-                    SettingsRegistry.SETTINGS_TYPE_SYSTEM, callingUserId);
+                    SETTINGS_TYPE_SYSTEM, callingUserId);
 
             final int nameCount = names.size();
 
@@ -847,7 +988,7 @@
                         name);
 
                 Setting setting = mSettingsRegistry.getSettingLocked(
-                        SettingsRegistry.SETTINGS_TYPE_SYSTEM, owningUserId, name);
+                        SETTINGS_TYPE_SYSTEM, owningUserId, name);
                 appendSettingToCursor(result, setting);
             }
 
@@ -868,8 +1009,7 @@
 
         // Get the value.
         synchronized (mLock) {
-            return mSettingsRegistry.getSettingLocked(SettingsRegistry.SETTINGS_TYPE_SYSTEM,
-                    owningUserId, name);
+            return mSettingsRegistry.getSettingLocked(SETTINGS_TYPE_SYSTEM, owningUserId, name);
         }
     }
 
@@ -944,22 +1084,19 @@
             switch (operation) {
                 case MUTATION_OPERATION_INSERT: {
                     validateSystemSettingValue(name, value);
-                    return mSettingsRegistry
-                            .insertSettingLocked(SettingsRegistry.SETTINGS_TYPE_SYSTEM,
-                                    owningUserId, name, value, getCallingPackage());
+                    return mSettingsRegistry.insertSettingLocked(SETTINGS_TYPE_SYSTEM,
+                            owningUserId, name, value, getCallingPackage(), false);
                 }
 
                 case MUTATION_OPERATION_DELETE: {
-                    return mSettingsRegistry.deleteSettingLocked(
-                            SettingsRegistry.SETTINGS_TYPE_SYSTEM,
-                            owningUserId, name);
+                    return mSettingsRegistry.deleteSettingLocked(SETTINGS_TYPE_SYSTEM,
+                            owningUserId, name, false);
                 }
 
                 case MUTATION_OPERATION_UPDATE: {
                     validateSystemSettingValue(name, value);
-                    return mSettingsRegistry
-                            .updateSettingLocked(SettingsRegistry.SETTINGS_TYPE_SYSTEM,
-                                    owningUserId, name, value, getCallingPackage());
+                    return mSettingsRegistry.updateSettingLocked(SETTINGS_TYPE_SYSTEM,
+                            owningUserId, name, value, getCallingPackage(), false);
                 }
             }
 
@@ -1003,8 +1140,8 @@
      * Checks whether changing a setting to a value is prohibited by the corresponding user
      * restriction.
      *
-     * <p>See also {@link com.android.server.pm.UserRestrictionsUtils#applyUserRestrictionLR},
-     * which should be in sync with this method.
+     * <p>See also {@link com.android.server.pm.UserRestrictionsUtils#applyUserRestriction(
+     * Context, int, String, boolean)}, which should be in sync with this method.
      *
      * @return true if the change is prohibited, false if the change is allowed.
      */
@@ -1177,13 +1314,19 @@
      *
      * @returns whether the enabled location providers changed.
      */
-    private boolean updateLocationProvidersAllowedLocked(String value, int owningUserId) {
+    private boolean updateLocationProvidersAllowedLocked(String value, int owningUserId,
+            boolean forceNotify) {
         if (TextUtils.isEmpty(value)) {
             return false;
         }
 
         final char prefix = value.charAt(0);
         if (prefix != '+' && prefix != '-') {
+            if (forceNotify) {
+                final int key = makeKey(SETTINGS_TYPE_SECURE, owningUserId);
+                mSettingsRegistry.notifyForSettingsChange(key,
+                        Settings.Secure.LOCATION_PROVIDERS_ALLOWED);
+            }
             return false;
         }
 
@@ -1232,12 +1375,17 @@
             }
         } else {
             // nothing changed, so no need to update the database
+            if (forceNotify) {
+                final int key = makeKey(SETTINGS_TYPE_SECURE, owningUserId);
+                mSettingsRegistry.notifyForSettingsChange(key,
+                        Settings.Secure.LOCATION_PROVIDERS_ALLOWED);
+            }
             return false;
         }
 
-        return mSettingsRegistry.insertSettingLocked(SettingsRegistry.SETTINGS_TYPE_SECURE,
+        return mSettingsRegistry.insertSettingLocked(SETTINGS_TYPE_SECURE,
                 owningUserId, Settings.Secure.LOCATION_PROVIDERS_ALLOWED, newProviders,
-                getCallingPackage());
+                getCallingPackage(), forceNotify);
     }
 
     private static void warnOrThrowForUndesiredSecureSettingsMutationForTargetSdk(
@@ -1270,11 +1418,19 @@
                 "get/set setting for user", null);
     }
 
-    private static Bundle packageValueForCallResult(Setting setting) {
-        if (setting == null) {
-            return NULL_SETTING;
+    private Bundle packageValueForCallResult(Setting setting,
+            boolean trackingGeneration) {
+        if (!trackingGeneration) {
+            if (setting.isNull()) {
+                return NULL_SETTING_BUNDLE;
+            }
+            return Bundle.forPair(Settings.NameValueTable.VALUE, setting.getValue());
         }
-        return Bundle.forPair(Settings.NameValueTable.VALUE, setting.getValue());
+        Bundle result = new Bundle();
+        result.putString(Settings.NameValueTable.VALUE,
+                !setting.isNull() ? setting.getValue() : null);
+        mSettingsRegistry.mGenerationRegistry.addGenerationData(result, setting.getkey());
+        return result;
     }
 
     private static int getRequestingUserId(Bundle args) {
@@ -1283,6 +1439,10 @@
                 : callingUserId;
     }
 
+    private boolean isTrackingGeneration(Bundle args) {
+        return args != null && args.containsKey(Settings.CALL_METHOD_TRACK_GENERATION_KEY);
+    }
+
     private static String getSettingValue(Bundle args) {
         return (args != null) ? args.getString(Settings.NameValueTable.VALUE) : null;
     }
@@ -1299,7 +1459,7 @@
     }
 
     private static MatrixCursor packageSettingForQuery(Setting setting, String[] projection) {
-        if (setting == null) {
+        if (setting.isNull()) {
             return new MatrixCursor(projection, 0);
         }
         MatrixCursor cursor = new MatrixCursor(projection, 1);
@@ -1324,7 +1484,7 @@
     }
 
     private static void appendSettingToCursor(MatrixCursor cursor, Setting setting) {
-        if (setting == null) {
+        if (setting.isNull()) {
             return;
         }
         final int columnCount = cursor.getColumnCount();
@@ -1448,26 +1608,22 @@
     final class SettingsRegistry {
         private static final String DROPBOX_TAG_USERLOG = "restricted_profile_ssaid";
 
-        private static final int SETTINGS_TYPE_GLOBAL = 0;
-        private static final int SETTINGS_TYPE_SYSTEM = 1;
-        private static final int SETTINGS_TYPE_SECURE = 2;
-
-        private static final int SETTINGS_TYPE_MASK = 0xF0000000;
-        private static final int SETTINGS_TYPE_SHIFT = 28;
-
         private static final String SETTINGS_FILE_GLOBAL = "settings_global.xml";
         private static final String SETTINGS_FILE_SYSTEM = "settings_system.xml";
         private static final String SETTINGS_FILE_SECURE = "settings_secure.xml";
 
         private final SparseArray<SettingsState> mSettingsStates = new SparseArray<>();
 
-        private final BackupManager mBackupManager;
+        private GenerationRegistry mGenerationRegistry;
 
         private final Handler mHandler;
 
+        private final BackupManager mBackupManager;
+
         public SettingsRegistry() {
-            mBackupManager = new BackupManager(getContext());
             mHandler = new MyHandler(getContext().getMainLooper());
+            mGenerationRegistry = new GenerationRegistry(mLock);
+            mBackupManager = new BackupManager(getContext());
             migrateAllLegacySettingsIfNeeded();
         }
 
@@ -1554,28 +1710,31 @@
                     });
                 }
             }
+
+            // Nuke generation tracking data
+            mGenerationRegistry.onUserRemoved(userId);
         }
 
         public boolean insertSettingLocked(int type, int userId, String name, String value,
-                String packageName) {
+                String packageName, boolean forceNotify) {
             final int key = makeKey(type, userId);
 
             SettingsState settingsState = peekSettingsStateLocked(key);
             final boolean success = settingsState.insertSettingLocked(name, value, packageName);
 
-            if (success) {
+            if (forceNotify || success) {
                 notifyForSettingsChange(key, name);
             }
             return success;
         }
 
-        public boolean deleteSettingLocked(int type, int userId, String name) {
+        public boolean deleteSettingLocked(int type, int userId, String name, boolean forceNotify) {
             final int key = makeKey(type, userId);
 
             SettingsState settingsState = peekSettingsStateLocked(key);
             final boolean success = settingsState.deleteSettingLocked(name);
 
-            if (success) {
+            if (forceNotify || success) {
                 notifyForSettingsChange(key, name);
             }
             return success;
@@ -1589,13 +1748,13 @@
         }
 
         public boolean updateSettingLocked(int type, int userId, String name, String value,
-                String packageName) {
+                String packageName, boolean forceNotify) {
             final int key = makeKey(type, userId);
 
             SettingsState settingsState = peekSettingsStateLocked(key);
             final boolean success = settingsState.updateSettingLocked(name, value, packageName);
 
-            if (success) {
+            if (forceNotify || success) {
                 notifyForSettingsChange(key, name);
             }
 
@@ -1749,7 +1908,7 @@
         private void ensureSecureSettingAndroidIdSetLocked(SettingsState secureSettings) {
             Setting value = secureSettings.getSettingLocked(Settings.Secure.ANDROID_ID);
 
-            if (value != null) {
+            if (!value.isNull()) {
                 return;
             }
 
@@ -1786,38 +1945,6 @@
         }
 
         private void notifyForSettingsChange(int key, String name) {
-            // Update the system property *first*, so if someone is listening for
-            // a notification and then using the contract class to get their data,
-            // the system property will be updated and they'll get the new data.
-
-            boolean backedUpDataChanged = false;
-            String property = null;
-            if (isGlobalSettingsKey(key)) {
-                property = Settings.Global.SYS_PROP_SETTING_VERSION;
-                backedUpDataChanged = true;
-            } else if (isSecureSettingsKey(key)) {
-                property = Settings.Secure.SYS_PROP_SETTING_VERSION;
-                backedUpDataChanged = true;
-            } else if (isSystemSettingsKey(key)) {
-                property = Settings.System.SYS_PROP_SETTING_VERSION;
-                backedUpDataChanged = true;
-            }
-
-            if (property != null) {
-                final long version = SystemProperties.getLong(property, 0) + 1;
-                SystemProperties.set(property, Long.toString(version));
-                if (DEBUG) {
-                    Slog.v(LOG_TAG, "System property " + property + "=" + version);
-                }
-            }
-
-            // Inform the backup manager about a data change
-            if (backedUpDataChanged) {
-                mHandler.obtainMessage(MyHandler.MSG_NOTIFY_DATA_CHANGED).sendToTarget();
-            }
-
-            // Now send the notification through the content framework.
-
             final int userId = getUserIdFromKey(key);
             Uri uri = getNotificationUriFor(key, name);
 
@@ -1825,13 +1952,19 @@
                     userId, 0, uri).sendToTarget();
 
             if (isSecureSettingsKey(key)) {
-                maybeNotifyProfiles(userId, uri, name, sSecureCloneToManagedSettings);
+                maybeNotifyProfiles(getTypeFromKey(key), userId, uri, name,
+                        sSecureCloneToManagedSettings);
             } else if (isSystemSettingsKey(key)) {
-                maybeNotifyProfiles(userId, uri, name, sSystemCloneToManagedSettings);
+                maybeNotifyProfiles(getTypeFromKey(key), userId, uri, name,
+                        sSystemCloneToManagedSettings);
             }
+
+            mGenerationRegistry.incrementGeneration(key);
+
+            mHandler.obtainMessage(MyHandler.MSG_NOTIFY_DATA_CHANGED).sendToTarget();
         }
 
-        private void maybeNotifyProfiles(int userId, Uri uri, String name,
+        private void maybeNotifyProfiles(int type, int userId, Uri uri, String name,
                 Set<String> keysCloned) {
             if (keysCloned.contains(name)) {
                 for (int profileId : mUserManager.getProfileIdsWithDisabled(userId)) {
@@ -1839,23 +1972,15 @@
                     if (profileId != userId) {
                         mHandler.obtainMessage(MyHandler.MSG_NOTIFY_URI_CHANGED,
                                 profileId, 0, uri).sendToTarget();
+                        final int key = makeKey(type, profileId);
+                        mGenerationRegistry.incrementGeneration(key);
+
+                        mHandler.obtainMessage(MyHandler.MSG_NOTIFY_DATA_CHANGED).sendToTarget();
                     }
                 }
             }
         }
 
-        private int makeKey(int type, int userId) {
-            return (type << SETTINGS_TYPE_SHIFT) | userId;
-        }
-
-        private int getTypeFromKey(int key) {
-            return key >> SETTINGS_TYPE_SHIFT;
-        }
-
-        private int getUserIdFromKey(int key) {
-            return key & ~SETTINGS_TYPE_MASK;
-        }
-
         private boolean isGlobalSettingsKey(int key) {
             return getTypeFromKey(key) == SETTINGS_TYPE_GLOBAL;
         }
@@ -1953,7 +2078,7 @@
             public void upgradeIfNeededLocked() {
                 // The version of all settings for a user is the same (all users have secure).
                 SettingsState secureSettings = getSettingsLocked(
-                        SettingsRegistry.SETTINGS_TYPE_SECURE, mUserId);
+                        SETTINGS_TYPE_SECURE, mUserId);
 
                 // Try an update from the current state.
                 final int oldVersion = secureSettings.getVersionLocked();
@@ -1987,7 +2112,7 @@
                 // Set the global settings version if owner.
                 if (mUserId == UserHandle.USER_SYSTEM) {
                     SettingsState globalSettings = getSettingsLocked(
-                            SettingsRegistry.SETTINGS_TYPE_GLOBAL, mUserId);
+                            SETTINGS_TYPE_GLOBAL, mUserId);
                     globalSettings.setVersionLocked(newVersion);
                 }
 
@@ -1996,7 +2121,7 @@
 
                 // Set the system settings version.
                 SettingsState systemSettings = getSettingsLocked(
-                        SettingsRegistry.SETTINGS_TYPE_SYSTEM, mUserId);
+                        SETTINGS_TYPE_SYSTEM, mUserId);
                 systemSettings.setVersionLocked(newVersion);
             }
 
@@ -2086,7 +2211,7 @@
                     Setting currentSetting = secureSettings.getSettingLocked(
                             Settings.Secure.NFC_PAYMENT_DEFAULT_COMPONENT);
                     if (defaultComponent != null && !defaultComponent.isEmpty() &&
-                        currentSetting == null) {
+                        currentSetting.isNull()) {
                         secureSettings.insertSettingLocked(
                                 Settings.Secure.NFC_PAYMENT_DEFAULT_COMPONENT,
                                 defaultComponent,
@@ -2102,7 +2227,7 @@
                         final SettingsState globalSettings = getGlobalSettingsLocked();
                         Setting currentSetting = globalSettings.getSettingLocked(
                                 Settings.Global.ADD_USERS_WHEN_LOCKED);
-                        if (currentSetting == null) {
+                        if (currentSetting.isNull()) {
                             globalSettings.insertSettingLocked(
                                     Settings.Global.ADD_USERS_WHEN_LOCKED,
                                     getContext().getResources().getBoolean(
@@ -2128,7 +2253,7 @@
                     final SettingsState secureSettings = getSecureSettingsLocked(userId);
                     Setting currentSetting = secureSettings.getSettingLocked(
                             Settings.Secure.SHOW_IME_WITH_HARD_KEYBOARD);
-                    if (currentSetting == null) {
+                    if (currentSetting.isNull()) {
                         secureSettings.insertSettingLocked(
                                 Settings.Secure.SHOW_IME_WITH_HARD_KEYBOARD,
                                 getContext().getResources().getBoolean(
@@ -2144,7 +2269,7 @@
 
                     Setting currentSetting = secureSettings.getSettingLocked(
                             Settings.Secure.ENABLED_VR_LISTENERS);
-                    if (currentSetting == null) {
+                    if (currentSetting.isNull()) {
                         ArraySet<ComponentName> l =
                                 SystemConfig.getInstance().getDefaultVrComponents();
 
@@ -2176,7 +2301,7 @@
 
                         final Setting showNotifications = systemSecureSettings.getSettingLocked(
                                 Settings.Secure.LOCK_SCREEN_SHOW_NOTIFICATIONS);
-                        if (showNotifications != null) {
+                        if (!showNotifications.isNull()) {
                             final SettingsState secureSettings = getSecureSettingsLocked(userId);
                             secureSettings.insertSettingLocked(
                                     Settings.Secure.LOCK_SCREEN_SHOW_NOTIFICATIONS,
@@ -2186,7 +2311,7 @@
 
                         final Setting allowPrivate = systemSecureSettings.getSettingLocked(
                                 Settings.Secure.LOCK_SCREEN_ALLOW_PRIVATE_NOTIFICATIONS);
-                        if (allowPrivate != null) {
+                        if (!allowPrivate.isNull()) {
                             final SettingsState secureSettings = getSecureSettingsLocked(userId);
                             secureSettings.insertSettingLocked(
                                     Settings.Secure.LOCK_SCREEN_ALLOW_PRIVATE_NOTIFICATIONS,
diff --git a/packages/SettingsProvider/src/com/android/providers/settings/SettingsState.java b/packages/SettingsProvider/src/com/android/providers/settings/SettingsState.java
index dde9709..2de0618c 100644
--- a/packages/SettingsProvider/src/com/android/providers/settings/SettingsState.java
+++ b/packages/SettingsProvider/src/com/android/providers/settings/SettingsState.java
@@ -109,6 +109,14 @@
     @GuardedBy("mLock")
     private final File mStatePersistFile;
 
+    private final Setting mNullSetting = new Setting(null, null, null) {
+        @Override
+        public boolean isNull() {
+            return true;
+        }
+    };
+
+    @GuardedBy("mLock")
     public final int mKey;
 
     @GuardedBy("mLock")
@@ -150,6 +158,10 @@
         return mVersion;
     }
 
+    public Setting getNullSetting() {
+        return mNullSetting;
+    }
+
     // The settings provider must hold its lock when calling here.
     public void setVersionLocked(int version) {
         if (version == mVersion) {
@@ -198,9 +210,13 @@
     // The settings provider must hold its lock when calling here.
     public Setting getSettingLocked(String name) {
         if (TextUtils.isEmpty(name)) {
-            return null;
+            return mNullSetting;
         }
-        return mSettings.get(name);
+        Setting setting = mSettings.get(name);
+        if (setting != null) {
+            return new Setting(setting);
+        }
+        return mNullSetting;
     }
 
     // The settings provider must hold its lock when calling here.
@@ -549,12 +565,19 @@
         }
     }
 
-    public final class Setting {
+    class Setting {
         private String name;
         private String value;
         private String packageName;
         private String id;
 
+        public Setting(Setting other) {
+            name = other.name;
+            value = other.value;
+            packageName = other.packageName;
+            id = other.id;
+        }
+
         public Setting(String name, String value, String packageName) {
             init(name, value, packageName, String.valueOf(mNextId++));
         }
@@ -575,6 +598,10 @@
             return name;
         }
 
+        public int getkey() {
+            return mKey;
+        }
+
         public String getValue() {
             return value;
         }
@@ -587,6 +614,10 @@
             return id;
         }
 
+        public boolean isNull() {
+            return false;
+        }
+
         public boolean update(String value, String packageName) {
             if (Objects.equal(value, this.value)) {
                 return false;
diff --git a/packages/Shell/Android.mk b/packages/Shell/Android.mk
index f8c13d6..73a0449 100644
--- a/packages/Shell/Android.mk
+++ b/packages/Shell/Android.mk
@@ -5,7 +5,8 @@
 
 LOCAL_SRC_FILES := $(call all-java-files-under, src)
 
-LOCAL_STATIC_JAVA_LIBRARIES := android-support-v4
+LOCAL_STATIC_JAVA_LIBRARIES := android-support-v4 \
+        android-support-documents-archive
 
 LOCAL_PACKAGE_NAME := Shell
 LOCAL_CERTIFICATE := platform
diff --git a/packages/Shell/res/values-af/strings.xml b/packages/Shell/res/values-af/strings.xml
index 9b53599..51679f7 100644
--- a/packages/Shell/res/values-af/strings.xml
+++ b/packages/Shell/res/values-af/strings.xml
@@ -29,8 +29,7 @@
     <string name="bugreport_confirm_dont_repeat" msgid="6179945398364357318">"Moenie weer wys nie"</string>
     <string name="bugreport_storage_title" msgid="5332488144740527109">"Foutverslae"</string>
     <string name="bugreport_unreadable_text" msgid="586517851044535486">"Foutverslaglêer kon nie gelees word nie"</string>
-    <!-- no translation found for bugreport_add_details_to_zip_failed (1302931926486712371) -->
-    <skip />
+    <string name="bugreport_add_details_to_zip_failed" msgid="1302931926486712371">"Kon nie foutverslagbesonderhede by ZIP-lêer voeg nie"</string>
     <string name="bugreport_unnamed" msgid="2800582406842092709">"naamloos"</string>
     <string name="bugreport_info_action" msgid="2158204228510576227">"Besonderhede"</string>
     <string name="bugreport_screenshot_action" msgid="8677781721940614995">"Skermkiekie"</string>
diff --git a/packages/Shell/res/values-am/strings.xml b/packages/Shell/res/values-am/strings.xml
index 9c56adb1..f04e882 100644
--- a/packages/Shell/res/values-am/strings.xml
+++ b/packages/Shell/res/values-am/strings.xml
@@ -29,8 +29,7 @@
     <string name="bugreport_confirm_dont_repeat" msgid="6179945398364357318">"ዳግም አታሳይ"</string>
     <string name="bugreport_storage_title" msgid="5332488144740527109">"የሳንካ ሪፖርቶች"</string>
     <string name="bugreport_unreadable_text" msgid="586517851044535486">"የሳንካ ሪፖርት ፋይል ሊነበብ አልተቻለም"</string>
-    <!-- no translation found for bugreport_add_details_to_zip_failed (1302931926486712371) -->
-    <skip />
+    <string name="bugreport_add_details_to_zip_failed" msgid="1302931926486712371">"የሳንካ ሪፖርት ዝርዝሮችን ወደ ዚፕ ፋይል ማከል አልተቻለም"</string>
     <string name="bugreport_unnamed" msgid="2800582406842092709">"ያልተሰየመ"</string>
     <string name="bugreport_info_action" msgid="2158204228510576227">"ዝርዝሮች"</string>
     <string name="bugreport_screenshot_action" msgid="8677781721940614995">"ቅጽበታዊ ገጽ እይታ"</string>
diff --git a/packages/Shell/res/values-ar/strings.xml b/packages/Shell/res/values-ar/strings.xml
index c69eee1..37516a1 100644
--- a/packages/Shell/res/values-ar/strings.xml
+++ b/packages/Shell/res/values-ar/strings.xml
@@ -29,8 +29,7 @@
     <string name="bugreport_confirm_dont_repeat" msgid="6179945398364357318">"عدم الإظهار مرة أخرى"</string>
     <string name="bugreport_storage_title" msgid="5332488144740527109">"تقارير الأخطاء"</string>
     <string name="bugreport_unreadable_text" msgid="586517851044535486">"تعذرت قراءة ملف تقرير الخطأ."</string>
-    <!-- no translation found for bugreport_add_details_to_zip_failed (1302931926486712371) -->
-    <skip />
+    <string name="bugreport_add_details_to_zip_failed" msgid="1302931926486712371">"‏تعذرت إضافة تفاصيل تقرير الخطأ إلى ملف Zip"</string>
     <string name="bugreport_unnamed" msgid="2800582406842092709">"بدون اسم"</string>
     <string name="bugreport_info_action" msgid="2158204228510576227">"التفاصيل"</string>
     <string name="bugreport_screenshot_action" msgid="8677781721940614995">"لقطة شاشة"</string>
diff --git a/packages/Shell/res/values-az-rAZ/strings.xml b/packages/Shell/res/values-az-rAZ/strings.xml
index 90fd57f..303467b 100644
--- a/packages/Shell/res/values-az-rAZ/strings.xml
+++ b/packages/Shell/res/values-az-rAZ/strings.xml
@@ -29,8 +29,7 @@
     <string name="bugreport_confirm_dont_repeat" msgid="6179945398364357318">"Daha göstərməyin"</string>
     <string name="bugreport_storage_title" msgid="5332488144740527109">"Baq hesabatları"</string>
     <string name="bugreport_unreadable_text" msgid="586517851044535486">"Baq hesabat faylı oxunmur"</string>
-    <!-- no translation found for bugreport_add_details_to_zip_failed (1302931926486712371) -->
-    <skip />
+    <string name="bugreport_add_details_to_zip_failed" msgid="1302931926486712371">"Zip faylı üçün baq hesabat detalları əlavə edilmədi"</string>
     <string name="bugreport_unnamed" msgid="2800582406842092709">"adsız"</string>
     <string name="bugreport_info_action" msgid="2158204228510576227">"Detallar"</string>
     <string name="bugreport_screenshot_action" msgid="8677781721940614995">"displey görüntüsü"</string>
diff --git a/packages/Shell/res/values-b+sr+Latn/strings.xml b/packages/Shell/res/values-b+sr+Latn/strings.xml
index 95be5d3..185b690 100644
--- a/packages/Shell/res/values-b+sr+Latn/strings.xml
+++ b/packages/Shell/res/values-b+sr+Latn/strings.xml
@@ -29,8 +29,7 @@
     <string name="bugreport_confirm_dont_repeat" msgid="6179945398364357318">"Ne prikazuj ponovo"</string>
     <string name="bugreport_storage_title" msgid="5332488144740527109">"Izveštaji o greškama"</string>
     <string name="bugreport_unreadable_text" msgid="586517851044535486">"Datoteka izveštaja o grešci ne može da se pročita"</string>
-    <!-- no translation found for bugreport_add_details_to_zip_failed (1302931926486712371) -->
-    <skip />
+    <string name="bugreport_add_details_to_zip_failed" msgid="1302931926486712371">"Dodavanje detalja izveštaja o grešci u zip datoteku nije uspelo"</string>
     <string name="bugreport_unnamed" msgid="2800582406842092709">"neimenovano"</string>
     <string name="bugreport_info_action" msgid="2158204228510576227">"Detalji"</string>
     <string name="bugreport_screenshot_action" msgid="8677781721940614995">"Snimci ekrana"</string>
diff --git a/packages/Shell/res/values-be-rBY/strings.xml b/packages/Shell/res/values-be-rBY/strings.xml
index 649785d..fb29fbc 100644
--- a/packages/Shell/res/values-be-rBY/strings.xml
+++ b/packages/Shell/res/values-be-rBY/strings.xml
@@ -29,8 +29,7 @@
     <string name="bugreport_confirm_dont_repeat" msgid="6179945398364357318">"Не паказваць зноў"</string>
     <string name="bugreport_storage_title" msgid="5332488144740527109">"Справадзачы пра памылкі"</string>
     <string name="bugreport_unreadable_text" msgid="586517851044535486">"Немагчыма прачытаць файл справаздачы пра памылкі"</string>
-    <!-- no translation found for bugreport_add_details_to_zip_failed (1302931926486712371) -->
-    <skip />
+    <string name="bugreport_add_details_to_zip_failed" msgid="1302931926486712371">"Не атрымалася дадаць падрабязную інфармацыю справаздачы пра памылку ў файл архіва"</string>
     <string name="bugreport_unnamed" msgid="2800582406842092709">"без назвы"</string>
     <string name="bugreport_info_action" msgid="2158204228510576227">"Падрабязнасці"</string>
     <string name="bugreport_screenshot_action" msgid="8677781721940614995">"Здымак экрана"</string>
diff --git a/packages/Shell/res/values-bg/strings.xml b/packages/Shell/res/values-bg/strings.xml
index 69c825d..0787900 100644
--- a/packages/Shell/res/values-bg/strings.xml
+++ b/packages/Shell/res/values-bg/strings.xml
@@ -29,8 +29,7 @@
     <string name="bugreport_confirm_dont_repeat" msgid="6179945398364357318">"Да не се показва отново"</string>
     <string name="bugreport_storage_title" msgid="5332488144740527109">"Отчети за прогр. грешки"</string>
     <string name="bugreport_unreadable_text" msgid="586517851044535486">"Файлът със сигнал за програмна грешка не можа да бъде прочетен"</string>
-    <!-- no translation found for bugreport_add_details_to_zip_failed (1302931926486712371) -->
-    <skip />
+    <string name="bugreport_add_details_to_zip_failed" msgid="1302931926486712371">"Подробностите за сигнала за програмна грешка не можаха да бъдат добавени към ZIP файла"</string>
     <string name="bugreport_unnamed" msgid="2800582406842092709">"без име"</string>
     <string name="bugreport_info_action" msgid="2158204228510576227">"Подробности"</string>
     <string name="bugreport_screenshot_action" msgid="8677781721940614995">"Екранна снимка"</string>
diff --git a/packages/Shell/res/values-bn-rBD/strings.xml b/packages/Shell/res/values-bn-rBD/strings.xml
index 3cf6d93..a51950a 100644
--- a/packages/Shell/res/values-bn-rBD/strings.xml
+++ b/packages/Shell/res/values-bn-rBD/strings.xml
@@ -29,8 +29,7 @@
     <string name="bugreport_confirm_dont_repeat" msgid="6179945398364357318">"আর দেখাবেন না"</string>
     <string name="bugreport_storage_title" msgid="5332488144740527109">"ত্রুটির প্রতিবেদনগুলি"</string>
     <string name="bugreport_unreadable_text" msgid="586517851044535486">"ত্রুটির প্রতিবেদনের ফাইলটি পড়া যায়নি"</string>
-    <!-- no translation found for bugreport_add_details_to_zip_failed (1302931926486712371) -->
-    <skip />
+    <string name="bugreport_add_details_to_zip_failed" msgid="1302931926486712371">"জিপ ফাইলে ত্রুটি প্রতিবেদনের বিশদ বিবরণ যোগ করা যায়নি"</string>
     <string name="bugreport_unnamed" msgid="2800582406842092709">"নামবিহীন"</string>
     <string name="bugreport_info_action" msgid="2158204228510576227">"বিশদ বিবরণ"</string>
     <string name="bugreport_screenshot_action" msgid="8677781721940614995">"স্ক্রীনশট"</string>
diff --git a/packages/Shell/res/values-bs-rBA/strings.xml b/packages/Shell/res/values-bs-rBA/strings.xml
index f0889c7..80dddb5 100644
--- a/packages/Shell/res/values-bs-rBA/strings.xml
+++ b/packages/Shell/res/values-bs-rBA/strings.xml
@@ -29,8 +29,7 @@
     <string name="bugreport_confirm_dont_repeat" msgid="6179945398364357318">"Ne prikazuj opet"</string>
     <string name="bugreport_storage_title" msgid="5332488144740527109">"Izvještaji o greškama"</string>
     <string name="bugreport_unreadable_text" msgid="586517851044535486">"Nije moguće pročitati izvještaj o grešci"</string>
-    <!-- no translation found for bugreport_add_details_to_zip_failed (1302931926486712371) -->
-    <skip />
+    <string name="bugreport_add_details_to_zip_failed" msgid="1302931926486712371">"Dodavanje izvještaja o greškama u zip datoteku nije uspjelo"</string>
     <string name="bugreport_unnamed" msgid="2800582406842092709">"neimenovano"</string>
     <string name="bugreport_info_action" msgid="2158204228510576227">"Detalji"</string>
     <string name="bugreport_screenshot_action" msgid="8677781721940614995">"Snimak ekrana"</string>
diff --git a/packages/Shell/res/values-ca/strings.xml b/packages/Shell/res/values-ca/strings.xml
index ba8d46e..f8ed813 100644
--- a/packages/Shell/res/values-ca/strings.xml
+++ b/packages/Shell/res/values-ca/strings.xml
@@ -29,8 +29,7 @@
     <string name="bugreport_confirm_dont_repeat" msgid="6179945398364357318">"No ho tornis a mostrar"</string>
     <string name="bugreport_storage_title" msgid="5332488144740527109">"Informes d\'error"</string>
     <string name="bugreport_unreadable_text" msgid="586517851044535486">"No s\'ha pogut llegir el fitxer de l\'informe d\'errors"</string>
-    <!-- no translation found for bugreport_add_details_to_zip_failed (1302931926486712371) -->
-    <skip />
+    <string name="bugreport_add_details_to_zip_failed" msgid="1302931926486712371">"No s\'ha pogut afegir la informació detallada de l\'informe d\'errors al fitxer ZIP"</string>
     <string name="bugreport_unnamed" msgid="2800582406842092709">"sense nom"</string>
     <string name="bugreport_info_action" msgid="2158204228510576227">"Detalls"</string>
     <string name="bugreport_screenshot_action" msgid="8677781721940614995">"Captura de pantalla"</string>
diff --git a/packages/Shell/res/values-cs/strings.xml b/packages/Shell/res/values-cs/strings.xml
index d75be32..4e41b79 100644
--- a/packages/Shell/res/values-cs/strings.xml
+++ b/packages/Shell/res/values-cs/strings.xml
@@ -29,8 +29,7 @@
     <string name="bugreport_confirm_dont_repeat" msgid="6179945398364357318">"Tuto zprávu příště nezobrazovat"</string>
     <string name="bugreport_storage_title" msgid="5332488144740527109">"Zprávy o chybách"</string>
     <string name="bugreport_unreadable_text" msgid="586517851044535486">"Soubor chybové zprávy nelze načíst"</string>
-    <!-- no translation found for bugreport_add_details_to_zip_failed (1302931926486712371) -->
-    <skip />
+    <string name="bugreport_add_details_to_zip_failed" msgid="1302931926486712371">"Přidání podobností zprávy o chybě do souboru ZIP se nezdařilo"</string>
     <string name="bugreport_unnamed" msgid="2800582406842092709">"bez názvu"</string>
     <string name="bugreport_info_action" msgid="2158204228510576227">"Podrobnosti"</string>
     <string name="bugreport_screenshot_action" msgid="8677781721940614995">"Snímek obrazovky"</string>
diff --git a/packages/Shell/res/values-da/strings.xml b/packages/Shell/res/values-da/strings.xml
index d94af5d..19e800bf 100644
--- a/packages/Shell/res/values-da/strings.xml
+++ b/packages/Shell/res/values-da/strings.xml
@@ -29,8 +29,7 @@
     <string name="bugreport_confirm_dont_repeat" msgid="6179945398364357318">"Vis ikke igen"</string>
     <string name="bugreport_storage_title" msgid="5332488144740527109">"Fejlrapporter"</string>
     <string name="bugreport_unreadable_text" msgid="586517851044535486">"Fejlrapportfilen kunne ikke læses"</string>
-    <!-- no translation found for bugreport_add_details_to_zip_failed (1302931926486712371) -->
-    <skip />
+    <string name="bugreport_add_details_to_zip_failed" msgid="1302931926486712371">"Oplysningerne i fejlrapporten kunne ikke føjes til zip-filen"</string>
     <string name="bugreport_unnamed" msgid="2800582406842092709">"ikke navngivet"</string>
     <string name="bugreport_info_action" msgid="2158204228510576227">"Oplysninger"</string>
     <string name="bugreport_screenshot_action" msgid="8677781721940614995">"Skærmbillede"</string>
diff --git a/packages/Shell/res/values-de/strings.xml b/packages/Shell/res/values-de/strings.xml
index 77641d3..0235824 100644
--- a/packages/Shell/res/values-de/strings.xml
+++ b/packages/Shell/res/values-de/strings.xml
@@ -29,8 +29,7 @@
     <string name="bugreport_confirm_dont_repeat" msgid="6179945398364357318">"Nicht mehr anzeigen"</string>
     <string name="bugreport_storage_title" msgid="5332488144740527109">"Fehlerberichte"</string>
     <string name="bugreport_unreadable_text" msgid="586517851044535486">"Fehlerberichtdatei konnte nicht gelesen werden."</string>
-    <!-- no translation found for bugreport_add_details_to_zip_failed (1302931926486712371) -->
-    <skip />
+    <string name="bugreport_add_details_to_zip_failed" msgid="1302931926486712371">"Details des Fehlerberichts konnten der ZIP-Datei nicht hinzugefügt werden"</string>
     <string name="bugreport_unnamed" msgid="2800582406842092709">"Unbenannt"</string>
     <string name="bugreport_info_action" msgid="2158204228510576227">"Details"</string>
     <string name="bugreport_screenshot_action" msgid="8677781721940614995">"Screenshot"</string>
diff --git a/packages/Shell/res/values-el/strings.xml b/packages/Shell/res/values-el/strings.xml
index 16f2f81..4bed10c 100644
--- a/packages/Shell/res/values-el/strings.xml
+++ b/packages/Shell/res/values-el/strings.xml
@@ -29,8 +29,7 @@
     <string name="bugreport_confirm_dont_repeat" msgid="6179945398364357318">"Να μην εμφανιστεί ξανά"</string>
     <string name="bugreport_storage_title" msgid="5332488144740527109">"Αναφορές σφαλμάτων"</string>
     <string name="bugreport_unreadable_text" msgid="586517851044535486">"Δεν ήταν δυνατή η ανάγνωση του αρχείου της αναφοράς σφαλμάτων"</string>
-    <!-- no translation found for bugreport_add_details_to_zip_failed (1302931926486712371) -->
-    <skip />
+    <string name="bugreport_add_details_to_zip_failed" msgid="1302931926486712371">"Δεν ήταν δυνατή η προσθήκη λεπτομερειών αναφοράς σφάλματος στο αρχείο zip"</string>
     <string name="bugreport_unnamed" msgid="2800582406842092709">"ανώνυμη"</string>
     <string name="bugreport_info_action" msgid="2158204228510576227">"Λεπτομέρειες"</string>
     <string name="bugreport_screenshot_action" msgid="8677781721940614995">"Στιγμιότυπο οθόνης"</string>
diff --git a/packages/Shell/res/values-es-rUS/strings.xml b/packages/Shell/res/values-es-rUS/strings.xml
index bc9683e..b7398db 100644
--- a/packages/Shell/res/values-es-rUS/strings.xml
+++ b/packages/Shell/res/values-es-rUS/strings.xml
@@ -29,8 +29,7 @@
     <string name="bugreport_confirm_dont_repeat" msgid="6179945398364357318">"No volver a mostrar"</string>
     <string name="bugreport_storage_title" msgid="5332488144740527109">"Informes de errores"</string>
     <string name="bugreport_unreadable_text" msgid="586517851044535486">"No se pudo leer el archivo de informe de errores"</string>
-    <!-- no translation found for bugreport_add_details_to_zip_failed (1302931926486712371) -->
-    <skip />
+    <string name="bugreport_add_details_to_zip_failed" msgid="1302931926486712371">"No se pudieron agregar detalles del informe de errores al archivo ZIP"</string>
     <string name="bugreport_unnamed" msgid="2800582406842092709">"sin nombre"</string>
     <string name="bugreport_info_action" msgid="2158204228510576227">"Detalles"</string>
     <string name="bugreport_screenshot_action" msgid="8677781721940614995">"Captura de pantalla"</string>
diff --git a/packages/Shell/res/values-es/strings.xml b/packages/Shell/res/values-es/strings.xml
index 70f618c..81d8078 100644
--- a/packages/Shell/res/values-es/strings.xml
+++ b/packages/Shell/res/values-es/strings.xml
@@ -29,8 +29,7 @@
     <string name="bugreport_confirm_dont_repeat" msgid="6179945398364357318">"No volver a mostrar"</string>
     <string name="bugreport_storage_title" msgid="5332488144740527109">"Informes de error"</string>
     <string name="bugreport_unreadable_text" msgid="586517851044535486">"No se ha podido leer el archivo del informe de errores"</string>
-    <!-- no translation found for bugreport_add_details_to_zip_failed (1302931926486712371) -->
-    <skip />
+    <string name="bugreport_add_details_to_zip_failed" msgid="1302931926486712371">"No se han podido añadir los detalles del informe de errores al archivo ZIP"</string>
     <string name="bugreport_unnamed" msgid="2800582406842092709">"sin nombre"</string>
     <string name="bugreport_info_action" msgid="2158204228510576227">"Detalles"</string>
     <string name="bugreport_screenshot_action" msgid="8677781721940614995">"Captura de pantalla"</string>
diff --git a/packages/Shell/res/values-et-rEE/strings.xml b/packages/Shell/res/values-et-rEE/strings.xml
index a68455a..edf1c09 100644
--- a/packages/Shell/res/values-et-rEE/strings.xml
+++ b/packages/Shell/res/values-et-rEE/strings.xml
@@ -29,8 +29,7 @@
     <string name="bugreport_confirm_dont_repeat" msgid="6179945398364357318">"Ära kuva uuesti"</string>
     <string name="bugreport_storage_title" msgid="5332488144740527109">"Veaaruanded"</string>
     <string name="bugreport_unreadable_text" msgid="586517851044535486">"Veaaruande faili ei õnnestunud lugeda"</string>
-    <!-- no translation found for bugreport_add_details_to_zip_failed (1302931926486712371) -->
-    <skip />
+    <string name="bugreport_add_details_to_zip_failed" msgid="1302931926486712371">"Veaaruande üksikasju ei õnnestunud ZIP-faili lisada"</string>
     <string name="bugreport_unnamed" msgid="2800582406842092709">"nimeta"</string>
     <string name="bugreport_info_action" msgid="2158204228510576227">"Üksikasjad"</string>
     <string name="bugreport_screenshot_action" msgid="8677781721940614995">"Ekraanipilt"</string>
diff --git a/packages/Shell/res/values-eu-rES/strings.xml b/packages/Shell/res/values-eu-rES/strings.xml
index 4173083..1a220ea 100644
--- a/packages/Shell/res/values-eu-rES/strings.xml
+++ b/packages/Shell/res/values-eu-rES/strings.xml
@@ -29,8 +29,7 @@
     <string name="bugreport_confirm_dont_repeat" msgid="6179945398364357318">"Ez erakutsi berriro"</string>
     <string name="bugreport_storage_title" msgid="5332488144740527109">"Akatsen txostenak"</string>
     <string name="bugreport_unreadable_text" msgid="586517851044535486">"Ezin izan da irakurri akatsen txostena"</string>
-    <!-- no translation found for bugreport_add_details_to_zip_failed (1302931926486712371) -->
-    <skip />
+    <string name="bugreport_add_details_to_zip_failed" msgid="1302931926486712371">"Ezin izan dira gehitu akatsen txostenaren xehetasunak ZIP fitxategian"</string>
     <string name="bugreport_unnamed" msgid="2800582406842092709">"izengabea"</string>
     <string name="bugreport_info_action" msgid="2158204228510576227">"Xehetasunak"</string>
     <string name="bugreport_screenshot_action" msgid="8677781721940614995">"Pantaila-argazkia"</string>
diff --git a/packages/Shell/res/values-fa/strings.xml b/packages/Shell/res/values-fa/strings.xml
index 180ece5..0a5b84e 100644
--- a/packages/Shell/res/values-fa/strings.xml
+++ b/packages/Shell/res/values-fa/strings.xml
@@ -29,8 +29,7 @@
     <string name="bugreport_confirm_dont_repeat" msgid="6179945398364357318">"دوباره نشان داده نشود"</string>
     <string name="bugreport_storage_title" msgid="5332488144740527109">"گزارش اشکال"</string>
     <string name="bugreport_unreadable_text" msgid="586517851044535486">"فایل گزارش اشکال خوانده نشد"</string>
-    <!-- no translation found for bugreport_add_details_to_zip_failed (1302931926486712371) -->
-    <skip />
+    <string name="bugreport_add_details_to_zip_failed" msgid="1302931926486712371">"‏جزئیات گزارش اشکال به فایل ZIP اضافه نشد"</string>
     <string name="bugreport_unnamed" msgid="2800582406842092709">"بی‌نام"</string>
     <string name="bugreport_info_action" msgid="2158204228510576227">"جزئیات"</string>
     <string name="bugreport_screenshot_action" msgid="8677781721940614995">"عکس صفحه‌نمایش"</string>
diff --git a/packages/Shell/res/values-fi/strings.xml b/packages/Shell/res/values-fi/strings.xml
index 6be0052..894217e 100644
--- a/packages/Shell/res/values-fi/strings.xml
+++ b/packages/Shell/res/values-fi/strings.xml
@@ -29,8 +29,7 @@
     <string name="bugreport_confirm_dont_repeat" msgid="6179945398364357318">"Älä näytä uudelleen"</string>
     <string name="bugreport_storage_title" msgid="5332488144740527109">"Virheraportit"</string>
     <string name="bugreport_unreadable_text" msgid="586517851044535486">"Virheraporttitiedostoa ei voi lukea."</string>
-    <!-- no translation found for bugreport_add_details_to_zip_failed (1302931926486712371) -->
-    <skip />
+    <string name="bugreport_add_details_to_zip_failed" msgid="1302931926486712371">"Virheraportin tietojen lisääminen ZIP-tiedostoon epäonnistui."</string>
     <string name="bugreport_unnamed" msgid="2800582406842092709">"nimetön"</string>
     <string name="bugreport_info_action" msgid="2158204228510576227">"Tietoja"</string>
     <string name="bugreport_screenshot_action" msgid="8677781721940614995">"Kuvakaappaus"</string>
diff --git a/packages/Shell/res/values-fr-rCA/strings.xml b/packages/Shell/res/values-fr-rCA/strings.xml
index 32fd713..495d26d 100644
--- a/packages/Shell/res/values-fr-rCA/strings.xml
+++ b/packages/Shell/res/values-fr-rCA/strings.xml
@@ -29,8 +29,7 @@
     <string name="bugreport_confirm_dont_repeat" msgid="6179945398364357318">"Ne plus afficher"</string>
     <string name="bugreport_storage_title" msgid="5332488144740527109">"Rapports de bogues"</string>
     <string name="bugreport_unreadable_text" msgid="586517851044535486">"Impossible de lire le fichier du rapport de bogue"</string>
-    <!-- no translation found for bugreport_add_details_to_zip_failed (1302931926486712371) -->
-    <skip />
+    <string name="bugreport_add_details_to_zip_failed" msgid="1302931926486712371">"Impossible d\'ajouter les détails du rapport de bogue au fichier .zip"</string>
     <string name="bugreport_unnamed" msgid="2800582406842092709">"sans nom"</string>
     <string name="bugreport_info_action" msgid="2158204228510576227">"Détails"</string>
     <string name="bugreport_screenshot_action" msgid="8677781721940614995">"Saisie d\'écran"</string>
diff --git a/packages/Shell/res/values-fr/strings.xml b/packages/Shell/res/values-fr/strings.xml
index 460647f..0465916 100644
--- a/packages/Shell/res/values-fr/strings.xml
+++ b/packages/Shell/res/values-fr/strings.xml
@@ -29,8 +29,7 @@
     <string name="bugreport_confirm_dont_repeat" msgid="6179945398364357318">"Ne plus afficher"</string>
     <string name="bugreport_storage_title" msgid="5332488144740527109">"Rapports d\'erreur"</string>
     <string name="bugreport_unreadable_text" msgid="586517851044535486">"Impossible de lire le fichier de rapport de bug."</string>
-    <!-- no translation found for bugreport_add_details_to_zip_failed (1302931926486712371) -->
-    <skip />
+    <string name="bugreport_add_details_to_zip_failed" msgid="1302931926486712371">"Impossible d\'ajouter les détails du rapport de bug au fichier .zip"</string>
     <string name="bugreport_unnamed" msgid="2800582406842092709">"sans nom"</string>
     <string name="bugreport_info_action" msgid="2158204228510576227">"Détails"</string>
     <string name="bugreport_screenshot_action" msgid="8677781721940614995">"Captures d\'écran"</string>
diff --git a/packages/Shell/res/values-gl-rES/strings.xml b/packages/Shell/res/values-gl-rES/strings.xml
index 249da4c..a06a49b 100644
--- a/packages/Shell/res/values-gl-rES/strings.xml
+++ b/packages/Shell/res/values-gl-rES/strings.xml
@@ -29,8 +29,7 @@
     <string name="bugreport_confirm_dont_repeat" msgid="6179945398364357318">"Non mostrar outra vez"</string>
     <string name="bugreport_storage_title" msgid="5332488144740527109">"Informes de erros"</string>
     <string name="bugreport_unreadable_text" msgid="586517851044535486">"Non se puido ler o ficheiro de informe de erros"</string>
-    <!-- no translation found for bugreport_add_details_to_zip_failed (1302931926486712371) -->
-    <skip />
+    <string name="bugreport_add_details_to_zip_failed" msgid="1302931926486712371">"Non se puideron engadir os detalles do informe de erro ao ficheiro zip"</string>
     <string name="bugreport_unnamed" msgid="2800582406842092709">"sen nome"</string>
     <string name="bugreport_info_action" msgid="2158204228510576227">"Detalles"</string>
     <string name="bugreport_screenshot_action" msgid="8677781721940614995">"Captura de pantalla"</string>
diff --git a/packages/Shell/res/values-gu-rIN/strings.xml b/packages/Shell/res/values-gu-rIN/strings.xml
index 27591d9..83a0ab6 100644
--- a/packages/Shell/res/values-gu-rIN/strings.xml
+++ b/packages/Shell/res/values-gu-rIN/strings.xml
@@ -29,8 +29,7 @@
     <string name="bugreport_confirm_dont_repeat" msgid="6179945398364357318">"ફરી બતાવશો નહીં"</string>
     <string name="bugreport_storage_title" msgid="5332488144740527109">"બગ રિપોર્ટ્સ"</string>
     <string name="bugreport_unreadable_text" msgid="586517851044535486">"બગ રીપોર્ટ ફાઇલ વાંચી શકાઇ નથી"</string>
-    <!-- no translation found for bugreport_add_details_to_zip_failed (1302931926486712371) -->
-    <skip />
+    <string name="bugreport_add_details_to_zip_failed" msgid="1302931926486712371">"ZIP ફાઇલમાં બગ રિપોર્ટની વિગતો ઉમેરી શકાઈ નથી"</string>
     <string name="bugreport_unnamed" msgid="2800582406842092709">"અનામાંકિત"</string>
     <string name="bugreport_info_action" msgid="2158204228510576227">"વિગતો"</string>
     <string name="bugreport_screenshot_action" msgid="8677781721940614995">"સ્ક્રીનશોટ"</string>
diff --git a/packages/Shell/res/values-hi/strings.xml b/packages/Shell/res/values-hi/strings.xml
index eade7ed..9086d89 100644
--- a/packages/Shell/res/values-hi/strings.xml
+++ b/packages/Shell/res/values-hi/strings.xml
@@ -29,8 +29,7 @@
     <string name="bugreport_confirm_dont_repeat" msgid="6179945398364357318">"फिर से ना दिखाएं"</string>
     <string name="bugreport_storage_title" msgid="5332488144740527109">"बग रिपोर्ट"</string>
     <string name="bugreport_unreadable_text" msgid="586517851044535486">"बग रिपोर्ट फ़ाइल नहीं पढ़ी जा सकी"</string>
-    <!-- no translation found for bugreport_add_details_to_zip_failed (1302931926486712371) -->
-    <skip />
+    <string name="bugreport_add_details_to_zip_failed" msgid="1302931926486712371">"बग रिपोर्ट को ज़िप फ़ाइल में नहीं जोड़ा जा सका"</string>
     <string name="bugreport_unnamed" msgid="2800582406842092709">"अनामांकित"</string>
     <string name="bugreport_info_action" msgid="2158204228510576227">"विवरण"</string>
     <string name="bugreport_screenshot_action" msgid="8677781721940614995">"स्क्रीनशॉट"</string>
diff --git a/packages/Shell/res/values-hr/strings.xml b/packages/Shell/res/values-hr/strings.xml
index 72d08ba..24b657b 100644
--- a/packages/Shell/res/values-hr/strings.xml
+++ b/packages/Shell/res/values-hr/strings.xml
@@ -29,8 +29,7 @@
     <string name="bugreport_confirm_dont_repeat" msgid="6179945398364357318">"Ne prikazuj ponovo"</string>
     <string name="bugreport_storage_title" msgid="5332488144740527109">"Izvj. o prog. pogreš."</string>
     <string name="bugreport_unreadable_text" msgid="586517851044535486">"Izvješće o programskoj pogrešci nije pročitano"</string>
-    <!-- no translation found for bugreport_add_details_to_zip_failed (1302931926486712371) -->
-    <skip />
+    <string name="bugreport_add_details_to_zip_failed" msgid="1302931926486712371">"Pojedinosti izvješća o programskoj pogrešci nisu dodane u ZIP datoteku"</string>
     <string name="bugreport_unnamed" msgid="2800582406842092709">"bez naziva"</string>
     <string name="bugreport_info_action" msgid="2158204228510576227">"Pojedinosti"</string>
     <string name="bugreport_screenshot_action" msgid="8677781721940614995">"Snimka zaslona"</string>
diff --git a/packages/Shell/res/values-hu/strings.xml b/packages/Shell/res/values-hu/strings.xml
index 3587919..a8c5c76 100644
--- a/packages/Shell/res/values-hu/strings.xml
+++ b/packages/Shell/res/values-hu/strings.xml
@@ -29,8 +29,7 @@
     <string name="bugreport_confirm_dont_repeat" msgid="6179945398364357318">"Ne jelenjen meg többé"</string>
     <string name="bugreport_storage_title" msgid="5332488144740527109">"Hibajelentések"</string>
     <string name="bugreport_unreadable_text" msgid="586517851044535486">"A hibajelentési fájlt nem sikerült beolvasni"</string>
-    <!-- no translation found for bugreport_add_details_to_zip_failed (1302931926486712371) -->
-    <skip />
+    <string name="bugreport_add_details_to_zip_failed" msgid="1302931926486712371">"Nem lehet hozzáadni a hibajelentés részleteit a ZIP-fájlhoz"</string>
     <string name="bugreport_unnamed" msgid="2800582406842092709">"névtelen"</string>
     <string name="bugreport_info_action" msgid="2158204228510576227">"Részletek"</string>
     <string name="bugreport_screenshot_action" msgid="8677781721940614995">"Képernyőkép"</string>
diff --git a/packages/Shell/res/values-hy-rAM/strings.xml b/packages/Shell/res/values-hy-rAM/strings.xml
index 9f4c31b..56627f4 100644
--- a/packages/Shell/res/values-hy-rAM/strings.xml
+++ b/packages/Shell/res/values-hy-rAM/strings.xml
@@ -29,8 +29,7 @@
     <string name="bugreport_confirm_dont_repeat" msgid="6179945398364357318">"Այլևս ցույց չտալ"</string>
     <string name="bugreport_storage_title" msgid="5332488144740527109">"Վրիպակների հաշվետվություններ"</string>
     <string name="bugreport_unreadable_text" msgid="586517851044535486">"Հնարավոր չէ կարդալ վրիպակների զեկույցի ֆայլը"</string>
-    <!-- no translation found for bugreport_add_details_to_zip_failed (1302931926486712371) -->
-    <skip />
+    <string name="bugreport_add_details_to_zip_failed" msgid="1302931926486712371">"Չհաջողվեց ավելացնել վրիպակի զեկույցի մանրամասները zip ֆայլին"</string>
     <string name="bugreport_unnamed" msgid="2800582406842092709">"անանուն"</string>
     <string name="bugreport_info_action" msgid="2158204228510576227">"Մանրամասներ"</string>
     <string name="bugreport_screenshot_action" msgid="8677781721940614995">"Էկրանի պատկեր"</string>
diff --git a/packages/Shell/res/values-is-rIS/strings.xml b/packages/Shell/res/values-is-rIS/strings.xml
index 9e1f2ef..dc21b35 100644
--- a/packages/Shell/res/values-is-rIS/strings.xml
+++ b/packages/Shell/res/values-is-rIS/strings.xml
@@ -29,8 +29,7 @@
     <string name="bugreport_confirm_dont_repeat" msgid="6179945398364357318">"Ekki sýna þetta aftur"</string>
     <string name="bugreport_storage_title" msgid="5332488144740527109">"Villutilkynningar"</string>
     <string name="bugreport_unreadable_text" msgid="586517851044535486">"Ekki var hægt að lesa úr villuskýrslunni"</string>
-    <!-- no translation found for bugreport_add_details_to_zip_failed (1302931926486712371) -->
-    <skip />
+    <string name="bugreport_add_details_to_zip_failed" msgid="1302931926486712371">"Ekki tókst að bæta upplýsingum um villutilkynningu við ZIP-skrá"</string>
     <string name="bugreport_unnamed" msgid="2800582406842092709">"án heitis"</string>
     <string name="bugreport_info_action" msgid="2158204228510576227">"Nánar"</string>
     <string name="bugreport_screenshot_action" msgid="8677781721940614995">"Skjámynd"</string>
diff --git a/packages/Shell/res/values-it/strings.xml b/packages/Shell/res/values-it/strings.xml
index 132f735..0fd6c7a 100644
--- a/packages/Shell/res/values-it/strings.xml
+++ b/packages/Shell/res/values-it/strings.xml
@@ -29,8 +29,7 @@
     <string name="bugreport_confirm_dont_repeat" msgid="6179945398364357318">"Non mostrare più"</string>
     <string name="bugreport_storage_title" msgid="5332488144740527109">"Rapporti sui bug"</string>
     <string name="bugreport_unreadable_text" msgid="586517851044535486">"Impossibile leggere il file relativo alla segnalazione di bug"</string>
-    <!-- no translation found for bugreport_add_details_to_zip_failed (1302931926486712371) -->
-    <skip />
+    <string name="bugreport_add_details_to_zip_failed" msgid="1302931926486712371">"Impossibile aggiungere i dettagli della segnalazione di bug al file zip"</string>
     <string name="bugreport_unnamed" msgid="2800582406842092709">"senza nome"</string>
     <string name="bugreport_info_action" msgid="2158204228510576227">"Dettagli"</string>
     <string name="bugreport_screenshot_action" msgid="8677781721940614995">"Screenshot"</string>
diff --git a/packages/Shell/res/values-iw/strings.xml b/packages/Shell/res/values-iw/strings.xml
index 7e533af..b3f9d02 100644
--- a/packages/Shell/res/values-iw/strings.xml
+++ b/packages/Shell/res/values-iw/strings.xml
@@ -29,8 +29,7 @@
     <string name="bugreport_confirm_dont_repeat" msgid="6179945398364357318">"אל תציג שוב"</string>
     <string name="bugreport_storage_title" msgid="5332488144740527109">"דוחות באגים"</string>
     <string name="bugreport_unreadable_text" msgid="586517851044535486">"לא ניתן היה לקרוא את קובץ הדוח על הבאג"</string>
-    <!-- no translation found for bugreport_add_details_to_zip_failed (1302931926486712371) -->
-    <skip />
+    <string name="bugreport_add_details_to_zip_failed" msgid="1302931926486712371">"‏לא ניתן היה להוסיף את פרטי הדוח על הבאג לקובץ ה-zip"</string>
     <string name="bugreport_unnamed" msgid="2800582406842092709">"ללא שם"</string>
     <string name="bugreport_info_action" msgid="2158204228510576227">"פרטים"</string>
     <string name="bugreport_screenshot_action" msgid="8677781721940614995">"צילום מסך"</string>
diff --git a/packages/Shell/res/values-ja/strings.xml b/packages/Shell/res/values-ja/strings.xml
index 7904801..eca0ea0 100644
--- a/packages/Shell/res/values-ja/strings.xml
+++ b/packages/Shell/res/values-ja/strings.xml
@@ -29,8 +29,7 @@
     <string name="bugreport_confirm_dont_repeat" msgid="6179945398364357318">"次回から表示しない"</string>
     <string name="bugreport_storage_title" msgid="5332488144740527109">"バグレポート"</string>
     <string name="bugreport_unreadable_text" msgid="586517851044535486">"バグレポート ファイルを読み取ることができませんでした"</string>
-    <!-- no translation found for bugreport_add_details_to_zip_failed (1302931926486712371) -->
-    <skip />
+    <string name="bugreport_add_details_to_zip_failed" msgid="1302931926486712371">"zip ファイルにバグレポートの詳細を追加できませんでした"</string>
     <string name="bugreport_unnamed" msgid="2800582406842092709">"名前なし"</string>
     <string name="bugreport_info_action" msgid="2158204228510576227">"詳細"</string>
     <string name="bugreport_screenshot_action" msgid="8677781721940614995">"スクリーンショット"</string>
diff --git a/packages/Shell/res/values-ka-rGE/strings.xml b/packages/Shell/res/values-ka-rGE/strings.xml
index 793626e..43cdeee 100644
--- a/packages/Shell/res/values-ka-rGE/strings.xml
+++ b/packages/Shell/res/values-ka-rGE/strings.xml
@@ -29,8 +29,7 @@
     <string name="bugreport_confirm_dont_repeat" msgid="6179945398364357318">"აღარ გამოჩნდეს"</string>
     <string name="bugreport_storage_title" msgid="5332488144740527109">"შეცდომების ანგარიშები"</string>
     <string name="bugreport_unreadable_text" msgid="586517851044535486">"ხარვეზების შესახებ ანგარიშის წაკითხვა ვერ მოხერხდა"</string>
-    <!-- no translation found for bugreport_add_details_to_zip_failed (1302931926486712371) -->
-    <skip />
+    <string name="bugreport_add_details_to_zip_failed" msgid="1302931926486712371">"ხარვეზის შესახებ ანგარიშის დეტალები .zip ფაილს ვერ დაემატა"</string>
     <string name="bugreport_unnamed" msgid="2800582406842092709">"უსახელო"</string>
     <string name="bugreport_info_action" msgid="2158204228510576227">"დეტალები"</string>
     <string name="bugreport_screenshot_action" msgid="8677781721940614995">"ეკრანის ანაბეჭდი"</string>
diff --git a/packages/Shell/res/values-kk-rKZ/strings.xml b/packages/Shell/res/values-kk-rKZ/strings.xml
index 86f969b..7d1218f 100644
--- a/packages/Shell/res/values-kk-rKZ/strings.xml
+++ b/packages/Shell/res/values-kk-rKZ/strings.xml
@@ -29,8 +29,7 @@
     <string name="bugreport_confirm_dont_repeat" msgid="6179945398364357318">"Қайтадан көрсетілмесін"</string>
     <string name="bugreport_storage_title" msgid="5332488144740527109">"Қате туралы баяндамалар"</string>
     <string name="bugreport_unreadable_text" msgid="586517851044535486">"Қате туралы есеп файлын оқу мүмкін болмады"</string>
-    <!-- no translation found for bugreport_add_details_to_zip_failed (1302931926486712371) -->
-    <skip />
+    <string name="bugreport_add_details_to_zip_failed" msgid="1302931926486712371">"Қате туралы есеп мәліметтері zip файлына салынбады"</string>
     <string name="bugreport_unnamed" msgid="2800582406842092709">"атаусыз"</string>
     <string name="bugreport_info_action" msgid="2158204228510576227">"Мәліметтер"</string>
     <string name="bugreport_screenshot_action" msgid="8677781721940614995">"Скриншот"</string>
diff --git a/packages/Shell/res/values-km-rKH/strings.xml b/packages/Shell/res/values-km-rKH/strings.xml
index f593152..c9633db7f4 100644
--- a/packages/Shell/res/values-km-rKH/strings.xml
+++ b/packages/Shell/res/values-km-rKH/strings.xml
@@ -29,8 +29,7 @@
     <string name="bugreport_confirm_dont_repeat" msgid="6179945398364357318">"កុំបង្ហាញម្ដងទៀត"</string>
     <string name="bugreport_storage_title" msgid="5332488144740527109">"រាយការណ៍ពីកំហុស"</string>
     <string name="bugreport_unreadable_text" msgid="586517851044535486">"មិនអាចអានឯកសាររបាយកាណ៍កំហុសបានទេ"</string>
-    <!-- no translation found for bugreport_add_details_to_zip_failed (1302931926486712371) -->
-    <skip />
+    <string name="bugreport_add_details_to_zip_failed" msgid="1302931926486712371">"មិនអាចបន្ថែមព័ត៌មានលម្អិតនៃរបាយការណ៍កំហុសទៅឯកសារ zip បានទេ"</string>
     <string name="bugreport_unnamed" msgid="2800582406842092709">"គ្មានឈ្មោះ"</string>
     <string name="bugreport_info_action" msgid="2158204228510576227">"ព័ត៌មានលម្អិត"</string>
     <string name="bugreport_screenshot_action" msgid="8677781721940614995">"រូបថតអេក្រង់"</string>
diff --git a/packages/Shell/res/values-kn-rIN/strings.xml b/packages/Shell/res/values-kn-rIN/strings.xml
index 91d84d0..fc8d03c 100644
--- a/packages/Shell/res/values-kn-rIN/strings.xml
+++ b/packages/Shell/res/values-kn-rIN/strings.xml
@@ -29,8 +29,7 @@
     <string name="bugreport_confirm_dont_repeat" msgid="6179945398364357318">"ಮತ್ತೊಮ್ಮೆ ತೋರಿಸಬೇಡ"</string>
     <string name="bugreport_storage_title" msgid="5332488144740527109">"ದೋಷ ವರದಿಗಳು"</string>
     <string name="bugreport_unreadable_text" msgid="586517851044535486">"ಬಗ್‌ ವರದಿ ಫೈಲ್‌‌ ಅನ್ನು ಓದಲು ಸಾಧ್ಯವಾಗುತ್ತಿಲ್ಲ"</string>
-    <!-- no translation found for bugreport_add_details_to_zip_failed (1302931926486712371) -->
-    <skip />
+    <string name="bugreport_add_details_to_zip_failed" msgid="1302931926486712371">"ಜಿಪ್ ಫೈಲ್‌ಗೆ ಬಗ್ ವರದಿ ವಿವರಗಳನ್ನು ಸೇರಿಸಲಾಗಲಿಲ್ಲ"</string>
     <string name="bugreport_unnamed" msgid="2800582406842092709">"ಹೆಸರಿಸದಿರುವುದು"</string>
     <string name="bugreport_info_action" msgid="2158204228510576227">"ವಿವರಗಳು"</string>
     <string name="bugreport_screenshot_action" msgid="8677781721940614995">"ಸ್ಕ್ರೀನ್‌ಶಾಟ್"</string>
diff --git a/packages/Shell/res/values-ko/strings.xml b/packages/Shell/res/values-ko/strings.xml
index fc0119f..d382fb1 100644
--- a/packages/Shell/res/values-ko/strings.xml
+++ b/packages/Shell/res/values-ko/strings.xml
@@ -29,8 +29,7 @@
     <string name="bugreport_confirm_dont_repeat" msgid="6179945398364357318">"다시 표시 안함"</string>
     <string name="bugreport_storage_title" msgid="5332488144740527109">"버그 신고"</string>
     <string name="bugreport_unreadable_text" msgid="586517851044535486">"버그 신고 파일을 읽을 수 없습니다."</string>
-    <!-- no translation found for bugreport_add_details_to_zip_failed (1302931926486712371) -->
-    <skip />
+    <string name="bugreport_add_details_to_zip_failed" msgid="1302931926486712371">"zip 파일에 버그 신고 세부정보를 추가할 수 없습니다."</string>
     <string name="bugreport_unnamed" msgid="2800582406842092709">"이름 없음"</string>
     <string name="bugreport_info_action" msgid="2158204228510576227">"세부정보"</string>
     <string name="bugreport_screenshot_action" msgid="8677781721940614995">"스크린샷"</string>
diff --git a/packages/Shell/res/values-ky-rKG/strings.xml b/packages/Shell/res/values-ky-rKG/strings.xml
index e1021f5..fe2dde4 100644
--- a/packages/Shell/res/values-ky-rKG/strings.xml
+++ b/packages/Shell/res/values-ky-rKG/strings.xml
@@ -29,8 +29,7 @@
     <string name="bugreport_confirm_dont_repeat" msgid="6179945398364357318">"Экинчи көрсөтүлбөсүн"</string>
     <string name="bugreport_storage_title" msgid="5332488144740527109">"Мүчүлүштүктөрдү кабарлоолор"</string>
     <string name="bugreport_unreadable_text" msgid="586517851044535486">"Мүчүлүштүк тууралуу кабарлаган файл окулбай койду"</string>
-    <!-- no translation found for bugreport_add_details_to_zip_failed (1302931926486712371) -->
-    <skip />
+    <string name="bugreport_add_details_to_zip_failed" msgid="1302931926486712371">"Мүчүлүштүктөр жөнүндө кабардын чоо-жайы zip файлына кошулбай койду"</string>
     <string name="bugreport_unnamed" msgid="2800582406842092709">"аталышы жок"</string>
     <string name="bugreport_info_action" msgid="2158204228510576227">"Чоо-жайы"</string>
     <string name="bugreport_screenshot_action" msgid="8677781721940614995">"Скриншот"</string>
diff --git a/packages/Shell/res/values-lt/strings.xml b/packages/Shell/res/values-lt/strings.xml
index 572623a..23fba5f 100644
--- a/packages/Shell/res/values-lt/strings.xml
+++ b/packages/Shell/res/values-lt/strings.xml
@@ -29,8 +29,7 @@
     <string name="bugreport_confirm_dont_repeat" msgid="6179945398364357318">"Daugiau neberodyti"</string>
     <string name="bugreport_storage_title" msgid="5332488144740527109">"Riktų ataskaitos"</string>
     <string name="bugreport_unreadable_text" msgid="586517851044535486">"Nepavyko sukurti pranešimo apie riktą failo"</string>
-    <!-- no translation found for bugreport_add_details_to_zip_failed (1302931926486712371) -->
-    <skip />
+    <string name="bugreport_add_details_to_zip_failed" msgid="1302931926486712371">"Nepavyko pridėti išsamios pranešimo apie riktą informacijos prie .zip failo"</string>
     <string name="bugreport_unnamed" msgid="2800582406842092709">"be pavadinimo"</string>
     <string name="bugreport_info_action" msgid="2158204228510576227">"Informacija"</string>
     <string name="bugreport_screenshot_action" msgid="8677781721940614995">"Ekrano kopija"</string>
diff --git a/packages/Shell/res/values-lv/strings.xml b/packages/Shell/res/values-lv/strings.xml
index afa5b31..d6bfee3 100644
--- a/packages/Shell/res/values-lv/strings.xml
+++ b/packages/Shell/res/values-lv/strings.xml
@@ -29,8 +29,7 @@
     <string name="bugreport_confirm_dont_repeat" msgid="6179945398364357318">"Vairs nerādīt"</string>
     <string name="bugreport_storage_title" msgid="5332488144740527109">"Kļūdu ziņojumi"</string>
     <string name="bugreport_unreadable_text" msgid="586517851044535486">"Nevarēja nolasīt kļūdas pārskata failu."</string>
-    <!-- no translation found for bugreport_add_details_to_zip_failed (1302931926486712371) -->
-    <skip />
+    <string name="bugreport_add_details_to_zip_failed" msgid="1302931926486712371">"Nevarēja pievienot kļūdas pārskata informāciju ZIPˆ failam"</string>
     <string name="bugreport_unnamed" msgid="2800582406842092709">"bez nosaukuma"</string>
     <string name="bugreport_info_action" msgid="2158204228510576227">"Detalizēta informācija"</string>
     <string name="bugreport_screenshot_action" msgid="8677781721940614995">"Ekrānuzņēmums"</string>
diff --git a/packages/Shell/res/values-mk-rMK/strings.xml b/packages/Shell/res/values-mk-rMK/strings.xml
index e9aa2b2..3ce9436 100644
--- a/packages/Shell/res/values-mk-rMK/strings.xml
+++ b/packages/Shell/res/values-mk-rMK/strings.xml
@@ -29,8 +29,7 @@
     <string name="bugreport_confirm_dont_repeat" msgid="6179945398364357318">"Не покажувај повторно"</string>
     <string name="bugreport_storage_title" msgid="5332488144740527109">"Извештаи за грешки"</string>
     <string name="bugreport_unreadable_text" msgid="586517851044535486">"Датотеката со извештај за грешка не можеше да се прочита"</string>
-    <!-- no translation found for bugreport_add_details_to_zip_failed (1302931926486712371) -->
-    <skip />
+    <string name="bugreport_add_details_to_zip_failed" msgid="1302931926486712371">"Не можевме да ги додадеме деталите на извештајот за грешки во zip-датотеката"</string>
     <string name="bugreport_unnamed" msgid="2800582406842092709">"неименувани"</string>
     <string name="bugreport_info_action" msgid="2158204228510576227">"Детали"</string>
     <string name="bugreport_screenshot_action" msgid="8677781721940614995">"Слика од екранот"</string>
diff --git a/packages/Shell/res/values-ml-rIN/strings.xml b/packages/Shell/res/values-ml-rIN/strings.xml
index 5cbb3b3..13d6ee4 100644
--- a/packages/Shell/res/values-ml-rIN/strings.xml
+++ b/packages/Shell/res/values-ml-rIN/strings.xml
@@ -29,8 +29,7 @@
     <string name="bugreport_confirm_dont_repeat" msgid="6179945398364357318">"വീണ്ടും കാണിക്കരുത്"</string>
     <string name="bugreport_storage_title" msgid="5332488144740527109">"ബഗ് റിപ്പോർട്ടുകൾ"</string>
     <string name="bugreport_unreadable_text" msgid="586517851044535486">"ബഗ് റിപ്പോർട്ട് ഫയൽ വായിക്കാനായില്ല"</string>
-    <!-- no translation found for bugreport_add_details_to_zip_failed (1302931926486712371) -->
-    <skip />
+    <string name="bugreport_add_details_to_zip_failed" msgid="1302931926486712371">"സിപ്പ് ഫയലിലേക്ക് ബഗ് റിപ്പോർട്ട് വിശദാംശങ്ങൾ ചേർക്കാൻ കഴിഞ്ഞില്ല"</string>
     <string name="bugreport_unnamed" msgid="2800582406842092709">"പേരില്ലാത്തവർ"</string>
     <string name="bugreport_info_action" msgid="2158204228510576227">"വിശദാംശങ്ങൾ"</string>
     <string name="bugreport_screenshot_action" msgid="8677781721940614995">"സ്‌ക്രീൻഷോട്ട്"</string>
diff --git a/packages/Shell/res/values-mr-rIN/strings.xml b/packages/Shell/res/values-mr-rIN/strings.xml
index 1bf7719..035ac01 100644
--- a/packages/Shell/res/values-mr-rIN/strings.xml
+++ b/packages/Shell/res/values-mr-rIN/strings.xml
@@ -29,8 +29,7 @@
     <string name="bugreport_confirm_dont_repeat" msgid="6179945398364357318">"पुन्हा दर्शवू नका"</string>
     <string name="bugreport_storage_title" msgid="5332488144740527109">"दोष अहवाल"</string>
     <string name="bugreport_unreadable_text" msgid="586517851044535486">"दोष अहवाल फाईल वाचणे शक्य झाले नाही"</string>
-    <!-- no translation found for bugreport_add_details_to_zip_failed (1302931926486712371) -->
-    <skip />
+    <string name="bugreport_add_details_to_zip_failed" msgid="1302931926486712371">"झिप फाईल मध्ये दोष अहवाल तपशील जोडणे शक्य झाले नाही"</string>
     <string name="bugreport_unnamed" msgid="2800582406842092709">"अनामित"</string>
     <string name="bugreport_info_action" msgid="2158204228510576227">"तपशील"</string>
     <string name="bugreport_screenshot_action" msgid="8677781721940614995">"स्क्रीनशॉट"</string>
diff --git a/packages/Shell/res/values-ms-rMY/strings.xml b/packages/Shell/res/values-ms-rMY/strings.xml
index a51f9d8..085152f 100644
--- a/packages/Shell/res/values-ms-rMY/strings.xml
+++ b/packages/Shell/res/values-ms-rMY/strings.xml
@@ -29,8 +29,7 @@
     <string name="bugreport_confirm_dont_repeat" msgid="6179945398364357318">"Jangan tunjukkan lagi"</string>
     <string name="bugreport_storage_title" msgid="5332488144740527109">"Laporan pepijat"</string>
     <string name="bugreport_unreadable_text" msgid="586517851044535486">"Fail laporan pepijat tidak dapat dibaca"</string>
-    <!-- no translation found for bugreport_add_details_to_zip_failed (1302931926486712371) -->
-    <skip />
+    <string name="bugreport_add_details_to_zip_failed" msgid="1302931926486712371">"Tidak dapat menambahkan butiran laporan pepijat pada fail zip"</string>
     <string name="bugreport_unnamed" msgid="2800582406842092709">"tidak bernama"</string>
     <string name="bugreport_info_action" msgid="2158204228510576227">"Butiran"</string>
     <string name="bugreport_screenshot_action" msgid="8677781721940614995">"Tangkapan skrin"</string>
diff --git a/packages/Shell/res/values-nb/strings.xml b/packages/Shell/res/values-nb/strings.xml
index aca68e0..43fb97b 100644
--- a/packages/Shell/res/values-nb/strings.xml
+++ b/packages/Shell/res/values-nb/strings.xml
@@ -29,8 +29,7 @@
     <string name="bugreport_confirm_dont_repeat" msgid="6179945398364357318">"Ikke vis igjen"</string>
     <string name="bugreport_storage_title" msgid="5332488144740527109">"Feilrapporter"</string>
     <string name="bugreport_unreadable_text" msgid="586517851044535486">"Feilrapportfilen kunne ikke leses"</string>
-    <!-- no translation found for bugreport_add_details_to_zip_failed (1302931926486712371) -->
-    <skip />
+    <string name="bugreport_add_details_to_zip_failed" msgid="1302931926486712371">"Kunne ikke legge til informasjon fra feilrapporten i ZIP-filen"</string>
     <string name="bugreport_unnamed" msgid="2800582406842092709">"uten navn"</string>
     <string name="bugreport_info_action" msgid="2158204228510576227">"Detaljer"</string>
     <string name="bugreport_screenshot_action" msgid="8677781721940614995">"Skjermdump"</string>
diff --git a/packages/Shell/res/values-nl/strings.xml b/packages/Shell/res/values-nl/strings.xml
index 6461e58..1b60f0d 100644
--- a/packages/Shell/res/values-nl/strings.xml
+++ b/packages/Shell/res/values-nl/strings.xml
@@ -29,8 +29,7 @@
     <string name="bugreport_confirm_dont_repeat" msgid="6179945398364357318">"Niet opnieuw weergeven"</string>
     <string name="bugreport_storage_title" msgid="5332488144740527109">"Foutenrapporten"</string>
     <string name="bugreport_unreadable_text" msgid="586517851044535486">"Bestand met bugrapport kan niet worden gelezen"</string>
-    <!-- no translation found for bugreport_add_details_to_zip_failed (1302931926486712371) -->
-    <skip />
+    <string name="bugreport_add_details_to_zip_failed" msgid="1302931926486712371">"Kan details van bugrapport niet toevoegen aan zip-bestand"</string>
     <string name="bugreport_unnamed" msgid="2800582406842092709">"naamloos"</string>
     <string name="bugreport_info_action" msgid="2158204228510576227">"Details"</string>
     <string name="bugreport_screenshot_action" msgid="8677781721940614995">"Screenshot"</string>
diff --git a/packages/Shell/res/values-pa-rIN/strings.xml b/packages/Shell/res/values-pa-rIN/strings.xml
index 3c93509..db8b29f 100644
--- a/packages/Shell/res/values-pa-rIN/strings.xml
+++ b/packages/Shell/res/values-pa-rIN/strings.xml
@@ -29,8 +29,7 @@
     <string name="bugreport_confirm_dont_repeat" msgid="6179945398364357318">"ਦੁਬਾਰਾ ਨਾ ਵਿਖਾਓ"</string>
     <string name="bugreport_storage_title" msgid="5332488144740527109">"ਬਗ ਰਿਪੋਰਟਾਂ"</string>
     <string name="bugreport_unreadable_text" msgid="586517851044535486">"ਬਗ ਰਿਪੋਰਟ ਫ਼ਾਈਲ ਪੜ੍ਹੀ ਨਹੀਂ ਜਾ ਸਕੀ"</string>
-    <!-- no translation found for bugreport_add_details_to_zip_failed (1302931926486712371) -->
-    <skip />
+    <string name="bugreport_add_details_to_zip_failed" msgid="1302931926486712371">"ਬੱਗ ਰਿਪੋਰਟ ਵੇਰਵਿਆਂ ਨੂੰ ਜ਼ਿਪ ਫ਼ਾਈਲ ਵਿੱਚ ਸ਼ਾਮਲ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਿਆ"</string>
     <string name="bugreport_unnamed" msgid="2800582406842092709">"ਬਿਨਾਂ-ਨਾਮ"</string>
     <string name="bugreport_info_action" msgid="2158204228510576227">"ਵੇਰਵੇ"</string>
     <string name="bugreport_screenshot_action" msgid="8677781721940614995">"ਸਕ੍ਰੀਨਸ਼ਾਟ"</string>
diff --git a/packages/Shell/res/values-pl/strings.xml b/packages/Shell/res/values-pl/strings.xml
index 4c62c9c..d0375b6 100644
--- a/packages/Shell/res/values-pl/strings.xml
+++ b/packages/Shell/res/values-pl/strings.xml
@@ -29,8 +29,7 @@
     <string name="bugreport_confirm_dont_repeat" msgid="6179945398364357318">"Nie pokazuj ponownie"</string>
     <string name="bugreport_storage_title" msgid="5332488144740527109">"Raporty o błędach"</string>
     <string name="bugreport_unreadable_text" msgid="586517851044535486">"Nie można odczytać raportu o błędzie"</string>
-    <!-- no translation found for bugreport_add_details_to_zip_failed (1302931926486712371) -->
-    <skip />
+    <string name="bugreport_add_details_to_zip_failed" msgid="1302931926486712371">"Nie udało się dodać szczegółów zgłoszenia błędu do pliku ZIP"</string>
     <string name="bugreport_unnamed" msgid="2800582406842092709">"bez nazwy"</string>
     <string name="bugreport_info_action" msgid="2158204228510576227">"Szczegóły"</string>
     <string name="bugreport_screenshot_action" msgid="8677781721940614995">"Zrzut ekranu"</string>
diff --git a/packages/Shell/res/values-pt-rBR/strings.xml b/packages/Shell/res/values-pt-rBR/strings.xml
index 8d813a5..12cf2e4 100644
--- a/packages/Shell/res/values-pt-rBR/strings.xml
+++ b/packages/Shell/res/values-pt-rBR/strings.xml
@@ -29,8 +29,7 @@
     <string name="bugreport_confirm_dont_repeat" msgid="6179945398364357318">"Não mostrar novamente"</string>
     <string name="bugreport_storage_title" msgid="5332488144740527109">"Relatórios de bugs"</string>
     <string name="bugreport_unreadable_text" msgid="586517851044535486">"Não foi possível ler o arquivo de relatório de bug"</string>
-    <!-- no translation found for bugreport_add_details_to_zip_failed (1302931926486712371) -->
-    <skip />
+    <string name="bugreport_add_details_to_zip_failed" msgid="1302931926486712371">"Não foi possível adicionar detalhes do relatório do bug ao arquivo ZIP"</string>
     <string name="bugreport_unnamed" msgid="2800582406842092709">"sem nome"</string>
     <string name="bugreport_info_action" msgid="2158204228510576227">"Detalhes"</string>
     <string name="bugreport_screenshot_action" msgid="8677781721940614995">"Capturas de tela"</string>
diff --git a/packages/Shell/res/values-pt-rPT/strings.xml b/packages/Shell/res/values-pt-rPT/strings.xml
index 346ed3a..2148f97 100644
--- a/packages/Shell/res/values-pt-rPT/strings.xml
+++ b/packages/Shell/res/values-pt-rPT/strings.xml
@@ -29,8 +29,7 @@
     <string name="bugreport_confirm_dont_repeat" msgid="6179945398364357318">"Não mostrar de novo"</string>
     <string name="bugreport_storage_title" msgid="5332488144740527109">"Relatórios de erros"</string>
     <string name="bugreport_unreadable_text" msgid="586517851044535486">"Não foi possível ler o ficheiro de relatório de erro"</string>
-    <!-- no translation found for bugreport_add_details_to_zip_failed (1302931926486712371) -->
-    <skip />
+    <string name="bugreport_add_details_to_zip_failed" msgid="1302931926486712371">"Não foi possível adicionar os detalhes do relatório de erro ao ficheiro ZIP"</string>
     <string name="bugreport_unnamed" msgid="2800582406842092709">"sem nome"</string>
     <string name="bugreport_info_action" msgid="2158204228510576227">"Detalhes"</string>
     <string name="bugreport_screenshot_action" msgid="8677781721940614995">"Captura de ecrã"</string>
diff --git a/packages/Shell/res/values-pt/strings.xml b/packages/Shell/res/values-pt/strings.xml
index 8d813a5..12cf2e4 100644
--- a/packages/Shell/res/values-pt/strings.xml
+++ b/packages/Shell/res/values-pt/strings.xml
@@ -29,8 +29,7 @@
     <string name="bugreport_confirm_dont_repeat" msgid="6179945398364357318">"Não mostrar novamente"</string>
     <string name="bugreport_storage_title" msgid="5332488144740527109">"Relatórios de bugs"</string>
     <string name="bugreport_unreadable_text" msgid="586517851044535486">"Não foi possível ler o arquivo de relatório de bug"</string>
-    <!-- no translation found for bugreport_add_details_to_zip_failed (1302931926486712371) -->
-    <skip />
+    <string name="bugreport_add_details_to_zip_failed" msgid="1302931926486712371">"Não foi possível adicionar detalhes do relatório do bug ao arquivo ZIP"</string>
     <string name="bugreport_unnamed" msgid="2800582406842092709">"sem nome"</string>
     <string name="bugreport_info_action" msgid="2158204228510576227">"Detalhes"</string>
     <string name="bugreport_screenshot_action" msgid="8677781721940614995">"Capturas de tela"</string>
diff --git a/packages/Shell/res/values-ro/strings.xml b/packages/Shell/res/values-ro/strings.xml
index db39c60..4e57b60 100644
--- a/packages/Shell/res/values-ro/strings.xml
+++ b/packages/Shell/res/values-ro/strings.xml
@@ -29,8 +29,7 @@
     <string name="bugreport_confirm_dont_repeat" msgid="6179945398364357318">"Nu mai afișa"</string>
     <string name="bugreport_storage_title" msgid="5332488144740527109">"Rapoarte de erori"</string>
     <string name="bugreport_unreadable_text" msgid="586517851044535486">"Fișierul cu raportul de eroare nu a putut fi citit"</string>
-    <!-- no translation found for bugreport_add_details_to_zip_failed (1302931926486712371) -->
-    <skip />
+    <string name="bugreport_add_details_to_zip_failed" msgid="1302931926486712371">"Detaliile privind raportul de eroare nu au putut fi adăugate în fișierul zip"</string>
     <string name="bugreport_unnamed" msgid="2800582406842092709">"fără nume"</string>
     <string name="bugreport_info_action" msgid="2158204228510576227">"Detalii"</string>
     <string name="bugreport_screenshot_action" msgid="8677781721940614995">"Captură de ecran"</string>
diff --git a/packages/Shell/res/values-ru/strings.xml b/packages/Shell/res/values-ru/strings.xml
index 3a6196f..62647ca 100644
--- a/packages/Shell/res/values-ru/strings.xml
+++ b/packages/Shell/res/values-ru/strings.xml
@@ -29,8 +29,7 @@
     <string name="bugreport_confirm_dont_repeat" msgid="6179945398364357318">"Больше не показывать"</string>
     <string name="bugreport_storage_title" msgid="5332488144740527109">"Отчеты об ошибках"</string>
     <string name="bugreport_unreadable_text" msgid="586517851044535486">"Не удалось открыть отчет об ошибке"</string>
-    <!-- no translation found for bugreport_add_details_to_zip_failed (1302931926486712371) -->
-    <skip />
+    <string name="bugreport_add_details_to_zip_failed" msgid="1302931926486712371">"Не удалось добавить данные отчета об ошибке в ZIP-файл"</string>
     <string name="bugreport_unnamed" msgid="2800582406842092709">"без названия"</string>
     <string name="bugreport_info_action" msgid="2158204228510576227">"Детали"</string>
     <string name="bugreport_screenshot_action" msgid="8677781721940614995">"Скриншоты"</string>
diff --git a/packages/Shell/res/values-sk/strings.xml b/packages/Shell/res/values-sk/strings.xml
index b8ecf77..3e3a0e4 100644
--- a/packages/Shell/res/values-sk/strings.xml
+++ b/packages/Shell/res/values-sk/strings.xml
@@ -29,8 +29,7 @@
     <string name="bugreport_confirm_dont_repeat" msgid="6179945398364357318">"Nabudúce nezobrazovať"</string>
     <string name="bugreport_storage_title" msgid="5332488144740527109">"Hlásenia chýb"</string>
     <string name="bugreport_unreadable_text" msgid="586517851044535486">"Súbor s hlásením chyby sa nepodarilo prečítať"</string>
-    <!-- no translation found for bugreport_add_details_to_zip_failed (1302931926486712371) -->
-    <skip />
+    <string name="bugreport_add_details_to_zip_failed" msgid="1302931926486712371">"Do súboru ZIP sa nepodarilo pridať podrobnosti o hlásení chyby"</string>
     <string name="bugreport_unnamed" msgid="2800582406842092709">"bez názvu"</string>
     <string name="bugreport_info_action" msgid="2158204228510576227">"Podrobnosti"</string>
     <string name="bugreport_screenshot_action" msgid="8677781721940614995">"Snímka obrazovky"</string>
diff --git a/packages/Shell/res/values-sl/strings.xml b/packages/Shell/res/values-sl/strings.xml
index 689752b..6b07e46 100644
--- a/packages/Shell/res/values-sl/strings.xml
+++ b/packages/Shell/res/values-sl/strings.xml
@@ -29,8 +29,7 @@
     <string name="bugreport_confirm_dont_repeat" msgid="6179945398364357318">"Tega ne prikaži več"</string>
     <string name="bugreport_storage_title" msgid="5332488144740527109">"Poročila o napakah"</string>
     <string name="bugreport_unreadable_text" msgid="586517851044535486">"Datoteke s poročilom o napakah ni bilo mogoče prebrati"</string>
-    <!-- no translation found for bugreport_add_details_to_zip_failed (1302931926486712371) -->
-    <skip />
+    <string name="bugreport_add_details_to_zip_failed" msgid="1302931926486712371">"V datoteko zip ni bilo mogoče dodati podrobnosti poročila o napakah."</string>
     <string name="bugreport_unnamed" msgid="2800582406842092709">"neimenovano"</string>
     <string name="bugreport_info_action" msgid="2158204228510576227">"Podrobnosti"</string>
     <string name="bugreport_screenshot_action" msgid="8677781721940614995">"Posnetek zaslona"</string>
diff --git a/packages/Shell/res/values-sq-rAL/strings.xml b/packages/Shell/res/values-sq-rAL/strings.xml
index ed09f53..08c77c2 100644
--- a/packages/Shell/res/values-sq-rAL/strings.xml
+++ b/packages/Shell/res/values-sq-rAL/strings.xml
@@ -29,8 +29,7 @@
     <string name="bugreport_confirm_dont_repeat" msgid="6179945398364357318">"Mos e shfaq përsëri"</string>
     <string name="bugreport_storage_title" msgid="5332488144740527109">"Raportet e gabimeve"</string>
     <string name="bugreport_unreadable_text" msgid="586517851044535486">"Skedari i raportimit të defektit në kod nuk mund të lexohej."</string>
-    <!-- no translation found for bugreport_add_details_to_zip_failed (1302931926486712371) -->
-    <skip />
+    <string name="bugreport_add_details_to_zip_failed" msgid="1302931926486712371">"Nuk mund të shtoheshin detajet e raportimit të gabimeve në kod në skedarin .zip"</string>
     <string name="bugreport_unnamed" msgid="2800582406842092709">"e paemërtuar"</string>
     <string name="bugreport_info_action" msgid="2158204228510576227">"Detajet"</string>
     <string name="bugreport_screenshot_action" msgid="8677781721940614995">"Pamja e ekranit"</string>
diff --git a/packages/Shell/res/values-sr/strings.xml b/packages/Shell/res/values-sr/strings.xml
index 15ff5af..72a5dc8 100644
--- a/packages/Shell/res/values-sr/strings.xml
+++ b/packages/Shell/res/values-sr/strings.xml
@@ -29,8 +29,7 @@
     <string name="bugreport_confirm_dont_repeat" msgid="6179945398364357318">"Не приказуј поново"</string>
     <string name="bugreport_storage_title" msgid="5332488144740527109">"Извештаји о грешкама"</string>
     <string name="bugreport_unreadable_text" msgid="586517851044535486">"Датотека извештаја о грешци не може да се прочита"</string>
-    <!-- no translation found for bugreport_add_details_to_zip_failed (1302931926486712371) -->
-    <skip />
+    <string name="bugreport_add_details_to_zip_failed" msgid="1302931926486712371">"Додавање детаља извештаја о грешци у zip датотеку није успело"</string>
     <string name="bugreport_unnamed" msgid="2800582406842092709">"неименовано"</string>
     <string name="bugreport_info_action" msgid="2158204228510576227">"Детаљи"</string>
     <string name="bugreport_screenshot_action" msgid="8677781721940614995">"Снимци екрана"</string>
diff --git a/packages/Shell/res/values-sv/strings.xml b/packages/Shell/res/values-sv/strings.xml
index cfa3579..52ff7c5 100644
--- a/packages/Shell/res/values-sv/strings.xml
+++ b/packages/Shell/res/values-sv/strings.xml
@@ -29,8 +29,7 @@
     <string name="bugreport_confirm_dont_repeat" msgid="6179945398364357318">"Visa inte igen"</string>
     <string name="bugreport_storage_title" msgid="5332488144740527109">"Felrapporter"</string>
     <string name="bugreport_unreadable_text" msgid="586517851044535486">"Det gick inte att läsa felrapporten"</string>
-    <!-- no translation found for bugreport_add_details_to_zip_failed (1302931926486712371) -->
-    <skip />
+    <string name="bugreport_add_details_to_zip_failed" msgid="1302931926486712371">"Det gick inte att lägga till information om felrapporten i ZIP-filen"</string>
     <string name="bugreport_unnamed" msgid="2800582406842092709">"namnlös"</string>
     <string name="bugreport_info_action" msgid="2158204228510576227">"Information"</string>
     <string name="bugreport_screenshot_action" msgid="8677781721940614995">"Skärmdump"</string>
diff --git a/packages/Shell/res/values-sw/strings.xml b/packages/Shell/res/values-sw/strings.xml
index 32d8e66..b31b54f 100644
--- a/packages/Shell/res/values-sw/strings.xml
+++ b/packages/Shell/res/values-sw/strings.xml
@@ -29,8 +29,7 @@
     <string name="bugreport_confirm_dont_repeat" msgid="6179945398364357318">"Usionyeshe tena"</string>
     <string name="bugreport_storage_title" msgid="5332488144740527109">"Ripoti za hitilafu"</string>
     <string name="bugreport_unreadable_text" msgid="586517851044535486">"Faili ya ripoti ya hitilafu haikusomwa"</string>
-    <!-- no translation found for bugreport_add_details_to_zip_failed (1302931926486712371) -->
-    <skip />
+    <string name="bugreport_add_details_to_zip_failed" msgid="1302931926486712371">"Imeshindwa kuongeza maelezo kuhusu ripoti ya hitilafu kwenye faili ya ZIP"</string>
     <string name="bugreport_unnamed" msgid="2800582406842092709">"Isiyo na jina"</string>
     <string name="bugreport_info_action" msgid="2158204228510576227">"Maelezo"</string>
     <string name="bugreport_screenshot_action" msgid="8677781721940614995">"Picha ya skrini"</string>
diff --git a/packages/Shell/res/values-ta-rIN/strings.xml b/packages/Shell/res/values-ta-rIN/strings.xml
index bc45e9e..bd727ea 100644
--- a/packages/Shell/res/values-ta-rIN/strings.xml
+++ b/packages/Shell/res/values-ta-rIN/strings.xml
@@ -29,8 +29,7 @@
     <string name="bugreport_confirm_dont_repeat" msgid="6179945398364357318">"மீண்டும் காட்டாதே"</string>
     <string name="bugreport_storage_title" msgid="5332488144740527109">"பிழை அறிக்கைகள்"</string>
     <string name="bugreport_unreadable_text" msgid="586517851044535486">"பிழை அறிக்கையைப் படிக்க முடியவில்லை"</string>
-    <!-- no translation found for bugreport_add_details_to_zip_failed (1302931926486712371) -->
-    <skip />
+    <string name="bugreport_add_details_to_zip_failed" msgid="1302931926486712371">"பிழை அறிக்கை விவரங்களை ஜிப் கோப்பில் சேர்க்க முடியவில்லை"</string>
     <string name="bugreport_unnamed" msgid="2800582406842092709">"பெயரிடப்படாதது"</string>
     <string name="bugreport_info_action" msgid="2158204228510576227">"விவரங்கள்"</string>
     <string name="bugreport_screenshot_action" msgid="8677781721940614995">"ஸ்கிரீன் ஷாட்"</string>
diff --git a/packages/Shell/res/values-te-rIN/strings.xml b/packages/Shell/res/values-te-rIN/strings.xml
index 39e39c7..a6beb3c 100644
--- a/packages/Shell/res/values-te-rIN/strings.xml
+++ b/packages/Shell/res/values-te-rIN/strings.xml
@@ -29,8 +29,7 @@
     <string name="bugreport_confirm_dont_repeat" msgid="6179945398364357318">"మళ్లీ చూపవద్దు"</string>
     <string name="bugreport_storage_title" msgid="5332488144740527109">"బగ్ నివేదికలు"</string>
     <string name="bugreport_unreadable_text" msgid="586517851044535486">"బగ్ నివేదిక ఫైల్‌ను చదవడం సాధ్యపడలేదు"</string>
-    <!-- no translation found for bugreport_add_details_to_zip_failed (1302931926486712371) -->
-    <skip />
+    <string name="bugreport_add_details_to_zip_failed" msgid="1302931926486712371">"బగ్ నివేదిక వివరాలను జిప్ ఫైల్‌కు జోడించడం సాధ్యపడలేదు"</string>
     <string name="bugreport_unnamed" msgid="2800582406842092709">"పేరు లేనివి"</string>
     <string name="bugreport_info_action" msgid="2158204228510576227">"వివరాలు"</string>
     <string name="bugreport_screenshot_action" msgid="8677781721940614995">"స్క్రీన్‌షాట్"</string>
diff --git a/packages/Shell/res/values-tl/strings.xml b/packages/Shell/res/values-tl/strings.xml
index 08d724f..fc556e1 100644
--- a/packages/Shell/res/values-tl/strings.xml
+++ b/packages/Shell/res/values-tl/strings.xml
@@ -29,8 +29,7 @@
     <string name="bugreport_confirm_dont_repeat" msgid="6179945398364357318">"Huwag nang ipakitang muli"</string>
     <string name="bugreport_storage_title" msgid="5332488144740527109">"Mga ulat sa bug"</string>
     <string name="bugreport_unreadable_text" msgid="586517851044535486">"Hindi mabasa ang file ng pag-uulat ng bug"</string>
-    <!-- no translation found for bugreport_add_details_to_zip_failed (1302931926486712371) -->
-    <skip />
+    <string name="bugreport_add_details_to_zip_failed" msgid="1302931926486712371">"Hindi makapagdagdag ng mga detalye ng ulat ng bug sa zip file"</string>
     <string name="bugreport_unnamed" msgid="2800582406842092709">"walang pangalan"</string>
     <string name="bugreport_info_action" msgid="2158204228510576227">"Mga Detalye"</string>
     <string name="bugreport_screenshot_action" msgid="8677781721940614995">"Screenshot"</string>
diff --git a/packages/Shell/res/values-tr/strings.xml b/packages/Shell/res/values-tr/strings.xml
index cc8cf2b..f2b02c3 100644
--- a/packages/Shell/res/values-tr/strings.xml
+++ b/packages/Shell/res/values-tr/strings.xml
@@ -29,8 +29,7 @@
     <string name="bugreport_confirm_dont_repeat" msgid="6179945398364357318">"Bir daha gösterme"</string>
     <string name="bugreport_storage_title" msgid="5332488144740527109">"Hata raporları"</string>
     <string name="bugreport_unreadable_text" msgid="586517851044535486">"Hata raporu dosyası okunamadı"</string>
-    <!-- no translation found for bugreport_add_details_to_zip_failed (1302931926486712371) -->
-    <skip />
+    <string name="bugreport_add_details_to_zip_failed" msgid="1302931926486712371">"Hata raporu ayrıntıları zip dosyasına eklenemedi"</string>
     <string name="bugreport_unnamed" msgid="2800582406842092709">"adsız"</string>
     <string name="bugreport_info_action" msgid="2158204228510576227">"Ayrıntılar"</string>
     <string name="bugreport_screenshot_action" msgid="8677781721940614995">"Ekran görüntüsü"</string>
diff --git a/packages/Shell/res/values-uk/strings.xml b/packages/Shell/res/values-uk/strings.xml
index 2beb174..919a2b5 100644
--- a/packages/Shell/res/values-uk/strings.xml
+++ b/packages/Shell/res/values-uk/strings.xml
@@ -29,8 +29,7 @@
     <string name="bugreport_confirm_dont_repeat" msgid="6179945398364357318">"Більше не показувати"</string>
     <string name="bugreport_storage_title" msgid="5332488144740527109">"Звіти про помилки"</string>
     <string name="bugreport_unreadable_text" msgid="586517851044535486">"Не вдалося прочитати звіт про помилки"</string>
-    <!-- no translation found for bugreport_add_details_to_zip_failed (1302931926486712371) -->
-    <skip />
+    <string name="bugreport_add_details_to_zip_failed" msgid="1302931926486712371">"Не вдалося додати деталі повідомлення про помилку у файл .zip"</string>
     <string name="bugreport_unnamed" msgid="2800582406842092709">"без назви"</string>
     <string name="bugreport_info_action" msgid="2158204228510576227">"Деталі"</string>
     <string name="bugreport_screenshot_action" msgid="8677781721940614995">"Знімок екрана"</string>
diff --git a/packages/Shell/res/values-ur-rPK/strings.xml b/packages/Shell/res/values-ur-rPK/strings.xml
index ee57ec1..d97a693 100644
--- a/packages/Shell/res/values-ur-rPK/strings.xml
+++ b/packages/Shell/res/values-ur-rPK/strings.xml
@@ -29,8 +29,7 @@
     <string name="bugreport_confirm_dont_repeat" msgid="6179945398364357318">"دوبارہ نہ دکھائیں"</string>
     <string name="bugreport_storage_title" msgid="5332488144740527109">"بگ رپورٹس"</string>
     <string name="bugreport_unreadable_text" msgid="586517851044535486">"بگ رپورٹ فائل پڑھی نہیں جا سکی"</string>
-    <!-- no translation found for bugreport_add_details_to_zip_failed (1302931926486712371) -->
-    <skip />
+    <string name="bugreport_add_details_to_zip_failed" msgid="1302931926486712371">"بگ رپورٹ کی تفصیلات زپ فائل میں شامل نہیں ہو سکیں"</string>
     <string name="bugreport_unnamed" msgid="2800582406842092709">"بغیر نام"</string>
     <string name="bugreport_info_action" msgid="2158204228510576227">"تفصیلات"</string>
     <string name="bugreport_screenshot_action" msgid="8677781721940614995">"اسکرین شاٹ"</string>
diff --git a/packages/Shell/res/values-uz-rUZ/strings.xml b/packages/Shell/res/values-uz-rUZ/strings.xml
index cd016b5..605fc12 100644
--- a/packages/Shell/res/values-uz-rUZ/strings.xml
+++ b/packages/Shell/res/values-uz-rUZ/strings.xml
@@ -29,8 +29,7 @@
     <string name="bugreport_confirm_dont_repeat" msgid="6179945398364357318">"Boshqa ko‘rsatilmasin"</string>
     <string name="bugreport_storage_title" msgid="5332488144740527109">"Xatoliklar hisoboti"</string>
     <string name="bugreport_unreadable_text" msgid="586517851044535486">"Xatoliklar hisoboti faylini o‘qib bo‘lmadi"</string>
-    <!-- no translation found for bugreport_add_details_to_zip_failed (1302931926486712371) -->
-    <skip />
+    <string name="bugreport_add_details_to_zip_failed" msgid="1302931926486712371">"Zip faylga xatoliklar hisoboti tafsilotlarini qo‘shib bo‘lmadi"</string>
     <string name="bugreport_unnamed" msgid="2800582406842092709">"nomsiz"</string>
     <string name="bugreport_info_action" msgid="2158204228510576227">"Tafsilotlar"</string>
     <string name="bugreport_screenshot_action" msgid="8677781721940614995">"Skrinshot"</string>
diff --git a/packages/Shell/res/values-vi/strings.xml b/packages/Shell/res/values-vi/strings.xml
index 5026b37..e9b5a9d 100644
--- a/packages/Shell/res/values-vi/strings.xml
+++ b/packages/Shell/res/values-vi/strings.xml
@@ -29,8 +29,7 @@
     <string name="bugreport_confirm_dont_repeat" msgid="6179945398364357318">"Không hiển thị lại"</string>
     <string name="bugreport_storage_title" msgid="5332488144740527109">"Báo cáo lỗi"</string>
     <string name="bugreport_unreadable_text" msgid="586517851044535486">"Không thể đọc tệp báo cáo lỗi"</string>
-    <!-- no translation found for bugreport_add_details_to_zip_failed (1302931926486712371) -->
-    <skip />
+    <string name="bugreport_add_details_to_zip_failed" msgid="1302931926486712371">"Không thể thêm chi tiết báo cáo lỗi vào tệp zip"</string>
     <string name="bugreport_unnamed" msgid="2800582406842092709">"chưa được đặt tên"</string>
     <string name="bugreport_info_action" msgid="2158204228510576227">"Chi tiết"</string>
     <string name="bugreport_screenshot_action" msgid="8677781721940614995">"Ảnh chụp màn hình"</string>
diff --git a/packages/Shell/res/values-zh-rCN/strings.xml b/packages/Shell/res/values-zh-rCN/strings.xml
index 0e539cb..ce10d56 100644
--- a/packages/Shell/res/values-zh-rCN/strings.xml
+++ b/packages/Shell/res/values-zh-rCN/strings.xml
@@ -29,8 +29,7 @@
     <string name="bugreport_confirm_dont_repeat" msgid="6179945398364357318">"不再显示"</string>
     <string name="bugreport_storage_title" msgid="5332488144740527109">"错误报告"</string>
     <string name="bugreport_unreadable_text" msgid="586517851044535486">"无法读取错误报告文件"</string>
-    <!-- no translation found for bugreport_add_details_to_zip_failed (1302931926486712371) -->
-    <skip />
+    <string name="bugreport_add_details_to_zip_failed" msgid="1302931926486712371">"无法将错误报告详细信息添加到 ZIP 文件中"</string>
     <string name="bugreport_unnamed" msgid="2800582406842092709">"未命名"</string>
     <string name="bugreport_info_action" msgid="2158204228510576227">"详细信息"</string>
     <string name="bugreport_screenshot_action" msgid="8677781721940614995">"屏幕截图"</string>
diff --git a/packages/Shell/res/values-zh-rHK/strings.xml b/packages/Shell/res/values-zh-rHK/strings.xml
index abe9b2a..8433d22 100644
--- a/packages/Shell/res/values-zh-rHK/strings.xml
+++ b/packages/Shell/res/values-zh-rHK/strings.xml
@@ -29,7 +29,7 @@
     <string name="bugreport_confirm_dont_repeat" msgid="6179945398364357318">"不要再顯示"</string>
     <string name="bugreport_storage_title" msgid="5332488144740527109">"錯誤報告"</string>
     <string name="bugreport_unreadable_text" msgid="586517851044535486">"無法讀取錯誤報告檔案"</string>
-    <string name="bugreport_add_details_to_zip_failed" msgid="1302931926486712371">"無法在 ZIP 檔案中加入錯誤報告"</string>
+    <string name="bugreport_add_details_to_zip_failed" msgid="1302931926486712371">"無法將錯誤報告詳細資料加入 ZIP 檔案"</string>
     <string name="bugreport_unnamed" msgid="2800582406842092709">"未命名"</string>
     <string name="bugreport_info_action" msgid="2158204228510576227">"詳細資訊"</string>
     <string name="bugreport_screenshot_action" msgid="8677781721940614995">"螢幕擷取畫面"</string>
diff --git a/packages/Shell/res/values-zu/strings.xml b/packages/Shell/res/values-zu/strings.xml
index e955f61..a12a2b7 100644
--- a/packages/Shell/res/values-zu/strings.xml
+++ b/packages/Shell/res/values-zu/strings.xml
@@ -29,8 +29,7 @@
     <string name="bugreport_confirm_dont_repeat" msgid="6179945398364357318">"Ungabonisi futhi"</string>
     <string name="bugreport_storage_title" msgid="5332488144740527109">"Imibiko yeziphazamiso"</string>
     <string name="bugreport_unreadable_text" msgid="586517851044535486">"Ifayela lombiko wesiphazamso alikwazanga ukufundwa"</string>
-    <!-- no translation found for bugreport_add_details_to_zip_failed (1302931926486712371) -->
-    <skip />
+    <string name="bugreport_add_details_to_zip_failed" msgid="1302931926486712371">"Ayikwazi ukwengeza imininingwane yombiko wesiphazamisi kufayela le-zip"</string>
     <string name="bugreport_unnamed" msgid="2800582406842092709">"awunikiwe igama"</string>
     <string name="bugreport_info_action" msgid="2158204228510576227">"Imininingwane"</string>
     <string name="bugreport_screenshot_action" msgid="8677781721940614995">"Isithombe-skrini"</string>
diff --git a/packages/Shell/src/com/android/shell/BugreportStorageProvider.java b/packages/Shell/src/com/android/shell/BugreportStorageProvider.java
index 814aa8c..0f92fa6 100644
--- a/packages/Shell/src/com/android/shell/BugreportStorageProvider.java
+++ b/packages/Shell/src/com/android/shell/BugreportStorageProvider.java
@@ -25,6 +25,7 @@
 import android.provider.DocumentsContract.Document;
 import android.provider.DocumentsContract.Root;
 import android.provider.DocumentsProvider;
+import android.support.provider.DocumentArchiveHelper;
 import android.webkit.MimeTypeMap;
 
 import java.io.File;
@@ -44,10 +45,12 @@
     };
 
     private File mRoot;
+    private DocumentArchiveHelper mArchiveHelper;
 
     @Override
     public boolean onCreate() {
         mRoot = new File(getContext().getFilesDir(), "bugreports");
+        mArchiveHelper = new DocumentArchiveHelper(this, (char) 0);
         return true;
     }
 
@@ -66,6 +69,10 @@
     @Override
     public Cursor queryDocument(String documentId, String[] projection)
             throws FileNotFoundException {
+        if (mArchiveHelper.isArchivedDocument(documentId)) {
+            return mArchiveHelper.queryDocument(documentId, projection);
+        }
+
         final MatrixCursor result = new MatrixCursor(resolveDocumentProjection(projection));
         if (DOC_ID_ROOT.equals(documentId)) {
             final RowBuilder row = result.newRow();
@@ -84,6 +91,11 @@
     public Cursor queryChildDocuments(
             String parentDocumentId, String[] projection, String sortOrder)
             throws FileNotFoundException {
+        if (mArchiveHelper.isArchivedDocument(parentDocumentId) ||
+                mArchiveHelper.isSupportedArchiveType(getDocumentType(parentDocumentId))) {
+            return mArchiveHelper.queryChildDocuments(parentDocumentId, projection, sortOrder);
+        }
+
         final MatrixCursor result = new MatrixCursor(resolveDocumentProjection(projection));
         if (DOC_ID_ROOT.equals(parentDocumentId)) {
             final File[] files = mRoot.listFiles();
@@ -100,6 +112,10 @@
     public ParcelFileDescriptor openDocument(
             String documentId, String mode, CancellationSignal signal)
             throws FileNotFoundException {
+        if (mArchiveHelper.isArchivedDocument(documentId)) {
+            return mArchiveHelper.openDocument(documentId, mode, signal);
+        }
+
         if (ParcelFileDescriptor.parseMode(mode) != ParcelFileDescriptor.MODE_READ_ONLY) {
             throw new FileNotFoundException("Failed to open: " + documentId + ", mode = " + mode);
         }
@@ -153,12 +169,18 @@
     }
 
     private void addFileRow(MatrixCursor result, File file) {
+        String mimeType = getTypeForName(file.getName());
+        int flags = Document.FLAG_SUPPORTS_DELETE;
+        if (mArchiveHelper.isSupportedArchiveType(mimeType)) {
+            flags |= Document.FLAG_ARCHIVE;
+        }
+
         final RowBuilder row = result.newRow();
         row.add(Document.COLUMN_DOCUMENT_ID, getDocIdForFile(file));
-        row.add(Document.COLUMN_MIME_TYPE, getTypeForName(file.getName()));
+        row.add(Document.COLUMN_MIME_TYPE, mimeType);
         row.add(Document.COLUMN_DISPLAY_NAME, file.getName());
         row.add(Document.COLUMN_LAST_MODIFIED, file.lastModified());
-        row.add(Document.COLUMN_FLAGS, Document.FLAG_SUPPORTS_DELETE);
+        row.add(Document.COLUMN_FLAGS, flags);
         row.add(Document.COLUMN_SIZE, file.length());
     }
 }
diff --git a/packages/Shell/src/com/android/shell/BugreportWarningActivity.java b/packages/Shell/src/com/android/shell/BugreportWarningActivity.java
index da33a65..2426ba0 100644
--- a/packages/Shell/src/com/android/shell/BugreportWarningActivity.java
+++ b/packages/Shell/src/com/android/shell/BugreportWarningActivity.java
@@ -25,6 +25,7 @@
 import android.app.AlertDialog;
 import android.content.DialogInterface;
 import android.content.Intent;
+import android.os.Build;
 import android.os.Bundle;
 import android.view.LayoutInflater;
 import android.widget.CheckBox;
@@ -59,7 +60,15 @@
         ap.mNegativeButtonListener = this;
 
         mConfirmRepeat = (CheckBox) ap.mView.findViewById(android.R.id.checkbox);
-        mConfirmRepeat.setChecked(getWarningState(this, STATE_UNKNOWN) != STATE_SHOW);
+
+        final int state = getWarningState(this, STATE_UNKNOWN);
+        final boolean checked;
+        if (Build.TYPE.equals("user")) {
+            checked = state == STATE_HIDE; // Only checks if specifically set to.
+        } else {
+            checked = state != STATE_SHOW; // Checks by default.
+        }
+        mConfirmRepeat.setChecked(checked);
 
         setupAlert();
     }
diff --git a/packages/Shell/tests/src/com/android/shell/BugreportReceiverTest.java b/packages/Shell/tests/src/com/android/shell/BugreportReceiverTest.java
index 07c1546..44e956a 100644
--- a/packages/Shell/tests/src/com/android/shell/BugreportReceiverTest.java
+++ b/packages/Shell/tests/src/com/android/shell/BugreportReceiverTest.java
@@ -63,6 +63,7 @@
 import android.content.Context;
 import android.content.Intent;
 import android.net.Uri;
+import android.os.Build;
 import android.os.Bundle;
 import android.os.SystemProperties;
 import android.service.notification.StatusBarNotification;
@@ -517,7 +518,14 @@
                 mUiBot.getVisibleObject(mContext.getString(R.string.bugreport_confirm_dont_repeat));
         final boolean firstTime = propertyState == null || propertyState == STATE_UNKNOWN;
         if (firstTime) {
-            assertTrue("Checkbox should be checked by default", dontShowAgain.isChecked());
+            if (Build.TYPE.equals("user")) {
+                assertFalse("Checkbox should NOT be checked by default on user builds",
+                        dontShowAgain.isChecked());
+                mUiBot.click(dontShowAgain, "dont-show-again");
+            } else {
+                assertTrue("Checkbox should be checked by default on build type " + Build.TYPE,
+                        dontShowAgain.isChecked());
+            }
         } else {
             assertFalse("Checkbox should not be checked", dontShowAgain.isChecked());
             mUiBot.click(dontShowAgain, "dont-show-again");
diff --git a/packages/SystemUI/res/anim/tv_pip_controls_buttons_in_recents_focus_gain_animation.xml b/packages/SystemUI/res/anim/tv_pip_controls_buttons_in_recents_focus_gain_animation.xml
deleted file mode 100644
index ebc6a4a7..0000000
--- a/packages/SystemUI/res/anim/tv_pip_controls_buttons_in_recents_focus_gain_animation.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2016 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<set xmlns:android="http://schemas.android.com/apk/res/android">
-
-    <objectAnimator
-        android:propertyName="scaleX"
-        android:valueTo="1.0"
-        android:interpolator="@android:interpolator/fast_out_slow_in"
-        android:duration="@integer/recents_tv_pip_focus_anim_duration" />
-    <objectAnimator
-        android:propertyName="scaleY"
-        android:valueTo="1.0"
-        android:interpolator="@android:interpolator/fast_out_slow_in"
-        android:duration="@integer/recents_tv_pip_focus_anim_duration" />
-</set>
diff --git a/packages/SystemUI/res/anim/tv_pip_controls_buttons_in_recents_focus_lose_animation.xml b/packages/SystemUI/res/anim/tv_pip_controls_buttons_in_recents_focus_lose_animation.xml
deleted file mode 100644
index 95499bd..0000000
--- a/packages/SystemUI/res/anim/tv_pip_controls_buttons_in_recents_focus_lose_animation.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2016 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<set xmlns:android="http://schemas.android.com/apk/res/android">
-
-    <objectAnimator
-        android:propertyName="scaleX"
-        android:valueTo="0.7"
-        android:interpolator="@android:interpolator/fast_out_slow_in"
-        android:duration="@integer/recents_tv_pip_focus_anim_duration" />
-    <objectAnimator
-        android:propertyName="scaleY"
-        android:valueTo="0.7"
-        android:interpolator="@android:interpolator/fast_out_slow_in"
-        android:duration="@integer/recents_tv_pip_focus_anim_duration" />
-</set>
diff --git a/packages/SystemUI/res/anim/tv_pip_controls_in_recents_focus_gain_animation.xml b/packages/SystemUI/res/anim/tv_pip_controls_in_recents_focus_gain_animation.xml
index 7555bdd..52e3a04 100644
--- a/packages/SystemUI/res/anim/tv_pip_controls_in_recents_focus_gain_animation.xml
+++ b/packages/SystemUI/res/anim/tv_pip_controls_in_recents_focus_gain_animation.xml
@@ -14,8 +14,21 @@
      limitations under the License.
 -->
 
-<objectAnimator xmlns:android="http://schemas.android.com/apk/res/android"
-    android:propertyName="translationY"
-    android:valueTo="0dp"
-    android:interpolator="@android:interpolator/fast_out_slow_in"
-    android:duration="@integer/recents_tv_pip_focus_anim_duration" />
+<set xmlns:android="http://schemas.android.com/apk/res/android">
+
+    <objectAnimator
+        android:propertyName="translationY"
+        android:valueTo="0dp"
+        android:interpolator="@android:interpolator/fast_out_slow_in"
+        android:duration="@integer/recents_tv_pip_focus_anim_duration" />
+    <objectAnimator
+        android:propertyName="scaleX"
+        android:valueTo="1.0"
+        android:interpolator="@android:interpolator/fast_out_slow_in"
+        android:duration="@integer/recents_tv_pip_focus_anim_duration" />
+    <objectAnimator
+        android:propertyName="scaleY"
+        android:valueTo="1.0"
+        android:interpolator="@android:interpolator/fast_out_slow_in"
+        android:duration="@integer/recents_tv_pip_focus_anim_duration" />
+</set>
diff --git a/packages/SystemUI/res/anim/tv_pip_controls_in_recents_focus_lose_animation.xml b/packages/SystemUI/res/anim/tv_pip_controls_in_recents_focus_lose_animation.xml
index b40ccd4..b571aa5 100644
--- a/packages/SystemUI/res/anim/tv_pip_controls_in_recents_focus_lose_animation.xml
+++ b/packages/SystemUI/res/anim/tv_pip_controls_in_recents_focus_lose_animation.xml
@@ -14,8 +14,21 @@
      limitations under the License.
 -->
 
-<objectAnimator xmlns:android="http://schemas.android.com/apk/res/android"
-    android:propertyName="translationY"
-    android:valueTo="-57dp"
-    android:interpolator="@android:interpolator/fast_out_slow_in"
-    android:duration="@integer/recents_tv_pip_focus_anim_duration" />
+<set xmlns:android="http://schemas.android.com/apk/res/android">
+
+    <objectAnimator
+        android:propertyName="translationY"
+        android:valueTo="-57dp"
+        android:interpolator="@android:interpolator/fast_out_slow_in"
+        android:duration="@integer/recents_tv_pip_focus_anim_duration" />
+    <objectAnimator
+        android:propertyName="scaleX"
+        android:valueTo="0.7"
+        android:interpolator="@android:interpolator/fast_out_slow_in"
+        android:duration="@integer/recents_tv_pip_focus_anim_duration" />
+    <objectAnimator
+        android:propertyName="scaleY"
+        android:valueTo="0.7"
+        android:interpolator="@android:interpolator/fast_out_slow_in"
+        android:duration="@integer/recents_tv_pip_focus_anim_duration" />
+</set>
diff --git a/packages/DocumentsUI/res/values-night/colors.xml b/packages/SystemUI/res/anim/tv_pip_controls_in_recents_scrim_fade_in_animation.xml
similarity index 67%
rename from packages/DocumentsUI/res/values-night/colors.xml
rename to packages/SystemUI/res/anim/tv_pip_controls_in_recents_scrim_fade_in_animation.xml
index f77017d..257bf35 100644
--- a/packages/DocumentsUI/res/values-night/colors.xml
+++ b/packages/SystemUI/res/anim/tv_pip_controls_in_recents_scrim_fade_in_animation.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2015 The Android Open Source Project
+<!-- Copyright (C) 2016 The Android Open Source Project
 
      Licensed under the Apache License, Version 2.0 (the "License");
      you may not use this file except in compliance with the License.
@@ -14,7 +14,8 @@
      limitations under the License.
 -->
 
-<resources>
-    <color name="directory_background">#ff111111</color>
-    <color name="item_doc_grid_protect_background">#88ffffff</color>
-</resources>
+<objectAnimator xmlns:android="http://schemas.android.com/apk/res/android"
+    android:propertyName="alpha"
+    android:valueTo="1"
+    android:interpolator="@android:interpolator/fast_out_slow_in"
+    android:duration="100" />
diff --git a/packages/SystemUI/res/color/remote_input_text.xml b/packages/SystemUI/res/color/remote_input_text.xml
index 11ce0b7..8e18e16 100644
--- a/packages/SystemUI/res/color/remote_input_text.xml
+++ b/packages/SystemUI/res/color/remote_input_text.xml
@@ -16,6 +16,6 @@
   -->
 
 <selector xmlns:android="http://schemas.android.com/apk/res/android">
-    <item android:state_enabled="true" android:color="@android:color/white" />
+    <item android:state_enabled="true" android:color="@color/remote_input_text_enabled" /> <!-- white -->
     <item android:color="#99ffffff" /> <!-- 60% white -->
 </selector>
\ No newline at end of file
diff --git a/packages/DocumentsUI/res/values-night/colors.xml b/packages/SystemUI/res/drawable/tv_pip_recents_overlay_scrim.xml
similarity index 66%
copy from packages/DocumentsUI/res/values-night/colors.xml
copy to packages/SystemUI/res/drawable/tv_pip_recents_overlay_scrim.xml
index f77017d..57bee75 100644
--- a/packages/DocumentsUI/res/values-night/colors.xml
+++ b/packages/SystemUI/res/drawable/tv_pip_recents_overlay_scrim.xml
@@ -1,5 +1,5 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2015 The Android Open Source Project
+<!--
+     Copyright (C) 2016 The Android Open Source Project
 
      Licensed under the Apache License, Version 2.0 (the "License");
      you may not use this file except in compliance with the License.
@@ -13,8 +13,11 @@
      See the License for the specific language governing permissions and
      limitations under the License.
 -->
+<shape xmlns:android="http://schemas.android.com/apk/res/android"
+    android:shape="rectangle">
 
-<resources>
-    <color name="directory_background">#ff111111</color>
-    <color name="item_doc_grid_protect_background">#88ffffff</color>
-</resources>
+    <gradient
+        android:startColor="#80000000"
+        android:endColor="#00000000"
+        android:angle="90"/>
+</shape>
diff --git a/packages/SystemUI/res/layout/notification_guts.xml b/packages/SystemUI/res/layout/notification_guts.xml
index f60a3b6..4d72cc8 100644
--- a/packages/SystemUI/res/layout/notification_guts.xml
+++ b/packages/SystemUI/res/layout/notification_guts.xml
@@ -69,7 +69,7 @@
         <RadioButton
                 android:id="@+id/silent_importance"
                 android:layout_width="wrap_content"
-                android:layout_height="48dp"
+                android:layout_height="40dp"
                 android:paddingStart="32dp"
                 android:text="@string/show_silently"
                 style="@style/TextAppearance.NotificationGuts.Radio"
@@ -77,7 +77,7 @@
         <RadioButton
                 android:id="@+id/block_importance"
                 android:layout_width="wrap_content"
-                android:layout_height="48dp"
+                android:layout_height="40dp"
                 android:paddingStart="32dp"
                 android:text="@string/block"
                 style="@style/TextAppearance.NotificationGuts.Radio"
@@ -85,7 +85,7 @@
         <RadioButton
                 android:id="@+id/reset_importance"
                 android:layout_width="wrap_content"
-                android:layout_height="48dp"
+                android:layout_height="40dp"
                 android:paddingStart="32dp"
                 style="@style/TextAppearance.NotificationGuts.Radio"
                 android:buttonTint="@color/notification_guts_buttons" />
diff --git a/packages/SystemUI/res/layout/tv_pip_recents_overlay.xml b/packages/SystemUI/res/layout/tv_pip_recents_overlay.xml
index 4a67000..557bbe6 100644
--- a/packages/SystemUI/res/layout/tv_pip_recents_overlay.xml
+++ b/packages/SystemUI/res/layout/tv_pip_recents_overlay.xml
@@ -16,14 +16,31 @@
 <LinearLayout
     xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="match_parent"
-    android:layout_height="match_parent"
-    android:orientation="vertical"
-    android:gravity="top|center_horizontal">
+    android:layout_height="wrap_content"
+    android:gravity="top|center_horizontal"
+    android:orientation="vertical">
 
     <com.android.systemui.tv.pip.PipRecentsControlsView
         android:id="@+id/pip_controls"
         android:layout_width="wrap_content"
-        android:layout_height="wrap_content" />
+        android:layout_height="wrap_content"
+        android:layout_gravity="center_horizontal"
+        android:clipToPadding="false">
+
+        <View
+            android:id="@+id/scrim"
+            android:layout_width="160dp"
+            android:layout_height="32dp"
+            android:translationY="-46dp"
+            android:layout_gravity="top|center_horizontal"
+            android:background="@drawable/tv_pip_recents_overlay_scrim" />
+        <com.android.systemui.tv.pip.PipControlsView
+            android:id="@+id/pip_control_contents"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_marginTop="10dp"
+            android:layout_gravity="top|center_horizontal" />
+    </com.android.systemui.tv.pip.PipRecentsControlsView>
 
     <View
         android:id="@+id/recents"
diff --git a/packages/SystemUI/res/layout/volume_dialog_row.xml b/packages/SystemUI/res/layout/volume_dialog_row.xml
index f0ae1c9..be05a3a 100644
--- a/packages/SystemUI/res/layout/volume_dialog_row.xml
+++ b/packages/SystemUI/res/layout/volume_dialog_row.xml
@@ -18,6 +18,7 @@
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
     android:clipChildren="false"
+    android:clipToPadding="false"
     android:id="@+id/volume_dialog_row"
     android:paddingEnd="@dimen/volume_button_size" >
 
diff --git a/packages/SystemUI/res/values-af/strings.xml b/packages/SystemUI/res/values-af/strings.xml
index 25ef7be..9c5c9ec 100644
--- a/packages/SystemUI/res/values-af/strings.xml
+++ b/packages/SystemUI/res/values-af/strings.xml
@@ -71,7 +71,7 @@
     <string name="screenshot_saving_title" msgid="8242282144535555697">"Stoor tans skermkiekie..."</string>
     <string name="screenshot_saving_text" msgid="2419718443411738818">"Skermkiekie word tans gestoor."</string>
     <string name="screenshot_saved_title" msgid="6461865960961414961">"Skermkiekie geneem."</string>
-    <string name="screenshot_saved_text" msgid="1152839647677558815">"Raak om jou skermkiekie te sien."</string>
+    <string name="screenshot_saved_text" msgid="2685605830386712477">"Tik om jou skermkiekie te sien."</string>
     <string name="screenshot_failed_title" msgid="705781116746922771">"Kon nie skermkiekie neem nie."</string>
     <string name="screenshot_failed_to_save_unknown_text" msgid="7887826345701753830">"Kon nie skermkiekie stoor nie."</string>
     <string name="screenshot_failed_to_save_text" msgid="2592658083866306296">"Kan weens beperkte bergingspasie nie skermkiekie stoor nie."</string>
@@ -118,8 +118,7 @@
     <string name="accessibility_data_signal_full" msgid="2708384608124519369">"Datasein vol."</string>
     <string name="accessibility_wifi_name" msgid="7202151365171148501">"Gekoppel aan <xliff:g id="WIFI">%s</xliff:g>."</string>
     <string name="accessibility_bluetooth_name" msgid="8441517146585531676">"Gekoppel aan <xliff:g id="BLUETOOTH">%s</xliff:g>."</string>
-    <!-- no translation found for accessibility_cast_name (4026393061247081201) -->
-    <skip />
+    <string name="accessibility_cast_name" msgid="4026393061247081201">"Gekoppel aan <xliff:g id="CAST">%s</xliff:g>."</string>
     <string name="accessibility_no_wimax" msgid="4329180129727630368">"Geen WiMAX nie."</string>
     <string name="accessibility_wimax_one_bar" msgid="4170994299011863648">"WiMAX een strepie."</string>
     <string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"WiMAX twee strepies."</string>
@@ -150,17 +149,14 @@
     <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"EDGE"</string>
     <string name="accessibility_data_connection_wifi" msgid="2324496756590645221">"Wi-Fi"</string>
     <string name="accessibility_no_sim" msgid="8274017118472455155">"Geen SIM nie."</string>
-    <!-- no translation found for accessibility_cell_data (7080312242791850520) -->
-    <skip />
-    <!-- no translation found for accessibility_cell_data_on (4310018593519761767) -->
-    <skip />
+    <string name="accessibility_cell_data" msgid="7080312242791850520">"Sellulêre data"</string>
+    <string name="accessibility_cell_data_on" msgid="4310018593519761767">"Sellulêre data is aan"</string>
     <string name="accessibility_cell_data_off" msgid="8000803571751407635">"Sellulêre data is af"</string>
     <string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"Bluetooth-verbinding."</string>
     <string name="accessibility_airplane_mode" msgid="834748999790763092">"Vliegtuigmodus."</string>
     <string name="accessibility_no_sims" msgid="3957997018324995781">"Geen SIM-kaart nie."</string>
     <string name="accessibility_carrier_network_change_mode" msgid="4017301580441304305">"Diensverskaffernetwerk verander tans."</string>
-    <!-- no translation found for accessibility_battery_details (7645516654955025422) -->
-    <skip />
+    <string name="accessibility_battery_details" msgid="7645516654955025422">"Maak batterybesonderhede oop"</string>
     <string name="accessibility_battery_level" msgid="7451474187113371965">"Battery <xliff:g id="NUMBER">%d</xliff:g> persent."</string>
     <string name="accessibility_battery_level_charging" msgid="1147587904439319646">"Battery laai tans, <xliff:g id="BATTERY_PERCENTAGE">%d</xliff:g> persent."</string>
     <string name="accessibility_settings_button" msgid="799583911231893380">"Stelselinstellings"</string>
@@ -200,13 +196,11 @@
     <string name="accessibility_quick_settings_dnd_priority_on" msgid="1448402297221249355">"Moenie steur nie aan, net prioriteit."</string>
     <string name="accessibility_quick_settings_dnd_none_on" msgid="6882582132662613537">"Moenie steur nie; volkome stilte."</string>
     <string name="accessibility_quick_settings_dnd_alarms_on" msgid="9152834845587554157">"\'Moenie steur nie\' is aan, net wekkers."</string>
-    <!-- no translation found for accessibility_quick_settings_dnd (6607873236717185815) -->
-    <skip />
+    <string name="accessibility_quick_settings_dnd" msgid="6607873236717185815">"Moenie steur nie."</string>
     <string name="accessibility_quick_settings_dnd_off" msgid="2371832603753738581">"Moenie steur nie af."</string>
     <string name="accessibility_quick_settings_dnd_changed_off" msgid="898107593453022935">"Moenie steur nie is afgeskakel."</string>
     <string name="accessibility_quick_settings_dnd_changed_on" msgid="4483780856613561039">"Moenie steur nie is aangeskakel."</string>
-    <!-- no translation found for accessibility_quick_settings_bluetooth (6341675755803320038) -->
-    <skip />
+    <string name="accessibility_quick_settings_bluetooth" msgid="6341675755803320038">"Bluetooth."</string>
     <string name="accessibility_quick_settings_bluetooth_off" msgid="2133631372372064339">"Bluetooth af."</string>
     <string name="accessibility_quick_settings_bluetooth_on" msgid="7681999166216621838">"Bluetooth aan."</string>
     <string name="accessibility_quick_settings_bluetooth_connecting" msgid="6953242966685343855">"Bluetooth koppel tans."</string>
@@ -272,10 +266,8 @@
     <string name="quick_settings_bluetooth_detail_empty_text" msgid="4910015762433302860">"Geen saamgebinde toestelle beskikbaar nie"</string>
     <string name="quick_settings_brightness_label" msgid="6968372297018755815">"Helderheid"</string>
     <string name="quick_settings_rotation_unlocked_label" msgid="7305323031808150099">"Outo-draai"</string>
-    <!-- no translation found for accessibility_quick_settings_rotation (4231661040698488779) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_rotation_value (1428962304214992318) -->
-    <skip />
+    <string name="accessibility_quick_settings_rotation" msgid="4231661040698488779">"Outodraai skerm"</string>
+    <string name="accessibility_quick_settings_rotation_value" msgid="1428962304214992318">"Stel na <xliff:g id="ID_1">%s</xliff:g>"</string>
     <string name="quick_settings_rotation_locked_label" msgid="6359205706154282377">"Rotasie is gesluit"</string>
     <string name="quick_settings_rotation_locked_portrait_label" msgid="5102691921442135053">"Portret"</string>
     <string name="quick_settings_rotation_locked_landscape_label" msgid="8553157770061178719">"Landskap"</string>
@@ -294,8 +286,7 @@
     <string name="quick_settings_wifi_not_connected" msgid="7171904845345573431">"Nie gekoppel nie"</string>
     <string name="quick_settings_wifi_no_network" msgid="2221993077220856376">"Geen netwerk nie"</string>
     <string name="quick_settings_wifi_off_label" msgid="7558778100843885864">"Wi-Fi af"</string>
-    <!-- no translation found for quick_settings_wifi_on_label (7607810331387031235) -->
-    <skip />
+    <string name="quick_settings_wifi_on_label" msgid="7607810331387031235">"Wi-Fi is aan"</string>
     <string name="quick_settings_wifi_detail_empty_text" msgid="269990350383909226">"Geen Wi-Fi-netwerke beskikbaar nie"</string>
     <string name="quick_settings_cast_title" msgid="7709016546426454729">"Saai uit"</string>
     <string name="quick_settings_casting" msgid="6601710681033353316">"Saai tans uit"</string>
@@ -349,7 +340,7 @@
     <string name="zen_silence_introduction" msgid="3137882381093271568">"Dit blokkeer ALLE klanke en vibrasies, insluitend van wekkers, musiek, video\'s en speletjies af."</string>
     <string name="keyguard_more_overflow_text" msgid="9195222469041601365">"+<xliff:g id="NUMBER_OF_NOTIFICATIONS">%d</xliff:g>"</string>
     <string name="speed_bump_explanation" msgid="1288875699658819755">"Minder dringende kennisgewings hieronder"</string>
-    <string name="notification_tap_again" msgid="8524949573675922138">"Raak weer om oop te maak"</string>
+    <string name="notification_tap_again" msgid="7590196980943943842">"Tik weer om oop te maak"</string>
     <string name="keyguard_unlock" msgid="8043466894212841998">"Sleep op om te ontsluit"</string>
     <string name="phone_hint" msgid="4872890986869209950">"Swiep vanaf ikoon vir foon"</string>
     <string name="voice_hint" msgid="8939888732119726665">"Swiep vanaf ikoon vir stembystand"</string>
@@ -427,7 +418,7 @@
     <string name="accessibility_volume_expand" msgid="5946812790999244205">"Vou uit"</string>
     <string name="accessibility_volume_collapse" msgid="3609549593031810875">"Vou in"</string>
     <string name="screen_pinning_title" msgid="3273740381976175811">"Skerm is vasgespeld"</string>
-    <string name="screen_pinning_description" msgid="3577937698406151604">"Dit hou dit in sig totdat jy dit ontspeld. Raak en hou Terug om dit te ontspeld."</string>
+    <string name="screen_pinning_description" msgid="7238941806855968768">"Dit hou dit in sig totdat jy dit ontspeld. Raak en hou Terug om dit te ontspeld."</string>
     <string name="screen_pinning_positive" msgid="3783985798366751226">"Het dit"</string>
     <string name="screen_pinning_negative" msgid="3741602308343880268">"Nee, dankie"</string>
     <string name="quick_settings_reset_confirmation_title" msgid="748792586749897883">"Versteek <xliff:g id="TILE_LABEL">%1$s</xliff:g>?"</string>
@@ -437,15 +428,13 @@
     <string name="volumeui_prompt_allow" msgid="7954396902482228786">"Laat toe"</string>
     <string name="volumeui_prompt_deny" msgid="5720663643411696731">"Weier"</string>
     <string name="volumeui_notification_title" msgid="4906770126345910955">"<xliff:g id="APP_NAME">%1$s</xliff:g> is die volumedialoog"</string>
-    <string name="volumeui_notification_text" msgid="1826889705095768656">"Raak om die oorspronklike terug te stel."</string>
+    <string name="volumeui_notification_text" msgid="8819536904234337445">"Tik om die oorspronklike terug te stel."</string>
     <string name="managed_profile_foreground_toast" msgid="5421487114739245972">"Jy gebruik tans jou werkprofiel"</string>
     <string name="volume_stream_content_description_unmute" msgid="4436631538779230857">"%1$s. Tik om te ontdemp."</string>
     <string name="volume_stream_content_description_vibrate" msgid="1187944970457807498">"%1$s. Tik om op vibreer te stel. Toeganklikheidsdienste kan dalk gedemp wees."</string>
     <string name="volume_stream_content_description_mute" msgid="3625049841390467354">"%1$s. Tik om te demp. Toeganklikheidsdienste kan dalk gedemp wees."</string>
-    <!-- no translation found for volume_dialog_accessibility_shown_message (1834631467074259998) -->
-    <skip />
-    <!-- no translation found for volume_dialog_accessibility_dismissed_message (51543526013711399) -->
-    <skip />
+    <string name="volume_dialog_accessibility_shown_message" msgid="1834631467074259998">"%s volumekontroles word gewys. Swiep na bo om toe te maak."</string>
+    <string name="volume_dialog_accessibility_dismissed_message" msgid="51543526013711399">"Volumekontroles is versteek"</string>
     <string name="system_ui_tuner" msgid="708224127392452018">"Stelsel-UI-ontvanger"</string>
     <string name="show_battery_percentage" msgid="5444136600512968798">"Wys persentasie van ingebedde battery"</string>
     <string name="show_battery_percentage_summary" msgid="3215025775576786037">"Wys batteryvlakpersentasie binne die statusbalkikoon wanneer dit nie laai nie"</string>
@@ -641,27 +630,17 @@
     <string name="accessibility_qs_edit_tile_removed" msgid="8584304916627913440">"<xliff:g id="TILE_NAME">%1$s</xliff:g> is verwyder"</string>
     <string name="accessibility_qs_edit_tile_moved" msgid="4343693412689365038">"<xliff:g id="TILE_NAME">%1$s</xliff:g> is na posisie <xliff:g id="POSITION">%2$d</xliff:g> geskuif"</string>
     <string name="accessibility_desc_quick_settings_edit" msgid="8073587401747016103">"Kitsinstellingswysiger."</string>
-    <!-- no translation found for accessibility_desc_notification_icon (8352414185263916335) -->
-    <skip />
+    <string name="accessibility_desc_notification_icon" msgid="8352414185263916335">"<xliff:g id="ID_1">%1$s</xliff:g>-kennisgewing: <xliff:g id="ID_2">%2$s</xliff:g>"</string>
     <string name="dock_forced_resizable" msgid="5914261505436217520">"Program sal dalk nie met verdeelde skerm werk nie."</string>
     <string name="dock_non_resizeble_failed_to_dock_text" msgid="3871617304250207291">"Program steun nie verdeelde skerm nie."</string>
-    <!-- no translation found for accessibility_quick_settings_settings (6132460890024942157) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_expand (2375165227880477530) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_collapse (1792625797142648105) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_alarm_set (1863000242431528676) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_user (1567445362870421770) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_no_internet (31890692343084075) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_open_details (4230931801728005194) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_open_settings (7806613775728380737) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_edit (7839992848995240393) -->
-    <skip />
+    <string name="accessibility_quick_settings_settings" msgid="6132460890024942157">"Maak instellings oop."</string>
+    <string name="accessibility_quick_settings_expand" msgid="2375165227880477530">"Maak kitsinstellings oop."</string>
+    <string name="accessibility_quick_settings_collapse" msgid="1792625797142648105">"Maak kitsinstellings toe."</string>
+    <string name="accessibility_quick_settings_alarm_set" msgid="1863000242431528676">"Wekker is gestel."</string>
+    <string name="accessibility_quick_settings_user" msgid="1567445362870421770">"Aangemeld as <xliff:g id="ID_1">%s</xliff:g>"</string>
+    <string name="accessibility_quick_settings_no_internet" msgid="31890692343084075">"Geen internet nie."</string>
+    <string name="accessibility_quick_settings_open_details" msgid="4230931801728005194">"Maak besonderhede oop."</string>
+    <string name="accessibility_quick_settings_open_settings" msgid="7806613775728380737">"Maak <xliff:g id="ID_1">%s</xliff:g>-instellings oop."</string>
+    <string name="accessibility_quick_settings_edit" msgid="7839992848995240393">"Wysig volgorde van instellings."</string>
     <string name="accessibility_quick_settings_page" msgid="5032979051755200721">"Bladsy <xliff:g id="ID_1">%1$d</xliff:g> van <xliff:g id="ID_2">%2$d</xliff:g>"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-af/strings_tv.xml b/packages/SystemUI/res/values-af/strings_tv.xml
index 6509187..6b28cfd 100644
--- a/packages/SystemUI/res/values-af/strings_tv.xml
+++ b/packages/SystemUI/res/values-af/strings_tv.xml
@@ -24,10 +24,8 @@
     <string name="pip_play" msgid="674145557658227044">"Speel"</string>
     <string name="pip_pause" msgid="8412075640017218862">"Laat wag"</string>
     <string name="pip_hold_home" msgid="340086535668778109">"Hou "<b>"TUIS"</b>" om PIP te beheer"</string>
-    <!-- no translation found for pip_onboarding_title (7850436557670253991) -->
-    <skip />
-    <!-- no translation found for pip_onboarding_description (4028124563309465267) -->
-    <skip />
+    <string name="pip_onboarding_title" msgid="7850436557670253991">"Prent-in-prent"</string>
+    <string name="pip_onboarding_description" msgid="4028124563309465267">"Dit hou jou video in sig totdat jy \'n ander een speel. Druk en hou "<b>"HOME"</b>" om dit te beheer."</string>
     <string name="pip_onboarding_button" msgid="3957426748484904611">"Het dit"</string>
     <string name="recents_tv_dismiss" msgid="3555093879593377731">"Maak toe"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-am/strings.xml b/packages/SystemUI/res/values-am/strings.xml
index 9132656..4489416 100644
--- a/packages/SystemUI/res/values-am/strings.xml
+++ b/packages/SystemUI/res/values-am/strings.xml
@@ -71,7 +71,7 @@
     <string name="screenshot_saving_title" msgid="8242282144535555697">"ቅጽበታዊ ገጽ እይታ በማስቀመጥ ላይ..."</string>
     <string name="screenshot_saving_text" msgid="2419718443411738818">"ቅጽበታዊ ገጽ እይታ እየተቀመጠ ነው::"</string>
     <string name="screenshot_saved_title" msgid="6461865960961414961">"ቅጽበታዊ ገጽ እይታ ተቀርጿል"</string>
-    <string name="screenshot_saved_text" msgid="1152839647677558815">"የእርስዎን ቅጽበታዊ ገጽ እይታ ለማየት ይንኩ"</string>
+    <string name="screenshot_saved_text" msgid="2685605830386712477">"የእርስዎን ቅጽበታዊ ገጽ እይታ ለማየት መታ ያድርጉ።"</string>
     <string name="screenshot_failed_title" msgid="705781116746922771">"ቅጽበታዊ ገጽ እይታ መቅረጽ አልተቻለም::"</string>
     <string name="screenshot_failed_to_save_unknown_text" msgid="7887826345701753830">"ቅጽበታዊ ገጽ ዕይታን በማስቀመጥ ጊዜ ችግር አጋጥሟል።"</string>
     <string name="screenshot_failed_to_save_text" msgid="2592658083866306296">"ባለው የተገደበ የማከማቻ ቦታ ምክንያት ቅጽበታዊ ገጽ ዕይታን ማስቀመጥ አይችልም።"</string>
@@ -118,8 +118,7 @@
     <string name="accessibility_data_signal_full" msgid="2708384608124519369">"የውሂብ አመልካች ሙሉ ነው።"</string>
     <string name="accessibility_wifi_name" msgid="7202151365171148501">"ከ<xliff:g id="WIFI">%s</xliff:g> ጋር ተገናኝቷል።"</string>
     <string name="accessibility_bluetooth_name" msgid="8441517146585531676">"ከ<xliff:g id="BLUETOOTH">%s</xliff:g> ጋር ተገናኝቷል።"</string>
-    <!-- no translation found for accessibility_cast_name (4026393061247081201) -->
-    <skip />
+    <string name="accessibility_cast_name" msgid="4026393061247081201">"ከ<xliff:g id="CAST">%s</xliff:g> ጋር ተገናኝቷል።"</string>
     <string name="accessibility_no_wimax" msgid="4329180129727630368">"ምንም WiMAX."</string>
     <string name="accessibility_wimax_one_bar" msgid="4170994299011863648">"WiMAX አንድ አሞሌ።"</string>
     <string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"WiMAX ሁለት አሞሌዎች።"</string>
@@ -150,17 +149,14 @@
     <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string>
     <string name="accessibility_data_connection_wifi" msgid="2324496756590645221">"Wi-Fi"</string>
     <string name="accessibility_no_sim" msgid="8274017118472455155">"ምንም SIM የለም።"</string>
-    <!-- no translation found for accessibility_cell_data (7080312242791850520) -->
-    <skip />
-    <!-- no translation found for accessibility_cell_data_on (4310018593519761767) -->
-    <skip />
+    <string name="accessibility_cell_data" msgid="7080312242791850520">"የተንቀሳቃሽ ስልክ ውሂብ"</string>
+    <string name="accessibility_cell_data_on" msgid="4310018593519761767">"የተንቀሳቃሽ ስልክ ውሂብ በርቷል"</string>
     <string name="accessibility_cell_data_off" msgid="8000803571751407635">"የተንቀሳቃሽ ስልክ ውሂብ ጠፍቷል"</string>
     <string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"ብሉቱዝ ማያያዝ።"</string>
     <string name="accessibility_airplane_mode" msgid="834748999790763092">"የአውሮፕላን ሁነታ።"</string>
     <string name="accessibility_no_sims" msgid="3957997018324995781">"ምንም SIM ካርድ የለም።"</string>
     <string name="accessibility_carrier_network_change_mode" msgid="4017301580441304305">"የአገልግሎት አቅራቢ አውታረ መረብን በመቀየር ላይ።"</string>
-    <!-- no translation found for accessibility_battery_details (7645516654955025422) -->
-    <skip />
+    <string name="accessibility_battery_details" msgid="7645516654955025422">"የባትሪ ዝርዝሮችን ክፈት"</string>
     <string name="accessibility_battery_level" msgid="7451474187113371965">"የባትሪ <xliff:g id="NUMBER">%d</xliff:g> መቶኛ።"</string>
     <string name="accessibility_battery_level_charging" msgid="1147587904439319646">"ባትሪ ኃይል በመሙላት ላይ፣ <xliff:g id="BATTERY_PERCENTAGE">%d</xliff:g> በመቶ።"</string>
     <string name="accessibility_settings_button" msgid="799583911231893380">"የስርዓት ቅንብሮች"</string>
@@ -200,13 +196,11 @@
     <string name="accessibility_quick_settings_dnd_priority_on" msgid="1448402297221249355">"አትረብሽ በርቷል፣ ቅድሚያ የሚሰጠው ብቻ።"</string>
     <string name="accessibility_quick_settings_dnd_none_on" msgid="6882582132662613537">"አትረብሽ በርቷል፣ ሙሉ ለሙሉ ጸጥታ።"</string>
     <string name="accessibility_quick_settings_dnd_alarms_on" msgid="9152834845587554157">"አትረብሽ በርቷል፣ ማንቂያዎች ብቻ።"</string>
-    <!-- no translation found for accessibility_quick_settings_dnd (6607873236717185815) -->
-    <skip />
+    <string name="accessibility_quick_settings_dnd" msgid="6607873236717185815">"አትረብሽ።"</string>
     <string name="accessibility_quick_settings_dnd_off" msgid="2371832603753738581">"አትረብሽ ጠፍቷል።"</string>
     <string name="accessibility_quick_settings_dnd_changed_off" msgid="898107593453022935">"አትረብሽ ጠፍቷል።"</string>
     <string name="accessibility_quick_settings_dnd_changed_on" msgid="4483780856613561039">"አትረብሽ በርቷል።"</string>
-    <!-- no translation found for accessibility_quick_settings_bluetooth (6341675755803320038) -->
-    <skip />
+    <string name="accessibility_quick_settings_bluetooth" msgid="6341675755803320038">"ብሉቱዝ።"</string>
     <string name="accessibility_quick_settings_bluetooth_off" msgid="2133631372372064339">"ብሉቱዝ ጠፍቷል።"</string>
     <string name="accessibility_quick_settings_bluetooth_on" msgid="7681999166216621838">"ብሉቱዝ በርቷል።"</string>
     <string name="accessibility_quick_settings_bluetooth_connecting" msgid="6953242966685343855">"ብሉቱዝ በመገናኘት ላይ።"</string>
@@ -272,10 +266,8 @@
     <string name="quick_settings_bluetooth_detail_empty_text" msgid="4910015762433302860">"ምንም የተጣመሩ መሣሪያዎች አይገኝም"</string>
     <string name="quick_settings_brightness_label" msgid="6968372297018755815">"ብሩህነት"</string>
     <string name="quick_settings_rotation_unlocked_label" msgid="7305323031808150099">"በራስ ሰር አሽከርክር"</string>
-    <!-- no translation found for accessibility_quick_settings_rotation (4231661040698488779) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_rotation_value (1428962304214992318) -->
-    <skip />
+    <string name="accessibility_quick_settings_rotation" msgid="4231661040698488779">"ማያ ገጽን በራስ-አሽከርክር"</string>
+    <string name="accessibility_quick_settings_rotation_value" msgid="1428962304214992318">"ወደ <xliff:g id="ID_1">%s</xliff:g> ተቀናብሯል"</string>
     <string name="quick_settings_rotation_locked_label" msgid="6359205706154282377">"አዙሪት ተቆልፏል"</string>
     <string name="quick_settings_rotation_locked_portrait_label" msgid="5102691921442135053">"በቁመት"</string>
     <string name="quick_settings_rotation_locked_landscape_label" msgid="8553157770061178719">"በወርድ"</string>
@@ -294,8 +286,7 @@
     <string name="quick_settings_wifi_not_connected" msgid="7171904845345573431">"አልተገናኘም"</string>
     <string name="quick_settings_wifi_no_network" msgid="2221993077220856376">"ምንም አውታረ መረብ የለም"</string>
     <string name="quick_settings_wifi_off_label" msgid="7558778100843885864">"Wi-Fi ጠፍቷል"</string>
-    <!-- no translation found for quick_settings_wifi_on_label (7607810331387031235) -->
-    <skip />
+    <string name="quick_settings_wifi_on_label" msgid="7607810331387031235">"Wi-Fi በርቷል"</string>
     <string name="quick_settings_wifi_detail_empty_text" msgid="269990350383909226">"ምንም የWi-Fi  አውታረ መረቦች የሉም"</string>
     <string name="quick_settings_cast_title" msgid="7709016546426454729">"ውሰድ"</string>
     <string name="quick_settings_casting" msgid="6601710681033353316">"በመውሰድ ላይ"</string>
@@ -349,7 +340,7 @@
     <string name="zen_silence_introduction" msgid="3137882381093271568">"ይሄ ማንቂያዎችን፣ ሙዚቃን፣ ቪዲዮዎችን እና ጨዋታዎችንም ጨምሮ ሁሉንም ድምጾች እና ንዝረቶች ያጠፋል።"</string>
     <string name="keyguard_more_overflow_text" msgid="9195222469041601365">"+<xliff:g id="NUMBER_OF_NOTIFICATIONS">%d</xliff:g>"</string>
     <string name="speed_bump_explanation" msgid="1288875699658819755">"በጣም አስቸካይ ያልሆኑ ማሳወቂያዎች ከታች"</string>
-    <string name="notification_tap_again" msgid="8524949573675922138">"ለመክፈት ዳግም ይንኩ"</string>
+    <string name="notification_tap_again" msgid="7590196980943943842">"ለመክፈት ዳግም መታ ያድርጉ"</string>
     <string name="keyguard_unlock" msgid="8043466894212841998">"ለማስከፈት ወደ ላይ ያንሸራትቱ"</string>
     <string name="phone_hint" msgid="4872890986869209950">"ለስልክ ከአዶ ላይ ጠረግ ያድርጉ"</string>
     <string name="voice_hint" msgid="8939888732119726665">"ለድምጽ ረዳት ከአዶ ጠረግ ያድርጉ"</string>
@@ -427,7 +418,7 @@
     <string name="accessibility_volume_expand" msgid="5946812790999244205">"አስፋ"</string>
     <string name="accessibility_volume_collapse" msgid="3609549593031810875">"ሰብስብ"</string>
     <string name="screen_pinning_title" msgid="3273740381976175811">"ማያ ገጽ ተሰክቷል"</string>
-    <string name="screen_pinning_description" msgid="3577937698406151604">"ይህ እስከሚነቅሉት ድረስ በዕይታ ውስጥ ያቆየዋል። እንዲነቀል ለማድረግ ተመለስን ነካ አድርገው ይያዙት።"</string>
+    <string name="screen_pinning_description" msgid="7238941806855968768">"ይሄ እስኪነቅሉት ድረስ በእይታ ውስጥ ያስቀምጠዋል። ለመንቀል ተጭነው ይያዙ።"</string>
     <string name="screen_pinning_positive" msgid="3783985798366751226">"ገባኝ"</string>
     <string name="screen_pinning_negative" msgid="3741602308343880268">"አይ፣ አመሰግናለሁ"</string>
     <string name="quick_settings_reset_confirmation_title" msgid="748792586749897883">"<xliff:g id="TILE_LABEL">%1$s</xliff:g> ይደበቅ?"</string>
@@ -437,15 +428,13 @@
     <string name="volumeui_prompt_allow" msgid="7954396902482228786">"ፍቀድ"</string>
     <string name="volumeui_prompt_deny" msgid="5720663643411696731">"ከልክል"</string>
     <string name="volumeui_notification_title" msgid="4906770126345910955">"<xliff:g id="APP_NAME">%1$s</xliff:g> የድምጽ መጠን መገናኛው ነው"</string>
-    <string name="volumeui_notification_text" msgid="1826889705095768656">"የመጀመሪያውን ወደነበረበት ለመመለስ ይንኩ።"</string>
+    <string name="volumeui_notification_text" msgid="8819536904234337445">"የመጀመሪያውን ወደነበረበት ለመመለስ መታ ያድርጉ።"</string>
     <string name="managed_profile_foreground_toast" msgid="5421487114739245972">"የስራ መገለጫዎን እየተጠቀሙ ነው"</string>
     <string name="volume_stream_content_description_unmute" msgid="4436631538779230857">"%1$s። ድምጸ-ከል ለማድረግ መታ ያድርጉ"</string>
     <string name="volume_stream_content_description_vibrate" msgid="1187944970457807498">"%1$s። ወደ ንዝረት ለማቀናበር መታ ያድርጉ። የተደራሽነት አገልግሎቶች ድምጸ-ከል ሊደረግባቸው ይችላል።"</string>
     <string name="volume_stream_content_description_mute" msgid="3625049841390467354">"%1$s። ድምጸ-ከል ለማድረግ መታ ያድርጉ። የተደራሽነት አገልግሎቶች ድምጸ-ከል ሊደረግባቸው ይችላል።"</string>
-    <!-- no translation found for volume_dialog_accessibility_shown_message (1834631467074259998) -->
-    <skip />
-    <!-- no translation found for volume_dialog_accessibility_dismissed_message (51543526013711399) -->
-    <skip />
+    <string name="volume_dialog_accessibility_shown_message" msgid="1834631467074259998">"የ%s ድምጽ መቆጣጠሪያዎች ይታያሉ። ለማሰናበት ወደ ላይ ያንሸራትቱ።"</string>
+    <string name="volume_dialog_accessibility_dismissed_message" msgid="51543526013711399">"የድምጽ መቆጣጠሪያዎች ተደብቀዋል"</string>
     <string name="system_ui_tuner" msgid="708224127392452018">"የስርዓት በይነገጽ መቃኛ"</string>
     <string name="show_battery_percentage" msgid="5444136600512968798">"የተቀላቀለ የባትሪ አጠቃቀም መቶኛ አሳይ"</string>
     <string name="show_battery_percentage_summary" msgid="3215025775576786037">"ኃይል በማይሞላበት ጊዜ በሁነታ አሞሌ አዶ ውስጥ የባትሪ ደረጃ መቶኛን አሳይ"</string>
@@ -641,27 +630,17 @@
     <string name="accessibility_qs_edit_tile_removed" msgid="8584304916627913440">"<xliff:g id="TILE_NAME">%1$s</xliff:g> ተወግዷል"</string>
     <string name="accessibility_qs_edit_tile_moved" msgid="4343693412689365038">"<xliff:g id="TILE_NAME">%1$s</xliff:g> ወደ ቦታ <xliff:g id="POSITION">%2$d</xliff:g> ተወስዷል"</string>
     <string name="accessibility_desc_quick_settings_edit" msgid="8073587401747016103">"የፈጣን ቅንብሮች አርታዒ።"</string>
-    <!-- no translation found for accessibility_desc_notification_icon (8352414185263916335) -->
-    <skip />
+    <string name="accessibility_desc_notification_icon" msgid="8352414185263916335">"የ<xliff:g id="ID_1">%1$s</xliff:g> ማሳወቂያ፦ <xliff:g id="ID_2">%2$s</xliff:g>"</string>
     <string name="dock_forced_resizable" msgid="5914261505436217520">"መተግበሪያ ከተከፈለ ማያ ገጽ ጋር ላይሠራ ይችላል"</string>
     <string name="dock_non_resizeble_failed_to_dock_text" msgid="3871617304250207291">"መተግበሪያው የተከፈለ ማያ ገጽን አይደግፍም።"</string>
-    <!-- no translation found for accessibility_quick_settings_settings (6132460890024942157) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_expand (2375165227880477530) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_collapse (1792625797142648105) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_alarm_set (1863000242431528676) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_user (1567445362870421770) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_no_internet (31890692343084075) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_open_details (4230931801728005194) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_open_settings (7806613775728380737) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_edit (7839992848995240393) -->
-    <skip />
+    <string name="accessibility_quick_settings_settings" msgid="6132460890024942157">"ቅንብሮችን ክፈት።"</string>
+    <string name="accessibility_quick_settings_expand" msgid="2375165227880477530">"ፈጣን ቅንብሮችን ክፈት።"</string>
+    <string name="accessibility_quick_settings_collapse" msgid="1792625797142648105">"ፈጣን ቅንብሮችን ዝጋ።"</string>
+    <string name="accessibility_quick_settings_alarm_set" msgid="1863000242431528676">"ማንቂያ ተዘጋጅቷል።"</string>
+    <string name="accessibility_quick_settings_user" msgid="1567445362870421770">"እንደ <xliff:g id="ID_1">%s</xliff:g> ሆነው ገብተዋል"</string>
+    <string name="accessibility_quick_settings_no_internet" msgid="31890692343084075">"ምንም በይነመረብ የለም።"</string>
+    <string name="accessibility_quick_settings_open_details" msgid="4230931801728005194">"ዝርዝሮችን ክፈት።"</string>
+    <string name="accessibility_quick_settings_open_settings" msgid="7806613775728380737">"የ<xliff:g id="ID_1">%s</xliff:g> ቅንብሮችን ክፈት።"</string>
+    <string name="accessibility_quick_settings_edit" msgid="7839992848995240393">"የቅንብሮድ ቅደም-ተከተል አርትዕ።"</string>
     <string name="accessibility_quick_settings_page" msgid="5032979051755200721">"ገጽ <xliff:g id="ID_1">%1$d</xliff:g> ከ <xliff:g id="ID_2">%2$d</xliff:g>"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-am/strings_tv.xml b/packages/SystemUI/res/values-am/strings_tv.xml
index 90c7c03..c4a47e3 100644
--- a/packages/SystemUI/res/values-am/strings_tv.xml
+++ b/packages/SystemUI/res/values-am/strings_tv.xml
@@ -24,10 +24,8 @@
     <string name="pip_play" msgid="674145557658227044">"አጫውት"</string>
     <string name="pip_pause" msgid="8412075640017218862">"ለአፍታ አቁም"</string>
     <string name="pip_hold_home" msgid="340086535668778109">"PIPን ለመቆጣጠር "<b>"መነሻ"</b>"ን ይያዙ"</string>
-    <!-- no translation found for pip_onboarding_title (7850436557670253991) -->
-    <skip />
-    <!-- no translation found for pip_onboarding_description (4028124563309465267) -->
-    <skip />
+    <string name="pip_onboarding_title" msgid="7850436557670253991">"ፎቶ-በፎቶ"</string>
+    <string name="pip_onboarding_description" msgid="4028124563309465267">"ይሄ ሌላ እስኪያጫውቱ ድረስ ቪዲዮዎን በእይታ ውስጥ እንዳለ ያቆየዋል። እሱን ለመቆጣጠር "<b>"መነሻ"</b>"ን ተጭነው ይያዙት።"</string>
     <string name="pip_onboarding_button" msgid="3957426748484904611">"ገባኝ"</string>
     <string name="recents_tv_dismiss" msgid="3555093879593377731">"አሰናብት"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-ar/strings.xml b/packages/SystemUI/res/values-ar/strings.xml
index da7242a..88e3d90 100644
--- a/packages/SystemUI/res/values-ar/strings.xml
+++ b/packages/SystemUI/res/values-ar/strings.xml
@@ -75,7 +75,7 @@
     <string name="screenshot_saving_title" msgid="8242282144535555697">"جارٍ حفظ لقطة الشاشة..."</string>
     <string name="screenshot_saving_text" msgid="2419718443411738818">"يتم حفظ لقطة."</string>
     <string name="screenshot_saved_title" msgid="6461865960961414961">"تم التقاط لقطة الشاشة."</string>
-    <string name="screenshot_saved_text" msgid="1152839647677558815">"المس لعرض لقطة الشاشة."</string>
+    <string name="screenshot_saved_text" msgid="2685605830386712477">"انقر لعرض لقطة الشاشة."</string>
     <string name="screenshot_failed_title" msgid="705781116746922771">"تعذر التقاط لقطة الشاشة."</string>
     <string name="screenshot_failed_to_save_unknown_text" msgid="7887826345701753830">"حدثت مشكلة أثناء حفظ لقطة الشاشة."</string>
     <string name="screenshot_failed_to_save_text" msgid="2592658083866306296">"يتعذر حفظ لقطة الشاشة نظرًا لأن مساحة التخزين المتاحة محدودة."</string>
@@ -122,8 +122,7 @@
     <string name="accessibility_data_signal_full" msgid="2708384608124519369">"إشارة البيانات كاملة."</string>
     <string name="accessibility_wifi_name" msgid="7202151365171148501">"متصل بـ <xliff:g id="WIFI">%s</xliff:g>."</string>
     <string name="accessibility_bluetooth_name" msgid="8441517146585531676">"متصل بـ <xliff:g id="BLUETOOTH">%s</xliff:g>."</string>
-    <!-- no translation found for accessibility_cast_name (4026393061247081201) -->
-    <skip />
+    <string name="accessibility_cast_name" msgid="4026393061247081201">"تم الاتصال بـ <xliff:g id="CAST">%s</xliff:g>."</string>
     <string name="accessibility_no_wimax" msgid="4329180129727630368">"‏ليس هناك WiMAX."</string>
     <string name="accessibility_wimax_one_bar" msgid="4170994299011863648">"‏شريط WiMAX واحد."</string>
     <string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"‏شريطا WiMAX."</string>
@@ -154,17 +153,14 @@
     <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string>
     <string name="accessibility_data_connection_wifi" msgid="2324496756590645221">"Wi-Fi"</string>
     <string name="accessibility_no_sim" msgid="8274017118472455155">"‏ليست هناك شريحة SIM."</string>
-    <!-- no translation found for accessibility_cell_data (7080312242791850520) -->
-    <skip />
-    <!-- no translation found for accessibility_cell_data_on (4310018593519761767) -->
-    <skip />
+    <string name="accessibility_cell_data" msgid="7080312242791850520">"بيانات شبكة الجوّال"</string>
+    <string name="accessibility_cell_data_on" msgid="4310018593519761767">"تم تشغيل بيانات شبكة الجوّال"</string>
     <string name="accessibility_cell_data_off" msgid="8000803571751407635">"تم تعطيل بيانات شبكة الجوّال"</string>
     <string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"ربط البلوتوث."</string>
     <string name="accessibility_airplane_mode" msgid="834748999790763092">"وضع الطائرة."</string>
     <string name="accessibility_no_sims" msgid="3957997018324995781">"‏ليس هناك شريحة SIM."</string>
     <string name="accessibility_carrier_network_change_mode" msgid="4017301580441304305">"جارٍ تغيير شبكة مشغِّل شبكة الجوّال."</string>
-    <!-- no translation found for accessibility_battery_details (7645516654955025422) -->
-    <skip />
+    <string name="accessibility_battery_details" msgid="7645516654955025422">"فتح تفاصيل البطارية"</string>
     <string name="accessibility_battery_level" msgid="7451474187113371965">"مستوى البطارية <xliff:g id="NUMBER">%d</xliff:g> في المائة."</string>
     <string name="accessibility_battery_level_charging" msgid="1147587904439319646">"جارٍ شحن البطارية، <xliff:g id="BATTERY_PERCENTAGE">%d</xliff:g> بالمائة."</string>
     <string name="accessibility_settings_button" msgid="799583911231893380">"إعدادات النظام."</string>
@@ -204,13 +200,11 @@
     <string name="accessibility_quick_settings_dnd_priority_on" msgid="1448402297221249355">"تم تشغيل الرجاء عدم الإزعاج، الأولوية فقط."</string>
     <string name="accessibility_quick_settings_dnd_none_on" msgid="6882582132662613537">"تم تشغيل الرجاء عدم الإزعاج، كتم الصوت تمامًا."</string>
     <string name="accessibility_quick_settings_dnd_alarms_on" msgid="9152834845587554157">"تم تشغيل الرجاء عدم الإزعاج، التنبيهات فقط."</string>
-    <!-- no translation found for accessibility_quick_settings_dnd (6607873236717185815) -->
-    <skip />
+    <string name="accessibility_quick_settings_dnd" msgid="6607873236717185815">"الرجاء عدم الإزعاج."</string>
     <string name="accessibility_quick_settings_dnd_off" msgid="2371832603753738581">"تم تعطيل \"الرجاء عدم الإزعاج\"."</string>
     <string name="accessibility_quick_settings_dnd_changed_off" msgid="898107593453022935">"تم تعطيل \"الرجاء عدم الإزعاج\"."</string>
     <string name="accessibility_quick_settings_dnd_changed_on" msgid="4483780856613561039">"تم تشغيل \"الرجاء عدم الإزعاج\"."</string>
-    <!-- no translation found for accessibility_quick_settings_bluetooth (6341675755803320038) -->
-    <skip />
+    <string name="accessibility_quick_settings_bluetooth" msgid="6341675755803320038">"البلوتوث."</string>
     <string name="accessibility_quick_settings_bluetooth_off" msgid="2133631372372064339">"إيقاف البلوتوث."</string>
     <string name="accessibility_quick_settings_bluetooth_on" msgid="7681999166216621838">"تشغيل البلوتوث."</string>
     <string name="accessibility_quick_settings_bluetooth_connecting" msgid="6953242966685343855">"جارٍ توصيل البلوتوث."</string>
@@ -276,10 +270,8 @@
     <string name="quick_settings_bluetooth_detail_empty_text" msgid="4910015762433302860">"لا يتوفر أي أجهزة مقترنة"</string>
     <string name="quick_settings_brightness_label" msgid="6968372297018755815">"السطوع"</string>
     <string name="quick_settings_rotation_unlocked_label" msgid="7305323031808150099">"دوران تلقائي"</string>
-    <!-- no translation found for accessibility_quick_settings_rotation (4231661040698488779) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_rotation_value (1428962304214992318) -->
-    <skip />
+    <string name="accessibility_quick_settings_rotation" msgid="4231661040698488779">"التدوير التلقائي للشاشة"</string>
+    <string name="accessibility_quick_settings_rotation_value" msgid="1428962304214992318">"ضبط على <xliff:g id="ID_1">%s</xliff:g>"</string>
     <string name="quick_settings_rotation_locked_label" msgid="6359205706154282377">"تم قفل التدوير"</string>
     <string name="quick_settings_rotation_locked_portrait_label" msgid="5102691921442135053">"عمودي"</string>
     <string name="quick_settings_rotation_locked_landscape_label" msgid="8553157770061178719">"أفقي"</string>
@@ -298,8 +290,7 @@
     <string name="quick_settings_wifi_not_connected" msgid="7171904845345573431">"ليست متصلة"</string>
     <string name="quick_settings_wifi_no_network" msgid="2221993077220856376">"لا تتوفر شبكة"</string>
     <string name="quick_settings_wifi_off_label" msgid="7558778100843885864">"‏إيقاف Wi-Fi"</string>
-    <!-- no translation found for quick_settings_wifi_on_label (7607810331387031235) -->
-    <skip />
+    <string name="quick_settings_wifi_on_label" msgid="7607810331387031235">"‏تم تشغيل Wi-Fi"</string>
     <string name="quick_settings_wifi_detail_empty_text" msgid="269990350383909226">"‏لا تتوفر أية شبكة Wi-Fi"</string>
     <string name="quick_settings_cast_title" msgid="7709016546426454729">"إرسال"</string>
     <string name="quick_settings_casting" msgid="6601710681033353316">"جارٍ الإرسال"</string>
@@ -353,7 +344,7 @@
     <string name="zen_silence_introduction" msgid="3137882381093271568">"سيؤدي هذا إلى حظر جميع الأصوات والاهتزازات، بما في ذلك ما يرد من التنبيهات والموسيقى والفيديو والألعاب."</string>
     <string name="keyguard_more_overflow_text" msgid="9195222469041601365">"+<xliff:g id="NUMBER_OF_NOTIFICATIONS">%d</xliff:g>"</string>
     <string name="speed_bump_explanation" msgid="1288875699658819755">"الإشعارات الأقل إلحاحًا أدناه"</string>
-    <string name="notification_tap_again" msgid="8524949573675922138">"المس مرة أخرى للفتح"</string>
+    <string name="notification_tap_again" msgid="7590196980943943842">"انقر مرة أخرى للفتح"</string>
     <string name="keyguard_unlock" msgid="8043466894212841998">"مرر سريعًا لأعلى لإلغاء القفل"</string>
     <string name="phone_hint" msgid="4872890986869209950">"يمكنك التمرير سريعًا من الرمز لتشغيل الهاتف"</string>
     <string name="voice_hint" msgid="8939888732119726665">"يمكنك التمرير سريعًا من الرمز لتشغيل المساعد الصوتي"</string>
@@ -431,7 +422,7 @@
     <string name="accessibility_volume_expand" msgid="5946812790999244205">"توسيع"</string>
     <string name="accessibility_volume_collapse" msgid="3609549593031810875">"تصغير"</string>
     <string name="screen_pinning_title" msgid="3273740381976175811">"تم تثبيت الشاشة"</string>
-    <string name="screen_pinning_description" msgid="3577937698406151604">"يساعد هذا على استمرار العرض حتى يتم إلغاء التثبيت. ويمكنك لمس \"رجوع\" مع الاستمرار لإلغاء التثبيت."</string>
+    <string name="screen_pinning_description" msgid="7238941806855968768">"يؤدي هذا إلى استمرار العرض إلى أن يتم إزالة التثبيت. ويمكنك لمس \"رجوع\" مع الاستمرار لإزالة التثبيت."</string>
     <string name="screen_pinning_positive" msgid="3783985798366751226">"حسنًا"</string>
     <string name="screen_pinning_negative" msgid="3741602308343880268">"لا، شكرًا"</string>
     <string name="quick_settings_reset_confirmation_title" msgid="748792586749897883">"هل تريد إخفاء <xliff:g id="TILE_LABEL">%1$s</xliff:g>؟"</string>
@@ -441,15 +432,13 @@
     <string name="volumeui_prompt_allow" msgid="7954396902482228786">"سماح"</string>
     <string name="volumeui_prompt_deny" msgid="5720663643411696731">"رفض"</string>
     <string name="volumeui_notification_title" msgid="4906770126345910955">"<xliff:g id="APP_NAME">%1$s</xliff:g> هو مربع حوار مستوى الصوت"</string>
-    <string name="volumeui_notification_text" msgid="1826889705095768656">"المس لاستعادة الإعداد الأصلي."</string>
+    <string name="volumeui_notification_text" msgid="8819536904234337445">"انقر لاستعادة النسخة الأصلية."</string>
     <string name="managed_profile_foreground_toast" msgid="5421487114739245972">"أنت تستخدم ملفك الشخصي للعمل"</string>
     <string name="volume_stream_content_description_unmute" msgid="4436631538779230857">"‏%1$s. انقر لإلغاء التجاهل."</string>
     <string name="volume_stream_content_description_vibrate" msgid="1187944970457807498">"‏%1$s. انقر للتعيين على الاهتزاز. قد يتم تجاهل خدمات إمكانية الوصول."</string>
     <string name="volume_stream_content_description_mute" msgid="3625049841390467354">"‏%1$s. انقر للتجاهل. قد يتم تجاهل خدمات إمكانية الوصول."</string>
-    <!-- no translation found for volume_dialog_accessibility_shown_message (1834631467074259998) -->
-    <skip />
-    <!-- no translation found for volume_dialog_accessibility_dismissed_message (51543526013711399) -->
-    <skip />
+    <string name="volume_dialog_accessibility_shown_message" msgid="1834631467074259998">"‏تم عرض %s عنصر تحكم في مستوى الصوت. يمكنك التمرير سريعًا لأعلى للتجاهل."</string>
+    <string name="volume_dialog_accessibility_dismissed_message" msgid="51543526013711399">"تم إخفاء عناصر التحكم في مستوى الصوت"</string>
     <string name="system_ui_tuner" msgid="708224127392452018">"أداة ضبط واجهة مستخدم النظام"</string>
     <string name="show_battery_percentage" msgid="5444136600512968798">"عرض نسبة البطارية المدمجة"</string>
     <string name="show_battery_percentage_summary" msgid="3215025775576786037">"عرض نسبة مستوى البطارية داخل رمز شريط الحالة أثناء عدم الشحن"</string>
@@ -645,27 +634,17 @@
     <string name="accessibility_qs_edit_tile_removed" msgid="8584304916627913440">"تمت إزالة <xliff:g id="TILE_NAME">%1$s</xliff:g>"</string>
     <string name="accessibility_qs_edit_tile_moved" msgid="4343693412689365038">"تم نقل <xliff:g id="TILE_NAME">%1$s</xliff:g> إلى الموضع <xliff:g id="POSITION">%2$d</xliff:g>"</string>
     <string name="accessibility_desc_quick_settings_edit" msgid="8073587401747016103">"برنامج تعديل الإعدادات السريعة."</string>
-    <!-- no translation found for accessibility_desc_notification_icon (8352414185263916335) -->
-    <skip />
+    <string name="accessibility_desc_notification_icon" msgid="8352414185263916335">"إشعار <xliff:g id="ID_1">%1$s</xliff:g>: <xliff:g id="ID_2">%2$s</xliff:g>"</string>
     <string name="dock_forced_resizable" msgid="5914261505436217520">"يمكن ألا يعمل التطبيق مع وضع تقسيم الشاشة."</string>
     <string name="dock_non_resizeble_failed_to_dock_text" msgid="3871617304250207291">"التطبيق لا يتيح تقسيم الشاشة."</string>
-    <!-- no translation found for accessibility_quick_settings_settings (6132460890024942157) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_expand (2375165227880477530) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_collapse (1792625797142648105) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_alarm_set (1863000242431528676) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_user (1567445362870421770) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_no_internet (31890692343084075) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_open_details (4230931801728005194) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_open_settings (7806613775728380737) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_edit (7839992848995240393) -->
-    <skip />
+    <string name="accessibility_quick_settings_settings" msgid="6132460890024942157">"فتح الإعدادات."</string>
+    <string name="accessibility_quick_settings_expand" msgid="2375165227880477530">"فتح الإعدادات السريعة."</string>
+    <string name="accessibility_quick_settings_collapse" msgid="1792625797142648105">"إغلاق الإعدادات السريعة."</string>
+    <string name="accessibility_quick_settings_alarm_set" msgid="1863000242431528676">"تم ضبط المنبه."</string>
+    <string name="accessibility_quick_settings_user" msgid="1567445362870421770">"تم تسجيل الدخول باعتبارك <xliff:g id="ID_1">%s</xliff:g>"</string>
+    <string name="accessibility_quick_settings_no_internet" msgid="31890692343084075">"لا يتوفر اتصال بالإنترنت."</string>
+    <string name="accessibility_quick_settings_open_details" msgid="4230931801728005194">"فتح التفاصيل."</string>
+    <string name="accessibility_quick_settings_open_settings" msgid="7806613775728380737">"فتح إعدادات <xliff:g id="ID_1">%s</xliff:g>."</string>
+    <string name="accessibility_quick_settings_edit" msgid="7839992848995240393">"تعديل ترتيب الإعدادات."</string>
     <string name="accessibility_quick_settings_page" msgid="5032979051755200721">"الصفحة <xliff:g id="ID_1">%1$d</xliff:g> من <xliff:g id="ID_2">%2$d</xliff:g>"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-ar/strings_tv.xml b/packages/SystemUI/res/values-ar/strings_tv.xml
index b1d633d..081e4e3 100644
--- a/packages/SystemUI/res/values-ar/strings_tv.xml
+++ b/packages/SystemUI/res/values-ar/strings_tv.xml
@@ -24,10 +24,8 @@
     <string name="pip_play" msgid="674145557658227044">"تشغيل"</string>
     <string name="pip_pause" msgid="8412075640017218862">"إيقاف مؤقت"</string>
     <string name="pip_hold_home" msgid="340086535668778109">"‏اضغط "<b>"الرئيسية"</b>" للتحكم في PIP"</string>
-    <!-- no translation found for pip_onboarding_title (7850436557670253991) -->
-    <skip />
-    <!-- no translation found for pip_onboarding_description (4028124563309465267) -->
-    <skip />
+    <string name="pip_onboarding_title" msgid="7850436557670253991">"صورة داخل صورة"</string>
+    <string name="pip_onboarding_description" msgid="4028124563309465267">"يؤدي هذا إلى الاحتفاظ بعرض الفيديو إلى أن يتم تشغيل فيديو آخر. اضغط مع الاستمرار على زر "<b>"الشاشة الرئيسية"</b>" للتحكم في هذا الإعداد."</string>
     <string name="pip_onboarding_button" msgid="3957426748484904611">"حسنًا"</string>
     <string name="recents_tv_dismiss" msgid="3555093879593377731">"رفض"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-az-rAZ/strings.xml b/packages/SystemUI/res/values-az-rAZ/strings.xml
index 18bfd67..59e9d9b 100644
--- a/packages/SystemUI/res/values-az-rAZ/strings.xml
+++ b/packages/SystemUI/res/values-az-rAZ/strings.xml
@@ -71,7 +71,7 @@
     <string name="screenshot_saving_title" msgid="8242282144535555697">"Skrinşot yadda saxlanır..."</string>
     <string name="screenshot_saving_text" msgid="2419718443411738818">"Skrinşot yadda saxlanır."</string>
     <string name="screenshot_saved_title" msgid="6461865960961414961">"Skrinşot çəkildi."</string>
-    <string name="screenshot_saved_text" msgid="1152839647677558815">"Skrinşotunuza baxmaq üçün toxunun"</string>
+    <string name="screenshot_saved_text" msgid="2685605830386712477">"Skrinşotunuza baxmaq üçün tıklayın."</string>
     <string name="screenshot_failed_title" msgid="705781116746922771">"Skrinşot götürülə bilinmədi."</string>
     <string name="screenshot_failed_to_save_unknown_text" msgid="7887826345701753830">"Skrinşot yadda saxlanarkən problem baş verdi."</string>
     <string name="screenshot_failed_to_save_text" msgid="2592658083866306296">"Yaddaş ehtiyatının az olması səbəbindən skrinşotu yadda saxlamaq olmur."</string>
@@ -118,8 +118,7 @@
     <string name="accessibility_data_signal_full" msgid="2708384608124519369">"Data siqnalı tamdır."</string>
     <string name="accessibility_wifi_name" msgid="7202151365171148501">"<xliff:g id="WIFI">%s</xliff:g> üzərindən qoşuldu."</string>
     <string name="accessibility_bluetooth_name" msgid="8441517146585531676">"<xliff:g id="BLUETOOTH">%s</xliff:g> üzərindən qoşuldu."</string>
-    <!-- no translation found for accessibility_cast_name (4026393061247081201) -->
-    <skip />
+    <string name="accessibility_cast_name" msgid="4026393061247081201">"<xliff:g id="CAST">%s</xliff:g> cihazına qoşulub."</string>
     <string name="accessibility_no_wimax" msgid="4329180129727630368">"WiMAX yoxdur."</string>
     <string name="accessibility_wimax_one_bar" msgid="4170994299011863648">"WiMAX bir xətt."</string>
     <string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"WiMAX iki xətdir."</string>
@@ -150,17 +149,14 @@
     <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string>
     <string name="accessibility_data_connection_wifi" msgid="2324496756590645221">"Wi-Fi"</string>
     <string name="accessibility_no_sim" msgid="8274017118472455155">"SIM yoxdur"</string>
-    <!-- no translation found for accessibility_cell_data (7080312242791850520) -->
-    <skip />
-    <!-- no translation found for accessibility_cell_data_on (4310018593519761767) -->
-    <skip />
+    <string name="accessibility_cell_data" msgid="7080312242791850520">"Mobil məlumatlar"</string>
+    <string name="accessibility_cell_data_on" msgid="4310018593519761767">"Mobil Data Aktivdir"</string>
     <string name="accessibility_cell_data_off" msgid="8000803571751407635">"Mobil Data Deaktivdir"</string>
     <string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"Bluetooth tezering."</string>
     <string name="accessibility_airplane_mode" msgid="834748999790763092">"Uçuş rejimi"</string>
     <string name="accessibility_no_sims" msgid="3957997018324995781">"SIM kart yoxdur."</string>
     <string name="accessibility_carrier_network_change_mode" msgid="4017301580441304305">"Carrier şəbəkə dəyişir."</string>
-    <!-- no translation found for accessibility_battery_details (7645516654955025422) -->
-    <skip />
+    <string name="accessibility_battery_details" msgid="7645516654955025422">"Batareya detallarını açın"</string>
     <string name="accessibility_battery_level" msgid="7451474187113371965">"Batareya <xliff:g id="NUMBER">%d</xliff:g> faizdir."</string>
     <string name="accessibility_battery_level_charging" msgid="1147587904439319646">"Batareya doldurulur, <xliff:g id="BATTERY_PERCENTAGE">%d</xliff:g> faiz."</string>
     <string name="accessibility_settings_button" msgid="799583911231893380">"Sistem parametrləri"</string>
@@ -200,13 +196,11 @@
     <string name="accessibility_quick_settings_dnd_priority_on" msgid="1448402297221249355">"\"Narahat etməyin\" aktivdir, yalnız prioritet."</string>
     <string name="accessibility_quick_settings_dnd_none_on" msgid="6882582132662613537">"Tak sakitlik vaxtı narahat etməyin."</string>
     <string name="accessibility_quick_settings_dnd_alarms_on" msgid="9152834845587554157">"Narahat etməmək rejimi aktivdir, yalnız alarmlara icazə var."</string>
-    <!-- no translation found for accessibility_quick_settings_dnd (6607873236717185815) -->
-    <skip />
+    <string name="accessibility_quick_settings_dnd" msgid="6607873236717185815">"Narahat etməyin."</string>
     <string name="accessibility_quick_settings_dnd_off" msgid="2371832603753738581">"\"Narahat etməyin\" qeyri-aktivdir."</string>
     <string name="accessibility_quick_settings_dnd_changed_off" msgid="898107593453022935">"\"Narahat etməyin\" qeyri-aktivdir."</string>
     <string name="accessibility_quick_settings_dnd_changed_on" msgid="4483780856613561039">"\"Narahat etməyin\" aktivdir."</string>
-    <!-- no translation found for accessibility_quick_settings_bluetooth (6341675755803320038) -->
-    <skip />
+    <string name="accessibility_quick_settings_bluetooth" msgid="6341675755803320038">"Bluetooth."</string>
     <string name="accessibility_quick_settings_bluetooth_off" msgid="2133631372372064339">"Bluetooth deaktiv."</string>
     <string name="accessibility_quick_settings_bluetooth_on" msgid="7681999166216621838">"Bluetooth aktiv."</string>
     <string name="accessibility_quick_settings_bluetooth_connecting" msgid="6953242966685343855">"Bluetooth qoşulur."</string>
@@ -272,10 +266,8 @@
     <string name="quick_settings_bluetooth_detail_empty_text" msgid="4910015762433302860">"Heç bir cütlənmiş cihaz əlçatan deyil"</string>
     <string name="quick_settings_brightness_label" msgid="6968372297018755815">"Parlaqlıq"</string>
     <string name="quick_settings_rotation_unlocked_label" msgid="7305323031808150099">"Avto-fırlanma"</string>
-    <!-- no translation found for accessibility_quick_settings_rotation (4231661040698488779) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_rotation_value (1428962304214992318) -->
-    <skip />
+    <string name="accessibility_quick_settings_rotation" msgid="4231661040698488779">"Ekranın avto-dönüşü"</string>
+    <string name="accessibility_quick_settings_rotation_value" msgid="1428962304214992318">"<xliff:g id="ID_1">%s</xliff:g> ölçüsünə ayarlandı"</string>
     <string name="quick_settings_rotation_locked_label" msgid="6359205706154282377">"Fırlanma kilidlidir"</string>
     <string name="quick_settings_rotation_locked_portrait_label" msgid="5102691921442135053">"Portret"</string>
     <string name="quick_settings_rotation_locked_landscape_label" msgid="8553157770061178719">"Peyzaj"</string>
@@ -294,8 +286,7 @@
     <string name="quick_settings_wifi_not_connected" msgid="7171904845345573431">"Bağlantı yoxdur"</string>
     <string name="quick_settings_wifi_no_network" msgid="2221993077220856376">"Şəbəkə yoxdur"</string>
     <string name="quick_settings_wifi_off_label" msgid="7558778100843885864">"Wi-Fi sönülüdür"</string>
-    <!-- no translation found for quick_settings_wifi_on_label (7607810331387031235) -->
-    <skip />
+    <string name="quick_settings_wifi_on_label" msgid="7607810331387031235">"Wi-Fi Aktiv"</string>
     <string name="quick_settings_wifi_detail_empty_text" msgid="269990350383909226">"Heç bir Wi-Fi şəbəkəsi əlçatan deyil"</string>
     <string name="quick_settings_cast_title" msgid="7709016546426454729">"Yayım"</string>
     <string name="quick_settings_casting" msgid="6601710681033353316">"Yayım"</string>
@@ -349,7 +340,7 @@
     <string name="zen_silence_introduction" msgid="3137882381093271568">"Bu, zəng, musiqi, video və oyunlar daxil olmaqla BÜTÜN səs və vibrasiyanı bloklayır."</string>
     <string name="keyguard_more_overflow_text" msgid="9195222469041601365">"+<xliff:g id="NUMBER_OF_NOTIFICATIONS">%d</xliff:g>"</string>
     <string name="speed_bump_explanation" msgid="1288875699658819755">"Daha az təcili bildirişlər aşağıdadır"</string>
-    <string name="notification_tap_again" msgid="8524949573675922138">"Touch again to open"</string>
+    <string name="notification_tap_again" msgid="7590196980943943842">"Açmaq üçün yenidən tıklayın"</string>
     <string name="keyguard_unlock" msgid="8043466894212841998">"Kiliddən çıxarmaq üçün yuxarı çəkin"</string>
     <string name="phone_hint" msgid="4872890986869209950">"Telefon üçün ikonadan sürüşdürün"</string>
     <string name="voice_hint" msgid="8939888732119726665">"Səs yardımçısı üçün ikonadan sürüşdürün"</string>
@@ -427,7 +418,7 @@
     <string name="accessibility_volume_expand" msgid="5946812790999244205">"Genişləndirin"</string>
     <string name="accessibility_volume_collapse" msgid="3609549593031810875">"Yığcamlaşdırın"</string>
     <string name="screen_pinning_title" msgid="3273740381976175811">"Ekrana sancaq taxıldı"</string>
-    <string name="screen_pinning_description" msgid="3577937698406151604">"Sancaq götürülənə qədər bu görünəcək. Sancağı götürmək üçün Geri düyməsinə toxunun və saxlayın."</string>
+    <string name="screen_pinning_description" msgid="7238941806855968768">"Sancaq götürülənə qədər bu görünəcək. Sancağı götürmək üçün Geri düyməsinə toxunun və saxlayın."</string>
     <string name="screen_pinning_positive" msgid="3783985798366751226">"Anladım!"</string>
     <string name="screen_pinning_negative" msgid="3741602308343880268">"Yox, çox sağ olun"</string>
     <string name="quick_settings_reset_confirmation_title" msgid="748792586749897883">"<xliff:g id="TILE_LABEL">%1$s</xliff:g> gizlədilsin?"</string>
@@ -437,15 +428,13 @@
     <string name="volumeui_prompt_allow" msgid="7954396902482228786">"İcazə ver"</string>
     <string name="volumeui_prompt_deny" msgid="5720663643411696731">"Rədd et"</string>
     <string name="volumeui_notification_title" msgid="4906770126345910955">"<xliff:g id="APP_NAME">%1$s</xliff:g> proqramı səs səviyyəsi dialoqudur"</string>
-    <string name="volumeui_notification_text" msgid="1826889705095768656">"Orijinalı bərpa etmək üçün toxun."</string>
+    <string name="volumeui_notification_text" msgid="8819536904234337445">"Orijinalı bərpa etmək üçün tıklayın."</string>
     <string name="managed_profile_foreground_toast" msgid="5421487114739245972">"İş profilinizi istifadə edirsiniz"</string>
     <string name="volume_stream_content_description_unmute" msgid="4436631538779230857">"%1$s. Səsli etmək üçün tıklayın."</string>
     <string name="volume_stream_content_description_vibrate" msgid="1187944970457807498">"%1$s. Vibrasiyanı ayarlamaq üçün tıklayın. Əlçatımlılıq xidmətləri səssiz edilmiş ola bilər."</string>
     <string name="volume_stream_content_description_mute" msgid="3625049841390467354">"%1$s. Səssiz etmək üçün tıklayın. Əlçatımlılıq xidmətləri səssiz edilmiş ola bilər."</string>
-    <!-- no translation found for volume_dialog_accessibility_shown_message (1834631467074259998) -->
-    <skip />
-    <!-- no translation found for volume_dialog_accessibility_dismissed_message (51543526013711399) -->
-    <skip />
+    <string name="volume_dialog_accessibility_shown_message" msgid="1834631467074259998">"%s həcm nəzarəti göstərilir. Bitirmək üçün yuxarı çəkin."</string>
+    <string name="volume_dialog_accessibility_dismissed_message" msgid="51543526013711399">"Həcm nəzarət gizlədilib"</string>
     <string name="system_ui_tuner" msgid="708224127392452018">"System UI Tuner"</string>
     <string name="show_battery_percentage" msgid="5444136600512968798">"Daxil batareya faizini göstərin"</string>
     <string name="show_battery_percentage_summary" msgid="3215025775576786037">"Elektrik şəbəsinə qoşulu olmayan zaman batareya səviyyəsini status paneli ikonası daxilində göstərin"</string>
@@ -641,27 +630,17 @@
     <string name="accessibility_qs_edit_tile_removed" msgid="8584304916627913440">"<xliff:g id="TILE_NAME">%1$s</xliff:g> silindi"</string>
     <string name="accessibility_qs_edit_tile_moved" msgid="4343693412689365038">"<xliff:g id="TILE_NAME">%1$s</xliff:g> <xliff:g id="POSITION">%2$d</xliff:g> mövqeyinə köçürüldü"</string>
     <string name="accessibility_desc_quick_settings_edit" msgid="8073587401747016103">"Sürətli ayarlar redaktoru."</string>
-    <!-- no translation found for accessibility_desc_notification_icon (8352414185263916335) -->
-    <skip />
+    <string name="accessibility_desc_notification_icon" msgid="8352414185263916335">"<xliff:g id="ID_1">%1$s</xliff:g> bildiriş: <xliff:g id="ID_2">%2$s</xliff:g>"</string>
     <string name="dock_forced_resizable" msgid="5914261505436217520">"Tətbiq bölünmüş ekran ilə işləməyə bilər."</string>
     <string name="dock_non_resizeble_failed_to_dock_text" msgid="3871617304250207291">"Tətbiq ekran bölünməsini dəstəkləmir."</string>
-    <!-- no translation found for accessibility_quick_settings_settings (6132460890024942157) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_expand (2375165227880477530) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_collapse (1792625797142648105) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_alarm_set (1863000242431528676) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_user (1567445362870421770) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_no_internet (31890692343084075) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_open_details (4230931801728005194) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_open_settings (7806613775728380737) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_edit (7839992848995240393) -->
-    <skip />
+    <string name="accessibility_quick_settings_settings" msgid="6132460890024942157">"Ayarları açın."</string>
+    <string name="accessibility_quick_settings_expand" msgid="2375165227880477530">"Cəld ayarları açın."</string>
+    <string name="accessibility_quick_settings_collapse" msgid="1792625797142648105">"Cəld ayarları bağlayın."</string>
+    <string name="accessibility_quick_settings_alarm_set" msgid="1863000242431528676">"Siqnal quraşdırıldı."</string>
+    <string name="accessibility_quick_settings_user" msgid="1567445362870421770">"<xliff:g id="ID_1">%s</xliff:g> kimi daxil olunub"</string>
+    <string name="accessibility_quick_settings_no_internet" msgid="31890692343084075">"İnternet yoxdur."</string>
+    <string name="accessibility_quick_settings_open_details" msgid="4230931801728005194">"Detalları açın."</string>
+    <string name="accessibility_quick_settings_open_settings" msgid="7806613775728380737">"<xliff:g id="ID_1">%s</xliff:g> ayarlarını açın."</string>
+    <string name="accessibility_quick_settings_edit" msgid="7839992848995240393">"Ayarların sıralanmasını redaktə edin."</string>
     <string name="accessibility_quick_settings_page" msgid="5032979051755200721">"<xliff:g id="ID_2">%2$d</xliff:g> səhifədən <xliff:g id="ID_1">%1$d</xliff:g> səhifə"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-az-rAZ/strings_tv.xml b/packages/SystemUI/res/values-az-rAZ/strings_tv.xml
index a477e9d..6b0a18e 100644
--- a/packages/SystemUI/res/values-az-rAZ/strings_tv.xml
+++ b/packages/SystemUI/res/values-az-rAZ/strings_tv.xml
@@ -24,10 +24,8 @@
     <string name="pip_play" msgid="674145557658227044">"Göstərin"</string>
     <string name="pip_pause" msgid="8412075640017218862">"Fasilə verin"</string>
     <string name="pip_hold_home" msgid="340086535668778109">"PIP idarı etmək üçün "<b>"Əsas səhifəni"</b>" tutub saxlayın"</string>
-    <!-- no translation found for pip_onboarding_title (7850436557670253991) -->
-    <skip />
-    <!-- no translation found for pip_onboarding_description (4028124563309465267) -->
-    <skip />
+    <string name="pip_onboarding_title" msgid="7850436557670253991">"Şəkil-içində-şəkil"</string>
+    <string name="pip_onboarding_description" msgid="4028124563309465267">"Digərini oxudana kimi videonuzu görünən edir. Nəzarət etmək üçün "<b>"ƏSAS SƏHİFƏ"</b>" düyməsini basıb saxlayın."</string>
     <string name="pip_onboarding_button" msgid="3957426748484904611">"Anladım"</string>
     <string name="recents_tv_dismiss" msgid="3555093879593377731">"Rədd edin"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-b+sr+Latn/strings.xml b/packages/SystemUI/res/values-b+sr+Latn/strings.xml
index 9bddf52..b382cc8 100644
--- a/packages/SystemUI/res/values-b+sr+Latn/strings.xml
+++ b/packages/SystemUI/res/values-b+sr+Latn/strings.xml
@@ -72,7 +72,7 @@
     <string name="screenshot_saving_title" msgid="8242282144535555697">"Čuvanje snimka ekrana..."</string>
     <string name="screenshot_saving_text" msgid="2419718443411738818">"Snimak ekrana se čuva."</string>
     <string name="screenshot_saved_title" msgid="6461865960961414961">"Snimak ekrana je napravljen."</string>
-    <string name="screenshot_saved_text" msgid="1152839647677558815">"Dodirnite da biste videli snimak ekrana."</string>
+    <string name="screenshot_saved_text" msgid="2685605830386712477">"Dodirnite da biste videli snimak ekrana."</string>
     <string name="screenshot_failed_title" msgid="705781116746922771">"Nije moguće napraviti snimak ekrana."</string>
     <string name="screenshot_failed_to_save_unknown_text" msgid="7887826345701753830">"Došlo je do problema pri čuvanju snimka ekrana."</string>
     <string name="screenshot_failed_to_save_text" msgid="2592658083866306296">"Čuvanje snimka ekrana nije uspelo zbog ograničenog memorijskog prostora."</string>
@@ -119,8 +119,7 @@
     <string name="accessibility_data_signal_full" msgid="2708384608124519369">"Signal za podatke je najjači."</string>
     <string name="accessibility_wifi_name" msgid="7202151365171148501">"Povezani ste sa <xliff:g id="WIFI">%s</xliff:g>."</string>
     <string name="accessibility_bluetooth_name" msgid="8441517146585531676">"Povezani ste sa <xliff:g id="BLUETOOTH">%s</xliff:g>."</string>
-    <!-- no translation found for accessibility_cast_name (4026393061247081201) -->
-    <skip />
+    <string name="accessibility_cast_name" msgid="4026393061247081201">"Povezani smo sa uređajem <xliff:g id="CAST">%s</xliff:g>."</string>
     <string name="accessibility_no_wimax" msgid="4329180129727630368">"Nema WiMAX signala."</string>
     <string name="accessibility_wimax_one_bar" msgid="4170994299011863648">"WiMAX signal ima jednu crtu."</string>
     <string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"WiMAX signal ima dve crte."</string>
@@ -151,17 +150,14 @@
     <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string>
     <string name="accessibility_data_connection_wifi" msgid="2324496756590645221">"Wi-Fi"</string>
     <string name="accessibility_no_sim" msgid="8274017118472455155">"Nema SIM kartice."</string>
-    <!-- no translation found for accessibility_cell_data (7080312242791850520) -->
-    <skip />
-    <!-- no translation found for accessibility_cell_data_on (4310018593519761767) -->
-    <skip />
+    <string name="accessibility_cell_data" msgid="7080312242791850520">"Podaci za mobilne uređaje"</string>
+    <string name="accessibility_cell_data_on" msgid="4310018593519761767">"Podaci za mobilne uređaje su uključeni"</string>
     <string name="accessibility_cell_data_off" msgid="8000803571751407635">"Podaci za mobilne uređaje su isključeni"</string>
     <string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"Bluetooth privezivanje."</string>
     <string name="accessibility_airplane_mode" msgid="834748999790763092">"Režim rada u avionu."</string>
     <string name="accessibility_no_sims" msgid="3957997018324995781">"Nema SIM kartice."</string>
     <string name="accessibility_carrier_network_change_mode" msgid="4017301580441304305">"Promena mreže mobilnog operatera."</string>
-    <!-- no translation found for accessibility_battery_details (7645516654955025422) -->
-    <skip />
+    <string name="accessibility_battery_details" msgid="7645516654955025422">"Otvori detalje o bateriji"</string>
     <string name="accessibility_battery_level" msgid="7451474187113371965">"Baterija je na <xliff:g id="NUMBER">%d</xliff:g> posto."</string>
     <string name="accessibility_battery_level_charging" msgid="1147587904439319646">"Baterija se puni, <xliff:g id="BATTERY_PERCENTAGE">%d</xliff:g> procenata."</string>
     <string name="accessibility_settings_button" msgid="799583911231893380">"Sistemska podešavanja."</string>
@@ -201,13 +197,11 @@
     <string name="accessibility_quick_settings_dnd_priority_on" msgid="1448402297221249355">"Podešavanje Ne uznemiravaj je uključeno, samo prioritetni prekidi."</string>
     <string name="accessibility_quick_settings_dnd_none_on" msgid="6882582132662613537">"Podešavanje Ne uznemiravaj je uključeno, potpuna tišina."</string>
     <string name="accessibility_quick_settings_dnd_alarms_on" msgid="9152834845587554157">"Podešavanje Ne uznemiravaj je uključeno, samo alarmi."</string>
-    <!-- no translation found for accessibility_quick_settings_dnd (6607873236717185815) -->
-    <skip />
+    <string name="accessibility_quick_settings_dnd" msgid="6607873236717185815">"Ne uznemiravaj."</string>
     <string name="accessibility_quick_settings_dnd_off" msgid="2371832603753738581">"Podešavanje Ne uznemiravaj je isključeno."</string>
     <string name="accessibility_quick_settings_dnd_changed_off" msgid="898107593453022935">"Podešavanje Ne uznemiravaj je isključeno."</string>
     <string name="accessibility_quick_settings_dnd_changed_on" msgid="4483780856613561039">"Podešavanje Ne uznemiravaj je uključeno."</string>
-    <!-- no translation found for accessibility_quick_settings_bluetooth (6341675755803320038) -->
-    <skip />
+    <string name="accessibility_quick_settings_bluetooth" msgid="6341675755803320038">"Bluetooth."</string>
     <string name="accessibility_quick_settings_bluetooth_off" msgid="2133631372372064339">"Bluetooth je isključen."</string>
     <string name="accessibility_quick_settings_bluetooth_on" msgid="7681999166216621838">"Bluetooth je uključen."</string>
     <string name="accessibility_quick_settings_bluetooth_connecting" msgid="6953242966685343855">"Bluetooth se povezuje."</string>
@@ -273,10 +267,8 @@
     <string name="quick_settings_bluetooth_detail_empty_text" msgid="4910015762433302860">"Nije dostupan nijedan upareni uređaj"</string>
     <string name="quick_settings_brightness_label" msgid="6968372297018755815">"Osvetljenost"</string>
     <string name="quick_settings_rotation_unlocked_label" msgid="7305323031808150099">"Automatska rotacija"</string>
-    <!-- no translation found for accessibility_quick_settings_rotation (4231661040698488779) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_rotation_value (1428962304214992318) -->
-    <skip />
+    <string name="accessibility_quick_settings_rotation" msgid="4231661040698488779">"Automatsko rotiranje ekrana"</string>
+    <string name="accessibility_quick_settings_rotation_value" msgid="1428962304214992318">"Podesi na <xliff:g id="ID_1">%s</xliff:g>"</string>
     <string name="quick_settings_rotation_locked_label" msgid="6359205706154282377">"Rotacija je zaključana"</string>
     <string name="quick_settings_rotation_locked_portrait_label" msgid="5102691921442135053">"Vertikalni prikaz"</string>
     <string name="quick_settings_rotation_locked_landscape_label" msgid="8553157770061178719">"Horizontalni prikaz"</string>
@@ -295,8 +287,7 @@
     <string name="quick_settings_wifi_not_connected" msgid="7171904845345573431">"Veza nije uspostavljena"</string>
     <string name="quick_settings_wifi_no_network" msgid="2221993077220856376">"Nema mreže"</string>
     <string name="quick_settings_wifi_off_label" msgid="7558778100843885864">"Wi-Fi je isključen"</string>
-    <!-- no translation found for quick_settings_wifi_on_label (7607810331387031235) -->
-    <skip />
+    <string name="quick_settings_wifi_on_label" msgid="7607810331387031235">"Wi-Fi je uključen"</string>
     <string name="quick_settings_wifi_detail_empty_text" msgid="269990350383909226">"Nije dostupna nijedna Wi-Fi mreža"</string>
     <string name="quick_settings_cast_title" msgid="7709016546426454729">"Prebacivanje"</string>
     <string name="quick_settings_casting" msgid="6601710681033353316">"Prebacivanje"</string>
@@ -350,7 +341,7 @@
     <string name="zen_silence_introduction" msgid="3137882381093271568">"Ovo blokira SVE zvukove i vibracije uključujući alarme, muziku, video snimke i igre."</string>
     <string name="keyguard_more_overflow_text" msgid="9195222469041601365">"+<xliff:g id="NUMBER_OF_NOTIFICATIONS">%d</xliff:g>"</string>
     <string name="speed_bump_explanation" msgid="1288875699658819755">"Manje hitna obaveštenja su u nastavku"</string>
-    <string name="notification_tap_again" msgid="8524949573675922138">"Dodirnite ponovo da biste otvorili"</string>
+    <string name="notification_tap_again" msgid="7590196980943943842">"Dodirnite ponovo da biste otvorili"</string>
     <string name="keyguard_unlock" msgid="8043466894212841998">"Prevucite nagore da biste otključali"</string>
     <string name="phone_hint" msgid="4872890986869209950">"Prevucite od ikone za telefon"</string>
     <string name="voice_hint" msgid="8939888732119726665">"Prevucite od ikone za glasovnu pomoć"</string>
@@ -428,7 +419,7 @@
     <string name="accessibility_volume_expand" msgid="5946812790999244205">"Proširi"</string>
     <string name="accessibility_volume_collapse" msgid="3609549593031810875">"Skupi"</string>
     <string name="screen_pinning_title" msgid="3273740381976175811">"Ekran je zakačen"</string>
-    <string name="screen_pinning_description" msgid="3577937698406151604">"Zbog toga se on stalno prikazuje dok ga ne otkačite. Dodirnite i zadržite Nazad da biste ga otkačili."</string>
+    <string name="screen_pinning_description" msgid="7238941806855968768">"Na ovaj način se ovo stalno prikazuje dok ga ne otkačite. Dodirnite i zadržite Nazad da biste ga otkačili."</string>
     <string name="screen_pinning_positive" msgid="3783985798366751226">"Važi"</string>
     <string name="screen_pinning_negative" msgid="3741602308343880268">"Ne, hvala"</string>
     <string name="quick_settings_reset_confirmation_title" msgid="748792586749897883">"Želite li da sakrijete <xliff:g id="TILE_LABEL">%1$s</xliff:g>?"</string>
@@ -438,15 +429,13 @@
     <string name="volumeui_prompt_allow" msgid="7954396902482228786">"Dozvoli"</string>
     <string name="volumeui_prompt_deny" msgid="5720663643411696731">"Odbij"</string>
     <string name="volumeui_notification_title" msgid="4906770126345910955">"<xliff:g id="APP_NAME">%1$s</xliff:g> je dijalog za jačinu zvuka"</string>
-    <string name="volumeui_notification_text" msgid="1826889705095768656">"Dodirnite da biste vratili original."</string>
+    <string name="volumeui_notification_text" msgid="8819536904234337445">"Dodirnite da biste vratili original."</string>
     <string name="managed_profile_foreground_toast" msgid="5421487114739245972">"Koristite profil za Work"</string>
     <string name="volume_stream_content_description_unmute" msgid="4436631538779230857">"%1$s. Dodirnite da biste uključili zvuk."</string>
     <string name="volume_stream_content_description_vibrate" msgid="1187944970457807498">"%1$s. Dodirnite da biste podesili na vibraciju. Zvuk usluga pristupačnosti će možda biti isključen."</string>
     <string name="volume_stream_content_description_mute" msgid="3625049841390467354">"%1$s. Dodirnite da biste isključili zvuk. Zvuk usluga pristupačnosti će možda biti isključen."</string>
-    <!-- no translation found for volume_dialog_accessibility_shown_message (1834631467074259998) -->
-    <skip />
-    <!-- no translation found for volume_dialog_accessibility_dismissed_message (51543526013711399) -->
-    <skip />
+    <string name="volume_dialog_accessibility_shown_message" msgid="1834631467074259998">"Kontrole za jačinu zvuka (%s) su prikazane. Prevucite nagore da biste ih odbacili."</string>
+    <string name="volume_dialog_accessibility_dismissed_message" msgid="51543526013711399">"Kontrole za jačinu zvuka su sakrivene"</string>
     <string name="system_ui_tuner" msgid="708224127392452018">"Tjuner za korisnički interfejs sistema"</string>
     <string name="show_battery_percentage" msgid="5444136600512968798">"Prikazuj ugrađeni procenat baterije"</string>
     <string name="show_battery_percentage_summary" msgid="3215025775576786037">"Prikazivanje nivoa napunjenosti baterije u procentima unutar ikone na statusnoj traci kada se baterija ne puni"</string>
@@ -642,27 +631,17 @@
     <string name="accessibility_qs_edit_tile_removed" msgid="8584304916627913440">"Pločica <xliff:g id="TILE_NAME">%1$s</xliff:g> je uklonjena"</string>
     <string name="accessibility_qs_edit_tile_moved" msgid="4343693412689365038">"Pločica <xliff:g id="TILE_NAME">%1$s</xliff:g> je premeštena na <xliff:g id="POSITION">%2$d</xliff:g>. poziciju"</string>
     <string name="accessibility_desc_quick_settings_edit" msgid="8073587401747016103">"Uređivač za Brza podešavanja."</string>
-    <!-- no translation found for accessibility_desc_notification_icon (8352414185263916335) -->
-    <skip />
+    <string name="accessibility_desc_notification_icon" msgid="8352414185263916335">"Obaveštenja za <xliff:g id="ID_1">%1$s</xliff:g>: <xliff:g id="ID_2">%2$s</xliff:g>"</string>
     <string name="dock_forced_resizable" msgid="5914261505436217520">"Aplikacija možda neće funkcionisati sa podeljenim ekranom."</string>
     <string name="dock_non_resizeble_failed_to_dock_text" msgid="3871617304250207291">"Aplikacija ne podržava podeljeni ekran."</string>
-    <!-- no translation found for accessibility_quick_settings_settings (6132460890024942157) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_expand (2375165227880477530) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_collapse (1792625797142648105) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_alarm_set (1863000242431528676) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_user (1567445362870421770) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_no_internet (31890692343084075) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_open_details (4230931801728005194) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_open_settings (7806613775728380737) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_edit (7839992848995240393) -->
-    <skip />
+    <string name="accessibility_quick_settings_settings" msgid="6132460890024942157">"Otvori Podešavanja."</string>
+    <string name="accessibility_quick_settings_expand" msgid="2375165227880477530">"Otvori Brza podešavanja."</string>
+    <string name="accessibility_quick_settings_collapse" msgid="1792625797142648105">"Zatvori Brza podešavanja."</string>
+    <string name="accessibility_quick_settings_alarm_set" msgid="1863000242431528676">"Alarm je podešen."</string>
+    <string name="accessibility_quick_settings_user" msgid="1567445362870421770">"Prijavljeni ste kao <xliff:g id="ID_1">%s</xliff:g>"</string>
+    <string name="accessibility_quick_settings_no_internet" msgid="31890692343084075">"Nema interneta."</string>
+    <string name="accessibility_quick_settings_open_details" msgid="4230931801728005194">"Otvori detalje."</string>
+    <string name="accessibility_quick_settings_open_settings" msgid="7806613775728380737">"Otvori podešavanja za <xliff:g id="ID_1">%s</xliff:g>."</string>
+    <string name="accessibility_quick_settings_edit" msgid="7839992848995240393">"Izmeni redosled podešavanja."</string>
     <string name="accessibility_quick_settings_page" msgid="5032979051755200721">"<xliff:g id="ID_1">%1$d</xliff:g>. strana od <xliff:g id="ID_2">%2$d</xliff:g>"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-b+sr+Latn/strings_tv.xml b/packages/SystemUI/res/values-b+sr+Latn/strings_tv.xml
index 1e00917..403c10d 100644
--- a/packages/SystemUI/res/values-b+sr+Latn/strings_tv.xml
+++ b/packages/SystemUI/res/values-b+sr+Latn/strings_tv.xml
@@ -24,10 +24,8 @@
     <string name="pip_play" msgid="674145557658227044">"Pusti"</string>
     <string name="pip_pause" msgid="8412075640017218862">"Pauziraj"</string>
     <string name="pip_hold_home" msgid="340086535668778109"><b>"POČETNI EKRAN"</b>" kont. PIP"</string>
-    <!-- no translation found for pip_onboarding_title (7850436557670253991) -->
-    <skip />
-    <!-- no translation found for pip_onboarding_description (4028124563309465267) -->
-    <skip />
+    <string name="pip_onboarding_title" msgid="7850436557670253991">"Slika u slici"</string>
+    <string name="pip_onboarding_description" msgid="4028124563309465267">"Na ovaj način će video biti prikazan dok ne pustite neki drugi. Pritisnite i zadržite "<b>"POČETNA"</b>" da biste ga kontrolisali."</string>
     <string name="pip_onboarding_button" msgid="3957426748484904611">"Važi"</string>
     <string name="recents_tv_dismiss" msgid="3555093879593377731">"Odbaci"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-be-rBY/strings.xml b/packages/SystemUI/res/values-be-rBY/strings.xml
index 474fb20..4fcf8ff 100644
--- a/packages/SystemUI/res/values-be-rBY/strings.xml
+++ b/packages/SystemUI/res/values-be-rBY/strings.xml
@@ -73,7 +73,7 @@
     <string name="screenshot_saving_title" msgid="8242282144535555697">"Захаванне скрыншота..."</string>
     <string name="screenshot_saving_text" msgid="2419718443411738818">"Скрыншот захаваны."</string>
     <string name="screenshot_saved_title" msgid="6461865960961414961">"Скрыншот зроблены"</string>
-    <string name="screenshot_saved_text" msgid="1152839647677558815">"Націсніце, каб прагледзець скрыншот"</string>
+    <string name="screenshot_saved_text" msgid="2685605830386712477">"Дакраніцеся, каб прагледзець здымак экрана."</string>
     <string name="screenshot_failed_title" msgid="705781116746922771">"Не атрымалася зрабiць скрыншот."</string>
     <string name="screenshot_failed_to_save_unknown_text" msgid="7887826345701753830">"Падчас захавання скрыншота адбылася памылка."</string>
     <string name="screenshot_failed_to_save_text" msgid="2592658083866306296">"Немагчыма захаваць здымак экрана, бо мала месца ў памяці."</string>
@@ -120,8 +120,7 @@
     <string name="accessibility_data_signal_full" msgid="2708384608124519369">"Поўны сігнал перадачы дадзеных."</string>
     <string name="accessibility_wifi_name" msgid="7202151365171148501">"Падключаны да <xliff:g id="WIFI">%s</xliff:g>."</string>
     <string name="accessibility_bluetooth_name" msgid="8441517146585531676">"Падлучаны да <xliff:g id="BLUETOOTH">%s</xliff:g>."</string>
-    <!-- no translation found for accessibility_cast_name (4026393061247081201) -->
-    <skip />
+    <string name="accessibility_cast_name" msgid="4026393061247081201">"Ёсць падключэнне да <xliff:g id="CAST">%s</xliff:g>."</string>
     <string name="accessibility_no_wimax" msgid="4329180129727630368">"Няма сiгналу WiMAX."</string>
     <string name="accessibility_wimax_one_bar" msgid="4170994299011863648">"Адзiн слупок сiгналу WiMAX."</string>
     <string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"Два слупкi сiгналу WiMAX."</string>
@@ -152,17 +151,14 @@
     <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string>
     <string name="accessibility_data_connection_wifi" msgid="2324496756590645221">"Wi-Fi"</string>
     <string name="accessibility_no_sim" msgid="8274017118472455155">"Няма SIM-карты."</string>
-    <!-- no translation found for accessibility_cell_data (7080312242791850520) -->
-    <skip />
-    <!-- no translation found for accessibility_cell_data_on (4310018593519761767) -->
-    <skip />
+    <string name="accessibility_cell_data" msgid="7080312242791850520">"Сотавая перадача даных"</string>
+    <string name="accessibility_cell_data_on" msgid="4310018593519761767">"Сотавая перадача даных уключана"</string>
     <string name="accessibility_cell_data_off" msgid="8000803571751407635">"Мабільная перадача даных адключана"</string>
     <string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"Сувязь па Bluetooth."</string>
     <string name="accessibility_airplane_mode" msgid="834748999790763092">"Рэжым палёту."</string>
     <string name="accessibility_no_sims" msgid="3957997018324995781">"Няма SIM-карты."</string>
     <string name="accessibility_carrier_network_change_mode" msgid="4017301580441304305">"Змяненне аператара сеткі."</string>
-    <!-- no translation found for accessibility_battery_details (7645516654955025422) -->
-    <skip />
+    <string name="accessibility_battery_details" msgid="7645516654955025422">"Паказаць падрабязную інфармацыю пра акумулятар"</string>
     <!-- String.format failed for translation -->
     <!-- no translation found for accessibility_battery_level (7451474187113371965) -->
     <skip />
@@ -204,13 +200,11 @@
     <string name="accessibility_quick_settings_dnd_priority_on" msgid="1448402297221249355">"Рэжым «Не турбаваць» укл., толькі прыярытэтныя."</string>
     <string name="accessibility_quick_settings_dnd_none_on" msgid="6882582132662613537">"Рэжым «Не турбаваць» укл., поўная цішыня."</string>
     <string name="accessibility_quick_settings_dnd_alarms_on" msgid="9152834845587554157">"Рэжым «Не турбаваць» укл., толькі будзільнікі."</string>
-    <!-- no translation found for accessibility_quick_settings_dnd (6607873236717185815) -->
-    <skip />
+    <string name="accessibility_quick_settings_dnd" msgid="6607873236717185815">"Не турбаваць."</string>
     <string name="accessibility_quick_settings_dnd_off" msgid="2371832603753738581">"Рэжым «Не турбаваць» выкл."</string>
     <string name="accessibility_quick_settings_dnd_changed_off" msgid="898107593453022935">"Рэжым «Не турбаваць» выкл."</string>
     <string name="accessibility_quick_settings_dnd_changed_on" msgid="4483780856613561039">"Рэжым «Не турбаваць» укл."</string>
-    <!-- no translation found for accessibility_quick_settings_bluetooth (6341675755803320038) -->
-    <skip />
+    <string name="accessibility_quick_settings_bluetooth" msgid="6341675755803320038">"Bluetooth."</string>
     <string name="accessibility_quick_settings_bluetooth_off" msgid="2133631372372064339">"Bluetooth выключаны."</string>
     <string name="accessibility_quick_settings_bluetooth_on" msgid="7681999166216621838">"Bluetooth уключаны."</string>
     <string name="accessibility_quick_settings_bluetooth_connecting" msgid="6953242966685343855">"Bluetooth падлучаецца."</string>
@@ -276,10 +270,8 @@
     <string name="quick_settings_bluetooth_detail_empty_text" msgid="4910015762433302860">"Няма даступных спалучаных прылад"</string>
     <string name="quick_settings_brightness_label" msgid="6968372297018755815">"Яркасць"</string>
     <string name="quick_settings_rotation_unlocked_label" msgid="7305323031808150099">"Аўтапаварот"</string>
-    <!-- no translation found for accessibility_quick_settings_rotation (4231661040698488779) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_rotation_value (1428962304214992318) -->
-    <skip />
+    <string name="accessibility_quick_settings_rotation" msgid="4231661040698488779">"Аўтаматычны паварот экрана"</string>
+    <string name="accessibility_quick_settings_rotation_value" msgid="1428962304214992318">"Усталявана на <xliff:g id="ID_1">%s</xliff:g>"</string>
     <string name="quick_settings_rotation_locked_label" msgid="6359205706154282377">"Паварот заблакіраваны"</string>
     <string name="quick_settings_rotation_locked_portrait_label" msgid="5102691921442135053">"Кніжная арыентацыя"</string>
     <string name="quick_settings_rotation_locked_landscape_label" msgid="8553157770061178719">"Альбомная арыентацыя"</string>
@@ -298,8 +290,7 @@
     <string name="quick_settings_wifi_not_connected" msgid="7171904845345573431">"Няма падключэння"</string>
     <string name="quick_settings_wifi_no_network" msgid="2221993077220856376">"Няма сеткi"</string>
     <string name="quick_settings_wifi_off_label" msgid="7558778100843885864">"Wi-Fi адключаны"</string>
-    <!-- no translation found for quick_settings_wifi_on_label (7607810331387031235) -->
-    <skip />
+    <string name="quick_settings_wifi_on_label" msgid="7607810331387031235">"Wi-Fi уключаны"</string>
     <string name="quick_settings_wifi_detail_empty_text" msgid="269990350383909226">"Няма даступнай сеткі Wi-Fi"</string>
     <string name="quick_settings_cast_title" msgid="7709016546426454729">"Трансляцыя"</string>
     <string name="quick_settings_casting" msgid="6601710681033353316">"Ідзе перадача"</string>
@@ -353,7 +344,8 @@
     <string name="zen_silence_introduction" msgid="3137882381093271568">"Гэта заблакіруе ЎСЕ гукі і вібрацыі, у тым ліку ад будзільнікаў, музыкі, відэа і гульняў."</string>
     <string name="keyguard_more_overflow_text" msgid="9195222469041601365">"+<xliff:g id="NUMBER_OF_NOTIFICATIONS">%d</xliff:g>"</string>
     <string name="speed_bump_explanation" msgid="1288875699658819755">"Менш тэрміновыя апавяшчэнні ніжэй"</string>
-    <string name="notification_tap_again" msgid="8524949573675922138">"Краніце яшчэ раз, каб адкрыць"</string>
+    <!-- no translation found for notification_tap_again (7590196980943943842) -->
+    <skip />
     <string name="keyguard_unlock" msgid="8043466894212841998">"Правядзіце пальцам уверх, каб разблакіраваць"</string>
     <string name="phone_hint" msgid="4872890986869209950">"Тэлефон: правядзіце пальцам ад значка"</string>
     <string name="voice_hint" msgid="8939888732119726665">"Галасавая дапамога: правядзіце пальцам ад значка"</string>
@@ -431,7 +423,7 @@
     <string name="accessibility_volume_expand" msgid="5946812790999244205">"Разгарнуць"</string>
     <string name="accessibility_volume_collapse" msgid="3609549593031810875">"Згарнуць"</string>
     <string name="screen_pinning_title" msgid="3273740381976175811">"Экран замацаваны"</string>
-    <string name="screen_pinning_description" msgid="3577937698406151604">"Будзе паказвацца, пакуль не адмацуеце. Дакраніцеся і ўтрымлівайце кнопку «Назад», каб адмацаваць."</string>
+    <string name="screen_pinning_description" msgid="7238941806855968768">"Будзе паказвацца, пакуль не адмацуеце. Дакраніцеся і ўтрымлівайце кнопку \"Назад\", каб адмацаваць."</string>
     <string name="screen_pinning_positive" msgid="3783985798366751226">"Зразумела"</string>
     <string name="screen_pinning_negative" msgid="3741602308343880268">"Не, дзякуй"</string>
     <string name="quick_settings_reset_confirmation_title" msgid="748792586749897883">"Схаваць <xliff:g id="TILE_LABEL">%1$s</xliff:g>?"</string>
@@ -441,15 +433,13 @@
     <string name="volumeui_prompt_allow" msgid="7954396902482228786">"Дазволіць"</string>
     <string name="volumeui_prompt_deny" msgid="5720663643411696731">"Адхiлiць"</string>
     <string name="volumeui_notification_title" msgid="4906770126345910955">"<xliff:g id="APP_NAME">%1$s</xliff:g> з\'яўляецца дыялогам гучнасці"</string>
-    <string name="volumeui_notification_text" msgid="1826889705095768656">"Націсніце, каб аднавіць арыгінал."</string>
+    <string name="volumeui_notification_text" msgid="8819536904234337445">"Дакраніцеся, каб аднавіць арыгінал."</string>
     <string name="managed_profile_foreground_toast" msgid="5421487114739245972">"Вы выкарыстоўваеце свой працоўны профіль"</string>
     <string name="volume_stream_content_description_unmute" msgid="4436631538779230857">"%1$s. Дакраніцеся, каб уключыць гук."</string>
     <string name="volume_stream_content_description_vibrate" msgid="1187944970457807498">"%1$s. Дакраніцеся, каб уключыць вібрацыю. Можа быць адключаны гук службаў спецыяльных магчымасцей."</string>
     <string name="volume_stream_content_description_mute" msgid="3625049841390467354">"%1$s. Дакраніцеся, каб адключыць гук. Можа быць адключаны гук службаў спецыяльных магчымасцей."</string>
-    <!-- no translation found for volume_dialog_accessibility_shown_message (1834631467074259998) -->
-    <skip />
-    <!-- no translation found for volume_dialog_accessibility_dismissed_message (51543526013711399) -->
-    <skip />
+    <string name="volume_dialog_accessibility_shown_message" msgid="1834631467074259998">"Паказваецца наступная колькасць рэгулятараў гучнасці: %s. Правядзіце пальцам, каб закрыць іх."</string>
+    <string name="volume_dialog_accessibility_dismissed_message" msgid="51543526013711399">"Рэгулятары гучнасці схаваны"</string>
     <string name="system_ui_tuner" msgid="708224127392452018">"Наладка сістэмнага інтэрфейсу карыстальніка"</string>
     <string name="show_battery_percentage" msgid="5444136600512968798">"Паказваць працэнт зараду акумулятара"</string>
     <string name="show_battery_percentage_summary" msgid="3215025775576786037">"Паказваць працэнт узроўню акумулятара ўнутры значка панэлі стану, калі ён не зараджаецца"</string>
@@ -626,16 +616,16 @@
   </string-array>
     <string name="other" msgid="4060683095962566764">"Іншае"</string>
     <string name="accessibility_divider" msgid="5903423481953635044">"Раздзяляльнік падзеленага экрана"</string>
-    <string name="accessibility_action_divider_left_full" msgid="2801570521881574972">"Левы экран – на ўвесь экран"</string>
+    <string name="accessibility_action_divider_left_full" msgid="2801570521881574972">"Левы экран – поўнаэкранны рэжым"</string>
     <string name="accessibility_action_divider_left_70" msgid="3612060638991687254">"Левы экран – 70%"</string>
     <string name="accessibility_action_divider_left_50" msgid="1248083470322193075">"Левы экран – 50%"</string>
     <string name="accessibility_action_divider_left_30" msgid="543324403127069386">"Левы экран – 30%"</string>
-    <string name="accessibility_action_divider_right_full" msgid="4639381073802030463">"Правы экран – на ўвесь экран"</string>
-    <string name="accessibility_action_divider_top_full" msgid="5357010904067731654">"Верхні экран – на ўвесь экран"</string>
+    <string name="accessibility_action_divider_right_full" msgid="4639381073802030463">"Правы экран – поўнаэкранны рэжым"</string>
+    <string name="accessibility_action_divider_top_full" msgid="5357010904067731654">"Верхні экран – поўнаэкранны рэжым"</string>
     <string name="accessibility_action_divider_top_70" msgid="5090779195650364522">"Верхні экран – 70%"</string>
     <string name="accessibility_action_divider_top_50" msgid="6385859741925078668">"Верхні экран – 50%"</string>
     <string name="accessibility_action_divider_top_30" msgid="6201455163864841205">"Верхні экран – 30%"</string>
-    <string name="accessibility_action_divider_bottom_full" msgid="301433196679548001">"Ніжні экран – на ўвесь экран"</string>
+    <string name="accessibility_action_divider_bottom_full" msgid="301433196679548001">"Ніжні экран – поўнаэкранны рэжым"</string>
     <string name="accessibility_qs_edit_tile_label" msgid="8374924053307764245">"Месца: <xliff:g id="POSITION">%1$d</xliff:g>, <xliff:g id="TILE_NAME">%2$s</xliff:g>. Краніце двойчы, каб рэдагаваць."</string>
     <string name="accessibility_qs_edit_add_tile_label" msgid="8133209638023882667">"<xliff:g id="TILE_NAME">%1$s</xliff:g>. Краніце двойчы, каб дадаць."</string>
     <string name="accessibility_qs_edit_position_label" msgid="5055306305919289819">"Месца: <xliff:g id="POSITION">%1$d</xliff:g>. Краніце двойчы, каб выбраць."</string>
@@ -645,27 +635,17 @@
     <string name="accessibility_qs_edit_tile_removed" msgid="8584304916627913440">"Плітка <xliff:g id="TILE_NAME">%1$s</xliff:g> выдалена"</string>
     <string name="accessibility_qs_edit_tile_moved" msgid="4343693412689365038">"<xliff:g id="TILE_NAME">%1$s</xliff:g> перамешчана ў наступнае месца: <xliff:g id="POSITION">%2$d</xliff:g>"</string>
     <string name="accessibility_desc_quick_settings_edit" msgid="8073587401747016103">"Рэдактар хуткіх налад."</string>
-    <!-- no translation found for accessibility_desc_notification_icon (8352414185263916335) -->
-    <skip />
+    <string name="accessibility_desc_notification_icon" msgid="8352414185263916335">"Апавяшчэнне <xliff:g id="ID_1">%1$s</xliff:g>: <xliff:g id="ID_2">%2$s</xliff:g>"</string>
     <string name="dock_forced_resizable" msgid="5914261505436217520">"Праграма можа не працаваць у рэжыме дзялення экрана."</string>
     <string name="dock_non_resizeble_failed_to_dock_text" msgid="3871617304250207291">"Праграма не падтрымлівае функцыю дзялення экрана."</string>
-    <!-- no translation found for accessibility_quick_settings_settings (6132460890024942157) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_expand (2375165227880477530) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_collapse (1792625797142648105) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_alarm_set (1863000242431528676) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_user (1567445362870421770) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_no_internet (31890692343084075) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_open_details (4230931801728005194) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_open_settings (7806613775728380737) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_edit (7839992848995240393) -->
-    <skip />
+    <string name="accessibility_quick_settings_settings" msgid="6132460890024942157">"Адкрыць налады."</string>
+    <string name="accessibility_quick_settings_expand" msgid="2375165227880477530">"Адкрыць хуткія налады."</string>
+    <string name="accessibility_quick_settings_collapse" msgid="1792625797142648105">"Закрыць хуткія налады."</string>
+    <string name="accessibility_quick_settings_alarm_set" msgid="1863000242431528676">"Будзільнік пастаўлены."</string>
+    <string name="accessibility_quick_settings_user" msgid="1567445362870421770">"Вы ўвайшлі як <xliff:g id="ID_1">%s</xliff:g>"</string>
+    <string name="accessibility_quick_settings_no_internet" msgid="31890692343084075">"Няма інтэрнэту."</string>
+    <string name="accessibility_quick_settings_open_details" msgid="4230931801728005194">"Паказаць падрабязную інфармацыю."</string>
+    <string name="accessibility_quick_settings_open_settings" msgid="7806613775728380737">"Адкрыць налады <xliff:g id="ID_1">%s</xliff:g>."</string>
+    <string name="accessibility_quick_settings_edit" msgid="7839992848995240393">"Змяніць парадак налад."</string>
     <string name="accessibility_quick_settings_page" msgid="5032979051755200721">"Старонка <xliff:g id="ID_1">%1$d</xliff:g> з <xliff:g id="ID_2">%2$d</xliff:g>"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-be-rBY/strings_tv.xml b/packages/SystemUI/res/values-be-rBY/strings_tv.xml
index d604c79..6a9b56d 100644
--- a/packages/SystemUI/res/values-be-rBY/strings_tv.xml
+++ b/packages/SystemUI/res/values-be-rBY/strings_tv.xml
@@ -24,10 +24,8 @@
     <string name="pip_play" msgid="674145557658227044">"Прайграць"</string>
     <string name="pip_pause" msgid="8412075640017218862">"Прыпыніць"</string>
     <string name="pip_hold_home" msgid="340086535668778109">"Утрым. "<b>"HOME"</b>" для кір. PIP"</string>
-    <!-- no translation found for pip_onboarding_title (7850436557670253991) -->
-    <skip />
-    <!-- no translation found for pip_onboarding_description (4028124563309465267) -->
-    <skip />
+    <string name="pip_onboarding_title" msgid="7850436557670253991">"Малюнак у малюнку"</string>
+    <string name="pip_onboarding_description" msgid="4028124563309465267">"Гэта дазваляе захоўваць ваша відэа ў полі зроку, пакуль вы не пачнеце прайграванне іншага. Націсніце і ўтрымлівайце "<b>"HOME"</b>" для кіравання."</string>
     <string name="pip_onboarding_button" msgid="3957426748484904611">"Зразумела"</string>
     <string name="recents_tv_dismiss" msgid="3555093879593377731">"Адхіліць"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-bg/strings.xml b/packages/SystemUI/res/values-bg/strings.xml
index 080ba93..41f3bbd 100644
--- a/packages/SystemUI/res/values-bg/strings.xml
+++ b/packages/SystemUI/res/values-bg/strings.xml
@@ -71,7 +71,7 @@
     <string name="screenshot_saving_title" msgid="8242282144535555697">"Екранната снимка се запазва..."</string>
     <string name="screenshot_saving_text" msgid="2419718443411738818">"Екранната снимка се запазва."</string>
     <string name="screenshot_saved_title" msgid="6461865960961414961">"Екранната снимка е заснета."</string>
-    <string name="screenshot_saved_text" msgid="1152839647677558815">"Докоснете, за да видите екранната си снимка."</string>
+    <string name="screenshot_saved_text" msgid="2685605830386712477">"Докоснете, за да видите екранната снимка."</string>
     <string name="screenshot_failed_title" msgid="705781116746922771">"Екранната снимка не можа да бъде заснета."</string>
     <string name="screenshot_failed_to_save_unknown_text" msgid="7887826345701753830">"При запазването на екранната снимка възникна проблем."</string>
     <string name="screenshot_failed_to_save_text" msgid="2592658083866306296">"Екранната снимка не може да се запази поради ограничено място в хранилището."</string>
@@ -118,8 +118,7 @@
     <string name="accessibility_data_signal_full" msgid="2708384608124519369">"Сигналът за данни е пълен."</string>
     <string name="accessibility_wifi_name" msgid="7202151365171148501">"Има връзка с <xliff:g id="WIFI">%s</xliff:g>."</string>
     <string name="accessibility_bluetooth_name" msgid="8441517146585531676">"Има връзка с <xliff:g id="BLUETOOTH">%s</xliff:g>."</string>
-    <!-- no translation found for accessibility_cast_name (4026393061247081201) -->
-    <skip />
+    <string name="accessibility_cast_name" msgid="4026393061247081201">"Установена е връзка с/ъс <xliff:g id="CAST">%s</xliff:g>."</string>
     <string name="accessibility_no_wimax" msgid="4329180129727630368">"Няма WiMAX."</string>
     <string name="accessibility_wimax_one_bar" msgid="4170994299011863648">"WiMAX е с една чертичка."</string>
     <string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"WiMAX е с две чертички."</string>
@@ -150,17 +149,14 @@
     <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string>
     <string name="accessibility_data_connection_wifi" msgid="2324496756590645221">"Wi-Fi"</string>
     <string name="accessibility_no_sim" msgid="8274017118472455155">"Няма SIM карта."</string>
-    <!-- no translation found for accessibility_cell_data (7080312242791850520) -->
-    <skip />
-    <!-- no translation found for accessibility_cell_data_on (4310018593519761767) -->
-    <skip />
+    <string name="accessibility_cell_data" msgid="7080312242791850520">"Мобилни данни"</string>
+    <string name="accessibility_cell_data_on" msgid="4310018593519761767">"Преносът на мобилни данни е включен"</string>
     <string name="accessibility_cell_data_off" msgid="8000803571751407635">"Мобилните данни са изключени"</string>
     <string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"Тетъринг през Bluetooth."</string>
     <string name="accessibility_airplane_mode" msgid="834748999790763092">"Самолетен режим."</string>
     <string name="accessibility_no_sims" msgid="3957997018324995781">"Няма SIM карта."</string>
     <string name="accessibility_carrier_network_change_mode" msgid="4017301580441304305">"Промяна на мрежата на оператора."</string>
-    <!-- no translation found for accessibility_battery_details (7645516654955025422) -->
-    <skip />
+    <string name="accessibility_battery_details" msgid="7645516654955025422">"Отваряне на подробностите за батерията"</string>
     <string name="accessibility_battery_level" msgid="7451474187113371965">"<xliff:g id="NUMBER">%d</xliff:g> процента батерия."</string>
     <string name="accessibility_battery_level_charging" msgid="1147587904439319646">"Батерията се зарежда – <xliff:g id="BATTERY_PERCENTAGE">%d</xliff:g> процента."</string>
     <string name="accessibility_settings_button" msgid="799583911231893380">"Системни настройки."</string>
@@ -200,13 +196,11 @@
     <string name="accessibility_quick_settings_dnd_priority_on" msgid="1448402297221249355">"Настройката „Не безпокойте“ е включена – само с приоритет."</string>
     <string name="accessibility_quick_settings_dnd_none_on" msgid="6882582132662613537">"Настройката „Не безпокойте“ е включена в режим за пълна тишина."</string>
     <string name="accessibility_quick_settings_dnd_alarms_on" msgid="9152834845587554157">"Настройката „Не безпокойте“ е включена в режим само с будилници."</string>
-    <!-- no translation found for accessibility_quick_settings_dnd (6607873236717185815) -->
-    <skip />
+    <string name="accessibility_quick_settings_dnd" msgid="6607873236717185815">"Не безпокойте."</string>
     <string name="accessibility_quick_settings_dnd_off" msgid="2371832603753738581">"Настройката „Не безпокойте“ е изключена."</string>
     <string name="accessibility_quick_settings_dnd_changed_off" msgid="898107593453022935">"Настройката „Не безпокойте“ е изключена."</string>
     <string name="accessibility_quick_settings_dnd_changed_on" msgid="4483780856613561039">"Настройката „Не безпокойте“ е включена."</string>
-    <!-- no translation found for accessibility_quick_settings_bluetooth (6341675755803320038) -->
-    <skip />
+    <string name="accessibility_quick_settings_bluetooth" msgid="6341675755803320038">"Bluetooth."</string>
     <string name="accessibility_quick_settings_bluetooth_off" msgid="2133631372372064339">"Функцията за Bluetooth е изключена."</string>
     <string name="accessibility_quick_settings_bluetooth_on" msgid="7681999166216621838">"Функцията за Bluetooth е включена."</string>
     <string name="accessibility_quick_settings_bluetooth_connecting" msgid="6953242966685343855">"Установява се връзка през Bluetooth."</string>
@@ -272,10 +266,8 @@
     <string name="quick_settings_bluetooth_detail_empty_text" msgid="4910015762433302860">"Няма налични сдвоени устройства"</string>
     <string name="quick_settings_brightness_label" msgid="6968372297018755815">"Яркост"</string>
     <string name="quick_settings_rotation_unlocked_label" msgid="7305323031808150099">"Автоматична ориентация"</string>
-    <!-- no translation found for accessibility_quick_settings_rotation (4231661040698488779) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_rotation_value (1428962304214992318) -->
-    <skip />
+    <string name="accessibility_quick_settings_rotation" msgid="4231661040698488779">"Автоматично завъртане на екрана"</string>
+    <string name="accessibility_quick_settings_rotation_value" msgid="1428962304214992318">"Задали сте <xliff:g id="ID_1">%s</xliff:g>"</string>
     <string name="quick_settings_rotation_locked_label" msgid="6359205706154282377">"Ориентацията е заключена"</string>
     <string name="quick_settings_rotation_locked_portrait_label" msgid="5102691921442135053">"Вертикален режим"</string>
     <string name="quick_settings_rotation_locked_landscape_label" msgid="8553157770061178719">"Хоризонтален режим"</string>
@@ -294,8 +286,7 @@
     <string name="quick_settings_wifi_not_connected" msgid="7171904845345573431">"Няма връзка"</string>
     <string name="quick_settings_wifi_no_network" msgid="2221993077220856376">"Няма мрежа"</string>
     <string name="quick_settings_wifi_off_label" msgid="7558778100843885864">"Wi-Fi е изключен"</string>
-    <!-- no translation found for quick_settings_wifi_on_label (7607810331387031235) -->
-    <skip />
+    <string name="quick_settings_wifi_on_label" msgid="7607810331387031235">"Функцията за Wi-Fi е включена"</string>
     <string name="quick_settings_wifi_detail_empty_text" msgid="269990350383909226">"Няма налични Wi-Fi мрежи"</string>
     <string name="quick_settings_cast_title" msgid="7709016546426454729">"Предаване"</string>
     <string name="quick_settings_casting" msgid="6601710681033353316">"Предава се"</string>
@@ -349,7 +340,7 @@
     <string name="zen_silence_introduction" msgid="3137882381093271568">"Този режим блокира ВСИЧКИ звуци и вибрирания, включително от будилници, музика, видеоклипове и игри."</string>
     <string name="keyguard_more_overflow_text" msgid="9195222469041601365">"+<xliff:g id="NUMBER_OF_NOTIFICATIONS">%d</xliff:g>"</string>
     <string name="speed_bump_explanation" msgid="1288875699658819755">"Ппоказване на по-малко спешните известия по-долу"</string>
-    <string name="notification_tap_again" msgid="8524949573675922138">"Докоснете отново за отваряне"</string>
+    <string name="notification_tap_again" msgid="7590196980943943842">"Докоснете отново, за да отворите"</string>
     <string name="keyguard_unlock" msgid="8043466894212841998">"Плъзнете нагоре, за да отключите"</string>
     <string name="phone_hint" msgid="4872890986869209950">"Плъзнете с пръст от иконата, за да използвате телефона"</string>
     <string name="voice_hint" msgid="8939888732119726665">"Прекарайте пръст от иконата, за да получите гласова помощ"</string>
@@ -427,7 +418,7 @@
     <string name="accessibility_volume_expand" msgid="5946812790999244205">"Разгъване"</string>
     <string name="accessibility_volume_collapse" msgid="3609549593031810875">"Свиване"</string>
     <string name="screen_pinning_title" msgid="3273740381976175811">"Екранът е фиксиран"</string>
-    <string name="screen_pinning_description" msgid="3577937698406151604">"Така екранът ще се показва, докато не го освободите с докосване и задържане на бутона за връщане назад."</string>
+    <string name="screen_pinning_description" msgid="7238941806855968768">"Екранът ще се показва, докато не го освободите с докосване и задържане на бутона за връщане назад."</string>
     <string name="screen_pinning_positive" msgid="3783985798366751226">"Разбрах"</string>
     <string name="screen_pinning_negative" msgid="3741602308343880268">"Не, благодаря"</string>
     <string name="quick_settings_reset_confirmation_title" msgid="748792586749897883">"Да се скрие ли „<xliff:g id="TILE_LABEL">%1$s</xliff:g>“?"</string>
@@ -437,15 +428,13 @@
     <string name="volumeui_prompt_allow" msgid="7954396902482228786">"Разрешаване"</string>
     <string name="volumeui_prompt_deny" msgid="5720663643411696731">"Отказване"</string>
     <string name="volumeui_notification_title" msgid="4906770126345910955">"<xliff:g id="APP_NAME">%1$s</xliff:g> изпълнява ролята на диалоговия прозорец за силата на звука"</string>
-    <string name="volumeui_notification_text" msgid="1826889705095768656">"Докоснете, за да възстановите оригинала."</string>
+    <string name="volumeui_notification_text" msgid="8819536904234337445">"Докоснете, за да се възстанови първоначалната стойност."</string>
     <string name="managed_profile_foreground_toast" msgid="5421487114739245972">"Използвате служебния си потребителски профил"</string>
     <string name="volume_stream_content_description_unmute" msgid="4436631538779230857">"%1$s. Докоснете, за да включите отново звука."</string>
     <string name="volume_stream_content_description_vibrate" msgid="1187944970457807498">"%1$s. Докоснете, за да зададете вибриране. Възможно е звукът на услугите за достъпност да бъде заглушен."</string>
     <string name="volume_stream_content_description_mute" msgid="3625049841390467354">"%1$s. Докоснете, за да заглушите звука. Възможно е звукът на услугите за достъпност да бъде заглушен."</string>
-    <!-- no translation found for volume_dialog_accessibility_shown_message (1834631467074259998) -->
-    <skip />
-    <!-- no translation found for volume_dialog_accessibility_dismissed_message (51543526013711399) -->
-    <skip />
+    <string name="volume_dialog_accessibility_shown_message" msgid="1834631467074259998">"Показани са контролите за силата на звука на %s. Прекарайте пръст нагоре, за да ги скриете."</string>
+    <string name="volume_dialog_accessibility_dismissed_message" msgid="51543526013711399">"Контролите за силата на звука са скрити"</string>
     <string name="system_ui_tuner" msgid="708224127392452018">"Тунер на системния потребителски интерфейс"</string>
     <string name="show_battery_percentage" msgid="5444136600512968798">"Показване на процента на вградената батерия"</string>
     <string name="show_battery_percentage_summary" msgid="3215025775576786037">"Показване на процента на нивото на батерията в иконата на лентата на състоянието, когато не се зарежда"</string>
@@ -641,27 +630,17 @@
     <string name="accessibility_qs_edit_tile_removed" msgid="8584304916627913440">"Премахнахте „<xliff:g id="TILE_NAME">%1$s</xliff:g>“"</string>
     <string name="accessibility_qs_edit_tile_moved" msgid="4343693412689365038">"Преместихте „<xliff:g id="TILE_NAME">%1$s</xliff:g>“ на позиция <xliff:g id="POSITION">%2$d</xliff:g>"</string>
     <string name="accessibility_desc_quick_settings_edit" msgid="8073587401747016103">"Редактор за бързи настройки."</string>
-    <!-- no translation found for accessibility_desc_notification_icon (8352414185263916335) -->
-    <skip />
+    <string name="accessibility_desc_notification_icon" msgid="8352414185263916335">"Известие от <xliff:g id="ID_1">%1$s</xliff:g>: <xliff:g id="ID_2">%2$s</xliff:g>"</string>
     <string name="dock_forced_resizable" msgid="5914261505436217520">"Приложението може да не работи в режим на разделен екран."</string>
     <string name="dock_non_resizeble_failed_to_dock_text" msgid="3871617304250207291">"Приложението не поддържа разделен екран."</string>
-    <!-- no translation found for accessibility_quick_settings_settings (6132460890024942157) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_expand (2375165227880477530) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_collapse (1792625797142648105) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_alarm_set (1863000242431528676) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_user (1567445362870421770) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_no_internet (31890692343084075) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_open_details (4230931801728005194) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_open_settings (7806613775728380737) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_edit (7839992848995240393) -->
-    <skip />
+    <string name="accessibility_quick_settings_settings" msgid="6132460890024942157">"Отваряне на настройките."</string>
+    <string name="accessibility_quick_settings_expand" msgid="2375165227880477530">"Отваряне на бързите настройки."</string>
+    <string name="accessibility_quick_settings_collapse" msgid="1792625797142648105">"Затваряне на бързите настройки."</string>
+    <string name="accessibility_quick_settings_alarm_set" msgid="1863000242431528676">"Будилникът е навит."</string>
+    <string name="accessibility_quick_settings_user" msgid="1567445362870421770">"Влезли сте като <xliff:g id="ID_1">%s</xliff:g>"</string>
+    <string name="accessibility_quick_settings_no_internet" msgid="31890692343084075">"Няма връзка с интернет."</string>
+    <string name="accessibility_quick_settings_open_details" msgid="4230931801728005194">"Отвaряне на страницата с подробности."</string>
+    <string name="accessibility_quick_settings_open_settings" msgid="7806613775728380737">"Отваряне на настройките за <xliff:g id="ID_1">%s</xliff:g>."</string>
+    <string name="accessibility_quick_settings_edit" msgid="7839992848995240393">"Редактиране на подредбата на настройките."</string>
     <string name="accessibility_quick_settings_page" msgid="5032979051755200721">"Страница <xliff:g id="ID_1">%1$d</xliff:g> от <xliff:g id="ID_2">%2$d</xliff:g>"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-bg/strings_tv.xml b/packages/SystemUI/res/values-bg/strings_tv.xml
index 0e6b2c9..a943261 100644
--- a/packages/SystemUI/res/values-bg/strings_tv.xml
+++ b/packages/SystemUI/res/values-bg/strings_tv.xml
@@ -24,10 +24,8 @@
     <string name="pip_play" msgid="674145557658227044">"Пускане"</string>
     <string name="pip_pause" msgid="8412075640017218862">"Пауза"</string>
     <string name="pip_hold_home" msgid="340086535668778109">"Контр. на PIP: Задр. "<b>"HOME"</b></string>
-    <!-- no translation found for pip_onboarding_title (7850436557670253991) -->
-    <skip />
-    <!-- no translation found for pip_onboarding_description (4028124563309465267) -->
-    <skip />
+    <string name="pip_onboarding_title" msgid="7850436557670253991">"Картина в картина"</string>
+    <string name="pip_onboarding_description" msgid="4028124563309465267">"Видеоклипът ви ще остане видим, докато не пуснете друг. Натиснете и задръжте "<b>"HOME"</b>", за да контролирате функцията."</string>
     <string name="pip_onboarding_button" msgid="3957426748484904611">"Разбрах"</string>
     <string name="recents_tv_dismiss" msgid="3555093879593377731">"Отхвърляне"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-bn-rBD/strings.xml b/packages/SystemUI/res/values-bn-rBD/strings.xml
index 6a9795c..2547a2e 100644
--- a/packages/SystemUI/res/values-bn-rBD/strings.xml
+++ b/packages/SystemUI/res/values-bn-rBD/strings.xml
@@ -71,7 +71,7 @@
     <string name="screenshot_saving_title" msgid="8242282144535555697">"স্ক্রীনশট সংরক্ষণ করা হচ্ছে..."</string>
     <string name="screenshot_saving_text" msgid="2419718443411738818">"স্ক্রীনশট সংরক্ষণ করা হচ্ছে৷"</string>
     <string name="screenshot_saved_title" msgid="6461865960961414961">"স্ক্রীনশট নেওয়া হযেছে৷"</string>
-    <string name="screenshot_saved_text" msgid="1152839647677558815">"আপনার স্ক্রীনশট দেখতে স্পর্শ করুন৷"</string>
+    <string name="screenshot_saved_text" msgid="2685605830386712477">"আপনার স্ক্রিনশট দেখতে আলতো চাপ দিন৷"</string>
     <string name="screenshot_failed_title" msgid="705781116746922771">"স্ক্রীনশট নেওয়া যায়নি৷"</string>
     <string name="screenshot_failed_to_save_unknown_text" msgid="7887826345701753830">"স্ক্রীনশট সংরক্ষণের সময়ে সমস্যা হয়েছে৷"</string>
     <string name="screenshot_failed_to_save_text" msgid="2592658083866306296">"সঞ্চয়স্থান সীমিত থাকায় স্ক্রীনশটটি সংরক্ষণ করা যাবে না৷"</string>
@@ -118,8 +118,7 @@
     <string name="accessibility_data_signal_full" msgid="2708384608124519369">"পূর্ণ ডেটার সংকেত রয়েছে৷"</string>
     <string name="accessibility_wifi_name" msgid="7202151365171148501">"<xliff:g id="WIFI">%s</xliff:g> এর সাথে সংযুক্ত।"</string>
     <string name="accessibility_bluetooth_name" msgid="8441517146585531676">"<xliff:g id="BLUETOOTH">%s</xliff:g>এ সংযুক্ত হয়ে আছে।"</string>
-    <!-- no translation found for accessibility_cast_name (4026393061247081201) -->
-    <skip />
+    <string name="accessibility_cast_name" msgid="4026393061247081201">"<xliff:g id="CAST">%s</xliff:g> এর সাথে সংযুক্ত৷"</string>
     <string name="accessibility_no_wimax" msgid="4329180129727630368">"WiMAX অনুপলব্ধ৷"</string>
     <string name="accessibility_wimax_one_bar" msgid="4170994299011863648">"WiMAX এ একটি দণ্ড৷"</string>
     <string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"WiMAX এ দুইটি দণ্ড৷"</string>
@@ -150,17 +149,14 @@
     <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string>
     <string name="accessibility_data_connection_wifi" msgid="2324496756590645221">"Wi-Fi"</string>
     <string name="accessibility_no_sim" msgid="8274017118472455155">"কোনো সিম নেই৷"</string>
-    <!-- no translation found for accessibility_cell_data (7080312242791850520) -->
-    <skip />
-    <!-- no translation found for accessibility_cell_data_on (4310018593519761767) -->
-    <skip />
+    <string name="accessibility_cell_data" msgid="7080312242791850520">"সেলুলার ডেটা"</string>
+    <string name="accessibility_cell_data_on" msgid="4310018593519761767">"সেলুলার ডেটা চালু রয়েছে"</string>
     <string name="accessibility_cell_data_off" msgid="8000803571751407635">"সেলুলার ডেটা বন্ধ আছে"</string>
     <string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"Bluetooth টিথারিং৷"</string>
     <string name="accessibility_airplane_mode" msgid="834748999790763092">"বিমান মোড৷"</string>
     <string name="accessibility_no_sims" msgid="3957997018324995781">"কোনো SIM কার্ড নেই।"</string>
     <string name="accessibility_carrier_network_change_mode" msgid="4017301580441304305">"পরিষেবা প্রদানকারীর নেটওয়ার্ক পরিবর্তিত হচ্ছে।"</string>
-    <!-- no translation found for accessibility_battery_details (7645516654955025422) -->
-    <skip />
+    <string name="accessibility_battery_details" msgid="7645516654955025422">"ব্যাটারির বিশদ বিবরণ খুলুন"</string>
     <string name="accessibility_battery_level" msgid="7451474187113371965">"<xliff:g id="NUMBER">%d</xliff:g> শতাংশ ব্যাটারি রয়েছে৷"</string>
     <string name="accessibility_battery_level_charging" msgid="1147587904439319646">"ব্যাটারি চার্জ হচ্ছে, <xliff:g id="BATTERY_PERCENTAGE">%d</xliff:g> শতাংশ৷"</string>
     <string name="accessibility_settings_button" msgid="799583911231893380">"সিস্টেম সেটিংস৷"</string>
@@ -200,13 +196,11 @@
     <string name="accessibility_quick_settings_dnd_priority_on" msgid="1448402297221249355">"“বিরক্ত করবেন না” চালু করবেন, শুধুমাত্র অগ্রাধিকার৷"</string>
     <string name="accessibility_quick_settings_dnd_none_on" msgid="6882582132662613537">"“বিরক্ত করবেন না” চালু করবেন, একদম নিরব"</string>
     <string name="accessibility_quick_settings_dnd_alarms_on" msgid="9152834845587554157">"“বিরক্ত করবেন না” চালু করবেন, শুধুমাত্র অ্যালার্মগুলি৷"</string>
-    <!-- no translation found for accessibility_quick_settings_dnd (6607873236717185815) -->
-    <skip />
+    <string name="accessibility_quick_settings_dnd" msgid="6607873236717185815">"বিরক্ত করবেন না৷"</string>
     <string name="accessibility_quick_settings_dnd_off" msgid="2371832603753738581">"“বিরক্ত করবেন না” বন্ধ৷"</string>
     <string name="accessibility_quick_settings_dnd_changed_off" msgid="898107593453022935">"বিরক্ত করবেন না বন্ধ রয়েছে৷"</string>
     <string name="accessibility_quick_settings_dnd_changed_on" msgid="4483780856613561039">"বিরক্ত করবেন না চালু রয়েছে৷"</string>
-    <!-- no translation found for accessibility_quick_settings_bluetooth (6341675755803320038) -->
-    <skip />
+    <string name="accessibility_quick_settings_bluetooth" msgid="6341675755803320038">"Bluetooth"</string>
     <string name="accessibility_quick_settings_bluetooth_off" msgid="2133631372372064339">"Bluetooth বন্ধ আছে।"</string>
     <string name="accessibility_quick_settings_bluetooth_on" msgid="7681999166216621838">"Bluetooth চালু আছে।"</string>
     <string name="accessibility_quick_settings_bluetooth_connecting" msgid="6953242966685343855">"Bluetooth সংযুক্ত হচ্ছে।"</string>
@@ -272,10 +266,8 @@
     <string name="quick_settings_bluetooth_detail_empty_text" msgid="4910015762433302860">"যুক্ত করা কোন ডিভাইস উপলব্ধ নয়"</string>
     <string name="quick_settings_brightness_label" msgid="6968372297018755815">"উজ্জ্বলতা"</string>
     <string name="quick_settings_rotation_unlocked_label" msgid="7305323031808150099">"স্বতঃ ঘূর্ণায়মান"</string>
-    <!-- no translation found for accessibility_quick_settings_rotation (4231661040698488779) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_rotation_value (1428962304214992318) -->
-    <skip />
+    <string name="accessibility_quick_settings_rotation" msgid="4231661040698488779">"স্বতঃ-ঘূর্ণায়মান স্ক্রীন"</string>
+    <string name="accessibility_quick_settings_rotation_value" msgid="1428962304214992318">"<xliff:g id="ID_1">%s</xliff:g> এ সেট করুন"</string>
     <string name="quick_settings_rotation_locked_label" msgid="6359205706154282377">"ঘূর্ণন লক করা হয়েছে"</string>
     <string name="quick_settings_rotation_locked_portrait_label" msgid="5102691921442135053">"প্রতিকৃতি"</string>
     <string name="quick_settings_rotation_locked_landscape_label" msgid="8553157770061178719">"ভূদৃশ্য"</string>
@@ -294,8 +286,7 @@
     <string name="quick_settings_wifi_not_connected" msgid="7171904845345573431">"সংযুক্ত নয়"</string>
     <string name="quick_settings_wifi_no_network" msgid="2221993077220856376">"কোনো নেটওয়ার্ক নেই"</string>
     <string name="quick_settings_wifi_off_label" msgid="7558778100843885864">"Wi-Fi বন্ধ"</string>
-    <!-- no translation found for quick_settings_wifi_on_label (7607810331387031235) -->
-    <skip />
+    <string name="quick_settings_wifi_on_label" msgid="7607810331387031235">"Wi-Fi চালু আছে"</string>
     <string name="quick_settings_wifi_detail_empty_text" msgid="269990350383909226">"কোনো Wi-Fi নেটওয়ার্ক উপলব্ধ নেই"</string>
     <string name="quick_settings_cast_title" msgid="7709016546426454729">"কাস্ট করুন"</string>
     <string name="quick_settings_casting" msgid="6601710681033353316">"কাস্ট করা হচ্ছে"</string>
@@ -349,7 +340,7 @@
     <string name="zen_silence_introduction" msgid="3137882381093271568">"এটি অ্যালার্ম, সংগীত, ভিডিও এবং গেমগুলি থেকে আসা সমস্ত রকমের ধ্বনি এবং কম্পনগুলিকে বন্ধ করে৷"</string>
     <string name="keyguard_more_overflow_text" msgid="9195222469041601365">"+<xliff:g id="NUMBER_OF_NOTIFICATIONS">%d</xliff:g>"</string>
     <string name="speed_bump_explanation" msgid="1288875699658819755">"নিচে অপেক্ষাকৃত কম জরুরী বিজ্ঞপ্তিগুলি"</string>
-    <string name="notification_tap_again" msgid="8524949573675922138">"খোলার জন্য আবার স্পর্শ করুন"</string>
+    <string name="notification_tap_again" msgid="7590196980943943842">"খোলার জন্য আবার আলতো চাপুন"</string>
     <string name="keyguard_unlock" msgid="8043466894212841998">"আনলক করতে উপরের দিকে সোয়াইপ করুন"</string>
     <string name="phone_hint" msgid="4872890986869209950">"ফোনের জন্য আইকন থেকে সোয়াইপ করুন"</string>
     <string name="voice_hint" msgid="8939888732119726665">"ভয়েস সহায়তার জন্য আইকন থেকে সোয়াইপ করুন"</string>
@@ -427,7 +418,7 @@
     <string name="accessibility_volume_expand" msgid="5946812790999244205">"প্রসারিত করুন"</string>
     <string name="accessibility_volume_collapse" msgid="3609549593031810875">"সঙ্কুচিত করুন"</string>
     <string name="screen_pinning_title" msgid="3273740381976175811">"স্ক্রীন পিন করা হয়েছে"</string>
-    <string name="screen_pinning_description" msgid="3577937698406151604">"এটি আপনি আনপিন না করা পর্যন্ত এটিকে প্রদর্শিত করবে৷ আনপিন করতে \'ফিরুন\' এ স্পর্শ করে ধরে রাখুন৷"</string>
+    <string name="screen_pinning_description" msgid="7238941806855968768">"এটি আপনি আনপিন না করা পর্যন্ত এটিকে প্রদর্শিত করবে৷ আনপিন করতে \'ফিরুন\' এ স্পর্শ করে ধরে রাখুন৷"</string>
     <string name="screen_pinning_positive" msgid="3783985798366751226">"বুঝেছি"</string>
     <string name="screen_pinning_negative" msgid="3741602308343880268">"না থাক"</string>
     <string name="quick_settings_reset_confirmation_title" msgid="748792586749897883">"<xliff:g id="TILE_LABEL">%1$s</xliff:g> লুকাবেন?"</string>
@@ -437,15 +428,13 @@
     <string name="volumeui_prompt_allow" msgid="7954396902482228786">"মঞ্জুরি দিন"</string>
     <string name="volumeui_prompt_deny" msgid="5720663643411696731">"প্রত্যাখ্যান করুন"</string>
     <string name="volumeui_notification_title" msgid="4906770126345910955">"<xliff:g id="APP_NAME">%1$s</xliff:g> হল ভলিউম ডায়লগ"</string>
-    <string name="volumeui_notification_text" msgid="1826889705095768656">"আসলটি পুনঃস্থাপন করতে স্পর্শ করুন৷"</string>
+    <string name="volumeui_notification_text" msgid="8819536904234337445">"আসলটি পুনঃস্থাপন করতে আলতো চাপ দিন৷"</string>
     <string name="managed_profile_foreground_toast" msgid="5421487114739245972">"আপনি আপনার কাজের প্রোফাইল ব্যবহার করছেন"</string>
     <string name="volume_stream_content_description_unmute" msgid="4436631538779230857">"%1$s। সশব্দ করতে আলতো চাপুন।"</string>
     <string name="volume_stream_content_description_vibrate" msgid="1187944970457807498">"%1$s। কম্পন এ সেট করতে আলতো চাপুন। অ্যাক্সেসযোগ্যতার পরিষেবাগুলিকে নিঃশব্দ করা হতে পারে।"</string>
     <string name="volume_stream_content_description_mute" msgid="3625049841390467354">"%1$s। নিঃশব্দ করতে আলতো চাপুন। অ্যাক্সেসযোগ্যতার পরিষেবাগুলিকে নিঃশব্দ করা হতে পারে।"</string>
-    <!-- no translation found for volume_dialog_accessibility_shown_message (1834631467074259998) -->
-    <skip />
-    <!-- no translation found for volume_dialog_accessibility_dismissed_message (51543526013711399) -->
-    <skip />
+    <string name="volume_dialog_accessibility_shown_message" msgid="1834631467074259998">"%s ভলিউম নিয়ন্ত্রণগুলি দেখানো হয়েছে৷ খারিজ করতে উপরের দিকে সোয়াইপ করুন৷"</string>
+    <string name="volume_dialog_accessibility_dismissed_message" msgid="51543526013711399">"ভলিউম নিয়ন্ত্রণগুলি লুকানো রয়েছে"</string>
     <string name="system_ui_tuner" msgid="708224127392452018">"সিস্টেম UI টিউনার"</string>
     <string name="show_battery_percentage" msgid="5444136600512968798">"এম্বেড করা ব্যাটারির শতকরা হার দেখায়"</string>
     <string name="show_battery_percentage_summary" msgid="3215025775576786037">"যখন চার্জ করা হবে না তখন স্থিতি দন্ডের আইকনের ভিতরে ব্যাটারি স্তরের শতকার হার দেখায়"</string>
@@ -641,27 +630,17 @@
     <string name="accessibility_qs_edit_tile_removed" msgid="8584304916627913440">"<xliff:g id="TILE_NAME">%1$s</xliff:g> মোছা হয়েছে"</string>
     <string name="accessibility_qs_edit_tile_moved" msgid="4343693412689365038">"<xliff:g id="TILE_NAME">%1$s</xliff:g> <xliff:g id="POSITION">%2$d</xliff:g> এ সরানো হয়েছে"</string>
     <string name="accessibility_desc_quick_settings_edit" msgid="8073587401747016103">"দ্রুত সেটিংস সম্পাদক৷"</string>
-    <!-- no translation found for accessibility_desc_notification_icon (8352414185263916335) -->
-    <skip />
+    <string name="accessibility_desc_notification_icon" msgid="8352414185263916335">"<xliff:g id="ID_1">%1$s</xliff:g> বিজ্ঞপ্তি: <xliff:g id="ID_2">%2$s</xliff:g>"</string>
     <string name="dock_forced_resizable" msgid="5914261505436217520">"অ্যাপ্লিকেশানটি বিভক্ত স্ক্রীনে কাজ নাও করতে পারে৷"</string>
     <string name="dock_non_resizeble_failed_to_dock_text" msgid="3871617304250207291">"অ্যাপ্লিকেশান বিভক্ত-স্ক্রীন সমর্থন করে না৷"</string>
-    <!-- no translation found for accessibility_quick_settings_settings (6132460890024942157) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_expand (2375165227880477530) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_collapse (1792625797142648105) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_alarm_set (1863000242431528676) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_user (1567445362870421770) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_no_internet (31890692343084075) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_open_details (4230931801728005194) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_open_settings (7806613775728380737) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_edit (7839992848995240393) -->
-    <skip />
+    <string name="accessibility_quick_settings_settings" msgid="6132460890024942157">"সেটিংস খুলুন।"</string>
+    <string name="accessibility_quick_settings_expand" msgid="2375165227880477530">"দ্রুত সেটিংস খুলুন৷"</string>
+    <string name="accessibility_quick_settings_collapse" msgid="1792625797142648105">"দ্রুত সেটিংস বন্ধ করুন৷"</string>
+    <string name="accessibility_quick_settings_alarm_set" msgid="1863000242431528676">"অ্যালার্ম সেট করা হয়েছে৷"</string>
+    <string name="accessibility_quick_settings_user" msgid="1567445362870421770">"<xliff:g id="ID_1">%s</xliff:g> হিসেবে সাইন ইন রয়েছেন"</string>
+    <string name="accessibility_quick_settings_no_internet" msgid="31890692343084075">"কোন ইন্টারনেট নেই৷"</string>
+    <string name="accessibility_quick_settings_open_details" msgid="4230931801728005194">"বিশদ বিবরণ খুলুন৷"</string>
+    <string name="accessibility_quick_settings_open_settings" msgid="7806613775728380737">"<xliff:g id="ID_1">%s</xliff:g> সেটিংস খুলুন৷"</string>
+    <string name="accessibility_quick_settings_edit" msgid="7839992848995240393">"ক্রম বা সেটিংস সম্পাদনা করুন৷"</string>
     <string name="accessibility_quick_settings_page" msgid="5032979051755200721">"<xliff:g id="ID_2">%2$d</xliff:g>টির মধ্যে <xliff:g id="ID_1">%1$d</xliff:g> নং পৃষ্ঠা"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-bn-rBD/strings_tv.xml b/packages/SystemUI/res/values-bn-rBD/strings_tv.xml
index 771a172..c61dc83 100644
--- a/packages/SystemUI/res/values-bn-rBD/strings_tv.xml
+++ b/packages/SystemUI/res/values-bn-rBD/strings_tv.xml
@@ -24,10 +24,8 @@
     <string name="pip_play" msgid="674145557658227044">"চালান"</string>
     <string name="pip_pause" msgid="8412075640017218862">"বিরাম দিন"</string>
     <string name="pip_hold_home" msgid="340086535668778109">"PIP নিয়ন্ত্রণ করতে "<b>"হোম"</b>" কী ধরে রাখুন"</string>
-    <!-- no translation found for pip_onboarding_title (7850436557670253991) -->
-    <skip />
-    <!-- no translation found for pip_onboarding_description (4028124563309465267) -->
-    <skip />
+    <string name="pip_onboarding_title" msgid="7850436557670253991">"ছবির মধ্যে ছবি"</string>
+    <string name="pip_onboarding_description" msgid="4028124563309465267">"আপনি অন্য একটি না প্লে করা পর্যন্ত এটি আপনার ভিডিও দেখা বজায় রাখে৷ এটিকে নিয়ন্ত্রণ করতে "<b>"হোম"</b>" টিপুন এবং ধরে রাখুন৷"</string>
     <string name="pip_onboarding_button" msgid="3957426748484904611">"বুঝেছি"</string>
     <string name="recents_tv_dismiss" msgid="3555093879593377731">"খারিজ করুন"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-bs-rBA/strings.xml b/packages/SystemUI/res/values-bs-rBA/strings.xml
index 202cf7e..9a82b8f 100644
--- a/packages/SystemUI/res/values-bs-rBA/strings.xml
+++ b/packages/SystemUI/res/values-bs-rBA/strings.xml
@@ -72,7 +72,7 @@
     <string name="screenshot_saving_title" msgid="8242282144535555697">"Spašavanje snimka ekrana..."</string>
     <string name="screenshot_saving_text" msgid="2419718443411738818">"Spašavanje snimka ekrana u toku."</string>
     <string name="screenshot_saved_title" msgid="6461865960961414961">"Ekran snimljen."</string>
-    <string name="screenshot_saved_text" msgid="1152839647677558815">"Dodirnite za prikaz snimka ekrana."</string>
+    <string name="screenshot_saved_text" msgid="2685605830386712477">"Dodirnite za prikaz snimka ekrana."</string>
     <string name="screenshot_failed_title" msgid="705781116746922771">"Došlo je do greške prilikom snimanja ekrana."</string>
     <string name="screenshot_failed_to_save_unknown_text" msgid="7887826345701753830">"Došlo je do problema prilikom spašavanja snimka ekrana."</string>
     <string name="screenshot_failed_to_save_text" msgid="2592658083866306296">"Snimak ekrana se ne može sačuvati zbog manjka prostora za pohranu."</string>
@@ -119,8 +119,7 @@
     <string name="accessibility_data_signal_full" msgid="2708384608124519369">"Signal za prijenos podataka pun."</string>
     <string name="accessibility_wifi_name" msgid="7202151365171148501">"Povezan na <xliff:g id="WIFI">%s</xliff:g>."</string>
     <string name="accessibility_bluetooth_name" msgid="8441517146585531676">"Povezan na <xliff:g id="BLUETOOTH">%s</xliff:g>."</string>
-    <!-- no translation found for accessibility_cast_name (4026393061247081201) -->
-    <skip />
+    <string name="accessibility_cast_name" msgid="4026393061247081201">"Povezan na <xliff:g id="CAST">%s</xliff:g>."</string>
     <string name="accessibility_no_wimax" msgid="4329180129727630368">"Nema WiMAX signala."</string>
     <string name="accessibility_wimax_one_bar" msgid="4170994299011863648">"WiMAX signal na jednoj crtici."</string>
     <string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"WiMAX signal na dvije crtice."</string>
@@ -151,17 +150,14 @@
     <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string>
     <string name="accessibility_data_connection_wifi" msgid="2324496756590645221">"Wi-Fi"</string>
     <string name="accessibility_no_sim" msgid="8274017118472455155">"Nema SIM kartice."</string>
-    <!-- no translation found for accessibility_cell_data (7080312242791850520) -->
-    <skip />
-    <!-- no translation found for accessibility_cell_data_on (4310018593519761767) -->
-    <skip />
+    <string name="accessibility_cell_data" msgid="7080312242791850520">"Mobilni podaci"</string>
+    <string name="accessibility_cell_data_on" msgid="4310018593519761767">"Prijenos mobilnih podataka uključen"</string>
     <string name="accessibility_cell_data_off" msgid="8000803571751407635">"Mobilni podaci isključeni"</string>
     <string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"Dijeljenje Bluetooth veze."</string>
     <string name="accessibility_airplane_mode" msgid="834748999790763092">"Način rada u avionu."</string>
     <string name="accessibility_no_sims" msgid="3957997018324995781">"Nema SIM kartice."</string>
     <string name="accessibility_carrier_network_change_mode" msgid="4017301580441304305">"Promjena mreže operatera."</string>
-    <!-- no translation found for accessibility_battery_details (7645516654955025422) -->
-    <skip />
+    <string name="accessibility_battery_details" msgid="7645516654955025422">"Otvori detalje o potrošnji baterije"</string>
     <string name="accessibility_battery_level" msgid="7451474187113371965">"Baterija na <xliff:g id="NUMBER">%d</xliff:g> posto."</string>
     <string name="accessibility_battery_level_charging" msgid="1147587904439319646">"Punjenje baterije, <xliff:g id="BATTERY_PERCENTAGE">%d</xliff:g> procenata."</string>
     <string name="accessibility_settings_button" msgid="799583911231893380">"Postavke sistema."</string>
@@ -201,13 +197,11 @@
     <string name="accessibility_quick_settings_dnd_priority_on" msgid="1448402297221249355">"Opcija Ne ometaj je uključena, čut će se samo prioritetna obavještenja."</string>
     <string name="accessibility_quick_settings_dnd_none_on" msgid="6882582132662613537">"Opcija Ne ometaj je uključena, potpuna tišina."</string>
     <string name="accessibility_quick_settings_dnd_alarms_on" msgid="9152834845587554157">"Opcija Ne ometaj je uključena, čut će se samo alarmi."</string>
-    <!-- no translation found for accessibility_quick_settings_dnd (6607873236717185815) -->
-    <skip />
+    <string name="accessibility_quick_settings_dnd" msgid="6607873236717185815">"Ne ometaj."</string>
     <string name="accessibility_quick_settings_dnd_off" msgid="2371832603753738581">"Opcija Ne ometaj je isključena."</string>
     <string name="accessibility_quick_settings_dnd_changed_off" msgid="898107593453022935">"Opcija Ne ometaj je isključena."</string>
     <string name="accessibility_quick_settings_dnd_changed_on" msgid="4483780856613561039">"Opcija Ne ometaj je uključena."</string>
-    <!-- no translation found for accessibility_quick_settings_bluetooth (6341675755803320038) -->
-    <skip />
+    <string name="accessibility_quick_settings_bluetooth" msgid="6341675755803320038">"Bluetooth."</string>
     <string name="accessibility_quick_settings_bluetooth_off" msgid="2133631372372064339">"Bluetooth isključen."</string>
     <string name="accessibility_quick_settings_bluetooth_on" msgid="7681999166216621838">"Bluetooth uključen."</string>
     <string name="accessibility_quick_settings_bluetooth_connecting" msgid="6953242966685343855">"Bluetooth se povezuje."</string>
@@ -273,10 +267,8 @@
     <string name="quick_settings_bluetooth_detail_empty_text" msgid="4910015762433302860">"Nema dostupnih uparenih uređaja"</string>
     <string name="quick_settings_brightness_label" msgid="6968372297018755815">"Osvjetljenje"</string>
     <string name="quick_settings_rotation_unlocked_label" msgid="7305323031808150099">"Automatsko rotiranje"</string>
-    <!-- no translation found for accessibility_quick_settings_rotation (4231661040698488779) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_rotation_value (1428962304214992318) -->
-    <skip />
+    <string name="accessibility_quick_settings_rotation" msgid="4231661040698488779">"Automatsko rotiranje ekrana"</string>
+    <string name="accessibility_quick_settings_rotation_value" msgid="1428962304214992318">"Postaviti način rada: <xliff:g id="ID_1">%s</xliff:g>"</string>
     <string name="quick_settings_rotation_locked_label" msgid="6359205706154282377">"Rotiranje je zaključano"</string>
     <string name="quick_settings_rotation_locked_portrait_label" msgid="5102691921442135053">"Uspravno"</string>
     <string name="quick_settings_rotation_locked_landscape_label" msgid="8553157770061178719">"Vodoravno"</string>
@@ -295,8 +287,7 @@
     <string name="quick_settings_wifi_not_connected" msgid="7171904845345573431">"Nije povezano"</string>
     <string name="quick_settings_wifi_no_network" msgid="2221993077220856376">"Nema mreže"</string>
     <string name="quick_settings_wifi_off_label" msgid="7558778100843885864">"Wi-Fi isključen"</string>
-    <!-- no translation found for quick_settings_wifi_on_label (7607810331387031235) -->
-    <skip />
+    <string name="quick_settings_wifi_on_label" msgid="7607810331387031235">"Wi-Fi uključen"</string>
     <string name="quick_settings_wifi_detail_empty_text" msgid="269990350383909226">"Nema dostupnih Wi-Fi mreža"</string>
     <string name="quick_settings_cast_title" msgid="7709016546426454729">"Prebacivanje"</string>
     <string name="quick_settings_casting" msgid="6601710681033353316">"Prebacivanje"</string>
@@ -350,7 +341,8 @@
     <string name="zen_silence_introduction" msgid="3137882381093271568">"Ovim se blokiraju SVI zvukovi i vibracije, uključujući alarme, muziku, video zapise i igre."</string>
     <string name="keyguard_more_overflow_text" msgid="9195222469041601365">"+<xliff:g id="NUMBER_OF_NOTIFICATIONS">%d</xliff:g>"</string>
     <string name="speed_bump_explanation" msgid="1288875699658819755">"Prikaži manje važna obavještenja ispod"</string>
-    <string name="notification_tap_again" msgid="8524949573675922138">"Dodirnite ponovo da otvorite"</string>
+    <!-- no translation found for notification_tap_again (7590196980943943842) -->
+    <skip />
     <string name="keyguard_unlock" msgid="8043466894212841998">"Prevucite prema gore da otključate"</string>
     <string name="phone_hint" msgid="4872890986869209950">"Prevucite preko ikone da otvorite telefon"</string>
     <string name="voice_hint" msgid="8939888732119726665">"Prevucite preko ikone za glasovnu pomoć"</string>
@@ -428,7 +420,7 @@
     <string name="accessibility_volume_expand" msgid="5946812790999244205">"Proširi"</string>
     <string name="accessibility_volume_collapse" msgid="3609549593031810875">"Skupi"</string>
     <string name="screen_pinning_title" msgid="3273740381976175811">"Ekran je prikačen"</string>
-    <string name="screen_pinning_description" msgid="3577937698406151604">"Ovim ekran ostaje prikazan dok ga ne otkačite. Da biste ga otkačili dodirnite i držite Nazad."</string>
+    <string name="screen_pinning_description" msgid="7238941806855968768">"Ovim ekran ostaje prikazan dok ga ne otkačite. Da biste ga otkačili dodirnite i držite Nazad."</string>
     <string name="screen_pinning_positive" msgid="3783985798366751226">"Jasno mi je"</string>
     <string name="screen_pinning_negative" msgid="3741602308343880268">"Ne, hvala"</string>
     <string name="quick_settings_reset_confirmation_title" msgid="748792586749897883">"Želite li sakriti <xliff:g id="TILE_LABEL">%1$s</xliff:g>?"</string>
@@ -438,17 +430,15 @@
     <string name="volumeui_prompt_allow" msgid="7954396902482228786">"Dozvoli"</string>
     <string name="volumeui_prompt_deny" msgid="5720663643411696731">"Odbij"</string>
     <string name="volumeui_notification_title" msgid="4906770126345910955">"<xliff:g id="APP_NAME">%1$s</xliff:g> je dijaloški okvir za jačinu zvuka"</string>
-    <string name="volumeui_notification_text" msgid="1826889705095768656">"Dodirnite da vratite original."</string>
+    <string name="volumeui_notification_text" msgid="8819536904234337445">"Dodirnite za povrat originala."</string>
     <string name="managed_profile_foreground_toast" msgid="5421487114739245972">"Koristite svoj profil za posao"</string>
     <!-- String.format failed for translation -->
     <!-- no translation found for volume_stream_content_description_unmute (4436631538779230857) -->
     <skip />
     <string name="volume_stream_content_description_vibrate" msgid="1187944970457807498">"%1$s. Dodirnite za postavljanje vibracije. Zvukovi usluga pristupačnosti mogu biti isključeni."</string>
     <string name="volume_stream_content_description_mute" msgid="3625049841390467354">"%1$s. Dodirnite da isključite zvuk. Zvukovi usluga pristupačnosti mogu biti isključeni."</string>
-    <!-- no translation found for volume_dialog_accessibility_shown_message (1834631467074259998) -->
-    <skip />
-    <!-- no translation found for volume_dialog_accessibility_dismissed_message (51543526013711399) -->
-    <skip />
+    <string name="volume_dialog_accessibility_shown_message" msgid="1834631467074259998">"Prikazane kontrole jačine zvuka za: %s. Prevucite prema gore za odbacivanje."</string>
+    <string name="volume_dialog_accessibility_dismissed_message" msgid="51543526013711399">"Kontrole jačine zvuka sakrivene"</string>
     <string name="system_ui_tuner" msgid="708224127392452018">"Podešavač za korisničko sučelje sistema"</string>
     <string name="show_battery_percentage" msgid="5444136600512968798">"Prikaži ugrađeni postotak baterije"</string>
     <string name="show_battery_percentage_summary" msgid="3215025775576786037">"Prikazuje postotak nivoa baterije unutar ikone na statusnoj traci kada se baterija ne puni"</string>
@@ -644,27 +634,17 @@
     <string name="accessibility_qs_edit_tile_removed" msgid="8584304916627913440">"<xliff:g id="TILE_NAME">%1$s</xliff:g> je uklonjen"</string>
     <string name="accessibility_qs_edit_tile_moved" msgid="4343693412689365038">"<xliff:g id="TILE_NAME">%1$s</xliff:g> je premješten na poziciju <xliff:g id="POSITION">%2$d</xliff:g>"</string>
     <string name="accessibility_desc_quick_settings_edit" msgid="8073587401747016103">"Uređivanje brzih postavki"</string>
-    <!-- no translation found for accessibility_desc_notification_icon (8352414185263916335) -->
-    <skip />
+    <string name="accessibility_desc_notification_icon" msgid="8352414185263916335">"<xliff:g id="ID_1">%1$s</xliff:g> obavještenje: <xliff:g id="ID_2">%2$s</xliff:g>"</string>
     <string name="dock_forced_resizable" msgid="5914261505436217520">"Aplikacija možda neće raditi na podijeljenom ekranu"</string>
     <string name="dock_non_resizeble_failed_to_dock_text" msgid="3871617304250207291">"Aplikacija ne podržava dijeljenje ekrana."</string>
-    <!-- no translation found for accessibility_quick_settings_settings (6132460890024942157) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_expand (2375165227880477530) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_collapse (1792625797142648105) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_alarm_set (1863000242431528676) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_user (1567445362870421770) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_no_internet (31890692343084075) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_open_details (4230931801728005194) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_open_settings (7806613775728380737) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_edit (7839992848995240393) -->
-    <skip />
+    <string name="accessibility_quick_settings_settings" msgid="6132460890024942157">"Otvori postavke."</string>
+    <string name="accessibility_quick_settings_expand" msgid="2375165227880477530">"Otvoriti brze postavke."</string>
+    <string name="accessibility_quick_settings_collapse" msgid="1792625797142648105">"Zatvoriti brze postavke."</string>
+    <string name="accessibility_quick_settings_alarm_set" msgid="1863000242431528676">"Alarm postavljen."</string>
+    <string name="accessibility_quick_settings_user" msgid="1567445362870421770">"Prijavljeni ste kao <xliff:g id="ID_1">%s</xliff:g>"</string>
+    <string name="accessibility_quick_settings_no_internet" msgid="31890692343084075">"Nema internet veze."</string>
+    <string name="accessibility_quick_settings_open_details" msgid="4230931801728005194">"Otvori detalje."</string>
+    <string name="accessibility_quick_settings_open_settings" msgid="7806613775728380737">"Otvori postavke za: <xliff:g id="ID_1">%s</xliff:g>."</string>
+    <string name="accessibility_quick_settings_edit" msgid="7839992848995240393">"Urediti raspored postavki."</string>
     <string name="accessibility_quick_settings_page" msgid="5032979051755200721">"Stranica <xliff:g id="ID_1">%1$d</xliff:g> od <xliff:g id="ID_2">%2$d</xliff:g>"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-bs-rBA/strings_tv.xml b/packages/SystemUI/res/values-bs-rBA/strings_tv.xml
index 867aa9d..df27da3 100644
--- a/packages/SystemUI/res/values-bs-rBA/strings_tv.xml
+++ b/packages/SystemUI/res/values-bs-rBA/strings_tv.xml
@@ -24,10 +24,8 @@
     <string name="pip_play" msgid="674145557658227044">"Pokreni"</string>
     <string name="pip_pause" msgid="8412075640017218862">"Pauziraj"</string>
     <string name="pip_hold_home" msgid="340086535668778109">"Za kontr. PIP držite "<b>"HOME"</b></string>
-    <!-- no translation found for pip_onboarding_title (7850436557670253991) -->
-    <skip />
-    <!-- no translation found for pip_onboarding_description (4028124563309465267) -->
-    <skip />
+    <string name="pip_onboarding_title" msgid="7850436557670253991">"Slika u slici"</string>
+    <string name="pip_onboarding_description" msgid="4028124563309465267">"Ovim videozapis ostaje prikazan sve dok pokrenete sljedeći. Pritisnite i držite "<b>" POČETAK "</b>" za kontrole PIP-a."</string>
     <string name="pip_onboarding_button" msgid="3957426748484904611">"Jasno mi je"</string>
     <string name="recents_tv_dismiss" msgid="3555093879593377731">"Odbaci"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-ca/strings.xml b/packages/SystemUI/res/values-ca/strings.xml
index a794ff6..f836a99 100644
--- a/packages/SystemUI/res/values-ca/strings.xml
+++ b/packages/SystemUI/res/values-ca/strings.xml
@@ -71,7 +71,7 @@
     <string name="screenshot_saving_title" msgid="8242282144535555697">"S\'està desant la captura de pantalla..."</string>
     <string name="screenshot_saving_text" msgid="2419718443411738818">"La captura de pantalla s\'ha desat."</string>
     <string name="screenshot_saved_title" msgid="6461865960961414961">"S\'ha fet una captura de pantalla."</string>
-    <string name="screenshot_saved_text" msgid="1152839647677558815">"Toca per veure la captura de pantalla."</string>
+    <string name="screenshot_saved_text" msgid="2685605830386712477">"Toca la notificació per veure la captura de pantalla."</string>
     <string name="screenshot_failed_title" msgid="705781116746922771">"No s\'ha pogut fer una captura de pantalla."</string>
     <string name="screenshot_failed_to_save_unknown_text" msgid="7887826345701753830">"S\'ha trobat un problema en desar la captura de pantalla."</string>
     <string name="screenshot_failed_to_save_text" msgid="2592658083866306296">"La captura de pantalla no es pot desar perquè no hi ha prou espai d\'emmagatzematge."</string>
@@ -118,8 +118,7 @@
     <string name="accessibility_data_signal_full" msgid="2708384608124519369">"Senyal de dades: complet."</string>
     <string name="accessibility_wifi_name" msgid="7202151365171148501">"S\'ha connectat a <xliff:g id="WIFI">%s</xliff:g>."</string>
     <string name="accessibility_bluetooth_name" msgid="8441517146585531676">"S\'ha connectat a <xliff:g id="BLUETOOTH">%s</xliff:g>."</string>
-    <!-- no translation found for accessibility_cast_name (4026393061247081201) -->
-    <skip />
+    <string name="accessibility_cast_name" msgid="4026393061247081201">"Està connectat amb <xliff:g id="CAST">%s</xliff:g>."</string>
     <string name="accessibility_no_wimax" msgid="4329180129727630368">"Sense WiMAX."</string>
     <string name="accessibility_wimax_one_bar" msgid="4170994299011863648">"Una barra de WiMAX."</string>
     <string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"Dues barres de WiMAX."</string>
@@ -150,19 +149,16 @@
     <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Vora"</string>
     <string name="accessibility_data_connection_wifi" msgid="2324496756590645221">"Wi-Fi"</string>
     <string name="accessibility_no_sim" msgid="8274017118472455155">"No hi ha cap targeta SIM."</string>
-    <!-- no translation found for accessibility_cell_data (7080312242791850520) -->
-    <skip />
-    <!-- no translation found for accessibility_cell_data_on (4310018593519761767) -->
-    <skip />
+    <string name="accessibility_cell_data" msgid="7080312242791850520">"Dades mòbils"</string>
+    <string name="accessibility_cell_data_on" msgid="4310018593519761767">"Les dades mòbils estan activades"</string>
     <string name="accessibility_cell_data_off" msgid="8000803571751407635">"Les dades mòbils estan desactivades"</string>
     <string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"Ancoratge de Bluetooth"</string>
     <string name="accessibility_airplane_mode" msgid="834748999790763092">"Mode d\'avió."</string>
     <string name="accessibility_no_sims" msgid="3957997018324995781">"No hi ha cap targeta SIM."</string>
     <string name="accessibility_carrier_network_change_mode" msgid="4017301580441304305">"S\'està canviant la xarxa de l\'operador de telefonia mòbil."</string>
-    <!-- no translation found for accessibility_battery_details (7645516654955025422) -->
-    <skip />
+    <string name="accessibility_battery_details" msgid="7645516654955025422">"Obre la informació detallada de la bateria"</string>
     <string name="accessibility_battery_level" msgid="7451474187113371965">"<xliff:g id="NUMBER">%d</xliff:g> per cent de bateria."</string>
-    <string name="accessibility_battery_level_charging" msgid="1147587904439319646">"La bateria s\'està carregant, <xliff:g id="BATTERY_PERCENTAGE">%d</xliff:g> per cent."</string>
+    <string name="accessibility_battery_level_charging" msgid="1147587904439319646">"La bateria s\'està carregant, <xliff:g id="BATTERY_PERCENTAGE">%d</xliff:g>%%."</string>
     <string name="accessibility_settings_button" msgid="799583911231893380">"Configuració del sistema."</string>
     <string name="accessibility_notifications_button" msgid="4498000369779421892">"Notificacions."</string>
     <string name="accessibility_remove_notification" msgid="3603099514902182350">"Esborra la notificació."</string>
@@ -200,13 +196,11 @@
     <string name="accessibility_quick_settings_dnd_priority_on" msgid="1448402297221249355">"El mode No molesteu està activat (només amb prioritat)."</string>
     <string name="accessibility_quick_settings_dnd_none_on" msgid="6882582132662613537">"El mode No molesteu està activat; silenci total."</string>
     <string name="accessibility_quick_settings_dnd_alarms_on" msgid="9152834845587554157">"El mode No molesteu està activat (només alarmes)."</string>
-    <!-- no translation found for accessibility_quick_settings_dnd (6607873236717185815) -->
-    <skip />
+    <string name="accessibility_quick_settings_dnd" msgid="6607873236717185815">"Mode No molesteu."</string>
     <string name="accessibility_quick_settings_dnd_off" msgid="2371832603753738581">"El mode No molesteu està desactivat."</string>
     <string name="accessibility_quick_settings_dnd_changed_off" msgid="898107593453022935">"S\'ha desactivat el mode No molesteu."</string>
     <string name="accessibility_quick_settings_dnd_changed_on" msgid="4483780856613561039">"S\'ha activat el mode No molesteu."</string>
-    <!-- no translation found for accessibility_quick_settings_bluetooth (6341675755803320038) -->
-    <skip />
+    <string name="accessibility_quick_settings_bluetooth" msgid="6341675755803320038">"Bluetooth."</string>
     <string name="accessibility_quick_settings_bluetooth_off" msgid="2133631372372064339">"El Bluetooth està desactivat."</string>
     <string name="accessibility_quick_settings_bluetooth_on" msgid="7681999166216621838">"El Bluetooth està activat."</string>
     <string name="accessibility_quick_settings_bluetooth_connecting" msgid="6953242966685343855">"S\'està connectant el Bluetooth."</string>
@@ -272,10 +266,8 @@
     <string name="quick_settings_bluetooth_detail_empty_text" msgid="4910015762433302860">"No hi ha dispositius vinculats  disponibles."</string>
     <string name="quick_settings_brightness_label" msgid="6968372297018755815">"Brillantor"</string>
     <string name="quick_settings_rotation_unlocked_label" msgid="7305323031808150099">"Gira automàticament"</string>
-    <!-- no translation found for accessibility_quick_settings_rotation (4231661040698488779) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_rotation_value (1428962304214992318) -->
-    <skip />
+    <string name="accessibility_quick_settings_rotation" msgid="4231661040698488779">"Gira la pantalla automàticament"</string>
+    <string name="accessibility_quick_settings_rotation_value" msgid="1428962304214992318">"Estableix en <xliff:g id="ID_1">%s</xliff:g>"</string>
     <string name="quick_settings_rotation_locked_label" msgid="6359205706154282377">"Rotació bloquejada"</string>
     <string name="quick_settings_rotation_locked_portrait_label" msgid="5102691921442135053">"Vertical"</string>
     <string name="quick_settings_rotation_locked_landscape_label" msgid="8553157770061178719">"Horitzontal"</string>
@@ -294,8 +286,7 @@
     <string name="quick_settings_wifi_not_connected" msgid="7171904845345573431">"Desconnectat"</string>
     <string name="quick_settings_wifi_no_network" msgid="2221993077220856376">"No hi ha cap xarxa"</string>
     <string name="quick_settings_wifi_off_label" msgid="7558778100843885864">"Wi-Fi desconnectada"</string>
-    <!-- no translation found for quick_settings_wifi_on_label (7607810331387031235) -->
-    <skip />
+    <string name="quick_settings_wifi_on_label" msgid="7607810331387031235">"La Wi-Fi està activada"</string>
     <string name="quick_settings_wifi_detail_empty_text" msgid="269990350383909226">"No hi ha cap xarxa Wi-Fi disponible"</string>
     <string name="quick_settings_cast_title" msgid="7709016546426454729">"Emet"</string>
     <string name="quick_settings_casting" msgid="6601710681033353316">"En emissió"</string>
@@ -349,7 +340,7 @@
     <string name="zen_silence_introduction" msgid="3137882381093271568">"Es bloquejaran TOTS els sons i totes les vibracions, inclosos els de vídeos, jocs, alarmes i música."</string>
     <string name="keyguard_more_overflow_text" msgid="9195222469041601365">"+<xliff:g id="NUMBER_OF_NOTIFICATIONS">%d</xliff:g>"</string>
     <string name="speed_bump_explanation" msgid="1288875699658819755">"Notificacions menys urgents a continuació"</string>
-    <string name="notification_tap_again" msgid="8524949573675922138">"Torna a tocar per obrir"</string>
+    <string name="notification_tap_again" msgid="7590196980943943842">"Torna a tocar per obrir-la."</string>
     <string name="keyguard_unlock" msgid="8043466894212841998">"Llisca cap amunt per desbloquejar el teclat"</string>
     <string name="phone_hint" msgid="4872890986869209950">"Llisca des de la icona per obrir el telèfon"</string>
     <string name="voice_hint" msgid="8939888732119726665">"Llisca des de la icona per obrir l\'assistent de veu"</string>
@@ -427,7 +418,7 @@
     <string name="accessibility_volume_expand" msgid="5946812790999244205">"Amplia"</string>
     <string name="accessibility_volume_collapse" msgid="3609549593031810875">"Replega"</string>
     <string name="screen_pinning_title" msgid="3273740381976175811">"La pantalla està fixada"</string>
-    <string name="screen_pinning_description" msgid="3577937698406151604">"Continuarà a la visualització fins que n\'anul·lis la fixació. Per fer-ho, toca i mantén premut el botó Enrere."</string>
+    <string name="screen_pinning_description" msgid="7238941806855968768">"Aquest element es continuarà mostrant fins que deixis de fixar-lo. Per fer-ho, toca i mantén premut el botó Enrere."</string>
     <string name="screen_pinning_positive" msgid="3783985798366751226">"D\'acord"</string>
     <string name="screen_pinning_negative" msgid="3741602308343880268">"No, gràcies"</string>
     <string name="quick_settings_reset_confirmation_title" msgid="748792586749897883">"Vols amagar <xliff:g id="TILE_LABEL">%1$s</xliff:g>?"</string>
@@ -437,15 +428,13 @@
     <string name="volumeui_prompt_allow" msgid="7954396902482228786">"Permet"</string>
     <string name="volumeui_prompt_deny" msgid="5720663643411696731">"Denega"</string>
     <string name="volumeui_notification_title" msgid="4906770126345910955">"<xliff:g id="APP_NAME">%1$s</xliff:g> és el diàleg de volum"</string>
-    <string name="volumeui_notification_text" msgid="1826889705095768656">"Toca per restaurar l\'original."</string>
+    <string name="volumeui_notification_text" msgid="8819536904234337445">"Toca la notificació per restaurar el valor original."</string>
     <string name="managed_profile_foreground_toast" msgid="5421487114739245972">"Estàs utilitzant el perfil professional"</string>
     <string name="volume_stream_content_description_unmute" msgid="4436631538779230857">"%1$s. Toca per activar el so."</string>
     <string name="volume_stream_content_description_vibrate" msgid="1187944970457807498">"%1$s. Toca per activar la vibració. Pot ser que els serveis d\'accessibilitat se silenciïn."</string>
     <string name="volume_stream_content_description_mute" msgid="3625049841390467354">"%1$s. Toca per silenciar el so. Pot ser que els serveis d\'accessibilitat se silenciïn."</string>
-    <!-- no translation found for volume_dialog_accessibility_shown_message (1834631467074259998) -->
-    <skip />
-    <!-- no translation found for volume_dialog_accessibility_dismissed_message (51543526013711399) -->
-    <skip />
+    <string name="volume_dialog_accessibility_shown_message" msgid="1834631467074259998">"Es mostren %s controls de volum. Llisca cap amunt per ignorar-ho."</string>
+    <string name="volume_dialog_accessibility_dismissed_message" msgid="51543526013711399">"Els controls de volum estan amagats"</string>
     <string name="system_ui_tuner" msgid="708224127392452018">"Personalitzador d\'interfície d\'usuari"</string>
     <string name="show_battery_percentage" msgid="5444136600512968798">"Mostra el percentatge de la bateria inserit"</string>
     <string name="show_battery_percentage_summary" msgid="3215025775576786037">"Mostra el percentatge del nivell de bateria dins de la icona de la barra d\'estat quan no s\'estigui carregant"</string>
@@ -641,27 +630,17 @@
     <string name="accessibility_qs_edit_tile_removed" msgid="8584304916627913440">"<xliff:g id="TILE_NAME">%1$s</xliff:g> s\'ha suprimit"</string>
     <string name="accessibility_qs_edit_tile_moved" msgid="4343693412689365038">"<xliff:g id="TILE_NAME">%1$s</xliff:g> s\'ha mogut a la posició <xliff:g id="POSITION">%2$d</xliff:g>"</string>
     <string name="accessibility_desc_quick_settings_edit" msgid="8073587401747016103">"Editor de la configuració ràpida."</string>
-    <!-- no translation found for accessibility_desc_notification_icon (8352414185263916335) -->
-    <skip />
+    <string name="accessibility_desc_notification_icon" msgid="8352414185263916335">"Notificació de <xliff:g id="ID_1">%1$s</xliff:g>: <xliff:g id="ID_2">%2$s</xliff:g>"</string>
     <string name="dock_forced_resizable" msgid="5914261505436217520">"És possible que l\'aplicació no funcioni amb la pantalla dividida."</string>
     <string name="dock_non_resizeble_failed_to_dock_text" msgid="3871617304250207291">"L\'aplicació no admet la pantalla dividida."</string>
-    <!-- no translation found for accessibility_quick_settings_settings (6132460890024942157) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_expand (2375165227880477530) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_collapse (1792625797142648105) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_alarm_set (1863000242431528676) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_user (1567445362870421770) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_no_internet (31890692343084075) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_open_details (4230931801728005194) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_open_settings (7806613775728380737) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_edit (7839992848995240393) -->
-    <skip />
+    <string name="accessibility_quick_settings_settings" msgid="6132460890024942157">"Obre la configuració."</string>
+    <string name="accessibility_quick_settings_expand" msgid="2375165227880477530">"Obre la configuració ràpida."</string>
+    <string name="accessibility_quick_settings_collapse" msgid="1792625797142648105">"Tanca la configuració ràpida."</string>
+    <string name="accessibility_quick_settings_alarm_set" msgid="1863000242431528676">"L\'alarma s\'ha definit."</string>
+    <string name="accessibility_quick_settings_user" msgid="1567445362870421770">"S\'ha iniciat la sessió com a <xliff:g id="ID_1">%s</xliff:g>"</string>
+    <string name="accessibility_quick_settings_no_internet" msgid="31890692343084075">"Sense connexió a Internet."</string>
+    <string name="accessibility_quick_settings_open_details" msgid="4230931801728005194">"Obre la informació detallada."</string>
+    <string name="accessibility_quick_settings_open_settings" msgid="7806613775728380737">"Obre la configuració per a <xliff:g id="ID_1">%s</xliff:g>."</string>
+    <string name="accessibility_quick_settings_edit" msgid="7839992848995240393">"Edita l\'ordre de la configuració."</string>
     <string name="accessibility_quick_settings_page" msgid="5032979051755200721">"Pàgina <xliff:g id="ID_1">%1$d</xliff:g> (<xliff:g id="ID_2">%2$d</xliff:g> en total)"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-ca/strings_tv.xml b/packages/SystemUI/res/values-ca/strings_tv.xml
index f03a10f..0a3e220 100644
--- a/packages/SystemUI/res/values-ca/strings_tv.xml
+++ b/packages/SystemUI/res/values-ca/strings_tv.xml
@@ -24,10 +24,8 @@
     <string name="pip_play" msgid="674145557658227044">"Reprodueix"</string>
     <string name="pip_pause" msgid="8412075640017218862">"Posa en pausa"</string>
     <string name="pip_hold_home" msgid="340086535668778109">"Prem "<b>"INICI"</b>" per controlar PIP"</string>
-    <!-- no translation found for pip_onboarding_title (7850436557670253991) -->
-    <skip />
-    <!-- no translation found for pip_onboarding_description (4028124563309465267) -->
-    <skip />
+    <string name="pip_onboarding_title" msgid="7850436557670253991">"Imatge en imatge"</string>
+    <string name="pip_onboarding_description" msgid="4028124563309465267">"Amb aquesta opció el vídeo continua veient-se fins que en reprodueixes un altre. Mantén premut el botó "<b>"INICI"</b>" per controlar-la."</string>
     <string name="pip_onboarding_button" msgid="3957426748484904611">"D\'acord"</string>
     <string name="recents_tv_dismiss" msgid="3555093879593377731">"Ignora"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-cs/strings.xml b/packages/SystemUI/res/values-cs/strings.xml
index d1c5131..039be4e 100644
--- a/packages/SystemUI/res/values-cs/strings.xml
+++ b/packages/SystemUI/res/values-cs/strings.xml
@@ -73,7 +73,7 @@
     <string name="screenshot_saving_title" msgid="8242282144535555697">"Ukládání snímku obrazovky..."</string>
     <string name="screenshot_saving_text" msgid="2419718443411738818">"Probíhá ukládání snímku obrazovky."</string>
     <string name="screenshot_saved_title" msgid="6461865960961414961">"Snímek obrazovky Snímek obrazovky pořízen."</string>
-    <string name="screenshot_saved_text" msgid="1152839647677558815">"Snímek obrazovky zobrazíte dotykem."</string>
+    <string name="screenshot_saved_text" msgid="2685605830386712477">"Klepnutím zobrazíte snímek obrazovky."</string>
     <string name="screenshot_failed_title" msgid="705781116746922771">"Snímek obrazovky se nepodařilo zachytit."</string>
     <string name="screenshot_failed_to_save_unknown_text" msgid="7887826345701753830">"Při ukládání snímku obrazovky došlo k problému."</string>
     <string name="screenshot_failed_to_save_text" msgid="2592658083866306296">"Snímek obrazovky nelze pořídit kvůli nedostatku místa v úložišti."</string>
@@ -120,8 +120,7 @@
     <string name="accessibility_data_signal_full" msgid="2708384608124519369">"Plný signál datové sítě."</string>
     <string name="accessibility_wifi_name" msgid="7202151365171148501">"Připojeno k zařízení <xliff:g id="WIFI">%s</xliff:g>."</string>
     <string name="accessibility_bluetooth_name" msgid="8441517146585531676">"Připojeno k zařízení <xliff:g id="BLUETOOTH">%s</xliff:g>."</string>
-    <!-- no translation found for accessibility_cast_name (4026393061247081201) -->
-    <skip />
+    <string name="accessibility_cast_name" msgid="4026393061247081201">"Jste připojeni k zařízení <xliff:g id="CAST">%s</xliff:g>."</string>
     <string name="accessibility_no_wimax" msgid="4329180129727630368">"Žádný signál sítě WiMAX."</string>
     <string name="accessibility_wimax_one_bar" msgid="4170994299011863648">"Jedna čárka signálu sítě WiMAX."</string>
     <string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"Dvě čárky signálu sítě WiMAX."</string>
@@ -152,17 +151,14 @@
     <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string>
     <string name="accessibility_data_connection_wifi" msgid="2324496756590645221">"Wi-Fi"</string>
     <string name="accessibility_no_sim" msgid="8274017118472455155">"Žádná SIM karta."</string>
-    <!-- no translation found for accessibility_cell_data (7080312242791850520) -->
-    <skip />
-    <!-- no translation found for accessibility_cell_data_on (4310018593519761767) -->
-    <skip />
+    <string name="accessibility_cell_data" msgid="7080312242791850520">"Mobilní data"</string>
+    <string name="accessibility_cell_data_on" msgid="4310018593519761767">"Mobilní data jsou zapnuta"</string>
     <string name="accessibility_cell_data_off" msgid="8000803571751407635">"Mobilní data jsou vypnutá"</string>
     <string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"Sdílené připojení přes Bluetooth."</string>
     <string name="accessibility_airplane_mode" msgid="834748999790763092">"Režim Letadlo."</string>
     <string name="accessibility_no_sims" msgid="3957997018324995781">"Není vložena SIM karta"</string>
     <string name="accessibility_carrier_network_change_mode" msgid="4017301580441304305">"Probíhá změna sítě operátora."</string>
-    <!-- no translation found for accessibility_battery_details (7645516654955025422) -->
-    <skip />
+    <string name="accessibility_battery_details" msgid="7645516654955025422">"Otevřít podrobnosti o baterii"</string>
     <string name="accessibility_battery_level" msgid="7451474187113371965">"Stav baterie: <xliff:g id="NUMBER">%d</xliff:g> procent."</string>
     <!-- String.format failed for translation -->
     <!-- no translation found for accessibility_battery_level_charging (1147587904439319646) -->
@@ -204,13 +200,11 @@
     <string name="accessibility_quick_settings_dnd_priority_on" msgid="1448402297221249355">"Stav Nerušit je zapnutý – pouze prioritní vyrušení."</string>
     <string name="accessibility_quick_settings_dnd_none_on" msgid="6882582132662613537">"Je zapnut režim Nerušit – úplné ticho."</string>
     <string name="accessibility_quick_settings_dnd_alarms_on" msgid="9152834845587554157">"Nerušit, pouze budíky"</string>
-    <!-- no translation found for accessibility_quick_settings_dnd (6607873236717185815) -->
-    <skip />
+    <string name="accessibility_quick_settings_dnd" msgid="6607873236717185815">"Nerušit."</string>
     <string name="accessibility_quick_settings_dnd_off" msgid="2371832603753738581">"Stav Nerušit je vypnutý."</string>
     <string name="accessibility_quick_settings_dnd_changed_off" msgid="898107593453022935">"Stav Nerušit je vypnutý"</string>
     <string name="accessibility_quick_settings_dnd_changed_on" msgid="4483780856613561039">"Stav Nerušit je zapnutý."</string>
-    <!-- no translation found for accessibility_quick_settings_bluetooth (6341675755803320038) -->
-    <skip />
+    <string name="accessibility_quick_settings_bluetooth" msgid="6341675755803320038">"Bluetooth."</string>
     <string name="accessibility_quick_settings_bluetooth_off" msgid="2133631372372064339">"Rozhraní Bluetooth je vypnuto."</string>
     <string name="accessibility_quick_settings_bluetooth_on" msgid="7681999166216621838">"Rozhraní Bluetooth je zapnuto."</string>
     <string name="accessibility_quick_settings_bluetooth_connecting" msgid="6953242966685343855">"Probíhá připojování rozhraní Bluetooth."</string>
@@ -276,10 +270,8 @@
     <string name="quick_settings_bluetooth_detail_empty_text" msgid="4910015762433302860">"Nejsou dostupná žádná spárovaná zařízení"</string>
     <string name="quick_settings_brightness_label" msgid="6968372297018755815">"Jas"</string>
     <string name="quick_settings_rotation_unlocked_label" msgid="7305323031808150099">"Automatické otáčení"</string>
-    <!-- no translation found for accessibility_quick_settings_rotation (4231661040698488779) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_rotation_value (1428962304214992318) -->
-    <skip />
+    <string name="accessibility_quick_settings_rotation" msgid="4231661040698488779">"Automatické otočení obrazovky"</string>
+    <string name="accessibility_quick_settings_rotation_value" msgid="1428962304214992318">"Nastavit na <xliff:g id="ID_1">%s</xliff:g>"</string>
     <string name="quick_settings_rotation_locked_label" msgid="6359205706154282377">"Otáčení je uzamčeno"</string>
     <string name="quick_settings_rotation_locked_portrait_label" msgid="5102691921442135053">"Na výšku"</string>
     <string name="quick_settings_rotation_locked_landscape_label" msgid="8553157770061178719">"Na šířku"</string>
@@ -298,8 +290,7 @@
     <string name="quick_settings_wifi_not_connected" msgid="7171904845345573431">"Nepřipojeno"</string>
     <string name="quick_settings_wifi_no_network" msgid="2221993077220856376">"Žádná síť"</string>
     <string name="quick_settings_wifi_off_label" msgid="7558778100843885864">"Wi-Fi vypnuta"</string>
-    <!-- no translation found for quick_settings_wifi_on_label (7607810331387031235) -->
-    <skip />
+    <string name="quick_settings_wifi_on_label" msgid="7607810331387031235">"Wi-Fi je zapnutá"</string>
     <string name="quick_settings_wifi_detail_empty_text" msgid="269990350383909226">"Žádné sítě Wi-Fi nejsou k dispozici"</string>
     <string name="quick_settings_cast_title" msgid="7709016546426454729">"Odeslat"</string>
     <string name="quick_settings_casting" msgid="6601710681033353316">"Odesílání"</string>
@@ -353,7 +344,7 @@
     <string name="zen_silence_introduction" msgid="3137882381093271568">"V tomto režimu budou blokovány VŠECHNY zvuky a vibrace, včetně těch z budíků, hudby, videí a her."</string>
     <string name="keyguard_more_overflow_text" msgid="9195222469041601365">"+<xliff:g id="NUMBER_OF_NOTIFICATIONS">%d</xliff:g>"</string>
     <string name="speed_bump_explanation" msgid="1288875699658819755">"Méně urgentní oznámení níže"</string>
-    <string name="notification_tap_again" msgid="8524949573675922138">"Otevřete opětovným klepnutím"</string>
+    <string name="notification_tap_again" msgid="7590196980943943842">"Oznámení otevřete opětovným klepnutím"</string>
     <string name="keyguard_unlock" msgid="8043466894212841998">"Zařízení odemknete přejetím prstem nahoru"</string>
     <string name="phone_hint" msgid="4872890986869209950">"Telefon otevřete přejetím prstem od ikony"</string>
     <string name="voice_hint" msgid="8939888732119726665">"Hlasovou asistenci otevřete přejetím prstem od ikony"</string>
@@ -431,7 +422,7 @@
     <string name="accessibility_volume_expand" msgid="5946812790999244205">"Rozbalit"</string>
     <string name="accessibility_volume_collapse" msgid="3609549593031810875">"Sbalit"</string>
     <string name="screen_pinning_title" msgid="3273740381976175811">"Obrazovka je připnuta"</string>
-    <string name="screen_pinning_description" msgid="3577937698406151604">"Obsah bude připnut v zobrazení, dokud jej neuvolníte. Uvolníte jej stisknutím a podržením tlačítka Zpět."</string>
+    <string name="screen_pinning_description" msgid="7238941806855968768">"Obsah bude připnut v zobrazení, dokud jej neuvolníte. Uvolníte jej stisknutím a podržením tlačítka Zpět."</string>
     <string name="screen_pinning_positive" msgid="3783985798366751226">"Rozumím"</string>
     <string name="screen_pinning_negative" msgid="3741602308343880268">"Ne, děkuji"</string>
     <string name="quick_settings_reset_confirmation_title" msgid="748792586749897883">"Skrýt <xliff:g id="TILE_LABEL">%1$s</xliff:g>?"</string>
@@ -441,15 +432,13 @@
     <string name="volumeui_prompt_allow" msgid="7954396902482228786">"Povolit"</string>
     <string name="volumeui_prompt_deny" msgid="5720663643411696731">"Odmítnout"</string>
     <string name="volumeui_notification_title" msgid="4906770126345910955">"<xliff:g id="APP_NAME">%1$s</xliff:g> je dialog hlasitosti"</string>
-    <string name="volumeui_notification_text" msgid="1826889705095768656">"Klepnutím obnovíte originál."</string>
+    <string name="volumeui_notification_text" msgid="8819536904234337445">"Klepnutím obnovíte původní nastavení."</string>
     <string name="managed_profile_foreground_toast" msgid="5421487114739245972">"Používáte pracovní profil"</string>
     <string name="volume_stream_content_description_unmute" msgid="4436631538779230857">"%1$s. Klepnutím zapnete zvuk."</string>
     <string name="volume_stream_content_description_vibrate" msgid="1187944970457807498">"%1$s. Klepnutím aktivujete režim vibrací. Služby přístupnosti mohou být ztlumeny."</string>
     <string name="volume_stream_content_description_mute" msgid="3625049841390467354">"%1$s. Klepnutím vypnete zvuk. Služby přístupnosti mohou být ztlumeny."</string>
-    <!-- no translation found for volume_dialog_accessibility_shown_message (1834631467074259998) -->
-    <skip />
-    <!-- no translation found for volume_dialog_accessibility_dismissed_message (51543526013711399) -->
-    <skip />
+    <string name="volume_dialog_accessibility_shown_message" msgid="1834631467074259998">"Ovládací prvky hlasitosti aplikace %s jsou zobrazeny. Zavřete je přejetím prstem."</string>
+    <string name="volume_dialog_accessibility_dismissed_message" msgid="51543526013711399">"Ovládací prvky hlasitosti jsou skryty"</string>
     <string name="system_ui_tuner" msgid="708224127392452018">"Nástroj na ladění uživatelského rozhraní systému"</string>
     <string name="show_battery_percentage" msgid="5444136600512968798">"Zobrazovat vložené procento nabití baterie"</string>
     <string name="show_battery_percentage_summary" msgid="3215025775576786037">"Když neprobíhá nabíjení, zobrazit v ikoně na stavovém řádku procento nabití baterie"</string>
@@ -645,27 +634,17 @@
     <string name="accessibility_qs_edit_tile_removed" msgid="8584304916627913440">"Dlaždice <xliff:g id="TILE_NAME">%1$s</xliff:g> byla odstraněna"</string>
     <string name="accessibility_qs_edit_tile_moved" msgid="4343693412689365038">"Dlaždice <xliff:g id="TILE_NAME">%1$s</xliff:g> byla přesunuta na pozici <xliff:g id="POSITION">%2$d</xliff:g>"</string>
     <string name="accessibility_desc_quick_settings_edit" msgid="8073587401747016103">"Editor rychlého nastavení"</string>
-    <!-- no translation found for accessibility_desc_notification_icon (8352414185263916335) -->
-    <skip />
+    <string name="accessibility_desc_notification_icon" msgid="8352414185263916335">"Oznámení aplikace <xliff:g id="ID_1">%1$s</xliff:g>: <xliff:g id="ID_2">%2$s</xliff:g>"</string>
     <string name="dock_forced_resizable" msgid="5914261505436217520">"Aplikace v režimu rozdělené obrazovky nemusí fungovat."</string>
     <string name="dock_non_resizeble_failed_to_dock_text" msgid="3871617304250207291">"Aplikace nepodporuje režim rozdělené obrazovky."</string>
-    <!-- no translation found for accessibility_quick_settings_settings (6132460890024942157) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_expand (2375165227880477530) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_collapse (1792625797142648105) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_alarm_set (1863000242431528676) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_user (1567445362870421770) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_no_internet (31890692343084075) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_open_details (4230931801728005194) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_open_settings (7806613775728380737) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_edit (7839992848995240393) -->
-    <skip />
+    <string name="accessibility_quick_settings_settings" msgid="6132460890024942157">"Otevřít nastavení."</string>
+    <string name="accessibility_quick_settings_expand" msgid="2375165227880477530">"Otevřít rychlé nastavení."</string>
+    <string name="accessibility_quick_settings_collapse" msgid="1792625797142648105">"Zavřít rychlé nastavení."</string>
+    <string name="accessibility_quick_settings_alarm_set" msgid="1863000242431528676">"Budík je nastaven."</string>
+    <string name="accessibility_quick_settings_user" msgid="1567445362870421770">"Jste přihlášeni jako <xliff:g id="ID_1">%s</xliff:g>."</string>
+    <string name="accessibility_quick_settings_no_internet" msgid="31890692343084075">"Nejste připojeni k internetu."</string>
+    <string name="accessibility_quick_settings_open_details" msgid="4230931801728005194">"Otevřít podrobnosti."</string>
+    <string name="accessibility_quick_settings_open_settings" msgid="7806613775728380737">"Otevřít nastavení aplikace <xliff:g id="ID_1">%s</xliff:g>."</string>
+    <string name="accessibility_quick_settings_edit" msgid="7839992848995240393">"Upravit pořadí nastavení."</string>
     <string name="accessibility_quick_settings_page" msgid="5032979051755200721">"Stránka <xliff:g id="ID_1">%1$d</xliff:g> z <xliff:g id="ID_2">%2$d</xliff:g>"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-cs/strings_tv.xml b/packages/SystemUI/res/values-cs/strings_tv.xml
index f51afae..731ff5a 100644
--- a/packages/SystemUI/res/values-cs/strings_tv.xml
+++ b/packages/SystemUI/res/values-cs/strings_tv.xml
@@ -24,10 +24,8 @@
     <string name="pip_play" msgid="674145557658227044">"Přehrát"</string>
     <string name="pip_pause" msgid="8412075640017218862">"Pozastavit"</string>
     <string name="pip_hold_home" msgid="340086535668778109">"Funkci PIP lze ovládat podržením tlačítka "<b>"PLOCHA"</b></string>
-    <!-- no translation found for pip_onboarding_title (7850436557670253991) -->
-    <skip />
-    <!-- no translation found for pip_onboarding_description (4028124563309465267) -->
-    <skip />
+    <string name="pip_onboarding_title" msgid="7850436557670253991">"Obraz v obraze"</string>
+    <string name="pip_onboarding_description" msgid="4028124563309465267">"Video bude připnuto v zobrazení, dokud nepřehrajete další. Funkci lze ovládat podržením tlačítka "<b>"Plocha"</b>"."</string>
     <string name="pip_onboarding_button" msgid="3957426748484904611">"Rozumím"</string>
     <string name="recents_tv_dismiss" msgid="3555093879593377731">"Zavřít"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-da/strings.xml b/packages/SystemUI/res/values-da/strings.xml
index 39687a1..b9c04b8 100644
--- a/packages/SystemUI/res/values-da/strings.xml
+++ b/packages/SystemUI/res/values-da/strings.xml
@@ -71,7 +71,7 @@
     <string name="screenshot_saving_title" msgid="8242282144535555697">"Gemmer skærmbillede..."</string>
     <string name="screenshot_saving_text" msgid="2419718443411738818">"Skærmbilledet gemmes."</string>
     <string name="screenshot_saved_title" msgid="6461865960961414961">"Skærmbilledet er gemt."</string>
-    <string name="screenshot_saved_text" msgid="1152839647677558815">"Tryk for at se dit skærmbillede."</string>
+    <string name="screenshot_saved_text" msgid="2685605830386712477">"Tryk for at se dit skærmbillede."</string>
     <string name="screenshot_failed_title" msgid="705781116746922771">"Skærmbilledet kunne ikke tages."</string>
     <string name="screenshot_failed_to_save_unknown_text" msgid="7887826345701753830">"Der opstod et problem ved lagringen af skærmbilledet."</string>
     <string name="screenshot_failed_to_save_text" msgid="2592658083866306296">"Skærmbilledet kan ikke gemmes pga. begrænset lagerplads."</string>
@@ -118,8 +118,7 @@
     <string name="accessibility_data_signal_full" msgid="2708384608124519369">"Datasignal fuldt."</string>
     <string name="accessibility_wifi_name" msgid="7202151365171148501">"Tilsluttet <xliff:g id="WIFI">%s</xliff:g>."</string>
     <string name="accessibility_bluetooth_name" msgid="8441517146585531676">"Tilsluttet <xliff:g id="BLUETOOTH">%s</xliff:g>."</string>
-    <!-- no translation found for accessibility_cast_name (4026393061247081201) -->
-    <skip />
+    <string name="accessibility_cast_name" msgid="4026393061247081201">"Forbundet til <xliff:g id="CAST">%s</xliff:g>."</string>
     <string name="accessibility_no_wimax" msgid="4329180129727630368">"Ingen WiMAX."</string>
     <string name="accessibility_wimax_one_bar" msgid="4170994299011863648">"WiMAX en bjælke."</string>
     <string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"WiMAX to bjælker."</string>
@@ -150,17 +149,14 @@
     <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string>
     <string name="accessibility_data_connection_wifi" msgid="2324496756590645221">"Wi-Fi"</string>
     <string name="accessibility_no_sim" msgid="8274017118472455155">"Intet SIM-kort."</string>
-    <!-- no translation found for accessibility_cell_data (7080312242791850520) -->
-    <skip />
-    <!-- no translation found for accessibility_cell_data_on (4310018593519761767) -->
-    <skip />
+    <string name="accessibility_cell_data" msgid="7080312242791850520">"Mobildata"</string>
+    <string name="accessibility_cell_data_on" msgid="4310018593519761767">"Mobildata er slået til"</string>
     <string name="accessibility_cell_data_off" msgid="8000803571751407635">"Mobildata er slået fra."</string>
     <string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"Bluetooth-netdeling."</string>
     <string name="accessibility_airplane_mode" msgid="834748999790763092">"Flytilstand."</string>
     <string name="accessibility_no_sims" msgid="3957997018324995781">"Der er ikke noget SIM-kort."</string>
     <string name="accessibility_carrier_network_change_mode" msgid="4017301580441304305">"Mobilnetværket skiftes."</string>
-    <!-- no translation found for accessibility_battery_details (7645516654955025422) -->
-    <skip />
+    <string name="accessibility_battery_details" msgid="7645516654955025422">"Åbn oplysninger om batteri"</string>
     <string name="accessibility_battery_level" msgid="7451474187113371965">"Batteri <xliff:g id="NUMBER">%d</xliff:g> procent."</string>
     <string name="accessibility_battery_level_charging" msgid="1147587904439319646">"Batteriet oplades. <xliff:g id="BATTERY_PERCENTAGE">%d</xliff:g> procent."</string>
     <string name="accessibility_settings_button" msgid="799583911231893380">"Systemindstillinger."</string>
@@ -200,13 +196,11 @@
     <string name="accessibility_quick_settings_dnd_priority_on" msgid="1448402297221249355">"\"Forstyr ikke\" er slået til, kun prioritet."</string>
     <string name="accessibility_quick_settings_dnd_none_on" msgid="6882582132662613537">"\"Forstyr ikke\" er slået til, total stilhed."</string>
     <string name="accessibility_quick_settings_dnd_alarms_on" msgid="9152834845587554157">"\"Forstyr ikke\" er slået til, kun alarmer."</string>
-    <!-- no translation found for accessibility_quick_settings_dnd (6607873236717185815) -->
-    <skip />
+    <string name="accessibility_quick_settings_dnd" msgid="6607873236717185815">"Forstyr ikke."</string>
     <string name="accessibility_quick_settings_dnd_off" msgid="2371832603753738581">"\"Forstyr ikke\" er slået fra."</string>
     <string name="accessibility_quick_settings_dnd_changed_off" msgid="898107593453022935">"\"Forstyr ikke\" er slået fra."</string>
     <string name="accessibility_quick_settings_dnd_changed_on" msgid="4483780856613561039">"\"Forstyr ikke\" er slået til."</string>
-    <!-- no translation found for accessibility_quick_settings_bluetooth (6341675755803320038) -->
-    <skip />
+    <string name="accessibility_quick_settings_bluetooth" msgid="6341675755803320038">"Bluetooth."</string>
     <string name="accessibility_quick_settings_bluetooth_off" msgid="2133631372372064339">"Bluetooth er slået fra."</string>
     <string name="accessibility_quick_settings_bluetooth_on" msgid="7681999166216621838">"Bluetooth er slået til."</string>
     <string name="accessibility_quick_settings_bluetooth_connecting" msgid="6953242966685343855">"Opretter forbindelse til Bluetooth."</string>
@@ -272,10 +266,8 @@
     <string name="quick_settings_bluetooth_detail_empty_text" msgid="4910015762433302860">"Der er ingen tilgængelige parrede enheder"</string>
     <string name="quick_settings_brightness_label" msgid="6968372297018755815">"Lysstyrke"</string>
     <string name="quick_settings_rotation_unlocked_label" msgid="7305323031808150099">"Roter automatisk"</string>
-    <!-- no translation found for accessibility_quick_settings_rotation (4231661040698488779) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_rotation_value (1428962304214992318) -->
-    <skip />
+    <string name="accessibility_quick_settings_rotation" msgid="4231661040698488779">"Roter skærmen automatisk"</string>
+    <string name="accessibility_quick_settings_rotation_value" msgid="1428962304214992318">"Indstillet til <xliff:g id="ID_1">%s</xliff:g>"</string>
     <string name="quick_settings_rotation_locked_label" msgid="6359205706154282377">"Rotationen er låst"</string>
     <string name="quick_settings_rotation_locked_portrait_label" msgid="5102691921442135053">"Stående"</string>
     <string name="quick_settings_rotation_locked_landscape_label" msgid="8553157770061178719">"Liggende"</string>
@@ -294,8 +286,7 @@
     <string name="quick_settings_wifi_not_connected" msgid="7171904845345573431">"Ikke forbundet"</string>
     <string name="quick_settings_wifi_no_network" msgid="2221993077220856376">"Intet netværk"</string>
     <string name="quick_settings_wifi_off_label" msgid="7558778100843885864">"Wi-Fi slået fra"</string>
-    <!-- no translation found for quick_settings_wifi_on_label (7607810331387031235) -->
-    <skip />
+    <string name="quick_settings_wifi_on_label" msgid="7607810331387031235">"Wi-Fi er slået til"</string>
     <string name="quick_settings_wifi_detail_empty_text" msgid="269990350383909226">"Der er ingen tilgængelige Wi-Fi-netværk"</string>
     <string name="quick_settings_cast_title" msgid="7709016546426454729">"Cast"</string>
     <string name="quick_settings_casting" msgid="6601710681033353316">"Caster"</string>
@@ -349,7 +340,7 @@
     <string name="zen_silence_introduction" msgid="3137882381093271568">"Dette blokerer ALLE lyde og vibrationer, bl.a. fra alarmer, musik, videoer og spil."</string>
     <string name="keyguard_more_overflow_text" msgid="9195222469041601365">"+<xliff:g id="NUMBER_OF_NOTIFICATIONS">%d</xliff:g>"</string>
     <string name="speed_bump_explanation" msgid="1288875699658819755">"Mindre presserende underretninger nedenfor"</string>
-    <string name="notification_tap_again" msgid="8524949573675922138">"Tryk igen for at åbne"</string>
+    <string name="notification_tap_again" msgid="7590196980943943842">"Tryk igen for at åbne"</string>
     <string name="keyguard_unlock" msgid="8043466894212841998">"Stryg opad for at låse op"</string>
     <string name="phone_hint" msgid="4872890986869209950">"Stryg fra telefonikonet"</string>
     <string name="voice_hint" msgid="8939888732119726665">"Stryg fra mikrofonikonet"</string>
@@ -427,7 +418,7 @@
     <string name="accessibility_volume_expand" msgid="5946812790999244205">"Udvid"</string>
     <string name="accessibility_volume_collapse" msgid="3609549593031810875">"Skjul"</string>
     <string name="screen_pinning_title" msgid="3273740381976175811">"Skærmen er fastgjort"</string>
-    <string name="screen_pinning_description" msgid="3577937698406151604">"Dette fastholder skærmen i visningen, indtil du frigør den. Tryk på Tilbage, og hold fingeren nede for at frigøre skærmen."</string>
+    <string name="screen_pinning_description" msgid="7238941806855968768">"Dette fastholder skærmen i visningen, indtil du frigør den. Tryk på Tilbage, og hold fingeren nede for at frigøre skærmen."</string>
     <string name="screen_pinning_positive" msgid="3783985798366751226">"OK, det er forstået"</string>
     <string name="screen_pinning_negative" msgid="3741602308343880268">"Nej tak"</string>
     <string name="quick_settings_reset_confirmation_title" msgid="748792586749897883">"Vil du skjule <xliff:g id="TILE_LABEL">%1$s</xliff:g>?"</string>
@@ -437,15 +428,13 @@
     <string name="volumeui_prompt_allow" msgid="7954396902482228786">"Tillad"</string>
     <string name="volumeui_prompt_deny" msgid="5720663643411696731">"Afvis"</string>
     <string name="volumeui_notification_title" msgid="4906770126345910955">"<xliff:g id="APP_NAME">%1$s</xliff:g> er dialogboksen for lydstyrke"</string>
-    <string name="volumeui_notification_text" msgid="1826889705095768656">"Tryk for at gendanne originalen."</string>
+    <string name="volumeui_notification_text" msgid="8819536904234337445">"Tryk for at gendanne det oprindelige."</string>
     <string name="managed_profile_foreground_toast" msgid="5421487114739245972">"Du bruger din arbejdsprofil"</string>
     <string name="volume_stream_content_description_unmute" msgid="4436631538779230857">"%1$s. Tryk for at slå lyden til."</string>
     <string name="volume_stream_content_description_vibrate" msgid="1187944970457807498">"%1$s. Tryk for at konfigurere til at vibrere. Tilgængelighedstjenester kan blive deaktiveret."</string>
     <string name="volume_stream_content_description_mute" msgid="3625049841390467354">"%1$s. Tryk for at slå lyden fra. Lyden i tilgængelighedstjenester kan blive slået fra."</string>
-    <!-- no translation found for volume_dialog_accessibility_shown_message (1834631467074259998) -->
-    <skip />
-    <!-- no translation found for volume_dialog_accessibility_dismissed_message (51543526013711399) -->
-    <skip />
+    <string name="volume_dialog_accessibility_shown_message" msgid="1834631467074259998">"Lydstyrkeknapperne for %s er synlige. Stryg op for at lukke."</string>
+    <string name="volume_dialog_accessibility_dismissed_message" msgid="51543526013711399">"Lydstyrkeknapperne er skjult"</string>
     <string name="system_ui_tuner" msgid="708224127392452018">"System UI Tuner"</string>
     <string name="show_battery_percentage" msgid="5444136600512968798">"Vis procent for det indbyggede batteri"</string>
     <string name="show_battery_percentage_summary" msgid="3215025775576786037">"Vis procenttallet for batteriniveauet i ikonet for statusbjælken, når der ikke oplades"</string>
@@ -641,27 +630,17 @@
     <string name="accessibility_qs_edit_tile_removed" msgid="8584304916627913440">"<xliff:g id="TILE_NAME">%1$s</xliff:g> fjernes"</string>
     <string name="accessibility_qs_edit_tile_moved" msgid="4343693412689365038">"<xliff:g id="TILE_NAME">%1$s</xliff:g> blev flyttet til position <xliff:g id="POSITION">%2$d</xliff:g>"</string>
     <string name="accessibility_desc_quick_settings_edit" msgid="8073587401747016103">"Redigeringsværktøj for Hurtige indstillinger."</string>
-    <!-- no translation found for accessibility_desc_notification_icon (8352414185263916335) -->
-    <skip />
+    <string name="accessibility_desc_notification_icon" msgid="8352414185263916335">"<xliff:g id="ID_1">%1$s</xliff:g>-underretning: <xliff:g id="ID_2">%2$s</xliff:g>"</string>
     <string name="dock_forced_resizable" msgid="5914261505436217520">"Appen fungerer muligvis ikke i delt skærm."</string>
     <string name="dock_non_resizeble_failed_to_dock_text" msgid="3871617304250207291">"Appen understøtter ikke delt skærm."</string>
-    <!-- no translation found for accessibility_quick_settings_settings (6132460890024942157) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_expand (2375165227880477530) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_collapse (1792625797142648105) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_alarm_set (1863000242431528676) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_user (1567445362870421770) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_no_internet (31890692343084075) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_open_details (4230931801728005194) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_open_settings (7806613775728380737) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_edit (7839992848995240393) -->
-    <skip />
+    <string name="accessibility_quick_settings_settings" msgid="6132460890024942157">"Åbn Indstillinger."</string>
+    <string name="accessibility_quick_settings_expand" msgid="2375165227880477530">"Åbn Hurtige indstillinger."</string>
+    <string name="accessibility_quick_settings_collapse" msgid="1792625797142648105">"Luk Hurtige indstillinger."</string>
+    <string name="accessibility_quick_settings_alarm_set" msgid="1863000242431528676">"Alarmen er indstillet."</string>
+    <string name="accessibility_quick_settings_user" msgid="1567445362870421770">"Logget ind som <xliff:g id="ID_1">%s</xliff:g>"</string>
+    <string name="accessibility_quick_settings_no_internet" msgid="31890692343084075">"Intet internet."</string>
+    <string name="accessibility_quick_settings_open_details" msgid="4230931801728005194">"Åbn oplysninger."</string>
+    <string name="accessibility_quick_settings_open_settings" msgid="7806613775728380737">"Åbn <xliff:g id="ID_1">%s</xliff:g>-indstillinger."</string>
+    <string name="accessibility_quick_settings_edit" msgid="7839992848995240393">"Rediger rækkefølgen af indstillinger."</string>
     <string name="accessibility_quick_settings_page" msgid="5032979051755200721">"Side <xliff:g id="ID_1">%1$d</xliff:g> af <xliff:g id="ID_2">%2$d</xliff:g>"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-da/strings_tv.xml b/packages/SystemUI/res/values-da/strings_tv.xml
index b031deb..edafd7c 100644
--- a/packages/SystemUI/res/values-da/strings_tv.xml
+++ b/packages/SystemUI/res/values-da/strings_tv.xml
@@ -24,10 +24,8 @@
     <string name="pip_play" msgid="674145557658227044">"Afspil"</string>
     <string name="pip_pause" msgid="8412075640017218862">"Pause"</string>
     <string name="pip_hold_home" msgid="340086535668778109">"Hold "<b>"HOME"</b>" nede for at styre PIP"</string>
-    <!-- no translation found for pip_onboarding_title (7850436557670253991) -->
-    <skip />
-    <!-- no translation found for pip_onboarding_description (4028124563309465267) -->
-    <skip />
+    <string name="pip_onboarding_title" msgid="7850436557670253991">"Billede i billede"</string>
+    <string name="pip_onboarding_description" msgid="4028124563309465267">"Dette fastholder visningen af din video, indtil du afspiller en anden. Tryk på "<b>"START"</b>", og hold fingeren nede for at styre det."</string>
     <string name="pip_onboarding_button" msgid="3957426748484904611">"OK"</string>
     <string name="recents_tv_dismiss" msgid="3555093879593377731">"Afvis"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-de/strings.xml b/packages/SystemUI/res/values-de/strings.xml
index 0cb0a5b..7efa4d9 100644
--- a/packages/SystemUI/res/values-de/strings.xml
+++ b/packages/SystemUI/res/values-de/strings.xml
@@ -71,7 +71,7 @@
     <string name="screenshot_saving_title" msgid="8242282144535555697">"Screenshot wird gespeichert..."</string>
     <string name="screenshot_saving_text" msgid="2419718443411738818">"Screenshot wird gespeichert..."</string>
     <string name="screenshot_saved_title" msgid="6461865960961414961">"Screenshot aufgenommen"</string>
-    <string name="screenshot_saved_text" msgid="1152839647677558815">"Zum Ansehen berühren"</string>
+    <string name="screenshot_saved_text" msgid="2685605830386712477">"Tippe, um deinen Screenshot anzusehen."</string>
     <string name="screenshot_failed_title" msgid="705781116746922771">"Screenshot konnte nicht aufgenommen werden."</string>
     <string name="screenshot_failed_to_save_unknown_text" msgid="7887826345701753830">"Beim Speichern des Screenshots ist ein Problem aufgetreten."</string>
     <string name="screenshot_failed_to_save_text" msgid="2592658083866306296">"Speichern des Screenshots aufgrund von zu wenig Speicher nicht möglich."</string>
@@ -118,8 +118,7 @@
     <string name="accessibility_data_signal_full" msgid="2708384608124519369">"Volle Datensignalstärke"</string>
     <string name="accessibility_wifi_name" msgid="7202151365171148501">"Mit <xliff:g id="WIFI">%s</xliff:g> verbunden"</string>
     <string name="accessibility_bluetooth_name" msgid="8441517146585531676">"Mit <xliff:g id="BLUETOOTH">%s</xliff:g> verbunden"</string>
-    <!-- no translation found for accessibility_cast_name (4026393061247081201) -->
-    <skip />
+    <string name="accessibility_cast_name" msgid="4026393061247081201">"Verbunden mit <xliff:g id="CAST">%s</xliff:g>."</string>
     <string name="accessibility_no_wimax" msgid="4329180129727630368">"Kein WiMAX"</string>
     <string name="accessibility_wimax_one_bar" msgid="4170994299011863648">"WiMAX - ein Balken"</string>
     <string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"WiMAX - zwei Balken"</string>
@@ -150,17 +149,14 @@
     <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string>
     <string name="accessibility_data_connection_wifi" msgid="2324496756590645221">"WLAN"</string>
     <string name="accessibility_no_sim" msgid="8274017118472455155">"Keine SIM-Karte"</string>
-    <!-- no translation found for accessibility_cell_data (7080312242791850520) -->
-    <skip />
-    <!-- no translation found for accessibility_cell_data_on (4310018593519761767) -->
-    <skip />
+    <string name="accessibility_cell_data" msgid="7080312242791850520">"Mobile Datennutzung"</string>
+    <string name="accessibility_cell_data_on" msgid="4310018593519761767">"Mobile Datennutzung aktiviert"</string>
     <string name="accessibility_cell_data_off" msgid="8000803571751407635">"Mobile Datennutzung deaktiviert"</string>
     <string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"Bluetooth-Tethering"</string>
     <string name="accessibility_airplane_mode" msgid="834748999790763092">"Flugmodus"</string>
     <string name="accessibility_no_sims" msgid="3957997018324995781">"Keine SIM-Karte"</string>
     <string name="accessibility_carrier_network_change_mode" msgid="4017301580441304305">"Netzwerk des Mobilfunkanbieters wird gewechselt"</string>
-    <!-- no translation found for accessibility_battery_details (7645516654955025422) -->
-    <skip />
+    <string name="accessibility_battery_details" msgid="7645516654955025422">"Akkudetails öffnen"</string>
     <string name="accessibility_battery_level" msgid="7451474187113371965">"Akku bei <xliff:g id="NUMBER">%d</xliff:g> Prozent."</string>
     <!-- String.format failed for translation -->
     <!-- no translation found for accessibility_battery_level_charging (1147587904439319646) -->
@@ -202,13 +198,11 @@
     <string name="accessibility_quick_settings_dnd_priority_on" msgid="1448402297221249355">"\"Nicht stören\" an, nur wichtige Unterbrechungen"</string>
     <string name="accessibility_quick_settings_dnd_none_on" msgid="6882582132662613537">"Nicht stören, lautlos"</string>
     <string name="accessibility_quick_settings_dnd_alarms_on" msgid="9152834845587554157">"\"Nicht stören\" an, nur Wecker"</string>
-    <!-- no translation found for accessibility_quick_settings_dnd (6607873236717185815) -->
-    <skip />
+    <string name="accessibility_quick_settings_dnd" msgid="6607873236717185815">"Nicht stören."</string>
     <string name="accessibility_quick_settings_dnd_off" msgid="2371832603753738581">"\"Nicht stören\" aus"</string>
     <string name="accessibility_quick_settings_dnd_changed_off" msgid="898107593453022935">"\"Nicht stören\" deaktiviert"</string>
     <string name="accessibility_quick_settings_dnd_changed_on" msgid="4483780856613561039">"\"Nicht stören\" aktiviert"</string>
-    <!-- no translation found for accessibility_quick_settings_bluetooth (6341675755803320038) -->
-    <skip />
+    <string name="accessibility_quick_settings_bluetooth" msgid="6341675755803320038">"Bluetooth."</string>
     <string name="accessibility_quick_settings_bluetooth_off" msgid="2133631372372064339">"Bluetooth deaktiviert"</string>
     <string name="accessibility_quick_settings_bluetooth_on" msgid="7681999166216621838">"Bluetooth aktiviert"</string>
     <string name="accessibility_quick_settings_bluetooth_connecting" msgid="6953242966685343855">"Verbindung mit Bluetooth wird hergestellt."</string>
@@ -274,10 +268,8 @@
     <string name="quick_settings_bluetooth_detail_empty_text" msgid="4910015762433302860">"Keine Pairing-Geräte verfügbar"</string>
     <string name="quick_settings_brightness_label" msgid="6968372297018755815">"Helligkeit"</string>
     <string name="quick_settings_rotation_unlocked_label" msgid="7305323031808150099">"Automatisch drehen"</string>
-    <!-- no translation found for accessibility_quick_settings_rotation (4231661040698488779) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_rotation_value (1428962304214992318) -->
-    <skip />
+    <string name="accessibility_quick_settings_rotation" msgid="4231661040698488779">"Bildschirm automatisch drehen"</string>
+    <string name="accessibility_quick_settings_rotation_value" msgid="1428962304214992318">"Auf <xliff:g id="ID_1">%s</xliff:g> eingestellt"</string>
     <string name="quick_settings_rotation_locked_label" msgid="6359205706154282377">"Drehung gesperrt"</string>
     <string name="quick_settings_rotation_locked_portrait_label" msgid="5102691921442135053">"Hochformat"</string>
     <string name="quick_settings_rotation_locked_landscape_label" msgid="8553157770061178719">"Querformat"</string>
@@ -296,8 +288,7 @@
     <string name="quick_settings_wifi_not_connected" msgid="7171904845345573431">"Nicht verbunden"</string>
     <string name="quick_settings_wifi_no_network" msgid="2221993077220856376">"Kein Netz"</string>
     <string name="quick_settings_wifi_off_label" msgid="7558778100843885864">"WLAN aus"</string>
-    <!-- no translation found for quick_settings_wifi_on_label (7607810331387031235) -->
-    <skip />
+    <string name="quick_settings_wifi_on_label" msgid="7607810331387031235">"WLAN an"</string>
     <string name="quick_settings_wifi_detail_empty_text" msgid="269990350383909226">"Keine WLAN-Netzwerke verfügbar"</string>
     <string name="quick_settings_cast_title" msgid="7709016546426454729">"Übertragen"</string>
     <string name="quick_settings_casting" msgid="6601710681033353316">"Wird übertragen"</string>
@@ -351,7 +342,7 @@
     <string name="zen_silence_introduction" msgid="3137882381093271568">"Hierdurch werden alle Klingeltöne und Vibrationsalarme stummgeschaltet, auch für Weckrufe, Musik, Videos und Spiele."</string>
     <string name="keyguard_more_overflow_text" msgid="9195222469041601365">"+<xliff:g id="NUMBER_OF_NOTIFICATIONS">%d</xliff:g>"</string>
     <string name="speed_bump_explanation" msgid="1288875699658819755">"Weniger dringende Benachrichtigungen unten"</string>
-    <string name="notification_tap_again" msgid="8524949573675922138">"Zum Öffnen erneut berühren"</string>
+    <string name="notification_tap_again" msgid="7590196980943943842">"Erneut tippen, um Benachrichtigung zu öffnen"</string>
     <string name="keyguard_unlock" msgid="8043466894212841998">"Zum Entsperren nach oben wischen"</string>
     <string name="phone_hint" msgid="4872890986869209950">"Zum Öffnen des Telefons vom Symbol wegwischen"</string>
     <string name="voice_hint" msgid="8939888732119726665">"Zum Öffnen des Sprachassistenten vom Symbol wegwischen"</string>
@@ -429,7 +420,7 @@
     <string name="accessibility_volume_expand" msgid="5946812790999244205">"Maximieren"</string>
     <string name="accessibility_volume_collapse" msgid="3609549593031810875">"Minimieren"</string>
     <string name="screen_pinning_title" msgid="3273740381976175811">"Bildschirm ist fixiert"</string>
-    <string name="screen_pinning_description" msgid="3577937698406151604">"Der Bildschirm wird so lange angezeigt, bis du die Fixierung aufhebst. Berühre und halte \"Zurück\", wenn du die Fixierung aufheben möchtest."</string>
+    <string name="screen_pinning_description" msgid="7238941806855968768">"Der Bildschirm wird so lange angezeigt, bis du die Fixierung aufhebst. Berühre &amp; halte \"Zurück\", um die Fixierung aufzuheben."</string>
     <string name="screen_pinning_positive" msgid="3783985798366751226">"OK"</string>
     <string name="screen_pinning_negative" msgid="3741602308343880268">"Nein danke"</string>
     <string name="quick_settings_reset_confirmation_title" msgid="748792586749897883">"<xliff:g id="TILE_LABEL">%1$s</xliff:g> ausblenden?"</string>
@@ -439,15 +430,13 @@
     <string name="volumeui_prompt_allow" msgid="7954396902482228786">"Zulassen"</string>
     <string name="volumeui_prompt_deny" msgid="5720663643411696731">"Ablehnen"</string>
     <string name="volumeui_notification_title" msgid="4906770126345910955">"<xliff:g id="APP_NAME">%1$s</xliff:g> regelt die Lautstärke."</string>
-    <string name="volumeui_notification_text" msgid="1826889705095768656">"Zum Wiederherstellen des Originals hier tippen"</string>
+    <string name="volumeui_notification_text" msgid="8819536904234337445">"Tippe, um das Original wiederherzustellen."</string>
     <string name="managed_profile_foreground_toast" msgid="5421487114739245972">"Du verwendest dein Arbeitsprofil."</string>
     <string name="volume_stream_content_description_unmute" msgid="4436631538779230857">"%1$s. Zum Aufheben der Stummschaltung tippen."</string>
     <string name="volume_stream_content_description_vibrate" msgid="1187944970457807498">"%1$s. Tippen, um Vibrieren festzulegen. Bedienungshilfen werden unter Umständen stummgeschaltet."</string>
     <string name="volume_stream_content_description_mute" msgid="3625049841390467354">"%1$s. Zum Stummschalten tippen. Bedienungshilfen werden unter Umständen stummgeschaltet."</string>
-    <!-- no translation found for volume_dialog_accessibility_shown_message (1834631467074259998) -->
-    <skip />
-    <!-- no translation found for volume_dialog_accessibility_dismissed_message (51543526013711399) -->
-    <skip />
+    <string name="volume_dialog_accessibility_shown_message" msgid="1834631467074259998">"Lautstärkeregler von %s werden angezeigt. Zum Schließen nach oben wischen."</string>
+    <string name="volume_dialog_accessibility_dismissed_message" msgid="51543526013711399">"Lautstärkeregler ausgeblendet"</string>
     <string name="system_ui_tuner" msgid="708224127392452018">"System UI Tuner"</string>
     <string name="show_battery_percentage" msgid="5444136600512968798">"Eingebettete Akku-Prozentzahl anzeigen"</string>
     <string name="show_battery_percentage_summary" msgid="3215025775576786037">"Prozentzahl für Akkustand in Statusleistensymbol anzeigen, wenn das Gerät nicht geladen wird"</string>
@@ -643,27 +632,17 @@
     <string name="accessibility_qs_edit_tile_removed" msgid="8584304916627913440">"<xliff:g id="TILE_NAME">%1$s</xliff:g> wurde entfernt"</string>
     <string name="accessibility_qs_edit_tile_moved" msgid="4343693412689365038">"<xliff:g id="TILE_NAME">%1$s</xliff:g> an Position <xliff:g id="POSITION">%2$d</xliff:g> verschoben"</string>
     <string name="accessibility_desc_quick_settings_edit" msgid="8073587401747016103">"Editor für Schnelleinstellungen."</string>
-    <!-- no translation found for accessibility_desc_notification_icon (8352414185263916335) -->
-    <skip />
+    <string name="accessibility_desc_notification_icon" msgid="8352414185263916335">"Benachrichtigung von <xliff:g id="ID_1">%1$s</xliff:g>: <xliff:g id="ID_2">%2$s</xliff:g>"</string>
     <string name="dock_forced_resizable" msgid="5914261505436217520">"Die App funktioniert unter Umständen bei geteiltem Bildschirm nicht."</string>
     <string name="dock_non_resizeble_failed_to_dock_text" msgid="3871617304250207291">"Das Teilen des Bildschirms wird in dieser App nicht unterstützt."</string>
-    <!-- no translation found for accessibility_quick_settings_settings (6132460890024942157) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_expand (2375165227880477530) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_collapse (1792625797142648105) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_alarm_set (1863000242431528676) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_user (1567445362870421770) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_no_internet (31890692343084075) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_open_details (4230931801728005194) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_open_settings (7806613775728380737) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_edit (7839992848995240393) -->
-    <skip />
+    <string name="accessibility_quick_settings_settings" msgid="6132460890024942157">"Einstellungen öffnen."</string>
+    <string name="accessibility_quick_settings_expand" msgid="2375165227880477530">"Schnelleinstellungen öffnen."</string>
+    <string name="accessibility_quick_settings_collapse" msgid="1792625797142648105">"Schnelleinstellungen schließen."</string>
+    <string name="accessibility_quick_settings_alarm_set" msgid="1863000242431528676">"Wecker eingestellt."</string>
+    <string name="accessibility_quick_settings_user" msgid="1567445362870421770">"Angemeldet als <xliff:g id="ID_1">%s</xliff:g>"</string>
+    <string name="accessibility_quick_settings_no_internet" msgid="31890692343084075">"Kein Internet."</string>
+    <string name="accessibility_quick_settings_open_details" msgid="4230931801728005194">"Details öffnen."</string>
+    <string name="accessibility_quick_settings_open_settings" msgid="7806613775728380737">"Einstellungen für <xliff:g id="ID_1">%s</xliff:g> öffnen."</string>
+    <string name="accessibility_quick_settings_edit" msgid="7839992848995240393">"Reihenfolge der Einstellungen bearbeiten."</string>
     <string name="accessibility_quick_settings_page" msgid="5032979051755200721">"Seite <xliff:g id="ID_1">%1$d</xliff:g> von <xliff:g id="ID_2">%2$d</xliff:g>"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-de/strings_tv.xml b/packages/SystemUI/res/values-de/strings_tv.xml
index 8830fa0..373d26c 100644
--- a/packages/SystemUI/res/values-de/strings_tv.xml
+++ b/packages/SystemUI/res/values-de/strings_tv.xml
@@ -24,10 +24,8 @@
     <string name="pip_play" msgid="674145557658227044">"Wiedergeben"</string>
     <string name="pip_pause" msgid="8412075640017218862">"Pausieren"</string>
     <string name="pip_hold_home" msgid="340086535668778109"><b>"STARTBILDSCHIRMTASTE"</b>" drücken, um PIP zu steuern"</string>
-    <!-- no translation found for pip_onboarding_title (7850436557670253991) -->
-    <skip />
-    <!-- no translation found for pip_onboarding_description (4028124563309465267) -->
-    <skip />
+    <string name="pip_onboarding_title" msgid="7850436557670253991">"Bild-in-Bild"</string>
+    <string name="pip_onboarding_description" msgid="4028124563309465267">"Dein Video wird dir so lange angezeigt, bis du ein anderes ansiehst. Taste "<b>"STARTBILDSCHIRM"</b>" zum Steuern drücken und halten."</string>
     <string name="pip_onboarding_button" msgid="3957426748484904611">"OK"</string>
     <string name="recents_tv_dismiss" msgid="3555093879593377731">"Beenden"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-el/strings.xml b/packages/SystemUI/res/values-el/strings.xml
index fdb0499..cd61816 100644
--- a/packages/SystemUI/res/values-el/strings.xml
+++ b/packages/SystemUI/res/values-el/strings.xml
@@ -71,7 +71,7 @@
     <string name="screenshot_saving_title" msgid="8242282144535555697">"Αποθήκευση στιγμιότυπου οθόνης..."</string>
     <string name="screenshot_saving_text" msgid="2419718443411738818">"Γίνεται αποθήκευση του στιγμιότυπου οθόνης."</string>
     <string name="screenshot_saved_title" msgid="6461865960961414961">"Λήφθηκε το στιγμιότυπο οθόνης ."</string>
-    <string name="screenshot_saved_text" msgid="1152839647677558815">"Αγγίξτε για να δείτε το στιγμιότυπο οθόνης σας"</string>
+    <string name="screenshot_saved_text" msgid="2685605830386712477">"Πατήστε για να δείτε το στιγμιότυπο οθόνης που δημιουργήσατε."</string>
     <string name="screenshot_failed_title" msgid="705781116746922771">"Αδύνατη η αποθήκευση του στιγμιότυπου οθόνης."</string>
     <string name="screenshot_failed_to_save_unknown_text" msgid="7887826345701753830">"Παρουσιάστηκε πρόβλημα κατά την αποθήκευση του στιγμιότυπου οθόνης."</string>
     <string name="screenshot_failed_to_save_text" msgid="2592658083866306296">"Δεν είναι δυνατή η αποθήκευση του στιγμιότυπου οθόνης λόγω περιορισμένου χώρου αποθήκευσης."</string>
@@ -118,8 +118,7 @@
     <string name="accessibility_data_signal_full" msgid="2708384608124519369">"Πλήρες σήμα δεδομένων."</string>
     <string name="accessibility_wifi_name" msgid="7202151365171148501">"Συνδέθηκε στο <xliff:g id="WIFI">%s</xliff:g>."</string>
     <string name="accessibility_bluetooth_name" msgid="8441517146585531676">"Συνδέθηκε στο <xliff:g id="BLUETOOTH">%s</xliff:g>."</string>
-    <!-- no translation found for accessibility_cast_name (4026393061247081201) -->
-    <skip />
+    <string name="accessibility_cast_name" msgid="4026393061247081201">"Συνδέθηκε σε <xliff:g id="CAST">%s</xliff:g>."</string>
     <string name="accessibility_no_wimax" msgid="4329180129727630368">"Δεν υπάρχει σήμα WiMAX."</string>
     <string name="accessibility_wimax_one_bar" msgid="4170994299011863648">"Σήμα WiMAX μία γραμμή."</string>
     <string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"Σήμα WiMAX δύο γραμμές."</string>
@@ -150,17 +149,14 @@
     <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string>
     <string name="accessibility_data_connection_wifi" msgid="2324496756590645221">"Wi-Fi"</string>
     <string name="accessibility_no_sim" msgid="8274017118472455155">"Δεν υπάρχει SIM."</string>
-    <!-- no translation found for accessibility_cell_data (7080312242791850520) -->
-    <skip />
-    <!-- no translation found for accessibility_cell_data_on (4310018593519761767) -->
-    <skip />
+    <string name="accessibility_cell_data" msgid="7080312242791850520">"Δεδομένα κινητής τηλεφωνίας"</string>
+    <string name="accessibility_cell_data_on" msgid="4310018593519761767">"Τα δεδομένα κινητής τηλεφωνίας είναι ενεργά"</string>
     <string name="accessibility_cell_data_off" msgid="8000803571751407635">"Τα δεδομένα κινητής τηλεφωνίας είναι απενεργοποιημένα"</string>
     <string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"Πρόσδεση Bluetooth"</string>
     <string name="accessibility_airplane_mode" msgid="834748999790763092">"Λειτουργία πτήσης."</string>
     <string name="accessibility_no_sims" msgid="3957997018324995781">"Δεν υπάρχει κάρτα SIM."</string>
     <string name="accessibility_carrier_network_change_mode" msgid="4017301580441304305">"Αλλαγή δικτύου εταιρείας κινητής τηλεφωνίας."</string>
-    <!-- no translation found for accessibility_battery_details (7645516654955025422) -->
-    <skip />
+    <string name="accessibility_battery_details" msgid="7645516654955025422">"Άνοιγμα λεπτομερειών μπαταρίας"</string>
     <string name="accessibility_battery_level" msgid="7451474187113371965">"Μπαταρία <xliff:g id="NUMBER">%d</xliff:g> τοις εκατό."</string>
     <string name="accessibility_battery_level_charging" msgid="1147587904439319646">"Φόρτιση μπαταρίας, <xliff:g id="BATTERY_PERCENTAGE">%d</xliff:g> τοις εκατό."</string>
     <string name="accessibility_settings_button" msgid="799583911231893380">"Ρυθμίσεις συστήματος."</string>
@@ -200,13 +196,11 @@
     <string name="accessibility_quick_settings_dnd_priority_on" msgid="1448402297221249355">"Η λειτουργία \"Μην ενοχλείτε\" ενεργοποιήθηκε, μόνο προτεραιότητας."</string>
     <string name="accessibility_quick_settings_dnd_none_on" msgid="6882582132662613537">"Η λειτουργία \"Μην ενοχλείτε\" ενεργοποιήθηκε, πλήρης σίγαση."</string>
     <string name="accessibility_quick_settings_dnd_alarms_on" msgid="9152834845587554157">"Μην ενοχλείτε, μόνο ειδοποιήσεις."</string>
-    <!-- no translation found for accessibility_quick_settings_dnd (6607873236717185815) -->
-    <skip />
+    <string name="accessibility_quick_settings_dnd" msgid="6607873236717185815">"Μην ενοχλείτε."</string>
     <string name="accessibility_quick_settings_dnd_off" msgid="2371832603753738581">"Η λειτουργία \"Μην ενοχλείτε\" απενεργοποιήθηκε."</string>
     <string name="accessibility_quick_settings_dnd_changed_off" msgid="898107593453022935">"Η λειτουργία \"Μην ενοχλείτε\" απενεργοποιήθηκε."</string>
     <string name="accessibility_quick_settings_dnd_changed_on" msgid="4483780856613561039">"Η λειτουργία \"Μην ενοχλείτε\" ενεργοποιήθηκε."</string>
-    <!-- no translation found for accessibility_quick_settings_bluetooth (6341675755803320038) -->
-    <skip />
+    <string name="accessibility_quick_settings_bluetooth" msgid="6341675755803320038">"Bluetooth."</string>
     <string name="accessibility_quick_settings_bluetooth_off" msgid="2133631372372064339">"Ανενεργό Bluetooth."</string>
     <string name="accessibility_quick_settings_bluetooth_on" msgid="7681999166216621838">"Ενεργό Bluetooth."</string>
     <string name="accessibility_quick_settings_bluetooth_connecting" msgid="6953242966685343855">"Σύνδεση Bluetooth."</string>
@@ -272,10 +266,8 @@
     <string name="quick_settings_bluetooth_detail_empty_text" msgid="4910015762433302860">"Δεν υπάρχουν διαθέσιμες συσκευές σε σύζευξη"</string>
     <string name="quick_settings_brightness_label" msgid="6968372297018755815">"Φωτεινότητα"</string>
     <string name="quick_settings_rotation_unlocked_label" msgid="7305323031808150099">"Αυτόματη περιστροφή"</string>
-    <!-- no translation found for accessibility_quick_settings_rotation (4231661040698488779) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_rotation_value (1428962304214992318) -->
-    <skip />
+    <string name="accessibility_quick_settings_rotation" msgid="4231661040698488779">"Αυτόματη περιστροφή οθόνης"</string>
+    <string name="accessibility_quick_settings_rotation_value" msgid="1428962304214992318">"Ορίστηκε σε <xliff:g id="ID_1">%s</xliff:g>"</string>
     <string name="quick_settings_rotation_locked_label" msgid="6359205706154282377">"Η περιστροφή είναι κλειδωμένη"</string>
     <string name="quick_settings_rotation_locked_portrait_label" msgid="5102691921442135053">"Κατακόρυφα"</string>
     <string name="quick_settings_rotation_locked_landscape_label" msgid="8553157770061178719">"Οριζόντια"</string>
@@ -294,8 +286,7 @@
     <string name="quick_settings_wifi_not_connected" msgid="7171904845345573431">"Μη συνδεδεμένο"</string>
     <string name="quick_settings_wifi_no_network" msgid="2221993077220856376">"Κανένα δίκτυο"</string>
     <string name="quick_settings_wifi_off_label" msgid="7558778100843885864">"Wi-Fi ανενεργό"</string>
-    <!-- no translation found for quick_settings_wifi_on_label (7607810331387031235) -->
-    <skip />
+    <string name="quick_settings_wifi_on_label" msgid="7607810331387031235">"Ενεργό Wi-Fi"</string>
     <string name="quick_settings_wifi_detail_empty_text" msgid="269990350383909226">"Δεν υπάρχουν διαθέσιμα δίκτυα Wi-Fi"</string>
     <string name="quick_settings_cast_title" msgid="7709016546426454729">"Μετάδοση"</string>
     <string name="quick_settings_casting" msgid="6601710681033353316">"Μετάδοση"</string>
@@ -349,7 +340,7 @@
     <string name="zen_silence_introduction" msgid="3137882381093271568">"Αυτή η επιλογή αποκλείει όλους τους ήχους και τις δονήσεις, μεταξύ των οποίων των ξυπνητηριών, της μουσικής, των βίντεο και των παιχνιδιών."</string>
     <string name="keyguard_more_overflow_text" msgid="9195222469041601365">"+<xliff:g id="NUMBER_OF_NOTIFICATIONS">%d</xliff:g>"</string>
     <string name="speed_bump_explanation" msgid="1288875699658819755">"Λιγότερο επείγουσες ειδοποιήσεις παρακάτω"</string>
-    <string name="notification_tap_again" msgid="8524949573675922138">"Αγγίξτε ξανά για άνοιγμα"</string>
+    <string name="notification_tap_again" msgid="7590196980943943842">"Πατήστε ξανά για να ανοίξετε"</string>
     <string name="keyguard_unlock" msgid="8043466894212841998">"Σύρετε για να ξεκλειδώσετε"</string>
     <string name="phone_hint" msgid="4872890986869209950">"Σύρετε προς τα έξω για τηλέφωνο"</string>
     <string name="voice_hint" msgid="8939888732119726665">"Σύρετε προς τα έξω για voice assist"</string>
@@ -427,7 +418,7 @@
     <string name="accessibility_volume_expand" msgid="5946812790999244205">"Ανάπτυξη"</string>
     <string name="accessibility_volume_collapse" msgid="3609549593031810875">"Σύμπτυξη"</string>
     <string name="screen_pinning_title" msgid="3273740381976175811">"Η οθόνη καρφιτσώθηκε"</string>
-    <string name="screen_pinning_description" msgid="3577937698406151604">"Με αυτόν τον τρόπο παραμένει σε προβολή έως ότου την ξεκαρφιτσώσετε. Αγγίξτε παρατεταμένα το στοιχείο επιστροφής για να την ξεκαρφιτσώσετε."</string>
+    <string name="screen_pinning_description" msgid="7238941806855968768">"Με αυτόν τον τρόπο παραμένει σε προβολή έως ότου την ξεκαρφιτσώσετε. Αγγίξτε παρατεταμένα το στοιχείο επιστροφής για να την ξεκαρφιτσώσετε."</string>
     <string name="screen_pinning_positive" msgid="3783985798366751226">"Το κατάλαβα"</string>
     <string name="screen_pinning_negative" msgid="3741602308343880268">"Όχι"</string>
     <string name="quick_settings_reset_confirmation_title" msgid="748792586749897883">"Απόκρυψη <xliff:g id="TILE_LABEL">%1$s</xliff:g>;"</string>
@@ -437,15 +428,13 @@
     <string name="volumeui_prompt_allow" msgid="7954396902482228786">"Να επιτραπεί"</string>
     <string name="volumeui_prompt_deny" msgid="5720663643411696731">"Απόρριψη"</string>
     <string name="volumeui_notification_title" msgid="4906770126345910955">"Η εφαρμογή <xliff:g id="APP_NAME">%1$s</xliff:g> αποτελεί το παράθυρο διαλόγου ελέγχου έντασης"</string>
-    <string name="volumeui_notification_text" msgid="1826889705095768656">"Αγγίξτε για επαναφορά αρχικού."</string>
+    <string name="volumeui_notification_text" msgid="8819536904234337445">"Πατήστε για να επαναφέρετε την αρχική μορφή της εικόνας."</string>
     <string name="managed_profile_foreground_toast" msgid="5421487114739245972">"Χρησιμοποιείτε το προφίλ εργασίας σας"</string>
     <string name="volume_stream_content_description_unmute" msgid="4436631538779230857">"%1$s. Πατήστε για κατάργηση σίγασης."</string>
     <string name="volume_stream_content_description_vibrate" msgid="1187944970457807498">"%1$s. Πατήστε για ενεργοποιήσετε τη δόνηση. Οι υπηρεσίες προσβασιμότητας ενδέχεται να τεθούν σε σίγαση."</string>
     <string name="volume_stream_content_description_mute" msgid="3625049841390467354">"%1$s. Πατήστε για σίγαση. Οι υπηρεσίες προσβασιμότητας ενδέχεται να τεθούν σε σίγαση."</string>
-    <!-- no translation found for volume_dialog_accessibility_shown_message (1834631467074259998) -->
-    <skip />
-    <!-- no translation found for volume_dialog_accessibility_dismissed_message (51543526013711399) -->
-    <skip />
+    <string name="volume_dialog_accessibility_shown_message" msgid="1834631467074259998">"Εμφανίζονται τα στοιχεία ελέγχου έντασης %s. Σύρετε για παράβλεψη."</string>
+    <string name="volume_dialog_accessibility_dismissed_message" msgid="51543526013711399">"Έγινε απόκρυψη των στοιχείων ελέγχου έντασης"</string>
     <string name="system_ui_tuner" msgid="708224127392452018">"System UI Tuner"</string>
     <string name="show_battery_percentage" msgid="5444136600512968798">"Εμφάνιση ποσοστού ενσωματωμένης μπαταρίας"</string>
     <string name="show_battery_percentage_summary" msgid="3215025775576786037">"Εμφάνιση ποσοστού επιπέδου μπαταρίας μέσα στο εικονίδιο της γραμμής κατάστασης όταν δεν γίνεται φόρτιση"</string>
@@ -641,27 +630,17 @@
     <string name="accessibility_qs_edit_tile_removed" msgid="8584304916627913440">"Το <xliff:g id="TILE_NAME">%1$s</xliff:g> καταργείται"</string>
     <string name="accessibility_qs_edit_tile_moved" msgid="4343693412689365038">"Το <xliff:g id="TILE_NAME">%1$s</xliff:g> μετακινήθηκε στη θέση <xliff:g id="POSITION">%2$d</xliff:g>"</string>
     <string name="accessibility_desc_quick_settings_edit" msgid="8073587401747016103">"Επεξεργασία γρήγορων ρυθμίσεων."</string>
-    <!-- no translation found for accessibility_desc_notification_icon (8352414185263916335) -->
-    <skip />
+    <string name="accessibility_desc_notification_icon" msgid="8352414185263916335">"Ειδοποίηση <xliff:g id="ID_1">%1$s</xliff:g>: <xliff:g id="ID_2">%2$s</xliff:g>"</string>
     <string name="dock_forced_resizable" msgid="5914261505436217520">"Δεν είναι δυνατή η λειτουργία της εφαρμογής με διαχωρισμό οθόνης."</string>
     <string name="dock_non_resizeble_failed_to_dock_text" msgid="3871617304250207291">"Η εφαρμογή δεν υποστηρίζει διαχωρισμό οθόνης."</string>
-    <!-- no translation found for accessibility_quick_settings_settings (6132460890024942157) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_expand (2375165227880477530) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_collapse (1792625797142648105) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_alarm_set (1863000242431528676) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_user (1567445362870421770) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_no_internet (31890692343084075) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_open_details (4230931801728005194) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_open_settings (7806613775728380737) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_edit (7839992848995240393) -->
-    <skip />
+    <string name="accessibility_quick_settings_settings" msgid="6132460890024942157">"Άνοιγμα ρυθμίσεων."</string>
+    <string name="accessibility_quick_settings_expand" msgid="2375165227880477530">"Άνοιγμα γρήγορων ρυθμίσεων."</string>
+    <string name="accessibility_quick_settings_collapse" msgid="1792625797142648105">"Κλείσιμο γρήγορων ρυθμίσεων."</string>
+    <string name="accessibility_quick_settings_alarm_set" msgid="1863000242431528676">"Το ξυπνητήρι ορίστηκε."</string>
+    <string name="accessibility_quick_settings_user" msgid="1567445362870421770">"Σύνδεση ως <xliff:g id="ID_1">%s</xliff:g>."</string>
+    <string name="accessibility_quick_settings_no_internet" msgid="31890692343084075">"Δεν υπάρχει σύνδεση στο διαδίκτυο."</string>
+    <string name="accessibility_quick_settings_open_details" msgid="4230931801728005194">"Άνοιγμα λεπτομερειών."</string>
+    <string name="accessibility_quick_settings_open_settings" msgid="7806613775728380737">"Άνοιγμα ρυθμίσεων <xliff:g id="ID_1">%s</xliff:g>."</string>
+    <string name="accessibility_quick_settings_edit" msgid="7839992848995240393">"Επεξεργασία σειράς ρυθμίσεων."</string>
     <string name="accessibility_quick_settings_page" msgid="5032979051755200721">"Σελίδα <xliff:g id="ID_1">%1$d</xliff:g> από <xliff:g id="ID_2">%2$d</xliff:g>"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-el/strings_tv.xml b/packages/SystemUI/res/values-el/strings_tv.xml
index 9f3595d..655b424 100644
--- a/packages/SystemUI/res/values-el/strings_tv.xml
+++ b/packages/SystemUI/res/values-el/strings_tv.xml
@@ -24,10 +24,8 @@
     <string name="pip_play" msgid="674145557658227044">"Αναπαραγωγή"</string>
     <string name="pip_pause" msgid="8412075640017218862">"Παύση"</string>
     <string name="pip_hold_home" msgid="340086535668778109">"Κρατήστε το πλήκτρο "<b>"HOME"</b>" πατημένο για έλεγχο του PIP"</string>
-    <!-- no translation found for pip_onboarding_title (7850436557670253991) -->
-    <skip />
-    <!-- no translation found for pip_onboarding_description (4028124563309465267) -->
-    <skip />
+    <string name="pip_onboarding_title" msgid="7850436557670253991">"Λειτουργία Picture-in-picture"</string>
+    <string name="pip_onboarding_description" msgid="4028124563309465267">"Αυτό διατηρεί το βίντεό σας σε προβολή έως ότου γίνει αναπαραγωγή κάποιου άλλου. Πατήστε παρατεταμένα το πλήκτρο "<b></b>" (ΑΡΧΙΚΗ ΣΕΛΙΔΑ) για να ελέγξετε αυτήν την επιλογή."</string>
     <string name="pip_onboarding_button" msgid="3957426748484904611">"Κατάλαβα"</string>
     <string name="recents_tv_dismiss" msgid="3555093879593377731">"Παράβλεψη"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-en-rAU/strings.xml b/packages/SystemUI/res/values-en-rAU/strings.xml
index b7f8c4d..803c7a2 100644
--- a/packages/SystemUI/res/values-en-rAU/strings.xml
+++ b/packages/SystemUI/res/values-en-rAU/strings.xml
@@ -71,7 +71,7 @@
     <string name="screenshot_saving_title" msgid="8242282144535555697">"Saving screenshot…"</string>
     <string name="screenshot_saving_text" msgid="2419718443411738818">"Screenshot is being saved."</string>
     <string name="screenshot_saved_title" msgid="6461865960961414961">"Screenshot captured."</string>
-    <string name="screenshot_saved_text" msgid="1152839647677558815">"Touch to view your screenshot."</string>
+    <string name="screenshot_saved_text" msgid="2685605830386712477">"Tap to view your screenshot."</string>
     <string name="screenshot_failed_title" msgid="705781116746922771">"Couldn\'t capture screenshot."</string>
     <string name="screenshot_failed_to_save_unknown_text" msgid="7887826345701753830">"Problem encountered while saving screenshot."</string>
     <string name="screenshot_failed_to_save_text" msgid="2592658083866306296">"Can\'t save screenshot due to limited storage space."</string>
@@ -340,7 +340,7 @@
     <string name="zen_silence_introduction" msgid="3137882381093271568">"This blocks ALL sounds and vibrations, including from alarms, music, videos and games."</string>
     <string name="keyguard_more_overflow_text" msgid="9195222469041601365">"+<xliff:g id="NUMBER_OF_NOTIFICATIONS">%d</xliff:g>"</string>
     <string name="speed_bump_explanation" msgid="1288875699658819755">"Less urgent notifications below"</string>
-    <string name="notification_tap_again" msgid="8524949573675922138">"Touch again to open"</string>
+    <string name="notification_tap_again" msgid="7590196980943943842">"Tap again to open"</string>
     <string name="keyguard_unlock" msgid="8043466894212841998">"Swipe up to unlock"</string>
     <string name="phone_hint" msgid="4872890986869209950">"Swipe from icon for phone"</string>
     <string name="voice_hint" msgid="8939888732119726665">"Swipe from icon for voice assist"</string>
@@ -418,7 +418,7 @@
     <string name="accessibility_volume_expand" msgid="5946812790999244205">"Expand"</string>
     <string name="accessibility_volume_collapse" msgid="3609549593031810875">"Collapse"</string>
     <string name="screen_pinning_title" msgid="3273740381976175811">"Screen is pinned"</string>
-    <string name="screen_pinning_description" msgid="3577937698406151604">"This keeps it in view until you unpin. Touch and hold Back to unpin."</string>
+    <string name="screen_pinning_description" msgid="7238941806855968768">"This keeps it in view until you unpin. Touch &amp; hold Back to unpin."</string>
     <string name="screen_pinning_positive" msgid="3783985798366751226">"Got it"</string>
     <string name="screen_pinning_negative" msgid="3741602308343880268">"No, thanks"</string>
     <string name="quick_settings_reset_confirmation_title" msgid="748792586749897883">"Hide <xliff:g id="TILE_LABEL">%1$s</xliff:g>?"</string>
@@ -428,7 +428,7 @@
     <string name="volumeui_prompt_allow" msgid="7954396902482228786">"Allow"</string>
     <string name="volumeui_prompt_deny" msgid="5720663643411696731">"Deny"</string>
     <string name="volumeui_notification_title" msgid="4906770126345910955">"<xliff:g id="APP_NAME">%1$s</xliff:g> is the volume dialogue"</string>
-    <string name="volumeui_notification_text" msgid="1826889705095768656">"Touch to restore the original."</string>
+    <string name="volumeui_notification_text" msgid="8819536904234337445">"Tap to restore the original."</string>
     <string name="managed_profile_foreground_toast" msgid="5421487114739245972">"You\'re using your work profile"</string>
     <string name="volume_stream_content_description_unmute" msgid="4436631538779230857">"%1$s. Tap to unmute."</string>
     <string name="volume_stream_content_description_vibrate" msgid="1187944970457807498">"%1$s. Tap to set to vibrate. Accessibility services may be muted."</string>
diff --git a/packages/SystemUI/res/values-en-rGB/strings.xml b/packages/SystemUI/res/values-en-rGB/strings.xml
index b7f8c4d..803c7a2 100644
--- a/packages/SystemUI/res/values-en-rGB/strings.xml
+++ b/packages/SystemUI/res/values-en-rGB/strings.xml
@@ -71,7 +71,7 @@
     <string name="screenshot_saving_title" msgid="8242282144535555697">"Saving screenshot…"</string>
     <string name="screenshot_saving_text" msgid="2419718443411738818">"Screenshot is being saved."</string>
     <string name="screenshot_saved_title" msgid="6461865960961414961">"Screenshot captured."</string>
-    <string name="screenshot_saved_text" msgid="1152839647677558815">"Touch to view your screenshot."</string>
+    <string name="screenshot_saved_text" msgid="2685605830386712477">"Tap to view your screenshot."</string>
     <string name="screenshot_failed_title" msgid="705781116746922771">"Couldn\'t capture screenshot."</string>
     <string name="screenshot_failed_to_save_unknown_text" msgid="7887826345701753830">"Problem encountered while saving screenshot."</string>
     <string name="screenshot_failed_to_save_text" msgid="2592658083866306296">"Can\'t save screenshot due to limited storage space."</string>
@@ -340,7 +340,7 @@
     <string name="zen_silence_introduction" msgid="3137882381093271568">"This blocks ALL sounds and vibrations, including from alarms, music, videos and games."</string>
     <string name="keyguard_more_overflow_text" msgid="9195222469041601365">"+<xliff:g id="NUMBER_OF_NOTIFICATIONS">%d</xliff:g>"</string>
     <string name="speed_bump_explanation" msgid="1288875699658819755">"Less urgent notifications below"</string>
-    <string name="notification_tap_again" msgid="8524949573675922138">"Touch again to open"</string>
+    <string name="notification_tap_again" msgid="7590196980943943842">"Tap again to open"</string>
     <string name="keyguard_unlock" msgid="8043466894212841998">"Swipe up to unlock"</string>
     <string name="phone_hint" msgid="4872890986869209950">"Swipe from icon for phone"</string>
     <string name="voice_hint" msgid="8939888732119726665">"Swipe from icon for voice assist"</string>
@@ -418,7 +418,7 @@
     <string name="accessibility_volume_expand" msgid="5946812790999244205">"Expand"</string>
     <string name="accessibility_volume_collapse" msgid="3609549593031810875">"Collapse"</string>
     <string name="screen_pinning_title" msgid="3273740381976175811">"Screen is pinned"</string>
-    <string name="screen_pinning_description" msgid="3577937698406151604">"This keeps it in view until you unpin. Touch and hold Back to unpin."</string>
+    <string name="screen_pinning_description" msgid="7238941806855968768">"This keeps it in view until you unpin. Touch &amp; hold Back to unpin."</string>
     <string name="screen_pinning_positive" msgid="3783985798366751226">"Got it"</string>
     <string name="screen_pinning_negative" msgid="3741602308343880268">"No, thanks"</string>
     <string name="quick_settings_reset_confirmation_title" msgid="748792586749897883">"Hide <xliff:g id="TILE_LABEL">%1$s</xliff:g>?"</string>
@@ -428,7 +428,7 @@
     <string name="volumeui_prompt_allow" msgid="7954396902482228786">"Allow"</string>
     <string name="volumeui_prompt_deny" msgid="5720663643411696731">"Deny"</string>
     <string name="volumeui_notification_title" msgid="4906770126345910955">"<xliff:g id="APP_NAME">%1$s</xliff:g> is the volume dialogue"</string>
-    <string name="volumeui_notification_text" msgid="1826889705095768656">"Touch to restore the original."</string>
+    <string name="volumeui_notification_text" msgid="8819536904234337445">"Tap to restore the original."</string>
     <string name="managed_profile_foreground_toast" msgid="5421487114739245972">"You\'re using your work profile"</string>
     <string name="volume_stream_content_description_unmute" msgid="4436631538779230857">"%1$s. Tap to unmute."</string>
     <string name="volume_stream_content_description_vibrate" msgid="1187944970457807498">"%1$s. Tap to set to vibrate. Accessibility services may be muted."</string>
diff --git a/packages/SystemUI/res/values-en-rIN/strings.xml b/packages/SystemUI/res/values-en-rIN/strings.xml
index b7f8c4d..803c7a2 100644
--- a/packages/SystemUI/res/values-en-rIN/strings.xml
+++ b/packages/SystemUI/res/values-en-rIN/strings.xml
@@ -71,7 +71,7 @@
     <string name="screenshot_saving_title" msgid="8242282144535555697">"Saving screenshot…"</string>
     <string name="screenshot_saving_text" msgid="2419718443411738818">"Screenshot is being saved."</string>
     <string name="screenshot_saved_title" msgid="6461865960961414961">"Screenshot captured."</string>
-    <string name="screenshot_saved_text" msgid="1152839647677558815">"Touch to view your screenshot."</string>
+    <string name="screenshot_saved_text" msgid="2685605830386712477">"Tap to view your screenshot."</string>
     <string name="screenshot_failed_title" msgid="705781116746922771">"Couldn\'t capture screenshot."</string>
     <string name="screenshot_failed_to_save_unknown_text" msgid="7887826345701753830">"Problem encountered while saving screenshot."</string>
     <string name="screenshot_failed_to_save_text" msgid="2592658083866306296">"Can\'t save screenshot due to limited storage space."</string>
@@ -340,7 +340,7 @@
     <string name="zen_silence_introduction" msgid="3137882381093271568">"This blocks ALL sounds and vibrations, including from alarms, music, videos and games."</string>
     <string name="keyguard_more_overflow_text" msgid="9195222469041601365">"+<xliff:g id="NUMBER_OF_NOTIFICATIONS">%d</xliff:g>"</string>
     <string name="speed_bump_explanation" msgid="1288875699658819755">"Less urgent notifications below"</string>
-    <string name="notification_tap_again" msgid="8524949573675922138">"Touch again to open"</string>
+    <string name="notification_tap_again" msgid="7590196980943943842">"Tap again to open"</string>
     <string name="keyguard_unlock" msgid="8043466894212841998">"Swipe up to unlock"</string>
     <string name="phone_hint" msgid="4872890986869209950">"Swipe from icon for phone"</string>
     <string name="voice_hint" msgid="8939888732119726665">"Swipe from icon for voice assist"</string>
@@ -418,7 +418,7 @@
     <string name="accessibility_volume_expand" msgid="5946812790999244205">"Expand"</string>
     <string name="accessibility_volume_collapse" msgid="3609549593031810875">"Collapse"</string>
     <string name="screen_pinning_title" msgid="3273740381976175811">"Screen is pinned"</string>
-    <string name="screen_pinning_description" msgid="3577937698406151604">"This keeps it in view until you unpin. Touch and hold Back to unpin."</string>
+    <string name="screen_pinning_description" msgid="7238941806855968768">"This keeps it in view until you unpin. Touch &amp; hold Back to unpin."</string>
     <string name="screen_pinning_positive" msgid="3783985798366751226">"Got it"</string>
     <string name="screen_pinning_negative" msgid="3741602308343880268">"No, thanks"</string>
     <string name="quick_settings_reset_confirmation_title" msgid="748792586749897883">"Hide <xliff:g id="TILE_LABEL">%1$s</xliff:g>?"</string>
@@ -428,7 +428,7 @@
     <string name="volumeui_prompt_allow" msgid="7954396902482228786">"Allow"</string>
     <string name="volumeui_prompt_deny" msgid="5720663643411696731">"Deny"</string>
     <string name="volumeui_notification_title" msgid="4906770126345910955">"<xliff:g id="APP_NAME">%1$s</xliff:g> is the volume dialogue"</string>
-    <string name="volumeui_notification_text" msgid="1826889705095768656">"Touch to restore the original."</string>
+    <string name="volumeui_notification_text" msgid="8819536904234337445">"Tap to restore the original."</string>
     <string name="managed_profile_foreground_toast" msgid="5421487114739245972">"You\'re using your work profile"</string>
     <string name="volume_stream_content_description_unmute" msgid="4436631538779230857">"%1$s. Tap to unmute."</string>
     <string name="volume_stream_content_description_vibrate" msgid="1187944970457807498">"%1$s. Tap to set to vibrate. Accessibility services may be muted."</string>
diff --git a/packages/SystemUI/res/values-es-rUS/strings.xml b/packages/SystemUI/res/values-es-rUS/strings.xml
index 8fa6e81..1bed378 100644
--- a/packages/SystemUI/res/values-es-rUS/strings.xml
+++ b/packages/SystemUI/res/values-es-rUS/strings.xml
@@ -71,7 +71,7 @@
     <string name="screenshot_saving_title" msgid="8242282144535555697">"Guardando la captura de pantalla..."</string>
     <string name="screenshot_saving_text" msgid="2419718443411738818">"La captura de pantalla se está guardando."</string>
     <string name="screenshot_saved_title" msgid="6461865960961414961">"Se guardó la captura de pantalla."</string>
-    <string name="screenshot_saved_text" msgid="1152839647677558815">"Toca para ver tu captura de pantalla."</string>
+    <string name="screenshot_saved_text" msgid="2685605830386712477">"Presiona para ver tu captura de pantalla."</string>
     <string name="screenshot_failed_title" msgid="705781116746922771">"No se pudo guardar la captura de pantalla."</string>
     <string name="screenshot_failed_to_save_unknown_text" msgid="7887826345701753830">"Se produjo un error al guardar la captura de pantalla."</string>
     <string name="screenshot_failed_to_save_text" msgid="2592658083866306296">"No se puede guardar la captura de pantalla debido al almacenamiento limitado."</string>
@@ -118,8 +118,7 @@
     <string name="accessibility_data_signal_full" msgid="2708384608124519369">"Señal de datos completa"</string>
     <string name="accessibility_wifi_name" msgid="7202151365171148501">"Conectado a <xliff:g id="WIFI">%s</xliff:g>"</string>
     <string name="accessibility_bluetooth_name" msgid="8441517146585531676">"Conectado a <xliff:g id="BLUETOOTH">%s</xliff:g>"</string>
-    <!-- no translation found for accessibility_cast_name (4026393061247081201) -->
-    <skip />
+    <string name="accessibility_cast_name" msgid="4026393061247081201">"Conectado a <xliff:g id="CAST">%s</xliff:g>."</string>
     <string name="accessibility_no_wimax" msgid="4329180129727630368">"Sin conexión WiMAX"</string>
     <string name="accessibility_wimax_one_bar" msgid="4170994299011863648">"Una barra de WiMAX"</string>
     <string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"Dos barras de WiMAX"</string>
@@ -150,17 +149,14 @@
     <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string>
     <string name="accessibility_data_connection_wifi" msgid="2324496756590645221">"Wi-Fi"</string>
     <string name="accessibility_no_sim" msgid="8274017118472455155">"Sin tarjeta SIM"</string>
-    <!-- no translation found for accessibility_cell_data (7080312242791850520) -->
-    <skip />
-    <!-- no translation found for accessibility_cell_data_on (4310018593519761767) -->
-    <skip />
+    <string name="accessibility_cell_data" msgid="7080312242791850520">"Datos móviles"</string>
+    <string name="accessibility_cell_data_on" msgid="4310018593519761767">"Datos móviles activados"</string>
     <string name="accessibility_cell_data_off" msgid="8000803571751407635">"Los datos móviles están desactivados"</string>
     <string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"Conexión mediante Bluetooth"</string>
     <string name="accessibility_airplane_mode" msgid="834748999790763092">"Modo avión"</string>
     <string name="accessibility_no_sims" msgid="3957997018324995781">"Sin tarjeta SIM"</string>
     <string name="accessibility_carrier_network_change_mode" msgid="4017301580441304305">"Cambio de proveedor de red"</string>
-    <!-- no translation found for accessibility_battery_details (7645516654955025422) -->
-    <skip />
+    <string name="accessibility_battery_details" msgid="7645516654955025422">"Abrir detalles de la batería"</string>
     <string name="accessibility_battery_level" msgid="7451474187113371965">"Batería <xliff:g id="NUMBER">%d</xliff:g> por ciento"</string>
     <!-- String.format failed for translation -->
     <!-- no translation found for accessibility_battery_level_charging (1147587904439319646) -->
@@ -202,13 +198,11 @@
     <string name="accessibility_quick_settings_dnd_priority_on" msgid="1448402297221249355">"No molestar activado (solo prioridad)"</string>
     <string name="accessibility_quick_settings_dnd_none_on" msgid="6882582132662613537">"No molestar activado, silencio total"</string>
     <string name="accessibility_quick_settings_dnd_alarms_on" msgid="9152834845587554157">"No molestar activado (solo alarmas)"</string>
-    <!-- no translation found for accessibility_quick_settings_dnd (6607873236717185815) -->
-    <skip />
+    <string name="accessibility_quick_settings_dnd" msgid="6607873236717185815">"No molestar"</string>
     <string name="accessibility_quick_settings_dnd_off" msgid="2371832603753738581">"No molestar desactivado"</string>
     <string name="accessibility_quick_settings_dnd_changed_off" msgid="898107593453022935">"No molestar desactivado"</string>
     <string name="accessibility_quick_settings_dnd_changed_on" msgid="4483780856613561039">"No molestar activado"</string>
-    <!-- no translation found for accessibility_quick_settings_bluetooth (6341675755803320038) -->
-    <skip />
+    <string name="accessibility_quick_settings_bluetooth" msgid="6341675755803320038">"Bluetooth"</string>
     <string name="accessibility_quick_settings_bluetooth_off" msgid="2133631372372064339">"Bluetooth desactivado"</string>
     <string name="accessibility_quick_settings_bluetooth_on" msgid="7681999166216621838">"Bluetooth activado"</string>
     <string name="accessibility_quick_settings_bluetooth_connecting" msgid="6953242966685343855">"Bluetooth conectándose"</string>
@@ -274,10 +268,8 @@
     <string name="quick_settings_bluetooth_detail_empty_text" msgid="4910015762433302860">"No hay dispositivos sincronizados disponibles"</string>
     <string name="quick_settings_brightness_label" msgid="6968372297018755815">"Brillo"</string>
     <string name="quick_settings_rotation_unlocked_label" msgid="7305323031808150099">"Rotación automática"</string>
-    <!-- no translation found for accessibility_quick_settings_rotation (4231661040698488779) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_rotation_value (1428962304214992318) -->
-    <skip />
+    <string name="accessibility_quick_settings_rotation" msgid="4231661040698488779">"Girar la pantalla automáticamente"</string>
+    <string name="accessibility_quick_settings_rotation_value" msgid="1428962304214992318">"Configurado en <xliff:g id="ID_1">%s</xliff:g>"</string>
     <string name="quick_settings_rotation_locked_label" msgid="6359205706154282377">"Rotación bloqueada"</string>
     <string name="quick_settings_rotation_locked_portrait_label" msgid="5102691921442135053">"Vertical"</string>
     <string name="quick_settings_rotation_locked_landscape_label" msgid="8553157770061178719">"Horizontal"</string>
@@ -296,8 +288,7 @@
     <string name="quick_settings_wifi_not_connected" msgid="7171904845345573431">"Sin conexión"</string>
     <string name="quick_settings_wifi_no_network" msgid="2221993077220856376">"Sin red"</string>
     <string name="quick_settings_wifi_off_label" msgid="7558778100843885864">"Wi-Fi desactivada"</string>
-    <!-- no translation found for quick_settings_wifi_on_label (7607810331387031235) -->
-    <skip />
+    <string name="quick_settings_wifi_on_label" msgid="7607810331387031235">"Wi-Fi activado"</string>
     <string name="quick_settings_wifi_detail_empty_text" msgid="269990350383909226">"No hay redes Wi-Fi disponibles"</string>
     <string name="quick_settings_cast_title" msgid="7709016546426454729">"Transmitir"</string>
     <string name="quick_settings_casting" msgid="6601710681033353316">"Transmitiendo"</string>
@@ -351,7 +342,7 @@
     <string name="zen_silence_introduction" msgid="3137882381093271568">"Esta acción bloquea TODOS los sonidos y las vibraciones, incluso los que provienen de alarmas, música, videos y juegos."</string>
     <string name="keyguard_more_overflow_text" msgid="9195222469041601365">"+<xliff:g id="NUMBER_OF_NOTIFICATIONS">%d</xliff:g>"</string>
     <string name="speed_bump_explanation" msgid="1288875699658819755">"Notificaciones menos urgentes abajo"</string>
-    <string name="notification_tap_again" msgid="8524949573675922138">"Vuelve a tocar para abrir."</string>
+    <string name="notification_tap_again" msgid="7590196980943943842">"Presionar de nuevo para abrir"</string>
     <string name="keyguard_unlock" msgid="8043466894212841998">"Desliza el dedo hacia arriba para desbloquear el teléfono"</string>
     <string name="phone_hint" msgid="4872890986869209950">"Desliza el dedo para desbloquear el teléfono."</string>
     <string name="voice_hint" msgid="8939888732119726665">"Desliza el dedo desde el ícono para abrir asistente de voz."</string>
@@ -429,7 +420,7 @@
     <string name="accessibility_volume_expand" msgid="5946812790999244205">"Expandir"</string>
     <string name="accessibility_volume_collapse" msgid="3609549593031810875">"Contraer"</string>
     <string name="screen_pinning_title" msgid="3273740381976175811">"Pantalla fija"</string>
-    <string name="screen_pinning_description" msgid="3577937698406151604">"Esta función mantiene la pantalla visible hasta que dejes de fijarla. Mantén presionado el botón Atrás para dejar de fijar."</string>
+    <string name="screen_pinning_description" msgid="7238941806855968768">"Esta función mantiene la pantalla visible hasta que dejes de fijarla. Para ello, mantén presionado el botón Atrás."</string>
     <string name="screen_pinning_positive" msgid="3783985798366751226">"Entendido"</string>
     <string name="screen_pinning_negative" msgid="3741602308343880268">"No, gracias"</string>
     <string name="quick_settings_reset_confirmation_title" msgid="748792586749897883">"¿Ocultar <xliff:g id="TILE_LABEL">%1$s</xliff:g>?"</string>
@@ -439,15 +430,13 @@
     <string name="volumeui_prompt_allow" msgid="7954396902482228786">"Permitir"</string>
     <string name="volumeui_prompt_deny" msgid="5720663643411696731">"Rechazar"</string>
     <string name="volumeui_notification_title" msgid="4906770126345910955">"<xliff:g id="APP_NAME">%1$s</xliff:g> es el cuadro de diálogo de volumen."</string>
-    <string name="volumeui_notification_text" msgid="1826889705095768656">"Toca para restaurar el original."</string>
+    <string name="volumeui_notification_text" msgid="8819536904234337445">"Presiona para restablecer el original."</string>
     <string name="managed_profile_foreground_toast" msgid="5421487114739245972">"Estás usando tu perfil de trabajo"</string>
     <string name="volume_stream_content_description_unmute" msgid="4436631538779230857">"%1$s. Presiona para dejar de silenciar."</string>
     <string name="volume_stream_content_description_vibrate" msgid="1187944970457807498">"%1$s. Presiona para establecer el modo vibración. Es posible que los servicios de accesibilidad estén silenciados."</string>
     <string name="volume_stream_content_description_mute" msgid="3625049841390467354">"%1$s. Presiona para silenciar. Es posible que los servicios de accesibilidad estén silenciados."</string>
-    <!-- no translation found for volume_dialog_accessibility_shown_message (1834631467074259998) -->
-    <skip />
-    <!-- no translation found for volume_dialog_accessibility_dismissed_message (51543526013711399) -->
-    <skip />
+    <string name="volume_dialog_accessibility_shown_message" msgid="1834631467074259998">"Se muestran los controles de volumen de %s. Desliza el dedo para descartar."</string>
+    <string name="volume_dialog_accessibility_dismissed_message" msgid="51543526013711399">"Controles de volumen ocultos"</string>
     <string name="system_ui_tuner" msgid="708224127392452018">"Sintonizador de IU del sistema"</string>
     <string name="show_battery_percentage" msgid="5444136600512968798">"Mostrar porcentaje de la batería integrada"</string>
     <string name="show_battery_percentage_summary" msgid="3215025775576786037">"Mostrar porcentaje del nivel de batería en el ícono de la barra de estado cuando no se está cargando"</string>
@@ -643,27 +632,17 @@
     <string name="accessibility_qs_edit_tile_removed" msgid="8584304916627913440">"Se quitó <xliff:g id="TILE_NAME">%1$s</xliff:g>"</string>
     <string name="accessibility_qs_edit_tile_moved" msgid="4343693412689365038">"Se movió <xliff:g id="TILE_NAME">%1$s</xliff:g> a la posición <xliff:g id="POSITION">%2$d</xliff:g>"</string>
     <string name="accessibility_desc_quick_settings_edit" msgid="8073587401747016103">"Editor de Configuración rápida"</string>
-    <!-- no translation found for accessibility_desc_notification_icon (8352414185263916335) -->
-    <skip />
+    <string name="accessibility_desc_notification_icon" msgid="8352414185263916335">"Notificación de <xliff:g id="ID_1">%1$s</xliff:g>: <xliff:g id="ID_2">%2$s</xliff:g>"</string>
     <string name="dock_forced_resizable" msgid="5914261505436217520">"Es posible que la app no funcione en el modo de pantalla dividida."</string>
     <string name="dock_non_resizeble_failed_to_dock_text" msgid="3871617304250207291">"La app no es compatible con la función de pantalla dividida."</string>
-    <!-- no translation found for accessibility_quick_settings_settings (6132460890024942157) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_expand (2375165227880477530) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_collapse (1792625797142648105) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_alarm_set (1863000242431528676) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_user (1567445362870421770) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_no_internet (31890692343084075) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_open_details (4230931801728005194) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_open_settings (7806613775728380737) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_edit (7839992848995240393) -->
-    <skip />
+    <string name="accessibility_quick_settings_settings" msgid="6132460890024942157">"Abrir Configuración"</string>
+    <string name="accessibility_quick_settings_expand" msgid="2375165227880477530">"Abrir la configuración rápida"</string>
+    <string name="accessibility_quick_settings_collapse" msgid="1792625797142648105">"Cerrar configuración rápida"</string>
+    <string name="accessibility_quick_settings_alarm_set" msgid="1863000242431528676">"Se estableció la alarma."</string>
+    <string name="accessibility_quick_settings_user" msgid="1567445362870421770">"Accediste como <xliff:g id="ID_1">%s</xliff:g>"</string>
+    <string name="accessibility_quick_settings_no_internet" msgid="31890692343084075">"Sin Internet"</string>
+    <string name="accessibility_quick_settings_open_details" msgid="4230931801728005194">"Abrir página de detalles"</string>
+    <string name="accessibility_quick_settings_open_settings" msgid="7806613775728380737">"Abrir configuración de <xliff:g id="ID_1">%s</xliff:g>"</string>
+    <string name="accessibility_quick_settings_edit" msgid="7839992848995240393">"Editar orden de configuración"</string>
     <string name="accessibility_quick_settings_page" msgid="5032979051755200721">"Página <xliff:g id="ID_1">%1$d</xliff:g> de <xliff:g id="ID_2">%2$d</xliff:g>"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-es-rUS/strings_tv.xml b/packages/SystemUI/res/values-es-rUS/strings_tv.xml
index b8f503d..1dfa04c 100644
--- a/packages/SystemUI/res/values-es-rUS/strings_tv.xml
+++ b/packages/SystemUI/res/values-es-rUS/strings_tv.xml
@@ -24,10 +24,8 @@
     <string name="pip_play" msgid="674145557658227044">"Reproducir"</string>
     <string name="pip_pause" msgid="8412075640017218862">"Pausar"</string>
     <string name="pip_hold_home" msgid="340086535668778109">"Mantén presionado "<b>"INICIO"</b>" para controlar PIP"</string>
-    <!-- no translation found for pip_onboarding_title (7850436557670253991) -->
-    <skip />
-    <!-- no translation found for pip_onboarding_description (4028124563309465267) -->
-    <skip />
+    <string name="pip_onboarding_title" msgid="7850436557670253991">"Imagen en imagen"</string>
+    <string name="pip_onboarding_description" msgid="4028124563309465267">"Mantiene el video a la vista hasta que reproduzcas otro. Mantén presionado "<b>"INICIO"</b>" para controlar la función."</string>
     <string name="pip_onboarding_button" msgid="3957426748484904611">"Entendido"</string>
     <string name="recents_tv_dismiss" msgid="3555093879593377731">"Descartar"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-es/strings.xml b/packages/SystemUI/res/values-es/strings.xml
index 8888037..3527fe9 100644
--- a/packages/SystemUI/res/values-es/strings.xml
+++ b/packages/SystemUI/res/values-es/strings.xml
@@ -71,7 +71,7 @@
     <string name="screenshot_saving_title" msgid="8242282144535555697">"Guardando captura..."</string>
     <string name="screenshot_saving_text" msgid="2419718443411738818">"La captura de pantalla se está guardando."</string>
     <string name="screenshot_saved_title" msgid="6461865960961414961">"Captura guardada"</string>
-    <string name="screenshot_saved_text" msgid="1152839647677558815">"Toca para ver la captura de pantalla"</string>
+    <string name="screenshot_saved_text" msgid="2685605830386712477">"Toca para ver la captura de pantalla."</string>
     <string name="screenshot_failed_title" msgid="705781116746922771">"No se ha podido guardar la captura de pantalla."</string>
     <string name="screenshot_failed_to_save_unknown_text" msgid="7887826345701753830">"Se ha detectado un problema al guardar la captura de pantalla."</string>
     <string name="screenshot_failed_to_save_text" msgid="2592658083866306296">"No se puede guardar la captura de pantalla porque no hay espacio de almacenamiento suficiente."</string>
@@ -118,8 +118,7 @@
     <string name="accessibility_data_signal_full" msgid="2708384608124519369">"Señal de datos al máximo"</string>
     <string name="accessibility_wifi_name" msgid="7202151365171148501">"Conectado a <xliff:g id="WIFI">%s</xliff:g>."</string>
     <string name="accessibility_bluetooth_name" msgid="8441517146585531676">"Conectado a <xliff:g id="BLUETOOTH">%s</xliff:g>."</string>
-    <!-- no translation found for accessibility_cast_name (4026393061247081201) -->
-    <skip />
+    <string name="accessibility_cast_name" msgid="4026393061247081201">"Conectado a <xliff:g id="CAST">%s</xliff:g>."</string>
     <string name="accessibility_no_wimax" msgid="4329180129727630368">"Sin conexión WiMAX"</string>
     <string name="accessibility_wimax_one_bar" msgid="4170994299011863648">"Una barra de WiMAX"</string>
     <string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"Dos barras de WiMAX"</string>
@@ -150,17 +149,14 @@
     <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Tipo Edge"</string>
     <string name="accessibility_data_connection_wifi" msgid="2324496756590645221">"Wi-Fi"</string>
     <string name="accessibility_no_sim" msgid="8274017118472455155">"Sin tarjeta SIM"</string>
-    <!-- no translation found for accessibility_cell_data (7080312242791850520) -->
-    <skip />
-    <!-- no translation found for accessibility_cell_data_on (4310018593519761767) -->
-    <skip />
+    <string name="accessibility_cell_data" msgid="7080312242791850520">"Datos móviles"</string>
+    <string name="accessibility_cell_data_on" msgid="4310018593519761767">"Datos móviles activados"</string>
     <string name="accessibility_cell_data_off" msgid="8000803571751407635">"Datos móviles desactivados"</string>
     <string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"Compartir por Bluetooth"</string>
     <string name="accessibility_airplane_mode" msgid="834748999790763092">"Modo avión"</string>
     <string name="accessibility_no_sims" msgid="3957997018324995781">"No hay tarjeta SIM."</string>
     <string name="accessibility_carrier_network_change_mode" msgid="4017301580441304305">"Cambiando red de operador."</string>
-    <!-- no translation found for accessibility_battery_details (7645516654955025422) -->
-    <skip />
+    <string name="accessibility_battery_details" msgid="7645516654955025422">"Abrir detalles de la batería"</string>
     <string name="accessibility_battery_level" msgid="7451474187113371965">"<xliff:g id="NUMBER">%d</xliff:g> por ciento de batería"</string>
     <!-- String.format failed for translation -->
     <!-- no translation found for accessibility_battery_level_charging (1147587904439319646) -->
@@ -202,13 +198,11 @@
     <string name="accessibility_quick_settings_dnd_priority_on" msgid="1448402297221249355">"No molestar activado (solo prioritarias)."</string>
     <string name="accessibility_quick_settings_dnd_none_on" msgid="6882582132662613537">"No molestar activado, silencio total"</string>
     <string name="accessibility_quick_settings_dnd_alarms_on" msgid="9152834845587554157">"No molestar activado, solo alarmas."</string>
-    <!-- no translation found for accessibility_quick_settings_dnd (6607873236717185815) -->
-    <skip />
+    <string name="accessibility_quick_settings_dnd" msgid="6607873236717185815">"No molestar."</string>
     <string name="accessibility_quick_settings_dnd_off" msgid="2371832603753738581">"No molestar desactivado."</string>
     <string name="accessibility_quick_settings_dnd_changed_off" msgid="898107593453022935">"No molestar desactivado."</string>
     <string name="accessibility_quick_settings_dnd_changed_on" msgid="4483780856613561039">"No molestar activado."</string>
-    <!-- no translation found for accessibility_quick_settings_bluetooth (6341675755803320038) -->
-    <skip />
+    <string name="accessibility_quick_settings_bluetooth" msgid="6341675755803320038">"Bluetooth."</string>
     <string name="accessibility_quick_settings_bluetooth_off" msgid="2133631372372064339">"Bluetooth desactivado."</string>
     <string name="accessibility_quick_settings_bluetooth_on" msgid="7681999166216621838">"Bluetooth activado."</string>
     <string name="accessibility_quick_settings_bluetooth_connecting" msgid="6953242966685343855">"Conectando Bluetooth."</string>
@@ -274,10 +268,8 @@
     <string name="quick_settings_bluetooth_detail_empty_text" msgid="4910015762433302860">"No hay dispositivos vinculados disponibles"</string>
     <string name="quick_settings_brightness_label" msgid="6968372297018755815">"Brillo"</string>
     <string name="quick_settings_rotation_unlocked_label" msgid="7305323031808150099">"Girar automáticamente"</string>
-    <!-- no translation found for accessibility_quick_settings_rotation (4231661040698488779) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_rotation_value (1428962304214992318) -->
-    <skip />
+    <string name="accessibility_quick_settings_rotation" msgid="4231661040698488779">"Girar pantalla automáticamente"</string>
+    <string name="accessibility_quick_settings_rotation_value" msgid="1428962304214992318">"Establecer como <xliff:g id="ID_1">%s</xliff:g>"</string>
     <string name="quick_settings_rotation_locked_label" msgid="6359205706154282377">"Rotación bloqueada"</string>
     <string name="quick_settings_rotation_locked_portrait_label" msgid="5102691921442135053">"Vertical"</string>
     <string name="quick_settings_rotation_locked_landscape_label" msgid="8553157770061178719">"Horizontal"</string>
@@ -296,8 +288,7 @@
     <string name="quick_settings_wifi_not_connected" msgid="7171904845345573431">"No conectado"</string>
     <string name="quick_settings_wifi_no_network" msgid="2221993077220856376">"No hay red."</string>
     <string name="quick_settings_wifi_off_label" msgid="7558778100843885864">"Wi-Fi desactivado"</string>
-    <!-- no translation found for quick_settings_wifi_on_label (7607810331387031235) -->
-    <skip />
+    <string name="quick_settings_wifi_on_label" msgid="7607810331387031235">"Wi-Fi activada"</string>
     <string name="quick_settings_wifi_detail_empty_text" msgid="269990350383909226">"No hay ninguna red Wi-Fi disponible"</string>
     <string name="quick_settings_cast_title" msgid="7709016546426454729">"Enviar"</string>
     <string name="quick_settings_casting" msgid="6601710681033353316">"Enviando"</string>
@@ -351,7 +342,7 @@
     <string name="zen_silence_introduction" msgid="3137882381093271568">"Este modo permite bloquear TODOS los sonidos y todas las vibraciones (p. ej., los de alarmas, música, vídeos y juegos)."</string>
     <string name="keyguard_more_overflow_text" msgid="9195222469041601365">"+<xliff:g id="NUMBER_OF_NOTIFICATIONS">%d</xliff:g>"</string>
     <string name="speed_bump_explanation" msgid="1288875699658819755">"Notificaciones menos urgente abajo"</string>
-    <string name="notification_tap_again" msgid="8524949573675922138">"Vuelve a tocar para abrir"</string>
+    <string name="notification_tap_again" msgid="7590196980943943842">"Toca de nuevo para abrir"</string>
     <string name="keyguard_unlock" msgid="8043466894212841998">"Desliza el dedo hacia arriba para desbloquear"</string>
     <string name="phone_hint" msgid="4872890986869209950">"Desliza desde el icono para abrir el teléfono"</string>
     <string name="voice_hint" msgid="8939888732119726665">"Desliza desde el icono para abrir asistente de voz"</string>
@@ -429,7 +420,7 @@
     <string name="accessibility_volume_expand" msgid="5946812790999244205">"Mostrar"</string>
     <string name="accessibility_volume_collapse" msgid="3609549593031810875">"Ocultar"</string>
     <string name="screen_pinning_title" msgid="3273740381976175811">"Pantalla fijada"</string>
-    <string name="screen_pinning_description" msgid="3577937698406151604">"La pantalla se mantendrá visible hasta que dejes de fijarla. Para dejar de fijarla, mantén pulsado el botón de retroceso."</string>
+    <string name="screen_pinning_description" msgid="7238941806855968768">"La pantalla se mantiene visible hasta que dejes de fijarla (para ello, mantén pulsado el botón Atrás)."</string>
     <string name="screen_pinning_positive" msgid="3783985798366751226">"Entendido"</string>
     <string name="screen_pinning_negative" msgid="3741602308343880268">"No, gracias"</string>
     <string name="quick_settings_reset_confirmation_title" msgid="748792586749897883">"¿Ocultar <xliff:g id="TILE_LABEL">%1$s</xliff:g>?"</string>
@@ -439,15 +430,13 @@
     <string name="volumeui_prompt_allow" msgid="7954396902482228786">"Permitir"</string>
     <string name="volumeui_prompt_deny" msgid="5720663643411696731">"Rechazar"</string>
     <string name="volumeui_notification_title" msgid="4906770126345910955">"<xliff:g id="APP_NAME">%1$s</xliff:g> es el cuadro de diálogo de volumen"</string>
-    <string name="volumeui_notification_text" msgid="1826889705095768656">"Toca para restaurar la versión original."</string>
+    <string name="volumeui_notification_text" msgid="8819536904234337445">"Toca para restaurar el original."</string>
     <string name="managed_profile_foreground_toast" msgid="5421487114739245972">"Estás usando tu perfil de trabajo"</string>
     <string name="volume_stream_content_description_unmute" msgid="4436631538779230857">"%1$s. Toca para activar el sonido."</string>
     <string name="volume_stream_content_description_vibrate" msgid="1187944970457807498">"%1$s. Toca para poner el dispositivo en vibración. Los servicios de accesibilidad pueden silenciarse."</string>
     <string name="volume_stream_content_description_mute" msgid="3625049841390467354">"%1$s. Toca para silenciar. Los servicios de accesibilidad pueden silenciarse."</string>
-    <!-- no translation found for volume_dialog_accessibility_shown_message (1834631467074259998) -->
-    <skip />
-    <!-- no translation found for volume_dialog_accessibility_dismissed_message (51543526013711399) -->
-    <skip />
+    <string name="volume_dialog_accessibility_shown_message" msgid="1834631467074259998">"%s controles de volumen mostrados. Desliza el dedo hacia arriba para rechazar."</string>
+    <string name="volume_dialog_accessibility_dismissed_message" msgid="51543526013711399">"Controles de volumen ocultos"</string>
     <string name="system_ui_tuner" msgid="708224127392452018">"Configurador de IU del sistema"</string>
     <string name="show_battery_percentage" msgid="5444136600512968798">"Mostrar porcentaje de batería insertado"</string>
     <string name="show_battery_percentage_summary" msgid="3215025775576786037">"Mostrar el porcentaje del nivel de batería en el icono de la barra de estado cuando no se esté cargando"</string>
@@ -643,27 +632,17 @@
     <string name="accessibility_qs_edit_tile_removed" msgid="8584304916627913440">"<xliff:g id="TILE_NAME">%1$s</xliff:g> se ha quitado"</string>
     <string name="accessibility_qs_edit_tile_moved" msgid="4343693412689365038">"<xliff:g id="TILE_NAME">%1$s</xliff:g> se ha movido a la posición <xliff:g id="POSITION">%2$d</xliff:g>"</string>
     <string name="accessibility_desc_quick_settings_edit" msgid="8073587401747016103">"Editor de ajustes rápidos."</string>
-    <!-- no translation found for accessibility_desc_notification_icon (8352414185263916335) -->
-    <skip />
+    <string name="accessibility_desc_notification_icon" msgid="8352414185263916335">"Notificación de <xliff:g id="ID_1">%1$s</xliff:g>: <xliff:g id="ID_2">%2$s</xliff:g>"</string>
     <string name="dock_forced_resizable" msgid="5914261505436217520">"Es posible que la aplicación no funcione con la pantalla dividida."</string>
     <string name="dock_non_resizeble_failed_to_dock_text" msgid="3871617304250207291">"La aplicación no admite la pantalla dividida."</string>
-    <!-- no translation found for accessibility_quick_settings_settings (6132460890024942157) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_expand (2375165227880477530) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_collapse (1792625797142648105) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_alarm_set (1863000242431528676) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_user (1567445362870421770) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_no_internet (31890692343084075) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_open_details (4230931801728005194) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_open_settings (7806613775728380737) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_edit (7839992848995240393) -->
-    <skip />
+    <string name="accessibility_quick_settings_settings" msgid="6132460890024942157">"Abrir ajustes."</string>
+    <string name="accessibility_quick_settings_expand" msgid="2375165227880477530">"Abrir ajustes rápidos."</string>
+    <string name="accessibility_quick_settings_collapse" msgid="1792625797142648105">"Cerrar ajustes rápidos."</string>
+    <string name="accessibility_quick_settings_alarm_set" msgid="1863000242431528676">"Alarma establecida."</string>
+    <string name="accessibility_quick_settings_user" msgid="1567445362870421770">"Has iniciado sesión como <xliff:g id="ID_1">%s</xliff:g>"</string>
+    <string name="accessibility_quick_settings_no_internet" msgid="31890692343084075">"Sin conexión a Internet."</string>
+    <string name="accessibility_quick_settings_open_details" msgid="4230931801728005194">"Abrir detalles."</string>
+    <string name="accessibility_quick_settings_open_settings" msgid="7806613775728380737">"Abrir ajustes de <xliff:g id="ID_1">%s</xliff:g>."</string>
+    <string name="accessibility_quick_settings_edit" msgid="7839992848995240393">"Cambiar el orden de los ajustes."</string>
     <string name="accessibility_quick_settings_page" msgid="5032979051755200721">"Página <xliff:g id="ID_1">%1$d</xliff:g> de <xliff:g id="ID_2">%2$d</xliff:g>"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-es/strings_tv.xml b/packages/SystemUI/res/values-es/strings_tv.xml
index a5fb276..1ddfb5f 100644
--- a/packages/SystemUI/res/values-es/strings_tv.xml
+++ b/packages/SystemUI/res/values-es/strings_tv.xml
@@ -24,10 +24,8 @@
     <string name="pip_play" msgid="674145557658227044">"Reproducir"</string>
     <string name="pip_pause" msgid="8412075640017218862">"Pausar"</string>
     <string name="pip_hold_home" msgid="340086535668778109">"Mantén el botón "<b>"INICIO"</b>" pulsado para control de PIP"</string>
-    <!-- no translation found for pip_onboarding_title (7850436557670253991) -->
-    <skip />
-    <!-- no translation found for pip_onboarding_description (4028124563309465267) -->
-    <skip />
+    <string name="pip_onboarding_title" msgid="7850436557670253991">"Imagen en imagen"</string>
+    <string name="pip_onboarding_description" msgid="4028124563309465267">"El vídeo se mantendrá visible hasta que reproduzcas otro. Mantén pulsado el botón "<b>"INICIO"</b>" para controlarlo."</string>
     <string name="pip_onboarding_button" msgid="3957426748484904611">"Entendido"</string>
     <string name="recents_tv_dismiss" msgid="3555093879593377731">"Ignorar"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-et-rEE/strings.xml b/packages/SystemUI/res/values-et-rEE/strings.xml
index a349136..7b5aa6f 100644
--- a/packages/SystemUI/res/values-et-rEE/strings.xml
+++ b/packages/SystemUI/res/values-et-rEE/strings.xml
@@ -71,7 +71,7 @@
     <string name="screenshot_saving_title" msgid="8242282144535555697">"Kuvatõmmise salvestamine ..."</string>
     <string name="screenshot_saving_text" msgid="2419718443411738818">"Kuvatõmmist salvestatakse."</string>
     <string name="screenshot_saved_title" msgid="6461865960961414961">"Ekraanipilt on jäädvustatud."</string>
-    <string name="screenshot_saved_text" msgid="1152839647677558815">"Puudutage kuvatõmmise vaatamiseks."</string>
+    <string name="screenshot_saved_text" msgid="2685605830386712477">"Puudutage ekraanipildi vaatamiseks."</string>
     <string name="screenshot_failed_title" msgid="705781116746922771">"Kuvatõmmist ei saanud jäädvustada."</string>
     <string name="screenshot_failed_to_save_unknown_text" msgid="7887826345701753830">"Ekraanipildi salvestamisel ilmnes probleem."</string>
     <string name="screenshot_failed_to_save_text" msgid="2592658083866306296">"Piiratud salvestusruumi tõttu ei saa ekraanipilti salvestada."</string>
@@ -118,8 +118,7 @@
     <string name="accessibility_data_signal_full" msgid="2708384608124519369">"Andmesignaal on tugev."</string>
     <string name="accessibility_wifi_name" msgid="7202151365171148501">"Ühendatud: <xliff:g id="WIFI">%s</xliff:g>."</string>
     <string name="accessibility_bluetooth_name" msgid="8441517146585531676">"Ühendatud: <xliff:g id="BLUETOOTH">%s</xliff:g>."</string>
-    <!-- no translation found for accessibility_cast_name (4026393061247081201) -->
-    <skip />
+    <string name="accessibility_cast_name" msgid="4026393061247081201">"Ühendatud ülekandega <xliff:g id="CAST">%s</xliff:g>."</string>
     <string name="accessibility_no_wimax" msgid="4329180129727630368">"WiMAX-i pole."</string>
     <string name="accessibility_wimax_one_bar" msgid="4170994299011863648">"WiMAX-i on üks riba."</string>
     <string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"WiMAX-i on kaks riba."</string>
@@ -150,17 +149,14 @@
     <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Serv"</string>
     <string name="accessibility_data_connection_wifi" msgid="2324496756590645221">"WiFi"</string>
     <string name="accessibility_no_sim" msgid="8274017118472455155">"SIM-kaarti pole."</string>
-    <!-- no translation found for accessibility_cell_data (7080312242791850520) -->
-    <skip />
-    <!-- no translation found for accessibility_cell_data_on (4310018593519761767) -->
-    <skip />
+    <string name="accessibility_cell_data" msgid="7080312242791850520">"Mobiilne andmeside"</string>
+    <string name="accessibility_cell_data_on" msgid="4310018593519761767">"Mobiilne andmeside on sees"</string>
     <string name="accessibility_cell_data_off" msgid="8000803571751407635">"Mobiilne andmeside on välja lülitatud"</string>
     <string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"Bluetoothi jagamine."</string>
     <string name="accessibility_airplane_mode" msgid="834748999790763092">"Lennurežiim."</string>
     <string name="accessibility_no_sims" msgid="3957997018324995781">"SIM-kaarti pole."</string>
     <string name="accessibility_carrier_network_change_mode" msgid="4017301580441304305">"Operaatori võrku muudetakse."</string>
-    <!-- no translation found for accessibility_battery_details (7645516654955025422) -->
-    <skip />
+    <string name="accessibility_battery_details" msgid="7645516654955025422">"Aku üksikasjade avamine"</string>
     <string name="accessibility_battery_level" msgid="7451474187113371965">"Aku: <xliff:g id="NUMBER">%d</xliff:g> protsenti."</string>
     <!-- String.format failed for translation -->
     <!-- no translation found for accessibility_battery_level_charging (1147587904439319646) -->
@@ -202,13 +198,11 @@
     <string name="accessibility_quick_settings_dnd_priority_on" msgid="1448402297221249355">"Funktsioon Mitte segada on sisse lülitatud (ainult prioriteetsed)."</string>
     <string name="accessibility_quick_settings_dnd_none_on" msgid="6882582132662613537">"Funktsioon Mitte segada on sisse lülitatud, täielik vaikus."</string>
     <string name="accessibility_quick_settings_dnd_alarms_on" msgid="9152834845587554157">"Funktsioon Mitte segada on sisse lülitatud (ainult alarmid)."</string>
-    <!-- no translation found for accessibility_quick_settings_dnd (6607873236717185815) -->
-    <skip />
+    <string name="accessibility_quick_settings_dnd" msgid="6607873236717185815">"Mitte segada."</string>
     <string name="accessibility_quick_settings_dnd_off" msgid="2371832603753738581">"Funktsioon Mitte segada on välja lülitatud."</string>
     <string name="accessibility_quick_settings_dnd_changed_off" msgid="898107593453022935">"Funktsioon Mitte segada on välja lülitatud."</string>
     <string name="accessibility_quick_settings_dnd_changed_on" msgid="4483780856613561039">"Funktsioon Mitte segada on sisse lülitatud."</string>
-    <!-- no translation found for accessibility_quick_settings_bluetooth (6341675755803320038) -->
-    <skip />
+    <string name="accessibility_quick_settings_bluetooth" msgid="6341675755803320038">"Bluetooth."</string>
     <string name="accessibility_quick_settings_bluetooth_off" msgid="2133631372372064339">"Bluetooth on väljas."</string>
     <string name="accessibility_quick_settings_bluetooth_on" msgid="7681999166216621838">"Bluetooth on sees."</string>
     <string name="accessibility_quick_settings_bluetooth_connecting" msgid="6953242966685343855">"Bluetoothi ühendatakse."</string>
@@ -274,10 +268,8 @@
     <string name="quick_settings_bluetooth_detail_empty_text" msgid="4910015762433302860">"Ühtegi seotud seadet pole saadaval"</string>
     <string name="quick_settings_brightness_label" msgid="6968372297018755815">"Heledus"</string>
     <string name="quick_settings_rotation_unlocked_label" msgid="7305323031808150099">"Automaatne pööramine"</string>
-    <!-- no translation found for accessibility_quick_settings_rotation (4231661040698488779) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_rotation_value (1428962304214992318) -->
-    <skip />
+    <string name="accessibility_quick_settings_rotation" msgid="4231661040698488779">"Pööra ekraani automaatselt"</string>
+    <string name="accessibility_quick_settings_rotation_value" msgid="1428962304214992318">"Määra valikuks <xliff:g id="ID_1">%s</xliff:g>"</string>
     <string name="quick_settings_rotation_locked_label" msgid="6359205706154282377">"Pööramine on lukustatud"</string>
     <string name="quick_settings_rotation_locked_portrait_label" msgid="5102691921442135053">"Vertikaalpaigutus"</string>
     <string name="quick_settings_rotation_locked_landscape_label" msgid="8553157770061178719">"Horisontaalpaigutus"</string>
@@ -296,8 +288,7 @@
     <string name="quick_settings_wifi_not_connected" msgid="7171904845345573431">"Ühendus puudub"</string>
     <string name="quick_settings_wifi_no_network" msgid="2221993077220856376">"Võrku pole"</string>
     <string name="quick_settings_wifi_off_label" msgid="7558778100843885864">"WiFi-ühendus on väljas"</string>
-    <!-- no translation found for quick_settings_wifi_on_label (7607810331387031235) -->
-    <skip />
+    <string name="quick_settings_wifi_on_label" msgid="7607810331387031235">"WiFi on sees"</string>
     <string name="quick_settings_wifi_detail_empty_text" msgid="269990350383909226">"WiFi-võrke pole saadaval"</string>
     <string name="quick_settings_cast_title" msgid="7709016546426454729">"Ülekandmine"</string>
     <string name="quick_settings_casting" msgid="6601710681033353316">"Osatäitjad"</string>
@@ -351,7 +342,7 @@
     <string name="zen_silence_introduction" msgid="3137882381093271568">"See blokeerib KÕIK – sealhulgas alarmide, muusika, videote ja mängude – helid ja vibratsioonid."</string>
     <string name="keyguard_more_overflow_text" msgid="9195222469041601365">"+<xliff:g id="NUMBER_OF_NOTIFICATIONS">%d</xliff:g>"</string>
     <string name="speed_bump_explanation" msgid="1288875699658819755">"Vähem kiireloomulised märguanded on allpool"</string>
-    <string name="notification_tap_again" msgid="8524949573675922138">"Avamiseks puudutage uuesti"</string>
+    <string name="notification_tap_again" msgid="7590196980943943842">"Avamiseks puudutage uuesti"</string>
     <string name="keyguard_unlock" msgid="8043466894212841998">"Lukustuse tühistamiseks pühkige üles"</string>
     <string name="phone_hint" msgid="4872890986869209950">"Telefoni kasutamiseks pühkige ikoonilt eemale"</string>
     <string name="voice_hint" msgid="8939888732119726665">"Häälabi kasutamiseks pühkige ikoonilt eemale"</string>
@@ -429,7 +420,7 @@
     <string name="accessibility_volume_expand" msgid="5946812790999244205">"Laiendamine"</string>
     <string name="accessibility_volume_collapse" msgid="3609549593031810875">"Ahendamine"</string>
     <string name="screen_pinning_title" msgid="3273740381976175811">"Ekraan on kinnitatud"</string>
-    <string name="screen_pinning_description" msgid="3577937698406151604">"See hoiab selle kuval, kuni selle vabastate. Vabastamiseks puudutage pikalt nuppu Tagasi."</string>
+    <string name="screen_pinning_description" msgid="7238941806855968768">"See hoitakse kuval, kuni selle vabastate. Vabastamiseks puudutage pikalt nuppu Tagasi."</string>
     <string name="screen_pinning_positive" msgid="3783985798366751226">"Selge"</string>
     <string name="screen_pinning_negative" msgid="3741602308343880268">"Tänan, ei"</string>
     <string name="quick_settings_reset_confirmation_title" msgid="748792586749897883">"Kas peita <xliff:g id="TILE_LABEL">%1$s</xliff:g>?"</string>
@@ -439,15 +430,13 @@
     <string name="volumeui_prompt_allow" msgid="7954396902482228786">"Luba"</string>
     <string name="volumeui_prompt_deny" msgid="5720663643411696731">"Keela"</string>
     <string name="volumeui_notification_title" msgid="4906770126345910955">"<xliff:g id="APP_NAME">%1$s</xliff:g> on helitugevuse dialoog"</string>
-    <string name="volumeui_notification_text" msgid="1826889705095768656">"Originaali taastamiseks puudutage."</string>
+    <string name="volumeui_notification_text" msgid="8819536904234337445">"Puudutage originaali taastamiseks."</string>
     <string name="managed_profile_foreground_toast" msgid="5421487114739245972">"Kasutate oma tööprofiili"</string>
     <string name="volume_stream_content_description_unmute" msgid="4436631538779230857">"%1$s. Puudutage vaigistuse tühistamiseks."</string>
     <string name="volume_stream_content_description_vibrate" msgid="1187944970457807498">"%1$s. Puudutage värinarežiimi määramiseks. Juurdepääsetavuse teenused võidakse vaigistada."</string>
     <string name="volume_stream_content_description_mute" msgid="3625049841390467354">"%1$s. Puudutage vaigistamiseks. Juurdepääsetavuse teenused võidakse vaigistada."</string>
-    <!-- no translation found for volume_dialog_accessibility_shown_message (1834631467074259998) -->
-    <skip />
-    <!-- no translation found for volume_dialog_accessibility_dismissed_message (51543526013711399) -->
-    <skip />
+    <string name="volume_dialog_accessibility_shown_message" msgid="1834631467074259998">"%s helitugevuse juhtnuppu on kuvatud. Loobumiseks pühkige üles."</string>
+    <string name="volume_dialog_accessibility_dismissed_message" msgid="51543526013711399">"Helitugevuse juhtnupud on peidetud"</string>
     <string name="system_ui_tuner" msgid="708224127392452018">"Süsteemi kasutajaliidese tuuner"</string>
     <string name="show_battery_percentage" msgid="5444136600512968798">"Kuva lisatud akutaseme protsent"</string>
     <string name="show_battery_percentage_summary" msgid="3215025775576786037">"Akutaseme protsendi kuvamine olekuriba ikoonil, kui akut ei laeta"</string>
@@ -643,27 +632,17 @@
     <string name="accessibility_qs_edit_tile_removed" msgid="8584304916627913440">"Paan <xliff:g id="TILE_NAME">%1$s</xliff:g> eemaldati"</string>
     <string name="accessibility_qs_edit_tile_moved" msgid="4343693412689365038">"Paan <xliff:g id="TILE_NAME">%1$s</xliff:g> teisaldati asendisse <xliff:g id="POSITION">%2$d</xliff:g>"</string>
     <string name="accessibility_desc_quick_settings_edit" msgid="8073587401747016103">"Kiirseadete redigeerija."</string>
-    <!-- no translation found for accessibility_desc_notification_icon (8352414185263916335) -->
-    <skip />
+    <string name="accessibility_desc_notification_icon" msgid="8352414185263916335">"Teenuse <xliff:g id="ID_1">%1$s</xliff:g> märguanne: <xliff:g id="ID_2">%2$s</xliff:g>"</string>
     <string name="dock_forced_resizable" msgid="5914261505436217520">"Rakendus ei pruugi poolitatud ekraaniga töötada."</string>
     <string name="dock_non_resizeble_failed_to_dock_text" msgid="3871617304250207291">"Rakendus ei toeta jagatud ekraani."</string>
-    <!-- no translation found for accessibility_quick_settings_settings (6132460890024942157) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_expand (2375165227880477530) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_collapse (1792625797142648105) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_alarm_set (1863000242431528676) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_user (1567445362870421770) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_no_internet (31890692343084075) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_open_details (4230931801728005194) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_open_settings (7806613775728380737) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_edit (7839992848995240393) -->
-    <skip />
+    <string name="accessibility_quick_settings_settings" msgid="6132460890024942157">"Ava seaded."</string>
+    <string name="accessibility_quick_settings_expand" msgid="2375165227880477530">"Ava kiirseaded."</string>
+    <string name="accessibility_quick_settings_collapse" msgid="1792625797142648105">"Sule kiirseaded."</string>
+    <string name="accessibility_quick_settings_alarm_set" msgid="1863000242431528676">"Alarm on määratud."</string>
+    <string name="accessibility_quick_settings_user" msgid="1567445362870421770">"Sisse logitud kasutajana <xliff:g id="ID_1">%s</xliff:g>"</string>
+    <string name="accessibility_quick_settings_no_internet" msgid="31890692343084075">"Interneti-ühendus puudub."</string>
+    <string name="accessibility_quick_settings_open_details" msgid="4230931801728005194">"Ava üksikasjad."</string>
+    <string name="accessibility_quick_settings_open_settings" msgid="7806613775728380737">"Ava teenuse <xliff:g id="ID_1">%s</xliff:g> seaded."</string>
+    <string name="accessibility_quick_settings_edit" msgid="7839992848995240393">"Muuda seadete järjestust."</string>
     <string name="accessibility_quick_settings_page" msgid="5032979051755200721">"Leht <xliff:g id="ID_1">%1$d</xliff:g>/<xliff:g id="ID_2">%2$d</xliff:g>"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-et-rEE/strings_tv.xml b/packages/SystemUI/res/values-et-rEE/strings_tv.xml
index 57fbdc5..3386f57 100644
--- a/packages/SystemUI/res/values-et-rEE/strings_tv.xml
+++ b/packages/SystemUI/res/values-et-rEE/strings_tv.xml
@@ -24,10 +24,8 @@
     <string name="pip_play" msgid="674145557658227044">"Esita"</string>
     <string name="pip_pause" msgid="8412075640017218862">"Peata"</string>
     <string name="pip_hold_home" msgid="340086535668778109">"PIP juht. hoidke all nuppu "<b>"AVAEKRAAN"</b></string>
-    <!-- no translation found for pip_onboarding_title (7850436557670253991) -->
-    <skip />
-    <!-- no translation found for pip_onboarding_description (4028124563309465267) -->
-    <skip />
+    <string name="pip_onboarding_title" msgid="7850436557670253991">"Pilt pildis"</string>
+    <string name="pip_onboarding_description" msgid="4028124563309465267">"See hoiab teie videot kuval, kuni esitate järgmise. Selle juhtimiseks vajutage pikalt nuppu "<b>"AVAEKRAAN"</b>"."</string>
     <string name="pip_onboarding_button" msgid="3957426748484904611">"Selge"</string>
     <string name="recents_tv_dismiss" msgid="3555093879593377731">"Loobu"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-eu-rES/strings.xml b/packages/SystemUI/res/values-eu-rES/strings.xml
index 34a5a2b..b9a7a18 100644
--- a/packages/SystemUI/res/values-eu-rES/strings.xml
+++ b/packages/SystemUI/res/values-eu-rES/strings.xml
@@ -71,7 +71,7 @@
     <string name="screenshot_saving_title" msgid="8242282144535555697">"Pantaila-argazkia gordetzen…"</string>
     <string name="screenshot_saving_text" msgid="2419718443411738818">"Pantaila-argazkia gordetzen ari da."</string>
     <string name="screenshot_saved_title" msgid="6461865960961414961">"Pantaila-argazkia atera da."</string>
-    <string name="screenshot_saved_text" msgid="1152839647677558815">"Pantaila-argazkia ikusteko, ukitu ezazu."</string>
+    <string name="screenshot_saved_text" msgid="2685605830386712477">"Sakatu pantaila-argazkia ikusteko."</string>
     <string name="screenshot_failed_title" msgid="705781116746922771">"Ezin izan da pantaila-argazkia atera."</string>
     <string name="screenshot_failed_to_save_unknown_text" msgid="7887826345701753830">"Arazo bat izan da pantaila-argazkia gordetzean."</string>
     <string name="screenshot_failed_to_save_text" msgid="2592658083866306296">"Ezin da atera pantaila-argazkia ez delako tokirik geratzen."</string>
@@ -118,8 +118,7 @@
     <string name="accessibility_data_signal_full" msgid="2708384608124519369">"Datu-seinale osoa."</string>
     <string name="accessibility_wifi_name" msgid="7202151365171148501">"<xliff:g id="WIFI">%s</xliff:g> sarera konektatuta."</string>
     <string name="accessibility_bluetooth_name" msgid="8441517146585531676">"<xliff:g id="BLUETOOTH">%s</xliff:g> gailura konektatuta."</string>
-    <!-- no translation found for accessibility_cast_name (4026393061247081201) -->
-    <skip />
+    <string name="accessibility_cast_name" msgid="4026393061247081201">"Hona konektatuta: <xliff:g id="CAST">%s</xliff:g>."</string>
     <string name="accessibility_no_wimax" msgid="4329180129727630368">"WiMAX gabe."</string>
     <string name="accessibility_wimax_one_bar" msgid="4170994299011863648">"WiMAX sarearen barra bat."</string>
     <string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"WiMAX sarearen bi barra."</string>
@@ -150,17 +149,14 @@
     <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"EDGE"</string>
     <string name="accessibility_data_connection_wifi" msgid="2324496756590645221">"Wi-Fi konexioa"</string>
     <string name="accessibility_no_sim" msgid="8274017118472455155">"Ez dago SIM txartelik."</string>
-    <!-- no translation found for accessibility_cell_data (7080312242791850520) -->
-    <skip />
-    <!-- no translation found for accessibility_cell_data_on (4310018593519761767) -->
-    <skip />
+    <string name="accessibility_cell_data" msgid="7080312242791850520">"Datu-konexioa"</string>
+    <string name="accessibility_cell_data_on" msgid="4310018593519761767">"Aktibatuta dago datu-konexioa"</string>
     <string name="accessibility_cell_data_off" msgid="8000803571751407635">"Desaktibatuta dago datu-konexioa"</string>
     <string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"Konexioa partekatzea (Bluetooth)"</string>
     <string name="accessibility_airplane_mode" msgid="834748999790763092">"Hegaldi-modua"</string>
     <string name="accessibility_no_sims" msgid="3957997018324995781">"Ez dago SIM txartelik."</string>
     <string name="accessibility_carrier_network_change_mode" msgid="4017301580441304305">"Operadorearen sarea aldatzea."</string>
-    <!-- no translation found for accessibility_battery_details (7645516654955025422) -->
-    <skip />
+    <string name="accessibility_battery_details" msgid="7645516654955025422">"Ireki bateriaren xehetasunak"</string>
     <string name="accessibility_battery_level" msgid="7451474187113371965">"Bateriaren karga: <xliff:g id="NUMBER">%d</xliff:g>."</string>
     <!-- String.format failed for translation -->
     <!-- no translation found for accessibility_battery_level_charging (1147587904439319646) -->
@@ -202,13 +198,11 @@
     <string name="accessibility_quick_settings_dnd_priority_on" msgid="1448402297221249355">"\"Ez molestatu\" aukera aktibatuta dago, lehentasunezkoak soilik."</string>
     <string name="accessibility_quick_settings_dnd_none_on" msgid="6882582132662613537">"\"Ez molestatu\" aukera aktibatuta dago, isiltasun osoa."</string>
     <string name="accessibility_quick_settings_dnd_alarms_on" msgid="9152834845587554157">"\"Ez molestatu\" aukera aktibatuta dago, alarmak soilik."</string>
-    <!-- no translation found for accessibility_quick_settings_dnd (6607873236717185815) -->
-    <skip />
+    <string name="accessibility_quick_settings_dnd" msgid="6607873236717185815">"Ez molestatu."</string>
     <string name="accessibility_quick_settings_dnd_off" msgid="2371832603753738581">"\"Ez molestatu\" aukera desaktibatuta dago."</string>
     <string name="accessibility_quick_settings_dnd_changed_off" msgid="898107593453022935">"\"Ez molestatu\" aukera desaktibatuta dago."</string>
     <string name="accessibility_quick_settings_dnd_changed_on" msgid="4483780856613561039">"\"Ez molestatu\" aukera aktibatuta dago."</string>
-    <!-- no translation found for accessibility_quick_settings_bluetooth (6341675755803320038) -->
-    <skip />
+    <string name="accessibility_quick_settings_bluetooth" msgid="6341675755803320038">"Bluetooth."</string>
     <string name="accessibility_quick_settings_bluetooth_off" msgid="2133631372372064339">"Bluetooth konexioa desaktibatuta dago."</string>
     <string name="accessibility_quick_settings_bluetooth_on" msgid="7681999166216621838">"Bluetooth konexioa aktibatuta dago."</string>
     <string name="accessibility_quick_settings_bluetooth_connecting" msgid="6953242966685343855">"Bluetooth bidez konektatzen ari da."</string>
@@ -274,10 +268,8 @@
     <string name="quick_settings_bluetooth_detail_empty_text" msgid="4910015762433302860">"Ez dago parekatutako gailurik erabilgarri"</string>
     <string name="quick_settings_brightness_label" msgid="6968372297018755815">"Distira"</string>
     <string name="quick_settings_rotation_unlocked_label" msgid="7305323031808150099">"Biratze automatikoa"</string>
-    <!-- no translation found for accessibility_quick_settings_rotation (4231661040698488779) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_rotation_value (1428962304214992318) -->
-    <skip />
+    <string name="accessibility_quick_settings_rotation" msgid="4231661040698488779">"Biratu pantaila automatikoki"</string>
+    <string name="accessibility_quick_settings_rotation_value" msgid="1428962304214992318">"<xliff:g id="ID_1">%s</xliff:g> hautatu da"</string>
     <string name="quick_settings_rotation_locked_label" msgid="6359205706154282377">"Biratzea blokeatuta"</string>
     <string name="quick_settings_rotation_locked_portrait_label" msgid="5102691921442135053">"Bertikala"</string>
     <string name="quick_settings_rotation_locked_landscape_label" msgid="8553157770061178719">"Horizontala"</string>
@@ -296,8 +288,7 @@
     <string name="quick_settings_wifi_not_connected" msgid="7171904845345573431">"Konektatu gabe"</string>
     <string name="quick_settings_wifi_no_network" msgid="2221993077220856376">"Ez dago sarerik"</string>
     <string name="quick_settings_wifi_off_label" msgid="7558778100843885864">"Wi-Fi konexioa desaktibatuta"</string>
-    <!-- no translation found for quick_settings_wifi_on_label (7607810331387031235) -->
-    <skip />
+    <string name="quick_settings_wifi_on_label" msgid="7607810331387031235">"Aktibatuta dago Wi-Fi konexioa"</string>
     <string name="quick_settings_wifi_detail_empty_text" msgid="269990350383909226">"Ez dago Wi-Fi sarerik erabilgarri"</string>
     <string name="quick_settings_cast_title" msgid="7709016546426454729">"Igorpena"</string>
     <string name="quick_settings_casting" msgid="6601710681033353316">"Igortzen"</string>
@@ -333,7 +324,7 @@
     <string name="recents_launch_disabled_message" msgid="1624523193008871793">"<xliff:g id="APP">%s</xliff:g> desgaituta dago modu seguruan."</string>
     <string name="recents_stack_action_button_label" msgid="6593727103310426253">"Garbitu guztiak"</string>
     <string name="recents_incompatible_app_message" msgid="5075812958564082451">"Aplikazioak ez du onartzen pantaila zatitua"</string>
-    <string name="recents_drag_hint_message" msgid="2649739267073203985">"Arrastatu hau pantaila banatzeko"</string>
+    <string name="recents_drag_hint_message" msgid="2649739267073203985">"Arrastatu hau pantaila zatitzeko"</string>
     <string name="recents_multistack_add_stack_dialog_split_horizontal" msgid="8848514474543427332">"Zatitze horizontala"</string>
     <string name="recents_multistack_add_stack_dialog_split_vertical" msgid="9075292233696180813">"Zatitze bertikala"</string>
     <string name="recents_multistack_add_stack_dialog_split_custom" msgid="4177837597513701943">"Zatitze pertsonalizatua"</string>
@@ -351,7 +342,7 @@
     <string name="zen_silence_introduction" msgid="3137882381093271568">"Soinu eta dardara GUZTIAK blokeatuko dira, besteak beste, alarmak, musika, bideoak eta jokoak."</string>
     <string name="keyguard_more_overflow_text" msgid="9195222469041601365">"+<xliff:g id="NUMBER_OF_NOTIFICATIONS">%d</xliff:g>"</string>
     <string name="speed_bump_explanation" msgid="1288875699658819755">"Horren premiazkoak ez diren jakinarazpenak daude behean"</string>
-    <string name="notification_tap_again" msgid="8524949573675922138">"Irekitzeko, ukitu berriro"</string>
+    <string name="notification_tap_again" msgid="7590196980943943842">"Irekitzeko, ukitu berriro"</string>
     <string name="keyguard_unlock" msgid="8043466894212841998">"Desblokeatzeko, pasatu hatza gorantz"</string>
     <string name="phone_hint" msgid="4872890986869209950">"Pasatu hatza ikonotik, telefonoa irekitzeko"</string>
     <string name="voice_hint" msgid="8939888732119726665">"Pasatu hatza ikonotik, ahots-laguntza irekitzeko"</string>
@@ -429,7 +420,7 @@
     <string name="accessibility_volume_expand" msgid="5946812790999244205">"Zabaldu"</string>
     <string name="accessibility_volume_collapse" msgid="3609549593031810875">"Tolestu"</string>
     <string name="screen_pinning_title" msgid="3273740381976175811">"Pantaila ainguratuta dago"</string>
-    <string name="screen_pinning_description" msgid="3577937698406151604">"Horrela, ikusgai egongo da aingura kendu arte. Aingura kentzeko, eduki ukituta \"Atzera\" botoia."</string>
+    <string name="screen_pinning_description" msgid="7238941806855968768">"Horrela, ikusgai egongo da aingura kendu arte. Aingura kentzeko, eduki sakatuta \"Atzera\" botoia."</string>
     <string name="screen_pinning_positive" msgid="3783985798366751226">"Ados"</string>
     <string name="screen_pinning_negative" msgid="3741602308343880268">"Ez, eskerrik asko"</string>
     <string name="quick_settings_reset_confirmation_title" msgid="748792586749897883">"<xliff:g id="TILE_LABEL">%1$s</xliff:g> ezkutatu nahi duzu?"</string>
@@ -439,15 +430,13 @@
     <string name="volumeui_prompt_allow" msgid="7954396902482228786">"Baimendu"</string>
     <string name="volumeui_prompt_deny" msgid="5720663643411696731">"Ukatu"</string>
     <string name="volumeui_notification_title" msgid="4906770126345910955">"<xliff:g id="APP_NAME">%1$s</xliff:g> da bolumenaren leihoa"</string>
-    <string name="volumeui_notification_text" msgid="1826889705095768656">"Ukitu jatorrizkora leheneratzeko"</string>
+    <string name="volumeui_notification_text" msgid="8819536904234337445">"Sakatu jatorrizkora leheneratzeko."</string>
     <string name="managed_profile_foreground_toast" msgid="5421487114739245972">"Work profila erabiltzen ari zara"</string>
     <string name="volume_stream_content_description_unmute" msgid="4436631538779230857">"%1$s. Sakatu audioa aktibatzeko."</string>
     <string name="volume_stream_content_description_vibrate" msgid="1187944970457807498">"%1$s. Sakatu dardara ezartzeko. Baliteke erabilerraztasun-eginbideen audioa desaktibatzea."</string>
     <string name="volume_stream_content_description_mute" msgid="3625049841390467354">"%1$s. Sakatu audioa desaktibatzeko. Baliteke erabilerraztasun-eginbideen audioa desaktibatzea."</string>
-    <!-- no translation found for volume_dialog_accessibility_shown_message (1834631467074259998) -->
-    <skip />
-    <!-- no translation found for volume_dialog_accessibility_dismissed_message (51543526013711399) -->
-    <skip />
+    <string name="volume_dialog_accessibility_shown_message" msgid="1834631467074259998">"Bolumena kontrolatzeko %s aukera daude ikusgai. Pasatu hatza gora baztertzeko."</string>
+    <string name="volume_dialog_accessibility_dismissed_message" msgid="51543526013711399">"Ezkutatuta daude bolumena kontrolatzeko aukerak"</string>
     <string name="system_ui_tuner" msgid="708224127392452018">"Sistemako erabiltzaile-interfazearen konfiguratzailea"</string>
     <string name="show_battery_percentage" msgid="5444136600512968798">"Erakutsi txertatutako bateriaren ehunekoa"</string>
     <string name="show_battery_percentage_summary" msgid="3215025775576786037">"Erakutsi bateria-mailaren ehunekoa egoera-barraren ikonoan, kargatzen ari ez denean"</string>
@@ -624,16 +613,16 @@
   </string-array>
     <string name="other" msgid="4060683095962566764">"Beste bat"</string>
     <string name="accessibility_divider" msgid="5903423481953635044">"Pantaila-zatitzailea"</string>
-    <string name="accessibility_action_divider_left_full" msgid="2801570521881574972">"Ezkerreko pantaila osoa"</string>
-    <string name="accessibility_action_divider_left_70" msgid="3612060638991687254">"Ezkerreko % 70"</string>
-    <string name="accessibility_action_divider_left_50" msgid="1248083470322193075">"Ezkerreko % 50"</string>
-    <string name="accessibility_action_divider_left_30" msgid="543324403127069386">"Ezkerreko % 30"</string>
-    <string name="accessibility_action_divider_right_full" msgid="4639381073802030463">"Eskuineko pantaila osoa"</string>
-    <string name="accessibility_action_divider_top_full" msgid="5357010904067731654">"Goiko pantaila osoa"</string>
-    <string name="accessibility_action_divider_top_70" msgid="5090779195650364522">"Goiko % 70"</string>
-    <string name="accessibility_action_divider_top_50" msgid="6385859741925078668">"Goiko % 50"</string>
-    <string name="accessibility_action_divider_top_30" msgid="6201455163864841205">"Goiko % 30"</string>
-    <string name="accessibility_action_divider_bottom_full" msgid="301433196679548001">"Beheko pantaila osoa"</string>
+    <string name="accessibility_action_divider_left_full" msgid="2801570521881574972">"Ezarri ezkerraldea pantaila osoan"</string>
+    <string name="accessibility_action_divider_left_70" msgid="3612060638991687254">"Ezarri ezkerraldea % 70en"</string>
+    <string name="accessibility_action_divider_left_50" msgid="1248083470322193075">"Ezarri ezkerraldea % 50en"</string>
+    <string name="accessibility_action_divider_left_30" msgid="543324403127069386">"Ezarri ezkerraldea % 30en"</string>
+    <string name="accessibility_action_divider_right_full" msgid="4639381073802030463">"Ezarri eskuinaldea pantaila osoan"</string>
+    <string name="accessibility_action_divider_top_full" msgid="5357010904067731654">"Ezarri goialdea pantaila osoan"</string>
+    <string name="accessibility_action_divider_top_70" msgid="5090779195650364522">"Ezarri goialdea % 70en"</string>
+    <string name="accessibility_action_divider_top_50" msgid="6385859741925078668">"Ezarri goialdea % 50en"</string>
+    <string name="accessibility_action_divider_top_30" msgid="6201455163864841205">"Ezarri goialdea % 30en"</string>
+    <string name="accessibility_action_divider_bottom_full" msgid="301433196679548001">"Ezarri behealdea pantaila osoan"</string>
     <string name="accessibility_qs_edit_tile_label" msgid="8374924053307764245">"<xliff:g id="POSITION">%1$d</xliff:g>. posizioa, <xliff:g id="TILE_NAME">%2$s</xliff:g>. Editatzeko, sakatu birritan."</string>
     <string name="accessibility_qs_edit_add_tile_label" msgid="8133209638023882667">"<xliff:g id="TILE_NAME">%1$s</xliff:g>. Gehitzeko, sakatu birritan."</string>
     <string name="accessibility_qs_edit_position_label" msgid="5055306305919289819">"<xliff:g id="POSITION">%1$d</xliff:g>. posizioa. Hautatzeko, sakatu birritan."</string>
@@ -643,27 +632,17 @@
     <string name="accessibility_qs_edit_tile_removed" msgid="8584304916627913440">"Kendu da <xliff:g id="TILE_NAME">%1$s</xliff:g>"</string>
     <string name="accessibility_qs_edit_tile_moved" msgid="4343693412689365038">"<xliff:g id="TILE_NAME">%1$s</xliff:g> <xliff:g id="POSITION">%2$d</xliff:g>. posiziora eraman da"</string>
     <string name="accessibility_desc_quick_settings_edit" msgid="8073587401747016103">"Ezarpen bizkorren editorea."</string>
-    <!-- no translation found for accessibility_desc_notification_icon (8352414185263916335) -->
-    <skip />
+    <string name="accessibility_desc_notification_icon" msgid="8352414185263916335">"<xliff:g id="ID_1">%1$s</xliff:g> zerbitzuko jakinarazpena: <xliff:g id="ID_2">%2$s</xliff:g>"</string>
     <string name="dock_forced_resizable" msgid="5914261505436217520">"Baliteke aplikazioak ez funtzionatzea pantaila zatituan."</string>
     <string name="dock_non_resizeble_failed_to_dock_text" msgid="3871617304250207291">"Aplikazioak ez du onartzen pantaila zatitua"</string>
-    <!-- no translation found for accessibility_quick_settings_settings (6132460890024942157) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_expand (2375165227880477530) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_collapse (1792625797142648105) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_alarm_set (1863000242431528676) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_user (1567445362870421770) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_no_internet (31890692343084075) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_open_details (4230931801728005194) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_open_settings (7806613775728380737) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_edit (7839992848995240393) -->
-    <skip />
+    <string name="accessibility_quick_settings_settings" msgid="6132460890024942157">"Ireki ezarpenak."</string>
+    <string name="accessibility_quick_settings_expand" msgid="2375165227880477530">"Ireki ezarpen bizkorrak."</string>
+    <string name="accessibility_quick_settings_collapse" msgid="1792625797142648105">"Itxi ezarpen bizkorrak."</string>
+    <string name="accessibility_quick_settings_alarm_set" msgid="1863000242431528676">"Alarma ezarri da."</string>
+    <string name="accessibility_quick_settings_user" msgid="1567445362870421770">"<xliff:g id="ID_1">%s</xliff:g> gisa hasi duzu saioa"</string>
+    <string name="accessibility_quick_settings_no_internet" msgid="31890692343084075">"Ez dago Interneteko konexiorik."</string>
+    <string name="accessibility_quick_settings_open_details" msgid="4230931801728005194">"Ireki xehetasunak."</string>
+    <string name="accessibility_quick_settings_open_settings" msgid="7806613775728380737">"Ireki <xliff:g id="ID_1">%s</xliff:g> ezarpenak."</string>
+    <string name="accessibility_quick_settings_edit" msgid="7839992848995240393">"Editatu ezarpenen ordena."</string>
     <string name="accessibility_quick_settings_page" msgid="5032979051755200721">"<xliff:g id="ID_1">%1$d</xliff:g>/<xliff:g id="ID_2">%2$d</xliff:g> orria"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-eu-rES/strings_tv.xml b/packages/SystemUI/res/values-eu-rES/strings_tv.xml
index a2878cd..7e1af98 100644
--- a/packages/SystemUI/res/values-eu-rES/strings_tv.xml
+++ b/packages/SystemUI/res/values-eu-rES/strings_tv.xml
@@ -24,10 +24,8 @@
     <string name="pip_play" msgid="674145557658227044">"Erreproduzitu"</string>
     <string name="pip_pause" msgid="8412075640017218862">"Pausatu"</string>
     <string name="pip_hold_home" msgid="340086535668778109"><b>"HASIERA"</b>" PIP kontrolatzeko"</string>
-    <!-- no translation found for pip_onboarding_title (7850436557670253991) -->
-    <skip />
-    <!-- no translation found for pip_onboarding_description (4028124563309465267) -->
-    <skip />
+    <string name="pip_onboarding_title" msgid="7850436557670253991">"Argazkia argazkian"</string>
+    <string name="pip_onboarding_description" msgid="4028124563309465267">"Horrela, ikusgai egongo da bideoa beste bat erreproduzitu arte. Pantaila txikia kontrolatzeko, eduki sakatuta "<b>"HOME"</b>" botoia."</string>
     <string name="pip_onboarding_button" msgid="3957426748484904611">"Ados"</string>
     <string name="recents_tv_dismiss" msgid="3555093879593377731">"Baztertu"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-fa/strings.xml b/packages/SystemUI/res/values-fa/strings.xml
index c0ca8d4..03285c5 100644
--- a/packages/SystemUI/res/values-fa/strings.xml
+++ b/packages/SystemUI/res/values-fa/strings.xml
@@ -71,7 +71,7 @@
     <string name="screenshot_saving_title" msgid="8242282144535555697">"در حال ذخیره عکس صفحه‌نمایش..."</string>
     <string name="screenshot_saving_text" msgid="2419718443411738818">"عکس صفحه‌نمایش ذخیره شد."</string>
     <string name="screenshot_saved_title" msgid="6461865960961414961">"عکس صفحه‌نمایش گرفته شد."</string>
-    <string name="screenshot_saved_text" msgid="1152839647677558815">"برای مشاهده عکس صفحه‌نمایشتان، لمس کنید."</string>
+    <string name="screenshot_saved_text" msgid="2685605830386712477">"برای مشاهده عکس صفحه‌نمایشتان ضربه بزنید."</string>
     <string name="screenshot_failed_title" msgid="705781116746922771">"عکس صفحه‌نمایش گرفته نشد."</string>
     <string name="screenshot_failed_to_save_unknown_text" msgid="7887826345701753830">"هنگام ذخیره عکس صفحه‌نمایش مشکلی رخ داد."</string>
     <string name="screenshot_failed_to_save_text" msgid="2592658083866306296">"به دلیل محدود بودن فضای ذخیره‌سازی نمی‌توانید عکس صفحه‌نمایش را ذخیره کنید."</string>
@@ -118,8 +118,7 @@
     <string name="accessibility_data_signal_full" msgid="2708384608124519369">"قدرت سیگنال داده کامل است."</string>
     <string name="accessibility_wifi_name" msgid="7202151365171148501">"به <xliff:g id="WIFI">%s</xliff:g> متصل شد."</string>
     <string name="accessibility_bluetooth_name" msgid="8441517146585531676">"به <xliff:g id="BLUETOOTH">%s</xliff:g> متصل شد."</string>
-    <!-- no translation found for accessibility_cast_name (4026393061247081201) -->
-    <skip />
+    <string name="accessibility_cast_name" msgid="4026393061247081201">"متصل به <xliff:g id="CAST">%s</xliff:g>."</string>
     <string name="accessibility_no_wimax" msgid="4329180129727630368">"‏WiMAX وجود ندارد."</string>
     <string name="accessibility_wimax_one_bar" msgid="4170994299011863648">"‏WiMAX دارای یک نوار است."</string>
     <string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"‏WiMAX دارای دو نوار است."</string>
@@ -150,17 +149,14 @@
     <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string>
     <string name="accessibility_data_connection_wifi" msgid="2324496756590645221">"Wi-Fi"</string>
     <string name="accessibility_no_sim" msgid="8274017118472455155">"بدون سیم کارت."</string>
-    <!-- no translation found for accessibility_cell_data (7080312242791850520) -->
-    <skip />
-    <!-- no translation found for accessibility_cell_data_on (4310018593519761767) -->
-    <skip />
+    <string name="accessibility_cell_data" msgid="7080312242791850520">"داده شبکه تلفن همراه"</string>
+    <string name="accessibility_cell_data_on" msgid="4310018593519761767">"داده شبکه تلفن همراه روشن"</string>
     <string name="accessibility_cell_data_off" msgid="8000803571751407635">"داده تلفن همراه خاموش است"</string>
     <string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"اتصال اینترنت با بلوتوث تلفن همراه."</string>
     <string name="accessibility_airplane_mode" msgid="834748999790763092">"حالت هواپیما."</string>
     <string name="accessibility_no_sims" msgid="3957997018324995781">"سیم‌کارتی موجود نیست."</string>
     <string name="accessibility_carrier_network_change_mode" msgid="4017301580441304305">"تغییر شبکه شرکت مخابراتی."</string>
-    <!-- no translation found for accessibility_battery_details (7645516654955025422) -->
-    <skip />
+    <string name="accessibility_battery_details" msgid="7645516654955025422">"باز کردن جزئیات باتری"</string>
     <string name="accessibility_battery_level" msgid="7451474187113371965">"باتری <xliff:g id="NUMBER">%d</xliff:g> درصد."</string>
     <string name="accessibility_battery_level_charging" msgid="1147587904439319646">"در حال شارژ باتری، <xliff:g id="BATTERY_PERCENTAGE">%d</xliff:g> درصد"</string>
     <string name="accessibility_settings_button" msgid="799583911231893380">"تنظیمات سیستم."</string>
@@ -200,13 +196,11 @@
     <string name="accessibility_quick_settings_dnd_priority_on" msgid="1448402297221249355">"«مزاحم نشوید» روشن است، فقط اولویت‌دار."</string>
     <string name="accessibility_quick_settings_dnd_none_on" msgid="6882582132662613537">"حالت «مزاحم نشوید» روشن است، سکوت کامل."</string>
     <string name="accessibility_quick_settings_dnd_alarms_on" msgid="9152834845587554157">"حالت «مزاحم نشوید» روشن است، فقط هشدارها."</string>
-    <!-- no translation found for accessibility_quick_settings_dnd (6607873236717185815) -->
-    <skip />
+    <string name="accessibility_quick_settings_dnd" msgid="6607873236717185815">"مزاحم نشوید."</string>
     <string name="accessibility_quick_settings_dnd_off" msgid="2371832603753738581">"«مزاحم نشوید» خاموش است."</string>
     <string name="accessibility_quick_settings_dnd_changed_off" msgid="898107593453022935">"«مزاحم نشوید» خاموش شد."</string>
     <string name="accessibility_quick_settings_dnd_changed_on" msgid="4483780856613561039">"«مزاحم نشوید» روشن شد."</string>
-    <!-- no translation found for accessibility_quick_settings_bluetooth (6341675755803320038) -->
-    <skip />
+    <string name="accessibility_quick_settings_bluetooth" msgid="6341675755803320038">"بلوتوث."</string>
     <string name="accessibility_quick_settings_bluetooth_off" msgid="2133631372372064339">"بلوتوث خاموش است."</string>
     <string name="accessibility_quick_settings_bluetooth_on" msgid="7681999166216621838">"بلوتوث روشن است."</string>
     <string name="accessibility_quick_settings_bluetooth_connecting" msgid="6953242966685343855">"بلوتوث در حال اتصال است."</string>
@@ -272,10 +266,8 @@
     <string name="quick_settings_bluetooth_detail_empty_text" msgid="4910015762433302860">"هیچ دستگاه مرتبط شده‌ای موجود نیست"</string>
     <string name="quick_settings_brightness_label" msgid="6968372297018755815">"روشنایی"</string>
     <string name="quick_settings_rotation_unlocked_label" msgid="7305323031808150099">"چرخش خودکار"</string>
-    <!-- no translation found for accessibility_quick_settings_rotation (4231661040698488779) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_rotation_value (1428962304214992318) -->
-    <skip />
+    <string name="accessibility_quick_settings_rotation" msgid="4231661040698488779">"چرخش خودکار صفحه‌نمایش"</string>
+    <string name="accessibility_quick_settings_rotation_value" msgid="1428962304214992318">"تنظیم روی <xliff:g id="ID_1">%s</xliff:g>"</string>
     <string name="quick_settings_rotation_locked_label" msgid="6359205706154282377">"چرخش قفل شد"</string>
     <string name="quick_settings_rotation_locked_portrait_label" msgid="5102691921442135053">"عمودی"</string>
     <string name="quick_settings_rotation_locked_landscape_label" msgid="8553157770061178719">"افقی"</string>
@@ -294,8 +286,7 @@
     <string name="quick_settings_wifi_not_connected" msgid="7171904845345573431">"متصل نیست"</string>
     <string name="quick_settings_wifi_no_network" msgid="2221993077220856376">"شبکه‌ای موجود نیست"</string>
     <string name="quick_settings_wifi_off_label" msgid="7558778100843885864">"‏Wi-Fi خاموش است"</string>
-    <!-- no translation found for quick_settings_wifi_on_label (7607810331387031235) -->
-    <skip />
+    <string name="quick_settings_wifi_on_label" msgid="7607810331387031235">"‏Wi-Fi روشن"</string>
     <string name="quick_settings_wifi_detail_empty_text" msgid="269990350383909226">"‏هیچ شبکه Wi-Fi موجود نیست"</string>
     <string name="quick_settings_cast_title" msgid="7709016546426454729">"فرستادن"</string>
     <string name="quick_settings_casting" msgid="6601710681033353316">"در حال فرستادن"</string>
@@ -349,7 +340,7 @@
     <string name="zen_silence_introduction" msgid="3137882381093271568">"این کار «همه» صداها و لرزش‌ها از جمله هشدارها، موسیقی، ویدیوها و بازی‌ها را مسدود می‌کند."</string>
     <string name="keyguard_more_overflow_text" msgid="9195222469041601365">"+<xliff:g id="NUMBER_OF_NOTIFICATIONS">%d</xliff:g>"</string>
     <string name="speed_bump_explanation" msgid="1288875699658819755">"اعلان‌های کمتر فوری در زیر"</string>
-    <string name="notification_tap_again" msgid="8524949573675922138">"برای باز کردن دوباره لمس کنید"</string>
+    <string name="notification_tap_again" msgid="7590196980943943842">"برای باز کردن دوباره ضربه بزنید"</string>
     <string name="keyguard_unlock" msgid="8043466894212841998">"برای باز کردن قفل سریع به بالا بکشید"</string>
     <string name="phone_hint" msgid="4872890986869209950">"انگشتتان را از نماد تلفن تند بکشید"</string>
     <string name="voice_hint" msgid="8939888732119726665">"برای «دستیار صوتی»، تند بکشید"</string>
@@ -420,16 +411,16 @@
     <string name="keyguard_indication_trust_disabled" msgid="7412534203633528135">"دستگاه قفل باقی می‌ماند تا زمانی که قفل آن را به صورت دستی باز کنید"</string>
     <string name="hidden_notifications_title" msgid="7139628534207443290">"دریافت سریع‌تر اعلان‌ها"</string>
     <string name="hidden_notifications_text" msgid="2326409389088668981">"قبل از باز کردن قفل آنها را مشاهده کنید"</string>
-    <string name="hidden_notifications_cancel" msgid="3690709735122344913">"نه سپاسگزارم"</string>
+    <string name="hidden_notifications_cancel" msgid="3690709735122344913">"نه متشکرم"</string>
     <string name="hidden_notifications_setup" msgid="41079514801976810">"راه‌اندازی"</string>
     <string name="zen_mode_and_condition" msgid="4462471036429759903">"<xliff:g id="ZEN_MODE">%1$s</xliff:g>. ‏<xliff:g id="EXIT_CONDITION">%2$s</xliff:g>"</string>
     <string name="volume_zen_end_now" msgid="3179845345429841822">"اکنون به پایان برسد"</string>
     <string name="accessibility_volume_expand" msgid="5946812790999244205">"بزرگ کردن"</string>
     <string name="accessibility_volume_collapse" msgid="3609549593031810875">"کوچک کردن"</string>
     <string name="screen_pinning_title" msgid="3273740381976175811">"صفحه نمایش پین شد"</string>
-    <string name="screen_pinning_description" msgid="3577937698406151604">"در نما نگه‌داشته می‌شود تا اینکه پین را بردارید. برای برداشتن پین، «برگشت» را لمس کنید و نگه‌دارید."</string>
+    <string name="screen_pinning_description" msgid="7238941806855968768">"تا زمانی که پین را بردارید، در نما نگه‌داشته می‌شود. برای برداشتن پین، «برگشت» را لمس کنید و نگه‌دارید."</string>
     <string name="screen_pinning_positive" msgid="3783985798366751226">"متوجه شدم"</string>
-    <string name="screen_pinning_negative" msgid="3741602308343880268">"نه سپاسگزارم"</string>
+    <string name="screen_pinning_negative" msgid="3741602308343880268">"نه متشکرم"</string>
     <string name="quick_settings_reset_confirmation_title" msgid="748792586749897883">"<xliff:g id="TILE_LABEL">%1$s</xliff:g> مخفی شود؟"</string>
     <string name="quick_settings_reset_confirmation_message" msgid="2235970126803317374">"دفعه بعد که آن را روشن کنید، در تنظیمات نشان داده می‌شود."</string>
     <string name="quick_settings_reset_confirmation_button" msgid="2660339101868367515">"پنهان کردن"</string>
@@ -437,15 +428,13 @@
     <string name="volumeui_prompt_allow" msgid="7954396902482228786">"مجاز است"</string>
     <string name="volumeui_prompt_deny" msgid="5720663643411696731">"اجازه ندارد"</string>
     <string name="volumeui_notification_title" msgid="4906770126345910955">"<xliff:g id="APP_NAME">%1$s</xliff:g> کنترل‌کننده صدا است"</string>
-    <string name="volumeui_notification_text" msgid="1826889705095768656">"برای بازیابی کنترل‌کننده اصلی، لمس کنید."</string>
+    <string name="volumeui_notification_text" msgid="8819536904234337445">"برای بازیابی نسخه اصلی ضربه بزنید."</string>
     <string name="managed_profile_foreground_toast" msgid="5421487114739245972">"درحال استفاده از نمایه کاری‌تان هستید"</string>
     <string name="volume_stream_content_description_unmute" msgid="4436631538779230857">"‏%1$s. برای باصدا کردن ضربه بزنید."</string>
     <string name="volume_stream_content_description_vibrate" msgid="1187944970457807498">"‏%1$s. برای تنظیم روی لرزش ضربه بزنید. ممکن است سرویس‌های دسترس‌پذیری بی‌صدا شوند."</string>
     <string name="volume_stream_content_description_mute" msgid="3625049841390467354">"‏%1$s. برای بی‌صدا کردن ضربه بزنید. ممکن است سرویس‌های دسترس‌پذیری بی‌صدا شوند."</string>
-    <!-- no translation found for volume_dialog_accessibility_shown_message (1834631467074259998) -->
-    <skip />
-    <!-- no translation found for volume_dialog_accessibility_dismissed_message (51543526013711399) -->
-    <skip />
+    <string name="volume_dialog_accessibility_shown_message" msgid="1834631467074259998">"‏کنترل‌های میزان صدای %s  نشان داده شدند. برای نپذیرفتن انگشتتان را تند بکشید."</string>
+    <string name="volume_dialog_accessibility_dismissed_message" msgid="51543526013711399">"کنترل‌های صدا پنهان هستند"</string>
     <string name="system_ui_tuner" msgid="708224127392452018">"تنظیم‌کننده واسط کاربری سیستم"</string>
     <string name="show_battery_percentage" msgid="5444136600512968798">"نمایش درصد شارژ باتری جاسازی شده"</string>
     <string name="show_battery_percentage_summary" msgid="3215025775576786037">"نمایش درصد سطح باتری در نماد نوار وضعیت، هنگامی که باتری شارژ نمی‌شود"</string>
@@ -641,27 +630,17 @@
     <string name="accessibility_qs_edit_tile_removed" msgid="8584304916627913440">"<xliff:g id="TILE_NAME">%1$s</xliff:g> حذف می‌شود"</string>
     <string name="accessibility_qs_edit_tile_moved" msgid="4343693412689365038">"<xliff:g id="TILE_NAME">%1$s</xliff:g> به موقعیت <xliff:g id="POSITION">%2$d</xliff:g> منتقل شد"</string>
     <string name="accessibility_desc_quick_settings_edit" msgid="8073587401747016103">"ویرایشگر تنظیمات سریع."</string>
-    <!-- no translation found for accessibility_desc_notification_icon (8352414185263916335) -->
-    <skip />
+    <string name="accessibility_desc_notification_icon" msgid="8352414185263916335">"اعلان <xliff:g id="ID_1">%1$s</xliff:g>: <xliff:g id="ID_2">%2$s</xliff:g>"</string>
     <string name="dock_forced_resizable" msgid="5914261505436217520">"ممکن است برنامه با تقسیم صفحه کار نکند."</string>
     <string name="dock_non_resizeble_failed_to_dock_text" msgid="3871617304250207291">"برنامه از تقسیم صفحه پشتیبانی نمی‌کند."</string>
-    <!-- no translation found for accessibility_quick_settings_settings (6132460890024942157) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_expand (2375165227880477530) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_collapse (1792625797142648105) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_alarm_set (1863000242431528676) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_user (1567445362870421770) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_no_internet (31890692343084075) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_open_details (4230931801728005194) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_open_settings (7806613775728380737) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_edit (7839992848995240393) -->
-    <skip />
+    <string name="accessibility_quick_settings_settings" msgid="6132460890024942157">"باز کردن تنظیمات."</string>
+    <string name="accessibility_quick_settings_expand" msgid="2375165227880477530">"باز کردن تنظیمات سریع."</string>
+    <string name="accessibility_quick_settings_collapse" msgid="1792625797142648105">"بستن تنظیمات سریع."</string>
+    <string name="accessibility_quick_settings_alarm_set" msgid="1863000242431528676">"تنظیم زنگ ساعت."</string>
+    <string name="accessibility_quick_settings_user" msgid="1567445362870421770">"واردشده به سیستم به‌عنوان <xliff:g id="ID_1">%s</xliff:g>"</string>
+    <string name="accessibility_quick_settings_no_internet" msgid="31890692343084075">"عدم اتصال به اینترنت."</string>
+    <string name="accessibility_quick_settings_open_details" msgid="4230931801728005194">"باز کردن جزئیات."</string>
+    <string name="accessibility_quick_settings_open_settings" msgid="7806613775728380737">"باز کردن تنظیمات <xliff:g id="ID_1">%s</xliff:g>."</string>
+    <string name="accessibility_quick_settings_edit" msgid="7839992848995240393">"ویرایش ترتیب تنظیمات."</string>
     <string name="accessibility_quick_settings_page" msgid="5032979051755200721">"صفحه <xliff:g id="ID_1">%1$d</xliff:g> از <xliff:g id="ID_2">%2$d</xliff:g>"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-fa/strings_tv.xml b/packages/SystemUI/res/values-fa/strings_tv.xml
index bd9008f..86e578d 100644
--- a/packages/SystemUI/res/values-fa/strings_tv.xml
+++ b/packages/SystemUI/res/values-fa/strings_tv.xml
@@ -24,10 +24,8 @@
     <string name="pip_play" msgid="674145557658227044">"پخش"</string>
     <string name="pip_pause" msgid="8412075640017218862">"مکث"</string>
     <string name="pip_hold_home" msgid="340086535668778109">"‏کنترل PIP ‏با نگه‌داشتن "<b>"HOME"</b></string>
-    <!-- no translation found for pip_onboarding_title (7850436557670253991) -->
-    <skip />
-    <!-- no translation found for pip_onboarding_description (4028124563309465267) -->
-    <skip />
+    <string name="pip_onboarding_title" msgid="7850436557670253991">"تصویر در تصویر"</string>
+    <string name="pip_onboarding_description" msgid="4028124563309465267">"تا زمانی که ویدیوی دیگری را پخش کنید، این صفحه حالت ویدیو در ویدیوی شما را حفظ می‌کند. برای کنترل آن، دکمه "<b>"صفحه اصلی"</b>" را فشار دهید و نگه دارید."</string>
     <string name="pip_onboarding_button" msgid="3957426748484904611">"متوجه شدم"</string>
     <string name="recents_tv_dismiss" msgid="3555093879593377731">"رد کردن"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-fi/strings.xml b/packages/SystemUI/res/values-fi/strings.xml
index 47bb7f2..2516fcf 100644
--- a/packages/SystemUI/res/values-fi/strings.xml
+++ b/packages/SystemUI/res/values-fi/strings.xml
@@ -71,7 +71,7 @@
     <string name="screenshot_saving_title" msgid="8242282144535555697">"Tallennetaan kuvakaappausta..."</string>
     <string name="screenshot_saving_text" msgid="2419718443411738818">"Kuvakaappausta tallennetaan."</string>
     <string name="screenshot_saved_title" msgid="6461865960961414961">"Kuvakaappaus tallennettu"</string>
-    <string name="screenshot_saved_text" msgid="1152839647677558815">"Katso kuvakaappaus koskettamalla."</string>
+    <string name="screenshot_saved_text" msgid="2685605830386712477">"Tarkastele kuvakaappausta napauttamalla."</string>
     <string name="screenshot_failed_title" msgid="705781116746922771">"Kuvakaappausta ei voitu tallentaa"</string>
     <string name="screenshot_failed_to_save_unknown_text" msgid="7887826345701753830">"Kuvakaappausta tallennettaessa tapahtui virhe."</string>
     <string name="screenshot_failed_to_save_text" msgid="2592658083866306296">"Kuvakaappauksen tallentaminen epäonnistui, sillä tallennustilaa ei ole riittävästi."</string>
@@ -118,8 +118,7 @@
     <string name="accessibility_data_signal_full" msgid="2708384608124519369">"Vahva kuuluvuus."</string>
     <string name="accessibility_wifi_name" msgid="7202151365171148501">"Yhteys: <xliff:g id="WIFI">%s</xliff:g>."</string>
     <string name="accessibility_bluetooth_name" msgid="8441517146585531676">"Yhteys: <xliff:g id="BLUETOOTH">%s</xliff:g>."</string>
-    <!-- no translation found for accessibility_cast_name (4026393061247081201) -->
-    <skip />
+    <string name="accessibility_cast_name" msgid="4026393061247081201">"Yhdistetty kohteeseen <xliff:g id="CAST">%s</xliff:g>"</string>
     <string name="accessibility_no_wimax" msgid="4329180129727630368">"Ei WiMAX-yhteyttä."</string>
     <string name="accessibility_wimax_one_bar" msgid="4170994299011863648">"WiMAX: yksi palkki."</string>
     <string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"WiMAX: kaksi palkkia."</string>
@@ -150,17 +149,14 @@
     <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string>
     <string name="accessibility_data_connection_wifi" msgid="2324496756590645221">"Wi-Fi"</string>
     <string name="accessibility_no_sim" msgid="8274017118472455155">"Ei SIM-korttia."</string>
-    <!-- no translation found for accessibility_cell_data (7080312242791850520) -->
-    <skip />
-    <!-- no translation found for accessibility_cell_data_on (4310018593519761767) -->
-    <skip />
+    <string name="accessibility_cell_data" msgid="7080312242791850520">"Mobiilidata"</string>
+    <string name="accessibility_cell_data_on" msgid="4310018593519761767">"Mobiilidata on käytössä."</string>
     <string name="accessibility_cell_data_off" msgid="8000803571751407635">"Mobiilidata pois päältä"</string>
     <string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"Internetin jakaminen Bluetoothin kautta."</string>
     <string name="accessibility_airplane_mode" msgid="834748999790763092">"Lentokonetila."</string>
     <string name="accessibility_no_sims" msgid="3957997018324995781">"Ei SIM-korttia."</string>
     <string name="accessibility_carrier_network_change_mode" msgid="4017301580441304305">"Operaattorin verkko muuttuu."</string>
-    <!-- no translation found for accessibility_battery_details (7645516654955025422) -->
-    <skip />
+    <string name="accessibility_battery_details" msgid="7645516654955025422">"Avaa akun tiedot."</string>
     <string name="accessibility_battery_level" msgid="7451474187113371965">"Akun virta <xliff:g id="NUMBER">%d</xliff:g> prosenttia."</string>
     <string name="accessibility_battery_level_charging" msgid="1147587904439319646">"Akku latautuu: <xliff:g id="BATTERY_PERCENTAGE">%d</xliff:g> prosenttia"</string>
     <string name="accessibility_settings_button" msgid="799583911231893380">"Järjestelmän asetukset"</string>
@@ -200,13 +196,11 @@
     <string name="accessibility_quick_settings_dnd_priority_on" msgid="1448402297221249355">"Älä häiritse -tila on päällä, vain tärkeät."</string>
     <string name="accessibility_quick_settings_dnd_none_on" msgid="6882582132662613537">"Älä häiritse -tila on päällä, täydellinen hiljaisuus."</string>
     <string name="accessibility_quick_settings_dnd_alarms_on" msgid="9152834845587554157">"Älä häiritse -tila on päällä, vain herätykset toistetaan."</string>
-    <!-- no translation found for accessibility_quick_settings_dnd (6607873236717185815) -->
-    <skip />
+    <string name="accessibility_quick_settings_dnd" msgid="6607873236717185815">"Älä häiritse."</string>
     <string name="accessibility_quick_settings_dnd_off" msgid="2371832603753738581">"Älä häiritse -tila on pois päältä."</string>
     <string name="accessibility_quick_settings_dnd_changed_off" msgid="898107593453022935">"Älä häiritse -tila on pois päältä."</string>
     <string name="accessibility_quick_settings_dnd_changed_on" msgid="4483780856613561039">"Älä häiritse -tila on päällä."</string>
-    <!-- no translation found for accessibility_quick_settings_bluetooth (6341675755803320038) -->
-    <skip />
+    <string name="accessibility_quick_settings_bluetooth" msgid="6341675755803320038">"Bluetooth"</string>
     <string name="accessibility_quick_settings_bluetooth_off" msgid="2133631372372064339">"Bluetooth on pois päältä."</string>
     <string name="accessibility_quick_settings_bluetooth_on" msgid="7681999166216621838">"Bluetooth on päällä."</string>
     <string name="accessibility_quick_settings_bluetooth_connecting" msgid="6953242966685343855">"Bluetoothia yhdistetään."</string>
@@ -272,10 +266,8 @@
     <string name="quick_settings_bluetooth_detail_empty_text" msgid="4910015762433302860">"Laitepareja ei ole käytettävissä"</string>
     <string name="quick_settings_brightness_label" msgid="6968372297018755815">"Kirkkaus"</string>
     <string name="quick_settings_rotation_unlocked_label" msgid="7305323031808150099">"Automaattinen kääntö"</string>
-    <!-- no translation found for accessibility_quick_settings_rotation (4231661040698488779) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_rotation_value (1428962304214992318) -->
-    <skip />
+    <string name="accessibility_quick_settings_rotation" msgid="4231661040698488779">"Käännä näyttöä automaattisesti."</string>
+    <string name="accessibility_quick_settings_rotation_value" msgid="1428962304214992318">"Asetettu: <xliff:g id="ID_1">%s</xliff:g>"</string>
     <string name="quick_settings_rotation_locked_label" msgid="6359205706154282377">"Kääntö lukittu"</string>
     <string name="quick_settings_rotation_locked_portrait_label" msgid="5102691921442135053">"Pysty"</string>
     <string name="quick_settings_rotation_locked_landscape_label" msgid="8553157770061178719">"Vaaka"</string>
@@ -294,8 +286,7 @@
     <string name="quick_settings_wifi_not_connected" msgid="7171904845345573431">"Ei yhteyttä"</string>
     <string name="quick_settings_wifi_no_network" msgid="2221993077220856376">"Ei verkkoa"</string>
     <string name="quick_settings_wifi_off_label" msgid="7558778100843885864">"Wi-Fi-yhteys pois käytöstä"</string>
-    <!-- no translation found for quick_settings_wifi_on_label (7607810331387031235) -->
-    <skip />
+    <string name="quick_settings_wifi_on_label" msgid="7607810331387031235">"Wi-Fi on käytössä"</string>
     <string name="quick_settings_wifi_detail_empty_text" msgid="269990350383909226">"Ei Wi-Fi-verkkoja käytettävissä"</string>
     <string name="quick_settings_cast_title" msgid="7709016546426454729">"Suoratoisto"</string>
     <string name="quick_settings_casting" msgid="6601710681033353316">"Lähetetään"</string>
@@ -349,7 +340,7 @@
     <string name="zen_silence_introduction" msgid="3137882381093271568">"Tämä estää KAIKKI äänet ja värinät, mukaan lukien hälytysten, musiikin, videoiden ja pelien äänet ja värinät."</string>
     <string name="keyguard_more_overflow_text" msgid="9195222469041601365">"+<xliff:g id="NUMBER_OF_NOTIFICATIONS">%d</xliff:g>"</string>
     <string name="speed_bump_explanation" msgid="1288875699658819755">"Vähemmän kiireelliset ilmoitukset ovat alla"</string>
-    <string name="notification_tap_again" msgid="8524949573675922138">"Avaa koskettamalla uudelleen"</string>
+    <string name="notification_tap_again" msgid="7590196980943943842">"Avaa napauttamalla uudelleen"</string>
     <string name="keyguard_unlock" msgid="8043466894212841998">"Avaa lukitus pyyhkäisemällä ylös"</string>
     <string name="phone_hint" msgid="4872890986869209950">"Avaa puhelu pyyhkäisemällä."</string>
     <string name="voice_hint" msgid="8939888732119726665">"Avaa ääniapuri pyyhkäisemällä kuvakkeesta."</string>
@@ -427,7 +418,7 @@
     <string name="accessibility_volume_expand" msgid="5946812790999244205">"Laajenna."</string>
     <string name="accessibility_volume_collapse" msgid="3609549593031810875">"Tiivistä."</string>
     <string name="screen_pinning_title" msgid="3273740381976175811">"Näyttö on kiinnitetty"</string>
-    <string name="screen_pinning_description" msgid="3577937698406151604">"Tämä pitää sen näkyvissä, kunnes peruutat kiinnityksen. Peruuta kiinnitys koskettamalla Edellinen-kohtaa pitkään."</string>
+    <string name="screen_pinning_description" msgid="7238941806855968768">"Tämä pitää sen näkyvissä, kunnes peruutat kiinnityksen. Peruuta kiinnitys koskettamalla Edellinen-kohtaa pitkään."</string>
     <string name="screen_pinning_positive" msgid="3783985798366751226">"Selvä"</string>
     <string name="screen_pinning_negative" msgid="3741602308343880268">"Ei kiitos"</string>
     <string name="quick_settings_reset_confirmation_title" msgid="748792586749897883">"Piilotetaanko <xliff:g id="TILE_LABEL">%1$s</xliff:g>?"</string>
@@ -437,15 +428,13 @@
     <string name="volumeui_prompt_allow" msgid="7954396902482228786">"Salli"</string>
     <string name="volumeui_prompt_deny" msgid="5720663643411696731">"Estä"</string>
     <string name="volumeui_notification_title" msgid="4906770126345910955">"<xliff:g id="APP_NAME">%1$s</xliff:g> on äänenvoimakkuusvalinta."</string>
-    <string name="volumeui_notification_text" msgid="1826889705095768656">"Palauta alkuperäinen koskettamalla."</string>
+    <string name="volumeui_notification_text" msgid="8819536904234337445">"Palauta alkuperäinen napauttamalla."</string>
     <string name="managed_profile_foreground_toast" msgid="5421487114739245972">"Käytät työprofiilia."</string>
     <string name="volume_stream_content_description_unmute" msgid="4436631538779230857">"%1$s. Poista mykistys koskettamalla."</string>
     <string name="volume_stream_content_description_vibrate" msgid="1187944970457807498">"%1$s. Siirry värinätilaan koskettamalla. Myös esteettömyyspalvelut saattavat mykistyä."</string>
     <string name="volume_stream_content_description_mute" msgid="3625049841390467354">"%1$s. Mykistä koskettamalla. Myös esteettömyyspalvelut saattavat mykistyä."</string>
-    <!-- no translation found for volume_dialog_accessibility_shown_message (1834631467074259998) -->
-    <skip />
-    <!-- no translation found for volume_dialog_accessibility_dismissed_message (51543526013711399) -->
-    <skip />
+    <string name="volume_dialog_accessibility_shown_message" msgid="1834631467074259998">"Äänenvoimakkuuden säätimiä on näkyvissä (%s). Hylkää pyyhkäisemällä ylös."</string>
+    <string name="volume_dialog_accessibility_dismissed_message" msgid="51543526013711399">"Äänenvoimakkuuden säätimet piilotettiin."</string>
     <string name="system_ui_tuner" msgid="708224127392452018">"System UI Tuner"</string>
     <string name="show_battery_percentage" msgid="5444136600512968798">"Näytä akun varaus kuvakkeessa"</string>
     <string name="show_battery_percentage_summary" msgid="3215025775576786037">"Näyttää akun varausprosentin tilapalkin kuvakkeessa, kun laitetta ei ladata."</string>
@@ -641,27 +630,17 @@
     <string name="accessibility_qs_edit_tile_removed" msgid="8584304916627913440">"<xliff:g id="TILE_NAME">%1$s</xliff:g> poistettiin."</string>
     <string name="accessibility_qs_edit_tile_moved" msgid="4343693412689365038">"<xliff:g id="TILE_NAME">%1$s</xliff:g> siirrettiin paikkaan <xliff:g id="POSITION">%2$d</xliff:g>."</string>
     <string name="accessibility_desc_quick_settings_edit" msgid="8073587401747016103">"Pika-asetusten muokkausnäkymä"</string>
-    <!-- no translation found for accessibility_desc_notification_icon (8352414185263916335) -->
-    <skip />
+    <string name="accessibility_desc_notification_icon" msgid="8352414185263916335">"Ilmoitus kohteesta <xliff:g id="ID_1">%1$s</xliff:g>: <xliff:g id="ID_2">%2$s</xliff:g>"</string>
     <string name="dock_forced_resizable" msgid="5914261505436217520">"Sovellus ei ehkä toimi jaetulla näytöllä."</string>
     <string name="dock_non_resizeble_failed_to_dock_text" msgid="3871617304250207291">"Sovellus ei tue jaetun näytön tilaa."</string>
-    <!-- no translation found for accessibility_quick_settings_settings (6132460890024942157) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_expand (2375165227880477530) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_collapse (1792625797142648105) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_alarm_set (1863000242431528676) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_user (1567445362870421770) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_no_internet (31890692343084075) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_open_details (4230931801728005194) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_open_settings (7806613775728380737) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_edit (7839992848995240393) -->
-    <skip />
+    <string name="accessibility_quick_settings_settings" msgid="6132460890024942157">"Avaa asetukset."</string>
+    <string name="accessibility_quick_settings_expand" msgid="2375165227880477530">"Avaa pika-asetukset."</string>
+    <string name="accessibility_quick_settings_collapse" msgid="1792625797142648105">"Sulje pika-asetukset."</string>
+    <string name="accessibility_quick_settings_alarm_set" msgid="1863000242431528676">"Herätys asetettu"</string>
+    <string name="accessibility_quick_settings_user" msgid="1567445362870421770">"Kirjautunut tilillä <xliff:g id="ID_1">%s</xliff:g>"</string>
+    <string name="accessibility_quick_settings_no_internet" msgid="31890692343084075">"Ei internetyhteyttä"</string>
+    <string name="accessibility_quick_settings_open_details" msgid="4230931801728005194">"Avaa tiedot."</string>
+    <string name="accessibility_quick_settings_open_settings" msgid="7806613775728380737">"Avaa kohteen <xliff:g id="ID_1">%s</xliff:g> asetukset."</string>
+    <string name="accessibility_quick_settings_edit" msgid="7839992848995240393">"Muokkaa asetusten järjestystä."</string>
     <string name="accessibility_quick_settings_page" msgid="5032979051755200721">"Sivu <xliff:g id="ID_1">%1$d</xliff:g>/<xliff:g id="ID_2">%2$d</xliff:g>"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-fi/strings_tv.xml b/packages/SystemUI/res/values-fi/strings_tv.xml
index 24aadf4..5edd349 100644
--- a/packages/SystemUI/res/values-fi/strings_tv.xml
+++ b/packages/SystemUI/res/values-fi/strings_tv.xml
@@ -24,10 +24,8 @@
     <string name="pip_play" msgid="674145557658227044">"Toista"</string>
     <string name="pip_pause" msgid="8412075640017218862">"Keskeytä"</string>
     <string name="pip_hold_home" msgid="340086535668778109">"PIP: paina pitkään "<b>"aloituspain"</b>"."</string>
-    <!-- no translation found for pip_onboarding_title (7850436557670253991) -->
-    <skip />
-    <!-- no translation found for pip_onboarding_description (4028124563309465267) -->
-    <skip />
+    <string name="pip_onboarding_title" msgid="7850436557670253991">"Kuva kuvassa (PIP-tila)"</string>
+    <string name="pip_onboarding_description" msgid="4028124563309465267">"Videosi pysyy näkyvissä, kunnes toistat toisen videon. Hallinnoi tilaa painamalla "<b>"HOME"</b>"-painiketta pitkään."</string>
     <string name="pip_onboarding_button" msgid="3957426748484904611">"Selvä"</string>
     <string name="recents_tv_dismiss" msgid="3555093879593377731">"Hylkää"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-fr-rCA/strings.xml b/packages/SystemUI/res/values-fr-rCA/strings.xml
index cb1ca92..5e7e661 100644
--- a/packages/SystemUI/res/values-fr-rCA/strings.xml
+++ b/packages/SystemUI/res/values-fr-rCA/strings.xml
@@ -71,7 +71,7 @@
     <string name="screenshot_saving_title" msgid="8242282144535555697">"Enregistrement capture écran…"</string>
     <string name="screenshot_saving_text" msgid="2419718443411738818">"Enregistrement de la capture d\'écran en cours…"</string>
     <string name="screenshot_saved_title" msgid="6461865960961414961">"Capture d\'écran réussie"</string>
-    <string name="screenshot_saved_text" msgid="1152839647677558815">"Appuyez pour afficher votre capture d\'écran."</string>
+    <string name="screenshot_saved_text" msgid="2685605830386712477">"Touchez pour afficher votre saisie d\'écran."</string>
     <string name="screenshot_failed_title" msgid="705781116746922771">"Impossible de réaliser une capture d\'écran"</string>
     <string name="screenshot_failed_to_save_unknown_text" msgid="7887826345701753830">"Une erreur s\'est produite lors de l\'enregistrement de la saisie d\'écran."</string>
     <string name="screenshot_failed_to_save_text" msgid="2592658083866306296">"Impossible d\'enregistrer la saisie d\'écran, car l\'espace de stockage est limité."</string>
@@ -118,8 +118,7 @@
     <string name="accessibility_data_signal_full" msgid="2708384608124519369">"Signal excellent"</string>
     <string name="accessibility_wifi_name" msgid="7202151365171148501">"Connecté à : <xliff:g id="WIFI">%s</xliff:g>"</string>
     <string name="accessibility_bluetooth_name" msgid="8441517146585531676">"Connecté à : <xliff:g id="BLUETOOTH">%s</xliff:g>"</string>
-    <!-- no translation found for accessibility_cast_name (4026393061247081201) -->
-    <skip />
+    <string name="accessibility_cast_name" msgid="4026393061247081201">"Connecté à <xliff:g id="CAST">%s</xliff:g>."</string>
     <string name="accessibility_no_wimax" msgid="4329180129727630368">"Aucun signal WiMAX"</string>
     <string name="accessibility_wimax_one_bar" msgid="4170994299011863648">"Signal WiMAX : faible"</string>
     <string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"Signal WiMAX : moyen"</string>
@@ -150,17 +149,14 @@
     <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"EDGE"</string>
     <string name="accessibility_data_connection_wifi" msgid="2324496756590645221">"Wi-Fi"</string>
     <string name="accessibility_no_sim" msgid="8274017118472455155">"Aucune carte SIM"</string>
-    <!-- no translation found for accessibility_cell_data (7080312242791850520) -->
-    <skip />
-    <!-- no translation found for accessibility_cell_data_on (4310018593519761767) -->
-    <skip />
+    <string name="accessibility_cell_data" msgid="7080312242791850520">"Données cellulaires"</string>
+    <string name="accessibility_cell_data_on" msgid="4310018593519761767">"Données cellulaires activées"</string>
     <string name="accessibility_cell_data_off" msgid="8000803571751407635">"Données cellulaires déésactivées"</string>
     <string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"Partage de connexion Bluetooth"</string>
     <string name="accessibility_airplane_mode" msgid="834748999790763092">"Mode Avion"</string>
     <string name="accessibility_no_sims" msgid="3957997018324995781">"Aucune carte SIM."</string>
     <string name="accessibility_carrier_network_change_mode" msgid="4017301580441304305">"Modification du réseau du fournisseur de services"</string>
-    <!-- no translation found for accessibility_battery_details (7645516654955025422) -->
-    <skip />
+    <string name="accessibility_battery_details" msgid="7645516654955025422">"Ouvrir les détails de la pile"</string>
     <string name="accessibility_battery_level" msgid="7451474187113371965">"Pile : <xliff:g id="NUMBER">%d</xliff:g> pour cent"</string>
     <!-- String.format failed for translation -->
     <!-- no translation found for accessibility_battery_level_charging (1147587904439319646) -->
@@ -202,13 +198,11 @@
     <string name="accessibility_quick_settings_dnd_priority_on" msgid="1448402297221249355">"Mode « Ne pas déranger » activé, interruptions prioritaires uniquement."</string>
     <string name="accessibility_quick_settings_dnd_none_on" msgid="6882582132662613537">"Mode « Ne pas déranger » activé, aucune interruption"</string>
     <string name="accessibility_quick_settings_dnd_alarms_on" msgid="9152834845587554157">"Mode « Ne pas déranger » activé, alarmes uniquement."</string>
-    <!-- no translation found for accessibility_quick_settings_dnd (6607873236717185815) -->
-    <skip />
+    <string name="accessibility_quick_settings_dnd" msgid="6607873236717185815">"Ne pas déranger."</string>
     <string name="accessibility_quick_settings_dnd_off" msgid="2371832603753738581">"Mode « Ne pas déranger » désactivé."</string>
     <string name="accessibility_quick_settings_dnd_changed_off" msgid="898107593453022935">"Le mode « Ne pas déranger » a bien été désactivé."</string>
     <string name="accessibility_quick_settings_dnd_changed_on" msgid="4483780856613561039">"Le mode « Ne pas déranger » a bien été activé."</string>
-    <!-- no translation found for accessibility_quick_settings_bluetooth (6341675755803320038) -->
-    <skip />
+    <string name="accessibility_quick_settings_bluetooth" msgid="6341675755803320038">"Bluetooth."</string>
     <string name="accessibility_quick_settings_bluetooth_off" msgid="2133631372372064339">"Bluetooth désactivé."</string>
     <string name="accessibility_quick_settings_bluetooth_on" msgid="7681999166216621838">"Bluetooth activé."</string>
     <string name="accessibility_quick_settings_bluetooth_connecting" msgid="6953242966685343855">"Connexion Bluetooth en cours..."</string>
@@ -274,10 +268,8 @@
     <string name="quick_settings_bluetooth_detail_empty_text" msgid="4910015762433302860">"Aucun des appareils associés n\'est disponible"</string>
     <string name="quick_settings_brightness_label" msgid="6968372297018755815">"Luminosité"</string>
     <string name="quick_settings_rotation_unlocked_label" msgid="7305323031808150099">"Rotation automatique"</string>
-    <!-- no translation found for accessibility_quick_settings_rotation (4231661040698488779) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_rotation_value (1428962304214992318) -->
-    <skip />
+    <string name="accessibility_quick_settings_rotation" msgid="4231661040698488779">"Rotation automatique de l\'écran"</string>
+    <string name="accessibility_quick_settings_rotation_value" msgid="1428962304214992318">"Réglé à <xliff:g id="ID_1">%s</xliff:g>"</string>
     <string name="quick_settings_rotation_locked_label" msgid="6359205706154282377">"Rotation verrouillée"</string>
     <string name="quick_settings_rotation_locked_portrait_label" msgid="5102691921442135053">"Portrait"</string>
     <string name="quick_settings_rotation_locked_landscape_label" msgid="8553157770061178719">"Paysage"</string>
@@ -296,8 +288,7 @@
     <string name="quick_settings_wifi_not_connected" msgid="7171904845345573431">"Non connecté"</string>
     <string name="quick_settings_wifi_no_network" msgid="2221993077220856376">"Aucun réseau"</string>
     <string name="quick_settings_wifi_off_label" msgid="7558778100843885864">"Wi-Fi désactivé"</string>
-    <!-- no translation found for quick_settings_wifi_on_label (7607810331387031235) -->
-    <skip />
+    <string name="quick_settings_wifi_on_label" msgid="7607810331387031235">"Wi-Fi activé"</string>
     <string name="quick_settings_wifi_detail_empty_text" msgid="269990350383909226">"Aucun réseau Wi-Fi à proximité"</string>
     <string name="quick_settings_cast_title" msgid="7709016546426454729">"Diffuser"</string>
     <string name="quick_settings_casting" msgid="6601710681033353316">"Diffusion"</string>
@@ -351,7 +342,7 @@
     <string name="zen_silence_introduction" msgid="3137882381093271568">"Cette option permet de bloquer TOUS les sons et vibrations, y compris pour les alarmes, la musique, les vidéos et les jeux."</string>
     <string name="keyguard_more_overflow_text" msgid="9195222469041601365">"+<xliff:g id="NUMBER_OF_NOTIFICATIONS">%d</xliff:g>"</string>
     <string name="speed_bump_explanation" msgid="1288875699658819755">"Notifications moins urgentes affichées ci-dessous"</string>
-    <string name="notification_tap_again" msgid="8524949573675922138">"Touchez à nouveau pour ouvrir"</string>
+    <string name="notification_tap_again" msgid="7590196980943943842">"Touchez à nouveau pour ouvrir"</string>
     <string name="keyguard_unlock" msgid="8043466894212841998">"Glissez vers le haut pour déverrouiller"</string>
     <string name="phone_hint" msgid="4872890986869209950">"Balayez à partir de l\'icône pour accéder au téléphone"</string>
     <string name="voice_hint" msgid="8939888732119726665">"Balayez à partir de l\'icône pour accéder à l\'assist. vocale"</string>
@@ -429,7 +420,7 @@
     <string name="accessibility_volume_expand" msgid="5946812790999244205">"Développer"</string>
     <string name="accessibility_volume_collapse" msgid="3609549593031810875">"Réduire"</string>
     <string name="screen_pinning_title" msgid="3273740381976175811">"L\'écran est épinglé"</string>
-    <string name="screen_pinning_description" msgid="3577937698406151604">"Cet écran est épinglé jusqu\'à ce que vous annuliez l\'opération. Pour annuler l\'épinglage, maintenez le doigt sur « Retour »."</string>
+    <string name="screen_pinning_description" msgid="7238941806855968768">"Cet écran est épinglé jusqu\'à ce que vous annuliez l\'opération. Pour annuler l\'épinglage, maintenez le doigt sur « Retour »."</string>
     <string name="screen_pinning_positive" msgid="3783985798366751226">"OK"</string>
     <string name="screen_pinning_negative" msgid="3741602308343880268">"Non, merci"</string>
     <string name="quick_settings_reset_confirmation_title" msgid="748792586749897883">"Masquer <xliff:g id="TILE_LABEL">%1$s</xliff:g>?"</string>
@@ -439,15 +430,13 @@
     <string name="volumeui_prompt_allow" msgid="7954396902482228786">"Autoriser"</string>
     <string name="volumeui_prompt_deny" msgid="5720663643411696731">"Refuser"</string>
     <string name="volumeui_notification_title" msgid="4906770126345910955">"<xliff:g id="APP_NAME">%1$s</xliff:g> correspond à la boîte de dialogue du volume"</string>
-    <string name="volumeui_notification_text" msgid="1826889705095768656">"Touchez pour restaurer l\'original."</string>
+    <string name="volumeui_notification_text" msgid="8819536904234337445">"Touchez pour restaurer l\'original."</string>
     <string name="managed_profile_foreground_toast" msgid="5421487114739245972">"Vous utilisez votre profil professionnel."</string>
     <string name="volume_stream_content_description_unmute" msgid="4436631538779230857">"%1$s. Touchez pour réactiver le son."</string>
     <string name="volume_stream_content_description_vibrate" msgid="1187944970457807498">"%1$s. Touchez pour activer les vibrations. Il est possible de couper le son des services d\'accessibilité."</string>
     <string name="volume_stream_content_description_mute" msgid="3625049841390467354">"%1$s. Touchez pour couper le son. Il est possible de couper le son des services d\'accessibilité."</string>
-    <!-- no translation found for volume_dialog_accessibility_shown_message (1834631467074259998) -->
-    <skip />
-    <!-- no translation found for volume_dialog_accessibility_dismissed_message (51543526013711399) -->
-    <skip />
+    <string name="volume_dialog_accessibility_shown_message" msgid="1834631467074259998">"Commandes de volume %s affichées. Faire glisser vers le haut pour ignorer."</string>
+    <string name="volume_dialog_accessibility_dismissed_message" msgid="51543526013711399">"Les commandes de volume sont masquées"</string>
     <string name="system_ui_tuner" msgid="708224127392452018">"System UI Tuner"</string>
     <string name="show_battery_percentage" msgid="5444136600512968798">"Afficher le pourcentage intégré de charge"</string>
     <string name="show_battery_percentage_summary" msgid="3215025775576786037">"Afficher le pourcentage correspondant au niveau de la pile dans l\'icône de la barre d\'état lorsque l\'appareil n\'est pas en charge."</string>
@@ -643,27 +632,17 @@
     <string name="accessibility_qs_edit_tile_removed" msgid="8584304916627913440">"<xliff:g id="TILE_NAME">%1$s</xliff:g> a été supprimé"</string>
     <string name="accessibility_qs_edit_tile_moved" msgid="4343693412689365038">"<xliff:g id="TILE_NAME">%1$s</xliff:g> a été déplacé à la position <xliff:g id="POSITION">%2$d</xliff:g>"</string>
     <string name="accessibility_desc_quick_settings_edit" msgid="8073587401747016103">"Éditeur de paramètres rapides."</string>
-    <!-- no translation found for accessibility_desc_notification_icon (8352414185263916335) -->
-    <skip />
+    <string name="accessibility_desc_notification_icon" msgid="8352414185263916335">"Notification <xliff:g id="ID_1">%1$s</xliff:g> : <xliff:g id="ID_2">%2$s</xliff:g>"</string>
     <string name="dock_forced_resizable" msgid="5914261505436217520">"Il est possible que l\'application ne fonctionne pas en mode Écran partagé."</string>
     <string name="dock_non_resizeble_failed_to_dock_text" msgid="3871617304250207291">"L\'application n\'est pas compatible avec l\'écran partagé."</string>
-    <!-- no translation found for accessibility_quick_settings_settings (6132460890024942157) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_expand (2375165227880477530) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_collapse (1792625797142648105) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_alarm_set (1863000242431528676) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_user (1567445362870421770) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_no_internet (31890692343084075) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_open_details (4230931801728005194) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_open_settings (7806613775728380737) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_edit (7839992848995240393) -->
-    <skip />
+    <string name="accessibility_quick_settings_settings" msgid="6132460890024942157">"Ouvrir les paramètres."</string>
+    <string name="accessibility_quick_settings_expand" msgid="2375165227880477530">"Ouvrir les réglages rapides."</string>
+    <string name="accessibility_quick_settings_collapse" msgid="1792625797142648105">"Fermer les réglages rapides."</string>
+    <string name="accessibility_quick_settings_alarm_set" msgid="1863000242431528676">"Alarme activée."</string>
+    <string name="accessibility_quick_settings_user" msgid="1567445362870421770">"Connecté comme <xliff:g id="ID_1">%s</xliff:g>"</string>
+    <string name="accessibility_quick_settings_no_internet" msgid="31890692343084075">"Aucune connexion à Internet."</string>
+    <string name="accessibility_quick_settings_open_details" msgid="4230931801728005194">"Ouvrir les détails."</string>
+    <string name="accessibility_quick_settings_open_settings" msgid="7806613775728380737">"Ouvrir les paramètres <xliff:g id="ID_1">%s</xliff:g>."</string>
+    <string name="accessibility_quick_settings_edit" msgid="7839992848995240393">"Modifier l\'ordre des paramètres."</string>
     <string name="accessibility_quick_settings_page" msgid="5032979051755200721">"Page <xliff:g id="ID_1">%1$d</xliff:g> sur <xliff:g id="ID_2">%2$d</xliff:g>"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-fr-rCA/strings_tv.xml b/packages/SystemUI/res/values-fr-rCA/strings_tv.xml
index b54dc59..8b382a2 100644
--- a/packages/SystemUI/res/values-fr-rCA/strings_tv.xml
+++ b/packages/SystemUI/res/values-fr-rCA/strings_tv.xml
@@ -24,10 +24,8 @@
     <string name="pip_play" msgid="674145557658227044">"Lecture"</string>
     <string name="pip_pause" msgid="8412075640017218862">"Interrompre"</string>
     <string name="pip_hold_home" msgid="340086535668778109">"Maint. enf. "<b>"ACC."</b>" pr gér. mode IDI"</string>
-    <!-- no translation found for pip_onboarding_title (7850436557670253991) -->
-    <skip />
-    <!-- no translation found for pip_onboarding_description (4028124563309465267) -->
-    <skip />
+    <string name="pip_onboarding_title" msgid="7850436557670253991">"Incrustation d\'image"</string>
+    <string name="pip_onboarding_description" msgid="4028124563309465267">"Cette option maintient une vidéo affichée jusqu\'à la lecture de la suivante. Maintenez enfoncée la touche "<b>"ACCUEIL"</b>" pour la contrôler."</string>
     <string name="pip_onboarding_button" msgid="3957426748484904611">"OK"</string>
     <string name="recents_tv_dismiss" msgid="3555093879593377731">"Fermer"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-fr/strings.xml b/packages/SystemUI/res/values-fr/strings.xml
index f501780..00cb2a1 100644
--- a/packages/SystemUI/res/values-fr/strings.xml
+++ b/packages/SystemUI/res/values-fr/strings.xml
@@ -71,7 +71,7 @@
     <string name="screenshot_saving_title" msgid="8242282144535555697">"Enregistrement de la capture d\'écran…"</string>
     <string name="screenshot_saving_text" msgid="2419718443411738818">"Enregistrement de la capture d\'écran en cours…"</string>
     <string name="screenshot_saved_title" msgid="6461865960961414961">"Capture d\'écran réussie"</string>
-    <string name="screenshot_saved_text" msgid="1152839647677558815">"Appuyez pour afficher votre capture d\'écran."</string>
+    <string name="screenshot_saved_text" msgid="2685605830386712477">"Appuyez pour afficher votre capture d\'écran."</string>
     <string name="screenshot_failed_title" msgid="705781116746922771">"Impossible de réaliser une capture d\'écran"</string>
     <string name="screenshot_failed_to_save_unknown_text" msgid="7887826345701753830">"Erreur lors de l\'enregistrement de la capture d\'écran."</string>
     <string name="screenshot_failed_to_save_text" msgid="2592658083866306296">"Impossible d\'enregistrer la capture d\'écran, car l\'espace de stockage est limité."</string>
@@ -118,8 +118,7 @@
     <string name="accessibility_data_signal_full" msgid="2708384608124519369">"Signal excellent"</string>
     <string name="accessibility_wifi_name" msgid="7202151365171148501">"Connecté à : <xliff:g id="WIFI">%s</xliff:g>"</string>
     <string name="accessibility_bluetooth_name" msgid="8441517146585531676">"Connecté à : <xliff:g id="BLUETOOTH">%s</xliff:g>"</string>
-    <!-- no translation found for accessibility_cast_name (4026393061247081201) -->
-    <skip />
+    <string name="accessibility_cast_name" msgid="4026393061247081201">"Connecté à <xliff:g id="CAST">%s</xliff:g>."</string>
     <string name="accessibility_no_wimax" msgid="4329180129727630368">"Aucun signal WiMAX"</string>
     <string name="accessibility_wimax_one_bar" msgid="4170994299011863648">"Signal WiMAX : faible"</string>
     <string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"Signal WiMAX : moyen"</string>
@@ -150,17 +149,14 @@
     <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"EDGE"</string>
     <string name="accessibility_data_connection_wifi" msgid="2324496756590645221">"Wi-Fi"</string>
     <string name="accessibility_no_sim" msgid="8274017118472455155">"Aucune carte SIM"</string>
-    <!-- no translation found for accessibility_cell_data (7080312242791850520) -->
-    <skip />
-    <!-- no translation found for accessibility_cell_data_on (4310018593519761767) -->
-    <skip />
+    <string name="accessibility_cell_data" msgid="7080312242791850520">"Données mobiles"</string>
+    <string name="accessibility_cell_data_on" msgid="4310018593519761767">"Données mobiles activées"</string>
     <string name="accessibility_cell_data_off" msgid="8000803571751407635">"Données mobiles désactivées"</string>
     <string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"Partage de connexion Bluetooth"</string>
     <string name="accessibility_airplane_mode" msgid="834748999790763092">"Mode Avion"</string>
     <string name="accessibility_no_sims" msgid="3957997018324995781">"Aucune carte SIM"</string>
     <string name="accessibility_carrier_network_change_mode" msgid="4017301580441304305">"Modification du réseau de l\'opérateur"</string>
-    <!-- no translation found for accessibility_battery_details (7645516654955025422) -->
-    <skip />
+    <string name="accessibility_battery_details" msgid="7645516654955025422">"Ouvrir les détails de la batterie"</string>
     <string name="accessibility_battery_level" msgid="7451474187113371965">"Batterie : <xliff:g id="NUMBER">%d</xliff:g> pour cent"</string>
     <!-- String.format failed for translation -->
     <!-- no translation found for accessibility_battery_level_charging (1147587904439319646) -->
@@ -202,13 +198,11 @@
     <string name="accessibility_quick_settings_dnd_priority_on" msgid="1448402297221249355">"Mode \"Ne pas déranger\" activé, interruptions prioritaires uniquement"</string>
     <string name="accessibility_quick_settings_dnd_none_on" msgid="6882582132662613537">"Mode Ne pas déranger activé, aucune interruption"</string>
     <string name="accessibility_quick_settings_dnd_alarms_on" msgid="9152834845587554157">"Mode \"Ne pas déranger\" activé, alarmes uniquement"</string>
-    <!-- no translation found for accessibility_quick_settings_dnd (6607873236717185815) -->
-    <skip />
+    <string name="accessibility_quick_settings_dnd" msgid="6607873236717185815">"Ne pas déranger."</string>
     <string name="accessibility_quick_settings_dnd_off" msgid="2371832603753738581">"Mode \"Ne pas déranger\" désactivé"</string>
     <string name="accessibility_quick_settings_dnd_changed_off" msgid="898107593453022935">"Le mode \"Ne pas déranger\" a bien été désactivé."</string>
     <string name="accessibility_quick_settings_dnd_changed_on" msgid="4483780856613561039">"Le mode \"Ne pas déranger\" a bien été activé."</string>
-    <!-- no translation found for accessibility_quick_settings_bluetooth (6341675755803320038) -->
-    <skip />
+    <string name="accessibility_quick_settings_bluetooth" msgid="6341675755803320038">"Bluetooth."</string>
     <string name="accessibility_quick_settings_bluetooth_off" msgid="2133631372372064339">"Bluetooth désactivé."</string>
     <string name="accessibility_quick_settings_bluetooth_on" msgid="7681999166216621838">"Bluetooth activé."</string>
     <string name="accessibility_quick_settings_bluetooth_connecting" msgid="6953242966685343855">"Connexion Bluetooth en cours..."</string>
@@ -274,10 +268,8 @@
     <string name="quick_settings_bluetooth_detail_empty_text" msgid="4910015762433302860">"Aucun appareil associé disponible."</string>
     <string name="quick_settings_brightness_label" msgid="6968372297018755815">"Luminosité"</string>
     <string name="quick_settings_rotation_unlocked_label" msgid="7305323031808150099">"Rotation automatique"</string>
-    <!-- no translation found for accessibility_quick_settings_rotation (4231661040698488779) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_rotation_value (1428962304214992318) -->
-    <skip />
+    <string name="accessibility_quick_settings_rotation" msgid="4231661040698488779">"Rotation automatique de l\'écran"</string>
+    <string name="accessibility_quick_settings_rotation_value" msgid="1428962304214992318">"Définie sur \"<xliff:g id="ID_1">%s</xliff:g>\""</string>
     <string name="quick_settings_rotation_locked_label" msgid="6359205706154282377">"Rotation verrouillée"</string>
     <string name="quick_settings_rotation_locked_portrait_label" msgid="5102691921442135053">"Portrait"</string>
     <string name="quick_settings_rotation_locked_landscape_label" msgid="8553157770061178719">"Paysage"</string>
@@ -296,8 +288,7 @@
     <string name="quick_settings_wifi_not_connected" msgid="7171904845345573431">"Non connecté"</string>
     <string name="quick_settings_wifi_no_network" msgid="2221993077220856376">"Aucun réseau"</string>
     <string name="quick_settings_wifi_off_label" msgid="7558778100843885864">"Wi-Fi désactivé"</string>
-    <!-- no translation found for quick_settings_wifi_on_label (7607810331387031235) -->
-    <skip />
+    <string name="quick_settings_wifi_on_label" msgid="7607810331387031235">"Wi-Fi activé"</string>
     <string name="quick_settings_wifi_detail_empty_text" msgid="269990350383909226">"Aucun réseau Wi-Fi disponible"</string>
     <string name="quick_settings_cast_title" msgid="7709016546426454729">"Diffuser"</string>
     <string name="quick_settings_casting" msgid="6601710681033353316">"Diffusion"</string>
@@ -351,7 +342,7 @@
     <string name="zen_silence_introduction" msgid="3137882381093271568">"Cette option permet de bloquer TOUS les sons et les vibrations, y compris pour les alarmes, la musique, les vidéos et les jeux."</string>
     <string name="keyguard_more_overflow_text" msgid="9195222469041601365">"+<xliff:g id="NUMBER_OF_NOTIFICATIONS">%d</xliff:g>"</string>
     <string name="speed_bump_explanation" msgid="1288875699658819755">"Notifications moins urgentes ci-dessous"</string>
-    <string name="notification_tap_again" msgid="8524949573675922138">"Appuyer à nouveau pour ouvrir"</string>
+    <string name="notification_tap_again" msgid="7590196980943943842">"Appuyer à nouveau pour ouvrir"</string>
     <string name="keyguard_unlock" msgid="8043466894212841998">"Faire glisser pour déverrouiller"</string>
     <string name="phone_hint" msgid="4872890986869209950">"Balayer pour téléphoner"</string>
     <string name="voice_hint" msgid="8939888732119726665">"Balayer l\'écran depuis l\'icône pour l\'assistance vocale"</string>
@@ -429,7 +420,7 @@
     <string name="accessibility_volume_expand" msgid="5946812790999244205">"Développer"</string>
     <string name="accessibility_volume_collapse" msgid="3609549593031810875">"Réduire"</string>
     <string name="screen_pinning_title" msgid="3273740381976175811">"Écran épinglé"</string>
-    <string name="screen_pinning_description" msgid="3577937698406151604">"Cet écran est épinglé jusqu\'à l\'annulation de l\'opération. Pour annuler l\'épinglage, appuyez de manière prolongée sur \"Retour\"."</string>
+    <string name="screen_pinning_description" msgid="7238941806855968768">"Cet écran est épinglé jusqu\'à l\'annulation de l\'opération. Pour annuler l\'épinglage, appuyez de manière prolongée sur \"Retour\"."</string>
     <string name="screen_pinning_positive" msgid="3783985798366751226">"OK"</string>
     <string name="screen_pinning_negative" msgid="3741602308343880268">"Non, merci"</string>
     <string name="quick_settings_reset_confirmation_title" msgid="748792586749897883">"Masquer <xliff:g id="TILE_LABEL">%1$s</xliff:g> ?"</string>
@@ -439,15 +430,13 @@
     <string name="volumeui_prompt_allow" msgid="7954396902482228786">"Autoriser"</string>
     <string name="volumeui_prompt_deny" msgid="5720663643411696731">"Refuser"</string>
     <string name="volumeui_notification_title" msgid="4906770126345910955">"<xliff:g id="APP_NAME">%1$s</xliff:g> correspond à la boîte de dialogue du volume"</string>
-    <string name="volumeui_notification_text" msgid="1826889705095768656">"Appuyez pour restaurer l\'interface d\'origine."</string>
+    <string name="volumeui_notification_text" msgid="8819536904234337445">"Appuyez pour rétablir la version d\'origine."</string>
     <string name="managed_profile_foreground_toast" msgid="5421487114739245972">"Vous utilisez votre profil professionnel."</string>
     <string name="volume_stream_content_description_unmute" msgid="4436631538779230857">"%1$s. Appuyez pour ne plus ignorer."</string>
     <string name="volume_stream_content_description_vibrate" msgid="1187944970457807498">"%1$s. Appuyez pour mettre en mode vibreur. Vous pouvez ignorer les services d\'accessibilité."</string>
     <string name="volume_stream_content_description_mute" msgid="3625049841390467354">"%1$s. Appuyez pour ignorer. Vous pouvez ignorer les services d\'accessibilité."</string>
-    <!-- no translation found for volume_dialog_accessibility_shown_message (1834631467074259998) -->
-    <skip />
-    <!-- no translation found for volume_dialog_accessibility_dismissed_message (51543526013711399) -->
-    <skip />
+    <string name="volume_dialog_accessibility_shown_message" msgid="1834631467074259998">"Commandes de volume %s affichées. Faire glisser vers le haut pour ignorer."</string>
+    <string name="volume_dialog_accessibility_dismissed_message" msgid="51543526013711399">"Commandes de volume masquées"</string>
     <string name="system_ui_tuner" msgid="708224127392452018">"System UI Tuner"</string>
     <string name="show_battery_percentage" msgid="5444136600512968798">"Afficher le pourcentage intégré de la batterie"</string>
     <string name="show_battery_percentage_summary" msgid="3215025775576786037">"Affichez le pourcentage correspondant au niveau de la batterie dans l\'icône de la barre d\'état lorsque l\'appareil n\'est pas en charge."</string>
@@ -643,27 +632,17 @@
     <string name="accessibility_qs_edit_tile_removed" msgid="8584304916627913440">"Le bloc \"<xliff:g id="TILE_NAME">%1$s</xliff:g>\" a bien été supprimé."</string>
     <string name="accessibility_qs_edit_tile_moved" msgid="4343693412689365038">"Le bloc \"<xliff:g id="TILE_NAME">%1$s</xliff:g>\" a bien été déplacé à la position <xliff:g id="POSITION">%2$d</xliff:g>."</string>
     <string name="accessibility_desc_quick_settings_edit" msgid="8073587401747016103">"Éditeur de configuration rapide."</string>
-    <!-- no translation found for accessibility_desc_notification_icon (8352414185263916335) -->
-    <skip />
+    <string name="accessibility_desc_notification_icon" msgid="8352414185263916335">"Notification <xliff:g id="ID_1">%1$s</xliff:g> : <xliff:g id="ID_2">%2$s</xliff:g>"</string>
     <string name="dock_forced_resizable" msgid="5914261505436217520">"Il est possible que l\'application ne fonctionne pas en mode Écran partagé."</string>
     <string name="dock_non_resizeble_failed_to_dock_text" msgid="3871617304250207291">"Application incompatible avec l\'écran partagé."</string>
-    <!-- no translation found for accessibility_quick_settings_settings (6132460890024942157) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_expand (2375165227880477530) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_collapse (1792625797142648105) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_alarm_set (1863000242431528676) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_user (1567445362870421770) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_no_internet (31890692343084075) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_open_details (4230931801728005194) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_open_settings (7806613775728380737) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_edit (7839992848995240393) -->
-    <skip />
+    <string name="accessibility_quick_settings_settings" msgid="6132460890024942157">"Ouvrir les paramètres."</string>
+    <string name="accessibility_quick_settings_expand" msgid="2375165227880477530">"Ouvrir la fenêtre de configuration rapide."</string>
+    <string name="accessibility_quick_settings_collapse" msgid="1792625797142648105">"Fermer la fenêtre de configuration rapide."</string>
+    <string name="accessibility_quick_settings_alarm_set" msgid="1863000242431528676">"Alarme définie."</string>
+    <string name="accessibility_quick_settings_user" msgid="1567445362870421770">"Connecté en tant que <xliff:g id="ID_1">%s</xliff:g>"</string>
+    <string name="accessibility_quick_settings_no_internet" msgid="31890692343084075">"Aucun accès à Internet."</string>
+    <string name="accessibility_quick_settings_open_details" msgid="4230931801728005194">"Ouvrir les détails."</string>
+    <string name="accessibility_quick_settings_open_settings" msgid="7806613775728380737">"Ouvrir les paramètres <xliff:g id="ID_1">%s</xliff:g>."</string>
+    <string name="accessibility_quick_settings_edit" msgid="7839992848995240393">"Modifier l\'ordre des paramètres."</string>
     <string name="accessibility_quick_settings_page" msgid="5032979051755200721">"Page <xliff:g id="ID_1">%1$d</xliff:g> sur <xliff:g id="ID_2">%2$d</xliff:g>"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-fr/strings_tv.xml b/packages/SystemUI/res/values-fr/strings_tv.xml
index a20bb79..db0c464 100644
--- a/packages/SystemUI/res/values-fr/strings_tv.xml
+++ b/packages/SystemUI/res/values-fr/strings_tv.xml
@@ -24,10 +24,8 @@
     <string name="pip_play" msgid="674145557658227044">"Lire"</string>
     <string name="pip_pause" msgid="8412075640017218862">"Suspendre"</string>
     <string name="pip_hold_home" msgid="340086535668778109">"Appui long "<b>"ACCUEIL"</b>" pour contrôler PIP"</string>
-    <!-- no translation found for pip_onboarding_title (7850436557670253991) -->
-    <skip />
-    <!-- no translation found for pip_onboarding_description (4028124563309465267) -->
-    <skip />
+    <string name="pip_onboarding_title" msgid="7850436557670253991">"Mode PIP"</string>
+    <string name="pip_onboarding_description" msgid="4028124563309465267">"Cette option maintient une vidéo affichée jusqu\'à la lecture de la suivante. Appuyez de manière prolongée sur le bouton "<b>"ACCUEIL"</b>" pour la contrôler."</string>
     <string name="pip_onboarding_button" msgid="3957426748484904611">"OK"</string>
     <string name="recents_tv_dismiss" msgid="3555093879593377731">"Ignorer"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-gl-rES/strings.xml b/packages/SystemUI/res/values-gl-rES/strings.xml
index e3fb6ee..8a4fb20 100644
--- a/packages/SystemUI/res/values-gl-rES/strings.xml
+++ b/packages/SystemUI/res/values-gl-rES/strings.xml
@@ -71,7 +71,7 @@
     <string name="screenshot_saving_title" msgid="8242282144535555697">"Gardando captura de pantalla…"</string>
     <string name="screenshot_saving_text" msgid="2419718443411738818">"Estase gardando a captura de pantalla."</string>
     <string name="screenshot_saved_title" msgid="6461865960961414961">"Captura de pantalla gardada."</string>
-    <string name="screenshot_saved_text" msgid="1152839647677558815">"Toca para ver a captura de pantalla."</string>
+    <string name="screenshot_saved_text" msgid="2685605830386712477">"Toca para ver a captura de pantalla."</string>
     <string name="screenshot_failed_title" msgid="705781116746922771">"Non se puido facer a captura de pantalla."</string>
     <string name="screenshot_failed_to_save_unknown_text" msgid="7887826345701753830">"Produciuse un problema ao gardar a captura de pantalla."</string>
     <string name="screenshot_failed_to_save_text" msgid="2592658083866306296">"Non se pode gardar a captura de pantalla porque o espazo de almacenamento é limitado."</string>
@@ -118,8 +118,7 @@
     <string name="accessibility_data_signal_full" msgid="2708384608124519369">"Sinal de datos: completo"</string>
     <string name="accessibility_wifi_name" msgid="7202151365171148501">"Conectado a <xliff:g id="WIFI">%s</xliff:g>."</string>
     <string name="accessibility_bluetooth_name" msgid="8441517146585531676">"Conectado a <xliff:g id="BLUETOOTH">%s</xliff:g>."</string>
-    <!-- no translation found for accessibility_cast_name (4026393061247081201) -->
-    <skip />
+    <string name="accessibility_cast_name" msgid="4026393061247081201">"Dispositivo conectado: <xliff:g id="CAST">%s</xliff:g>."</string>
     <string name="accessibility_no_wimax" msgid="4329180129727630368">"Non hai WiMAX."</string>
     <string name="accessibility_wimax_one_bar" msgid="4170994299011863648">"Unha barra de WiMAX"</string>
     <string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"Dúas barras de WiMAX"</string>
@@ -150,17 +149,14 @@
     <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string>
     <string name="accessibility_data_connection_wifi" msgid="2324496756590645221">"Wi-Fi"</string>
     <string name="accessibility_no_sim" msgid="8274017118472455155">"Sen SIM"</string>
-    <!-- no translation found for accessibility_cell_data (7080312242791850520) -->
-    <skip />
-    <!-- no translation found for accessibility_cell_data_on (4310018593519761767) -->
-    <skip />
+    <string name="accessibility_cell_data" msgid="7080312242791850520">"Datos móbiles"</string>
+    <string name="accessibility_cell_data_on" msgid="4310018593519761767">"Datos móbiles activados"</string>
     <string name="accessibility_cell_data_off" msgid="8000803571751407635">"Os datos móbiles están desactivados"</string>
     <string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"Ancoraxe de Bluetooth."</string>
     <string name="accessibility_airplane_mode" msgid="834748999790763092">"Modo avión"</string>
     <string name="accessibility_no_sims" msgid="3957997018324995781">"Non hai tarxeta SIM"</string>
     <string name="accessibility_carrier_network_change_mode" msgid="4017301580441304305">"Cambio de rede do operador."</string>
-    <!-- no translation found for accessibility_battery_details (7645516654955025422) -->
-    <skip />
+    <string name="accessibility_battery_details" msgid="7645516654955025422">"Abrir os detalles da batería"</string>
     <string name="accessibility_battery_level" msgid="7451474187113371965">"Carga da batería: <xliff:g id="NUMBER">%d</xliff:g> por cento."</string>
     <!-- String.format failed for translation -->
     <!-- no translation found for accessibility_battery_level_charging (1147587904439319646) -->
@@ -202,13 +198,11 @@
     <string name="accessibility_quick_settings_dnd_priority_on" msgid="1448402297221249355">"Non molestar activado, só prioridade."</string>
     <string name="accessibility_quick_settings_dnd_none_on" msgid="6882582132662613537">"Non molestar activado, silencio total."</string>
     <string name="accessibility_quick_settings_dnd_alarms_on" msgid="9152834845587554157">"Non molestar activado, só alarmas."</string>
-    <!-- no translation found for accessibility_quick_settings_dnd (6607873236717185815) -->
-    <skip />
+    <string name="accessibility_quick_settings_dnd" msgid="6607873236717185815">"Non molestar."</string>
     <string name="accessibility_quick_settings_dnd_off" msgid="2371832603753738581">"A opción Non molestar está desactivada."</string>
     <string name="accessibility_quick_settings_dnd_changed_off" msgid="898107593453022935">"Desactivouse a opción Non molestar."</string>
     <string name="accessibility_quick_settings_dnd_changed_on" msgid="4483780856613561039">"Activouse a opción Non molestar."</string>
-    <!-- no translation found for accessibility_quick_settings_bluetooth (6341675755803320038) -->
-    <skip />
+    <string name="accessibility_quick_settings_bluetooth" msgid="6341675755803320038">"Bluetooth."</string>
     <string name="accessibility_quick_settings_bluetooth_off" msgid="2133631372372064339">"Bluetooth desactivado."</string>
     <string name="accessibility_quick_settings_bluetooth_on" msgid="7681999166216621838">"Bluetooth activado."</string>
     <string name="accessibility_quick_settings_bluetooth_connecting" msgid="6953242966685343855">"Bluetooth conectando."</string>
@@ -274,10 +268,8 @@
     <string name="quick_settings_bluetooth_detail_empty_text" msgid="4910015762433302860">"Non hai dispositivos sincronizados dispoñibles"</string>
     <string name="quick_settings_brightness_label" msgid="6968372297018755815">"Brillo"</string>
     <string name="quick_settings_rotation_unlocked_label" msgid="7305323031808150099">"Rotación automática"</string>
-    <!-- no translation found for accessibility_quick_settings_rotation (4231661040698488779) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_rotation_value (1428962304214992318) -->
-    <skip />
+    <string name="accessibility_quick_settings_rotation" msgid="4231661040698488779">"Xirar a pantalla automaticamente"</string>
+    <string name="accessibility_quick_settings_rotation_value" msgid="1428962304214992318">"Definido como <xliff:g id="ID_1">%s</xliff:g>"</string>
     <string name="quick_settings_rotation_locked_label" msgid="6359205706154282377">"Rotación bloqueada"</string>
     <string name="quick_settings_rotation_locked_portrait_label" msgid="5102691921442135053">"Vertical"</string>
     <string name="quick_settings_rotation_locked_landscape_label" msgid="8553157770061178719">"Horizontal"</string>
@@ -296,8 +288,7 @@
     <string name="quick_settings_wifi_not_connected" msgid="7171904845345573431">"Non conectada"</string>
     <string name="quick_settings_wifi_no_network" msgid="2221993077220856376">"Non hai rede"</string>
     <string name="quick_settings_wifi_off_label" msgid="7558778100843885864">"Wifi desactivada"</string>
-    <!-- no translation found for quick_settings_wifi_on_label (7607810331387031235) -->
-    <skip />
+    <string name="quick_settings_wifi_on_label" msgid="7607810331387031235">"Wifi activada"</string>
     <string name="quick_settings_wifi_detail_empty_text" msgid="269990350383909226">"Non hai redes wifi dispoñibles"</string>
     <string name="quick_settings_cast_title" msgid="7709016546426454729">"Emisión"</string>
     <string name="quick_settings_casting" msgid="6601710681033353316">"Emitindo"</string>
@@ -351,7 +342,7 @@
     <string name="zen_silence_introduction" msgid="3137882381093271568">"Esta acción bloquea TODOS os sons e vibracións, incluídos os das alarmas, música, vídeos e xogos."</string>
     <string name="keyguard_more_overflow_text" msgid="9195222469041601365">"+<xliff:g id="NUMBER_OF_NOTIFICATIONS">%d</xliff:g>"</string>
     <string name="speed_bump_explanation" msgid="1288875699658819755">"Notificacións menos urxentes abaixo"</string>
-    <string name="notification_tap_again" msgid="8524949573675922138">"Toca outra vez para abrir o elemento"</string>
+    <string name="notification_tap_again" msgid="7590196980943943842">"Toca de novo para abrir"</string>
     <string name="keyguard_unlock" msgid="8043466894212841998">"Pasa o dedo cara arriba para desbloquear"</string>
     <string name="phone_hint" msgid="4872890986869209950">"Pasa o dedo desde a icona para acceder ao teléfono"</string>
     <string name="voice_hint" msgid="8939888732119726665">"Pasa o dedo desde a icona para acceder ao asistente de voz"</string>
@@ -429,7 +420,7 @@
     <string name="accessibility_volume_expand" msgid="5946812790999244205">"Ampliar"</string>
     <string name="accessibility_volume_collapse" msgid="3609549593031810875">"Contraer"</string>
     <string name="screen_pinning_title" msgid="3273740381976175811">"A pantalla está fixada"</string>
-    <string name="screen_pinning_description" msgid="3577937698406151604">"A pantalla manterase visible ata que anules a fixación. Para facelo, mantén premido Atrás."</string>
+    <string name="screen_pinning_description" msgid="7238941806855968768">"A pantalla manterase visible ata que a soltes. Para facelo, mantén premido Atrás."</string>
     <string name="screen_pinning_positive" msgid="3783985798366751226">"De acordo"</string>
     <string name="screen_pinning_negative" msgid="3741602308343880268">"Non, grazas"</string>
     <string name="quick_settings_reset_confirmation_title" msgid="748792586749897883">"Queres ocultar <xliff:g id="TILE_LABEL">%1$s</xliff:g>?"</string>
@@ -439,15 +430,13 @@
     <string name="volumeui_prompt_allow" msgid="7954396902482228786">"Permitir"</string>
     <string name="volumeui_prompt_deny" msgid="5720663643411696731">"Denegar"</string>
     <string name="volumeui_notification_title" msgid="4906770126345910955">"<xliff:g id="APP_NAME">%1$s</xliff:g> é o cadro de diálogo de volume"</string>
-    <string name="volumeui_notification_text" msgid="1826889705095768656">"Toca para restaurar o orixinal."</string>
+    <string name="volumeui_notification_text" msgid="8819536904234337445">"Toca para restaurar o orixinal."</string>
     <string name="managed_profile_foreground_toast" msgid="5421487114739245972">"Estás usando o perfil de traballo"</string>
     <string name="volume_stream_content_description_unmute" msgid="4436631538779230857">"%1$s. Toca para activar o son."</string>
     <string name="volume_stream_content_description_vibrate" msgid="1187944970457807498">"%1$s. Toca para establecer a vibración. Pódense silenciar os servizos de accesibilidade."</string>
     <string name="volume_stream_content_description_mute" msgid="3625049841390467354">"%1$s. Toca para silenciar. Pódense silenciar os servizos de accesibilidade."</string>
-    <!-- no translation found for volume_dialog_accessibility_shown_message (1834631467074259998) -->
-    <skip />
-    <!-- no translation found for volume_dialog_accessibility_dismissed_message (51543526013711399) -->
-    <skip />
+    <string name="volume_dialog_accessibility_shown_message" msgid="1834631467074259998">"Estanse mostrando os controis de volume de %s. Pasa o dedo cara a arriba para ignoralos."</string>
+    <string name="volume_dialog_accessibility_dismissed_message" msgid="51543526013711399">"Ocultáronse os controis de volume"</string>
     <string name="system_ui_tuner" msgid="708224127392452018">"Configurador da IU do sistema"</string>
     <string name="show_battery_percentage" msgid="5444136600512968798">"Mostrar porcentaxe de batería inserida"</string>
     <string name="show_battery_percentage_summary" msgid="3215025775576786037">"Mostrar porcentaxe do nivel de batería na icona da barra de estado cando non está en carga"</string>
@@ -643,27 +632,17 @@
     <string name="accessibility_qs_edit_tile_removed" msgid="8584304916627913440">"Eliminouse <xliff:g id="TILE_NAME">%1$s</xliff:g>"</string>
     <string name="accessibility_qs_edit_tile_moved" msgid="4343693412689365038">"<xliff:g id="TILE_NAME">%1$s</xliff:g> moveuse á posición <xliff:g id="POSITION">%2$d</xliff:g>"</string>
     <string name="accessibility_desc_quick_settings_edit" msgid="8073587401747016103">"Editor de configuración rápida."</string>
-    <!-- no translation found for accessibility_desc_notification_icon (8352414185263916335) -->
-    <skip />
+    <string name="accessibility_desc_notification_icon" msgid="8352414185263916335">"Notificación de <xliff:g id="ID_1">%1$s</xliff:g>: <xliff:g id="ID_2">%2$s</xliff:g>"</string>
     <string name="dock_forced_resizable" msgid="5914261505436217520">"Pode que a aplicación non funcione coa pantalla dividida."</string>
     <string name="dock_non_resizeble_failed_to_dock_text" msgid="3871617304250207291">"A aplicación non é compatible coa función de pantalla dividida."</string>
-    <!-- no translation found for accessibility_quick_settings_settings (6132460890024942157) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_expand (2375165227880477530) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_collapse (1792625797142648105) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_alarm_set (1863000242431528676) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_user (1567445362870421770) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_no_internet (31890692343084075) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_open_details (4230931801728005194) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_open_settings (7806613775728380737) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_edit (7839992848995240393) -->
-    <skip />
+    <string name="accessibility_quick_settings_settings" msgid="6132460890024942157">"Abrir configuración."</string>
+    <string name="accessibility_quick_settings_expand" msgid="2375165227880477530">"Abrir a configuración rápida."</string>
+    <string name="accessibility_quick_settings_collapse" msgid="1792625797142648105">"Pechar a configuración rápida."</string>
+    <string name="accessibility_quick_settings_alarm_set" msgid="1863000242431528676">"Alarma definida."</string>
+    <string name="accessibility_quick_settings_user" msgid="1567445362870421770">"Iniciaches sesión como <xliff:g id="ID_1">%s</xliff:g>"</string>
+    <string name="accessibility_quick_settings_no_internet" msgid="31890692343084075">"Non hai conexión a Internet."</string>
+    <string name="accessibility_quick_settings_open_details" msgid="4230931801728005194">"Abrir detalles."</string>
+    <string name="accessibility_quick_settings_open_settings" msgid="7806613775728380737">"Abrir a configuración de <xliff:g id="ID_1">%s</xliff:g>."</string>
+    <string name="accessibility_quick_settings_edit" msgid="7839992848995240393">"Editar a orde das opcións de configuración."</string>
     <string name="accessibility_quick_settings_page" msgid="5032979051755200721">"Páxina <xliff:g id="ID_1">%1$d</xliff:g> de <xliff:g id="ID_2">%2$d</xliff:g>"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-gl-rES/strings_tv.xml b/packages/SystemUI/res/values-gl-rES/strings_tv.xml
index 63c423f..bd840aa 100644
--- a/packages/SystemUI/res/values-gl-rES/strings_tv.xml
+++ b/packages/SystemUI/res/values-gl-rES/strings_tv.xml
@@ -24,10 +24,8 @@
     <string name="pip_play" msgid="674145557658227044">"Reproducir"</string>
     <string name="pip_pause" msgid="8412075640017218862">"Pausar"</string>
     <string name="pip_hold_home" msgid="340086535668778109">"Manter premido "<b>"INICIO"</b>" para controlar PIP"</string>
-    <!-- no translation found for pip_onboarding_title (7850436557670253991) -->
-    <skip />
-    <!-- no translation found for pip_onboarding_description (4028124563309465267) -->
-    <skip />
+    <string name="pip_onboarding_title" msgid="7850436557670253991">"Imaxe superposta"</string>
+    <string name="pip_onboarding_description" msgid="4028124563309465267">"O vídeo manterase visible ata que reproduzas outro. Mantén premido "<b>"INICIO"</b>" para controlalo."</string>
     <string name="pip_onboarding_button" msgid="3957426748484904611">"De acordo"</string>
     <string name="recents_tv_dismiss" msgid="3555093879593377731">"Ignorar"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-gu-rIN/strings.xml b/packages/SystemUI/res/values-gu-rIN/strings.xml
index 077724c..753e784 100644
--- a/packages/SystemUI/res/values-gu-rIN/strings.xml
+++ b/packages/SystemUI/res/values-gu-rIN/strings.xml
@@ -71,7 +71,7 @@
     <string name="screenshot_saving_title" msgid="8242282144535555697">"સ્ક્રીનશોટ સાચવી રહ્યું છે…"</string>
     <string name="screenshot_saving_text" msgid="2419718443411738818">"સ્ક્રીનશોટ સાચવવામાં આવી રહ્યો છે."</string>
     <string name="screenshot_saved_title" msgid="6461865960961414961">"સ્ક્રીનશોટ કેપ્ચર કર્યો."</string>
-    <string name="screenshot_saved_text" msgid="1152839647677558815">"તમારો સ્ક્રીનશોટ જોવા માટે ટચ કરો."</string>
+    <string name="screenshot_saved_text" msgid="2685605830386712477">"તમારા સ્ક્રીનશૉટને જોવા માટે ટૅપ કરો."</string>
     <string name="screenshot_failed_title" msgid="705781116746922771">"સ્ક્રીનશોટ કેપ્ચર કરી શકાયો નથી."</string>
     <string name="screenshot_failed_to_save_unknown_text" msgid="7887826345701753830">"સ્ક્રીનશૉટ સાચવવામાં સમસ્યા આવી."</string>
     <string name="screenshot_failed_to_save_text" msgid="2592658083866306296">"મર્યાદિત સંગ્રહ સ્થાનને કારણે સ્ક્રીનશોટ સાચવી શકાતો નથી."</string>
@@ -118,8 +118,7 @@
     <string name="accessibility_data_signal_full" msgid="2708384608124519369">"ડેટા સિગ્નલ પૂર્ણ."</string>
     <string name="accessibility_wifi_name" msgid="7202151365171148501">"<xliff:g id="WIFI">%s</xliff:g> થી કનેક્ટ થયેલું છે."</string>
     <string name="accessibility_bluetooth_name" msgid="8441517146585531676">"<xliff:g id="BLUETOOTH">%s</xliff:g> થી કનેક્ટ થયાં."</string>
-    <!-- no translation found for accessibility_cast_name (4026393061247081201) -->
-    <skip />
+    <string name="accessibility_cast_name" msgid="4026393061247081201">"<xliff:g id="CAST">%s</xliff:g> થી કનેક્ટ કરેલ."</string>
     <string name="accessibility_no_wimax" msgid="4329180129727630368">"કોઈ WiMAX નથી."</string>
     <string name="accessibility_wimax_one_bar" msgid="4170994299011863648">"WiMAX એક બાર."</string>
     <string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"WiMAX બે બાર."</string>
@@ -150,17 +149,14 @@
     <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string>
     <string name="accessibility_data_connection_wifi" msgid="2324496756590645221">"Wi-Fi"</string>
     <string name="accessibility_no_sim" msgid="8274017118472455155">"SIM નથી."</string>
-    <!-- no translation found for accessibility_cell_data (7080312242791850520) -->
-    <skip />
-    <!-- no translation found for accessibility_cell_data_on (4310018593519761767) -->
-    <skip />
+    <string name="accessibility_cell_data" msgid="7080312242791850520">"સેલ્યુલર ડેટા"</string>
+    <string name="accessibility_cell_data_on" msgid="4310018593519761767">"સેલ્યુલર ડેટા ચાલુ"</string>
     <string name="accessibility_cell_data_off" msgid="8000803571751407635">"સેલ્યુલર ડેટા બંધ છે"</string>
     <string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"Bluetooth ટિથરિંગ."</string>
     <string name="accessibility_airplane_mode" msgid="834748999790763092">"એરપ્લેન મોડ."</string>
     <string name="accessibility_no_sims" msgid="3957997018324995781">"કોઇ SIM કાર્ડ નથી."</string>
     <string name="accessibility_carrier_network_change_mode" msgid="4017301580441304305">"કેરીઅર નેટવર્કમાં ફેરફાર થઈ રહ્યો છે."</string>
-    <!-- no translation found for accessibility_battery_details (7645516654955025422) -->
-    <skip />
+    <string name="accessibility_battery_details" msgid="7645516654955025422">"બૅટરીની વિગતો ખોલો"</string>
     <string name="accessibility_battery_level" msgid="7451474187113371965">"બૅટરી <xliff:g id="NUMBER">%d</xliff:g> ટકા."</string>
     <string name="accessibility_battery_level_charging" msgid="1147587904439319646">"બૅટરી ચાર્જ થઈ રહી છે, <xliff:g id="BATTERY_PERCENTAGE">%d</xliff:g> ટકા."</string>
     <string name="accessibility_settings_button" msgid="799583911231893380">"સિસ્ટમ સેટિંગ્સ."</string>
@@ -200,13 +196,11 @@
     <string name="accessibility_quick_settings_dnd_priority_on" msgid="1448402297221249355">"ખલેલ પાડશો નહીં ચાલુ, ફક્ત પ્રાધાન્યતા."</string>
     <string name="accessibility_quick_settings_dnd_none_on" msgid="6882582132662613537">"ખલેલ પાડશો નહીં ચાલુ, સાવ શાંતિ."</string>
     <string name="accessibility_quick_settings_dnd_alarms_on" msgid="9152834845587554157">"ખલેલ પાડશો નહીં ચાલુ, ફક્ત એલાર્મ્સ."</string>
-    <!-- no translation found for accessibility_quick_settings_dnd (6607873236717185815) -->
-    <skip />
+    <string name="accessibility_quick_settings_dnd" msgid="6607873236717185815">"ખલેલ પાડશો નહીં."</string>
     <string name="accessibility_quick_settings_dnd_off" msgid="2371832603753738581">"ખલેલ પાડશો નહીં બંધ."</string>
     <string name="accessibility_quick_settings_dnd_changed_off" msgid="898107593453022935">"ખલેલ પાડશો નહીં બંધ કર્યું."</string>
     <string name="accessibility_quick_settings_dnd_changed_on" msgid="4483780856613561039">"ખલેલ પાડશો નહીં ચાલુ કર્યું."</string>
-    <!-- no translation found for accessibility_quick_settings_bluetooth (6341675755803320038) -->
-    <skip />
+    <string name="accessibility_quick_settings_bluetooth" msgid="6341675755803320038">"Bluetooth."</string>
     <string name="accessibility_quick_settings_bluetooth_off" msgid="2133631372372064339">"Bluetooth બંધ."</string>
     <string name="accessibility_quick_settings_bluetooth_on" msgid="7681999166216621838">"Bluetooth ચાલુ."</string>
     <string name="accessibility_quick_settings_bluetooth_connecting" msgid="6953242966685343855">"Bluetooth કનેક્ટ કરી રહ્યું છે."</string>
@@ -272,10 +266,8 @@
     <string name="quick_settings_bluetooth_detail_empty_text" msgid="4910015762433302860">"કોઈ જોડી કરેલ ઉપકરણો ઉપલબ્ધ નથી"</string>
     <string name="quick_settings_brightness_label" msgid="6968372297018755815">"તેજ"</string>
     <string name="quick_settings_rotation_unlocked_label" msgid="7305323031808150099">"સ્વતઃ-ફેરવો"</string>
-    <!-- no translation found for accessibility_quick_settings_rotation (4231661040698488779) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_rotation_value (1428962304214992318) -->
-    <skip />
+    <string name="accessibility_quick_settings_rotation" msgid="4231661040698488779">"સ્ક્રીનને સ્વતઃ-ફેરવો"</string>
+    <string name="accessibility_quick_settings_rotation_value" msgid="1428962304214992318">"<xliff:g id="ID_1">%s</xliff:g> પર સેટ કરો"</string>
     <string name="quick_settings_rotation_locked_label" msgid="6359205706154282377">"પરિભ્રમણ લૉક થયું"</string>
     <string name="quick_settings_rotation_locked_portrait_label" msgid="5102691921442135053">"પોર્ટ્રેટ"</string>
     <string name="quick_settings_rotation_locked_landscape_label" msgid="8553157770061178719">"લેન્ડસ્કેપ"</string>
@@ -294,8 +286,7 @@
     <string name="quick_settings_wifi_not_connected" msgid="7171904845345573431">"કનેક્ટ થયેલ નથી"</string>
     <string name="quick_settings_wifi_no_network" msgid="2221993077220856376">"કોઈ નેટવર્ક નથી"</string>
     <string name="quick_settings_wifi_off_label" msgid="7558778100843885864">"Wi-Fi બંધ"</string>
-    <!-- no translation found for quick_settings_wifi_on_label (7607810331387031235) -->
-    <skip />
+    <string name="quick_settings_wifi_on_label" msgid="7607810331387031235">"Wi-Fi ચાલુ"</string>
     <string name="quick_settings_wifi_detail_empty_text" msgid="269990350383909226">"કોઈ Wi-Fi નેટવર્ક્સ ઉપલબ્ધ નથી"</string>
     <string name="quick_settings_cast_title" msgid="7709016546426454729">"કાસ્ટ કરો"</string>
     <string name="quick_settings_casting" msgid="6601710681033353316">"કાસ્ટ કરી રહ્યાં છે"</string>
@@ -349,7 +340,8 @@
     <string name="zen_silence_introduction" msgid="3137882381093271568">"એલાર્મ્સ, સંગીત, વિડિઓઝ અને રમતો સહિત તમામ ધ્વનિઓ અને વાઇબ્રેશન્સને આ અવરોધિત કરે છે."</string>
     <string name="keyguard_more_overflow_text" msgid="9195222469041601365">"+<xliff:g id="NUMBER_OF_NOTIFICATIONS">%d</xliff:g>"</string>
     <string name="speed_bump_explanation" msgid="1288875699658819755">"નીચે ઓછી તાકીદની સૂચનાઓ"</string>
-    <string name="notification_tap_again" msgid="8524949573675922138">"ખોલવા માટે ફરી ટચ કરો"</string>
+    <!-- no translation found for notification_tap_again (7590196980943943842) -->
+    <skip />
     <string name="keyguard_unlock" msgid="8043466894212841998">"અનલૉક કરવા માટે ઉપર સ્વાઇપ કરો"</string>
     <string name="phone_hint" msgid="4872890986869209950">"ફોન માટે આયકનમાંથી સ્વાઇપ કરો"</string>
     <string name="voice_hint" msgid="8939888732119726665">"વૉઇસ સહાય માટે આયકનમાંથી સ્વાઇપ કરો"</string>
@@ -427,7 +419,7 @@
     <string name="accessibility_volume_expand" msgid="5946812790999244205">"વિસ્તૃત કરો"</string>
     <string name="accessibility_volume_collapse" msgid="3609549593031810875">"સંકુચિત કરો"</string>
     <string name="screen_pinning_title" msgid="3273740381976175811">"સ્ક્રીન પિન કરેલ છે"</string>
-    <string name="screen_pinning_description" msgid="3577937698406151604">"તમે જ્યાં સુધી અનપિન કરશો નહીં ત્યાં સુધી આ તેને દૃશ્યમાં રાખે છે. અનપિન કરવા માટે પાછાં ને ટચ કરો અને પકડી રાખો."</string>
+    <string name="screen_pinning_description" msgid="7238941806855968768">"તમે જ્યાં સુધી અનપિન કરશો નહીં ત્યાં સુધી આ તેને દૃશ્યક્ષમ રાખે છે. અનપિન કરવા માટે પાછળને ટચ કરો અને પકડી રાખો."</string>
     <string name="screen_pinning_positive" msgid="3783985798366751226">"સમજાઈ ગયું"</string>
     <string name="screen_pinning_negative" msgid="3741602308343880268">"નહીં આભાર"</string>
     <string name="quick_settings_reset_confirmation_title" msgid="748792586749897883">"<xliff:g id="TILE_LABEL">%1$s</xliff:g> ને છુપાવીએ?"</string>
@@ -437,15 +429,13 @@
     <string name="volumeui_prompt_allow" msgid="7954396902482228786">"મંજૂરી આપો"</string>
     <string name="volumeui_prompt_deny" msgid="5720663643411696731">"નકારો"</string>
     <string name="volumeui_notification_title" msgid="4906770126345910955">"<xliff:g id="APP_NAME">%1$s</xliff:g> એ વૉલ્યૂમ સંવાદ છે"</string>
-    <string name="volumeui_notification_text" msgid="1826889705095768656">"મૂળને પુનઃસ્થાપિત કરવા માટે ટચ કરો."</string>
+    <string name="volumeui_notification_text" msgid="8819536904234337445">"મૂળને પુનઃસ્થાપિત કરવા માટે ટૅપ કરો."</string>
     <string name="managed_profile_foreground_toast" msgid="5421487114739245972">"તમે તમારી કાર્ય પ્રોફાઇલનો ઉપયોગ કરી રહ્યાં છો"</string>
     <string name="volume_stream_content_description_unmute" msgid="4436631538779230857">"%1$s. અનમ્યૂટ કરવા માટે ટૅપ કરો."</string>
     <string name="volume_stream_content_description_vibrate" msgid="1187944970457807498">"%1$s. વાઇબ્રેટ પર સેટ કરવા માટે ટૅપ કરો. ઍક્સેસિબિલિટી સેવાઓ મ્યૂટ કરવામાં આવી શકે છે."</string>
     <string name="volume_stream_content_description_mute" msgid="3625049841390467354">"%1$s. મ્યૂટ કરવા માટે ટૅપ કરો. ઍક્સેસિબિલિટી સેવાઓ મ્યૂટ કરવામાં આવી શકે છે."</string>
-    <!-- no translation found for volume_dialog_accessibility_shown_message (1834631467074259998) -->
-    <skip />
-    <!-- no translation found for volume_dialog_accessibility_dismissed_message (51543526013711399) -->
-    <skip />
+    <string name="volume_dialog_accessibility_shown_message" msgid="1834631467074259998">"%s વૉલ્યૂમ નિયંત્રણ બતાવ્યાં. છોડી દેવા માટે સ્વાઇપ કરો."</string>
+    <string name="volume_dialog_accessibility_dismissed_message" msgid="51543526013711399">"વૉલ્યૂમ નિયંત્રણ છુપાવ્યાં"</string>
     <string name="system_ui_tuner" msgid="708224127392452018">"સિસ્ટમ UI ટ્યૂનર"</string>
     <string name="show_battery_percentage" msgid="5444136600512968798">"એમ્બેડ કરેલ બૅટરી ટકા બતાવો"</string>
     <string name="show_battery_percentage_summary" msgid="3215025775576786037">"જ્યારે ચાર્જ ન થઈ રહ્યું હોય ત્યારે સ્થિતિ બાર આયકનની અંદર બૅટરી સ્તર ટકા બતાવો"</string>
@@ -641,27 +631,17 @@
     <string name="accessibility_qs_edit_tile_removed" msgid="8584304916627913440">"<xliff:g id="TILE_NAME">%1$s</xliff:g> દૂર કરવામાં આવ્યું છે"</string>
     <string name="accessibility_qs_edit_tile_moved" msgid="4343693412689365038">"<xliff:g id="TILE_NAME">%1$s</xliff:g> ને <xliff:g id="POSITION">%2$d</xliff:g> સ્થિતિ પર ખસેડ્યું"</string>
     <string name="accessibility_desc_quick_settings_edit" msgid="8073587401747016103">"ઝડપી સેટિંગ્સ સંપાદક."</string>
-    <!-- no translation found for accessibility_desc_notification_icon (8352414185263916335) -->
-    <skip />
+    <string name="accessibility_desc_notification_icon" msgid="8352414185263916335">"<xliff:g id="ID_1">%1$s</xliff:g> સૂચના: <xliff:g id="ID_2">%2$s</xliff:g>"</string>
     <string name="dock_forced_resizable" msgid="5914261505436217520">"વિભાજિત-સ્ક્રીન સાથે ઍપ્લિકેશન કદાચ કામ ન કરે."</string>
     <string name="dock_non_resizeble_failed_to_dock_text" msgid="3871617304250207291">"ઍપ્લિકેશન સ્ક્રીન-વિભાજનનું સમર્થન કરતી નથી."</string>
-    <!-- no translation found for accessibility_quick_settings_settings (6132460890024942157) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_expand (2375165227880477530) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_collapse (1792625797142648105) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_alarm_set (1863000242431528676) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_user (1567445362870421770) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_no_internet (31890692343084075) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_open_details (4230931801728005194) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_open_settings (7806613775728380737) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_edit (7839992848995240393) -->
-    <skip />
+    <string name="accessibility_quick_settings_settings" msgid="6132460890024942157">"સેટિંગ્સ ખોલો."</string>
+    <string name="accessibility_quick_settings_expand" msgid="2375165227880477530">"ઝડપી સેટિંગ્સ ખોલો."</string>
+    <string name="accessibility_quick_settings_collapse" msgid="1792625797142648105">"ઝડપી સેટિંગ્સ બંધ કરો."</string>
+    <string name="accessibility_quick_settings_alarm_set" msgid="1863000242431528676">"એલાર્મ સેટ કર્યો."</string>
+    <string name="accessibility_quick_settings_user" msgid="1567445362870421770">"<xliff:g id="ID_1">%s</xliff:g> તરીકે સાઇન ઇન કર્યું"</string>
+    <string name="accessibility_quick_settings_no_internet" msgid="31890692343084075">"કોઈ ઇન્ટરનેટ નથી."</string>
+    <string name="accessibility_quick_settings_open_details" msgid="4230931801728005194">"વિગતો ખોલો."</string>
+    <string name="accessibility_quick_settings_open_settings" msgid="7806613775728380737">"<xliff:g id="ID_1">%s</xliff:g> સેટિંગ્સ ખોલો."</string>
+    <string name="accessibility_quick_settings_edit" msgid="7839992848995240393">"સેટિંગ્સનો ક્રમ સંપાદિત કરો."</string>
     <string name="accessibility_quick_settings_page" msgid="5032979051755200721">"<xliff:g id="ID_2">%2$d</xliff:g> માંથી <xliff:g id="ID_1">%1$d</xliff:g> પૃષ્ઠ"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-gu-rIN/strings_tv.xml b/packages/SystemUI/res/values-gu-rIN/strings_tv.xml
index 5b430b6..4af9f52 100644
--- a/packages/SystemUI/res/values-gu-rIN/strings_tv.xml
+++ b/packages/SystemUI/res/values-gu-rIN/strings_tv.xml
@@ -24,10 +24,8 @@
     <string name="pip_play" msgid="674145557658227044">"ચલાવો"</string>
     <string name="pip_pause" msgid="8412075640017218862">"થોભાવો"</string>
     <string name="pip_hold_home" msgid="340086535668778109">"PIP નિયંત્રિત કરવા માટે "<b>"હોમ"</b>" પકડી રાખો"</string>
-    <!-- no translation found for pip_onboarding_title (7850436557670253991) -->
-    <skip />
-    <!-- no translation found for pip_onboarding_description (4028124563309465267) -->
-    <skip />
+    <string name="pip_onboarding_title" msgid="7850436557670253991">"ચિત્ર-માં-ચિત્ર"</string>
+    <string name="pip_onboarding_description" msgid="4028124563309465267">"તમે બીજી વિડિઓ ચલાવો નહીં ત્યાં સુધી આ તમારી વિડિઓને દૃશ્યક્ષમ રાખે છે. તેને નિયંત્રિત કરવા માટે "<b>"હોમ"</b>" દબાવી અને પકડી રાખો."</string>
     <string name="pip_onboarding_button" msgid="3957426748484904611">"સમજાઈ ગયું"</string>
     <string name="recents_tv_dismiss" msgid="3555093879593377731">"છોડી દો"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-hi/strings.xml b/packages/SystemUI/res/values-hi/strings.xml
index 9a2f98e..5d5db68 100644
--- a/packages/SystemUI/res/values-hi/strings.xml
+++ b/packages/SystemUI/res/values-hi/strings.xml
@@ -71,7 +71,7 @@
     <string name="screenshot_saving_title" msgid="8242282144535555697">"स्क्रीनशॉट सहेजा जा रहा है..."</string>
     <string name="screenshot_saving_text" msgid="2419718443411738818">"स्क्रीनशॉट सहेजा जा रहा है."</string>
     <string name="screenshot_saved_title" msgid="6461865960961414961">"स्‍क्रीनशॉट कैप्‍चर किया गया."</string>
-    <string name="screenshot_saved_text" msgid="1152839647677558815">"अपना स्‍क्रीनशॉट देखने के लिए स्‍पर्श करें."</string>
+    <string name="screenshot_saved_text" msgid="2685605830386712477">"अपना स्क्रीनशॉट देखने के लिए टैप करें."</string>
     <string name="screenshot_failed_title" msgid="705781116746922771">"स्क्रीनशॉट को कैप्चर नहीं किया जा सका."</string>
     <string name="screenshot_failed_to_save_unknown_text" msgid="7887826345701753830">"स्क्रीनशॉट सहेजने में समस्या आई"</string>
     <string name="screenshot_failed_to_save_text" msgid="2592658083866306296">"सीमित मेमोरी स्थान के कारण स्क्रीनशॉट सहेजा नहीं जा सकता."</string>
@@ -118,8 +118,7 @@
     <string name="accessibility_data_signal_full" msgid="2708384608124519369">"पूर्ण डेटा सि‍ग्‍नल."</string>
     <string name="accessibility_wifi_name" msgid="7202151365171148501">"<xliff:g id="WIFI">%s</xliff:g> से कनेक्ट किया गया."</string>
     <string name="accessibility_bluetooth_name" msgid="8441517146585531676">"<xliff:g id="BLUETOOTH">%s</xliff:g> से कनेक्ट किया गया."</string>
-    <!-- no translation found for accessibility_cast_name (4026393061247081201) -->
-    <skip />
+    <string name="accessibility_cast_name" msgid="4026393061247081201">"<xliff:g id="CAST">%s</xliff:g> से कनेक्ट है."</string>
     <string name="accessibility_no_wimax" msgid="4329180129727630368">"WiMAX नहीं."</string>
     <string name="accessibility_wimax_one_bar" msgid="4170994299011863648">"WiMAX एक बार."</string>
     <string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"WiMAX दो बार."</string>
@@ -150,17 +149,14 @@
     <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"किनारा"</string>
     <string name="accessibility_data_connection_wifi" msgid="2324496756590645221">"वाई-फ़ाई"</string>
     <string name="accessibility_no_sim" msgid="8274017118472455155">"कोई सिम नहीं."</string>
-    <!-- no translation found for accessibility_cell_data (7080312242791850520) -->
-    <skip />
-    <!-- no translation found for accessibility_cell_data_on (4310018593519761767) -->
-    <skip />
+    <string name="accessibility_cell_data" msgid="7080312242791850520">"सेल्युलर डेटा"</string>
+    <string name="accessibility_cell_data_on" msgid="4310018593519761767">"सेल्युलर डेटा चालू"</string>
     <string name="accessibility_cell_data_off" msgid="8000803571751407635">"सेल्‍युलर डेटा बंद है"</string>
     <string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"ब्लूटूथ टेदरिंग."</string>
     <string name="accessibility_airplane_mode" msgid="834748999790763092">"हवाई जहाज मोड."</string>
     <string name="accessibility_no_sims" msgid="3957997018324995781">"कोई सिम कार्ड नहीं है."</string>
     <string name="accessibility_carrier_network_change_mode" msgid="4017301580441304305">"वाहक नेटवर्क बदलना."</string>
-    <!-- no translation found for accessibility_battery_details (7645516654955025422) -->
-    <skip />
+    <string name="accessibility_battery_details" msgid="7645516654955025422">"बैटरी का विवरण खोलें"</string>
     <string name="accessibility_battery_level" msgid="7451474187113371965">"<xliff:g id="NUMBER">%d</xliff:g> प्रति‍शत बैटरी."</string>
     <string name="accessibility_battery_level_charging" msgid="1147587904439319646">"बैटरी चार्ज हो रही है, <xliff:g id="BATTERY_PERCENTAGE">%d</xliff:g> प्रतिशत."</string>
     <string name="accessibility_settings_button" msgid="799583911231893380">"सिस्टम सेटिंग."</string>
@@ -200,13 +196,11 @@
     <string name="accessibility_quick_settings_dnd_priority_on" msgid="1448402297221249355">"परेशान ना करें चालू, केवल प्राथमिकता."</string>
     <string name="accessibility_quick_settings_dnd_none_on" msgid="6882582132662613537">"परेशान ना करें चालू है, पूरी तरह शांत."</string>
     <string name="accessibility_quick_settings_dnd_alarms_on" msgid="9152834845587554157">"परेशान ना करें चालू, केवल अलार्म."</string>
-    <!-- no translation found for accessibility_quick_settings_dnd (6607873236717185815) -->
-    <skip />
+    <string name="accessibility_quick_settings_dnd" msgid="6607873236717185815">"परेशान ना करें."</string>
     <string name="accessibility_quick_settings_dnd_off" msgid="2371832603753738581">"परेशान ना करें बंद."</string>
     <string name="accessibility_quick_settings_dnd_changed_off" msgid="898107593453022935">"परेशान ना करें बंद किया गया."</string>
     <string name="accessibility_quick_settings_dnd_changed_on" msgid="4483780856613561039">"परेशान ना करें चालू किया गया."</string>
-    <!-- no translation found for accessibility_quick_settings_bluetooth (6341675755803320038) -->
-    <skip />
+    <string name="accessibility_quick_settings_bluetooth" msgid="6341675755803320038">"ब्लूटूथ."</string>
     <string name="accessibility_quick_settings_bluetooth_off" msgid="2133631372372064339">"ब्लूटूथ बंद है."</string>
     <string name="accessibility_quick_settings_bluetooth_on" msgid="7681999166216621838">"ब्लूटूथ चालू है."</string>
     <string name="accessibility_quick_settings_bluetooth_connecting" msgid="6953242966685343855">"ब्लूटूथ कनेक्‍ट हो रहा है."</string>
@@ -272,10 +266,8 @@
     <string name="quick_settings_bluetooth_detail_empty_text" msgid="4910015762433302860">"कोई भी युग्मित डिवाइस उपलब्ध नहीं"</string>
     <string name="quick_settings_brightness_label" msgid="6968372297018755815">"स्क्रीन की रोशनी"</string>
     <string name="quick_settings_rotation_unlocked_label" msgid="7305323031808150099">"स्वत: घुमाएं"</string>
-    <!-- no translation found for accessibility_quick_settings_rotation (4231661040698488779) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_rotation_value (1428962304214992318) -->
-    <skip />
+    <string name="accessibility_quick_settings_rotation" msgid="4231661040698488779">"स्क्रीन स्वत: घुमाएं"</string>
+    <string name="accessibility_quick_settings_rotation_value" msgid="1428962304214992318">"<xliff:g id="ID_1">%s</xliff:g> पर सेट करें"</string>
     <string name="quick_settings_rotation_locked_label" msgid="6359205706154282377">"घुमाना लॉक किया गया"</string>
     <string name="quick_settings_rotation_locked_portrait_label" msgid="5102691921442135053">"पोर्ट्रेट"</string>
     <string name="quick_settings_rotation_locked_landscape_label" msgid="8553157770061178719">"लैंडस्केप"</string>
@@ -294,8 +286,7 @@
     <string name="quick_settings_wifi_not_connected" msgid="7171904845345573431">"कनेक्ट नहीं है"</string>
     <string name="quick_settings_wifi_no_network" msgid="2221993077220856376">"कोई नेटवर्क नहीं"</string>
     <string name="quick_settings_wifi_off_label" msgid="7558778100843885864">"वाई-फ़ाई  बंद"</string>
-    <!-- no translation found for quick_settings_wifi_on_label (7607810331387031235) -->
-    <skip />
+    <string name="quick_settings_wifi_on_label" msgid="7607810331387031235">"वाई-फ़ाई चालू है"</string>
     <string name="quick_settings_wifi_detail_empty_text" msgid="269990350383909226">"कोई भी वाई-फ़ाई नेटवर्क उपलब्‍ध नहीं है"</string>
     <string name="quick_settings_cast_title" msgid="7709016546426454729">"कास्ट करें"</string>
     <string name="quick_settings_casting" msgid="6601710681033353316">"कास्टिंग"</string>
@@ -349,7 +340,7 @@
     <string name="zen_silence_introduction" msgid="3137882381093271568">"इससे अलार्म, संगीत, वीडियो और गेम सहित सभी ध्वनियां और कंपन अवरुद्ध हो जाते हैं."</string>
     <string name="keyguard_more_overflow_text" msgid="9195222469041601365">"+<xliff:g id="NUMBER_OF_NOTIFICATIONS">%d</xliff:g>"</string>
     <string name="speed_bump_explanation" msgid="1288875699658819755">"कम अत्यावश्यक सूचनाएं नीचे दी गई हैं"</string>
-    <string name="notification_tap_again" msgid="8524949573675922138">"खोलने के लिए पुन: स्पर्श करें"</string>
+    <string name="notification_tap_again" msgid="7590196980943943842">"खोलने के लिए पुन: टैप करें"</string>
     <string name="keyguard_unlock" msgid="8043466894212841998">"अनलॉक करने के लिए ऊपर स्वाइप करें"</string>
     <string name="phone_hint" msgid="4872890986869209950">"फ़ोन के लिए आइकन से स्वाइप करें"</string>
     <string name="voice_hint" msgid="8939888732119726665">"वॉइस सहायक के लिए आइकन से स्वाइप करें"</string>
@@ -427,7 +418,7 @@
     <string name="accessibility_volume_expand" msgid="5946812790999244205">"विस्तृत करें"</string>
     <string name="accessibility_volume_collapse" msgid="3609549593031810875">"संक्षिप्त करें"</string>
     <string name="screen_pinning_title" msgid="3273740381976175811">"स्‍क्रीन पिन कर दी गई है"</string>
-    <string name="screen_pinning_description" msgid="3577937698406151604">"इससे वह तब तक दृश्‍य में बना रहता है जब तक कि आप उसे अनपिन नहीं कर देते. अनपिन करने के लिए वापस जाएं को स्‍पर्श करके रखें."</string>
+    <string name="screen_pinning_description" msgid="7238941806855968768">"इससे वह तब तक दृश्‍य में बना रहता है जब तक कि आप उसे अनपिन नहीं कर देते. अनपिन करने के लिए वापस जाएं को स्‍पर्श करके रखें."</string>
     <string name="screen_pinning_positive" msgid="3783985798366751226">"समझ लिया"</string>
     <string name="screen_pinning_negative" msgid="3741602308343880268">"नहीं, रहने दें"</string>
     <string name="quick_settings_reset_confirmation_title" msgid="748792586749897883">"<xliff:g id="TILE_LABEL">%1$s</xliff:g> को छिपाएं?"</string>
@@ -437,15 +428,13 @@
     <string name="volumeui_prompt_allow" msgid="7954396902482228786">"अनुमति दें"</string>
     <string name="volumeui_prompt_deny" msgid="5720663643411696731">"अस्वीकार करें"</string>
     <string name="volumeui_notification_title" msgid="4906770126345910955">"<xliff:g id="APP_NAME">%1$s</xliff:g> वॉल्यूम संवाद है"</string>
-    <string name="volumeui_notification_text" msgid="1826889705095768656">"मूल वॉल्यूम को फिर से लाने के लिए स्पर्श करें."</string>
+    <string name="volumeui_notification_text" msgid="8819536904234337445">"मूल को पुन: स्थापित करने के लिए टैप करें."</string>
     <string name="managed_profile_foreground_toast" msgid="5421487114739245972">"आप अपनी कार्य प्रोफ़ाइल का उपयोग कर रहे हैं"</string>
     <string name="volume_stream_content_description_unmute" msgid="4436631538779230857">"%1$s. अनम्यूट करने के लिए टैप करें."</string>
     <string name="volume_stream_content_description_vibrate" msgid="1187944970457807498">"%1$s. कंपन पर सेट करने के लिए टैप करें. एक्सेस-योग्यता सेवाएं म्यूट हो सकती हैं."</string>
     <string name="volume_stream_content_description_mute" msgid="3625049841390467354">"%1$s. म्यूट करने के लिए टैप करें. एक्सेस-योग्यता सेवाएं म्यूट हो सकती हैं."</string>
-    <!-- no translation found for volume_dialog_accessibility_shown_message (1834631467074259998) -->
-    <skip />
-    <!-- no translation found for volume_dialog_accessibility_dismissed_message (51543526013711399) -->
-    <skip />
+    <string name="volume_dialog_accessibility_shown_message" msgid="1834631467074259998">"%s वॉल्यूम नियंत्रण दिखाए गए हैं. खारिज करने के लिए स्वाइप करें."</string>
+    <string name="volume_dialog_accessibility_dismissed_message" msgid="51543526013711399">"वॉल्यूम नियंत्रण छिपे हुए हैं"</string>
     <string name="system_ui_tuner" msgid="708224127392452018">"सिस्टम UI ट्यूनर"</string>
     <string name="show_battery_percentage" msgid="5444136600512968798">"एम्बेड किया गया बैटरी प्रतिशत दिखाएं"</string>
     <string name="show_battery_percentage_summary" msgid="3215025775576786037">"जब चार्ज नहीं किया जा रहा हो तब स्थिति बार आइकन में बैटरी स्तर का प्रतिशत दिखाएं"</string>
@@ -641,27 +630,17 @@
     <string name="accessibility_qs_edit_tile_removed" msgid="8584304916627913440">"<xliff:g id="TILE_NAME">%1$s</xliff:g> निकाल दिया गया है"</string>
     <string name="accessibility_qs_edit_tile_moved" msgid="4343693412689365038">"<xliff:g id="TILE_NAME">%1$s</xliff:g> को <xliff:g id="POSITION">%2$d</xliff:g> स्थिति में ले जाया गया"</string>
     <string name="accessibility_desc_quick_settings_edit" msgid="8073587401747016103">"त्वरित सेटिंग संपादक."</string>
-    <!-- no translation found for accessibility_desc_notification_icon (8352414185263916335) -->
-    <skip />
+    <string name="accessibility_desc_notification_icon" msgid="8352414185263916335">"<xliff:g id="ID_1">%1$s</xliff:g> नोटिफ़िकेशन: <xliff:g id="ID_2">%2$s</xliff:g>"</string>
     <string name="dock_forced_resizable" msgid="5914261505436217520">"हो सकता है कि ऐप्लिकेशन विभाजित स्क्रीन के साथ काम ना करे."</string>
     <string name="dock_non_resizeble_failed_to_dock_text" msgid="3871617304250207291">"ऐप विभाजित स्‍क्रीन का समर्थन नहीं करता है."</string>
-    <!-- no translation found for accessibility_quick_settings_settings (6132460890024942157) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_expand (2375165227880477530) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_collapse (1792625797142648105) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_alarm_set (1863000242431528676) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_user (1567445362870421770) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_no_internet (31890692343084075) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_open_details (4230931801728005194) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_open_settings (7806613775728380737) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_edit (7839992848995240393) -->
-    <skip />
+    <string name="accessibility_quick_settings_settings" msgid="6132460890024942157">"सेटिंग खोलें."</string>
+    <string name="accessibility_quick_settings_expand" msgid="2375165227880477530">"त्वरित सेटिंग खोलें."</string>
+    <string name="accessibility_quick_settings_collapse" msgid="1792625797142648105">"त्वरित सेटिंग बंद करें."</string>
+    <string name="accessibility_quick_settings_alarm_set" msgid="1863000242431528676">"अलार्म सेट."</string>
+    <string name="accessibility_quick_settings_user" msgid="1567445362870421770">"<xliff:g id="ID_1">%s</xliff:g> के रूप में प्रवेश किया हुआ है"</string>
+    <string name="accessibility_quick_settings_no_internet" msgid="31890692343084075">"कोई इंटरनेट नहीं."</string>
+    <string name="accessibility_quick_settings_open_details" msgid="4230931801728005194">"विवरण खोलें."</string>
+    <string name="accessibility_quick_settings_open_settings" msgid="7806613775728380737">"<xliff:g id="ID_1">%s</xliff:g> सेटिंग खोलें."</string>
+    <string name="accessibility_quick_settings_edit" msgid="7839992848995240393">"सेटिंग का क्रम संपादित करें."</string>
     <string name="accessibility_quick_settings_page" msgid="5032979051755200721">"पृष्ठ <xliff:g id="ID_2">%2$d</xliff:g> में से <xliff:g id="ID_1">%1$d</xliff:g>"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-hi/strings_tv.xml b/packages/SystemUI/res/values-hi/strings_tv.xml
index 5f1ab48..e0b0903 100644
--- a/packages/SystemUI/res/values-hi/strings_tv.xml
+++ b/packages/SystemUI/res/values-hi/strings_tv.xml
@@ -24,10 +24,8 @@
     <string name="pip_play" msgid="674145557658227044">"चलाएं"</string>
     <string name="pip_pause" msgid="8412075640017218862">"रोकें"</string>
     <string name="pip_hold_home" msgid="340086535668778109">"PIP नियंत्रण हेतु "<b>"HOME"</b>" होल्ड करें"</string>
-    <!-- no translation found for pip_onboarding_title (7850436557670253991) -->
-    <skip />
-    <!-- no translation found for pip_onboarding_description (4028124563309465267) -->
-    <skip />
+    <string name="pip_onboarding_title" msgid="7850436557670253991">"चित्र-में-चित्र"</string>
+    <string name="pip_onboarding_description" msgid="4028124563309465267">"यह आपके वीडियो को तब तक दृश्यमान बनाए रखता है जब तक कि आप कोई दूसरा वीडियो नहीं चलाते. उसे नियंत्रित करने के लिए "<b>"HOME"</b>" को दबाए रखें."</string>
     <string name="pip_onboarding_button" msgid="3957426748484904611">"समझ लिया"</string>
     <string name="recents_tv_dismiss" msgid="3555093879593377731">"ख़ारिज करें"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-hr/strings.xml b/packages/SystemUI/res/values-hr/strings.xml
index 829fc1a..384d125 100644
--- a/packages/SystemUI/res/values-hr/strings.xml
+++ b/packages/SystemUI/res/values-hr/strings.xml
@@ -72,7 +72,7 @@
     <string name="screenshot_saving_title" msgid="8242282144535555697">"Spremanje snimke zaslona..."</string>
     <string name="screenshot_saving_text" msgid="2419718443411738818">"Spremanje snimke zaslona."</string>
     <string name="screenshot_saved_title" msgid="6461865960961414961">"Zaslon je snimljen."</string>
-    <string name="screenshot_saved_text" msgid="1152839647677558815">"Dodirnite za prikaz snimke zaslona."</string>
+    <string name="screenshot_saved_text" msgid="2685605830386712477">"Dodirnite da biste vidjeli snimku zaslona."</string>
     <string name="screenshot_failed_title" msgid="705781116746922771">"Nije bilo moguće snimiti zaslon."</string>
     <string name="screenshot_failed_to_save_unknown_text" msgid="7887826345701753830">"Prilikom spremanja snimke zaslona pojavio se problem."</string>
     <string name="screenshot_failed_to_save_text" msgid="2592658083866306296">"Zaslon nije snimljen zbog ograničenog prostora za pohranu."</string>
@@ -119,8 +119,7 @@
     <string name="accessibility_data_signal_full" msgid="2708384608124519369">"Podatkovni signal pun."</string>
     <string name="accessibility_wifi_name" msgid="7202151365171148501">"Spojen na <xliff:g id="WIFI">%s</xliff:g>."</string>
     <string name="accessibility_bluetooth_name" msgid="8441517146585531676">"Spojen na <xliff:g id="BLUETOOTH">%s</xliff:g> ."</string>
-    <!-- no translation found for accessibility_cast_name (4026393061247081201) -->
-    <skip />
+    <string name="accessibility_cast_name" msgid="4026393061247081201">"Povezani ste sa sljedećim uređajem: <xliff:g id="CAST">%s</xliff:g>."</string>
     <string name="accessibility_no_wimax" msgid="4329180129727630368">"Nema signala WiMAX."</string>
     <string name="accessibility_wimax_one_bar" msgid="4170994299011863648">"WiMAX s jednim stupcem."</string>
     <string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"WiMAX s dva stupca."</string>
@@ -151,17 +150,14 @@
     <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string>
     <string name="accessibility_data_connection_wifi" msgid="2324496756590645221">"Wi-Fi"</string>
     <string name="accessibility_no_sim" msgid="8274017118472455155">"Nema SIM kartice."</string>
-    <!-- no translation found for accessibility_cell_data (7080312242791850520) -->
-    <skip />
-    <!-- no translation found for accessibility_cell_data_on (4310018593519761767) -->
-    <skip />
+    <string name="accessibility_cell_data" msgid="7080312242791850520">"Mobilni podaci"</string>
+    <string name="accessibility_cell_data_on" msgid="4310018593519761767">"Mobilni podaci uključeni"</string>
     <string name="accessibility_cell_data_off" msgid="8000803571751407635">"Mobilni podaci isključeni"</string>
     <string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"Posredno povezivanje Bluetootha."</string>
     <string name="accessibility_airplane_mode" msgid="834748999790763092">"Način rada u zrakoplovu"</string>
     <string name="accessibility_no_sims" msgid="3957997018324995781">"Nema SIM kartice."</string>
     <string name="accessibility_carrier_network_change_mode" msgid="4017301580441304305">"Promjena mreže operatera."</string>
-    <!-- no translation found for accessibility_battery_details (7645516654955025422) -->
-    <skip />
+    <string name="accessibility_battery_details" msgid="7645516654955025422">"Otvaranje pojedinosti o bateriji"</string>
     <string name="accessibility_battery_level" msgid="7451474187113371965">"Baterija <xliff:g id="NUMBER">%d</xliff:g> posto."</string>
     <string name="accessibility_battery_level_charging" msgid="1147587904439319646">"Baterija se puni, <xliff:g id="BATTERY_PERCENTAGE">%d</xliff:g> posto."</string>
     <string name="accessibility_settings_button" msgid="799583911231893380">"Postavke sustava."</string>
@@ -201,13 +197,11 @@
     <string name="accessibility_quick_settings_dnd_priority_on" msgid="1448402297221249355">"\"Ne ometaj\" uključeno, samo prioritetno."</string>
     <string name="accessibility_quick_settings_dnd_none_on" msgid="6882582132662613537">"\"Ne ometaj\" uključeno, potpuna tišina."</string>
     <string name="accessibility_quick_settings_dnd_alarms_on" msgid="9152834845587554157">"\"Ne ometaj\" uključeno, samo za alarme."</string>
-    <!-- no translation found for accessibility_quick_settings_dnd (6607873236717185815) -->
-    <skip />
+    <string name="accessibility_quick_settings_dnd" msgid="6607873236717185815">"Ne ometaj."</string>
     <string name="accessibility_quick_settings_dnd_off" msgid="2371832603753738581">"\"Ne ometaj\" isključeno."</string>
     <string name="accessibility_quick_settings_dnd_changed_off" msgid="898107593453022935">"\"Ne ometaj\" isključeno."</string>
     <string name="accessibility_quick_settings_dnd_changed_on" msgid="4483780856613561039">"\"Ne ometaj\" uključeno."</string>
-    <!-- no translation found for accessibility_quick_settings_bluetooth (6341675755803320038) -->
-    <skip />
+    <string name="accessibility_quick_settings_bluetooth" msgid="6341675755803320038">"Bluetooth."</string>
     <string name="accessibility_quick_settings_bluetooth_off" msgid="2133631372372064339">"Bluetooth isključen."</string>
     <string name="accessibility_quick_settings_bluetooth_on" msgid="7681999166216621838">"Bluetooth uključen."</string>
     <string name="accessibility_quick_settings_bluetooth_connecting" msgid="6953242966685343855">"Bluetooth se povezuje."</string>
@@ -273,10 +267,8 @@
     <string name="quick_settings_bluetooth_detail_empty_text" msgid="4910015762433302860">"Upareni uređaji nisu dostupni"</string>
     <string name="quick_settings_brightness_label" msgid="6968372297018755815">"Svjetlina"</string>
     <string name="quick_settings_rotation_unlocked_label" msgid="7305323031808150099">"Automatsko izmjenjivanje"</string>
-    <!-- no translation found for accessibility_quick_settings_rotation (4231661040698488779) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_rotation_value (1428962304214992318) -->
-    <skip />
+    <string name="accessibility_quick_settings_rotation" msgid="4231661040698488779">"Automatsko zakretanje zaslona"</string>
+    <string name="accessibility_quick_settings_rotation_value" msgid="1428962304214992318">"Postavljeno na <xliff:g id="ID_1">%s</xliff:g>"</string>
     <string name="quick_settings_rotation_locked_label" msgid="6359205706154282377">"Izmjenjivanje je zaključano"</string>
     <string name="quick_settings_rotation_locked_portrait_label" msgid="5102691921442135053">"Okomito"</string>
     <string name="quick_settings_rotation_locked_landscape_label" msgid="8553157770061178719">"Vodoravno"</string>
@@ -295,8 +287,7 @@
     <string name="quick_settings_wifi_not_connected" msgid="7171904845345573431">"Nije povezano"</string>
     <string name="quick_settings_wifi_no_network" msgid="2221993077220856376">"Nema mreže"</string>
     <string name="quick_settings_wifi_off_label" msgid="7558778100843885864">"Wi-Fi isključen"</string>
-    <!-- no translation found for quick_settings_wifi_on_label (7607810331387031235) -->
-    <skip />
+    <string name="quick_settings_wifi_on_label" msgid="7607810331387031235">"Wi-Fi uključen"</string>
     <string name="quick_settings_wifi_detail_empty_text" msgid="269990350383909226">"Nije dostupna nijedna Wi-Fi mreža"</string>
     <string name="quick_settings_cast_title" msgid="7709016546426454729">"Emitiranje"</string>
     <string name="quick_settings_casting" msgid="6601710681033353316">"Emitiranje"</string>
@@ -350,7 +341,7 @@
     <string name="zen_silence_introduction" msgid="3137882381093271568">"To blokira SVE zvukove i vibracije, uključujući alarme, glazbu, videozapise i igre."</string>
     <string name="keyguard_more_overflow_text" msgid="9195222469041601365">"+<xliff:g id="NUMBER_OF_NOTIFICATIONS">%d</xliff:g>"</string>
     <string name="speed_bump_explanation" msgid="1288875699658819755">"Manje hitne obavijesti pri dnu"</string>
-    <string name="notification_tap_again" msgid="8524949573675922138">"Dodirnite ponovo da biste otvorili"</string>
+    <string name="notification_tap_again" msgid="7590196980943943842">"Dodirnite opet za otvaranje"</string>
     <string name="keyguard_unlock" msgid="8043466894212841998">"Prijeđite prstom prema gore za otključavanje"</string>
     <string name="phone_hint" msgid="4872890986869209950">"Prijeđite prstom od ikone za telefon"</string>
     <string name="voice_hint" msgid="8939888732119726665">"Prijeđite prstom od ikone za glasovnu pomoć"</string>
@@ -428,7 +419,7 @@
     <string name="accessibility_volume_expand" msgid="5946812790999244205">"Proširivanje"</string>
     <string name="accessibility_volume_collapse" msgid="3609549593031810875">"Sažimanje"</string>
     <string name="screen_pinning_title" msgid="3273740381976175811">"Zaslon je prikvačen"</string>
-    <string name="screen_pinning_description" msgid="3577937698406151604">"Zaslon će tako ostati u prvom planu dok ga ne otkvačite. Dodirnite i držite Natrag da biste ga otkvačili."</string>
+    <string name="screen_pinning_description" msgid="7238941806855968768">"Zaslon će tako ostati u prvom planu dok ga ne otkvačite. Dodirnite i zadržite Natrag da biste ga otkvačili."</string>
     <string name="screen_pinning_positive" msgid="3783985798366751226">"Shvaćam"</string>
     <string name="screen_pinning_negative" msgid="3741602308343880268">"Ne, hvala"</string>
     <string name="quick_settings_reset_confirmation_title" msgid="748792586749897883">"Želite li sakriti pločicu <xliff:g id="TILE_LABEL">%1$s</xliff:g>?"</string>
@@ -438,15 +429,13 @@
     <string name="volumeui_prompt_allow" msgid="7954396902482228786">"Dopusti"</string>
     <string name="volumeui_prompt_deny" msgid="5720663643411696731">"Odbij"</string>
     <string name="volumeui_notification_title" msgid="4906770126345910955">"<xliff:g id="APP_NAME">%1$s</xliff:g> predstavlja dijaloški okvir za upravljanje glasnoćom"</string>
-    <string name="volumeui_notification_text" msgid="1826889705095768656">"Dodirnite da biste vratili izvorno."</string>
+    <string name="volumeui_notification_text" msgid="8819536904234337445">"Dodirnite da biste vratili izvornik."</string>
     <string name="managed_profile_foreground_toast" msgid="5421487114739245972">"Upotrebljavate radni profil"</string>
     <string name="volume_stream_content_description_unmute" msgid="4436631538779230857">"%1$s. Dodirnite da biste uključili zvuk."</string>
     <string name="volume_stream_content_description_vibrate" msgid="1187944970457807498">"%1$s. Dodirnite da biste postavili na vibraciju. Usluge pristupačnosti možda neće imati zvuk."</string>
     <string name="volume_stream_content_description_mute" msgid="3625049841390467354">"%1$s. Dodirnite da biste isključili zvuk. Usluge pristupačnosti možda neće imati zvuk."</string>
-    <!-- no translation found for volume_dialog_accessibility_shown_message (1834631467074259998) -->
-    <skip />
-    <!-- no translation found for volume_dialog_accessibility_dismissed_message (51543526013711399) -->
-    <skip />
+    <string name="volume_dialog_accessibility_shown_message" msgid="1834631467074259998">"%s kontrole glasnoće prikazane. Kliznite prstom prema gore da biste ih odbacili."</string>
+    <string name="volume_dialog_accessibility_dismissed_message" msgid="51543526013711399">"Kontrole glasnoće skrivene"</string>
     <string name="system_ui_tuner" msgid="708224127392452018">"Ugađanje korisničkog sučelja sustava"</string>
     <string name="show_battery_percentage" msgid="5444136600512968798">"Prikaži ugrađeni postotak baterije"</string>
     <string name="show_battery_percentage_summary" msgid="3215025775576786037">"Prikazivanje postotka razine baterije na ikoni trake statusa kada se ne puni"</string>
@@ -623,16 +612,16 @@
   </string-array>
     <string name="other" msgid="4060683095962566764">"Ostalo"</string>
     <string name="accessibility_divider" msgid="5903423481953635044">"Razdjelnik podijeljenog zaslona"</string>
-    <string name="accessibility_action_divider_left_full" msgid="2801570521881574972">"Lijevo na cijelom zaslonu"</string>
-    <string name="accessibility_action_divider_left_70" msgid="3612060638991687254">"Lijevo 70%"</string>
-    <string name="accessibility_action_divider_left_50" msgid="1248083470322193075">"Lijevo 50%"</string>
-    <string name="accessibility_action_divider_left_30" msgid="543324403127069386">"Lijevo 30%"</string>
-    <string name="accessibility_action_divider_right_full" msgid="4639381073802030463">"Desno na cijelom zaslonu"</string>
-    <string name="accessibility_action_divider_top_full" msgid="5357010904067731654">"Vrh na cijelom zaslonu"</string>
-    <string name="accessibility_action_divider_top_70" msgid="5090779195650364522">"Vrh 70%"</string>
-    <string name="accessibility_action_divider_top_50" msgid="6385859741925078668">"Vrh 50%"</string>
-    <string name="accessibility_action_divider_top_30" msgid="6201455163864841205">"Vrh 30%"</string>
-    <string name="accessibility_action_divider_bottom_full" msgid="301433196679548001">"Dno na cijelom zaslonu"</string>
+    <string name="accessibility_action_divider_left_full" msgid="2801570521881574972">"Lijevi zaslon u cijeli zaslon"</string>
+    <string name="accessibility_action_divider_left_70" msgid="3612060638991687254">"Lijevi zaslon na 70%"</string>
+    <string name="accessibility_action_divider_left_50" msgid="1248083470322193075">"Lijevi zaslon na 50%"</string>
+    <string name="accessibility_action_divider_left_30" msgid="543324403127069386">"Lijevi zaslon na 30%"</string>
+    <string name="accessibility_action_divider_right_full" msgid="4639381073802030463">"Desni zaslon u cijeli zaslon"</string>
+    <string name="accessibility_action_divider_top_full" msgid="5357010904067731654">"Gornji zaslon u cijeli zaslon"</string>
+    <string name="accessibility_action_divider_top_70" msgid="5090779195650364522">"Gornji zaslon na 70%"</string>
+    <string name="accessibility_action_divider_top_50" msgid="6385859741925078668">"Gornji zaslon na 50%"</string>
+    <string name="accessibility_action_divider_top_30" msgid="6201455163864841205">"Gornji zaslon na 30%"</string>
+    <string name="accessibility_action_divider_bottom_full" msgid="301433196679548001">"Donji zaslon u cijeli zaslon"</string>
     <string name="accessibility_qs_edit_tile_label" msgid="8374924053307764245">"Položaj <xliff:g id="POSITION">%1$d</xliff:g>, <xliff:g id="TILE_NAME">%2$s</xliff:g>. Dodirnite dvaput da biste uredili."</string>
     <string name="accessibility_qs_edit_add_tile_label" msgid="8133209638023882667">"<xliff:g id="TILE_NAME">%1$s</xliff:g>. Dodirnite dvaput da biste dodali."</string>
     <string name="accessibility_qs_edit_position_label" msgid="5055306305919289819">"Položaj <xliff:g id="POSITION">%1$d</xliff:g>. Dodirnite dvaput da biste odabrali."</string>
@@ -642,27 +631,17 @@
     <string name="accessibility_qs_edit_tile_removed" msgid="8584304916627913440">"Pločica <xliff:g id="TILE_NAME">%1$s</xliff:g> uklonjena"</string>
     <string name="accessibility_qs_edit_tile_moved" msgid="4343693412689365038">"Pločica <xliff:g id="TILE_NAME">%1$s</xliff:g> premještena je na položaj <xliff:g id="POSITION">%2$d</xliff:g>"</string>
     <string name="accessibility_desc_quick_settings_edit" msgid="8073587401747016103">"Uređivač brzih postavki."</string>
-    <!-- no translation found for accessibility_desc_notification_icon (8352414185263916335) -->
-    <skip />
+    <string name="accessibility_desc_notification_icon" msgid="8352414185263916335">"<xliff:g id="ID_1">%1$s</xliff:g> obavijest: <xliff:g id="ID_2">%2$s</xliff:g>"</string>
     <string name="dock_forced_resizable" msgid="5914261505436217520">"Aplikacija možda neće funkcionirati s podijeljenim zaslonom."</string>
     <string name="dock_non_resizeble_failed_to_dock_text" msgid="3871617304250207291">"Aplikacija ne podržava podijeljeni zaslon."</string>
-    <!-- no translation found for accessibility_quick_settings_settings (6132460890024942157) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_expand (2375165227880477530) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_collapse (1792625797142648105) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_alarm_set (1863000242431528676) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_user (1567445362870421770) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_no_internet (31890692343084075) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_open_details (4230931801728005194) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_open_settings (7806613775728380737) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_edit (7839992848995240393) -->
-    <skip />
+    <string name="accessibility_quick_settings_settings" msgid="6132460890024942157">"Otvaranje postavki."</string>
+    <string name="accessibility_quick_settings_expand" msgid="2375165227880477530">"Otvaranje brzih postavki."</string>
+    <string name="accessibility_quick_settings_collapse" msgid="1792625797142648105">"Zatvaranje brzih postavki."</string>
+    <string name="accessibility_quick_settings_alarm_set" msgid="1863000242431528676">"Alarm je postavljen."</string>
+    <string name="accessibility_quick_settings_user" msgid="1567445362870421770">"Prijavljeni ste kao <xliff:g id="ID_1">%s</xliff:g>"</string>
+    <string name="accessibility_quick_settings_no_internet" msgid="31890692343084075">"Nema interneta."</string>
+    <string name="accessibility_quick_settings_open_details" msgid="4230931801728005194">"Otvaranje pojedinosti."</string>
+    <string name="accessibility_quick_settings_open_settings" msgid="7806613775728380737">"Otvaranje postavki za <xliff:g id="ID_1">%s</xliff:g>."</string>
+    <string name="accessibility_quick_settings_edit" msgid="7839992848995240393">"Uređivanje redoslijeda postavki."</string>
     <string name="accessibility_quick_settings_page" msgid="5032979051755200721">"Stranica <xliff:g id="ID_1">%1$d</xliff:g> od <xliff:g id="ID_2">%2$d</xliff:g>"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-hr/strings_tv.xml b/packages/SystemUI/res/values-hr/strings_tv.xml
index eb5be40..e4c31c9 100644
--- a/packages/SystemUI/res/values-hr/strings_tv.xml
+++ b/packages/SystemUI/res/values-hr/strings_tv.xml
@@ -24,10 +24,8 @@
     <string name="pip_play" msgid="674145557658227044">"Reproduciraj"</string>
     <string name="pip_pause" msgid="8412075640017218862">"Pauziraj"</string>
     <string name="pip_hold_home" msgid="340086535668778109">"Držite "<b>"POČETNI"</b>" za PIP"</string>
-    <!-- no translation found for pip_onboarding_title (7850436557670253991) -->
-    <skip />
-    <!-- no translation found for pip_onboarding_description (4028124563309465267) -->
-    <skip />
+    <string name="pip_onboarding_title" msgid="7850436557670253991">"Slika u slici"</string>
+    <string name="pip_onboarding_description" msgid="4028124563309465267">"Videozapis će se prikazivati dok ne počnete reproducirati neki drugi. Pritisnite i zadržite tipku "<b>"HOME"</b>" da biste upravljali tom značajkom."</string>
     <string name="pip_onboarding_button" msgid="3957426748484904611">"Shvaćam"</string>
     <string name="recents_tv_dismiss" msgid="3555093879593377731">"Odbaci"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-hu/strings.xml b/packages/SystemUI/res/values-hu/strings.xml
index 7bcb5de..27c7daf 100644
--- a/packages/SystemUI/res/values-hu/strings.xml
+++ b/packages/SystemUI/res/values-hu/strings.xml
@@ -71,7 +71,7 @@
     <string name="screenshot_saving_title" msgid="8242282144535555697">"Képernyőkép mentése..."</string>
     <string name="screenshot_saving_text" msgid="2419718443411738818">"Képernyőkép mentése."</string>
     <string name="screenshot_saved_title" msgid="6461865960961414961">"Képernyőkép rögzítve."</string>
-    <string name="screenshot_saved_text" msgid="1152839647677558815">"Megérintésével megtekintheti a képernyőképet."</string>
+    <string name="screenshot_saved_text" msgid="2685605830386712477">"Koppintson a képernyőkép megtekintéséhez."</string>
     <string name="screenshot_failed_title" msgid="705781116746922771">"Nem sikerült rögzíteni a képernyőképet."</string>
     <string name="screenshot_failed_to_save_unknown_text" msgid="7887826345701753830">"Hiba történt a képernyőkép mentése során."</string>
     <string name="screenshot_failed_to_save_text" msgid="2592658083866306296">"Nem menthet képernyőképet, mert kevés a tárhely."</string>
@@ -118,8 +118,7 @@
     <string name="accessibility_data_signal_full" msgid="2708384608124519369">"Adatjel teljes."</string>
     <string name="accessibility_wifi_name" msgid="7202151365171148501">"Csatlakoztatva a következőhöz: <xliff:g id="WIFI">%s</xliff:g>."</string>
     <string name="accessibility_bluetooth_name" msgid="8441517146585531676">"Csatlakoztatva a következőhöz: <xliff:g id="BLUETOOTH">%s</xliff:g>."</string>
-    <!-- no translation found for accessibility_cast_name (4026393061247081201) -->
-    <skip />
+    <string name="accessibility_cast_name" msgid="4026393061247081201">"Csatlakozva a következőhöz: <xliff:g id="CAST">%s</xliff:g>."</string>
     <string name="accessibility_no_wimax" msgid="4329180129727630368">"Nincs WiMAX."</string>
     <string name="accessibility_wimax_one_bar" msgid="4170994299011863648">"WiMAX-jel: egy sáv."</string>
     <string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"WiMAX-jel: két sáv."</string>
@@ -150,17 +149,14 @@
     <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string>
     <string name="accessibility_data_connection_wifi" msgid="2324496756590645221">"Wi-Fi"</string>
     <string name="accessibility_no_sim" msgid="8274017118472455155">"Nincs SIM."</string>
-    <!-- no translation found for accessibility_cell_data (7080312242791850520) -->
-    <skip />
-    <!-- no translation found for accessibility_cell_data_on (4310018593519761767) -->
-    <skip />
+    <string name="accessibility_cell_data" msgid="7080312242791850520">"Mobiladatok"</string>
+    <string name="accessibility_cell_data_on" msgid="4310018593519761767">"Mobiladatok engedélyezve"</string>
     <string name="accessibility_cell_data_off" msgid="8000803571751407635">"Mobiladat-kapcsolat kikapcsolva"</string>
     <string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"Bluetooth megosztása."</string>
     <string name="accessibility_airplane_mode" msgid="834748999790763092">"Repülőgép üzemmód."</string>
     <string name="accessibility_no_sims" msgid="3957997018324995781">"Nincs SIM kártya."</string>
     <string name="accessibility_carrier_network_change_mode" msgid="4017301580441304305">"Szolgáltatói hálózat váltása."</string>
-    <!-- no translation found for accessibility_battery_details (7645516654955025422) -->
-    <skip />
+    <string name="accessibility_battery_details" msgid="7645516654955025422">"Az akkumulátorral kapcsolatos részletek megnyitása"</string>
     <string name="accessibility_battery_level" msgid="7451474187113371965">"Akkumulátor <xliff:g id="NUMBER">%d</xliff:g> százalék."</string>
     <string name="accessibility_battery_level_charging" msgid="1147587904439319646">"Akkumulátor töltése folyamatban, <xliff:g id="BATTERY_PERCENTAGE">%d</xliff:g> százalék."</string>
     <string name="accessibility_settings_button" msgid="799583911231893380">"Rendszerbeállítások"</string>
@@ -200,13 +196,11 @@
     <string name="accessibility_quick_settings_dnd_priority_on" msgid="1448402297221249355">"A „Ne zavarjanak” mód bekapcsolva. Csak prioritásos."</string>
     <string name="accessibility_quick_settings_dnd_none_on" msgid="6882582132662613537">"„Ne zavarjanak” mód bekapcsolva; teljes némítás."</string>
     <string name="accessibility_quick_settings_dnd_alarms_on" msgid="9152834845587554157">"A „Ne zavarjanak” mód bekapcsolva. Csak ébresztések."</string>
-    <!-- no translation found for accessibility_quick_settings_dnd (6607873236717185815) -->
-    <skip />
+    <string name="accessibility_quick_settings_dnd" msgid="6607873236717185815">"Ne zavarjanak"</string>
     <string name="accessibility_quick_settings_dnd_off" msgid="2371832603753738581">"A „Ne zavarjanak” mód kikapcsolva."</string>
     <string name="accessibility_quick_settings_dnd_changed_off" msgid="898107593453022935">"A „Ne zavarjanak” mód kikapcsolva."</string>
     <string name="accessibility_quick_settings_dnd_changed_on" msgid="4483780856613561039">"A „Ne zavarjanak” mód bekapcsolva."</string>
-    <!-- no translation found for accessibility_quick_settings_bluetooth (6341675755803320038) -->
-    <skip />
+    <string name="accessibility_quick_settings_bluetooth" msgid="6341675755803320038">"Bluetooth"</string>
     <string name="accessibility_quick_settings_bluetooth_off" msgid="2133631372372064339">"Bluetooth kikapcsolva."</string>
     <string name="accessibility_quick_settings_bluetooth_on" msgid="7681999166216621838">"Bluetooth bekapcsolva."</string>
     <string name="accessibility_quick_settings_bluetooth_connecting" msgid="6953242966685343855">"Bluetooth csatlakoztatása folyamatban."</string>
@@ -272,10 +266,8 @@
     <string name="quick_settings_bluetooth_detail_empty_text" msgid="4910015762433302860">"Nem áll rendelkezésre párosított eszköz"</string>
     <string name="quick_settings_brightness_label" msgid="6968372297018755815">"Fényerő"</string>
     <string name="quick_settings_rotation_unlocked_label" msgid="7305323031808150099">"Automatikus elforgatás"</string>
-    <!-- no translation found for accessibility_quick_settings_rotation (4231661040698488779) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_rotation_value (1428962304214992318) -->
-    <skip />
+    <string name="accessibility_quick_settings_rotation" msgid="4231661040698488779">"Automatikus képernyőforgatás"</string>
+    <string name="accessibility_quick_settings_rotation_value" msgid="1428962304214992318">"Beállítás a következőre: <xliff:g id="ID_1">%s</xliff:g>"</string>
     <string name="quick_settings_rotation_locked_label" msgid="6359205706154282377">"Elforgatás zárolva"</string>
     <string name="quick_settings_rotation_locked_portrait_label" msgid="5102691921442135053">"Álló"</string>
     <string name="quick_settings_rotation_locked_landscape_label" msgid="8553157770061178719">"Fekvő"</string>
@@ -294,8 +286,7 @@
     <string name="quick_settings_wifi_not_connected" msgid="7171904845345573431">"Nincs kapcsolat"</string>
     <string name="quick_settings_wifi_no_network" msgid="2221993077220856376">"Nincs hálózat"</string>
     <string name="quick_settings_wifi_off_label" msgid="7558778100843885864">"Wi-Fi kikapcsolva"</string>
-    <!-- no translation found for quick_settings_wifi_on_label (7607810331387031235) -->
-    <skip />
+    <string name="quick_settings_wifi_on_label" msgid="7607810331387031235">"Wi-Fi bekapcsolva"</string>
     <string name="quick_settings_wifi_detail_empty_text" msgid="269990350383909226">"Nincs elérhető Wi-Fi-hálózat"</string>
     <string name="quick_settings_cast_title" msgid="7709016546426454729">"Tartalomátküldés"</string>
     <string name="quick_settings_casting" msgid="6601710681033353316">"Átküldés"</string>
@@ -349,7 +340,7 @@
     <string name="zen_silence_introduction" msgid="3137882381093271568">"Ez letiltja az ÖSSZES hanghatást és rezgést, beleértve az ébresztések, zeneszámok, videók és játékok hangjait is."</string>
     <string name="keyguard_more_overflow_text" msgid="9195222469041601365">"+<xliff:g id="NUMBER_OF_NOTIFICATIONS">%d</xliff:g>"</string>
     <string name="speed_bump_explanation" msgid="1288875699658819755">"A kevésbé sürgős értesítések lentebb vannak"</string>
-    <string name="notification_tap_again" msgid="8524949573675922138">"Érintse meg ismét a megnyitáshoz"</string>
+    <string name="notification_tap_again" msgid="7590196980943943842">"Koppintson rá ismét a megnyitáshoz"</string>
     <string name="keyguard_unlock" msgid="8043466894212841998">"Húzza felfelé az ujját a feloldáshoz"</string>
     <string name="phone_hint" msgid="4872890986869209950">"A telefonhoz csúsztasson az ikonról"</string>
     <string name="voice_hint" msgid="8939888732119726665">"A hangsegéd eléréséhez csúsztassa ujját az ikonról"</string>
@@ -427,7 +418,7 @@
     <string name="accessibility_volume_expand" msgid="5946812790999244205">"Kibontás"</string>
     <string name="accessibility_volume_collapse" msgid="3609549593031810875">"Összecsukás"</string>
     <string name="screen_pinning_title" msgid="3273740381976175811">"A képernyő rögzítve van"</string>
-    <string name="screen_pinning_description" msgid="3577937698406151604">"Megjelenítve tartja addig, amíg Ön fel nem oldja a rögzítést. A feloldáshoz tartsa lenyomva a Vissza lehetőséget."</string>
+    <string name="screen_pinning_description" msgid="7238941806855968768">"Megjelenítve tartja addig, amíg Ön fel nem oldja a rögzítést. A feloldáshoz tartsa lenyomva a Vissza lehetőséget."</string>
     <string name="screen_pinning_positive" msgid="3783985798366751226">"Értem"</string>
     <string name="screen_pinning_negative" msgid="3741602308343880268">"Nem, köszönöm"</string>
     <string name="quick_settings_reset_confirmation_title" msgid="748792586749897883">"Elrejti ezt: <xliff:g id="TILE_LABEL">%1$s</xliff:g>?"</string>
@@ -437,15 +428,13 @@
     <string name="volumeui_prompt_allow" msgid="7954396902482228786">"Engedélyezés"</string>
     <string name="volumeui_prompt_deny" msgid="5720663643411696731">"Elutasítás"</string>
     <string name="volumeui_notification_title" msgid="4906770126345910955">"A(z) <xliff:g id="APP_NAME">%1$s</xliff:g> alkalmazás kezeli a hangerőt"</string>
-    <string name="volumeui_notification_text" msgid="1826889705095768656">"Érintse meg az eredeti érték visszaállításához."</string>
+    <string name="volumeui_notification_text" msgid="8819536904234337445">"Koppintson az eredeti visszaállításához."</string>
     <string name="managed_profile_foreground_toast" msgid="5421487114739245972">"A munkaprofilt használja"</string>
     <string name="volume_stream_content_description_unmute" msgid="4436631538779230857">"%1$s. Koppintson a némítás megszüntetéséhez."</string>
     <string name="volume_stream_content_description_vibrate" msgid="1187944970457807498">"%1$s. Koppintson a rezgés beállításához. Előfordulhat, hogy a kisegítő lehetőségek szolgáltatásai le vannak némítva."</string>
     <string name="volume_stream_content_description_mute" msgid="3625049841390467354">"%1$s. Koppintson a némításhoz. Előfordulhat, hogy a kisegítő lehetőségek szolgáltatásai le vannak némítva."</string>
-    <!-- no translation found for volume_dialog_accessibility_shown_message (1834631467074259998) -->
-    <skip />
-    <!-- no translation found for volume_dialog_accessibility_dismissed_message (51543526013711399) -->
-    <skip />
+    <string name="volume_dialog_accessibility_shown_message" msgid="1834631467074259998">"A(z) %s hangvezérlői megjelenítve. Az elvetéshez húzza felfelé az ujját."</string>
+    <string name="volume_dialog_accessibility_dismissed_message" msgid="51543526013711399">"Hangvezérlők elrejtve"</string>
     <string name="system_ui_tuner" msgid="708224127392452018">"Kezelőfelület-hangoló"</string>
     <string name="show_battery_percentage" msgid="5444136600512968798">"A beépített akkumulátor töltöttségi szintjének megjelenítése"</string>
     <string name="show_battery_percentage_summary" msgid="3215025775576786037">"Az akkumulátor töltöttségi szintjének megjelenítése az állapotsori ikonban, amikor az eszköz nem töltődik"</string>
@@ -641,27 +630,17 @@
     <string name="accessibility_qs_edit_tile_removed" msgid="8584304916627913440">"A(z) <xliff:g id="TILE_NAME">%1$s</xliff:g> eltávolítva"</string>
     <string name="accessibility_qs_edit_tile_moved" msgid="4343693412689365038">"A(z) <xliff:g id="TILE_NAME">%1$s</xliff:g> áthelyezve a(z) <xliff:g id="POSITION">%2$d</xliff:g>. pozícióba"</string>
     <string name="accessibility_desc_quick_settings_edit" msgid="8073587401747016103">"Gyorsbeállítások szerkesztője"</string>
-    <!-- no translation found for accessibility_desc_notification_icon (8352414185263916335) -->
-    <skip />
+    <string name="accessibility_desc_notification_icon" msgid="8352414185263916335">"<xliff:g id="ID_1">%1$s</xliff:g>-értesítések: <xliff:g id="ID_2">%2$s</xliff:g>"</string>
     <string name="dock_forced_resizable" msgid="5914261505436217520">"Lehet, hogy az alkalmazás nem működik osztott képernyős nézetben."</string>
     <string name="dock_non_resizeble_failed_to_dock_text" msgid="3871617304250207291">"Az alkalmazás nem támogatja az osztott képernyős nézetet."</string>
-    <!-- no translation found for accessibility_quick_settings_settings (6132460890024942157) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_expand (2375165227880477530) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_collapse (1792625797142648105) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_alarm_set (1863000242431528676) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_user (1567445362870421770) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_no_internet (31890692343084075) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_open_details (4230931801728005194) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_open_settings (7806613775728380737) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_edit (7839992848995240393) -->
-    <skip />
+    <string name="accessibility_quick_settings_settings" msgid="6132460890024942157">"Beállítások megnyitása."</string>
+    <string name="accessibility_quick_settings_expand" msgid="2375165227880477530">"Gyorsbeállítások megnyitása."</string>
+    <string name="accessibility_quick_settings_collapse" msgid="1792625797142648105">"Gyorsbeállítások bezárása"</string>
+    <string name="accessibility_quick_settings_alarm_set" msgid="1863000242431528676">"Ébresztő beállítva"</string>
+    <string name="accessibility_quick_settings_user" msgid="1567445362870421770">"Bejelentkezve mint <xliff:g id="ID_1">%s</xliff:g>"</string>
+    <string name="accessibility_quick_settings_no_internet" msgid="31890692343084075">"Nincs internetkapcsolat."</string>
+    <string name="accessibility_quick_settings_open_details" msgid="4230931801728005194">"A részletek megnyitása."</string>
+    <string name="accessibility_quick_settings_open_settings" msgid="7806613775728380737">"A(z) <xliff:g id="ID_1">%s</xliff:g> beállításainak megnyitása."</string>
+    <string name="accessibility_quick_settings_edit" msgid="7839992848995240393">"Beállítások sorrendjének szerkesztése."</string>
     <string name="accessibility_quick_settings_page" msgid="5032979051755200721">"<xliff:g id="ID_1">%1$d</xliff:g>. oldal, összesen: <xliff:g id="ID_2">%2$d</xliff:g>"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-hu/strings_tv.xml b/packages/SystemUI/res/values-hu/strings_tv.xml
index f7eae94..db20b43 100644
--- a/packages/SystemUI/res/values-hu/strings_tv.xml
+++ b/packages/SystemUI/res/values-hu/strings_tv.xml
@@ -24,10 +24,8 @@
     <string name="pip_play" msgid="674145557658227044">"Lejátszás"</string>
     <string name="pip_pause" msgid="8412075640017218862">"Szüneteltetés"</string>
     <string name="pip_hold_home" msgid="340086535668778109">"PIP vezérlése a "<b>"HOME"</b>"-mal"</string>
-    <!-- no translation found for pip_onboarding_title (7850436557670253991) -->
-    <skip />
-    <!-- no translation found for pip_onboarding_description (4028124563309465267) -->
-    <skip />
+    <string name="pip_onboarding_title" msgid="7850436557670253991">"Kép a képben"</string>
+    <string name="pip_onboarding_description" msgid="4028124563309465267">"A következő lejátszásáig ezt a videót tartja előtérben. A vezérléshez tartsa nyomva a "<b>"HOME"</b>" gombot."</string>
     <string name="pip_onboarding_button" msgid="3957426748484904611">"Rendben"</string>
     <string name="recents_tv_dismiss" msgid="3555093879593377731">"Elvetés"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-hy-rAM/strings.xml b/packages/SystemUI/res/values-hy-rAM/strings.xml
index 658f3a9..8c92ab1 100644
--- a/packages/SystemUI/res/values-hy-rAM/strings.xml
+++ b/packages/SystemUI/res/values-hy-rAM/strings.xml
@@ -71,7 +71,7 @@
     <string name="screenshot_saving_title" msgid="8242282144535555697">"Պահում է էկրանի հանույթը..."</string>
     <string name="screenshot_saving_text" msgid="2419718443411738818">"Էկրանի հանույթը պահվում է:"</string>
     <string name="screenshot_saved_title" msgid="6461865960961414961">"Էկրանի հանույթը լուսանկարվել է:"</string>
-    <string name="screenshot_saved_text" msgid="1152839647677558815">"Հպեք ձեր էկրանի հանույթը տեսնելու համար:"</string>
+    <string name="screenshot_saved_text" msgid="2685605830386712477">"Հպեք՝ էկրանի պատկերը տեսնելու համար:"</string>
     <string name="screenshot_failed_title" msgid="705781116746922771">"Չհաջողվեց լուսանկարել էկրանի հանույթը:"</string>
     <string name="screenshot_failed_to_save_unknown_text" msgid="7887826345701753830">"Էկրանի պատկերը պահելիս խնդիր առաջացավ:"</string>
     <string name="screenshot_failed_to_save_text" msgid="2592658083866306296">"Չհաջողվեց պահել էկրանի պատկերը սահմանափակ հիշողության պատճառով:"</string>
@@ -118,8 +118,7 @@
     <string name="accessibility_data_signal_full" msgid="2708384608124519369">"Տվյալների ազդանշանը լրիվ է:"</string>
     <string name="accessibility_wifi_name" msgid="7202151365171148501">"Միացված է <xliff:g id="WIFI">%s</xliff:g>-ին:"</string>
     <string name="accessibility_bluetooth_name" msgid="8441517146585531676">"Կապակցված է <xliff:g id="BLUETOOTH">%s</xliff:g>-ին:"</string>
-    <!-- no translation found for accessibility_cast_name (4026393061247081201) -->
-    <skip />
+    <string name="accessibility_cast_name" msgid="4026393061247081201">"Կապակցված է <xliff:g id="CAST">%s</xliff:g>-ին:"</string>
     <string name="accessibility_no_wimax" msgid="4329180129727630368">"WiMAX չկա:"</string>
     <string name="accessibility_wimax_one_bar" msgid="4170994299011863648">"WiMAX-ի մեկ գիծ:"</string>
     <string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"WiMAX-ի երկու գիծ:"</string>
@@ -150,17 +149,14 @@
     <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string>
     <string name="accessibility_data_connection_wifi" msgid="2324496756590645221">"Wi-Fi"</string>
     <string name="accessibility_no_sim" msgid="8274017118472455155">"SIM չկա:"</string>
-    <!-- no translation found for accessibility_cell_data (7080312242791850520) -->
-    <skip />
-    <!-- no translation found for accessibility_cell_data_on (4310018593519761767) -->
-    <skip />
+    <string name="accessibility_cell_data" msgid="7080312242791850520">"Բջջային տվյալներ"</string>
+    <string name="accessibility_cell_data_on" msgid="4310018593519761767">"Բջջային տվյալներն ակտիվ են"</string>
     <string name="accessibility_cell_data_off" msgid="8000803571751407635">"Բջջային ցանցով տվյալների փոխանցումն անջատված է"</string>
     <string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"Bluetooth-ը կապվում է:"</string>
     <string name="accessibility_airplane_mode" msgid="834748999790763092">"Ինքնաթիռային ռեժիմ"</string>
     <string name="accessibility_no_sims" msgid="3957997018324995781">"SIM քարտ չկա:"</string>
     <string name="accessibility_carrier_network_change_mode" msgid="4017301580441304305">"Օպերատորի ցանցի փոփոխում:"</string>
-    <!-- no translation found for accessibility_battery_details (7645516654955025422) -->
-    <skip />
+    <string name="accessibility_battery_details" msgid="7645516654955025422">"Բացել մարտկոցի տվյալները"</string>
     <string name="accessibility_battery_level" msgid="7451474187113371965">"Մարտկոցը <xliff:g id="NUMBER">%d</xliff:g> տոկոս է:"</string>
     <string name="accessibility_battery_level_charging" msgid="1147587904439319646">"Մարտկոցը լիցքավորվում է: Լիցքը <xliff:g id="BATTERY_PERCENTAGE">%d</xliff:g> տոկոս է:"</string>
     <string name="accessibility_settings_button" msgid="799583911231893380">"Համակարգի կարգավորումներ:"</string>
@@ -200,13 +196,11 @@
     <string name="accessibility_quick_settings_dnd_priority_on" msgid="1448402297221249355">"Չխանգարելու ընտրանքը միացված է: Ընդհատել միայն կարևոր ծանուցումների դեպքում:"</string>
     <string name="accessibility_quick_settings_dnd_none_on" msgid="6882582132662613537">"Չանհանգստացնել՝ ընդհանուր լուռ վիճակը:"</string>
     <string name="accessibility_quick_settings_dnd_alarms_on" msgid="9152834845587554157">"Չանհանգստացնել՝ միայն զարթուցիչ"</string>
-    <!-- no translation found for accessibility_quick_settings_dnd (6607873236717185815) -->
-    <skip />
+    <string name="accessibility_quick_settings_dnd" msgid="6607873236717185815">"Չընդհատել:"</string>
     <string name="accessibility_quick_settings_dnd_off" msgid="2371832603753738581">"Չխանգարելու ընտրանքն անջատված է:"</string>
     <string name="accessibility_quick_settings_dnd_changed_off" msgid="898107593453022935">"Չխանգարելու ընտրանքն անջատվեց:"</string>
     <string name="accessibility_quick_settings_dnd_changed_on" msgid="4483780856613561039">"Չխանգարելու ընտրանքը միացվեց:"</string>
-    <!-- no translation found for accessibility_quick_settings_bluetooth (6341675755803320038) -->
-    <skip />
+    <string name="accessibility_quick_settings_bluetooth" msgid="6341675755803320038">"Bluetooth:"</string>
     <string name="accessibility_quick_settings_bluetooth_off" msgid="2133631372372064339">"Bluetooth-ն անջատված է:"</string>
     <string name="accessibility_quick_settings_bluetooth_on" msgid="7681999166216621838">"Bluetooth-ը միացված է:"</string>
     <string name="accessibility_quick_settings_bluetooth_connecting" msgid="6953242966685343855">"Bluetooth-ը միանում է:"</string>
@@ -272,10 +266,8 @@
     <string name="quick_settings_bluetooth_detail_empty_text" msgid="4910015762433302860">"Հասանելի զուգավորված սարքեր չկան"</string>
     <string name="quick_settings_brightness_label" msgid="6968372297018755815">"Պայծառություն"</string>
     <string name="quick_settings_rotation_unlocked_label" msgid="7305323031808150099">"Ինքնապտտում"</string>
-    <!-- no translation found for accessibility_quick_settings_rotation (4231661040698488779) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_rotation_value (1428962304214992318) -->
-    <skip />
+    <string name="accessibility_quick_settings_rotation" msgid="4231661040698488779">"Ինքնուրույն պտտել էկրանը"</string>
+    <string name="accessibility_quick_settings_rotation_value" msgid="1428962304214992318">"Նշանակել <xliff:g id="ID_1">%s</xliff:g>-ի"</string>
     <string name="quick_settings_rotation_locked_label" msgid="6359205706154282377">"Պտտումը կողպված է"</string>
     <string name="quick_settings_rotation_locked_portrait_label" msgid="5102691921442135053">"Դիմանկար"</string>
     <string name="quick_settings_rotation_locked_landscape_label" msgid="8553157770061178719">"Լանդշաֆտ"</string>
@@ -294,8 +286,7 @@
     <string name="quick_settings_wifi_not_connected" msgid="7171904845345573431">"Միացված չէ"</string>
     <string name="quick_settings_wifi_no_network" msgid="2221993077220856376">"Ցանց չկա"</string>
     <string name="quick_settings_wifi_off_label" msgid="7558778100843885864">"Wi-Fi-ը անջատված է"</string>
-    <!-- no translation found for quick_settings_wifi_on_label (7607810331387031235) -->
-    <skip />
+    <string name="quick_settings_wifi_on_label" msgid="7607810331387031235">"Wi-Fi-ը միացված է"</string>
     <string name="quick_settings_wifi_detail_empty_text" msgid="269990350383909226">"Հասանելի Wi-Fi ցանցեր չկան"</string>
     <string name="quick_settings_cast_title" msgid="7709016546426454729">"Հեռարձակում"</string>
     <string name="quick_settings_casting" msgid="6601710681033353316">"Հեռարձակում"</string>
@@ -349,7 +340,7 @@
     <string name="zen_silence_introduction" msgid="3137882381093271568">"Այս գործողությունն արգելափակում է ԲՈԼՈՐ ձայներն ու թրթռումները, այդ թվում նաև զարթուցիչների, երաժշտության, տեսանյութերի և խաղերի ձայներն ու թրթռումները:"</string>
     <string name="keyguard_more_overflow_text" msgid="9195222469041601365">"+<xliff:g id="NUMBER_OF_NOTIFICATIONS">%d</xliff:g>"</string>
     <string name="speed_bump_explanation" msgid="1288875699658819755">"Պակաս հրատապ ծանուցումները ստորև"</string>
-    <string name="notification_tap_again" msgid="8524949573675922138">"Կրկին հպեք՝ բացելու համար"</string>
+    <string name="notification_tap_again" msgid="7590196980943943842">"Կրկին հպեք՝ բացելու համար"</string>
     <string name="keyguard_unlock" msgid="8043466894212841998">"Սահեցրեք վերև` ապակողպելու համար"</string>
     <string name="phone_hint" msgid="4872890986869209950">"Սահահարվածեք հեռախոսի պատկերակից"</string>
     <string name="voice_hint" msgid="8939888732119726665">"Սահահարվածեք ձայնային հուշման պատկերակից"</string>
@@ -427,7 +418,7 @@
     <string name="accessibility_volume_expand" msgid="5946812790999244205">"Ընդարձակել"</string>
     <string name="accessibility_volume_collapse" msgid="3609549593031810875">"Կոծկել"</string>
     <string name="screen_pinning_title" msgid="3273740381976175811">"Էկրանն ամրացված է"</string>
-    <string name="screen_pinning_description" msgid="3577937698406151604">"Էկրանը կմնա տեսադաշտում, մինչև այն ապամրացնեք: Ապամրացնելու համար հպեք և պահեք Հետ կոճակը:"</string>
+    <string name="screen_pinning_description" msgid="7238941806855968768">"Էկրանը կմնա տեսադաշտում, մինչև այն ապամրացնեք: Ապամրացնելու համար հպեք և պահեք Հետ կոճակը:"</string>
     <string name="screen_pinning_positive" msgid="3783985798366751226">"Հասկանալի է"</string>
     <string name="screen_pinning_negative" msgid="3741602308343880268">"Ոչ, շնորհակալություն"</string>
     <string name="quick_settings_reset_confirmation_title" msgid="748792586749897883">"Թաքցնե՞լ <xliff:g id="TILE_LABEL">%1$s</xliff:g>-ը:"</string>
@@ -437,15 +428,13 @@
     <string name="volumeui_prompt_allow" msgid="7954396902482228786">"Թույլատրել"</string>
     <string name="volumeui_prompt_deny" msgid="5720663643411696731">"Մերժել"</string>
     <string name="volumeui_notification_title" msgid="4906770126345910955">"<xliff:g id="APP_NAME">%1$s</xliff:g>-ը ձայնի ուժգնության երկխոսության հավելված է"</string>
-    <string name="volumeui_notification_text" msgid="1826889705095768656">"Դիպչեք՝ սկզբնօրինակը վերականգնելու համար:"</string>
+    <string name="volumeui_notification_text" msgid="8819536904234337445">"Հպեք՝ բնօրինակը վերականգնելու համար:"</string>
     <string name="managed_profile_foreground_toast" msgid="5421487114739245972">"Դուք օգտագործում եք ձեր աշխատանքային պրոֆիլը"</string>
     <string name="volume_stream_content_description_unmute" msgid="4436631538779230857">"%1$s: Հպեք՝ ձայնը միացնելու համար:"</string>
     <string name="volume_stream_content_description_vibrate" msgid="1187944970457807498">"%1$s: Հպեք՝ թրթռումը միացնելու համար: Մատչելիության ծառայությունների ձայնը կարող է անջատվել:"</string>
     <string name="volume_stream_content_description_mute" msgid="3625049841390467354">"%1$s: Հպեք՝ ձայնն անջատելու համար: Մատչելիության ծառայությունների ձայնը կարող է անջատվել:"</string>
-    <!-- no translation found for volume_dialog_accessibility_shown_message (1834631467074259998) -->
-    <skip />
-    <!-- no translation found for volume_dialog_accessibility_dismissed_message (51543526013711399) -->
-    <skip />
+    <string name="volume_dialog_accessibility_shown_message" msgid="1834631467074259998">"%s ձայնի ուժգնության կառավարները ցուցադրված են: Մատը սահեցրեք վերև՝ փակելու համար:"</string>
+    <string name="volume_dialog_accessibility_dismissed_message" msgid="51543526013711399">"Ձայնի ուժգնության կառավարները թաքցված են"</string>
     <string name="system_ui_tuner" msgid="708224127392452018">"Համակարգի ՕՄ-ի կարգավորիչ"</string>
     <string name="show_battery_percentage" msgid="5444136600512968798">"Ցուցադրել ներկառուցված մարտկոցի տոկոսայնությունը"</string>
     <string name="show_battery_percentage_summary" msgid="3215025775576786037">"Ցուցադրել մարտկոցի լիցքավորման տոկոսայնությունը կարգավիճակի գոտու պատկերակի վրա, երբ այն չի լիցքավորվում"</string>
@@ -641,27 +630,17 @@
     <string name="accessibility_qs_edit_tile_removed" msgid="8584304916627913440">"<xliff:g id="TILE_NAME">%1$s</xliff:g> սալիկը հեռացվել է"</string>
     <string name="accessibility_qs_edit_tile_moved" msgid="4343693412689365038">"<xliff:g id="TILE_NAME">%1$s</xliff:g> սալիկը տեղափոխվել է դեպի <xliff:g id="POSITION">%2$d</xliff:g> դիրք"</string>
     <string name="accessibility_desc_quick_settings_edit" msgid="8073587401747016103">"Արագ կարգավորումների խմբագրիչ:"</string>
-    <!-- no translation found for accessibility_desc_notification_icon (8352414185263916335) -->
-    <skip />
+    <string name="accessibility_desc_notification_icon" msgid="8352414185263916335">"<xliff:g id="ID_1">%1$s</xliff:g> ծանուցում՝ <xliff:g id="ID_2">%2$s</xliff:g>"</string>
     <string name="dock_forced_resizable" msgid="5914261505436217520">"Հավելվածը չի կարող աշխատել տրոհված էկրանի ռեժիմում:"</string>
     <string name="dock_non_resizeble_failed_to_dock_text" msgid="3871617304250207291">"Հավելվածը չի աջակցում էկրանի տրոհումը:"</string>
-    <!-- no translation found for accessibility_quick_settings_settings (6132460890024942157) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_expand (2375165227880477530) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_collapse (1792625797142648105) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_alarm_set (1863000242431528676) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_user (1567445362870421770) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_no_internet (31890692343084075) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_open_details (4230931801728005194) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_open_settings (7806613775728380737) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_edit (7839992848995240393) -->
-    <skip />
+    <string name="accessibility_quick_settings_settings" msgid="6132460890024942157">"Բացել կարգավորումները:"</string>
+    <string name="accessibility_quick_settings_expand" msgid="2375165227880477530">"Բացել արագ կարգավորումները:"</string>
+    <string name="accessibility_quick_settings_collapse" msgid="1792625797142648105">"Փակել արագ կարգավորումները:"</string>
+    <string name="accessibility_quick_settings_alarm_set" msgid="1863000242431528676">"Զարթուցիչը կարգավորված է:"</string>
+    <string name="accessibility_quick_settings_user" msgid="1567445362870421770">"Մուտք է գործել որպես <xliff:g id="ID_1">%s</xliff:g>"</string>
+    <string name="accessibility_quick_settings_no_internet" msgid="31890692343084075">"Ինտերնետ կապ չկա:"</string>
+    <string name="accessibility_quick_settings_open_details" msgid="4230931801728005194">"Բացել մանրամասները:"</string>
+    <string name="accessibility_quick_settings_open_settings" msgid="7806613775728380737">"Բացել <xliff:g id="ID_1">%s</xliff:g> կարգավորումները:"</string>
+    <string name="accessibility_quick_settings_edit" msgid="7839992848995240393">"Խմբագրել կարգավորումների հերթականությունը:"</string>
     <string name="accessibility_quick_settings_page" msgid="5032979051755200721">"Էջ <xliff:g id="ID_1">%1$d</xliff:g> / <xliff:g id="ID_2">%2$d</xliff:g>"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-hy-rAM/strings_tv.xml b/packages/SystemUI/res/values-hy-rAM/strings_tv.xml
index e501677..cd9b159 100644
--- a/packages/SystemUI/res/values-hy-rAM/strings_tv.xml
+++ b/packages/SystemUI/res/values-hy-rAM/strings_tv.xml
@@ -24,10 +24,8 @@
     <string name="pip_play" msgid="674145557658227044">"Նվագարկել"</string>
     <string name="pip_pause" msgid="8412075640017218862">"Դադարեցնել"</string>
     <string name="pip_hold_home" msgid="340086535668778109">"PIP-ն կառավարելու համար սեղմած պահեք "<b>"HOME"</b>" կոճակը"</string>
-    <!-- no translation found for pip_onboarding_title (7850436557670253991) -->
-    <skip />
-    <!-- no translation found for pip_onboarding_description (4028124563309465267) -->
-    <skip />
+    <string name="pip_onboarding_title" msgid="7850436557670253991">"Նկարը նկարի մեջ"</string>
+    <string name="pip_onboarding_description" msgid="4028124563309465267">"Տեսանյութը կմնա տեսադաշտում մինչև մեկ այլ տեսանյութ նվագարկելը: Կառավարելու համար սեղմեք և պահեք "<b>"HOME"</b>" կոճակը:"</string>
     <string name="pip_onboarding_button" msgid="3957426748484904611">"Պարզ է"</string>
     <string name="recents_tv_dismiss" msgid="3555093879593377731">"Փակել"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-in/strings.xml b/packages/SystemUI/res/values-in/strings.xml
index 187de06..7c8105db 100644
--- a/packages/SystemUI/res/values-in/strings.xml
+++ b/packages/SystemUI/res/values-in/strings.xml
@@ -71,7 +71,7 @@
     <string name="screenshot_saving_title" msgid="8242282144535555697">"Menyimpan tangkapan layar..."</string>
     <string name="screenshot_saving_text" msgid="2419718443411738818">"Tangkapan layar sedang disimpan."</string>
     <string name="screenshot_saved_title" msgid="6461865960961414961">"Tangkapan layar diambil."</string>
-    <string name="screenshot_saved_text" msgid="1152839647677558815">"Sentuh untuk melihat tangkapan layar Anda."</string>
+    <string name="screenshot_saved_text" msgid="2685605830386712477">"Ketuk untuk melihat tangkapan layar."</string>
     <string name="screenshot_failed_title" msgid="705781116746922771">"Tidak dapat mengambil tangkapan layar."</string>
     <string name="screenshot_failed_to_save_unknown_text" msgid="7887826345701753830">"Terjadi masalah saat menyimpan tangkapan layar."</string>
     <string name="screenshot_failed_to_save_text" msgid="2592658083866306296">"Tidak dapat menyimpan tangkapan layar karena ruang penyimpanan terbatas."</string>
@@ -340,7 +340,7 @@
     <string name="zen_silence_introduction" msgid="3137882381093271568">"SEMUA suara dan getaran, termasuk dari alarm, musik, video, dan game akan diblokir."</string>
     <string name="keyguard_more_overflow_text" msgid="9195222469041601365">"+<xliff:g id="NUMBER_OF_NOTIFICATIONS">%d</xliff:g>"</string>
     <string name="speed_bump_explanation" msgid="1288875699658819755">"Notifikasi kurang darurat di bawah"</string>
-    <string name="notification_tap_again" msgid="8524949573675922138">"Sentuh lagi untuk membuka"</string>
+    <string name="notification_tap_again" msgid="7590196980943943842">"Ketuk lagi untuk membuka"</string>
     <string name="keyguard_unlock" msgid="8043466894212841998">"Gesek ke atas untuk membuka kunci"</string>
     <string name="phone_hint" msgid="4872890986869209950">"Gesek dari ikon untuk telepon"</string>
     <string name="voice_hint" msgid="8939888732119726665">"Gesek dari ikon untuk mengaktifkan bantuan suara"</string>
@@ -418,7 +418,7 @@
     <string name="accessibility_volume_expand" msgid="5946812790999244205">"Luaskan"</string>
     <string name="accessibility_volume_collapse" msgid="3609549593031810875">"Ciutkan"</string>
     <string name="screen_pinning_title" msgid="3273740381976175811">"Layar dipasangi pin"</string>
-    <string name="screen_pinning_description" msgid="3577937698406151604">"Ini akan terus ditampilkan sampai Anda melepas pin. Sentuh dan tahan tombol Kembali untuk melepas pin."</string>
+    <string name="screen_pinning_description" msgid="7238941806855968768">"Ini akan terus ditampilkan sampai Anda melepas pin. Sentuh dan tahan tombol Kembali untuk melepas pin."</string>
     <string name="screen_pinning_positive" msgid="3783985798366751226">"Mengerti"</string>
     <string name="screen_pinning_negative" msgid="3741602308343880268">"Lain kali"</string>
     <string name="quick_settings_reset_confirmation_title" msgid="748792586749897883">"Sembunyikan <xliff:g id="TILE_LABEL">%1$s</xliff:g>?"</string>
@@ -428,7 +428,7 @@
     <string name="volumeui_prompt_allow" msgid="7954396902482228786">"Izinkan"</string>
     <string name="volumeui_prompt_deny" msgid="5720663643411696731">"Tolak"</string>
     <string name="volumeui_notification_title" msgid="4906770126345910955">"<xliff:g id="APP_NAME">%1$s</xliff:g> adalah dialog volume"</string>
-    <string name="volumeui_notification_text" msgid="1826889705095768656">"Sentuh untuk memulihkan aslinya."</string>
+    <string name="volumeui_notification_text" msgid="8819536904234337445">"Ketuk untuk memulihkan aslinya."</string>
     <string name="managed_profile_foreground_toast" msgid="5421487114739245972">"Anda menggunakan profil kerja"</string>
     <string name="volume_stream_content_description_unmute" msgid="4436631538779230857">"%1$s. Ketuk untuk menyuarakan."</string>
     <string name="volume_stream_content_description_vibrate" msgid="1187944970457807498">"%1$s. Ketuk untuk menyetel agar bergetar. Layanan aksesibilitas mungkin dibisukan."</string>
diff --git a/packages/SystemUI/res/values-is-rIS/strings.xml b/packages/SystemUI/res/values-is-rIS/strings.xml
index 636a2d9..45a07c1 100644
--- a/packages/SystemUI/res/values-is-rIS/strings.xml
+++ b/packages/SystemUI/res/values-is-rIS/strings.xml
@@ -71,7 +71,7 @@
     <string name="screenshot_saving_title" msgid="8242282144535555697">"Vistar skjámynd…"</string>
     <string name="screenshot_saving_text" msgid="2419718443411738818">"Verið er að vista skjámynd."</string>
     <string name="screenshot_saved_title" msgid="6461865960961414961">"Skjámynd var tekin."</string>
-    <string name="screenshot_saved_text" msgid="1152839647677558815">"Snertu til að skoða skjámyndina."</string>
+    <string name="screenshot_saved_text" msgid="2685605830386712477">"Ýttu til að sjá skjámyndina."</string>
     <string name="screenshot_failed_title" msgid="705781116746922771">"Ekki tókst að taka skjámynd."</string>
     <string name="screenshot_failed_to_save_unknown_text" msgid="7887826345701753830">"Upp kom vandamál við að vista skjámynd."</string>
     <string name="screenshot_failed_to_save_text" msgid="2592658083866306296">"Ekki tókst að vista skjámynd vegna takmarkaðs geymslupláss."</string>
@@ -118,8 +118,7 @@
     <string name="accessibility_data_signal_full" msgid="2708384608124519369">"Fullur sendistyrkur gagnatengingar."</string>
     <string name="accessibility_wifi_name" msgid="7202151365171148501">"Tengt við <xliff:g id="WIFI">%s</xliff:g>."</string>
     <string name="accessibility_bluetooth_name" msgid="8441517146585531676">"Tengt við <xliff:g id="BLUETOOTH">%s</xliff:g>."</string>
-    <!-- no translation found for accessibility_cast_name (4026393061247081201) -->
-    <skip />
+    <string name="accessibility_cast_name" msgid="4026393061247081201">"Tengt við <xliff:g id="CAST">%s</xliff:g>."</string>
     <string name="accessibility_no_wimax" msgid="4329180129727630368">"Engin WiMAX-tenging."</string>
     <string name="accessibility_wimax_one_bar" msgid="4170994299011863648">"WiMAX: Eitt strik."</string>
     <string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"WiMAX: Tvö strik."</string>
@@ -150,17 +149,14 @@
     <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string>
     <string name="accessibility_data_connection_wifi" msgid="2324496756590645221">"Wi-Fi"</string>
     <string name="accessibility_no_sim" msgid="8274017118472455155">"Ekkert SIM-kort."</string>
-    <!-- no translation found for accessibility_cell_data (7080312242791850520) -->
-    <skip />
-    <!-- no translation found for accessibility_cell_data_on (4310018593519761767) -->
-    <skip />
+    <string name="accessibility_cell_data" msgid="7080312242791850520">"Farsímagögn"</string>
+    <string name="accessibility_cell_data_on" msgid="4310018593519761767">"Kveikt á farsímagögnum"</string>
     <string name="accessibility_cell_data_off" msgid="8000803571751407635">"Slökkt á farsímagögnum"</string>
     <string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"Tjóðrun með Bluetooth."</string>
     <string name="accessibility_airplane_mode" msgid="834748999790763092">"Flugstilling"</string>
     <string name="accessibility_no_sims" msgid="3957997018324995781">"Ekkert SIM-kort."</string>
     <string name="accessibility_carrier_network_change_mode" msgid="4017301580441304305">"Skipt um farsímakerfi."</string>
-    <!-- no translation found for accessibility_battery_details (7645516654955025422) -->
-    <skip />
+    <string name="accessibility_battery_details" msgid="7645516654955025422">"Opna upplýsingar um rafhlöðu"</string>
     <string name="accessibility_battery_level" msgid="7451474187113371965">"<xliff:g id="NUMBER">%d</xliff:g> prósent á rafhlöðu."</string>
     <string name="accessibility_battery_level_charging" msgid="1147587904439319646">"Rafhlaða í hleðslu, <xliff:g id="BATTERY_PERCENTAGE">%d</xliff:g> prósent."</string>
     <string name="accessibility_settings_button" msgid="799583911231893380">"Kerfisstillingar."</string>
@@ -200,13 +196,11 @@
     <string name="accessibility_quick_settings_dnd_priority_on" msgid="1448402297221249355">"Kveikt á „Ónáðið ekki“, aðeins forgangur."</string>
     <string name="accessibility_quick_settings_dnd_none_on" msgid="6882582132662613537">"Kveikt á „Ónáðið ekki“, algjör þögn."</string>
     <string name="accessibility_quick_settings_dnd_alarms_on" msgid="9152834845587554157">"Kveikt á „Ónáðið ekki“, aðeins vekjarar."</string>
-    <!-- no translation found for accessibility_quick_settings_dnd (6607873236717185815) -->
-    <skip />
+    <string name="accessibility_quick_settings_dnd" msgid="6607873236717185815">"Ónáðið ekki."</string>
     <string name="accessibility_quick_settings_dnd_off" msgid="2371832603753738581">"Slökkt á „Ónáðið ekki“."</string>
     <string name="accessibility_quick_settings_dnd_changed_off" msgid="898107593453022935">"Slökkt á „Ónáðið ekki“."</string>
     <string name="accessibility_quick_settings_dnd_changed_on" msgid="4483780856613561039">"Kveikt á „Ónáðið ekki“."</string>
-    <!-- no translation found for accessibility_quick_settings_bluetooth (6341675755803320038) -->
-    <skip />
+    <string name="accessibility_quick_settings_bluetooth" msgid="6341675755803320038">"Bluetooth."</string>
     <string name="accessibility_quick_settings_bluetooth_off" msgid="2133631372372064339">"Slökkt á Bluetooth."</string>
     <string name="accessibility_quick_settings_bluetooth_on" msgid="7681999166216621838">"Kveikt á Bluetooth."</string>
     <string name="accessibility_quick_settings_bluetooth_connecting" msgid="6953242966685343855">"Bluetooth tengist."</string>
@@ -272,10 +266,8 @@
     <string name="quick_settings_bluetooth_detail_empty_text" msgid="4910015762433302860">"Engin pöruð tæki til staðar"</string>
     <string name="quick_settings_brightness_label" msgid="6968372297018755815">"Birtustig"</string>
     <string name="quick_settings_rotation_unlocked_label" msgid="7305323031808150099">"Sjálfvirkur snúningur"</string>
-    <!-- no translation found for accessibility_quick_settings_rotation (4231661040698488779) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_rotation_value (1428962304214992318) -->
-    <skip />
+    <string name="accessibility_quick_settings_rotation" msgid="4231661040698488779">"Snúa skjá sjálfkrafa"</string>
+    <string name="accessibility_quick_settings_rotation_value" msgid="1428962304214992318">"Stilla á <xliff:g id="ID_1">%s</xliff:g>"</string>
     <string name="quick_settings_rotation_locked_label" msgid="6359205706154282377">"Snúningur læstur"</string>
     <string name="quick_settings_rotation_locked_portrait_label" msgid="5102691921442135053">"Skammsnið"</string>
     <string name="quick_settings_rotation_locked_landscape_label" msgid="8553157770061178719">"Langsnið"</string>
@@ -294,8 +286,7 @@
     <string name="quick_settings_wifi_not_connected" msgid="7171904845345573431">"Engin tenging"</string>
     <string name="quick_settings_wifi_no_network" msgid="2221993077220856376">"Ekkert net"</string>
     <string name="quick_settings_wifi_off_label" msgid="7558778100843885864">"Slökkt á Wi-Fi"</string>
-    <!-- no translation found for quick_settings_wifi_on_label (7607810331387031235) -->
-    <skip />
+    <string name="quick_settings_wifi_on_label" msgid="7607810331387031235">"Kveikt á Wi-Fi"</string>
     <string name="quick_settings_wifi_detail_empty_text" msgid="269990350383909226">"Engin Wi-Fi net í boði"</string>
     <string name="quick_settings_cast_title" msgid="7709016546426454729">"Útsending"</string>
     <string name="quick_settings_casting" msgid="6601710681033353316">"Sendir út"</string>
@@ -349,7 +340,7 @@
     <string name="zen_silence_introduction" msgid="3137882381093271568">"Þetta lokar á ÖLL hljóðmerki og titring, þ.m.t. frá vekjurum, tónlist, myndskeiðum og leikjum."</string>
     <string name="keyguard_more_overflow_text" msgid="9195222469041601365">"+<xliff:g id="NUMBER_OF_NOTIFICATIONS">%d</xliff:g>"</string>
     <string name="speed_bump_explanation" msgid="1288875699658819755">"Minna áríðandi tilkynningar fyrir neðan"</string>
-    <string name="notification_tap_again" msgid="8524949573675922138">"Snertu aftur til að opna"</string>
+    <string name="notification_tap_again" msgid="7590196980943943842">"Ýttu aftur til að opna"</string>
     <string name="keyguard_unlock" msgid="8043466894212841998">"Strjúktu upp til að opna"</string>
     <string name="phone_hint" msgid="4872890986869209950">"Strjúktu frá tákninu fyrir síma"</string>
     <string name="voice_hint" msgid="8939888732119726665">"Strjúktu frá tákninu fyrir raddaðstoð"</string>
@@ -427,7 +418,7 @@
     <string name="accessibility_volume_expand" msgid="5946812790999244205">"Stækka"</string>
     <string name="accessibility_volume_collapse" msgid="3609549593031810875">"Minnka"</string>
     <string name="screen_pinning_title" msgid="3273740381976175811">"Skjárinn er festur"</string>
-    <string name="screen_pinning_description" msgid="3577937698406151604">"Þetta heldur þessu opnu þangað til þú losar. Haltu „Til baka“ inni til að losa."</string>
+    <string name="screen_pinning_description" msgid="7238941806855968768">"Þetta heldur þessu opnu þangað til þú losar það. Haltu fingri á „Til baka“ til að losa."</string>
     <string name="screen_pinning_positive" msgid="3783985798366751226">"Ég skil"</string>
     <string name="screen_pinning_negative" msgid="3741602308343880268">"Nei, takk"</string>
     <string name="quick_settings_reset_confirmation_title" msgid="748792586749897883">"Fela <xliff:g id="TILE_LABEL">%1$s</xliff:g>?"</string>
@@ -437,15 +428,13 @@
     <string name="volumeui_prompt_allow" msgid="7954396902482228786">"Leyfa"</string>
     <string name="volumeui_prompt_deny" msgid="5720663643411696731">"Hafna"</string>
     <string name="volumeui_notification_title" msgid="4906770126345910955">"<xliff:g id="APP_NAME">%1$s</xliff:g> er hljóðstyrksvalmyndin"</string>
-    <string name="volumeui_notification_text" msgid="1826889705095768656">"Snertu til að færa í upprunalegt horf."</string>
+    <string name="volumeui_notification_text" msgid="8819536904234337445">"Ýttu til að færa í upprunalegt horf."</string>
     <string name="managed_profile_foreground_toast" msgid="5421487114739245972">"Þú ert að nota vinnusniðið"</string>
     <string name="volume_stream_content_description_unmute" msgid="4436631538779230857">"%1$s. Ýttu til að hætta að þagga."</string>
     <string name="volume_stream_content_description_vibrate" msgid="1187944970457807498">"%1$s. Ýttu til að stilla á titring. Hugsanlega verður slökkt á hljóði aðgengisþjónustu."</string>
     <string name="volume_stream_content_description_mute" msgid="3625049841390467354">"%1$s. Ýttu til að þagga. Hugsanlega verður slökkt á hljóði aðgengisþjónustu."</string>
-    <!-- no translation found for volume_dialog_accessibility_shown_message (1834631467074259998) -->
-    <skip />
-    <!-- no translation found for volume_dialog_accessibility_dismissed_message (51543526013711399) -->
-    <skip />
+    <string name="volume_dialog_accessibility_shown_message" msgid="1834631467074259998">"%s stýringar fyrir hljóðstyrk sýnilegar. Strjúktu upp til að hunsa."</string>
+    <string name="volume_dialog_accessibility_dismissed_message" msgid="51543526013711399">"Stýringar fyrir hljóðstyrk faldar"</string>
     <string name="system_ui_tuner" msgid="708224127392452018">"Fínstillingar kerfisviðmóts"</string>
     <string name="show_battery_percentage" msgid="5444136600512968798">"Sýna innfellda rafhlöðustöðu"</string>
     <string name="show_battery_percentage_summary" msgid="3215025775576786037">"Sýna rafhlöðustöðuna í stöðustikunni þegar tækið er ekki í hleðslu"</string>
@@ -641,27 +630,17 @@
     <string name="accessibility_qs_edit_tile_removed" msgid="8584304916627913440">"<xliff:g id="TILE_NAME">%1$s</xliff:g> var fjarlægð"</string>
     <string name="accessibility_qs_edit_tile_moved" msgid="4343693412689365038">"<xliff:g id="TILE_NAME">%1$s</xliff:g> færð í stöðu <xliff:g id="POSITION">%2$d</xliff:g>"</string>
     <string name="accessibility_desc_quick_settings_edit" msgid="8073587401747016103">"Flýtistillingaritill."</string>
-    <!-- no translation found for accessibility_desc_notification_icon (8352414185263916335) -->
-    <skip />
+    <string name="accessibility_desc_notification_icon" msgid="8352414185263916335">"<xliff:g id="ID_1">%1$s</xliff:g> tilkynning: <xliff:g id="ID_2">%2$s</xliff:g>"</string>
     <string name="dock_forced_resizable" msgid="5914261505436217520">"Hugsanlega virkar forritið ekki ef skjánum er skipt upp."</string>
     <string name="dock_non_resizeble_failed_to_dock_text" msgid="3871617304250207291">"Forritið styður ekki að skjánum sé skipt."</string>
-    <!-- no translation found for accessibility_quick_settings_settings (6132460890024942157) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_expand (2375165227880477530) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_collapse (1792625797142648105) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_alarm_set (1863000242431528676) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_user (1567445362870421770) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_no_internet (31890692343084075) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_open_details (4230931801728005194) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_open_settings (7806613775728380737) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_edit (7839992848995240393) -->
-    <skip />
+    <string name="accessibility_quick_settings_settings" msgid="6132460890024942157">"Opna stillingar."</string>
+    <string name="accessibility_quick_settings_expand" msgid="2375165227880477530">"Opna flýtistillingar."</string>
+    <string name="accessibility_quick_settings_collapse" msgid="1792625797142648105">"Loka flýtistillingum."</string>
+    <string name="accessibility_quick_settings_alarm_set" msgid="1863000242431528676">"Vekjari stilltur."</string>
+    <string name="accessibility_quick_settings_user" msgid="1567445362870421770">"Skráð(ur) inn sem <xliff:g id="ID_1">%s</xliff:g>"</string>
+    <string name="accessibility_quick_settings_no_internet" msgid="31890692343084075">"Engin nettenging."</string>
+    <string name="accessibility_quick_settings_open_details" msgid="4230931801728005194">"Opna upplýsingasíðu."</string>
+    <string name="accessibility_quick_settings_open_settings" msgid="7806613775728380737">"Opna <xliff:g id="ID_1">%s</xliff:g> stillingar."</string>
+    <string name="accessibility_quick_settings_edit" msgid="7839992848995240393">"Breyta röð stillinga."</string>
     <string name="accessibility_quick_settings_page" msgid="5032979051755200721">"Blaðsíða <xliff:g id="ID_1">%1$d</xliff:g> af <xliff:g id="ID_2">%2$d</xliff:g>"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-is-rIS/strings_tv.xml b/packages/SystemUI/res/values-is-rIS/strings_tv.xml
index 385a2bf..582c044 100644
--- a/packages/SystemUI/res/values-is-rIS/strings_tv.xml
+++ b/packages/SystemUI/res/values-is-rIS/strings_tv.xml
@@ -24,10 +24,8 @@
     <string name="pip_play" msgid="674145557658227044">"Spila"</string>
     <string name="pip_pause" msgid="8412075640017218862">"Hlé"</string>
     <string name="pip_hold_home" msgid="340086535668778109">"Haltu "<b>"HOME"</b>"-hnappinum inni til að stjórna innfelldri mynd"</string>
-    <!-- no translation found for pip_onboarding_title (7850436557670253991) -->
-    <skip />
-    <!-- no translation found for pip_onboarding_description (4028124563309465267) -->
-    <skip />
+    <string name="pip_onboarding_title" msgid="7850436557670253991">"Mynd í mynd"</string>
+    <string name="pip_onboarding_description" msgid="4028124563309465267">"Þetta heldur myndskeiðinu sýnilegu þar til þú spilar annað. Haltu inni "<b>"HOME"</b>" til að stjórna."</string>
     <string name="pip_onboarding_button" msgid="3957426748484904611">"Ég skil"</string>
     <string name="recents_tv_dismiss" msgid="3555093879593377731">"Hunsa"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-it/strings.xml b/packages/SystemUI/res/values-it/strings.xml
index 58f79a9..e522950 100644
--- a/packages/SystemUI/res/values-it/strings.xml
+++ b/packages/SystemUI/res/values-it/strings.xml
@@ -71,7 +71,7 @@
     <string name="screenshot_saving_title" msgid="8242282144535555697">"Salvataggio screenshot..."</string>
     <string name="screenshot_saving_text" msgid="2419718443411738818">"Screenshot in corso di salvataggio."</string>
     <string name="screenshot_saved_title" msgid="6461865960961414961">"Screenshot acquisito."</string>
-    <string name="screenshot_saved_text" msgid="1152839647677558815">"Tocca per visualizzare il tuo screenshot."</string>
+    <string name="screenshot_saved_text" msgid="2685605830386712477">"Tocca per visualizzare lo screenshot."</string>
     <string name="screenshot_failed_title" msgid="705781116746922771">"Impossibile acquisire lo screenshot."</string>
     <string name="screenshot_failed_to_save_unknown_text" msgid="7887826345701753830">"Si è verificato un problema durante il salvataggio dello screenshot."</string>
     <string name="screenshot_failed_to_save_text" msgid="2592658083866306296">"Impossibile salvare lo screenshot a causa dello spazio di archiviazione limitato."</string>
@@ -118,8 +118,7 @@
     <string name="accessibility_data_signal_full" msgid="2708384608124519369">"Massimo segnale dati."</string>
     <string name="accessibility_wifi_name" msgid="7202151365171148501">"Connesso a <xliff:g id="WIFI">%s</xliff:g>."</string>
     <string name="accessibility_bluetooth_name" msgid="8441517146585531676">"Connesso a <xliff:g id="BLUETOOTH">%s</xliff:g>."</string>
-    <!-- no translation found for accessibility_cast_name (4026393061247081201) -->
-    <skip />
+    <string name="accessibility_cast_name" msgid="4026393061247081201">"Connesso a: <xliff:g id="CAST">%s</xliff:g>."</string>
     <string name="accessibility_no_wimax" msgid="4329180129727630368">"Nessun segnale WiMAX."</string>
     <string name="accessibility_wimax_one_bar" msgid="4170994299011863648">"WiMAX: una barra."</string>
     <string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"WiMAX: due barre."</string>
@@ -150,17 +149,14 @@
     <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string>
     <string name="accessibility_data_connection_wifi" msgid="2324496756590645221">"Wi-Fi"</string>
     <string name="accessibility_no_sim" msgid="8274017118472455155">"Nessuna SIM presente."</string>
-    <!-- no translation found for accessibility_cell_data (7080312242791850520) -->
-    <skip />
-    <!-- no translation found for accessibility_cell_data_on (4310018593519761767) -->
-    <skip />
+    <string name="accessibility_cell_data" msgid="7080312242791850520">"Rete dati"</string>
+    <string name="accessibility_cell_data_on" msgid="4310018593519761767">"Rete dati attivata"</string>
     <string name="accessibility_cell_data_off" msgid="8000803571751407635">"Rete dati disattivata"</string>
     <string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"Tethering Bluetooth."</string>
     <string name="accessibility_airplane_mode" msgid="834748999790763092">"Modalità aereo."</string>
     <string name="accessibility_no_sims" msgid="3957997018324995781">"Nessuna SIM presente."</string>
     <string name="accessibility_carrier_network_change_mode" msgid="4017301580441304305">"Cambio rete operatore."</string>
-    <!-- no translation found for accessibility_battery_details (7645516654955025422) -->
-    <skip />
+    <string name="accessibility_battery_details" msgid="7645516654955025422">"Visualizza i dettagli relativi alla batteria"</string>
     <string name="accessibility_battery_level" msgid="7451474187113371965">"Batteria: <xliff:g id="NUMBER">%d</xliff:g> percento."</string>
     <!-- String.format failed for translation -->
     <!-- no translation found for accessibility_battery_level_charging (1147587904439319646) -->
@@ -202,13 +198,11 @@
     <string name="accessibility_quick_settings_dnd_priority_on" msgid="1448402297221249355">"\"Non disturbare\" attivo, solo con priorità."</string>
     <string name="accessibility_quick_settings_dnd_none_on" msgid="6882582132662613537">"Opzione \"Non disturbare\" attiva, silenzio totale."</string>
     <string name="accessibility_quick_settings_dnd_alarms_on" msgid="9152834845587554157">"\"Non disturbare\" attivo, solo sveglie."</string>
-    <!-- no translation found for accessibility_quick_settings_dnd (6607873236717185815) -->
-    <skip />
+    <string name="accessibility_quick_settings_dnd" msgid="6607873236717185815">"Non disturbare."</string>
     <string name="accessibility_quick_settings_dnd_off" msgid="2371832603753738581">"\"Non disturbare\" non attivo."</string>
     <string name="accessibility_quick_settings_dnd_changed_off" msgid="898107593453022935">"\"Non disturbare\" non attivo."</string>
     <string name="accessibility_quick_settings_dnd_changed_on" msgid="4483780856613561039">"\"Non disturbare\" attivo."</string>
-    <!-- no translation found for accessibility_quick_settings_bluetooth (6341675755803320038) -->
-    <skip />
+    <string name="accessibility_quick_settings_bluetooth" msgid="6341675755803320038">"Bluetooth."</string>
     <string name="accessibility_quick_settings_bluetooth_off" msgid="2133631372372064339">"Bluetooth non attivo."</string>
     <string name="accessibility_quick_settings_bluetooth_on" msgid="7681999166216621838">"Bluetooth attivo."</string>
     <string name="accessibility_quick_settings_bluetooth_connecting" msgid="6953242966685343855">"Collegamento Bluetooth."</string>
@@ -274,10 +268,8 @@
     <string name="quick_settings_bluetooth_detail_empty_text" msgid="4910015762433302860">"Nessun dispositivo accoppiato disponibile"</string>
     <string name="quick_settings_brightness_label" msgid="6968372297018755815">"Luminosità"</string>
     <string name="quick_settings_rotation_unlocked_label" msgid="7305323031808150099">"Rotazione automatica"</string>
-    <!-- no translation found for accessibility_quick_settings_rotation (4231661040698488779) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_rotation_value (1428962304214992318) -->
-    <skip />
+    <string name="accessibility_quick_settings_rotation" msgid="4231661040698488779">"Rotazione automatica dello schermo"</string>
+    <string name="accessibility_quick_settings_rotation_value" msgid="1428962304214992318">"Imposta su <xliff:g id="ID_1">%s</xliff:g>"</string>
     <string name="quick_settings_rotation_locked_label" msgid="6359205706154282377">"Rotazione bloccata"</string>
     <string name="quick_settings_rotation_locked_portrait_label" msgid="5102691921442135053">"Verticale"</string>
     <string name="quick_settings_rotation_locked_landscape_label" msgid="8553157770061178719">"Orizzontale"</string>
@@ -296,8 +288,7 @@
     <string name="quick_settings_wifi_not_connected" msgid="7171904845345573431">"Non connesso"</string>
     <string name="quick_settings_wifi_no_network" msgid="2221993077220856376">"Nessuna rete"</string>
     <string name="quick_settings_wifi_off_label" msgid="7558778100843885864">"Wi-Fi disattivato"</string>
-    <!-- no translation found for quick_settings_wifi_on_label (7607810331387031235) -->
-    <skip />
+    <string name="quick_settings_wifi_on_label" msgid="7607810331387031235">"Wi-Fi attivo"</string>
     <string name="quick_settings_wifi_detail_empty_text" msgid="269990350383909226">"Nessuna rete Wi-Fi disponibile"</string>
     <string name="quick_settings_cast_title" msgid="7709016546426454729">"Trasmetti"</string>
     <string name="quick_settings_casting" msgid="6601710681033353316">"In trasmissione"</string>
@@ -351,7 +342,7 @@
     <string name="zen_silence_introduction" msgid="3137882381093271568">"Verranno bloccati TUTTI i suoni e le vibrazioni, anche di sveglie, musica, video e giochi."</string>
     <string name="keyguard_more_overflow_text" msgid="9195222469041601365">"+<xliff:g id="NUMBER_OF_NOTIFICATIONS">%d</xliff:g>"</string>
     <string name="speed_bump_explanation" msgid="1288875699658819755">"Notifiche meno urgenti in basso"</string>
-    <string name="notification_tap_again" msgid="8524949573675922138">"Tocca di nuovo per aprire"</string>
+    <string name="notification_tap_again" msgid="7590196980943943842">"Tocca ancora per aprire"</string>
     <string name="keyguard_unlock" msgid="8043466894212841998">"Scorri verso l\'alto per sbloccare"</string>
     <string name="phone_hint" msgid="4872890986869209950">"Scorri per accedere al telefono"</string>
     <string name="voice_hint" msgid="8939888732119726665">"Scorri dall\'icona per accedere a Voice Assist"</string>
@@ -429,7 +420,7 @@
     <string name="accessibility_volume_expand" msgid="5946812790999244205">"Espandi"</string>
     <string name="accessibility_volume_collapse" msgid="3609549593031810875">"Comprimi"</string>
     <string name="screen_pinning_title" msgid="3273740381976175811">"La schermata è bloccata"</string>
-    <string name="screen_pinning_description" msgid="3577937698406151604">"La schermata rimane visibile finché non la sblocchi. Tocca Panoramica e tieni premuto Indietro per sbloccare."</string>
+    <string name="screen_pinning_description" msgid="7238941806855968768">"La schermata rimane visibile finché non la sblocchi. Tieni premuto Indietro per sbloccare."</string>
     <string name="screen_pinning_positive" msgid="3783985798366751226">"OK"</string>
     <string name="screen_pinning_negative" msgid="3741602308343880268">"No, grazie"</string>
     <string name="quick_settings_reset_confirmation_title" msgid="748792586749897883">"Nascondere <xliff:g id="TILE_LABEL">%1$s</xliff:g>?"</string>
@@ -439,15 +430,13 @@
     <string name="volumeui_prompt_allow" msgid="7954396902482228786">"Consenti"</string>
     <string name="volumeui_prompt_deny" msgid="5720663643411696731">"Nega"</string>
     <string name="volumeui_notification_title" msgid="4906770126345910955">"<xliff:g id="APP_NAME">%1$s</xliff:g> rappresenta la finestra di dialogo relativa al volume"</string>
-    <string name="volumeui_notification_text" msgid="1826889705095768656">"Tocca per ripristinare l\'originale."</string>
+    <string name="volumeui_notification_text" msgid="8819536904234337445">"Tocca per ripristinare l\'originale."</string>
     <string name="managed_profile_foreground_toast" msgid="5421487114739245972">"Stai utilizzando il profilo di lavoro"</string>
     <string name="volume_stream_content_description_unmute" msgid="4436631538779230857">"%1$s. Tocca per riattivare l\'audio."</string>
     <string name="volume_stream_content_description_vibrate" msgid="1187944970457807498">"%1$s. Tocca per attivare la vibrazione. L\'audio dei servizi di accessibilità può essere disattivato."</string>
     <string name="volume_stream_content_description_mute" msgid="3625049841390467354">"%1$s. Tocca per disattivare l\'audio. L\'audio dei servizi di accessibilità può essere disattivato."</string>
-    <!-- no translation found for volume_dialog_accessibility_shown_message (1834631467074259998) -->
-    <skip />
-    <!-- no translation found for volume_dialog_accessibility_dismissed_message (51543526013711399) -->
-    <skip />
+    <string name="volume_dialog_accessibility_shown_message" msgid="1834631467074259998">"%s comandi del volume mostrati. Fai scorrere verso l\'alto per ignorare."</string>
+    <string name="volume_dialog_accessibility_dismissed_message" msgid="51543526013711399">"Comandi del volume nascosti"</string>
     <string name="system_ui_tuner" msgid="708224127392452018">"Sintetizzatore interfaccia utente di sistema"</string>
     <string name="show_battery_percentage" msgid="5444136600512968798">"Mostra percentuale batteria incorporata"</string>
     <string name="show_battery_percentage_summary" msgid="3215025775576786037">"Mostra la percentuale di carica della batteria nell\'icona della barra di stato quando non è in carica"</string>
@@ -643,27 +632,17 @@
     <string name="accessibility_qs_edit_tile_removed" msgid="8584304916627913440">"Il riquadro <xliff:g id="TILE_NAME">%1$s</xliff:g> è stato rimosso"</string>
     <string name="accessibility_qs_edit_tile_moved" msgid="4343693412689365038">"Il riquadro <xliff:g id="TILE_NAME">%1$s</xliff:g> è stato spostato nella posizione <xliff:g id="POSITION">%2$d</xliff:g>"</string>
     <string name="accessibility_desc_quick_settings_edit" msgid="8073587401747016103">"Editor di impostazioni rapide."</string>
-    <!-- no translation found for accessibility_desc_notification_icon (8352414185263916335) -->
-    <skip />
+    <string name="accessibility_desc_notification_icon" msgid="8352414185263916335">"Notifica di <xliff:g id="ID_1">%1$s</xliff:g>: <xliff:g id="ID_2">%2$s</xliff:g>"</string>
     <string name="dock_forced_resizable" msgid="5914261505436217520">"L\'app potrebbe non funzionare con lo schermo diviso."</string>
     <string name="dock_non_resizeble_failed_to_dock_text" msgid="3871617304250207291">"L\'app non supporta la modalità Schermo diviso."</string>
-    <!-- no translation found for accessibility_quick_settings_settings (6132460890024942157) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_expand (2375165227880477530) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_collapse (1792625797142648105) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_alarm_set (1863000242431528676) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_user (1567445362870421770) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_no_internet (31890692343084075) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_open_details (4230931801728005194) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_open_settings (7806613775728380737) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_edit (7839992848995240393) -->
-    <skip />
+    <string name="accessibility_quick_settings_settings" msgid="6132460890024942157">"Apri le impostazioni."</string>
+    <string name="accessibility_quick_settings_expand" msgid="2375165227880477530">"Apri le impostazioni rapide."</string>
+    <string name="accessibility_quick_settings_collapse" msgid="1792625797142648105">"Chiudi le impostazioni rapide."</string>
+    <string name="accessibility_quick_settings_alarm_set" msgid="1863000242431528676">"Sveglia impostata."</string>
+    <string name="accessibility_quick_settings_user" msgid="1567445362870421770">"Accesso eseguito come <xliff:g id="ID_1">%s</xliff:g>"</string>
+    <string name="accessibility_quick_settings_no_internet" msgid="31890692343084075">"Nessuna connessione Internet."</string>
+    <string name="accessibility_quick_settings_open_details" msgid="4230931801728005194">"Apri i dettagli."</string>
+    <string name="accessibility_quick_settings_open_settings" msgid="7806613775728380737">"Apri le impostazioni <xliff:g id="ID_1">%s</xliff:g>."</string>
+    <string name="accessibility_quick_settings_edit" msgid="7839992848995240393">"Modifica l\'ordine delle impostazioni."</string>
     <string name="accessibility_quick_settings_page" msgid="5032979051755200721">"Pagina <xliff:g id="ID_1">%1$d</xliff:g> di <xliff:g id="ID_2">%2$d</xliff:g>"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-it/strings_tv.xml b/packages/SystemUI/res/values-it/strings_tv.xml
index 954d4ff..8c47e56 100644
--- a/packages/SystemUI/res/values-it/strings_tv.xml
+++ b/packages/SystemUI/res/values-it/strings_tv.xml
@@ -24,10 +24,8 @@
     <string name="pip_play" msgid="674145557658227044">"Riproduci"</string>
     <string name="pip_pause" msgid="8412075640017218862">"Pausa"</string>
     <string name="pip_hold_home" msgid="340086535668778109">"Tieni premuto "<b>"HOME"</b>" per controllare PIP"</string>
-    <!-- no translation found for pip_onboarding_title (7850436557670253991) -->
-    <skip />
-    <!-- no translation found for pip_onboarding_description (4028124563309465267) -->
-    <skip />
+    <string name="pip_onboarding_title" msgid="7850436557670253991">"Picture-in-picture"</string>
+    <string name="pip_onboarding_description" msgid="4028124563309465267">"Il video rimane visualizzato fino alla riproduzione di un altro video. Tieni premuto "<b>"HOME"</b>" per controllare la funzione."</string>
     <string name="pip_onboarding_button" msgid="3957426748484904611">"OK"</string>
     <string name="recents_tv_dismiss" msgid="3555093879593377731">"Ignora"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-iw/strings.xml b/packages/SystemUI/res/values-iw/strings.xml
index 0e8b4c0..087d933 100644
--- a/packages/SystemUI/res/values-iw/strings.xml
+++ b/packages/SystemUI/res/values-iw/strings.xml
@@ -73,7 +73,7 @@
     <string name="screenshot_saving_title" msgid="8242282144535555697">"שומר צילום מסך..."</string>
     <string name="screenshot_saving_text" msgid="2419718443411738818">"מתבצעת שמירה של צילום המסך."</string>
     <string name="screenshot_saved_title" msgid="6461865960961414961">"צילום המסך בוצע."</string>
-    <string name="screenshot_saved_text" msgid="1152839647677558815">"גע כדי להציג את צילום המסך שלך"</string>
+    <string name="screenshot_saved_text" msgid="2685605830386712477">"הקש כדי להציג את צילום המסך שלך."</string>
     <string name="screenshot_failed_title" msgid="705781116746922771">"לא ניתן לבצע צילום מסך."</string>
     <string name="screenshot_failed_to_save_unknown_text" msgid="7887826345701753830">"התגלתה בעיה בשמירת צילום מסך."</string>
     <string name="screenshot_failed_to_save_text" msgid="2592658083866306296">"לא ניתן לשמור צילום מסך עקב שטח אחסון מוגבל."</string>
@@ -120,8 +120,7 @@
     <string name="accessibility_data_signal_full" msgid="2708384608124519369">"אות הנתונים מלא."</string>
     <string name="accessibility_wifi_name" msgid="7202151365171148501">"מחובר אל <xliff:g id="WIFI">%s</xliff:g>."</string>
     <string name="accessibility_bluetooth_name" msgid="8441517146585531676">"מחובר אל <xliff:g id="BLUETOOTH">%s</xliff:g>."</string>
-    <!-- no translation found for accessibility_cast_name (4026393061247081201) -->
-    <skip />
+    <string name="accessibility_cast_name" msgid="4026393061247081201">"מחובר אל <xliff:g id="CAST">%s</xliff:g>."</string>
     <string name="accessibility_no_wimax" msgid="4329180129727630368">"‏ללא WiMAX."</string>
     <string name="accessibility_wimax_one_bar" msgid="4170994299011863648">"‏פס אחד של WiMAX."</string>
     <string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"‏שני פסים של WiMAX."</string>
@@ -152,17 +151,14 @@
     <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"קצה"</string>
     <string name="accessibility_data_connection_wifi" msgid="2324496756590645221">"Wi-Fi"</string>
     <string name="accessibility_no_sim" msgid="8274017118472455155">"‏אין כרטיס SIM."</string>
-    <!-- no translation found for accessibility_cell_data (7080312242791850520) -->
-    <skip />
-    <!-- no translation found for accessibility_cell_data_on (4310018593519761767) -->
-    <skip />
+    <string name="accessibility_cell_data" msgid="7080312242791850520">"נתונים סלולריים"</string>
+    <string name="accessibility_cell_data_on" msgid="4310018593519761767">"נתונים סלולריים פועלים"</string>
     <string name="accessibility_cell_data_off" msgid="8000803571751407635">"הנתונים הסלולריים כבויים"</string>
     <string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"‏שיתוף אינטרנט דרך Bluetooth"</string>
     <string name="accessibility_airplane_mode" msgid="834748999790763092">"מצב טיסה"</string>
     <string name="accessibility_no_sims" msgid="3957997018324995781">"‏אין כרטיס SIM."</string>
     <string name="accessibility_carrier_network_change_mode" msgid="4017301580441304305">"רשת ספק משתנה."</string>
-    <!-- no translation found for accessibility_battery_details (7645516654955025422) -->
-    <skip />
+    <string name="accessibility_battery_details" msgid="7645516654955025422">"פתיחת פרטי סוללה"</string>
     <string name="accessibility_battery_level" msgid="7451474187113371965">"<xliff:g id="NUMBER">%d</xliff:g> אחוזים של סוללה."</string>
     <string name="accessibility_battery_level_charging" msgid="1147587904439319646">"טעינת סוללה, <xliff:g id="BATTERY_PERCENTAGE">%d</xliff:g> אחוז."</string>
     <string name="accessibility_settings_button" msgid="799583911231893380">"הגדרות מערכת"</string>
@@ -202,13 +198,11 @@
     <string name="accessibility_quick_settings_dnd_priority_on" msgid="1448402297221249355">"\'נא לא להפריע\' פועל. הודעות בעדיפות בלבד."</string>
     <string name="accessibility_quick_settings_dnd_none_on" msgid="6882582132662613537">"\'נא לא להפריע\' פועל. שקט מוחלט."</string>
     <string name="accessibility_quick_settings_dnd_alarms_on" msgid="9152834845587554157">"\'נא לא להפריע\' הופעל. התראות בלבד."</string>
-    <!-- no translation found for accessibility_quick_settings_dnd (6607873236717185815) -->
-    <skip />
+    <string name="accessibility_quick_settings_dnd" msgid="6607873236717185815">"נא לא להפריע."</string>
     <string name="accessibility_quick_settings_dnd_off" msgid="2371832603753738581">"\'נא לא להפריע\' כבוי."</string>
     <string name="accessibility_quick_settings_dnd_changed_off" msgid="898107593453022935">"\'נא לא להפריע\' כבוי."</string>
     <string name="accessibility_quick_settings_dnd_changed_on" msgid="4483780856613561039">"\'נא לא להפריע\' פועל."</string>
-    <!-- no translation found for accessibility_quick_settings_bluetooth (6341675755803320038) -->
-    <skip />
+    <string name="accessibility_quick_settings_bluetooth" msgid="6341675755803320038">"Bluetooth."</string>
     <string name="accessibility_quick_settings_bluetooth_off" msgid="2133631372372064339">"‏Bluetooth כבוי."</string>
     <string name="accessibility_quick_settings_bluetooth_on" msgid="7681999166216621838">"‏Bluetooth מופעל."</string>
     <string name="accessibility_quick_settings_bluetooth_connecting" msgid="6953242966685343855">"‏Bluetooth מתחבר."</string>
@@ -274,10 +268,8 @@
     <string name="quick_settings_bluetooth_detail_empty_text" msgid="4910015762433302860">"אין מכשירים מותאמים זמינים"</string>
     <string name="quick_settings_brightness_label" msgid="6968372297018755815">"בהירות"</string>
     <string name="quick_settings_rotation_unlocked_label" msgid="7305323031808150099">"סיבוב אוטומטי"</string>
-    <!-- no translation found for accessibility_quick_settings_rotation (4231661040698488779) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_rotation_value (1428962304214992318) -->
-    <skip />
+    <string name="accessibility_quick_settings_rotation" msgid="4231661040698488779">"סיבוב אוטומטי של המסך"</string>
+    <string name="accessibility_quick_settings_rotation_value" msgid="1428962304214992318">"מכוון למצב <xliff:g id="ID_1">%s</xliff:g>"</string>
     <string name="quick_settings_rotation_locked_label" msgid="6359205706154282377">"סיבוב נעול"</string>
     <string name="quick_settings_rotation_locked_portrait_label" msgid="5102691921442135053">"לאורך"</string>
     <string name="quick_settings_rotation_locked_landscape_label" msgid="8553157770061178719">"לרוחב"</string>
@@ -296,8 +288,7 @@
     <string name="quick_settings_wifi_not_connected" msgid="7171904845345573431">"לא מחובר"</string>
     <string name="quick_settings_wifi_no_network" msgid="2221993077220856376">"אין רשת"</string>
     <string name="quick_settings_wifi_off_label" msgid="7558778100843885864">"‏Wi-Fi כבוי"</string>
-    <!-- no translation found for quick_settings_wifi_on_label (7607810331387031235) -->
-    <skip />
+    <string name="quick_settings_wifi_on_label" msgid="7607810331387031235">"‏Wi-Fi פועל"</string>
     <string name="quick_settings_wifi_detail_empty_text" msgid="269990350383909226">"‏אין רשתות Wi-Fi זמינות"</string>
     <string name="quick_settings_cast_title" msgid="7709016546426454729">"Cast"</string>
     <string name="quick_settings_casting" msgid="6601710681033353316">"מעביר"</string>
@@ -351,7 +342,7 @@
     <string name="zen_silence_introduction" msgid="3137882381093271568">"פעולה זו מבטלת את כל הצלילים והרטט, כולל בהתראות, מוזיקה, סרטונים ומשחקים."</string>
     <string name="keyguard_more_overflow_text" msgid="9195222469041601365">"+<xliff:g id="NUMBER_OF_NOTIFICATIONS">%d</xliff:g>"</string>
     <string name="speed_bump_explanation" msgid="1288875699658819755">"הודעות בדחיפות נמוכה יותר בהמשך"</string>
-    <string name="notification_tap_again" msgid="8524949573675922138">"גע שוב כדי לפתוח"</string>
+    <string name="notification_tap_again" msgid="7590196980943943842">"הקש שוב כדי לפתוח"</string>
     <string name="keyguard_unlock" msgid="8043466894212841998">"החלק מעלה כדי לבטל את הנעילה"</string>
     <string name="phone_hint" msgid="4872890986869209950">"החלק מהסמל כדי להפעיל את הטלפון"</string>
     <string name="voice_hint" msgid="8939888732119726665">"החלק מהסמל כדי להפעיל את המסייע הקולי"</string>
@@ -429,7 +420,7 @@
     <string name="accessibility_volume_expand" msgid="5946812790999244205">"הרחב"</string>
     <string name="accessibility_volume_collapse" msgid="3609549593031810875">"כווץ"</string>
     <string name="screen_pinning_title" msgid="3273740381976175811">"המסך מוצמד"</string>
-    <string name="screen_pinning_description" msgid="3577937698406151604">"שומר בתצוגה עד לביטול ההצמדה. גע והחזק בו-זמנית ב\'הקודם\' כדי לבטל הצמדה."</string>
+    <string name="screen_pinning_description" msgid="7238941806855968768">"שומר בתצוגה עד לביטול ההצמדה. גע והחזק בו-זמנית בלחצן \'הקודם\' כדי לבטל הצמדה."</string>
     <string name="screen_pinning_positive" msgid="3783985798366751226">"הבנתי"</string>
     <string name="screen_pinning_negative" msgid="3741602308343880268">"לא, תודה"</string>
     <string name="quick_settings_reset_confirmation_title" msgid="748792586749897883">"להסתיר<xliff:g id="TILE_LABEL">%1$s</xliff:g>?"</string>
@@ -439,15 +430,13 @@
     <string name="volumeui_prompt_allow" msgid="7954396902482228786">"התר"</string>
     <string name="volumeui_prompt_deny" msgid="5720663643411696731">"דחה"</string>
     <string name="volumeui_notification_title" msgid="4906770126345910955">"<xliff:g id="APP_NAME">%1$s</xliff:g> הוא תיבת הדו-שיח של עוצמת הקול"</string>
-    <string name="volumeui_notification_text" msgid="1826889705095768656">"גע כדי לשחזר את עוצמת הקול המקורית."</string>
+    <string name="volumeui_notification_text" msgid="8819536904234337445">"הקש כדי לשחזר את המקור."</string>
     <string name="managed_profile_foreground_toast" msgid="5421487114739245972">"אתה משתמש בפרופיל העבודה שלך"</string>
     <string name="volume_stream_content_description_unmute" msgid="4436631538779230857">"‏%1$s. הקש כדי לבטל את ההשתקה."</string>
     <string name="volume_stream_content_description_vibrate" msgid="1187944970457807498">"‏%1$s. הקש כדי להגדיר רטט. ייתכן ששירותי הנגישות מושתקים."</string>
     <string name="volume_stream_content_description_mute" msgid="3625049841390467354">"‏%1$s. הקש כדי להשתיק. ייתכן ששירותי הנגישות מושתקים."</string>
-    <!-- no translation found for volume_dialog_accessibility_shown_message (1834631467074259998) -->
-    <skip />
-    <!-- no translation found for volume_dialog_accessibility_dismissed_message (51543526013711399) -->
-    <skip />
+    <string name="volume_dialog_accessibility_shown_message" msgid="1834631467074259998">"‏%s פקדי עוצמת הקול גלויים. החלק כלפי מעלה כדי לסגור."</string>
+    <string name="volume_dialog_accessibility_dismissed_message" msgid="51543526013711399">"פקדי עוצמת הקול מוסתרים"</string>
     <string name="system_ui_tuner" msgid="708224127392452018">"System UI Tuner"</string>
     <string name="show_battery_percentage" msgid="5444136600512968798">"הצג בשורת הסטטוס את אחוז עוצמת הסוללה"</string>
     <string name="show_battery_percentage_summary" msgid="3215025775576786037">"הצג את אחוז עוצמת הסוללה בתוך הסמל שבשורת הסטטוס כשהמכשיר אינו בטעינה"</string>
@@ -643,27 +632,17 @@
     <string name="accessibility_qs_edit_tile_removed" msgid="8584304916627913440">"<xliff:g id="TILE_NAME">%1$s</xliff:g> הוסר"</string>
     <string name="accessibility_qs_edit_tile_moved" msgid="4343693412689365038">"<xliff:g id="TILE_NAME">%1$s</xliff:g> הועבר למיקום <xliff:g id="POSITION">%2$d</xliff:g>"</string>
     <string name="accessibility_desc_quick_settings_edit" msgid="8073587401747016103">"עורך הגדרות מהירות."</string>
-    <!-- no translation found for accessibility_desc_notification_icon (8352414185263916335) -->
-    <skip />
+    <string name="accessibility_desc_notification_icon" msgid="8352414185263916335">"הודעת <xliff:g id="ID_1">%1$s</xliff:g>: <xliff:g id="ID_2">%2$s</xliff:g>"</string>
     <string name="dock_forced_resizable" msgid="5914261505436217520">"ייתכן שהיישום לא יפעל עם מסך מפוצל."</string>
     <string name="dock_non_resizeble_failed_to_dock_text" msgid="3871617304250207291">"האפליקציה אינה תומכת במסך מפוצל."</string>
-    <!-- no translation found for accessibility_quick_settings_settings (6132460890024942157) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_expand (2375165227880477530) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_collapse (1792625797142648105) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_alarm_set (1863000242431528676) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_user (1567445362870421770) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_no_internet (31890692343084075) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_open_details (4230931801728005194) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_open_settings (7806613775728380737) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_edit (7839992848995240393) -->
-    <skip />
+    <string name="accessibility_quick_settings_settings" msgid="6132460890024942157">"פתיחת הגדרות."</string>
+    <string name="accessibility_quick_settings_expand" msgid="2375165227880477530">"פתיחה של \'הגדרות מהירות\'."</string>
+    <string name="accessibility_quick_settings_collapse" msgid="1792625797142648105">"סגירה של \'הגדרות מהירות\'."</string>
+    <string name="accessibility_quick_settings_alarm_set" msgid="1863000242431528676">"הגדרת התראה."</string>
+    <string name="accessibility_quick_settings_user" msgid="1567445362870421770">"מחובר בתור <xliff:g id="ID_1">%s</xliff:g>"</string>
+    <string name="accessibility_quick_settings_no_internet" msgid="31890692343084075">"אין אינטרנט."</string>
+    <string name="accessibility_quick_settings_open_details" msgid="4230931801728005194">"פתיחת פרטים."</string>
+    <string name="accessibility_quick_settings_open_settings" msgid="7806613775728380737">"פתיחת הגדרות של <xliff:g id="ID_1">%s</xliff:g>."</string>
+    <string name="accessibility_quick_settings_edit" msgid="7839992848995240393">"עריכת סדר ההגדרות."</string>
     <string name="accessibility_quick_settings_page" msgid="5032979051755200721">"דף <xliff:g id="ID_1">%1$d</xliff:g> מתוך <xliff:g id="ID_2">%2$d</xliff:g>"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-iw/strings_tv.xml b/packages/SystemUI/res/values-iw/strings_tv.xml
index 738bd4d..eea7a91 100644
--- a/packages/SystemUI/res/values-iw/strings_tv.xml
+++ b/packages/SystemUI/res/values-iw/strings_tv.xml
@@ -24,10 +24,8 @@
     <string name="pip_play" msgid="674145557658227044">"הפעל"</string>
     <string name="pip_pause" msgid="8412075640017218862">"השהה"</string>
     <string name="pip_hold_home" msgid="340086535668778109">"‏לחץ לחיצה ארוכה על "<b>"דף הבית"</b>" כדי לשלוט ב-PIP"</string>
-    <!-- no translation found for pip_onboarding_title (7850436557670253991) -->
-    <skip />
-    <!-- no translation found for pip_onboarding_description (4028124563309465267) -->
-    <skip />
+    <string name="pip_onboarding_title" msgid="7850436557670253991">"תמונה בתוך תמונה"</string>
+    <string name="pip_onboarding_description" msgid="4028124563309465267">"תכונה זו שומרת על תצוגת הסרטון עד שתפעיל סרטון אחר. לחץ לחיצה ממושכת על לחצן ה"<b>"בית"</b>" כדי לשלוט בתכונה."</string>
     <string name="pip_onboarding_button" msgid="3957426748484904611">"הבנתי"</string>
     <string name="recents_tv_dismiss" msgid="3555093879593377731">"דחה"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-ja/strings.xml b/packages/SystemUI/res/values-ja/strings.xml
index 7a25aed..aa27fff 100644
--- a/packages/SystemUI/res/values-ja/strings.xml
+++ b/packages/SystemUI/res/values-ja/strings.xml
@@ -71,7 +71,7 @@
     <string name="screenshot_saving_title" msgid="8242282144535555697">"スクリーンショットを保存しています..."</string>
     <string name="screenshot_saving_text" msgid="2419718443411738818">"スクリーンショットを保存しています。"</string>
     <string name="screenshot_saved_title" msgid="6461865960961414961">"スクリーンショットを取得しました。"</string>
-    <string name="screenshot_saved_text" msgid="1152839647677558815">"タップしてスクリーンショットを表示します。"</string>
+    <string name="screenshot_saved_text" msgid="2685605830386712477">"タップするとスクリーンショットが表示されます。"</string>
     <string name="screenshot_failed_title" msgid="705781116746922771">"スクリーンショットをキャプチャできませんでした。"</string>
     <string name="screenshot_failed_to_save_unknown_text" msgid="7887826345701753830">"スクリーンショットの保存中に問題が発生しました。"</string>
     <string name="screenshot_failed_to_save_text" msgid="2592658083866306296">"空き容量が足りないため、スクリーンショットを保存できません。"</string>
@@ -118,8 +118,7 @@
     <string name="accessibility_data_signal_full" msgid="2708384608124519369">"データ信号:フル"</string>
     <string name="accessibility_wifi_name" msgid="7202151365171148501">"<xliff:g id="WIFI">%s</xliff:g>に接続しました。"</string>
     <string name="accessibility_bluetooth_name" msgid="8441517146585531676">"<xliff:g id="BLUETOOTH">%s</xliff:g>に接続しました。"</string>
-    <!-- no translation found for accessibility_cast_name (4026393061247081201) -->
-    <skip />
+    <string name="accessibility_cast_name" msgid="4026393061247081201">"<xliff:g id="CAST">%s</xliff:g>に接続されています。"</string>
     <string name="accessibility_no_wimax" msgid="4329180129727630368">"WiMAX電波状態:圏外"</string>
     <string name="accessibility_wimax_one_bar" msgid="4170994299011863648">"WiMAX電波状態:レベル1"</string>
     <string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"WiMAX電波状態:レベル2"</string>
@@ -150,17 +149,14 @@
     <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"EDGE"</string>
     <string name="accessibility_data_connection_wifi" msgid="2324496756590645221">"Wi-Fi"</string>
     <string name="accessibility_no_sim" msgid="8274017118472455155">"SIMがありません。"</string>
-    <!-- no translation found for accessibility_cell_data (7080312242791850520) -->
-    <skip />
-    <!-- no translation found for accessibility_cell_data_on (4310018593519761767) -->
-    <skip />
+    <string name="accessibility_cell_data" msgid="7080312242791850520">"モバイルデータ"</string>
+    <string name="accessibility_cell_data_on" msgid="4310018593519761767">"モバイルデータは ON です"</string>
     <string name="accessibility_cell_data_off" msgid="8000803571751407635">"モバイルデータ OFF"</string>
     <string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"Bluetoothテザリング。"</string>
     <string name="accessibility_airplane_mode" msgid="834748999790763092">"機内モード。"</string>
     <string name="accessibility_no_sims" msgid="3957997018324995781">"SIMカードが挿入されていません。"</string>
     <string name="accessibility_carrier_network_change_mode" msgid="4017301580441304305">"携帯通信会社のネットワークを変更します。"</string>
-    <!-- no translation found for accessibility_battery_details (7645516654955025422) -->
-    <skip />
+    <string name="accessibility_battery_details" msgid="7645516654955025422">"電池の詳細情報を開きます"</string>
     <string name="accessibility_battery_level" msgid="7451474187113371965">"電池残量: <xliff:g id="NUMBER">%d</xliff:g>パーセント"</string>
     <!-- String.format failed for translation -->
     <!-- no translation found for accessibility_battery_level_charging (1147587904439319646) -->
@@ -202,13 +198,11 @@
     <string name="accessibility_quick_settings_dnd_priority_on" msgid="1448402297221249355">"[通知を非表示]はONで、優先する通知のみです。"</string>
     <string name="accessibility_quick_settings_dnd_none_on" msgid="6882582132662613537">"[通知を非表示]はONで、サイレントです。"</string>
     <string name="accessibility_quick_settings_dnd_alarms_on" msgid="9152834845587554157">"[通知を非表示]はONで、アラームのみです。"</string>
-    <!-- no translation found for accessibility_quick_settings_dnd (6607873236717185815) -->
-    <skip />
+    <string name="accessibility_quick_settings_dnd" msgid="6607873236717185815">"通知を非表示"</string>
     <string name="accessibility_quick_settings_dnd_off" msgid="2371832603753738581">"[通知を非表示]はOFFです。"</string>
     <string name="accessibility_quick_settings_dnd_changed_off" msgid="898107593453022935">"[通知を非表示]をOFFにしました。"</string>
     <string name="accessibility_quick_settings_dnd_changed_on" msgid="4483780856613561039">"[通知を非表示]をONにしました。"</string>
-    <!-- no translation found for accessibility_quick_settings_bluetooth (6341675755803320038) -->
-    <skip />
+    <string name="accessibility_quick_settings_bluetooth" msgid="6341675755803320038">"Bluetooth"</string>
     <string name="accessibility_quick_settings_bluetooth_off" msgid="2133631372372064339">"BluetoothがOFFです。"</string>
     <string name="accessibility_quick_settings_bluetooth_on" msgid="7681999166216621838">"BluetoothがONです。"</string>
     <string name="accessibility_quick_settings_bluetooth_connecting" msgid="6953242966685343855">"Bluetoothに接続しています。"</string>
@@ -274,10 +268,8 @@
     <string name="quick_settings_bluetooth_detail_empty_text" msgid="4910015762433302860">"ペア設定されたデバイスがありません"</string>
     <string name="quick_settings_brightness_label" msgid="6968372297018755815">"画面の明るさ"</string>
     <string name="quick_settings_rotation_unlocked_label" msgid="7305323031808150099">"自動回転"</string>
-    <!-- no translation found for accessibility_quick_settings_rotation (4231661040698488779) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_rotation_value (1428962304214992318) -->
-    <skip />
+    <string name="accessibility_quick_settings_rotation" msgid="4231661040698488779">"画面を自動回転します"</string>
+    <string name="accessibility_quick_settings_rotation_value" msgid="1428962304214992318">"[<xliff:g id="ID_1">%s</xliff:g>] に設定します"</string>
     <string name="quick_settings_rotation_locked_label" msgid="6359205706154282377">"画面の向きをロック"</string>
     <string name="quick_settings_rotation_locked_portrait_label" msgid="5102691921442135053">"縦向き"</string>
     <string name="quick_settings_rotation_locked_landscape_label" msgid="8553157770061178719">"横向き"</string>
@@ -296,8 +288,7 @@
     <string name="quick_settings_wifi_not_connected" msgid="7171904845345573431">"接続されていません"</string>
     <string name="quick_settings_wifi_no_network" msgid="2221993077220856376">"ネットワークなし"</string>
     <string name="quick_settings_wifi_off_label" msgid="7558778100843885864">"Wi-Fi OFF"</string>
-    <!-- no translation found for quick_settings_wifi_on_label (7607810331387031235) -->
-    <skip />
+    <string name="quick_settings_wifi_on_label" msgid="7607810331387031235">"Wi-Fi: ON"</string>
     <string name="quick_settings_wifi_detail_empty_text" msgid="269990350383909226">"Wi-Fiネットワークを利用できません"</string>
     <string name="quick_settings_cast_title" msgid="7709016546426454729">"キャスト"</string>
     <string name="quick_settings_casting" msgid="6601710681033353316">"キャストしています"</string>
@@ -351,7 +342,7 @@
     <string name="zen_silence_introduction" msgid="3137882381093271568">"アラーム、音楽、動画、ゲームを含むすべての音とバイブレーションがブロックされます。"</string>
     <string name="keyguard_more_overflow_text" msgid="9195222469041601365">"+<xliff:g id="NUMBER_OF_NOTIFICATIONS">%d</xliff:g>"</string>
     <string name="speed_bump_explanation" msgid="1288875699658819755">"緊急度の低い通知を下に表示"</string>
-    <string name="notification_tap_again" msgid="8524949573675922138">"開くにはもう一度タップしてください"</string>
+    <string name="notification_tap_again" msgid="7590196980943943842">"開くにはもう一度タップしてください"</string>
     <string name="keyguard_unlock" msgid="8043466894212841998">"ロック解除するには上にスワイプしてください"</string>
     <string name="phone_hint" msgid="4872890986869209950">"右にスワイプして通話"</string>
     <string name="voice_hint" msgid="8939888732119726665">"アイコンからスワイプして音声アシストを起動"</string>
@@ -429,7 +420,7 @@
     <string name="accessibility_volume_expand" msgid="5946812790999244205">"展開"</string>
     <string name="accessibility_volume_collapse" msgid="3609549593031810875">"折りたたむ"</string>
     <string name="screen_pinning_title" msgid="3273740381976175811">"画面が固定されました"</string>
-    <string name="screen_pinning_description" msgid="3577937698406151604">"固定を解除するまで画面が常に表示されるようになります。[戻る]を押し続けると固定が解除されます。"</string>
+    <string name="screen_pinning_description" msgid="7238941806855968768">"固定を解除するまで画面が常に表示されるようになります。固定を解除するには [戻る] を押し続けます。"</string>
     <string name="screen_pinning_positive" msgid="3783985798366751226">"はい"</string>
     <string name="screen_pinning_negative" msgid="3741602308343880268">"いいえ"</string>
     <string name="quick_settings_reset_confirmation_title" msgid="748792586749897883">"<xliff:g id="TILE_LABEL">%1$s</xliff:g>を非表示にしますか?"</string>
@@ -439,15 +430,13 @@
     <string name="volumeui_prompt_allow" msgid="7954396902482228786">"許可"</string>
     <string name="volumeui_prompt_deny" msgid="5720663643411696731">"許可しない"</string>
     <string name="volumeui_notification_title" msgid="4906770126345910955">"<xliff:g id="APP_NAME">%1$s</xliff:g>を音量ダイアログとして使用"</string>
-    <string name="volumeui_notification_text" msgid="1826889705095768656">"タップすると元の音量ダイアログが復元されます。"</string>
+    <string name="volumeui_notification_text" msgid="8819536904234337445">"タップすると元に戻ります。"</string>
     <string name="managed_profile_foreground_toast" msgid="5421487114739245972">"仕事用プロファイルを使用しています"</string>
     <string name="volume_stream_content_description_unmute" msgid="4436631538779230857">"%1$s。タップしてミュートを解除します。"</string>
     <string name="volume_stream_content_description_vibrate" msgid="1187944970457807498">"%1$s。タップしてバイブレーションに設定します。ユーザー補助機能サービスがミュートされる場合があります。"</string>
     <string name="volume_stream_content_description_mute" msgid="3625049841390467354">"%1$s。タップしてミュートします。ユーザー補助機能サービスがミュートされる場合があります。"</string>
-    <!-- no translation found for volume_dialog_accessibility_shown_message (1834631467074259998) -->
-    <skip />
-    <!-- no translation found for volume_dialog_accessibility_dismissed_message (51543526013711399) -->
-    <skip />
+    <string name="volume_dialog_accessibility_shown_message" msgid="1834631467074259998">"%s の音量調節が表示されています。閉じるには、上にスワイプします。"</string>
+    <string name="volume_dialog_accessibility_dismissed_message" msgid="51543526013711399">"音量調節を非表示にしました"</string>
     <string name="system_ui_tuner" msgid="708224127392452018">"システムUI調整ツール"</string>
     <string name="show_battery_percentage" msgid="5444136600512968798">"内蔵電池の残量の割合を表示する"</string>
     <string name="show_battery_percentage_summary" msgid="3215025775576786037">"充電していないときには電池残量の割合をステータスバーアイコンに表示する"</string>
@@ -643,27 +632,17 @@
     <string name="accessibility_qs_edit_tile_removed" msgid="8584304916627913440">"<xliff:g id="TILE_NAME">%1$s</xliff:g> を削除しました"</string>
     <string name="accessibility_qs_edit_tile_moved" msgid="4343693412689365038">"<xliff:g id="TILE_NAME">%1$s</xliff:g> をポジション <xliff:g id="POSITION">%2$d</xliff:g> に移動しました"</string>
     <string name="accessibility_desc_quick_settings_edit" msgid="8073587401747016103">"クイック設定エディタ"</string>
-    <!-- no translation found for accessibility_desc_notification_icon (8352414185263916335) -->
-    <skip />
+    <string name="accessibility_desc_notification_icon" msgid="8352414185263916335">"<xliff:g id="ID_1">%1$s</xliff:g> の通知: <xliff:g id="ID_2">%2$s</xliff:g>"</string>
     <string name="dock_forced_resizable" msgid="5914261505436217520">"アプリは分割画面では動作しないことがあります。"</string>
     <string name="dock_non_resizeble_failed_to_dock_text" msgid="3871617304250207291">"アプリで分割画面がサポートされていません。"</string>
-    <!-- no translation found for accessibility_quick_settings_settings (6132460890024942157) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_expand (2375165227880477530) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_collapse (1792625797142648105) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_alarm_set (1863000242431528676) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_user (1567445362870421770) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_no_internet (31890692343084075) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_open_details (4230931801728005194) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_open_settings (7806613775728380737) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_edit (7839992848995240393) -->
-    <skip />
+    <string name="accessibility_quick_settings_settings" msgid="6132460890024942157">"設定を開きます。"</string>
+    <string name="accessibility_quick_settings_expand" msgid="2375165227880477530">"クイック設定を開きます。"</string>
+    <string name="accessibility_quick_settings_collapse" msgid="1792625797142648105">"クイック設定を閉じます。"</string>
+    <string name="accessibility_quick_settings_alarm_set" msgid="1863000242431528676">"アラームを設定しました。"</string>
+    <string name="accessibility_quick_settings_user" msgid="1567445362870421770">"<xliff:g id="ID_1">%s</xliff:g> としてログインします"</string>
+    <string name="accessibility_quick_settings_no_internet" msgid="31890692343084075">"インターネットに接続されていません。"</string>
+    <string name="accessibility_quick_settings_open_details" msgid="4230931801728005194">"詳細情報を開きます。"</string>
+    <string name="accessibility_quick_settings_open_settings" msgid="7806613775728380737">"<xliff:g id="ID_1">%s</xliff:g> の設定を開きます。"</string>
+    <string name="accessibility_quick_settings_edit" msgid="7839992848995240393">"設定の順序を編集します。"</string>
     <string name="accessibility_quick_settings_page" msgid="5032979051755200721">"ページ <xliff:g id="ID_1">%1$d</xliff:g>/<xliff:g id="ID_2">%2$d</xliff:g>"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-ja/strings_tv.xml b/packages/SystemUI/res/values-ja/strings_tv.xml
index 210c15d..85cddf4 100644
--- a/packages/SystemUI/res/values-ja/strings_tv.xml
+++ b/packages/SystemUI/res/values-ja/strings_tv.xml
@@ -24,10 +24,8 @@
     <string name="pip_play" msgid="674145557658227044">"再生"</string>
     <string name="pip_pause" msgid="8412075640017218862">"一時停止"</string>
     <string name="pip_hold_home" msgid="340086535668778109">"PIP を管理するには ["<b>"ホーム"</b>"] を押し続けます"</string>
-    <!-- no translation found for pip_onboarding_title (7850436557670253991) -->
-    <skip />
-    <!-- no translation found for pip_onboarding_description (4028124563309465267) -->
-    <skip />
+    <string name="pip_onboarding_title" msgid="7850436557670253991">"PIP"</string>
+    <string name="pip_onboarding_description" msgid="4028124563309465267">"これにより、別のビデオを再生するまでこのビデオが表示されます。["<b>"ホーム"</b>"] を押し続けると、操作できます。"</string>
     <string name="pip_onboarding_button" msgid="3957426748484904611">"閉じる"</string>
     <string name="recents_tv_dismiss" msgid="3555093879593377731">"閉じる"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-ka-rGE/strings.xml b/packages/SystemUI/res/values-ka-rGE/strings.xml
index eb96b10..24fc4a1 100644
--- a/packages/SystemUI/res/values-ka-rGE/strings.xml
+++ b/packages/SystemUI/res/values-ka-rGE/strings.xml
@@ -71,7 +71,7 @@
     <string name="screenshot_saving_title" msgid="8242282144535555697">"ეკრანის სურათის შენახვა…"</string>
     <string name="screenshot_saving_text" msgid="2419718443411738818">"ეკრანის სურათი შენახულია."</string>
     <string name="screenshot_saved_title" msgid="6461865960961414961">"სკრინშოტი გადაღებულია."</string>
-    <string name="screenshot_saved_text" msgid="1152839647677558815">"შეეხეთ ეკრანის სურათის სანახავად."</string>
+    <string name="screenshot_saved_text" msgid="2685605830386712477">"შეეხეთ ეკრანის ანაბეჭდის სანახავად."</string>
     <string name="screenshot_failed_title" msgid="705781116746922771">"ვერ მოხერხდა ეკრანის ანაბეჭდის გადაღება."</string>
     <string name="screenshot_failed_to_save_unknown_text" msgid="7887826345701753830">"ეკრანის ანაბეჭდის შენახვისას წარმოიქმნა პრობლემა."</string>
     <string name="screenshot_failed_to_save_text" msgid="2592658083866306296">"ეკრანის ანაბეჭდის შენახვა ვერ მოხერხდა შეზღუდული მეხსიერების გამო."</string>
@@ -118,8 +118,7 @@
     <string name="accessibility_data_signal_full" msgid="2708384608124519369">"მონაცემთა გადაცემის საიმედო სიგნალი."</string>
     <string name="accessibility_wifi_name" msgid="7202151365171148501">"დაკავშირებულია <xliff:g id="WIFI">%s</xliff:g>-თან."</string>
     <string name="accessibility_bluetooth_name" msgid="8441517146585531676">"დაკავშირებულია <xliff:g id="BLUETOOTH">%s</xliff:g>-თან."</string>
-    <!-- no translation found for accessibility_cast_name (4026393061247081201) -->
-    <skip />
+    <string name="accessibility_cast_name" msgid="4026393061247081201">"დაკავშირებულია მოწყობილობასთან: <xliff:g id="CAST">%s</xliff:g>."</string>
     <string name="accessibility_no_wimax" msgid="4329180129727630368">"WiMAX არ არის."</string>
     <string name="accessibility_wimax_one_bar" msgid="4170994299011863648">"WiMAX ერთი სვეტი."</string>
     <string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"WiMAX-ის ორი ზოლი."</string>
@@ -150,17 +149,14 @@
     <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string>
     <string name="accessibility_data_connection_wifi" msgid="2324496756590645221">"Wi-Fi"</string>
     <string name="accessibility_no_sim" msgid="8274017118472455155">"SIM არ არის."</string>
-    <!-- no translation found for accessibility_cell_data (7080312242791850520) -->
-    <skip />
-    <!-- no translation found for accessibility_cell_data_on (4310018593519761767) -->
-    <skip />
+    <string name="accessibility_cell_data" msgid="7080312242791850520">"მობილური ინტერნეტი"</string>
+    <string name="accessibility_cell_data_on" msgid="4310018593519761767">"მობილური ინტერნეტი ჩართულია"</string>
     <string name="accessibility_cell_data_off" msgid="8000803571751407635">"მობილური ინტერნეტი გამორთულია"</string>
     <string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"Bluetooth-ის ჩართვა"</string>
     <string name="accessibility_airplane_mode" msgid="834748999790763092">"თვითმფრინავის რეჟიმი"</string>
     <string name="accessibility_no_sims" msgid="3957997018324995781">"SIM ბარათი არ არის."</string>
     <string name="accessibility_carrier_network_change_mode" msgid="4017301580441304305">"ოპერატორის ქსელის შეცვლა"</string>
-    <!-- no translation found for accessibility_battery_details (7645516654955025422) -->
-    <skip />
+    <string name="accessibility_battery_details" msgid="7645516654955025422">"ბატარეის დეტალების გახსნა"</string>
     <string name="accessibility_battery_level" msgid="7451474187113371965">"ბატარეა: <xliff:g id="NUMBER">%d</xliff:g> პროცენტი."</string>
     <string name="accessibility_battery_level_charging" msgid="1147587904439319646">"ბატარეა იტენება, <xliff:g id="BATTERY_PERCENTAGE">%d</xliff:g> პროცენტი."</string>
     <string name="accessibility_settings_button" msgid="799583911231893380">"სისტემის პარამეტრები."</string>
@@ -200,13 +196,11 @@
     <string name="accessibility_quick_settings_dnd_priority_on" msgid="1448402297221249355">"ჩართულია რეჟიმი „არ შემაწუხოთ\", მხოლოდ პრიორიტეტები."</string>
     <string name="accessibility_quick_settings_dnd_none_on" msgid="6882582132662613537">"„ნუ შემაწუხებთ“ ჩართულია, სრული სიჩუმე."</string>
     <string name="accessibility_quick_settings_dnd_alarms_on" msgid="9152834845587554157">"„ნუ შემაწუხებთ“ ჩართულია, მხოლოდ გაფრთხილებები."</string>
-    <!-- no translation found for accessibility_quick_settings_dnd (6607873236717185815) -->
-    <skip />
+    <string name="accessibility_quick_settings_dnd" msgid="6607873236717185815">"არ შემაწუხოთ."</string>
     <string name="accessibility_quick_settings_dnd_off" msgid="2371832603753738581">"„არ შემაწუხოთ“ გამორთულია"</string>
     <string name="accessibility_quick_settings_dnd_changed_off" msgid="898107593453022935">"„არ შემაწუხოთ\" რეჟიმი გამორთულია."</string>
     <string name="accessibility_quick_settings_dnd_changed_on" msgid="4483780856613561039">"„არ შემაწუხოთ\" რეჟიმი ჩართულია."</string>
-    <!-- no translation found for accessibility_quick_settings_bluetooth (6341675755803320038) -->
-    <skip />
+    <string name="accessibility_quick_settings_bluetooth" msgid="6341675755803320038">"Bluetooth."</string>
     <string name="accessibility_quick_settings_bluetooth_off" msgid="2133631372372064339">"Bluetooth გამორთულია."</string>
     <string name="accessibility_quick_settings_bluetooth_on" msgid="7681999166216621838">"Bluetooth ჩართულია."</string>
     <string name="accessibility_quick_settings_bluetooth_connecting" msgid="6953242966685343855">"მიმდინარეობს Bluetooth-თან დაკავშირება."</string>
@@ -272,10 +266,8 @@
     <string name="quick_settings_bluetooth_detail_empty_text" msgid="4910015762433302860">"დაწყვილებული მოწყობილობები მიუწვდომელია"</string>
     <string name="quick_settings_brightness_label" msgid="6968372297018755815">"სიკაშკაშე"</string>
     <string name="quick_settings_rotation_unlocked_label" msgid="7305323031808150099">"ავტოროტაცია"</string>
-    <!-- no translation found for accessibility_quick_settings_rotation (4231661040698488779) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_rotation_value (1428962304214992318) -->
-    <skip />
+    <string name="accessibility_quick_settings_rotation" msgid="4231661040698488779">"ეკრანის ავტომატური შეტრიალება"</string>
+    <string name="accessibility_quick_settings_rotation_value" msgid="1428962304214992318">"დაყენებულია: <xliff:g id="ID_1">%s</xliff:g>"</string>
     <string name="quick_settings_rotation_locked_label" msgid="6359205706154282377">"როტაცია ჩაკეტილია"</string>
     <string name="quick_settings_rotation_locked_portrait_label" msgid="5102691921442135053">"პორტრეტი"</string>
     <string name="quick_settings_rotation_locked_landscape_label" msgid="8553157770061178719">"პეიზაჟის რეჟიმი"</string>
@@ -294,8 +286,7 @@
     <string name="quick_settings_wifi_not_connected" msgid="7171904845345573431">"არ არის დაკავშირებული."</string>
     <string name="quick_settings_wifi_no_network" msgid="2221993077220856376">"ქსელი არ არის"</string>
     <string name="quick_settings_wifi_off_label" msgid="7558778100843885864">"Wi-Fi გამორთულია"</string>
-    <!-- no translation found for quick_settings_wifi_on_label (7607810331387031235) -->
-    <skip />
+    <string name="quick_settings_wifi_on_label" msgid="7607810331387031235">"Wi-Fi ჩართულია"</string>
     <string name="quick_settings_wifi_detail_empty_text" msgid="269990350383909226">"Wi-Fi ქსელები მიუწვდომელია"</string>
     <string name="quick_settings_cast_title" msgid="7709016546426454729">"ტრანსლირება"</string>
     <string name="quick_settings_casting" msgid="6601710681033353316">"გადაიცემა"</string>
@@ -349,7 +340,7 @@
     <string name="zen_silence_introduction" msgid="3137882381093271568">"ეს ბლოკავს ყველა ხმასა და ვიბრაციას, მათ შორის, მაღვიძარების, მუსიკის, ვიდეოებისა და თამაშების."</string>
     <string name="keyguard_more_overflow_text" msgid="9195222469041601365">"+<xliff:g id="NUMBER_OF_NOTIFICATIONS">%d</xliff:g>"</string>
     <string name="speed_bump_explanation" msgid="1288875699658819755">"ქვემოთ მითითებულია ნაკლებად სასწრაფო შეტყობინებები"</string>
-    <string name="notification_tap_again" msgid="8524949573675922138">"შეეხეთ ისევ გასახსნელად"</string>
+    <string name="notification_tap_again" msgid="7590196980943943842">"შეეხეთ ისევ გასახსნელად"</string>
     <string name="keyguard_unlock" msgid="8043466894212841998">"გაასრიალეთ ზევით განსაბლოკად"</string>
     <string name="phone_hint" msgid="4872890986869209950">"ტელეფონისთვის გადაფურცლეთ ხატულადან"</string>
     <string name="voice_hint" msgid="8939888732119726665">"ხმოვანი დახმარებისთვის გადაფურცლეთ ხატულადან"</string>
@@ -427,7 +418,7 @@
     <string name="accessibility_volume_expand" msgid="5946812790999244205">"გავრცობა"</string>
     <string name="accessibility_volume_collapse" msgid="3609549593031810875">"ჩაკეცვა"</string>
     <string name="screen_pinning_title" msgid="3273740381976175811">"ეკრანი ჩამაგრებულია"</string>
-    <string name="screen_pinning_description" msgid="3577937698406151604">"ამით ის ხედში ჩამაგრების მოხსნამდე დარჩება. ჩამაგრების მოსახსნელად, ხანგრძლივად დააჭირეთ „უკან“-ს."</string>
+    <string name="screen_pinning_description" msgid="7238941806855968768">"ამით ის ხედში ჩამაგრების მოხსნამდე დარჩება. ჩამაგრების მოსახსნელად, ხანგრძლივად დააჭირეთ „უკან“-ს."</string>
     <string name="screen_pinning_positive" msgid="3783985798366751226">"გასაგებია"</string>
     <string name="screen_pinning_negative" msgid="3741602308343880268">"არა, გმადლობთ"</string>
     <string name="quick_settings_reset_confirmation_title" msgid="748792586749897883">"დაიმალოს <xliff:g id="TILE_LABEL">%1$s</xliff:g>?"</string>
@@ -437,15 +428,13 @@
     <string name="volumeui_prompt_allow" msgid="7954396902482228786">"უფლების მიცემა"</string>
     <string name="volumeui_prompt_deny" msgid="5720663643411696731">"უარყოფა"</string>
     <string name="volumeui_notification_title" msgid="4906770126345910955">"<xliff:g id="APP_NAME">%1$s</xliff:g> ხმოვან დიალოგშია"</string>
-    <string name="volumeui_notification_text" msgid="1826889705095768656">"ორიგინალის აღდგენისათვის, შეეხეთ."</string>
+    <string name="volumeui_notification_text" msgid="8819536904234337445">"შეეხეთ ორიგინალის აღსადგენად."</string>
     <string name="managed_profile_foreground_toast" msgid="5421487114739245972">"თქვენ სამსახურის პროფილს იყენებთ"</string>
     <string name="volume_stream_content_description_unmute" msgid="4436631538779230857">"%1$s. შეეხეთ დადუმების გასაუქმებლად."</string>
     <string name="volume_stream_content_description_vibrate" msgid="1187944970457807498">"%1$s. შეეხეთ ვიბრაციაზე დასაყენებლად. შეიძლება დადუმდეს მარტივი წვდომის სერვისებიც."</string>
     <string name="volume_stream_content_description_mute" msgid="3625049841390467354">"%1$s. შეეხეთ დასადუმებლად. შეიძლება დადუმდეს მარტივი წვდომის სერვისებიც."</string>
-    <!-- no translation found for volume_dialog_accessibility_shown_message (1834631467074259998) -->
-    <skip />
-    <!-- no translation found for volume_dialog_accessibility_dismissed_message (51543526013711399) -->
-    <skip />
+    <string name="volume_dialog_accessibility_shown_message" msgid="1834631467074259998">"%s-ის ხმის მართვის საშუალებები დამალულია. დასახურად, გადაფურცლეთ ზემოთ."</string>
+    <string name="volume_dialog_accessibility_dismissed_message" msgid="51543526013711399">"ხმის მართვის საშუალებები დამალულია"</string>
     <string name="system_ui_tuner" msgid="708224127392452018">"სისტემის UI ტუნერი"</string>
     <string name="show_battery_percentage" msgid="5444136600512968798">"ჩამაგრებული ბატარეის პროცენტის ჩვენება"</string>
     <string name="show_battery_percentage_summary" msgid="3215025775576786037">"ბატარეის დონის პროცენტის ჩვენება სტატუსის ზოლის ხატულას შიგნით, როდესაც არ იტენება"</string>
@@ -641,27 +630,17 @@
     <string name="accessibility_qs_edit_tile_removed" msgid="8584304916627913440">"<xliff:g id="TILE_NAME">%1$s</xliff:g> ამოიშალა"</string>
     <string name="accessibility_qs_edit_tile_moved" msgid="4343693412689365038">"<xliff:g id="TILE_NAME">%1$s</xliff:g> გადატანილია პოზიციაზე <xliff:g id="POSITION">%2$d</xliff:g>"</string>
     <string name="accessibility_desc_quick_settings_edit" msgid="8073587401747016103">"სწრაფი პარამეტრების რედაქტორი."</string>
-    <!-- no translation found for accessibility_desc_notification_icon (8352414185263916335) -->
-    <skip />
+    <string name="accessibility_desc_notification_icon" msgid="8352414185263916335">"<xliff:g id="ID_1">%1$s</xliff:g> შეტყობინება: <xliff:g id="ID_2">%2$s</xliff:g>"</string>
     <string name="dock_forced_resizable" msgid="5914261505436217520">"აპმა შეიძლება არ იმუშაოს გაყოფილი ეკრანის რეჟიმში."</string>
     <string name="dock_non_resizeble_failed_to_dock_text" msgid="3871617304250207291">"ეკრანის გაყოფა არ არის მხარდაჭერილი აპის მიერ."</string>
-    <!-- no translation found for accessibility_quick_settings_settings (6132460890024942157) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_expand (2375165227880477530) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_collapse (1792625797142648105) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_alarm_set (1863000242431528676) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_user (1567445362870421770) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_no_internet (31890692343084075) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_open_details (4230931801728005194) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_open_settings (7806613775728380737) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_edit (7839992848995240393) -->
-    <skip />
+    <string name="accessibility_quick_settings_settings" msgid="6132460890024942157">"პარამეტრების გახსნა."</string>
+    <string name="accessibility_quick_settings_expand" msgid="2375165227880477530">"სწრაფი პარამეტრების გახსნა."</string>
+    <string name="accessibility_quick_settings_collapse" msgid="1792625797142648105">"სწრაფი პარამეტრების დახურვა."</string>
+    <string name="accessibility_quick_settings_alarm_set" msgid="1863000242431528676">"მაღვიძარა დაყენებულია."</string>
+    <string name="accessibility_quick_settings_user" msgid="1567445362870421770">"შესული ხართ, როგორც <xliff:g id="ID_1">%s</xliff:g>"</string>
+    <string name="accessibility_quick_settings_no_internet" msgid="31890692343084075">"ინტერნეტთან კავშირი არ არის."</string>
+    <string name="accessibility_quick_settings_open_details" msgid="4230931801728005194">"დეტალების გახსნა."</string>
+    <string name="accessibility_quick_settings_open_settings" msgid="7806613775728380737">"<xliff:g id="ID_1">%s</xliff:g> პარამეტრების გახსნა."</string>
+    <string name="accessibility_quick_settings_edit" msgid="7839992848995240393">"პარამეტრების მიმდევრობის რედაქტირება."</string>
     <string name="accessibility_quick_settings_page" msgid="5032979051755200721">"გვერდი <xliff:g id="ID_1">%1$d</xliff:g> / <xliff:g id="ID_2">%2$d</xliff:g>-დან"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-ka-rGE/strings_tv.xml b/packages/SystemUI/res/values-ka-rGE/strings_tv.xml
index 752cf37..67957c9 100644
--- a/packages/SystemUI/res/values-ka-rGE/strings_tv.xml
+++ b/packages/SystemUI/res/values-ka-rGE/strings_tv.xml
@@ -24,10 +24,8 @@
     <string name="pip_play" msgid="674145557658227044">"დაკვრა"</string>
     <string name="pip_pause" msgid="8412075640017218862">"პაუზა"</string>
     <string name="pip_hold_home" msgid="340086535668778109">"PIP-ის სამართავად, გეჭიროთ "<b>"მთავარ ღილაკზე"</b></string>
-    <!-- no translation found for pip_onboarding_title (7850436557670253991) -->
-    <skip />
-    <!-- no translation found for pip_onboarding_description (4028124563309465267) -->
-    <skip />
+    <string name="pip_onboarding_title" msgid="7850436557670253991">"სურათი სურათში"</string>
+    <string name="pip_onboarding_description" msgid="4028124563309465267">"ვიდეო ჩამაგრებული იქნება, სანამ ახალს არ დაუკრავთ. სამართავად, ხანგრძლივად დააჭირეთ "<b>"მთავარ ღილაკზე"</b>"."</string>
     <string name="pip_onboarding_button" msgid="3957426748484904611">"გასაგებია"</string>
     <string name="recents_tv_dismiss" msgid="3555093879593377731">"დახურვა"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-kk-rKZ/strings.xml b/packages/SystemUI/res/values-kk-rKZ/strings.xml
index bb1ea16..a9e62fc 100644
--- a/packages/SystemUI/res/values-kk-rKZ/strings.xml
+++ b/packages/SystemUI/res/values-kk-rKZ/strings.xml
@@ -71,7 +71,8 @@
     <string name="screenshot_saving_title" msgid="8242282144535555697">"Скриншотты сақтауда…"</string>
     <string name="screenshot_saving_text" msgid="2419718443411738818">"Скриншот сақталуда."</string>
     <string name="screenshot_saved_title" msgid="6461865960961414961">"Скриншот сақталды."</string>
-    <string name="screenshot_saved_text" msgid="1152839647677558815">"Скриншотты көру үшін түрту."</string>
+    <!-- no translation found for screenshot_saved_text (2685605830386712477) -->
+    <skip />
     <string name="screenshot_failed_title" msgid="705781116746922771">"Скриншот жасалмады."</string>
     <string name="screenshot_failed_to_save_unknown_text" msgid="7887826345701753830">"Скриншотты сақтау кезінде мәселе туындады."</string>
     <string name="screenshot_failed_to_save_text" msgid="2592658083866306296">"Жадтағы шектеулі бос орынға байланысты скриншотты сақтау мүмкін емес."</string>
@@ -118,8 +119,7 @@
     <string name="accessibility_data_signal_full" msgid="2708384608124519369">"Дерекқор сигналы толы."</string>
     <string name="accessibility_wifi_name" msgid="7202151365171148501">"<xliff:g id="WIFI">%s</xliff:g> қосылған."</string>
     <string name="accessibility_bluetooth_name" msgid="8441517146585531676">"<xliff:g id="BLUETOOTH">%s</xliff:g> қосылған."</string>
-    <!-- no translation found for accessibility_cast_name (4026393061247081201) -->
-    <skip />
+    <string name="accessibility_cast_name" msgid="4026393061247081201">"<xliff:g id="CAST">%s</xliff:g> трансляциясына қосылды."</string>
     <string name="accessibility_no_wimax" msgid="4329180129727630368">"WiMAX сигналы жоқ."</string>
     <string name="accessibility_wimax_one_bar" msgid="4170994299011863648">"WiMAX бір жолақ."</string>
     <string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"WiMAX екі жолақ."</string>
@@ -150,17 +150,14 @@
     <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"EDGE (ұялы байланыстар жүйесіне арналған жетілдірілген деректер шамалары)"</string>
     <string name="accessibility_data_connection_wifi" msgid="2324496756590645221">"Wi-Fi"</string>
     <string name="accessibility_no_sim" msgid="8274017118472455155">"SIM жоқ."</string>
-    <!-- no translation found for accessibility_cell_data (7080312242791850520) -->
-    <skip />
-    <!-- no translation found for accessibility_cell_data_on (4310018593519761767) -->
-    <skip />
+    <string name="accessibility_cell_data" msgid="7080312242791850520">"Ұялы деректер"</string>
+    <string name="accessibility_cell_data_on" msgid="4310018593519761767">"Ұялы деректер қосулы"</string>
     <string name="accessibility_cell_data_off" msgid="8000803571751407635">"Ұялы дерек өшірулі"</string>
     <string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"Bluetooth тетеринг."</string>
     <string name="accessibility_airplane_mode" msgid="834748999790763092">"Ұшақ режимі."</string>
     <string name="accessibility_no_sims" msgid="3957997018324995781">"SIM картасы жоқ."</string>
     <string name="accessibility_carrier_network_change_mode" msgid="4017301580441304305">"Оператор желісі өзгертілуде."</string>
-    <!-- no translation found for accessibility_battery_details (7645516654955025422) -->
-    <skip />
+    <string name="accessibility_battery_details" msgid="7645516654955025422">"Батарея мәліметтерін ашу"</string>
     <string name="accessibility_battery_level" msgid="7451474187113371965">"Батарея <xliff:g id="NUMBER">%d</xliff:g> пайыз."</string>
     <string name="accessibility_battery_level_charging" msgid="1147587904439319646">"Батарея зарядталуда, <xliff:g id="BATTERY_PERCENTAGE">%d</xliff:g> пайыз."</string>
     <string name="accessibility_settings_button" msgid="799583911231893380">"Жүйе параметрлері."</string>
@@ -200,13 +197,11 @@
     <string name="accessibility_quick_settings_dnd_priority_on" msgid="1448402297221249355">"Мазаламау режимі қосулы, тек басымдық"</string>
     <string name="accessibility_quick_settings_dnd_none_on" msgid="6882582132662613537">"Мазаламау режимі қосулы, толық тыныштық."</string>
     <string name="accessibility_quick_settings_dnd_alarms_on" msgid="9152834845587554157">"Кедергі жасамаңыз, тек дабылдар."</string>
-    <!-- no translation found for accessibility_quick_settings_dnd (6607873236717185815) -->
-    <skip />
+    <string name="accessibility_quick_settings_dnd" msgid="6607873236717185815">"Мазаламау."</string>
     <string name="accessibility_quick_settings_dnd_off" msgid="2371832603753738581">"Мазаламау режимі өшірулі"</string>
     <string name="accessibility_quick_settings_dnd_changed_off" msgid="898107593453022935">"Мазаламау режимі өшірілді."</string>
     <string name="accessibility_quick_settings_dnd_changed_on" msgid="4483780856613561039">"Мазаламау режимі қосылды."</string>
-    <!-- no translation found for accessibility_quick_settings_bluetooth (6341675755803320038) -->
-    <skip />
+    <string name="accessibility_quick_settings_bluetooth" msgid="6341675755803320038">"Bluetooth"</string>
     <string name="accessibility_quick_settings_bluetooth_off" msgid="2133631372372064339">"Bluetooth өшірулі."</string>
     <string name="accessibility_quick_settings_bluetooth_on" msgid="7681999166216621838">"Bluetooth қосулы."</string>
     <string name="accessibility_quick_settings_bluetooth_connecting" msgid="6953242966685343855">"Bluetooth қосылуда."</string>
@@ -260,7 +255,7 @@
     <string name="accessibility_rotation_lock_on_landscape_changed" msgid="3135965553707519743">"Экран енді альбомдық бағдарда бекітілді."</string>
     <string name="accessibility_rotation_lock_on_portrait_changed" msgid="8922481981834012126">"Экран енді портреттік бағдарда бекітілді."</string>
     <string name="dessert_case" msgid="1295161776223959221">"Десерт жағдайы"</string>
-    <string name="start_dreams" msgid="5640361424498338327">"Экран қорғағыш"</string>
+    <string name="start_dreams" msgid="5640361424498338327">"Экранды сақтау режимі"</string>
     <string name="ethernet_label" msgid="7967563676324087464">"Этернет"</string>
     <string name="quick_settings_dnd_label" msgid="8735855737575028208">"Мазаламау"</string>
     <string name="quick_settings_dnd_priority_label" msgid="483232950670692036">"Маңыздылары ғана"</string>
@@ -272,10 +267,8 @@
     <string name="quick_settings_bluetooth_detail_empty_text" msgid="4910015762433302860">"Жұптасқан құрылғылар жоқ"</string>
     <string name="quick_settings_brightness_label" msgid="6968372297018755815">"Жарықтығы"</string>
     <string name="quick_settings_rotation_unlocked_label" msgid="7305323031808150099">"Автоматты түрде бұру"</string>
-    <!-- no translation found for accessibility_quick_settings_rotation (4231661040698488779) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_rotation_value (1428962304214992318) -->
-    <skip />
+    <string name="accessibility_quick_settings_rotation" msgid="4231661040698488779">"Авто айналатын экран"</string>
+    <string name="accessibility_quick_settings_rotation_value" msgid="1428962304214992318">"<xliff:g id="ID_1">%s</xliff:g> мәніне орнату"</string>
     <string name="quick_settings_rotation_locked_label" msgid="6359205706154282377">"Бұру бекітілген"</string>
     <string name="quick_settings_rotation_locked_portrait_label" msgid="5102691921442135053">"Портрет"</string>
     <string name="quick_settings_rotation_locked_landscape_label" msgid="8553157770061178719">"Пейзаж"</string>
@@ -294,8 +287,7 @@
     <string name="quick_settings_wifi_not_connected" msgid="7171904845345573431">"Жалғанбаған"</string>
     <string name="quick_settings_wifi_no_network" msgid="2221993077220856376">"Желі жоқ"</string>
     <string name="quick_settings_wifi_off_label" msgid="7558778100843885864">"Wi-Fi өшірулі"</string>
-    <!-- no translation found for quick_settings_wifi_on_label (7607810331387031235) -->
-    <skip />
+    <string name="quick_settings_wifi_on_label" msgid="7607810331387031235">"Wi-Fi қосулы"</string>
     <string name="quick_settings_wifi_detail_empty_text" msgid="269990350383909226">"Қолжетімді Wi-Fi желілері жоқ"</string>
     <string name="quick_settings_cast_title" msgid="7709016546426454729">"Трансляциялау"</string>
     <string name="quick_settings_casting" msgid="6601710681033353316">"Трансляциялануда"</string>
@@ -349,7 +341,7 @@
     <string name="zen_silence_introduction" msgid="3137882381093271568">"БАРЛЫҚ, соның ішінде дабылдардың, музыканың, бейнелердің және ойындардың дыбыстары мен дірілдері өшіріледі."</string>
     <string name="keyguard_more_overflow_text" msgid="9195222469041601365">"+<xliff:g id="NUMBER_OF_NOTIFICATIONS">%d</xliff:g>"</string>
     <string name="speed_bump_explanation" msgid="1288875699658819755">"Шұғылдығы азырақ хабарландырулар төменде"</string>
-    <string name="notification_tap_again" msgid="8524949573675922138">"Ашу үшін қайтадан түртіңіз"</string>
+    <string name="notification_tap_again" msgid="7590196980943943842">"Ашу үшін қайта түртіңіз"</string>
     <string name="keyguard_unlock" msgid="8043466894212841998">"Құлыпты ашу үшін жоғары сырғытыңыз"</string>
     <string name="phone_hint" msgid="4872890986869209950">"Телефонды ашу үшін белгішеден әрі қарай сырғытыңыз"</string>
     <string name="voice_hint" msgid="8939888732119726665">"Дауыс көмекшісін ашу үшін белгішеден әрі қарай сырғытыңыз"</string>
@@ -427,7 +419,8 @@
     <string name="accessibility_volume_expand" msgid="5946812790999244205">"Жаю"</string>
     <string name="accessibility_volume_collapse" msgid="3609549593031810875">"Жию"</string>
     <string name="screen_pinning_title" msgid="3273740381976175811">"Экран түйрелді"</string>
-    <string name="screen_pinning_description" msgid="3577937698406151604">"Бұл сіз оны босатқанша оны көрсетіп тұрады. Босату үшін «Кері» түймесін басып тұрыңыз."</string>
+    <!-- no translation found for screen_pinning_description (7238941806855968768) -->
+    <skip />
     <string name="screen_pinning_positive" msgid="3783985798366751226">"Түсіндім"</string>
     <string name="screen_pinning_negative" msgid="3741602308343880268">"Жоқ, рақмет"</string>
     <string name="quick_settings_reset_confirmation_title" msgid="748792586749897883">"<xliff:g id="TILE_LABEL">%1$s</xliff:g> жасыру керек пе?"</string>
@@ -437,15 +430,14 @@
     <string name="volumeui_prompt_allow" msgid="7954396902482228786">"Рұқсат беру"</string>
     <string name="volumeui_prompt_deny" msgid="5720663643411696731">"Өшіру"</string>
     <string name="volumeui_notification_title" msgid="4906770126345910955">"<xliff:g id="APP_NAME">%1$s</xliff:g> — көлем диалогтық терезесі"</string>
-    <string name="volumeui_notification_text" msgid="1826889705095768656">"Түпнұсқаны қалпына келтіру үшін түртіңіз."</string>
+    <!-- no translation found for volumeui_notification_text (8819536904234337445) -->
+    <skip />
     <string name="managed_profile_foreground_toast" msgid="5421487114739245972">"Сіз жұмыс профиліңізді пайдаланып жатырсыз"</string>
     <string name="volume_stream_content_description_unmute" msgid="4436631538779230857">"%1$s. Дыбысын қосу үшін түртіңіз."</string>
     <string name="volume_stream_content_description_vibrate" msgid="1187944970457807498">"%1$s. Діріл режимін орнату үшін түртіңіз. Арнайы мүмкіндік қызметтерінің дыбысы өшуі мүмкін."</string>
     <string name="volume_stream_content_description_mute" msgid="3625049841390467354">"%1$s. Дыбысын өшіру үшін түртіңіз. Арнайы мүмкіндік қызметтерінің дыбысы өшуі мүмкін."</string>
-    <!-- no translation found for volume_dialog_accessibility_shown_message (1834631467074259998) -->
-    <skip />
-    <!-- no translation found for volume_dialog_accessibility_dismissed_message (51543526013711399) -->
-    <skip />
+    <string name="volume_dialog_accessibility_shown_message" msgid="1834631467074259998">"%s дыбыстың басқару элементтері көрсетулі. Сырғыту арқылы жабыңыз."</string>
+    <string name="volume_dialog_accessibility_dismissed_message" msgid="51543526013711399">"Дыбыстың басқару элементтері жасырын"</string>
     <string name="system_ui_tuner" msgid="708224127392452018">"Жүйелік пайдаланушылық интерфейс тюнері"</string>
     <string name="show_battery_percentage" msgid="5444136600512968798">"Ендірілген батарея пайыздық шамасын көрсету"</string>
     <string name="show_battery_percentage_summary" msgid="3215025775576786037">"Зарядталмай тұрғанда, күй жолағы белгішесінің ішінде батарея деңгейінің пайыздық шамасын көрсетеді"</string>
@@ -641,27 +633,17 @@
     <string name="accessibility_qs_edit_tile_removed" msgid="8584304916627913440">"<xliff:g id="TILE_NAME">%1$s</xliff:g> жойылды"</string>
     <string name="accessibility_qs_edit_tile_moved" msgid="4343693412689365038">"<xliff:g id="TILE_NAME">%1$s</xliff:g> <xliff:g id="POSITION">%2$d</xliff:g> орнына жылжытылды"</string>
     <string name="accessibility_desc_quick_settings_edit" msgid="8073587401747016103">"Жылдам параметрлер өңдегіші."</string>
-    <!-- no translation found for accessibility_desc_notification_icon (8352414185263916335) -->
-    <skip />
+    <string name="accessibility_desc_notification_icon" msgid="8352414185263916335">"<xliff:g id="ID_1">%1$s</xliff:g> хабарландыру: <xliff:g id="ID_2">%2$s</xliff:g>"</string>
     <string name="dock_forced_resizable" msgid="5914261505436217520">"Қолданба бөлінген экранда жұмыс істемеуі мүмкін."</string>
     <string name="dock_non_resizeble_failed_to_dock_text" msgid="3871617304250207291">"Қодланба бөлінген экранды қолдамайды."</string>
-    <!-- no translation found for accessibility_quick_settings_settings (6132460890024942157) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_expand (2375165227880477530) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_collapse (1792625797142648105) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_alarm_set (1863000242431528676) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_user (1567445362870421770) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_no_internet (31890692343084075) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_open_details (4230931801728005194) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_open_settings (7806613775728380737) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_edit (7839992848995240393) -->
-    <skip />
+    <string name="accessibility_quick_settings_settings" msgid="6132460890024942157">"Параметрлерді ашу."</string>
+    <string name="accessibility_quick_settings_expand" msgid="2375165227880477530">"Жылдам параметрлерді ашу."</string>
+    <string name="accessibility_quick_settings_collapse" msgid="1792625797142648105">"Жылдам параметрлерді жабу"</string>
+    <string name="accessibility_quick_settings_alarm_set" msgid="1863000242431528676">"Дабыл орнатылды."</string>
+    <string name="accessibility_quick_settings_user" msgid="1567445362870421770">"<xliff:g id="ID_1">%s</xliff:g> ретінде кірдіңіз"</string>
+    <string name="accessibility_quick_settings_no_internet" msgid="31890692343084075">"Интернет жоқ."</string>
+    <string name="accessibility_quick_settings_open_details" msgid="4230931801728005194">"Мәліметтерді ашу."</string>
+    <string name="accessibility_quick_settings_open_settings" msgid="7806613775728380737">"<xliff:g id="ID_1">%s</xliff:g> параметрлерін ашу."</string>
+    <string name="accessibility_quick_settings_edit" msgid="7839992848995240393">"Параметрлер тәртібін өзгерту."</string>
     <string name="accessibility_quick_settings_page" msgid="5032979051755200721">"<xliff:g id="ID_2">%2$d</xliff:g> ішінен <xliff:g id="ID_1">%1$d</xliff:g>"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-kk-rKZ/strings_tv.xml b/packages/SystemUI/res/values-kk-rKZ/strings_tv.xml
index a3a6e97..1106340 100644
--- a/packages/SystemUI/res/values-kk-rKZ/strings_tv.xml
+++ b/packages/SystemUI/res/values-kk-rKZ/strings_tv.xml
@@ -24,10 +24,8 @@
     <string name="pip_play" msgid="674145557658227044">"Ойнату"</string>
     <string name="pip_pause" msgid="8412075640017218862">"Кідірту"</string>
     <string name="pip_hold_home" msgid="340086535668778109">"PIP басқару үшін "<b>"HOME"</b>" басып тұрыңыз"</string>
-    <!-- no translation found for pip_onboarding_title (7850436557670253991) -->
-    <skip />
-    <!-- no translation found for pip_onboarding_description (4028124563309465267) -->
-    <skip />
+    <string name="pip_onboarding_title" msgid="7850436557670253991">"Сурет ішіндегі сурет"</string>
+    <string name="pip_onboarding_description" msgid="4028124563309465267">"Бұл басқа бейне ойнатылғанға дейін бейнені көріністе сақтайды. Оны басқару үшін "<b>"HOME"</b>" түймесін басып тұрыңыз."</string>
     <string name="pip_onboarding_button" msgid="3957426748484904611">"Түсіндім"</string>
     <string name="recents_tv_dismiss" msgid="3555093879593377731">"Жабу"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-km-rKH/strings.xml b/packages/SystemUI/res/values-km-rKH/strings.xml
index f2dc4e5..57da157 100644
--- a/packages/SystemUI/res/values-km-rKH/strings.xml
+++ b/packages/SystemUI/res/values-km-rKH/strings.xml
@@ -71,7 +71,7 @@
     <string name="screenshot_saving_title" msgid="8242282144535555697">"កំពុង​រក្សាទុក​រូបថត​អេក្រង់..."</string>
     <string name="screenshot_saving_text" msgid="2419718443411738818">"រូបថត​អេក្រង់​កំពុង​ត្រូវ​បាន​រក្សាទុក។"</string>
     <string name="screenshot_saved_title" msgid="6461865960961414961">"បាន​ចាប់​យក​រូបថត​អេក្រង់។​"</string>
-    <string name="screenshot_saved_text" msgid="1152839647677558815">"ប៉ះ ​ដើម្បី​មើល​រូបថត​អេក្រង់​របស់​អ្នក​។"</string>
+    <string name="screenshot_saved_text" msgid="2685605830386712477">"ប៉ះដើម្បីមើលរូបថតអេក្រង់របស់អ្នក"</string>
     <string name="screenshot_failed_title" msgid="705781116746922771">"មិន​អាច​ចាប់​យក​រូប​ថត​អេក្រង់​។"</string>
     <string name="screenshot_failed_to_save_unknown_text" msgid="7887826345701753830">"បានជួបប្រទះបញ្ហាខណៈពេលរក្សាទុកការថតអេក្រង់"</string>
     <string name="screenshot_failed_to_save_text" msgid="2592658083866306296">"មិនអាចរក្សាទុករូបថតអេក្រង់បានទេដោយសារទំហំផ្ទុកមានកម្រិត។"</string>
@@ -118,8 +118,7 @@
     <string name="accessibility_data_signal_full" msgid="2708384608124519369">"សញ្ញា​ទិន្នន័យ​ពេញ។"</string>
     <string name="accessibility_wifi_name" msgid="7202151365171148501">"បាន​ភ្ជាប់​ទៅ <xliff:g id="WIFI">%s</xliff:g> ។"</string>
     <string name="accessibility_bluetooth_name" msgid="8441517146585531676">"បាន​ភ្ជាប់​ទៅ <xliff:g id="BLUETOOTH">%s</xliff:g> ។"</string>
-    <!-- no translation found for accessibility_cast_name (4026393061247081201) -->
-    <skip />
+    <string name="accessibility_cast_name" msgid="4026393061247081201">"បានភ្ជាប់ទៅ <xliff:g id="CAST">%s</xliff:g>"</string>
     <string name="accessibility_no_wimax" msgid="4329180129727630368">"គ្មាន WiMAX ។"</string>
     <string name="accessibility_wimax_one_bar" msgid="4170994299011863648">"WiMAX មួយ​កាំ។"</string>
     <string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"WiMAX ពីរ​កាំ។"</string>
@@ -150,17 +149,14 @@
     <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string>
     <string name="accessibility_data_connection_wifi" msgid="2324496756590645221">"វ៉ាយហ្វាយ"</string>
     <string name="accessibility_no_sim" msgid="8274017118472455155">"គ្មាន​ស៊ីម​កាត។"</string>
-    <!-- no translation found for accessibility_cell_data (7080312242791850520) -->
-    <skip />
-    <!-- no translation found for accessibility_cell_data_on (4310018593519761767) -->
-    <skip />
+    <string name="accessibility_cell_data" msgid="7080312242791850520">"ទិន្នន័យចល័ត"</string>
+    <string name="accessibility_cell_data_on" msgid="4310018593519761767">"ទិន្នន័យចល័តបានបើក"</string>
     <string name="accessibility_cell_data_off" msgid="8000803571751407635">"ទិន្នន័យចល័តបានបិទ"</string>
     <string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"ការ​ភ្ជាប់​ប៊្លូធូស។"</string>
     <string name="accessibility_airplane_mode" msgid="834748999790763092">"របៀប​​ពេលជិះ​យន្តហោះ"</string>
     <string name="accessibility_no_sims" msgid="3957997018324995781">"គ្មានស៊ីមកាតទេ។"</string>
     <string name="accessibility_carrier_network_change_mode" msgid="4017301580441304305">"ការប្តូរបណ្តាញក្រុមហ៊ុនផ្តល់សេវា។"</string>
-    <!-- no translation found for accessibility_battery_details (7645516654955025422) -->
-    <skip />
+    <string name="accessibility_battery_details" msgid="7645516654955025422">"បើកព័ត៌មានលម្អិតអំពីថ្ម"</string>
     <string name="accessibility_battery_level" msgid="7451474187113371965">"ថ្ម <xliff:g id="NUMBER">%d</xliff:g> ភាគរយ។"</string>
     <string name="accessibility_battery_level_charging" msgid="1147587904439319646">"កំពុងសាកថ្ម <xliff:g id="BATTERY_PERCENTAGE">%d</xliff:g> ភាគរយ"</string>
     <string name="accessibility_settings_button" msgid="799583911231893380">"ការ​កំណត់​ប្រព័ន្ធ​។"</string>
@@ -200,13 +196,11 @@
     <string name="accessibility_quick_settings_dnd_priority_on" msgid="1448402297221249355">"បានបើកមុខងារកុំរំខាន (អាទិភាពប៉ុណ្ណោះ)។"</string>
     <string name="accessibility_quick_settings_dnd_none_on" msgid="6882582132662613537">"មុខងារកុំរំខានបានបើក ស្ងៀមស្ងាត់ទាំងស្រុង។"</string>
     <string name="accessibility_quick_settings_dnd_alarms_on" msgid="9152834845587554157">"មុខងារកុំរំខានបានបើក សម្លេងរោទិ៍ប៉ុណ្ណោះ។"</string>
-    <!-- no translation found for accessibility_quick_settings_dnd (6607873236717185815) -->
-    <skip />
+    <string name="accessibility_quick_settings_dnd" msgid="6607873236717185815">"កុំរំខាន"</string>
     <string name="accessibility_quick_settings_dnd_off" msgid="2371832603753738581">"បានបិទមុខងារកុំរំខាន។"</string>
     <string name="accessibility_quick_settings_dnd_changed_off" msgid="898107593453022935">"បានបិទមុខងារកុំរំខាន។"</string>
     <string name="accessibility_quick_settings_dnd_changed_on" msgid="4483780856613561039">"បានបើកមុខងារកុំរំខាន។"</string>
-    <!-- no translation found for accessibility_quick_settings_bluetooth (6341675755803320038) -->
-    <skip />
+    <string name="accessibility_quick_settings_bluetooth" msgid="6341675755803320038">"ប៊្លូធូស"</string>
     <string name="accessibility_quick_settings_bluetooth_off" msgid="2133631372372064339">"បិទ​ប៊្លូធូស។"</string>
     <string name="accessibility_quick_settings_bluetooth_on" msgid="7681999166216621838">"បើក​ប៊្លូធូស។"</string>
     <string name="accessibility_quick_settings_bluetooth_connecting" msgid="6953242966685343855">"ការ​​​ភ្ជាប់​ប៊្លូធូស។"</string>
@@ -272,10 +266,8 @@
     <string name="quick_settings_bluetooth_detail_empty_text" msgid="4910015762433302860">"មិន​មាន​ឧបករណ៍​ផ្គូផ្គង​ដែល​អាច​ប្រើ​បាន"</string>
     <string name="quick_settings_brightness_label" msgid="6968372297018755815">"ពន្លឺ"</string>
     <string name="quick_settings_rotation_unlocked_label" msgid="7305323031808150099">"បង្វិល​ស្វ័យ​ប្រវត្តិ"</string>
-    <!-- no translation found for accessibility_quick_settings_rotation (4231661040698488779) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_rotation_value (1428962304214992318) -->
-    <skip />
+    <string name="accessibility_quick_settings_rotation" msgid="4231661040698488779">"បង្វិលអេក្រង់ស្វ័យប្រវត្តិ"</string>
+    <string name="accessibility_quick_settings_rotation_value" msgid="1428962304214992318">"កំណត់ទៅ <xliff:g id="ID_1">%s</xliff:g>"</string>
     <string name="quick_settings_rotation_locked_label" msgid="6359205706154282377">"បាន​ចាក់សោ​ការ​បង្វិល"</string>
     <string name="quick_settings_rotation_locked_portrait_label" msgid="5102691921442135053">"បញ្ឈរ"</string>
     <string name="quick_settings_rotation_locked_landscape_label" msgid="8553157770061178719">"ទេសភាព"</string>
@@ -294,8 +286,7 @@
     <string name="quick_settings_wifi_not_connected" msgid="7171904845345573431">"មិន​បាន​តភ្ជាប់"</string>
     <string name="quick_settings_wifi_no_network" msgid="2221993077220856376">"គ្មាន​បណ្ដាញ"</string>
     <string name="quick_settings_wifi_off_label" msgid="7558778100843885864">"វ៉ាយហ្វាយ​បានបិទ"</string>
-    <!-- no translation found for quick_settings_wifi_on_label (7607810331387031235) -->
-    <skip />
+    <string name="quick_settings_wifi_on_label" msgid="7607810331387031235">"Wi-Fi បានបើក"</string>
     <string name="quick_settings_wifi_detail_empty_text" msgid="269990350383909226">"គ្មានបណ្តាញ Wi-Fi ទេ"</string>
     <string name="quick_settings_cast_title" msgid="7709016546426454729">"ខាស"</string>
     <string name="quick_settings_casting" msgid="6601710681033353316">"ការ​ចាត់​ថ្នាក់"</string>
@@ -349,7 +340,7 @@
     <string name="zen_silence_introduction" msgid="3137882381093271568">"វារារាំងសំឡេង និងរំញ័រទាំងអស់ដែលចេញពីម៉ោងរោទិ៍ តន្ត្រី វីដេអូ និងហ្គេម។"</string>
     <string name="keyguard_more_overflow_text" msgid="9195222469041601365">"+<xliff:g id="NUMBER_OF_NOTIFICATIONS">%d</xliff:g>"</string>
     <string name="speed_bump_explanation" msgid="1288875699658819755">"ការ​ជូន​ដំណឹង​​មិន​សូវ​បន្ទាន់​ខាង​ក្រោម"</string>
-    <string name="notification_tap_again" msgid="8524949573675922138">"ប៉ះ​ម្ដង​ទៀត​ដើម្បី​បើក"</string>
+    <string name="notification_tap_again" msgid="7590196980943943842">"ប៉ះ​ម្ដង​ទៀត ដើម្បី​បើក"</string>
     <string name="keyguard_unlock" msgid="8043466894212841998">"អូស​ឡើង​លើ ដើម្បី​ដោះ​សោ"</string>
     <string name="phone_hint" msgid="4872890986869209950">"អូសចេញពីរូបតំណាងដើម្បីប្រើទូរស័ព្ទ"</string>
     <string name="voice_hint" msgid="8939888732119726665">"អូសចេញពីរូបតំណាងដើម្បីប្រើជំនួយសំឡេង"</string>
@@ -427,7 +418,7 @@
     <string name="accessibility_volume_expand" msgid="5946812790999244205">"ពង្រីក"</string>
     <string name="accessibility_volume_collapse" msgid="3609549593031810875">"បង្រួម"</string>
     <string name="screen_pinning_title" msgid="3273740381976175811">"អេក្រង់​ត្រូវ​បាន​ភ្ជាប់"</string>
-    <string name="screen_pinning_description" msgid="3577937698406151604">"វានឹងនៅតែបង្ហាញ លុះត្រាតែអ្នកដកការដៅចេញ។ សូមប៉ះ និងសង្កត់ឲ្យជាប់ដើម្បីដកការដៅ។"</string>
+    <string name="screen_pinning_description" msgid="7238941806855968768">"វានឹងផ្អាករហូតដល់អ្នកផ្តាច់។ ប៉ះ និងសង្កត់គ្រាប់ចុចថយក្រោយដើម្បីផ្តាច់។"</string>
     <string name="screen_pinning_positive" msgid="3783985798366751226">"យល់​ហើយ"</string>
     <string name="screen_pinning_negative" msgid="3741602308343880268">"ទេ អរគុណ"</string>
     <string name="quick_settings_reset_confirmation_title" msgid="748792586749897883">"លាក់ <xliff:g id="TILE_LABEL">%1$s</xliff:g>?"</string>
@@ -437,15 +428,13 @@
     <string name="volumeui_prompt_allow" msgid="7954396902482228786">"អនុញ្ញាត"</string>
     <string name="volumeui_prompt_deny" msgid="5720663643411696731">"បដិសេធ"</string>
     <string name="volumeui_notification_title" msgid="4906770126345910955">"<xliff:g id="APP_NAME">%1$s</xliff:g> គឺជាប្រអប់សម្លេង"</string>
-    <string name="volumeui_notification_text" msgid="1826889705095768656">"ប៉ះដើម្បីស្តារច្បាប់ដើម។"</string>
+    <string name="volumeui_notification_text" msgid="8819536904234337445">"ប៉ះដើម្បីស្តារច្បាប់ដើម"</string>
     <string name="managed_profile_foreground_toast" msgid="5421487114739245972">"អ្នកកំពុងប្រើប្រវត្តិរូបការងាររបស់អ្នក"</string>
     <string name="volume_stream_content_description_unmute" msgid="4436631538779230857">"%1$s។ ប៉ះដើម្បីបើកសំឡេង។"</string>
     <string name="volume_stream_content_description_vibrate" msgid="1187944970457807498">"%1$s។ ប៉ះដើម្បីកំណត់ឲ្យញ័រ។ សេវាកម្មលទ្ធភាពប្រើប្រាស់អាចនឹងត្រូវបានបិទសំឡេង។"</string>
     <string name="volume_stream_content_description_mute" msgid="3625049841390467354">"%1$s។ ប៉ះដើម្បីបិទសំឡេង។ សេវាកម្មលទ្ធភាពប្រើប្រាស់អាចនឹងត្រូវបានបិទសំឡេង។"</string>
-    <!-- no translation found for volume_dialog_accessibility_shown_message (1834631467074259998) -->
-    <skip />
-    <!-- no translation found for volume_dialog_accessibility_dismissed_message (51543526013711399) -->
-    <skip />
+    <string name="volume_dialog_accessibility_shown_message" msgid="1834631467074259998">"អង្គគ្រប់គ្រងកម្រិតសំឡេង %s បានបង្ហាញ។ អូសឡើងលើដើម្បីបដិសេធ។"</string>
+    <string name="volume_dialog_accessibility_dismissed_message" msgid="51543526013711399">"អង្គគ្រប់គ្រងកម្រិតសំឡេងបានលាក់"</string>
     <string name="system_ui_tuner" msgid="708224127392452018">"កម្មវិធីសម្រួល UI ប្រព័ន្ធ"</string>
     <string name="show_battery_percentage" msgid="5444136600512968798">"បង្ហាញភាគរយថាមពលថ្មដែលបានបង្កប់"</string>
     <string name="show_battery_percentage_summary" msgid="3215025775576786037">"បង្ហាញភាគរយនៃកម្រិតថាមពលថ្មនៅក្នុងរូបតំណាងរបារស្ថានភាពនៅពេលមិនសាកថ្ម"</string>
@@ -641,27 +630,17 @@
     <string name="accessibility_qs_edit_tile_removed" msgid="8584304916627913440">"<xliff:g id="TILE_NAME">%1$s</xliff:g> ត្រូវបានយកចេញ"</string>
     <string name="accessibility_qs_edit_tile_moved" msgid="4343693412689365038">"<xliff:g id="TILE_NAME">%1$s</xliff:g> បានផ្លាស់ទីទៅទីតាំង <xliff:g id="POSITION">%2$d</xliff:g>"</string>
     <string name="accessibility_desc_quick_settings_edit" msgid="8073587401747016103">"កម្មវិធីកែការកំណត់រហ័ស"</string>
-    <!-- no translation found for accessibility_desc_notification_icon (8352414185263916335) -->
-    <skip />
+    <string name="accessibility_desc_notification_icon" msgid="8352414185263916335">"<xliff:g id="ID_1">%1$s</xliff:g> ការជូនដំណឹង៖ <xliff:g id="ID_2">%2$s</xliff:g>"</string>
     <string name="dock_forced_resizable" msgid="5914261505436217520">"កម្មវិធីអាចនឹងមិនដំណើរការនៅលើអេក្រង់បំបែកទេ"</string>
     <string name="dock_non_resizeble_failed_to_dock_text" msgid="3871617304250207291">"កម្មវិធីមិនគាំទ្រអេក្រង់បំបែកជាពីរទេ"</string>
-    <!-- no translation found for accessibility_quick_settings_settings (6132460890024942157) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_expand (2375165227880477530) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_collapse (1792625797142648105) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_alarm_set (1863000242431528676) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_user (1567445362870421770) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_no_internet (31890692343084075) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_open_details (4230931801728005194) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_open_settings (7806613775728380737) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_edit (7839992848995240393) -->
-    <skip />
+    <string name="accessibility_quick_settings_settings" msgid="6132460890024942157">"បើកការកំណត់"</string>
+    <string name="accessibility_quick_settings_expand" msgid="2375165227880477530">"បើកការកំណត់រហ័ស"</string>
+    <string name="accessibility_quick_settings_collapse" msgid="1792625797142648105">"បិទការកំណត់រហ័ស"</string>
+    <string name="accessibility_quick_settings_alarm_set" msgid="1863000242431528676">"បានកំណត់ម៉ោងរោទិ៍"</string>
+    <string name="accessibility_quick_settings_user" msgid="1567445362870421770">"បានចូលជា <xliff:g id="ID_1">%s</xliff:g>"</string>
+    <string name="accessibility_quick_settings_no_internet" msgid="31890692343084075">"គ្មានអ៊ីនធឺណិតទេ"</string>
+    <string name="accessibility_quick_settings_open_details" msgid="4230931801728005194">"បើកព័ត៌មានលម្អិត"</string>
+    <string name="accessibility_quick_settings_open_settings" msgid="7806613775728380737">"បើការកំណត់ <xliff:g id="ID_1">%s</xliff:g>"</string>
+    <string name="accessibility_quick_settings_edit" msgid="7839992848995240393">"កែលំដាប់ការកំណត់"</string>
     <string name="accessibility_quick_settings_page" msgid="5032979051755200721">"ទំព័រ <xliff:g id="ID_1">%1$d</xliff:g> នៃ <xliff:g id="ID_2">%2$d</xliff:g>"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-km-rKH/strings_tv.xml b/packages/SystemUI/res/values-km-rKH/strings_tv.xml
index 74959dd..0e7b3f2 100644
--- a/packages/SystemUI/res/values-km-rKH/strings_tv.xml
+++ b/packages/SystemUI/res/values-km-rKH/strings_tv.xml
@@ -24,10 +24,8 @@
     <string name="pip_play" msgid="674145557658227044">"ចាក់"</string>
     <string name="pip_pause" msgid="8412075640017218862">"ផ្អាក"</string>
     <string name="pip_hold_home" msgid="340086535668778109">"សង្កត់ប៊ូតុង "<b>"ដើម"</b>" ដើម្បីគ្រប់គ្រង PIP"</string>
-    <!-- no translation found for pip_onboarding_title (7850436557670253991) -->
-    <skip />
-    <!-- no translation found for pip_onboarding_description (4028124563309465267) -->
-    <skip />
+    <string name="pip_onboarding_title" msgid="7850436557670253991">"រូបភាពក្នុងរូបភាព"</string>
+    <string name="pip_onboarding_description" msgid="4028124563309465267">"វាបន្តផ្អាកវីដេអូរបស់អ្នក រហូតដល់អ្នកចុចចាក់វីដេអូមួយផ្សេងទៀត។ ចុច ហើយសង្កត់ប៊ូតុង"<b>"ដើម"</b>" ដើម្បីគ្រប់គ្រងវា។"</string>
     <string name="pip_onboarding_button" msgid="3957426748484904611">"យល់ហើយ"</string>
     <string name="recents_tv_dismiss" msgid="3555093879593377731">"បដិសេធ"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-kn-rIN/strings.xml b/packages/SystemUI/res/values-kn-rIN/strings.xml
index 9ae4a0a..5485b5d 100644
--- a/packages/SystemUI/res/values-kn-rIN/strings.xml
+++ b/packages/SystemUI/res/values-kn-rIN/strings.xml
@@ -71,7 +71,7 @@
     <string name="screenshot_saving_title" msgid="8242282144535555697">"ಸ್ಕ್ರೀನ್‌ಶಾಟ್ ಉಳಿಸಲಾಗುತ್ತಿದೆ…"</string>
     <string name="screenshot_saving_text" msgid="2419718443411738818">"ಸ್ಕ್ರೀನ್‌ಶಾಟ್ ಉಳಿಸಲಾಗುತ್ತಿದೆ."</string>
     <string name="screenshot_saved_title" msgid="6461865960961414961">"ಸ್ಕ್ರೀನ್‌ಶಾಟ್ ಸೆರೆಹಿಡಿಯಲಾಗಿದೆ."</string>
-    <string name="screenshot_saved_text" msgid="1152839647677558815">"ನಿಮ್ಮ ಸ್ಕ್ರೀನ್‌ಶಾಟ್ ವೀಕ್ಷಿಸಲು ಸ್ಪರ್ಶಿಸಿ."</string>
+    <string name="screenshot_saved_text" msgid="2685605830386712477">"ನಿಮ್ಮ ಸ್ಕ್ರೀನ್‌ಶಾಟ್‌ ವೀಕ್ಷಿಸಲು ಟ್ಯಾಪ್ ಮಾಡಿ."</string>
     <string name="screenshot_failed_title" msgid="705781116746922771">"ಸ್ಕ್ರೀನ್‌ಶಾಟ್ ಸೆರೆಹಿಡಿಯಲು ಸಾಧ್ಯವಾಗುತ್ತಿಲ್ಲ."</string>
     <string name="screenshot_failed_to_save_unknown_text" msgid="7887826345701753830">"ಸ್ಕ್ರೀನ್‌ಶಾಟ್ ಉಳಿಸುವಲ್ಲಿ ಸಮಸ್ಯೆ ಎದುರಾಗಿದೆ."</string>
     <string name="screenshot_failed_to_save_text" msgid="2592658083866306296">"ಪರಿಮಿತ ಸಂಗ್ರಹಣೆ ಸ್ಥಳದ ಕಾರಣದಿಂದಾಗಿ ಸ್ಕ್ರೀನ್‌ಶಾಟ್ ಉಳಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ."</string>
@@ -118,8 +118,7 @@
     <string name="accessibility_data_signal_full" msgid="2708384608124519369">"ಡೇಟಾ ಸಂಕೇತ ತುಂಬಿದೆ."</string>
     <string name="accessibility_wifi_name" msgid="7202151365171148501">"<xliff:g id="WIFI">%s</xliff:g> ಗೆ ಸಂಪರ್ಕಪಡಿಸಲಾಗಿದೆ."</string>
     <string name="accessibility_bluetooth_name" msgid="8441517146585531676">"<xliff:g id="BLUETOOTH">%s</xliff:g> ಗೆ ಸಂಪರ್ಕಪಡಿಸಲಾಗಿದೆ."</string>
-    <!-- no translation found for accessibility_cast_name (4026393061247081201) -->
-    <skip />
+    <string name="accessibility_cast_name" msgid="4026393061247081201">"<xliff:g id="CAST">%s</xliff:g> ಗೆ ಸಂಪರ್ಕಿಸಲಾಗಿದೆ."</string>
     <string name="accessibility_no_wimax" msgid="4329180129727630368">"WiMAX ಸಂಕೇತವಿಲ್ಲ."</string>
     <string name="accessibility_wimax_one_bar" msgid="4170994299011863648">"WiMAX ಒಂದು ಪಟ್ಟಿ."</string>
     <string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"WiMAX ಎರಡು ಪಟ್ಟಿಗಳು."</string>
@@ -150,17 +149,14 @@
     <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"ಎಡ್ಜ್‌"</string>
     <string name="accessibility_data_connection_wifi" msgid="2324496756590645221">"Wi-Fi"</string>
     <string name="accessibility_no_sim" msgid="8274017118472455155">"ಯಾವುದೇ ಸಿಮ್‌ ಇಲ್ಲ."</string>
-    <!-- no translation found for accessibility_cell_data (7080312242791850520) -->
-    <skip />
-    <!-- no translation found for accessibility_cell_data_on (4310018593519761767) -->
-    <skip />
+    <string name="accessibility_cell_data" msgid="7080312242791850520">"ಸೆಲ್ಯುಲರ್ ಡೇಟಾ"</string>
+    <string name="accessibility_cell_data_on" msgid="4310018593519761767">"ಸೆಲ್ಯುಲರ್ ಡೇಟಾ ಆನ್ ಆಗಿದೆ"</string>
     <string name="accessibility_cell_data_off" msgid="8000803571751407635">"ಸೆಲ್ಯುಲಾರ್ ಡೇಟಾ ಆಫ್ ಆಗಿದೆ"</string>
     <string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"ಬ್ಲೂಟೂತ್‌‌ ಟೆಥರಿಂಗ್."</string>
     <string name="accessibility_airplane_mode" msgid="834748999790763092">"ಏರೋಪ್ಲೇನ್‌ ಮೋಡ್‌"</string>
     <string name="accessibility_no_sims" msgid="3957997018324995781">"ಯಾವುದೇ ಸಿಮ್‌ ಇಲ್ಲ."</string>
     <string name="accessibility_carrier_network_change_mode" msgid="4017301580441304305">"ವಾಹಕ ನೆಟ್‌ವರ್ಕ್ ಬದಲಾಯಿಸುವಿಕೆ."</string>
-    <!-- no translation found for accessibility_battery_details (7645516654955025422) -->
-    <skip />
+    <string name="accessibility_battery_details" msgid="7645516654955025422">"ಬ್ಯಾಟರಿ ವಿವರಗಳನ್ನು ತೆರೆಯಿರಿ"</string>
     <string name="accessibility_battery_level" msgid="7451474187113371965">"ಬ್ಯಾಟರಿ <xliff:g id="NUMBER">%d</xliff:g> ಪ್ರತಿಶತ."</string>
     <string name="accessibility_battery_level_charging" msgid="1147587904439319646">"ಬ್ಯಾಟರಿ ಚಾರ್ಜ್ ಆಗುತ್ತಿದೆ, <xliff:g id="BATTERY_PERCENTAGE">%d</xliff:g> ಪ್ರತಿಶತ."</string>
     <string name="accessibility_settings_button" msgid="799583911231893380">"ಸಿಸ್ಟಂ ಸೆಟ್ಟಿಂಗ್‌ಗಳು."</string>
@@ -200,13 +196,11 @@
     <string name="accessibility_quick_settings_dnd_priority_on" msgid="1448402297221249355">"ಅಡಚಣೆ ಮಾಡಬೇಡಿ ಆನ್, ಆದ್ಯತೆ ಮಾತ್ರ."</string>
     <string name="accessibility_quick_settings_dnd_none_on" msgid="6882582132662613537">"ಅಡಚಣೆ ಮಾಡಬೇಡಿ ಆನ್ ಆಗಿದೆ, ಒಟ್ಟು ನಿಶ್ಯಬ್ಧ."</string>
     <string name="accessibility_quick_settings_dnd_alarms_on" msgid="9152834845587554157">"ಅಲಾರಮ್‌‌ಗಳಿಗೆ ಮಾತ್ರ ಅಡಚಣೆ ಮಾಡಬೇಡಿ."</string>
-    <!-- no translation found for accessibility_quick_settings_dnd (6607873236717185815) -->
-    <skip />
+    <string name="accessibility_quick_settings_dnd" msgid="6607873236717185815">"ಅಡಚಣೆ ಮಾಡಬೇಡಿ."</string>
     <string name="accessibility_quick_settings_dnd_off" msgid="2371832603753738581">"ಅಡಚಣೆ ಮಾಡಬೇಡಿ ಆಫ್ ಆಗಿದೆ."</string>
     <string name="accessibility_quick_settings_dnd_changed_off" msgid="898107593453022935">"ತೊಂದರೆ ಮಾಡಬೇಡಿ ಆಫ್ ಮಾಡಲಾಗಿದೆ."</string>
     <string name="accessibility_quick_settings_dnd_changed_on" msgid="4483780856613561039">"ಅಡಚಣೆ ಮಾಡಬೇಡಿ ಆನ್ ಮಾಡಲಾಗಿದೆ."</string>
-    <!-- no translation found for accessibility_quick_settings_bluetooth (6341675755803320038) -->
-    <skip />
+    <string name="accessibility_quick_settings_bluetooth" msgid="6341675755803320038">"ಬ್ಲೂಟೂತ್."</string>
     <string name="accessibility_quick_settings_bluetooth_off" msgid="2133631372372064339">"ಬ್ಲೂಟೂತ್ ಆಫ್ ಆಗಿದೆ."</string>
     <string name="accessibility_quick_settings_bluetooth_on" msgid="7681999166216621838">"ಬ್ಲೂಟೂತ್ ಆನ್ ಆಗಿದೆ."</string>
     <string name="accessibility_quick_settings_bluetooth_connecting" msgid="6953242966685343855">"ಬ್ಲೂಟೂತ್ ಸಂಪರ್ಕಪಡಿಸಲಾಗುತ್ತಿದೆ."</string>
@@ -272,10 +266,8 @@
     <string name="quick_settings_bluetooth_detail_empty_text" msgid="4910015762433302860">"ಯಾವುದೇ ಜೋಡಿಸಲಾದ ಸಾಧನಗಳು ಲಭ್ಯವಿಲ್ಲ"</string>
     <string name="quick_settings_brightness_label" msgid="6968372297018755815">"ಪ್ರಕಾಶಮಾನ"</string>
     <string name="quick_settings_rotation_unlocked_label" msgid="7305323031808150099">"ಸ್ವಯಂ-ತಿರುಗುವಿಕೆ"</string>
-    <!-- no translation found for accessibility_quick_settings_rotation (4231661040698488779) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_rotation_value (1428962304214992318) -->
-    <skip />
+    <string name="accessibility_quick_settings_rotation" msgid="4231661040698488779">"ಪರದೆಯನ್ನು ಸ್ವಯಂ-ತಿರುಗಿಸಿ"</string>
+    <string name="accessibility_quick_settings_rotation_value" msgid="1428962304214992318">"<xliff:g id="ID_1">%s</xliff:g> ಗೆ ಹೊಂದಿಸಲಾಗಿದೆ"</string>
     <string name="quick_settings_rotation_locked_label" msgid="6359205706154282377">"ತಿರುಗುವಿಕೆ ಲಾಕ್ ಆಗಿದೆ"</string>
     <string name="quick_settings_rotation_locked_portrait_label" msgid="5102691921442135053">"ಪೋಟ್ರೇಟ್"</string>
     <string name="quick_settings_rotation_locked_landscape_label" msgid="8553157770061178719">"ಲ್ಯಾಂಡ್‌ಸ್ಕೇಪ್"</string>
@@ -294,8 +286,7 @@
     <string name="quick_settings_wifi_not_connected" msgid="7171904845345573431">"ಸಂಪರ್ಕಗೊಂಡಿಲ್ಲ"</string>
     <string name="quick_settings_wifi_no_network" msgid="2221993077220856376">"ನೆಟ್‌ವರ್ಕ್ ಇಲ್ಲ"</string>
     <string name="quick_settings_wifi_off_label" msgid="7558778100843885864">"Wi-Fi ಆಫ್"</string>
-    <!-- no translation found for quick_settings_wifi_on_label (7607810331387031235) -->
-    <skip />
+    <string name="quick_settings_wifi_on_label" msgid="7607810331387031235">"ವೈ-ಫೈ ಆನ್ ಆಗಿದೆ"</string>
     <string name="quick_settings_wifi_detail_empty_text" msgid="269990350383909226">"ಯಾವುದೇ ವೈ-ಫೈ ನೆಟ್‌ವರ್ಕ್‌ಗಳು ಲಭ್ಯವಿಲ್ಲ"</string>
     <string name="quick_settings_cast_title" msgid="7709016546426454729">"ಬಿತ್ತರಿಸುವಿಕೆ"</string>
     <string name="quick_settings_casting" msgid="6601710681033353316">"ಬಿತ್ತರಿಸಲಾಗುತ್ತಿದೆ"</string>
@@ -349,7 +340,7 @@
     <string name="zen_silence_introduction" msgid="3137882381093271568">"ಇದು ಅಲಾರಮ್‌ಗಳು, ಸಂಗೀತ, ವೀಡಿಯೊಗಳು, ಮತ್ತು ಆಟಗಳು ಸೇರಿದಂತೆ ಎಲ್ಲಾ ಧ್ವನಿಗಳು ಮತ್ತು ವೈಬ್ರೇಶನ್‌ಗಳನ್ನು ನಿರ್ಬಂಧಿಸುತ್ತದೆ."</string>
     <string name="keyguard_more_overflow_text" msgid="9195222469041601365">"+<xliff:g id="NUMBER_OF_NOTIFICATIONS">%d</xliff:g>"</string>
     <string name="speed_bump_explanation" msgid="1288875699658819755">"ಕೆಳಗೆ ಕಡಿಮೆ ಅವಸರದ ಅಧಿಸೂಚನೆಗಳು"</string>
-    <string name="notification_tap_again" msgid="8524949573675922138">"ತೆರೆಯಲು ಮತ್ತೊಮ್ಮೆ ಸ್ಪರ್ಶಿಸಿ"</string>
+    <string name="notification_tap_again" msgid="7590196980943943842">"ತೆರೆಯಲು ಮತ್ತೆ ಟ್ಯಾಪ್‌ ಮಾಡಿ"</string>
     <string name="keyguard_unlock" msgid="8043466894212841998">"ಅನ್‌ಲಾಕ್‌ ಮಾಡಲು ಸ್ವೈಪ್‌ ಮಾಡಿ"</string>
     <string name="phone_hint" msgid="4872890986869209950">"ಫೋನ್‌ಗಾಗಿ ಐಕಾನ್‌ನಿಂದ ಸ್ವೈಪ್ ಮಾಡಿ"</string>
     <string name="voice_hint" msgid="8939888732119726665">"ಧ್ವನಿ ಸಹಾಯಕ್ಕಾಗಿ ಐಕಾನ್‌ನಿಂದ ಸ್ವೈಪ್ ಮಾಡಿ"</string>
@@ -427,7 +418,7 @@
     <string name="accessibility_volume_expand" msgid="5946812790999244205">"ವಿಸ್ತರಿಸು"</string>
     <string name="accessibility_volume_collapse" msgid="3609549593031810875">"ಸಂಕುಚಿಸು"</string>
     <string name="screen_pinning_title" msgid="3273740381976175811">"ಪರದೆಯನ್ನು ಪಿನ್ ಮಾಡಲಾಗಿದೆ"</string>
-    <string name="screen_pinning_description" msgid="3577937698406151604">"ನೀವು ಅನ್‌ಪಿನ್ ಮಾಡುವವರೆಗೆ ಅದನ್ನು ವೀಕ್ಷಣೆಯಲ್ಲಿಡುತ್ತದೆ. ಅನ್‌ಪಿನ್ ಮಾಡಲು ಹಿಂದೆ ಸ್ಪರ್ಶಿಸಿ ಮತ್ತು ಹಿಡಿದುಕೊಳ್ಳಿ."</string>
+    <string name="screen_pinning_description" msgid="7238941806855968768">"ನೀವು ಅನ್‌ಪಿನ್ ಮಾಡುವವರೆಗೆ ಅದನ್ನು ವೀಕ್ಷಣೆಯಲ್ಲಿಡುತ್ತದೆ. ಅನ್‌ಪಿನ್ ಮಾಡಲು ಹಿಂದೆ ಸ್ಪರ್ಶಿಸಿ ಮತ್ತು ಹಿಡಿದುಕೊಳ್ಳಿ."</string>
     <string name="screen_pinning_positive" msgid="3783985798366751226">"ತಿಳಿಯಿತು"</string>
     <string name="screen_pinning_negative" msgid="3741602308343880268">"ಧನ್ಯವಾದಗಳು"</string>
     <string name="quick_settings_reset_confirmation_title" msgid="748792586749897883">"<xliff:g id="TILE_LABEL">%1$s</xliff:g> ಮರೆಮಾಡುವುದೇ?"</string>
@@ -437,15 +428,13 @@
     <string name="volumeui_prompt_allow" msgid="7954396902482228786">"ಅನುಮತಿಸು"</string>
     <string name="volumeui_prompt_deny" msgid="5720663643411696731">"ನಿರಾಕರಿಸು"</string>
     <string name="volumeui_notification_title" msgid="4906770126345910955">"<xliff:g id="APP_NAME">%1$s</xliff:g> ವಾಲ್ಯೂಮ್ ಸಂವಾದವಾಗಿದೆ"</string>
-    <string name="volumeui_notification_text" msgid="1826889705095768656">"ಮೂಲ ಮರುಸ್ಥಾಪಿಸಲು ಸ್ಪರ್ಶಿಸಿ."</string>
+    <string name="volumeui_notification_text" msgid="8819536904234337445">"ಮೂಲಕ್ಕೆ ಮರುಸ್ಥಾಪಿಸಲು ಟ್ಯಾಪ್ ಮಾಡಿ."</string>
     <string name="managed_profile_foreground_toast" msgid="5421487114739245972">"ನಿಮ್ಮ ಕೆಲಸದ ಪ್ರೊಫೈಲ್‌ ಅನ್ನು ನೀವು ಬಳಸುತ್ತಿರುವಿರಿ"</string>
     <string name="volume_stream_content_description_unmute" msgid="4436631538779230857">"%1$s. ಅನ್‌ಮ್ಯೂಟ್‌ ಮಾಡಲು ಟ್ಯಾಪ್ ಮಾಡಿ."</string>
     <string name="volume_stream_content_description_vibrate" msgid="1187944970457807498">"%1$s. ಕಂಪನಕ್ಕೆ ಹೊಂದಿಸಲು ಟ್ಯಾಪ್ ಮಾಡಿ. ಪ್ರವೇಶಿಸುವಿಕೆ ಸೇವೆಗಳನ್ನು ಮ್ಯೂಟ್‌ ಮಾಡಬಹುದು."</string>
     <string name="volume_stream_content_description_mute" msgid="3625049841390467354">"%1$s. ಮ್ಯೂಟ್ ಮಾಡಲು ಟ್ಯಾಪ್ ಮಾಡಿ. ಪ್ರವೇಶಿಸುವಿಕೆ ಸೇವೆಗಳನ್ನು ಮ್ಯೂಟ್‌ ಮಾಡಬಹುದು."</string>
-    <!-- no translation found for volume_dialog_accessibility_shown_message (1834631467074259998) -->
-    <skip />
-    <!-- no translation found for volume_dialog_accessibility_dismissed_message (51543526013711399) -->
-    <skip />
+    <string name="volume_dialog_accessibility_shown_message" msgid="1834631467074259998">"%s ವಾಲ್ಯೂಮ್ ನಿಯಂತ್ರಣಗಳನ್ನು ತೋರಿಸಲಾಗಿದೆ. ವಜಾಗೊಳಿಸಲು ಮೇಲಕ್ಕೆ ಸ್ವೈಪ್ ಮಾಡಿ"</string>
+    <string name="volume_dialog_accessibility_dismissed_message" msgid="51543526013711399">"ವಾಲ್ಯೂಮ್ ನಿಯಂತ್ರಣಗಳನ್ನು ಮರೆಮಾಡಲಾಗಿದೆ"</string>
     <string name="system_ui_tuner" msgid="708224127392452018">"ಸಿಸ್ಟಮ್ UI ಟ್ಯೂನರ್"</string>
     <string name="show_battery_percentage" msgid="5444136600512968798">"ಎಂಬೆಡ್ ಮಾಡಲಾದ ಬ್ಯಾಟರಿ ಶೇಕಡಾ ತೋರಿಸಿ"</string>
     <string name="show_battery_percentage_summary" msgid="3215025775576786037">"ಚಾರ್ಜ್ ಮಾಡದಿರುವಾಗ ಸ್ಥಿತಿ ಪಟ್ಟಿ ಐಕಾನ್ ಒಳಗೆ ಬ್ಯಾಟರಿ ಮಟ್ಟದ ಶೇಕಡಾವನ್ನು ತೋರಿಸಿ"</string>
@@ -641,27 +630,17 @@
     <string name="accessibility_qs_edit_tile_removed" msgid="8584304916627913440">"<xliff:g id="TILE_NAME">%1$s</xliff:g> ತೆಗೆದುಹಾಕಲಾಗಿದೆ"</string>
     <string name="accessibility_qs_edit_tile_moved" msgid="4343693412689365038">"<xliff:g id="POSITION">%2$d</xliff:g> ಸ್ಥಾನಕ್ಕೆ <xliff:g id="TILE_NAME">%1$s</xliff:g> ಸೇರಿಸಲಾಗಿದೆ"</string>
     <string name="accessibility_desc_quick_settings_edit" msgid="8073587401747016103">"ತ್ವರಿತ ಸೆಟ್ಟಿಂಗ್‍ಗಳ ಸಂಪಾದಕ."</string>
-    <!-- no translation found for accessibility_desc_notification_icon (8352414185263916335) -->
-    <skip />
+    <string name="accessibility_desc_notification_icon" msgid="8352414185263916335">"<xliff:g id="ID_1">%1$s</xliff:g> ಅಧಿಸೂಚನೆ: <xliff:g id="ID_2">%2$s</xliff:g>"</string>
     <string name="dock_forced_resizable" msgid="5914261505436217520">"ವಿಭಜಿಸಿದ ಪರದೆಯಲ್ಲಿ ಅಪ್ಲಿಕೇಶನ್ ಕೆಲಸ ಮಾಡದೇ ಇರಬಹುದು."</string>
     <string name="dock_non_resizeble_failed_to_dock_text" msgid="3871617304250207291">"ಅಪ್ಲಿಕೇಶನ್ ಸ್ಪ್ಲಿಟ್ ಸ್ಕ್ರೀನ್ ಅನ್ನು ಬೆಂಬಲಿಸುವುದಿಲ್ಲ."</string>
-    <!-- no translation found for accessibility_quick_settings_settings (6132460890024942157) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_expand (2375165227880477530) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_collapse (1792625797142648105) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_alarm_set (1863000242431528676) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_user (1567445362870421770) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_no_internet (31890692343084075) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_open_details (4230931801728005194) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_open_settings (7806613775728380737) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_edit (7839992848995240393) -->
-    <skip />
+    <string name="accessibility_quick_settings_settings" msgid="6132460890024942157">"ಸೆಟ್ಟಿಂಗ್‌ಗಳನ್ನು ತೆರೆಯಿರಿ."</string>
+    <string name="accessibility_quick_settings_expand" msgid="2375165227880477530">"ತ್ವರಿತ ಸೆಟ್ಟಿಂಗ್‌ಗಳನ್ನು ತೆರೆಯಿರಿ."</string>
+    <string name="accessibility_quick_settings_collapse" msgid="1792625797142648105">"ತ್ವರಿತ ಸೆಟ್ಟಿಂಗ್‌ಗಳನ್ನು ಮುಚ್ಚಿ."</string>
+    <string name="accessibility_quick_settings_alarm_set" msgid="1863000242431528676">"ಅಲಾರಾಂ ಹೊಂದಿಸಲಾಗಿದೆ."</string>
+    <string name="accessibility_quick_settings_user" msgid="1567445362870421770">"<xliff:g id="ID_1">%s</xliff:g> ಅವರಂತೆ ಸೈನ್ ಇನ್ ಮಾಡಲಾಗಿದೆ"</string>
+    <string name="accessibility_quick_settings_no_internet" msgid="31890692343084075">"ಇಂಟರ್ನೆಟ್ ಇಲ್ಲ."</string>
+    <string name="accessibility_quick_settings_open_details" msgid="4230931801728005194">"ವಿವರಗಳನ್ನು ತೆರೆಯಿರಿ."</string>
+    <string name="accessibility_quick_settings_open_settings" msgid="7806613775728380737">"<xliff:g id="ID_1">%s</xliff:g> ಸೆಟ್ಟಿಂಗ್‌ಗಳನ್ನು ತೆರೆಯಿರಿ."</string>
+    <string name="accessibility_quick_settings_edit" msgid="7839992848995240393">"ಸೆಟ್ಟಿಂಗ್‌ಗಳ ಕ್ರಮವನ್ನು ಸಂಪಾದಿಸು."</string>
     <string name="accessibility_quick_settings_page" msgid="5032979051755200721">"<xliff:g id="ID_2">%2$d</xliff:g> ರಲ್ಲಿ <xliff:g id="ID_1">%1$d</xliff:g> ಪುಟ"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-kn-rIN/strings_tv.xml b/packages/SystemUI/res/values-kn-rIN/strings_tv.xml
index 86ee97b..e617c6e 100644
--- a/packages/SystemUI/res/values-kn-rIN/strings_tv.xml
+++ b/packages/SystemUI/res/values-kn-rIN/strings_tv.xml
@@ -24,10 +24,8 @@
     <string name="pip_play" msgid="674145557658227044">"ಪ್ಲೇ"</string>
     <string name="pip_pause" msgid="8412075640017218862">"ವಿರಾಮ"</string>
     <string name="pip_hold_home" msgid="340086535668778109">"PIP ನಿಯಂತ್ರಿಸಲು "<b>"HOME"</b>" ಕೀಯನ್ನು ಹಿಡಿದುಕೊಳ್ಳಿ"</string>
-    <!-- no translation found for pip_onboarding_title (7850436557670253991) -->
-    <skip />
-    <!-- no translation found for pip_onboarding_description (4028124563309465267) -->
-    <skip />
+    <string name="pip_onboarding_title" msgid="7850436557670253991">"ಚಿತ್ರದಲ್ಲಿ ಚಿತ್ರ"</string>
+    <string name="pip_onboarding_description" msgid="4028124563309465267">"ನೀವು ಮತ್ತೊಂದನ್ನು ಪ್ಲೇ ಮಾಡುವ ತನಕ ಇದು ನಿಮ್ಮ ವೀಡಿಯೋವನ್ನು ವೀಕ್ಷಣೆಯಲ್ಲಿರಿಸುತ್ತದೆ. ಅದನ್ನು ನಿಯಂತ್ರಿಸಲು "<b>"ಹೋಮ್"</b>" ಅನ್ನು ಒತ್ತಿ ಹಿಡಿಯಿರಿ."</string>
     <string name="pip_onboarding_button" msgid="3957426748484904611">"ಅರ್ಥವಾಯಿತು"</string>
     <string name="recents_tv_dismiss" msgid="3555093879593377731">"ವಜಾಗೊಳಿಸಿ"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-ko/strings.xml b/packages/SystemUI/res/values-ko/strings.xml
index 7b3ac18..5d9743c 100644
--- a/packages/SystemUI/res/values-ko/strings.xml
+++ b/packages/SystemUI/res/values-ko/strings.xml
@@ -71,7 +71,7 @@
     <string name="screenshot_saving_title" msgid="8242282144535555697">"캡쳐화면 저장 중..."</string>
     <string name="screenshot_saving_text" msgid="2419718443411738818">"캡쳐화면을 저장하는 중입니다."</string>
     <string name="screenshot_saved_title" msgid="6461865960961414961">"캡쳐화면 저장됨"</string>
-    <string name="screenshot_saved_text" msgid="1152839647677558815">"캡쳐화면을 보려면 터치하세요."</string>
+    <string name="screenshot_saved_text" msgid="2685605830386712477">"스크린샷을 확인하려면 탭하세요."</string>
     <string name="screenshot_failed_title" msgid="705781116746922771">"캡쳐화면을 캡쳐하지 못했습니다."</string>
     <string name="screenshot_failed_to_save_unknown_text" msgid="7887826345701753830">"스크린샷을 저장하는 중 문제가 발생했습니다."</string>
     <string name="screenshot_failed_to_save_text" msgid="2592658083866306296">"저장용량이 부족하여 스크린샷을 저장할 수 없습니다."</string>
@@ -118,8 +118,7 @@
     <string name="accessibility_data_signal_full" msgid="2708384608124519369">"데이터 신호가 강합니다."</string>
     <string name="accessibility_wifi_name" msgid="7202151365171148501">"<xliff:g id="WIFI">%s</xliff:g>에 연결되었습니다."</string>
     <string name="accessibility_bluetooth_name" msgid="8441517146585531676">"<xliff:g id="BLUETOOTH">%s</xliff:g>에 연결되었습니다."</string>
-    <!-- no translation found for accessibility_cast_name (4026393061247081201) -->
-    <skip />
+    <string name="accessibility_cast_name" msgid="4026393061247081201">"<xliff:g id="CAST">%s</xliff:g>에 연결됨"</string>
     <string name="accessibility_no_wimax" msgid="4329180129727630368">"WiMAX가 없습니다."</string>
     <string name="accessibility_wimax_one_bar" msgid="4170994299011863648">"WiMAX 신호 막대가 하나입니다."</string>
     <string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"WiMAX 신호 막대가 두 개입니다."</string>
@@ -150,17 +149,14 @@
     <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string>
     <string name="accessibility_data_connection_wifi" msgid="2324496756590645221">"Wi-Fi"</string>
     <string name="accessibility_no_sim" msgid="8274017118472455155">"SIM이 없습니다."</string>
-    <!-- no translation found for accessibility_cell_data (7080312242791850520) -->
-    <skip />
-    <!-- no translation found for accessibility_cell_data_on (4310018593519761767) -->
-    <skip />
+    <string name="accessibility_cell_data" msgid="7080312242791850520">"모바일 데이터"</string>
+    <string name="accessibility_cell_data_on" msgid="4310018593519761767">"모바일 데이터 사용"</string>
     <string name="accessibility_cell_data_off" msgid="8000803571751407635">"모바일 데이터가 사용 중지됨"</string>
     <string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"블루투스 테더링입니다."</string>
     <string name="accessibility_airplane_mode" msgid="834748999790763092">"비행기 모드입니다."</string>
     <string name="accessibility_no_sims" msgid="3957997018324995781">"SIM 카드가 없습니다."</string>
     <string name="accessibility_carrier_network_change_mode" msgid="4017301580441304305">"이동통신사 네트워크가 변경됩니다."</string>
-    <!-- no translation found for accessibility_battery_details (7645516654955025422) -->
-    <skip />
+    <string name="accessibility_battery_details" msgid="7645516654955025422">"배터리 세부정보 열기"</string>
     <string name="accessibility_battery_level" msgid="7451474187113371965">"배터리 <xliff:g id="NUMBER">%d</xliff:g>퍼센트"</string>
     <!-- String.format failed for translation -->
     <!-- no translation found for accessibility_battery_level_charging (1147587904439319646) -->
@@ -202,13 +198,11 @@
     <string name="accessibility_quick_settings_dnd_priority_on" msgid="1448402297221249355">"알림 일시중지 사용, 중요 알림만 수신"</string>
     <string name="accessibility_quick_settings_dnd_none_on" msgid="6882582132662613537">"알림 일시중지 사용, 모두 차단"</string>
     <string name="accessibility_quick_settings_dnd_alarms_on" msgid="9152834845587554157">"알림 일시중지 사용, 알람만 수신"</string>
-    <!-- no translation found for accessibility_quick_settings_dnd (6607873236717185815) -->
-    <skip />
+    <string name="accessibility_quick_settings_dnd" msgid="6607873236717185815">"알림 일시중지"</string>
     <string name="accessibility_quick_settings_dnd_off" msgid="2371832603753738581">"알림 일시중지 사용 중지"</string>
     <string name="accessibility_quick_settings_dnd_changed_off" msgid="898107593453022935">"알림 일시중지가 사용 중지되었습니다."</string>
     <string name="accessibility_quick_settings_dnd_changed_on" msgid="4483780856613561039">"알림 일시중지를 사용합니다."</string>
-    <!-- no translation found for accessibility_quick_settings_bluetooth (6341675755803320038) -->
-    <skip />
+    <string name="accessibility_quick_settings_bluetooth" msgid="6341675755803320038">"블루투스"</string>
     <string name="accessibility_quick_settings_bluetooth_off" msgid="2133631372372064339">"블루투스: 사용 안함"</string>
     <string name="accessibility_quick_settings_bluetooth_on" msgid="7681999166216621838">"블루투스: 사용"</string>
     <string name="accessibility_quick_settings_bluetooth_connecting" msgid="6953242966685343855">"블루투스에 연결 중입니다."</string>
@@ -274,10 +268,8 @@
     <string name="quick_settings_bluetooth_detail_empty_text" msgid="4910015762433302860">"페어링된 기기가 없습니다."</string>
     <string name="quick_settings_brightness_label" msgid="6968372297018755815">"밝기"</string>
     <string name="quick_settings_rotation_unlocked_label" msgid="7305323031808150099">"자동 회전"</string>
-    <!-- no translation found for accessibility_quick_settings_rotation (4231661040698488779) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_rotation_value (1428962304214992318) -->
-    <skip />
+    <string name="accessibility_quick_settings_rotation" msgid="4231661040698488779">"화면 자동 회전"</string>
+    <string name="accessibility_quick_settings_rotation_value" msgid="1428962304214992318">"<xliff:g id="ID_1">%s</xliff:g>(으)로 설정"</string>
     <string name="quick_settings_rotation_locked_label" msgid="6359205706154282377">"방향 고정"</string>
     <string name="quick_settings_rotation_locked_portrait_label" msgid="5102691921442135053">"세로"</string>
     <string name="quick_settings_rotation_locked_landscape_label" msgid="8553157770061178719">"가로"</string>
@@ -296,8 +288,7 @@
     <string name="quick_settings_wifi_not_connected" msgid="7171904845345573431">"연결되어 있지 않음"</string>
     <string name="quick_settings_wifi_no_network" msgid="2221993077220856376">"네트워크가 연결되지 않음"</string>
     <string name="quick_settings_wifi_off_label" msgid="7558778100843885864">"Wi-Fi 꺼짐"</string>
-    <!-- no translation found for quick_settings_wifi_on_label (7607810331387031235) -->
-    <skip />
+    <string name="quick_settings_wifi_on_label" msgid="7607810331387031235">"Wi-Fi 사용"</string>
     <string name="quick_settings_wifi_detail_empty_text" msgid="269990350383909226">"사용 가능한 Wi-Fi 네트워크 없음"</string>
     <string name="quick_settings_cast_title" msgid="7709016546426454729">"전송"</string>
     <string name="quick_settings_casting" msgid="6601710681033353316">"전송 중"</string>
@@ -351,7 +342,7 @@
     <string name="zen_silence_introduction" msgid="3137882381093271568">"알람, 음악, 동영상, 게임을 포함하여 모든 소리와 진동을 끕니다."</string>
     <string name="keyguard_more_overflow_text" msgid="9195222469041601365">"+<xliff:g id="NUMBER_OF_NOTIFICATIONS">%d</xliff:g>"</string>
     <string name="speed_bump_explanation" msgid="1288875699658819755">"아래에 덜 급한 알림 표시"</string>
-    <string name="notification_tap_again" msgid="8524949573675922138">"다시 터치하여 열기"</string>
+    <string name="notification_tap_again" msgid="7590196980943943842">"다시 탭하여 열기"</string>
     <string name="keyguard_unlock" msgid="8043466894212841998">"위로 스와이프하여 잠금 해제"</string>
     <string name="phone_hint" msgid="4872890986869209950">"전화 기능을 사용하려면 아이콘에서 스와이프하세요."</string>
     <string name="voice_hint" msgid="8939888732119726665">"음성 지원을 사용하려면 아이콘에서 스와이프하세요."</string>
@@ -429,7 +420,7 @@
     <string name="accessibility_volume_expand" msgid="5946812790999244205">"펼치기"</string>
     <string name="accessibility_volume_collapse" msgid="3609549593031810875">"접기"</string>
     <string name="screen_pinning_title" msgid="3273740381976175811">"화면 고정됨"</string>
-    <string name="screen_pinning_description" msgid="3577937698406151604">"고정 해제하기 전까지 계속 표시됩니다. 고정 해제하려면 뒤로 버튼을 길게 터치합니다."</string>
+    <string name="screen_pinning_description" msgid="7238941806855968768">"고정 해제될 때까지 계속 볼 수 있습니다. 고정 해제하려면 길게 터치하세요."</string>
     <string name="screen_pinning_positive" msgid="3783985798366751226">"확인"</string>
     <string name="screen_pinning_negative" msgid="3741602308343880268">"거부"</string>
     <string name="quick_settings_reset_confirmation_title" msgid="748792586749897883">"<xliff:g id="TILE_LABEL">%1$s</xliff:g>을(를) 숨기시겠습니까?"</string>
@@ -439,15 +430,13 @@
     <string name="volumeui_prompt_allow" msgid="7954396902482228786">"허용"</string>
     <string name="volumeui_prompt_deny" msgid="5720663643411696731">"거부"</string>
     <string name="volumeui_notification_title" msgid="4906770126345910955">"<xliff:g id="APP_NAME">%1$s</xliff:g>은(는) 볼륨 대화입니다."</string>
-    <string name="volumeui_notification_text" msgid="1826889705095768656">"원본을 복원하려면 터치하세요."</string>
+    <string name="volumeui_notification_text" msgid="8819536904234337445">"원본을 복원하려면 탭하세요."</string>
     <string name="managed_profile_foreground_toast" msgid="5421487114739245972">"직장 프로필을 사용하고 있습니다."</string>
     <string name="volume_stream_content_description_unmute" msgid="4436631538779230857">"%1$s. 탭하여 음소거를 해제하세요."</string>
     <string name="volume_stream_content_description_vibrate" msgid="1187944970457807498">"%1$s. 탭하여 진동으로 설정하세요. 접근성 서비스가 음소거될 수 있습니다."</string>
     <string name="volume_stream_content_description_mute" msgid="3625049841390467354">"%1$s. 탭하여 음소거로 설정하세요. 접근성 서비스가 음소거될 수 있습니다."</string>
-    <!-- no translation found for volume_dialog_accessibility_shown_message (1834631467074259998) -->
-    <skip />
-    <!-- no translation found for volume_dialog_accessibility_dismissed_message (51543526013711399) -->
-    <skip />
+    <string name="volume_dialog_accessibility_shown_message" msgid="1834631467074259998">"%s 볼륨 컨트롤이 표시됩니다. 닫으려면 위로 스와이프합니다."</string>
+    <string name="volume_dialog_accessibility_dismissed_message" msgid="51543526013711399">"볼륨 컨트롤 숨김"</string>
     <string name="system_ui_tuner" msgid="708224127392452018">"시스템 UI 튜너"</string>
     <string name="show_battery_percentage" msgid="5444136600512968798">"내장형 배터리 잔량 비율 표시"</string>
     <string name="show_battery_percentage_summary" msgid="3215025775576786037">"충전 중이 아닌 경우 상태 표시줄 아이콘 내에 배터리 잔량 비율 표시"</string>
@@ -643,27 +632,17 @@
     <string name="accessibility_qs_edit_tile_removed" msgid="8584304916627913440">"<xliff:g id="TILE_NAME">%1$s</xliff:g> 타일이 삭제되었습니다."</string>
     <string name="accessibility_qs_edit_tile_moved" msgid="4343693412689365038">"<xliff:g id="TILE_NAME">%1$s</xliff:g> 타일을 위치 <xliff:g id="POSITION">%2$d</xliff:g>(으)로 이동함"</string>
     <string name="accessibility_desc_quick_settings_edit" msgid="8073587401747016103">"빠른 설정 편집기"</string>
-    <!-- no translation found for accessibility_desc_notification_icon (8352414185263916335) -->
-    <skip />
+    <string name="accessibility_desc_notification_icon" msgid="8352414185263916335">"<xliff:g id="ID_1">%1$s</xliff:g> 알림: <xliff:g id="ID_2">%2$s</xliff:g>"</string>
     <string name="dock_forced_resizable" msgid="5914261505436217520">"앱이 분할 화면에서 작동하지 않을 수 있습니다."</string>
     <string name="dock_non_resizeble_failed_to_dock_text" msgid="3871617304250207291">"앱이 화면 분할을 지원하지 않습니다."</string>
-    <!-- no translation found for accessibility_quick_settings_settings (6132460890024942157) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_expand (2375165227880477530) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_collapse (1792625797142648105) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_alarm_set (1863000242431528676) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_user (1567445362870421770) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_no_internet (31890692343084075) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_open_details (4230931801728005194) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_open_settings (7806613775728380737) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_edit (7839992848995240393) -->
-    <skip />
+    <string name="accessibility_quick_settings_settings" msgid="6132460890024942157">"설정 열기"</string>
+    <string name="accessibility_quick_settings_expand" msgid="2375165227880477530">"빠른 설정 열기"</string>
+    <string name="accessibility_quick_settings_collapse" msgid="1792625797142648105">"빠른 설정 닫기"</string>
+    <string name="accessibility_quick_settings_alarm_set" msgid="1863000242431528676">"알람이 설정됨"</string>
+    <string name="accessibility_quick_settings_user" msgid="1567445362870421770">"<xliff:g id="ID_1">%s</xliff:g>(으)로 로그인됨"</string>
+    <string name="accessibility_quick_settings_no_internet" msgid="31890692343084075">"인터넷에 연결되지 않음"</string>
+    <string name="accessibility_quick_settings_open_details" msgid="4230931801728005194">"세부정보 열기"</string>
+    <string name="accessibility_quick_settings_open_settings" msgid="7806613775728380737">"<xliff:g id="ID_1">%s</xliff:g> 설정 열기"</string>
+    <string name="accessibility_quick_settings_edit" msgid="7839992848995240393">"설정 순서 수정"</string>
     <string name="accessibility_quick_settings_page" msgid="5032979051755200721">"<xliff:g id="ID_2">%2$d</xliff:g>페이지 중 <xliff:g id="ID_1">%1$d</xliff:g>페이지"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-ko/strings_tv.xml b/packages/SystemUI/res/values-ko/strings_tv.xml
index c82888e..b0e9f45 100644
--- a/packages/SystemUI/res/values-ko/strings_tv.xml
+++ b/packages/SystemUI/res/values-ko/strings_tv.xml
@@ -24,10 +24,8 @@
     <string name="pip_play" msgid="674145557658227044">"재생"</string>
     <string name="pip_pause" msgid="8412075640017218862">"일시중지"</string>
     <string name="pip_hold_home" msgid="340086535668778109"><b>"HOME"</b>"을 눌러 PIP 제어"</string>
-    <!-- no translation found for pip_onboarding_title (7850436557670253991) -->
-    <skip />
-    <!-- no translation found for pip_onboarding_description (4028124563309465267) -->
-    <skip />
+    <string name="pip_onboarding_title" msgid="7850436557670253991">"PIP 모드"</string>
+    <string name="pip_onboarding_description" msgid="4028124563309465267">"다른 동영상을 재생할 때까지 동영상이 계속 표시됩니다. 제어하려면 "<b>"홈"</b>"을 길게 누릅니다."</string>
     <string name="pip_onboarding_button" msgid="3957426748484904611">"확인"</string>
     <string name="recents_tv_dismiss" msgid="3555093879593377731">"닫기"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-ky-rKG/strings.xml b/packages/SystemUI/res/values-ky-rKG/strings.xml
index 5e91a8c..3a426f8 100644
--- a/packages/SystemUI/res/values-ky-rKG/strings.xml
+++ b/packages/SystemUI/res/values-ky-rKG/strings.xml
@@ -71,7 +71,7 @@
     <string name="screenshot_saving_title" msgid="8242282144535555697">"Скриншот сакталууда..."</string>
     <string name="screenshot_saving_text" msgid="2419718443411738818">"Скриншот сакталууда."</string>
     <string name="screenshot_saved_title" msgid="6461865960961414961">"Скриншот тартылды."</string>
-    <string name="screenshot_saved_text" msgid="1152839647677558815">"Тийип, скриншотту көрүңүз."</string>
+    <string name="screenshot_saved_text" msgid="2685605830386712477">"Скриншотуңузду көрүү үчүн таптап коюңуз."</string>
     <string name="screenshot_failed_title" msgid="705781116746922771">"Скриншот кылынбай жатат."</string>
     <string name="screenshot_failed_to_save_unknown_text" msgid="7887826345701753830">"Скриншотту сактоо учурунда көйгөй пайда болду."</string>
     <string name="screenshot_failed_to_save_text" msgid="2592658083866306296">"Сактагычта бош орун аз болгондуктан скриншот сакталбай жатат."</string>
@@ -118,8 +118,7 @@
     <string name="accessibility_data_signal_full" msgid="2708384608124519369">"Мобилдик интернеттин сигналы толук."</string>
     <string name="accessibility_wifi_name" msgid="7202151365171148501">"<xliff:g id="WIFI">%s</xliff:g> менен туташкан."</string>
     <string name="accessibility_bluetooth_name" msgid="8441517146585531676">"<xliff:g id="BLUETOOTH">%s</xliff:g> менен туташкан."</string>
-    <!-- no translation found for accessibility_cast_name (4026393061247081201) -->
-    <skip />
+    <string name="accessibility_cast_name" msgid="4026393061247081201">"<xliff:g id="CAST">%s</xliff:g> менен туташты."</string>
     <string name="accessibility_no_wimax" msgid="4329180129727630368">"WiMAX туташуусу жок."</string>
     <string name="accessibility_wimax_one_bar" msgid="4170994299011863648">"WiMAX бир таякча."</string>
     <string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"WiMAX эки таякча."</string>
@@ -150,17 +149,14 @@
     <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string>
     <string name="accessibility_data_connection_wifi" msgid="2324496756590645221">"Wi-Fi"</string>
     <string name="accessibility_no_sim" msgid="8274017118472455155">"SIM карта жок."</string>
-    <!-- no translation found for accessibility_cell_data (7080312242791850520) -->
-    <skip />
-    <!-- no translation found for accessibility_cell_data_on (4310018593519761767) -->
-    <skip />
+    <string name="accessibility_cell_data" msgid="7080312242791850520">"Мобилдик дайындар"</string>
+    <string name="accessibility_cell_data_on" msgid="4310018593519761767">"Мобилдик дайындар күйгүзүлгөн"</string>
     <string name="accessibility_cell_data_off" msgid="8000803571751407635">"Мобилдик дайындарды өткөрүү өчүрүлгөн"</string>
     <string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"Bluetooth аркылуу интернет бөлүшүү."</string>
     <string name="accessibility_airplane_mode" msgid="834748999790763092">"Учак тартиби."</string>
     <string name="accessibility_no_sims" msgid="3957997018324995781">"SIM-карта жок"</string>
     <string name="accessibility_carrier_network_change_mode" msgid="4017301580441304305">"Оператор тармагы өзгөртүлүүдө."</string>
-    <!-- no translation found for accessibility_battery_details (7645516654955025422) -->
-    <skip />
+    <string name="accessibility_battery_details" msgid="7645516654955025422">"Батареянын чоо-жайын ачуу"</string>
     <string name="accessibility_battery_level" msgid="7451474187113371965">"Батарея <xliff:g id="NUMBER">%d</xliff:g> пайыз."</string>
     <string name="accessibility_battery_level_charging" msgid="1147587904439319646">"Батарея кубатталууда, <xliff:g id="BATTERY_PERCENTAGE">%d</xliff:g> пайыз."</string>
     <string name="accessibility_settings_button" msgid="799583911231893380">"Система тууралоолору."</string>
@@ -200,13 +196,11 @@
     <string name="accessibility_quick_settings_dnd_priority_on" msgid="1448402297221249355">"Тынчымды алба деген күйүк, артыкчылыктуулар гана."</string>
     <string name="accessibility_quick_settings_dnd_none_on" msgid="6882582132662613537">"Тынчымды албагыла, жымжырт болсун."</string>
     <string name="accessibility_quick_settings_dnd_alarms_on" msgid="9152834845587554157">"Тынчымды алба деген күйүк, ойготкучтар гана."</string>
-    <!-- no translation found for accessibility_quick_settings_dnd (6607873236717185815) -->
-    <skip />
+    <string name="accessibility_quick_settings_dnd" msgid="6607873236717185815">"Тынчымды алба."</string>
     <string name="accessibility_quick_settings_dnd_off" msgid="2371832603753738581">"Тынчымды алба деген өчүк."</string>
     <string name="accessibility_quick_settings_dnd_changed_off" msgid="898107593453022935">"Тынчымды алба деген өчүрүлдү."</string>
     <string name="accessibility_quick_settings_dnd_changed_on" msgid="4483780856613561039">"Тынчымды алба деген күйгүзүлдү."</string>
-    <!-- no translation found for accessibility_quick_settings_bluetooth (6341675755803320038) -->
-    <skip />
+    <string name="accessibility_quick_settings_bluetooth" msgid="6341675755803320038">"Bluetooth."</string>
     <string name="accessibility_quick_settings_bluetooth_off" msgid="2133631372372064339">"Bluetooth өчүк."</string>
     <string name="accessibility_quick_settings_bluetooth_on" msgid="7681999166216621838">"Bluetooth күйүк."</string>
     <string name="accessibility_quick_settings_bluetooth_connecting" msgid="6953242966685343855">"Bluetooth туташууда."</string>
@@ -260,7 +254,7 @@
     <string name="accessibility_rotation_lock_on_landscape_changed" msgid="3135965553707519743">"Экран азыр туурасынан кулпуланган."</string>
     <string name="accessibility_rotation_lock_on_portrait_changed" msgid="8922481981834012126">"Экран азыр тигинен кулпуланган."</string>
     <string name="dessert_case" msgid="1295161776223959221">"Десерт себети"</string>
-    <string name="start_dreams" msgid="5640361424498338327">"Экран сактагыч"</string>
+    <string name="start_dreams" msgid="5640361424498338327">"Көшөгө"</string>
     <string name="ethernet_label" msgid="7967563676324087464">"Ethernet"</string>
     <string name="quick_settings_dnd_label" msgid="8735855737575028208">"Тынчымды алба"</string>
     <string name="quick_settings_dnd_priority_label" msgid="483232950670692036">"Артыкчылык гана"</string>
@@ -272,10 +266,8 @@
     <string name="quick_settings_bluetooth_detail_empty_text" msgid="4910015762433302860">"Жупташкан түзмөктөр жок"</string>
     <string name="quick_settings_brightness_label" msgid="6968372297018755815">"Жарыктыгы"</string>
     <string name="quick_settings_rotation_unlocked_label" msgid="7305323031808150099">"Автоматтык бурулуу"</string>
-    <!-- no translation found for accessibility_quick_settings_rotation (4231661040698488779) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_rotation_value (1428962304214992318) -->
-    <skip />
+    <string name="accessibility_quick_settings_rotation" msgid="4231661040698488779">"Экранды авто-тегеретүү"</string>
+    <string name="accessibility_quick_settings_rotation_value" msgid="1428962304214992318">"<xliff:g id="ID_1">%s</xliff:g> деп коюлду"</string>
     <string name="quick_settings_rotation_locked_label" msgid="6359205706154282377">"Буруу аракети кулпуланган"</string>
     <string name="quick_settings_rotation_locked_portrait_label" msgid="5102691921442135053">"Тигинен"</string>
     <string name="quick_settings_rotation_locked_landscape_label" msgid="8553157770061178719">"Туурасынан"</string>
@@ -294,8 +286,7 @@
     <string name="quick_settings_wifi_not_connected" msgid="7171904845345573431">"Байланыш жок"</string>
     <string name="quick_settings_wifi_no_network" msgid="2221993077220856376">"Желе жок"</string>
     <string name="quick_settings_wifi_off_label" msgid="7558778100843885864">"Wi-Fi өчүк"</string>
-    <!-- no translation found for quick_settings_wifi_on_label (7607810331387031235) -->
-    <skip />
+    <string name="quick_settings_wifi_on_label" msgid="7607810331387031235">"Wi-Fi күйүк"</string>
     <string name="quick_settings_wifi_detail_empty_text" msgid="269990350383909226">"Бир дагы жеткиликтүү Wi-Fi тармагы жок"</string>
     <string name="quick_settings_cast_title" msgid="7709016546426454729">"Тышкы экранга чыгаруу"</string>
     <string name="quick_settings_casting" msgid="6601710681033353316">"Тышкы экранга чыгарылууда"</string>
@@ -349,7 +340,7 @@
     <string name="zen_silence_introduction" msgid="3137882381093271568">"Ушуну менен эскертүүлөрдүн, музыканын, видеолордун жана оюндардын үндөрү жана дирилдөөлөрү сыяктуу нерселердин БААРЫ өчүрүлөт."</string>
     <string name="keyguard_more_overflow_text" msgid="9195222469041601365">"+<xliff:g id="NUMBER_OF_NOTIFICATIONS">%d</xliff:g>"</string>
     <string name="speed_bump_explanation" msgid="1288875699658819755">"Анчейин шашылыш эмес эскертмелер төмөндө"</string>
-    <string name="notification_tap_again" msgid="8524949573675922138">"Ачуу үчүн кайра тийиңиз"</string>
+    <string name="notification_tap_again" msgid="7590196980943943842">"Ачуу үчүн кайра таптап коюңуз"</string>
     <string name="keyguard_unlock" msgid="8043466894212841998">"Кулпуну ачуу үчүн серпип коюңуз"</string>
     <string name="phone_hint" msgid="4872890986869209950">"Сүрөтчөнү серпип телефонго өтүңүз"</string>
     <string name="voice_hint" msgid="8939888732119726665">"Сүрөтчөнү серпип үн жардамчысына өтүңүз"</string>
@@ -427,7 +418,7 @@
     <string name="accessibility_volume_expand" msgid="5946812790999244205">"Жайып көрсөтүү"</string>
     <string name="accessibility_volume_collapse" msgid="3609549593031810875">"Жыйнап коюу"</string>
     <string name="screen_pinning_title" msgid="3273740381976175811">"Экран кадалган"</string>
-    <string name="screen_pinning_description" msgid="3577937698406151604">"Бул бошотулмайынча көрүнө берет. Бошотуу үчүн, \"Артка\" баскычын басып туруңуз."</string>
+    <string name="screen_pinning_description" msgid="7238941806855968768">"Ал бошотулмайынча көрүнө берет. Бошотуу үчүн, \"Артка\" баскычын басып, кармап туруңуз."</string>
     <string name="screen_pinning_positive" msgid="3783985798366751226">"Түшүндүм"</string>
     <string name="screen_pinning_negative" msgid="3741602308343880268">"Жок, рахмат"</string>
     <string name="quick_settings_reset_confirmation_title" msgid="748792586749897883">"<xliff:g id="TILE_LABEL">%1$s</xliff:g> жашырылсынбы?"</string>
@@ -437,15 +428,13 @@
     <string name="volumeui_prompt_allow" msgid="7954396902482228786">"Уруксат берүү"</string>
     <string name="volumeui_prompt_deny" msgid="5720663643411696731">"Жок"</string>
     <string name="volumeui_notification_title" msgid="4906770126345910955">"<xliff:g id="APP_NAME">%1$s</xliff:g> үндү катуулатуу диалогу"</string>
-    <string name="volumeui_notification_text" msgid="1826889705095768656">"Түпнусканы калыбына келтирүү үчүн тийип коюңуз."</string>
+    <string name="volumeui_notification_text" msgid="8819536904234337445">"Үндүн баштапкы деңгээлин калыбына келтирүү үчүн таптап коюңуз."</string>
     <string name="managed_profile_foreground_toast" msgid="5421487114739245972">"Жумуш профилиңизди колдонуп жатасыз"</string>
     <string name="volume_stream_content_description_unmute" msgid="4436631538779230857">"%1$s. Үнүн чыгаруу үчүн таптап коюңуз."</string>
     <string name="volume_stream_content_description_vibrate" msgid="1187944970457807498">"%1$s. Дирилдөөгө коюу үчүн таптап коюңуз. Атайын мүмкүнчүлүктөр кызматынын үнүн өчүрүп койсо болот."</string>
     <string name="volume_stream_content_description_mute" msgid="3625049841390467354">"%1$s. Үнүн өчүрүү үчүн таптап коюңуз. Атайын мүмкүнчүлүктөр кызматынын үнүн өчүрүп койсо болот."</string>
-    <!-- no translation found for volume_dialog_accessibility_shown_message (1834631467074259998) -->
-    <skip />
-    <!-- no translation found for volume_dialog_accessibility_dismissed_message (51543526013711399) -->
-    <skip />
+    <string name="volume_dialog_accessibility_shown_message" msgid="1834631467074259998">"%s үндү башкаруу эсементтери көрсөтүлгөн. Көз жаздымда калтыруу үчүн өйдө серпип коюңуз."</string>
+    <string name="volume_dialog_accessibility_dismissed_message" msgid="51543526013711399">"Үндү башкаруу элементтери жашырылган"</string>
     <string name="system_ui_tuner" msgid="708224127392452018">"System UI Tuner"</string>
     <string name="show_battery_percentage" msgid="5444136600512968798">"Батарянын кубатнын деңгээли пайыз менен көрсөтлсүн"</string>
     <string name="show_battery_percentage_summary" msgid="3215025775576786037">"Түзмөк кубаттанбай турганда, батареянын деңгээли статус тилкесинде көрүнүп турат"</string>
@@ -631,7 +620,7 @@
     <string name="accessibility_action_divider_top_70" msgid="5090779195650364522">"Үстүнкү экранды 70%"</string>
     <string name="accessibility_action_divider_top_50" msgid="6385859741925078668">"Үстүнкү экранды 50%"</string>
     <string name="accessibility_action_divider_top_30" msgid="6201455163864841205">"Үстүнкү экранды 30%"</string>
-    <string name="accessibility_action_divider_bottom_full" msgid="301433196679548001">"Астынкы экранды толук экран режимине өткөрүү"</string>
+    <string name="accessibility_action_divider_bottom_full" msgid="301433196679548001">"Ылдыйкы экранды толук экран режимине өткөрүү"</string>
     <string name="accessibility_qs_edit_tile_label" msgid="8374924053307764245">"Орду - <xliff:g id="POSITION">%1$d</xliff:g>, <xliff:g id="TILE_NAME">%2$s</xliff:g>. Түзөтүү үчүн эки жолу таптаңыз."</string>
     <string name="accessibility_qs_edit_add_tile_label" msgid="8133209638023882667">"<xliff:g id="TILE_NAME">%1$s</xliff:g>. Кошуу үчүн эки жолу таптаңыз."</string>
     <string name="accessibility_qs_edit_position_label" msgid="5055306305919289819">"Орду - <xliff:g id="POSITION">%1$d</xliff:g>. Тандоо үчүн эки жолу таптаңыз."</string>
@@ -641,27 +630,17 @@
     <string name="accessibility_qs_edit_tile_removed" msgid="8584304916627913440">"<xliff:g id="TILE_NAME">%1$s</xliff:g> алынып салынды"</string>
     <string name="accessibility_qs_edit_tile_moved" msgid="4343693412689365038">"<xliff:g id="TILE_NAME">%1$s</xliff:g> деген <xliff:g id="POSITION">%2$d</xliff:g>-орунга жылдырылды"</string>
     <string name="accessibility_desc_quick_settings_edit" msgid="8073587401747016103">"Ыкчам жөндөөлөр түзөткүчү."</string>
-    <!-- no translation found for accessibility_desc_notification_icon (8352414185263916335) -->
-    <skip />
+    <string name="accessibility_desc_notification_icon" msgid="8352414185263916335">"<xliff:g id="ID_1">%1$s</xliff:g> эскертмеси: <xliff:g id="ID_2">%2$s</xliff:g>"</string>
     <string name="dock_forced_resizable" msgid="5914261505436217520">"Колдонмодо экран бөлүнбөшү мүмкүн."</string>
     <string name="dock_non_resizeble_failed_to_dock_text" msgid="3871617304250207291">"Колдонмодо экран бөлүнбөйт."</string>
-    <!-- no translation found for accessibility_quick_settings_settings (6132460890024942157) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_expand (2375165227880477530) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_collapse (1792625797142648105) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_alarm_set (1863000242431528676) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_user (1567445362870421770) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_no_internet (31890692343084075) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_open_details (4230931801728005194) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_open_settings (7806613775728380737) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_edit (7839992848995240393) -->
-    <skip />
+    <string name="accessibility_quick_settings_settings" msgid="6132460890024942157">"Жөндөөлөрдү ачуу."</string>
+    <string name="accessibility_quick_settings_expand" msgid="2375165227880477530">"Ыкчам жөндөөлөрдү ачуу."</string>
+    <string name="accessibility_quick_settings_collapse" msgid="1792625797142648105">"Ыкчам жөндөөлөрдү жабуу."</string>
+    <string name="accessibility_quick_settings_alarm_set" msgid="1863000242431528676">"Ойготкуч коюлду."</string>
+    <string name="accessibility_quick_settings_user" msgid="1567445362870421770">"<xliff:g id="ID_1">%s</xliff:g> каттоо эсеби аркылуу кирди"</string>
+    <string name="accessibility_quick_settings_no_internet" msgid="31890692343084075">"Интернет жок."</string>
+    <string name="accessibility_quick_settings_open_details" msgid="4230931801728005194">"Чоо-жайын ачуу."</string>
+    <string name="accessibility_quick_settings_open_settings" msgid="7806613775728380737">"<xliff:g id="ID_1">%s</xliff:g> жөндөөлөрүн ачуу."</string>
+    <string name="accessibility_quick_settings_edit" msgid="7839992848995240393">"Жөндөөлөрдүн иретин өзгөртүү."</string>
     <string name="accessibility_quick_settings_page" msgid="5032979051755200721">"<xliff:g id="ID_2">%2$d</xliff:g> ичинен <xliff:g id="ID_1">%1$d</xliff:g>-бет"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-ky-rKG/strings_tv.xml b/packages/SystemUI/res/values-ky-rKG/strings_tv.xml
index 3fadaba..771e395 100644
--- a/packages/SystemUI/res/values-ky-rKG/strings_tv.xml
+++ b/packages/SystemUI/res/values-ky-rKG/strings_tv.xml
@@ -24,10 +24,8 @@
     <string name="pip_play" msgid="674145557658227044">"Ойнотуу"</string>
     <string name="pip_pause" msgid="8412075640017218862">"Тындыруу"</string>
     <string name="pip_hold_home" msgid="340086535668778109"><b>"БАШКЫ БЕТ"</b>" басып туруп PIP\'ти башкарыңыз"</string>
-    <!-- no translation found for pip_onboarding_title (7850436557670253991) -->
-    <skip />
-    <!-- no translation found for pip_onboarding_description (4028124563309465267) -->
-    <skip />
+    <string name="pip_onboarding_title" msgid="7850436557670253991">"Сүрөт ичиндеги сүрөт"</string>
+    <string name="pip_onboarding_description" msgid="4028124563309465267">"Ушуну менен, башка видео ойнотмоюнча видеоңуз көрсөтүлө берет. Аны башкаруу үчүн "<b>"БАШКЫ БЕТ"</b>" баскычын басып, кармап туруңуз."</string>
     <string name="pip_onboarding_button" msgid="3957426748484904611">"Түшүндүм"</string>
     <string name="recents_tv_dismiss" msgid="3555093879593377731">"Көз жаздымда калтыруу"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-lo-rLA/strings.xml b/packages/SystemUI/res/values-lo-rLA/strings.xml
index 74c07c2..c0e1520 100644
--- a/packages/SystemUI/res/values-lo-rLA/strings.xml
+++ b/packages/SystemUI/res/values-lo-rLA/strings.xml
@@ -71,7 +71,7 @@
     <string name="screenshot_saving_title" msgid="8242282144535555697">"ກຳລັງບັນທຶກພາບໜ້າຈໍ..."</string>
     <string name="screenshot_saving_text" msgid="2419718443411738818">"ກຳລັງບັນທຶກພາບໜ້າຈໍ."</string>
     <string name="screenshot_saved_title" msgid="6461865960961414961">"ຖ່າຍຮູບໜ້າຈໍແລ້ວ"</string>
-    <string name="screenshot_saved_text" msgid="1152839647677558815">"ແຕະເພື່ອເບິ່ງພາບໜ້າຈໍຂອງທ່ານ."</string>
+    <string name="screenshot_saved_text" msgid="2685605830386712477">"ແຕະເພື່ອເບິ່ງພາບຖ່າຍໜ້າຈໍຂອງທ່ານ."</string>
     <string name="screenshot_failed_title" msgid="705781116746922771">"ບໍ່ສາມາດຖ່າຍຮູບໜ້າຈໍໄດ້"</string>
     <string name="screenshot_failed_to_save_unknown_text" msgid="7887826345701753830">"ເກີດບັນຫາໃນການບັນທຶກພາບໜ້າຈໍຂອງທ່ານ."</string>
     <string name="screenshot_failed_to_save_text" msgid="2592658083866306296">"ບໍ່ສາມາດຖ່າຍຮູບໜ້າຈໍໄດ້ເນື່ອງຈາກພື້ນທີ່ຈັດເກັບຂໍ້ມູນມີຈຳກັດ."</string>
@@ -340,7 +340,7 @@
     <string name="zen_silence_introduction" msgid="3137882381093271568">"ອັນ​ນີ້ບ​ລັອກ​ທຸກ​ສຽງ ແລະ​ການ​ສັ່ນ, ລວມ​ທັງ​ຈາກ​ໂມງ​ປຸກ, ເພງ, ວິ​ດີ​ໂອ, ແລະ​ເກມ."</string>
     <string name="keyguard_more_overflow_text" msgid="9195222469041601365">"+<xliff:g id="NUMBER_OF_NOTIFICATIONS">%d</xliff:g>"</string>
     <string name="speed_bump_explanation" msgid="1288875699658819755">"ການ​ແຈ້ງເຕືອນ​ທີ່​ສຳຄັນ​ໜ້ອຍ​ກວ່າ​ຢູ່​ດ້ານ​ລຸ່ມ"</string>
-    <string name="notification_tap_again" msgid="8524949573675922138">"​ແຕະ​ອີກ​ເທື່ອ​ນຶ່ງ​ເພື່ອ​ເປີດ"</string>
+    <string name="notification_tap_again" msgid="7590196980943943842">"ແຕະ​ອີກ​ຄັ້ງ​ເພື່ອ​ເປີດ"</string>
     <string name="keyguard_unlock" msgid="8043466894212841998">"ເລື່ອນ​ຂຶ້ນ​ເພື່ອ​ປົດ​ລັອກ"</string>
     <string name="phone_hint" msgid="4872890986869209950">"ປັດ​ຈາກ​ໄອ​ຄອນ​ສຳ​ລັບ​ໂທ​ລະ​ສັບ"</string>
     <string name="voice_hint" msgid="8939888732119726665">"ປັດ​ຈາກ​ໄອ​ຄອນ​ສຳ​ລັບ​ການ​ຊ່ວຍ​ທາງ​ສຽງ"</string>
@@ -418,7 +418,7 @@
     <string name="accessibility_volume_expand" msgid="5946812790999244205">"ຂະຫຍາຍ"</string>
     <string name="accessibility_volume_collapse" msgid="3609549593031810875">"ຫຍໍ້ລົງ"</string>
     <string name="screen_pinning_title" msgid="3273740381976175811">"ປັກ​ໝຸດໜ້າ​ຈໍ​ແລ້ວ"</string>
-    <string name="screen_pinning_description" msgid="3577937698406151604">"ອັນ​ນີ້​ຮັກ​ສາ​ມັນ​ໄວ້​ໃນ​ມຸມມອງ​ຂອງ​ທ່ານ​ຈົນ​ກວ່າ​ທ່ານ​ຖອດ​ໝຸດ. ​ແຕະ​ປຸ່ມ ກັບ​ຄືນ​ ຄ້າງ​ໄວ້​ເພື່ອ​ຖອດ​ໝຸດ."</string>
+    <string name="screen_pinning_description" msgid="7238941806855968768">"ນີ້ຈະເຮັດໃຫ້ມັນຢູ່ໃນມຸມມອງຈົນກວ່າທ່ານຈະຍົກເລີກປັກໝຸດ. ໃຫ້ແຕະປຸ່ມກັບຄືນຄ້າງໄວ້ເພື່ອຍົກເລີກການປັກໝຸດ."</string>
     <string name="screen_pinning_positive" msgid="3783985798366751226">"ເຂົ້າໃຈແລ້ວ"</string>
     <string name="screen_pinning_negative" msgid="3741602308343880268">"ບໍ່, ຂອບໃຈ"</string>
     <string name="quick_settings_reset_confirmation_title" msgid="748792586749897883">"ເຊື່ອງ <xliff:g id="TILE_LABEL">%1$s</xliff:g> ຫຼື​ບໍ່?"</string>
@@ -428,7 +428,7 @@
     <string name="volumeui_prompt_allow" msgid="7954396902482228786">"ອະນຸຍາດ"</string>
     <string name="volumeui_prompt_deny" msgid="5720663643411696731">"ປະຕິເສດ"</string>
     <string name="volumeui_notification_title" msgid="4906770126345910955">"<xliff:g id="APP_NAME">%1$s</xliff:g> ແມ່ນ​ໜ້າ​ຕ່າງ​ລະ​ດັບ​ສຽງ"</string>
-    <string name="volumeui_notification_text" msgid="1826889705095768656">"ສໍາ​ຜັດ​ເພື່ອກູ້​ຄືນ​ຕົ້ນ​ສະ​ບັບ​."</string>
+    <string name="volumeui_notification_text" msgid="8819536904234337445">"ແຕະເພື່ອກູ້ຕົ້ນສະບັບຄືນມາ."</string>
     <string name="managed_profile_foreground_toast" msgid="5421487114739245972">"ທ່ານກຳລັງໃຊ້ໂປຣໄຟລ໌ບ່ອນເຮັດວຽກຂອງທ່ານ"</string>
     <string name="volume_stream_content_description_unmute" msgid="4436631538779230857">"%1$s. ແຕະເພື່ອເຊົາປິດສຽງ."</string>
     <string name="volume_stream_content_description_vibrate" msgid="1187944970457807498">"%1$s. ແຕະເພື່ອຕັ້ງເປັນສັ່ນ. ບໍລິການຊ່ວຍເຂົ້າເຖິງອາດຖືກປິດສຽງໄວ້."</string>
diff --git a/packages/SystemUI/res/values-lt/strings.xml b/packages/SystemUI/res/values-lt/strings.xml
index e86528a..a44b54d 100644
--- a/packages/SystemUI/res/values-lt/strings.xml
+++ b/packages/SystemUI/res/values-lt/strings.xml
@@ -73,7 +73,7 @@
     <string name="screenshot_saving_title" msgid="8242282144535555697">"Išsaugoma ekrano kopija..."</string>
     <string name="screenshot_saving_text" msgid="2419718443411738818">"Išsaugoma ekrano kopija."</string>
     <string name="screenshot_saved_title" msgid="6461865960961414961">"Ekrano kopija užfiksuota."</string>
-    <string name="screenshot_saved_text" msgid="1152839647677558815">"Palieskite, kad peržiūrėtumėte ekrano kopiją."</string>
+    <string name="screenshot_saved_text" msgid="2685605830386712477">"Palieskite, kad peržiūrėtumėte ekrano kopiją."</string>
     <string name="screenshot_failed_title" msgid="705781116746922771">"Nepavyko užfiksuoti ekrano kopijos."</string>
     <string name="screenshot_failed_to_save_unknown_text" msgid="7887826345701753830">"Išsaugant ekrano kopiją iškilo problemų."</string>
     <string name="screenshot_failed_to_save_text" msgid="2592658083866306296">"Negalima išsaugoti ekrano kopijos dėl ribotos saugyklos vietos."</string>
@@ -120,8 +120,7 @@
     <string name="accessibility_data_signal_full" msgid="2708384608124519369">"Stiprus duomenų signalas."</string>
     <string name="accessibility_wifi_name" msgid="7202151365171148501">"Prisijungta prie „<xliff:g id="WIFI">%s</xliff:g>“."</string>
     <string name="accessibility_bluetooth_name" msgid="8441517146585531676">"Prisijungta prie „<xliff:g id="BLUETOOTH">%s</xliff:g>“."</string>
-    <!-- no translation found for accessibility_cast_name (4026393061247081201) -->
-    <skip />
+    <string name="accessibility_cast_name" msgid="4026393061247081201">"Prisijungta prie <xliff:g id="CAST">%s</xliff:g>."</string>
     <string name="accessibility_no_wimax" msgid="4329180129727630368">"Nėra „WiMAX“ signalo."</string>
     <string name="accessibility_wimax_one_bar" msgid="4170994299011863648">"Viena „WiMAX“ signalo juosta."</string>
     <string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"Dvi „WiMAX“ signalo juostos."</string>
@@ -152,17 +151,14 @@
     <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Kraštas"</string>
     <string name="accessibility_data_connection_wifi" msgid="2324496756590645221">"Wi-Fi"</string>
     <string name="accessibility_no_sim" msgid="8274017118472455155">"Nėra SIM kortelės."</string>
-    <!-- no translation found for accessibility_cell_data (7080312242791850520) -->
-    <skip />
-    <!-- no translation found for accessibility_cell_data_on (4310018593519761767) -->
-    <skip />
+    <string name="accessibility_cell_data" msgid="7080312242791850520">"Mobiliojo ryšio duomenys"</string>
+    <string name="accessibility_cell_data_on" msgid="4310018593519761767">"Mobiliojo ryšio duomenys įjungti"</string>
     <string name="accessibility_cell_data_off" msgid="8000803571751407635">"Mobiliojo ryšio duomenys išjungti"</string>
     <string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"„Bluetooth“ įrenginio kaip modemo naudojimas."</string>
     <string name="accessibility_airplane_mode" msgid="834748999790763092">"Lėktuvo režimas."</string>
     <string name="accessibility_no_sims" msgid="3957997018324995781">"Nėra SIM kortelės."</string>
     <string name="accessibility_carrier_network_change_mode" msgid="4017301580441304305">"Keičiamas operatoriaus tinklas."</string>
-    <!-- no translation found for accessibility_battery_details (7645516654955025422) -->
-    <skip />
+    <string name="accessibility_battery_details" msgid="7645516654955025422">"Atidaryti išsamią akumuliatoriaus informaciją"</string>
     <string name="accessibility_battery_level" msgid="7451474187113371965">"Akumuliatorius: <xliff:g id="NUMBER">%d</xliff:g> proc."</string>
     <string name="accessibility_battery_level_charging" msgid="1147587904439319646">"Įkraunamas akumuliatorius, <xliff:g id="BATTERY_PERCENTAGE">%d</xliff:g> proc."</string>
     <string name="accessibility_settings_button" msgid="799583911231893380">"Sistemos nustatymai"</string>
@@ -202,13 +198,11 @@
     <string name="accessibility_quick_settings_dnd_priority_on" msgid="1448402297221249355">"Funkcija „Netrukdyti“ įjungta. Tik prioritetiniai įvykiai."</string>
     <string name="accessibility_quick_settings_dnd_none_on" msgid="6882582132662613537">"Įjungta funkcija „Netrukdyti“, visiška tyla."</string>
     <string name="accessibility_quick_settings_dnd_alarms_on" msgid="9152834845587554157">"Funkcija „Netrukdyti“ įjungta. Leidžiami tik signalai."</string>
-    <!-- no translation found for accessibility_quick_settings_dnd (6607873236717185815) -->
-    <skip />
+    <string name="accessibility_quick_settings_dnd" msgid="6607873236717185815">"Netrukdyti."</string>
     <string name="accessibility_quick_settings_dnd_off" msgid="2371832603753738581">"Funkcija „Netrukdyti“ išjungta."</string>
     <string name="accessibility_quick_settings_dnd_changed_off" msgid="898107593453022935">"Funkcija „Netrukdyti“ išjungta."</string>
     <string name="accessibility_quick_settings_dnd_changed_on" msgid="4483780856613561039">"Funkcija „Netrukdyti“ įjungta."</string>
-    <!-- no translation found for accessibility_quick_settings_bluetooth (6341675755803320038) -->
-    <skip />
+    <string name="accessibility_quick_settings_bluetooth" msgid="6341675755803320038">"„Bluetooth“."</string>
     <string name="accessibility_quick_settings_bluetooth_off" msgid="2133631372372064339">"„Bluetooth“ išjungtas."</string>
     <string name="accessibility_quick_settings_bluetooth_on" msgid="7681999166216621838">"„Bluetooth“ įjungtas."</string>
     <string name="accessibility_quick_settings_bluetooth_connecting" msgid="6953242966685343855">"Prijungiamas „Bluetooth“."</string>
@@ -274,10 +268,8 @@
     <string name="quick_settings_bluetooth_detail_empty_text" msgid="4910015762433302860">"Nėra pasiekiamų susietų įrenginių"</string>
     <string name="quick_settings_brightness_label" msgid="6968372297018755815">"Šviesumas"</string>
     <string name="quick_settings_rotation_unlocked_label" msgid="7305323031808150099">"Automatinis kaitaliojimas"</string>
-    <!-- no translation found for accessibility_quick_settings_rotation (4231661040698488779) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_rotation_value (1428962304214992318) -->
-    <skip />
+    <string name="accessibility_quick_settings_rotation" msgid="4231661040698488779">"Automatiškai sukti ekraną"</string>
+    <string name="accessibility_quick_settings_rotation_value" msgid="1428962304214992318">"Nustatyti kaip <xliff:g id="ID_1">%s</xliff:g>"</string>
     <string name="quick_settings_rotation_locked_label" msgid="6359205706154282377">"Kaitaliojimas užrakintas"</string>
     <string name="quick_settings_rotation_locked_portrait_label" msgid="5102691921442135053">"Stačias"</string>
     <string name="quick_settings_rotation_locked_landscape_label" msgid="8553157770061178719">"Gulsčias"</string>
@@ -296,8 +288,7 @@
     <string name="quick_settings_wifi_not_connected" msgid="7171904845345573431">"Neprisijungta"</string>
     <string name="quick_settings_wifi_no_network" msgid="2221993077220856376">"Tinklo nėra"</string>
     <string name="quick_settings_wifi_off_label" msgid="7558778100843885864">"„Wi-Fi“ išjungta"</string>
-    <!-- no translation found for quick_settings_wifi_on_label (7607810331387031235) -->
-    <skip />
+    <string name="quick_settings_wifi_on_label" msgid="7607810331387031235">"„Wi-Fi“ įjungtas"</string>
     <string name="quick_settings_wifi_detail_empty_text" msgid="269990350383909226">"Nėra jokių pasiekiamų „Wi-Fi“ tinklų"</string>
     <string name="quick_settings_cast_title" msgid="7709016546426454729">"Perdavimas"</string>
     <string name="quick_settings_casting" msgid="6601710681033353316">"Perduodama"</string>
@@ -351,7 +342,7 @@
     <string name="zen_silence_introduction" msgid="3137882381093271568">"Taip bus užblokuoti VISI garsai ir vibravimas, įskaitant signalų, muzikos, vaizdo įrašų ir žaidimų garsus ir vibravimą."</string>
     <string name="keyguard_more_overflow_text" msgid="9195222469041601365">"+<xliff:g id="NUMBER_OF_NOTIFICATIONS">%d</xliff:g>"</string>
     <string name="speed_bump_explanation" msgid="1288875699658819755">"Mažiau skubūs pranešimai toliau"</string>
-    <string name="notification_tap_again" msgid="8524949573675922138">"Palieskite dar kartą, kad atidarytumėte"</string>
+    <string name="notification_tap_again" msgid="7590196980943943842">"Palieskite dar kartą, kad atidarytumėte"</string>
     <string name="keyguard_unlock" msgid="8043466894212841998">"Perbraukite aukštyn, kad atrakintumėte"</string>
     <string name="phone_hint" msgid="4872890986869209950">"Perbraukite iš telefono piktogramos"</string>
     <string name="voice_hint" msgid="8939888732119726665">"Perbraukite iš „Voice Assist“ piktogramos"</string>
@@ -429,7 +420,7 @@
     <string name="accessibility_volume_expand" msgid="5946812790999244205">"Išskleisti"</string>
     <string name="accessibility_volume_collapse" msgid="3609549593031810875">"Sutraukti"</string>
     <string name="screen_pinning_title" msgid="3273740381976175811">"Ekranas prisegtas"</string>
-    <string name="screen_pinning_description" msgid="3577937698406151604">"Tai bus rodoma, kol atsegsite. Kad atsegtumėte, palieskite ir palaikykite „Atgal“."</string>
+    <string name="screen_pinning_description" msgid="7238941806855968768">"Tai bus rodoma, kol atsegsite. Palieskite ir palaikykite „Atgal“, kad atsegtumėte."</string>
     <string name="screen_pinning_positive" msgid="3783985798366751226">"Supratau"</string>
     <string name="screen_pinning_negative" msgid="3741602308343880268">"Ne, ačiū"</string>
     <string name="quick_settings_reset_confirmation_title" msgid="748792586749897883">"Slėpti „<xliff:g id="TILE_LABEL">%1$s</xliff:g>“?"</string>
@@ -439,15 +430,13 @@
     <string name="volumeui_prompt_allow" msgid="7954396902482228786">"Leisti"</string>
     <string name="volumeui_prompt_deny" msgid="5720663643411696731">"Atmesti"</string>
     <string name="volumeui_notification_title" msgid="4906770126345910955">"„<xliff:g id="APP_NAME">%1$s</xliff:g>“ yra garsumo valdymo dialogo langas"</string>
-    <string name="volumeui_notification_text" msgid="1826889705095768656">"Palieskite, kad atkurtumėte originalą."</string>
+    <string name="volumeui_notification_text" msgid="8819536904234337445">"Palieskite, kad atkurtumėte originalą."</string>
     <string name="managed_profile_foreground_toast" msgid="5421487114739245972">"Naudojate darbo profilį"</string>
     <string name="volume_stream_content_description_unmute" msgid="4436631538779230857">"%1$s. Palieskite, kad įjungtumėte garsą."</string>
     <string name="volume_stream_content_description_vibrate" msgid="1187944970457807498">"%1$s. Palieskite, kad nustatytumėte vibravimą. Gali būti nutildytos pritaikymo neįgaliesiems paslaugos."</string>
     <string name="volume_stream_content_description_mute" msgid="3625049841390467354">"%1$s. Palieskite, kad nutildytumėte. Gali būti nutildytos pritaikymo neįgaliesiems paslaugos."</string>
-    <!-- no translation found for volume_dialog_accessibility_shown_message (1834631467074259998) -->
-    <skip />
-    <!-- no translation found for volume_dialog_accessibility_dismissed_message (51543526013711399) -->
-    <skip />
+    <string name="volume_dialog_accessibility_shown_message" msgid="1834631467074259998">"Rodomi „%s“ garsumo valdikliai. Perbraukite į viršų, kad atsisakytumėte."</string>
+    <string name="volume_dialog_accessibility_dismissed_message" msgid="51543526013711399">"Garsumo valdikliai paslėpti"</string>
     <string name="system_ui_tuner" msgid="708224127392452018">"Sistemos naudotojo sąsajos derinimo priemonė"</string>
     <string name="show_battery_percentage" msgid="5444136600512968798">"Rodyti įterptą akumuliat. įkrovos procentinę vertę"</string>
     <string name="show_battery_percentage_summary" msgid="3215025775576786037">"Rodyti akumuliatoriaus įkrovos lygio procentinę vertę būsenos juostos piktogramoje, kai įrenginys nėra įkraunamas"</string>
@@ -643,27 +632,17 @@
     <string name="accessibility_qs_edit_tile_removed" msgid="8584304916627913440">"Išklotinės elementas „<xliff:g id="TILE_NAME">%1$s</xliff:g>“ pašalintas"</string>
     <string name="accessibility_qs_edit_tile_moved" msgid="4343693412689365038">"Išklotinės elementas „<xliff:g id="TILE_NAME">%1$s</xliff:g>“ perkeltas į <xliff:g id="POSITION">%2$d</xliff:g> padėtį"</string>
     <string name="accessibility_desc_quick_settings_edit" msgid="8073587401747016103">"Sparčiųjų nustatymų redagavimo priemonė."</string>
-    <!-- no translation found for accessibility_desc_notification_icon (8352414185263916335) -->
-    <skip />
+    <string name="accessibility_desc_notification_icon" msgid="8352414185263916335">"„<xliff:g id="ID_1">%1$s</xliff:g>“ pranešimas: <xliff:g id="ID_2">%2$s</xliff:g>"</string>
     <string name="dock_forced_resizable" msgid="5914261505436217520">"Programa gali neveikti naudojant skaidytą ekraną."</string>
     <string name="dock_non_resizeble_failed_to_dock_text" msgid="3871617304250207291">"Programoje nepalaikomas skaidytas ekranas."</string>
-    <!-- no translation found for accessibility_quick_settings_settings (6132460890024942157) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_expand (2375165227880477530) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_collapse (1792625797142648105) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_alarm_set (1863000242431528676) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_user (1567445362870421770) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_no_internet (31890692343084075) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_open_details (4230931801728005194) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_open_settings (7806613775728380737) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_edit (7839992848995240393) -->
-    <skip />
+    <string name="accessibility_quick_settings_settings" msgid="6132460890024942157">"Atidaryti nustatymus."</string>
+    <string name="accessibility_quick_settings_expand" msgid="2375165227880477530">"Atidaryti sparčiuosius nustatymus."</string>
+    <string name="accessibility_quick_settings_collapse" msgid="1792625797142648105">"Uždaryti sparčiuosius nustatymus."</string>
+    <string name="accessibility_quick_settings_alarm_set" msgid="1863000242431528676">"Signalas nustatytas."</string>
+    <string name="accessibility_quick_settings_user" msgid="1567445362870421770">"Prisijungta kaip <xliff:g id="ID_1">%s</xliff:g>"</string>
+    <string name="accessibility_quick_settings_no_internet" msgid="31890692343084075">"Nėra interneto ryšio."</string>
+    <string name="accessibility_quick_settings_open_details" msgid="4230931801728005194">"Atidaryti išsamią informaciją."</string>
+    <string name="accessibility_quick_settings_open_settings" msgid="7806613775728380737">"Atidaryti „<xliff:g id="ID_1">%s</xliff:g>“ nustatymus."</string>
+    <string name="accessibility_quick_settings_edit" msgid="7839992848995240393">"Redaguoti nustatymų tvarką."</string>
     <string name="accessibility_quick_settings_page" msgid="5032979051755200721">"<xliff:g id="ID_1">%1$d</xliff:g> psl. iš <xliff:g id="ID_2">%2$d</xliff:g>"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-lt/strings_tv.xml b/packages/SystemUI/res/values-lt/strings_tv.xml
index ab66b77..e263da4 100644
--- a/packages/SystemUI/res/values-lt/strings_tv.xml
+++ b/packages/SystemUI/res/values-lt/strings_tv.xml
@@ -24,10 +24,8 @@
     <string name="pip_play" msgid="674145557658227044">"Leisti"</string>
     <string name="pip_pause" msgid="8412075640017218862">"Pristabdyti"</string>
     <string name="pip_hold_home" msgid="340086535668778109">"Kad vald. PIP, pal. pasp. m. "<b>"PAGRINDINIS"</b></string>
-    <!-- no translation found for pip_onboarding_title (7850436557670253991) -->
-    <skip />
-    <!-- no translation found for pip_onboarding_description (4028124563309465267) -->
-    <skip />
+    <string name="pip_onboarding_title" msgid="7850436557670253991">"Vaizdas vaizde"</string>
+    <string name="pip_onboarding_description" msgid="4028124563309465267">"Vaizdo įrašas bus rodomas, kol paleisite kitą vaizdo įrašą. Jei norite valdyti, palaikykite paspaudę mygtuką "<b>"HOME"</b>"."</string>
     <string name="pip_onboarding_button" msgid="3957426748484904611">"Supratau"</string>
     <string name="recents_tv_dismiss" msgid="3555093879593377731">"Atsisakyti"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-lv/strings.xml b/packages/SystemUI/res/values-lv/strings.xml
index e5fcf58..2754268 100644
--- a/packages/SystemUI/res/values-lv/strings.xml
+++ b/packages/SystemUI/res/values-lv/strings.xml
@@ -72,7 +72,7 @@
     <string name="screenshot_saving_title" msgid="8242282144535555697">"Notiek ekrānuzņēmuma saglabāšana..."</string>
     <string name="screenshot_saving_text" msgid="2419718443411738818">"Notiek ekrānuzņēmuma saglabāšana."</string>
     <string name="screenshot_saved_title" msgid="6461865960961414961">"Ekrānuzņēmums ir uzņemts."</string>
-    <string name="screenshot_saved_text" msgid="1152839647677558815">"Pieskarieties, lai skatītu ekrānuzņēmumu."</string>
+    <string name="screenshot_saved_text" msgid="2685605830386712477">"Pieskarieties, lai skatītu ekrānuzņēmumu."</string>
     <string name="screenshot_failed_title" msgid="705781116746922771">"Nevarēja uzņemt ekrānuzņēmumu."</string>
     <string name="screenshot_failed_to_save_unknown_text" msgid="7887826345701753830">"Saglabājot ekrānuzņēmumu, radās problēma."</string>
     <string name="screenshot_failed_to_save_text" msgid="2592658083866306296">"Nevar saglabāt ekrānuzņēmumu, jo krātuvē nepietiek vietas."</string>
@@ -119,8 +119,7 @@
     <string name="accessibility_data_signal_full" msgid="2708384608124519369">"Pilna piekļuve datu signālam."</string>
     <string name="accessibility_wifi_name" msgid="7202151365171148501">"Ir izveidots savienojums ar <xliff:g id="WIFI">%s</xliff:g>."</string>
     <string name="accessibility_bluetooth_name" msgid="8441517146585531676">"Ir izveidots savienojum ar <xliff:g id="BLUETOOTH">%s</xliff:g>."</string>
-    <!-- no translation found for accessibility_cast_name (4026393061247081201) -->
-    <skip />
+    <string name="accessibility_cast_name" msgid="4026393061247081201">"Savienots ar ierīci <xliff:g id="CAST">%s</xliff:g>."</string>
     <string name="accessibility_no_wimax" msgid="4329180129727630368">"Bez WiMAX."</string>
     <string name="accessibility_wimax_one_bar" msgid="4170994299011863648">"WiMAX viena josla."</string>
     <string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"WiMAX divas joslas."</string>
@@ -151,17 +150,14 @@
     <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"EDGE"</string>
     <string name="accessibility_data_connection_wifi" msgid="2324496756590645221">"Wi-Fi"</string>
     <string name="accessibility_no_sim" msgid="8274017118472455155">"Nav SIM kartes."</string>
-    <!-- no translation found for accessibility_cell_data (7080312242791850520) -->
-    <skip />
-    <!-- no translation found for accessibility_cell_data_on (4310018593519761767) -->
-    <skip />
+    <string name="accessibility_cell_data" msgid="7080312242791850520">"Mobilie dati"</string>
+    <string name="accessibility_cell_data_on" msgid="4310018593519761767">"Mobilie dati ir ieslēgti"</string>
     <string name="accessibility_cell_data_off" msgid="8000803571751407635">"Mobilie dati ir atslēgti"</string>
     <string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"Bluetooth piesaiste."</string>
     <string name="accessibility_airplane_mode" msgid="834748999790763092">"Lidmašīnas režīms."</string>
     <string name="accessibility_no_sims" msgid="3957997018324995781">"Nav SIM kartes."</string>
     <string name="accessibility_carrier_network_change_mode" msgid="4017301580441304305">"Mobilo sakaru operatora tīkla mainīšana."</string>
-    <!-- no translation found for accessibility_battery_details (7645516654955025422) -->
-    <skip />
+    <string name="accessibility_battery_details" msgid="7645516654955025422">"Atvērt akumulatora informāciju"</string>
     <string name="accessibility_battery_level" msgid="7451474187113371965">"Akumulators: <xliff:g id="NUMBER">%d</xliff:g> procenti"</string>
     <string name="accessibility_battery_level_charging" msgid="1147587904439319646">"Notiek akumulatora uzlāde, <xliff:g id="BATTERY_PERCENTAGE">%d</xliff:g> procenti."</string>
     <string name="accessibility_settings_button" msgid="799583911231893380">"Sistēmas iestatījumi"</string>
@@ -201,13 +197,11 @@
     <string name="accessibility_quick_settings_dnd_priority_on" msgid="1448402297221249355">"Statuss Netraucēt ir ieslēgts, izvēlēts iestatījums Tikai prioritārie."</string>
     <string name="accessibility_quick_settings_dnd_none_on" msgid="6882582132662613537">"Ieslēgts režīms “Netraucēt”, pilnīgs klusums."</string>
     <string name="accessibility_quick_settings_dnd_alarms_on" msgid="9152834845587554157">"Ieslēgts režīms “Netraucēt”, atļauti tikai signāli."</string>
-    <!-- no translation found for accessibility_quick_settings_dnd (6607873236717185815) -->
-    <skip />
+    <string name="accessibility_quick_settings_dnd" msgid="6607873236717185815">"Netraucēt."</string>
     <string name="accessibility_quick_settings_dnd_off" msgid="2371832603753738581">"Statuss Netraucēt ir izslēgts."</string>
     <string name="accessibility_quick_settings_dnd_changed_off" msgid="898107593453022935">"Statuss Netraucēt tika izslēgts."</string>
     <string name="accessibility_quick_settings_dnd_changed_on" msgid="4483780856613561039">"Statuss Netraucēt tika ieslēgts."</string>
-    <!-- no translation found for accessibility_quick_settings_bluetooth (6341675755803320038) -->
-    <skip />
+    <string name="accessibility_quick_settings_bluetooth" msgid="6341675755803320038">"Bluetooth."</string>
     <string name="accessibility_quick_settings_bluetooth_off" msgid="2133631372372064339">"Bluetooth savienojums ir izslēgts."</string>
     <string name="accessibility_quick_settings_bluetooth_on" msgid="7681999166216621838">"Bluetooth savienojums ir ieslēgts."</string>
     <string name="accessibility_quick_settings_bluetooth_connecting" msgid="6953242966685343855">"Notiek Bluetooth savienojuma izveide."</string>
@@ -273,10 +267,8 @@
     <string name="quick_settings_bluetooth_detail_empty_text" msgid="4910015762433302860">"Nav pieejama neviena pārī savienota ierīce."</string>
     <string name="quick_settings_brightness_label" msgid="6968372297018755815">"Spilgtums"</string>
     <string name="quick_settings_rotation_unlocked_label" msgid="7305323031808150099">"Automātiska pagriešana"</string>
-    <!-- no translation found for accessibility_quick_settings_rotation (4231661040698488779) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_rotation_value (1428962304214992318) -->
-    <skip />
+    <string name="accessibility_quick_settings_rotation" msgid="4231661040698488779">"Automātiska ekrāna pagriešana"</string>
+    <string name="accessibility_quick_settings_rotation_value" msgid="1428962304214992318">"Iestatīt uz <xliff:g id="ID_1">%s</xliff:g>"</string>
     <string name="quick_settings_rotation_locked_label" msgid="6359205706154282377">"Pagriešana bloķēta"</string>
     <string name="quick_settings_rotation_locked_portrait_label" msgid="5102691921442135053">"Portrets"</string>
     <string name="quick_settings_rotation_locked_landscape_label" msgid="8553157770061178719">"Ainava"</string>
@@ -295,8 +287,7 @@
     <string name="quick_settings_wifi_not_connected" msgid="7171904845345573431">"Nav izveidots savienojums"</string>
     <string name="quick_settings_wifi_no_network" msgid="2221993077220856376">"Nav tīkla"</string>
     <string name="quick_settings_wifi_off_label" msgid="7558778100843885864">"Wi-Fi ir izslēgts"</string>
-    <!-- no translation found for quick_settings_wifi_on_label (7607810331387031235) -->
-    <skip />
+    <string name="quick_settings_wifi_on_label" msgid="7607810331387031235">"Wi-Fi savienojums ieslēgts"</string>
     <string name="quick_settings_wifi_detail_empty_text" msgid="269990350383909226">"Nav pieejams neviens Wi-Fi tīkls."</string>
     <string name="quick_settings_cast_title" msgid="7709016546426454729">"Apraide"</string>
     <string name="quick_settings_casting" msgid="6601710681033353316">"Notiek apraide…"</string>
@@ -350,7 +341,7 @@
     <string name="zen_silence_introduction" msgid="3137882381093271568">"Tiks bloķētas VISAS skaņas un vibrosignāli, tostarp modinātāja, mūzikas, videoklipu un spēļu skaņas un signāli."</string>
     <string name="keyguard_more_overflow_text" msgid="9195222469041601365">"+<xliff:g id="NUMBER_OF_NOTIFICATIONS">%d</xliff:g>"</string>
     <string name="speed_bump_explanation" msgid="1288875699658819755">"Mazāk steidzami paziņojumi tiek rādīti tālāk"</string>
-    <string name="notification_tap_again" msgid="8524949573675922138">"Pieskarieties vēlreiz, lai atvērtu."</string>
+    <string name="notification_tap_again" msgid="7590196980943943842">"Pieskarieties vēlreiz, lai atvērtu"</string>
     <string name="keyguard_unlock" msgid="8043466894212841998">"Velciet uz augšu, lai atbloķētu"</string>
     <string name="phone_hint" msgid="4872890986869209950">"Lai lietotu tālruni, velciet no ikonas"</string>
     <string name="voice_hint" msgid="8939888732119726665">"Lai lietotu balss palīgu, velciet no ikonas"</string>
@@ -428,7 +419,7 @@
     <string name="accessibility_volume_expand" msgid="5946812790999244205">"Izvērst"</string>
     <string name="accessibility_volume_collapse" msgid="3609549593031810875">"Sakļaut"</string>
     <string name="screen_pinning_title" msgid="3273740381976175811">"Ekrāns ir piesprausts"</string>
-    <string name="screen_pinning_description" msgid="3577937698406151604">"Šādi ekrāns būs redzams līdz brīdim, kad to atspraudīsiet. Lai atspraustu, pieskarieties vienumam “Atpakaļ” un turiet to nospiestu."</string>
+    <string name="screen_pinning_description" msgid="7238941806855968768">"Ekrāns tiek rādīts, kamēr tas nav atsprausts. Lai atspraustu, pieskarieties taustiņam Atpakaļ un turiet to."</string>
     <string name="screen_pinning_positive" msgid="3783985798366751226">"Sapratu!"</string>
     <string name="screen_pinning_negative" msgid="3741602308343880268">"Nē, paldies"</string>
     <string name="quick_settings_reset_confirmation_title" msgid="748792586749897883">"Vai paslēpt vienumu <xliff:g id="TILE_LABEL">%1$s</xliff:g>?"</string>
@@ -438,15 +429,13 @@
     <string name="volumeui_prompt_allow" msgid="7954396902482228786">"Atļaut"</string>
     <string name="volumeui_prompt_deny" msgid="5720663643411696731">"Neatļaut"</string>
     <string name="volumeui_notification_title" msgid="4906770126345910955">"<xliff:g id="APP_NAME">%1$s</xliff:g> ir skaļuma dialoglodziņš"</string>
-    <string name="volumeui_notification_text" msgid="1826889705095768656">"Pieskarieties, lai atjaunotu sākotnējo."</string>
+    <string name="volumeui_notification_text" msgid="8819536904234337445">"Pieskarieties, lai atjaunotu sākotnējo saturu."</string>
     <string name="managed_profile_foreground_toast" msgid="5421487114739245972">"Jūs izmantojat darba profilu."</string>
     <string name="volume_stream_content_description_unmute" msgid="4436631538779230857">"%1$s. Pieskarieties, lai ieslēgtu skaņu."</string>
     <string name="volume_stream_content_description_vibrate" msgid="1187944970457807498">"%1$s. Pieskarieties, lai iestatītu uz vibrozvanu. Var tikt izslēgti pieejamības pakalpojumu signāli."</string>
     <string name="volume_stream_content_description_mute" msgid="3625049841390467354">"%1$s. Pieskarieties, lai izslēgtu skaņu. Var tikt izslēgti pieejamības pakalpojumu signāli."</string>
-    <!-- no translation found for volume_dialog_accessibility_shown_message (1834631467074259998) -->
-    <skip />
-    <!-- no translation found for volume_dialog_accessibility_dismissed_message (51543526013711399) -->
-    <skip />
+    <string name="volume_dialog_accessibility_shown_message" msgid="1834631467074259998">"Tiek rādītas %s skaļuma vadīklas. Velciet augšup, lai nerādītu."</string>
+    <string name="volume_dialog_accessibility_dismissed_message" msgid="51543526013711399">"Skaļuma vadīklas paslēptas"</string>
     <string name="system_ui_tuner" msgid="708224127392452018">"Sistēmas saskarnes regulators"</string>
     <string name="show_battery_percentage" msgid="5444136600512968798">"Rādīt akumulatora uzlādes līmeni procentos"</string>
     <string name="show_battery_percentage_summary" msgid="3215025775576786037">"Rādīt akumulatora uzlādes līmeni procentos statusa joslas ikonā, kad netiek veikta uzlāde"</string>
@@ -642,27 +631,17 @@
     <string name="accessibility_qs_edit_tile_removed" msgid="8584304916627913440">"Elements <xliff:g id="TILE_NAME">%1$s</xliff:g> ir noņemts"</string>
     <string name="accessibility_qs_edit_tile_moved" msgid="4343693412689365038">"Elements <xliff:g id="TILE_NAME">%1$s</xliff:g> ir pārvietots uz <xliff:g id="POSITION">%2$d</xliff:g>. pozīciju"</string>
     <string name="accessibility_desc_quick_settings_edit" msgid="8073587401747016103">"Ātro iestatījumu redaktors."</string>
-    <!-- no translation found for accessibility_desc_notification_icon (8352414185263916335) -->
-    <skip />
+    <string name="accessibility_desc_notification_icon" msgid="8352414185263916335">"<xliff:g id="ID_1">%1$s</xliff:g> paziņojums: <xliff:g id="ID_2">%2$s</xliff:g>"</string>
     <string name="dock_forced_resizable" msgid="5914261505436217520">"Iespējams, lietotnē nedarbosies ekrāna sadalīšana."</string>
     <string name="dock_non_resizeble_failed_to_dock_text" msgid="3871617304250207291">"Lietotnē netiek atbalstīta ekrāna sadalīšana."</string>
-    <!-- no translation found for accessibility_quick_settings_settings (6132460890024942157) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_expand (2375165227880477530) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_collapse (1792625797142648105) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_alarm_set (1863000242431528676) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_user (1567445362870421770) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_no_internet (31890692343084075) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_open_details (4230931801728005194) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_open_settings (7806613775728380737) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_edit (7839992848995240393) -->
-    <skip />
+    <string name="accessibility_quick_settings_settings" msgid="6132460890024942157">"Atvērt iestatījumus."</string>
+    <string name="accessibility_quick_settings_expand" msgid="2375165227880477530">"Atvērt ātros iestatījumus."</string>
+    <string name="accessibility_quick_settings_collapse" msgid="1792625797142648105">"Aizvērt ātros iestatījumus."</string>
+    <string name="accessibility_quick_settings_alarm_set" msgid="1863000242431528676">"Signāls ir iestatīts."</string>
+    <string name="accessibility_quick_settings_user" msgid="1567445362870421770">"Pierakstījies kā <xliff:g id="ID_1">%s</xliff:g>"</string>
+    <string name="accessibility_quick_settings_no_internet" msgid="31890692343084075">"Nav piekļuves internetam."</string>
+    <string name="accessibility_quick_settings_open_details" msgid="4230931801728005194">"Atvērt detalizēto informāciju."</string>
+    <string name="accessibility_quick_settings_open_settings" msgid="7806613775728380737">"Atvērt <xliff:g id="ID_1">%s</xliff:g> iestatījumus."</string>
+    <string name="accessibility_quick_settings_edit" msgid="7839992848995240393">"Rediģēt iestatījumu secību."</string>
     <string name="accessibility_quick_settings_page" msgid="5032979051755200721">"<xliff:g id="ID_1">%1$d</xliff:g>. lpp. no <xliff:g id="ID_2">%2$d</xliff:g>"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-lv/strings_tv.xml b/packages/SystemUI/res/values-lv/strings_tv.xml
index ad5e035..cafc10d 100644
--- a/packages/SystemUI/res/values-lv/strings_tv.xml
+++ b/packages/SystemUI/res/values-lv/strings_tv.xml
@@ -24,10 +24,8 @@
     <string name="pip_play" msgid="674145557658227044">"Atskaņot"</string>
     <string name="pip_pause" msgid="8412075640017218862">"Apturēt"</string>
     <string name="pip_hold_home" msgid="340086535668778109">"Turiet taustiņu "<b>"SĀKUMS"</b>", lai kontrolētu PIP"</string>
-    <!-- no translation found for pip_onboarding_title (7850436557670253991) -->
-    <skip />
-    <!-- no translation found for pip_onboarding_description (4028124563309465267) -->
-    <skip />
+    <string name="pip_onboarding_title" msgid="7850436557670253991">"Attēls attēlā"</string>
+    <string name="pip_onboarding_description" msgid="4028124563309465267">"Šādi videoklips būs redzams, līdz atskaņosiet citu videoklipu. Lai to kontrolētu, nospiediet un turiet nospiestu pogu "<b>"HOME"</b>"."</string>
     <string name="pip_onboarding_button" msgid="3957426748484904611">"Labi"</string>
     <string name="recents_tv_dismiss" msgid="3555093879593377731">"Nerādīt"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-mk-rMK/strings.xml b/packages/SystemUI/res/values-mk-rMK/strings.xml
index 145e986..d26a4ec 100644
--- a/packages/SystemUI/res/values-mk-rMK/strings.xml
+++ b/packages/SystemUI/res/values-mk-rMK/strings.xml
@@ -71,7 +71,7 @@
     <string name="screenshot_saving_title" msgid="8242282144535555697">"Сликата на екранот се зачувува..."</string>
     <string name="screenshot_saving_text" msgid="2419718443411738818">"Сликата на екранот се зачувува."</string>
     <string name="screenshot_saved_title" msgid="6461865960961414961">"Сликата на екранот е снимена."</string>
-    <string name="screenshot_saved_text" msgid="1152839647677558815">"Допрете за да ја видите сликата на екранот."</string>
+    <string name="screenshot_saved_text" msgid="2685605830386712477">"Допрете за да ја видите сликата на екранот."</string>
     <string name="screenshot_failed_title" msgid="705781116746922771">"Сликата на екранот не можеше да се сними."</string>
     <string name="screenshot_failed_to_save_unknown_text" msgid="7887826345701753830">"Се појави проблем при зачувување на сликата од екранот."</string>
     <string name="screenshot_failed_to_save_text" msgid="2592658083866306296">"Сликата од екранот не може да се зачува поради ограничена меморија."</string>
@@ -118,8 +118,7 @@
     <string name="accessibility_data_signal_full" msgid="2708384608124519369">"Сигналот за податоци е исполнет."</string>
     <string name="accessibility_wifi_name" msgid="7202151365171148501">"Поврзано со <xliff:g id="WIFI">%s</xliff:g>."</string>
     <string name="accessibility_bluetooth_name" msgid="8441517146585531676">"Поврзано со <xliff:g id="BLUETOOTH">%s</xliff:g>."</string>
-    <!-- no translation found for accessibility_cast_name (4026393061247081201) -->
-    <skip />
+    <string name="accessibility_cast_name" msgid="4026393061247081201">"Поврзано со <xliff:g id="CAST">%s</xliff:g>."</string>
     <string name="accessibility_no_wimax" msgid="4329180129727630368">"Нема WiMAX."</string>
     <string name="accessibility_wimax_one_bar" msgid="4170994299011863648">"WiMAX една цртичка."</string>
     <string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"WiMAX две цртички."</string>
@@ -150,17 +149,14 @@
     <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string>
     <string name="accessibility_data_connection_wifi" msgid="2324496756590645221">"Wi-Fi"</string>
     <string name="accessibility_no_sim" msgid="8274017118472455155">"Нема СИМ картичка."</string>
-    <!-- no translation found for accessibility_cell_data (7080312242791850520) -->
-    <skip />
-    <!-- no translation found for accessibility_cell_data_on (4310018593519761767) -->
-    <skip />
+    <string name="accessibility_cell_data" msgid="7080312242791850520">"Мобилни податоци"</string>
+    <string name="accessibility_cell_data_on" msgid="4310018593519761767">"Вклучени се мобилните податоци"</string>
     <string name="accessibility_cell_data_off" msgid="8000803571751407635">"Мобилните податоци се исклучени"</string>
     <string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"Се поврзува со Bluetooth."</string>
     <string name="accessibility_airplane_mode" msgid="834748999790763092">"Режим на работа во авион."</string>
     <string name="accessibility_no_sims" msgid="3957997018324995781">"Нема СИМ-картичка"</string>
     <string name="accessibility_carrier_network_change_mode" msgid="4017301580441304305">"Променување на мрежата на операторот."</string>
-    <!-- no translation found for accessibility_battery_details (7645516654955025422) -->
-    <skip />
+    <string name="accessibility_battery_details" msgid="7645516654955025422">"Отвори ги деталите за батеријата"</string>
     <string name="accessibility_battery_level" msgid="7451474187113371965">"Батерија <xliff:g id="NUMBER">%d</xliff:g> проценти."</string>
     <string name="accessibility_battery_level_charging" msgid="1147587904439319646">"Полнење на батеријата, <xliff:g id="BATTERY_PERCENTAGE">%d</xliff:g> проценти."</string>
     <string name="accessibility_settings_button" msgid="799583911231893380">"Поставки на систем."</string>
@@ -200,13 +196,11 @@
     <string name="accessibility_quick_settings_dnd_priority_on" msgid="1448402297221249355">"„Не вознемирувај“ е вклучено, само приоритетни."</string>
     <string name="accessibility_quick_settings_dnd_none_on" msgid="6882582132662613537">"„Не вознемирувај“ е вклучено, целосна тишина."</string>
     <string name="accessibility_quick_settings_dnd_alarms_on" msgid="9152834845587554157">"„Не вознемирувај“ е вклучено, само аларми."</string>
-    <!-- no translation found for accessibility_quick_settings_dnd (6607873236717185815) -->
-    <skip />
+    <string name="accessibility_quick_settings_dnd" msgid="6607873236717185815">"Не вознемирувај."</string>
     <string name="accessibility_quick_settings_dnd_off" msgid="2371832603753738581">"„Не вознемирувај“ е исклучено."</string>
     <string name="accessibility_quick_settings_dnd_changed_off" msgid="898107593453022935">"„Не вознемирувај“ е исклучено."</string>
     <string name="accessibility_quick_settings_dnd_changed_on" msgid="4483780856613561039">"„Не вознемирувај“ е вклучено."</string>
-    <!-- no translation found for accessibility_quick_settings_bluetooth (6341675755803320038) -->
-    <skip />
+    <string name="accessibility_quick_settings_bluetooth" msgid="6341675755803320038">"Bluetooth."</string>
     <string name="accessibility_quick_settings_bluetooth_off" msgid="2133631372372064339">"Bluetooth е исклучен."</string>
     <string name="accessibility_quick_settings_bluetooth_on" msgid="7681999166216621838">"Bluetooth е вклучен."</string>
     <string name="accessibility_quick_settings_bluetooth_connecting" msgid="6953242966685343855">"Bluetooth се поврзува."</string>
@@ -272,10 +266,8 @@
     <string name="quick_settings_bluetooth_detail_empty_text" msgid="4910015762433302860">"Нема достапни спарени уреди"</string>
     <string name="quick_settings_brightness_label" msgid="6968372297018755815">"Осветленост"</string>
     <string name="quick_settings_rotation_unlocked_label" msgid="7305323031808150099">"Автоматско ротирање"</string>
-    <!-- no translation found for accessibility_quick_settings_rotation (4231661040698488779) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_rotation_value (1428962304214992318) -->
-    <skip />
+    <string name="accessibility_quick_settings_rotation" msgid="4231661040698488779">"Автоматско ротирање на екранот"</string>
+    <string name="accessibility_quick_settings_rotation_value" msgid="1428962304214992318">"Постави на <xliff:g id="ID_1">%s</xliff:g>"</string>
     <string name="quick_settings_rotation_locked_label" msgid="6359205706154282377">"Ротацијата е заклучена"</string>
     <string name="quick_settings_rotation_locked_portrait_label" msgid="5102691921442135053">"Портрет"</string>
     <string name="quick_settings_rotation_locked_landscape_label" msgid="8553157770061178719">"Пејзаж"</string>
@@ -294,8 +286,7 @@
     <string name="quick_settings_wifi_not_connected" msgid="7171904845345573431">"Не е поврзано"</string>
     <string name="quick_settings_wifi_no_network" msgid="2221993077220856376">"Нема мрежа"</string>
     <string name="quick_settings_wifi_off_label" msgid="7558778100843885864">"Wi-Fi е исклучено"</string>
-    <!-- no translation found for quick_settings_wifi_on_label (7607810331387031235) -->
-    <skip />
+    <string name="quick_settings_wifi_on_label" msgid="7607810331387031235">"Вклучено е Wi-Fi"</string>
     <string name="quick_settings_wifi_detail_empty_text" msgid="269990350383909226">"Нема достапни Wi-Fi мрежи"</string>
     <string name="quick_settings_cast_title" msgid="7709016546426454729">"Емитувај"</string>
     <string name="quick_settings_casting" msgid="6601710681033353316">"Емитување"</string>
@@ -349,7 +340,7 @@
     <string name="zen_silence_introduction" msgid="3137882381093271568">"Ова ги блокира СИТЕ звуци и вибрации, вклучувајќи ги и оние од алармите, музиката, видеата и игрите."</string>
     <string name="keyguard_more_overflow_text" msgid="9195222469041601365">"+<xliff:g id="NUMBER_OF_NOTIFICATIONS">%d</xliff:g>"</string>
     <string name="speed_bump_explanation" msgid="1288875699658819755">"Долу се помалку итни известувања"</string>
-    <string name="notification_tap_again" msgid="8524949573675922138">"Допрете повторно за да отворите"</string>
+    <string name="notification_tap_again" msgid="7590196980943943842">"Допрете повторно за да се отвори"</string>
     <string name="keyguard_unlock" msgid="8043466894212841998">"Повлечете за да се отклучи"</string>
     <string name="phone_hint" msgid="4872890986869209950">"Повлечете од иконата за телефонот"</string>
     <string name="voice_hint" msgid="8939888732119726665">"Повлечете од иконата за гласовна помош"</string>
@@ -427,7 +418,7 @@
     <string name="accessibility_volume_expand" msgid="5946812790999244205">"Прошири"</string>
     <string name="accessibility_volume_collapse" msgid="3609549593031810875">"Собери"</string>
     <string name="screen_pinning_title" msgid="3273740381976175811">"Екранот е прикачен"</string>
-    <string name="screen_pinning_description" msgid="3577937698406151604">"Ќе се гледа сѐ додека не го откачите. Допрете и држете Назад за откачување."</string>
+    <string name="screen_pinning_description" msgid="7238941806855968768">"Ќе се гледа сѐ додека не го откачите. Допрете и држете Назад за откачување."</string>
     <string name="screen_pinning_positive" msgid="3783985798366751226">"Сфатив"</string>
     <string name="screen_pinning_negative" msgid="3741602308343880268">"Не, фала"</string>
     <string name="quick_settings_reset_confirmation_title" msgid="748792586749897883">"Сокриј <xliff:g id="TILE_LABEL">%1$s</xliff:g>?"</string>
@@ -437,15 +428,13 @@
     <string name="volumeui_prompt_allow" msgid="7954396902482228786">"Овозможи"</string>
     <string name="volumeui_prompt_deny" msgid="5720663643411696731">"Одбиј"</string>
     <string name="volumeui_notification_title" msgid="4906770126345910955">"<xliff:g id="APP_NAME">%1$s</xliff:g> е дијалог за јачина на звук"</string>
-    <string name="volumeui_notification_text" msgid="1826889705095768656">"Допрете за да го вратите оригиналот."</string>
+    <string name="volumeui_notification_text" msgid="8819536904234337445">"Допрете за да го вратите оригиналот."</string>
     <string name="managed_profile_foreground_toast" msgid="5421487114739245972">"Го користите работниот профил"</string>
     <string name="volume_stream_content_description_unmute" msgid="4436631538779230857">"%1$s. Допрете за да вклучите звук."</string>
     <string name="volume_stream_content_description_vibrate" msgid="1187944970457807498">"%1$s. Допрете за да поставите на вибрации. Можеби ќе се исклучи звукот на услугите за достапност."</string>
     <string name="volume_stream_content_description_mute" msgid="3625049841390467354">"%1$s. Допрете за да исклучите звук. Можеби ќе се исклучи звукот на услугите за достапност."</string>
-    <!-- no translation found for volume_dialog_accessibility_shown_message (1834631467074259998) -->
-    <skip />
-    <!-- no translation found for volume_dialog_accessibility_dismissed_message (51543526013711399) -->
-    <skip />
+    <string name="volume_dialog_accessibility_shown_message" msgid="1834631467074259998">"Прикажани се контролите за јачина на звукот на %s. Повлечете нагоре за да отфрлите."</string>
+    <string name="volume_dialog_accessibility_dismissed_message" msgid="51543526013711399">"Скриени се контролите за јачина на звукот"</string>
     <string name="system_ui_tuner" msgid="708224127392452018">"Адаптер на УИ на системот"</string>
     <string name="show_battery_percentage" msgid="5444136600512968798">"Прикажи вграден процент на батеријата"</string>
     <string name="show_battery_percentage_summary" msgid="3215025775576786037">"Прикажи процент на ниво на батеријата во внатрешноста на иконата со статусна лента кога не се полни"</string>
@@ -641,27 +630,17 @@
     <string name="accessibility_qs_edit_tile_removed" msgid="8584304916627913440">"<xliff:g id="TILE_NAME">%1$s</xliff:g> е отстранета"</string>
     <string name="accessibility_qs_edit_tile_moved" msgid="4343693412689365038">"<xliff:g id="TILE_NAME">%1$s</xliff:g> е преместена на место <xliff:g id="POSITION">%2$d</xliff:g>"</string>
     <string name="accessibility_desc_quick_settings_edit" msgid="8073587401747016103">"Уредник за брзи поставки."</string>
-    <!-- no translation found for accessibility_desc_notification_icon (8352414185263916335) -->
-    <skip />
+    <string name="accessibility_desc_notification_icon" msgid="8352414185263916335">"Известување од <xliff:g id="ID_1">%1$s</xliff:g>: <xliff:g id="ID_2">%2$s</xliff:g>"</string>
     <string name="dock_forced_resizable" msgid="5914261505436217520">"Апликацијата можеби нема да работи во поделен екран."</string>
     <string name="dock_non_resizeble_failed_to_dock_text" msgid="3871617304250207291">"Апликацијата не поддржува поделен екран."</string>
-    <!-- no translation found for accessibility_quick_settings_settings (6132460890024942157) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_expand (2375165227880477530) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_collapse (1792625797142648105) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_alarm_set (1863000242431528676) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_user (1567445362870421770) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_no_internet (31890692343084075) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_open_details (4230931801728005194) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_open_settings (7806613775728380737) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_edit (7839992848995240393) -->
-    <skip />
+    <string name="accessibility_quick_settings_settings" msgid="6132460890024942157">"Отворете ги поставките."</string>
+    <string name="accessibility_quick_settings_expand" msgid="2375165227880477530">"Отворете ги брзите поставки."</string>
+    <string name="accessibility_quick_settings_collapse" msgid="1792625797142648105">"Затворете ги брзите поставки."</string>
+    <string name="accessibility_quick_settings_alarm_set" msgid="1863000242431528676">"Поставен е аларм."</string>
+    <string name="accessibility_quick_settings_user" msgid="1567445362870421770">"Најавени сте како <xliff:g id="ID_1">%s</xliff:g>"</string>
+    <string name="accessibility_quick_settings_no_internet" msgid="31890692343084075">"Нема интернет."</string>
+    <string name="accessibility_quick_settings_open_details" msgid="4230931801728005194">"Отворете ги деталите."</string>
+    <string name="accessibility_quick_settings_open_settings" msgid="7806613775728380737">"Отворете ги поставките на <xliff:g id="ID_1">%s</xliff:g>."</string>
+    <string name="accessibility_quick_settings_edit" msgid="7839992848995240393">"Уредете го редоследот на поставките."</string>
     <string name="accessibility_quick_settings_page" msgid="5032979051755200721">"Страница <xliff:g id="ID_1">%1$d</xliff:g> од <xliff:g id="ID_2">%2$d</xliff:g>"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-mk-rMK/strings_tv.xml b/packages/SystemUI/res/values-mk-rMK/strings_tv.xml
index 671788c..453272c 100644
--- a/packages/SystemUI/res/values-mk-rMK/strings_tv.xml
+++ b/packages/SystemUI/res/values-mk-rMK/strings_tv.xml
@@ -24,10 +24,8 @@
     <string name="pip_play" msgid="674145557658227044">"Пушти"</string>
     <string name="pip_pause" msgid="8412075640017218862">"Пауза"</string>
     <string name="pip_hold_home" msgid="340086535668778109">"Задржете "<b>"ДОМА"</b>" за кон. PIP"</string>
-    <!-- no translation found for pip_onboarding_title (7850436557670253991) -->
-    <skip />
-    <!-- no translation found for pip_onboarding_description (4028124563309465267) -->
-    <skip />
+    <string name="pip_onboarding_title" msgid="7850436557670253991">"Слика во слика"</string>
+    <string name="pip_onboarding_description" msgid="4028124563309465267">"Видеото се прикажува сѐ додека не пуштите друго. Притиснете и задржете "<b>"ПОЧЕТЕН ЕКРАН"</b>" за да го контролирате."</string>
     <string name="pip_onboarding_button" msgid="3957426748484904611">"Разбрав"</string>
     <string name="recents_tv_dismiss" msgid="3555093879593377731">"Отфрли"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-ml-rIN/strings.xml b/packages/SystemUI/res/values-ml-rIN/strings.xml
index a2421be..b832082 100644
--- a/packages/SystemUI/res/values-ml-rIN/strings.xml
+++ b/packages/SystemUI/res/values-ml-rIN/strings.xml
@@ -71,7 +71,7 @@
     <string name="screenshot_saving_title" msgid="8242282144535555697">"സ്‌ക്രീൻഷോട്ട് സംരക്ഷിക്കുന്നു..."</string>
     <string name="screenshot_saving_text" msgid="2419718443411738818">"സ്‌ക്രീൻഷോട്ട് സംരക്ഷിക്കുന്നു."</string>
     <string name="screenshot_saved_title" msgid="6461865960961414961">"സ്‌ക്രീൻഷോട്ട് എടുത്തു."</string>
-    <string name="screenshot_saved_text" msgid="1152839647677558815">"നിങ്ങളുടെ സ്‌ക്രീൻഷോട്ട് കാണാനായി സ്‌പർശിക്കുക."</string>
+    <string name="screenshot_saved_text" msgid="2685605830386712477">"നിങ്ങളുടെ സ്ക്രീൻഷോട്ട് കാണുന്നതിന് ടാപ്പുചെയ്യുക."</string>
     <string name="screenshot_failed_title" msgid="705781116746922771">"സ്‌ക്രീൻഷോട്ട് എടുക്കാൻ കഴിഞ്ഞില്ല."</string>
     <string name="screenshot_failed_to_save_unknown_text" msgid="7887826345701753830">"സ്ക്രീൻഷോട്ട് സംരക്ഷിക്കുന്ന സമയത്ത് പ്രശ്നം നേരിട്ടു."</string>
     <string name="screenshot_failed_to_save_text" msgid="2592658083866306296">"സ്റ്റോറേജ് ഇടം പരിമിതമായതിനാൽ സ്ക്രീൻഷോട്ട് സംരക്ഷിക്കാൻ കഴിയില്ല."</string>
@@ -118,8 +118,7 @@
     <string name="accessibility_data_signal_full" msgid="2708384608124519369">"ഡാറ്റ സിഗ്‌നൽ പൂർണ്ണമാണ്."</string>
     <string name="accessibility_wifi_name" msgid="7202151365171148501">"<xliff:g id="WIFI">%s</xliff:g> എന്നതിലേക്ക് കണക്‌റ്റുചെയ്‌തു."</string>
     <string name="accessibility_bluetooth_name" msgid="8441517146585531676">"<xliff:g id="BLUETOOTH">%s</xliff:g> എന്നതിലേക്ക് കണക്‌റ്റുചെയ്‌തു."</string>
-    <!-- no translation found for accessibility_cast_name (4026393061247081201) -->
-    <skip />
+    <string name="accessibility_cast_name" msgid="4026393061247081201">"<xliff:g id="CAST">%s</xliff:g> എന്നതിലേക്ക് കണക്റ്റുചെയ്തു."</string>
     <string name="accessibility_no_wimax" msgid="4329180129727630368">"WiMAX ഇല്ല."</string>
     <string name="accessibility_wimax_one_bar" msgid="4170994299011863648">"WiMAX ഒരു ബാർ."</string>
     <string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"WiMAX രണ്ട് ബാറുകൾ."</string>
@@ -150,17 +149,14 @@
     <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string>
     <string name="accessibility_data_connection_wifi" msgid="2324496756590645221">"വൈഫൈ"</string>
     <string name="accessibility_no_sim" msgid="8274017118472455155">"സിം ഇല്ല."</string>
-    <!-- no translation found for accessibility_cell_data (7080312242791850520) -->
-    <skip />
-    <!-- no translation found for accessibility_cell_data_on (4310018593519761767) -->
-    <skip />
+    <string name="accessibility_cell_data" msgid="7080312242791850520">"സെല്ലുലാർ ഡാറ്റ"</string>
+    <string name="accessibility_cell_data_on" msgid="4310018593519761767">"സെല്ലുലാർ ഡാറ്റ ഓണാണ്"</string>
     <string name="accessibility_cell_data_off" msgid="8000803571751407635">"സെല്ലുലാർ ഡാറ്റ ഓഫാണ്"</string>
     <string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"ബ്ലൂടൂത്ത് ടെതറിംഗ്."</string>
     <string name="accessibility_airplane_mode" msgid="834748999790763092">"ഫ്ലൈറ്റ് മോഡ്."</string>
     <string name="accessibility_no_sims" msgid="3957997018324995781">"SIM കാർഡൊന്നുമില്ല."</string>
     <string name="accessibility_carrier_network_change_mode" msgid="4017301580441304305">"കാരിയർ നെറ്റ്‌വർക്ക് മാറ്റൽ."</string>
-    <!-- no translation found for accessibility_battery_details (7645516654955025422) -->
-    <skip />
+    <string name="accessibility_battery_details" msgid="7645516654955025422">"ബാറ്ററി വിശദാംശങ്ങൾ തുറക്കുക"</string>
     <string name="accessibility_battery_level" msgid="7451474187113371965">"ബാറ്ററി <xliff:g id="NUMBER">%d</xliff:g> ശതമാനം."</string>
     <string name="accessibility_battery_level_charging" msgid="1147587904439319646">"ബാറ്ററി ചാർജുചെയ്യുന്നു, <xliff:g id="BATTERY_PERCENTAGE">%d</xliff:g> ശതമാനം."</string>
     <string name="accessibility_settings_button" msgid="799583911231893380">"സിസ്‌റ്റം ക്രമീകരണങ്ങൾ."</string>
@@ -200,13 +196,11 @@
     <string name="accessibility_quick_settings_dnd_priority_on" msgid="1448402297221249355">"ശല്യപ്പെടുത്തരുത് എന്നത് ഓണാണ്, മുൻഗണന മാത്രം."</string>
     <string name="accessibility_quick_settings_dnd_none_on" msgid="6882582132662613537">"\'ശല്യപ്പെടുത്തരുത്\' ഓണാണ്, പൂർണ്ണ നിശബ്‌ദത."</string>
     <string name="accessibility_quick_settings_dnd_alarms_on" msgid="9152834845587554157">"\'ശല്യപ്പെടുത്തരുത്\' ഓണാണ്, അലാറം മാത്രം."</string>
-    <!-- no translation found for accessibility_quick_settings_dnd (6607873236717185815) -->
-    <skip />
+    <string name="accessibility_quick_settings_dnd" msgid="6607873236717185815">"ശല്യപ്പെടുത്തരുത്."</string>
     <string name="accessibility_quick_settings_dnd_off" msgid="2371832603753738581">"ശല്ല്യപ്പെടുത്തരുത് എന്നത് ഓഫാണ്."</string>
     <string name="accessibility_quick_settings_dnd_changed_off" msgid="898107593453022935">"ശല്യപ്പെടുത്തരുത് എന്നത് ഓഫാക്കി."</string>
     <string name="accessibility_quick_settings_dnd_changed_on" msgid="4483780856613561039">"ശല്യപ്പെടുത്തരുത് എന്നത് ഓണാക്കി."</string>
-    <!-- no translation found for accessibility_quick_settings_bluetooth (6341675755803320038) -->
-    <skip />
+    <string name="accessibility_quick_settings_bluetooth" msgid="6341675755803320038">"Bluetooth"</string>
     <string name="accessibility_quick_settings_bluetooth_off" msgid="2133631372372064339">"ബ്ലൂടൂത്ത് ഓഫാണ്."</string>
     <string name="accessibility_quick_settings_bluetooth_on" msgid="7681999166216621838">"ബ്ലൂടൂത്ത് ഓണാണ്."</string>
     <string name="accessibility_quick_settings_bluetooth_connecting" msgid="6953242966685343855">"ബ്ലൂടൂത്ത് കണക്‌റ്റുചെയ്യുന്നു."</string>
@@ -272,10 +266,8 @@
     <string name="quick_settings_bluetooth_detail_empty_text" msgid="4910015762433302860">"ജോടിയാക്കിയ ഉപകരണങ്ങളൊന്നും ലഭ്യമല്ല"</string>
     <string name="quick_settings_brightness_label" msgid="6968372297018755815">"തെളിച്ചം"</string>
     <string name="quick_settings_rotation_unlocked_label" msgid="7305323031808150099">"ആവശ്യാനുസരണം തിരിയുക"</string>
-    <!-- no translation found for accessibility_quick_settings_rotation (4231661040698488779) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_rotation_value (1428962304214992318) -->
-    <skip />
+    <string name="accessibility_quick_settings_rotation" msgid="4231661040698488779">"സ്‌ക്രീൻ സ്വയമേ തിരിക്കുക"</string>
+    <string name="accessibility_quick_settings_rotation_value" msgid="1428962304214992318">"<xliff:g id="ID_1">%s</xliff:g> എന്നതിലേക്ക് സജ്ജമാക്കുക"</string>
     <string name="quick_settings_rotation_locked_label" msgid="6359205706154282377">"റൊട്ടേഷൻ ലോക്കുചെയ്‌തു"</string>
     <string name="quick_settings_rotation_locked_portrait_label" msgid="5102691921442135053">"പോർട്രെയ്‌റ്റ്"</string>
     <string name="quick_settings_rotation_locked_landscape_label" msgid="8553157770061178719">"ലാൻഡ്‌സ്‌കേപ്പ്"</string>
@@ -294,8 +286,7 @@
     <string name="quick_settings_wifi_not_connected" msgid="7171904845345573431">"കണ‌ക്റ്റുചെയ്‌തിട്ടില്ല"</string>
     <string name="quick_settings_wifi_no_network" msgid="2221993077220856376">"നെറ്റ്‌വർക്ക് ഒന്നുമില്ല"</string>
     <string name="quick_settings_wifi_off_label" msgid="7558778100843885864">"വൈഫൈ ഓഫുചെയ്യുക"</string>
-    <!-- no translation found for quick_settings_wifi_on_label (7607810331387031235) -->
-    <skip />
+    <string name="quick_settings_wifi_on_label" msgid="7607810331387031235">"വൈഫൈ ഓണാണ്"</string>
     <string name="quick_settings_wifi_detail_empty_text" msgid="269990350383909226">"വൈഫൈ നെറ്റ്‌വർക്കുകളൊന്നും ലഭ്യമല്ല"</string>
     <string name="quick_settings_cast_title" msgid="7709016546426454729">"കാസ്‌റ്റുചെയ്യുക"</string>
     <string name="quick_settings_casting" msgid="6601710681033353316">"കാസ്റ്റുചെയ്യുന്നു"</string>
@@ -349,7 +340,7 @@
     <string name="zen_silence_introduction" msgid="3137882381093271568">"ഇത് അലാറങ്ങൾ, സംഗീതം, വീഡിയോകൾ, ഗെയിമുകൾ എന്നിവയിൽ നിന്നുൾപ്പെടെ എല്ലാ ശബ്‌ദങ്ങളും വൈബ്രേഷനുകളും തടയുന്നു."</string>
     <string name="keyguard_more_overflow_text" msgid="9195222469041601365">"+<xliff:g id="NUMBER_OF_NOTIFICATIONS">%d</xliff:g>"</string>
     <string name="speed_bump_explanation" msgid="1288875699658819755">"ആവശ്യം കുറഞ്ഞ അറിയിപ്പുകൾ ചുവടെ നൽകിയിരിക്കുന്നു"</string>
-    <string name="notification_tap_again" msgid="8524949573675922138">"തുറക്കുന്നതിന് വീണ്ടും സ്‌പർശിക്കുക"</string>
+    <string name="notification_tap_again" msgid="7590196980943943842">"തുറക്കുന്നതിന് വീണ്ടും ടാപ്പുചെയ്യുക"</string>
     <string name="keyguard_unlock" msgid="8043466894212841998">"അൺലോക്കുചെയ്യുന്നതിന് മുകളിലേക്ക് സ്വൈപ്പുചെയ്യുക"</string>
     <string name="phone_hint" msgid="4872890986869209950">"ഫോൺ ഐക്കണിൽ നിന്ന് സ്വൈപ്പുചെയ്യുക"</string>
     <string name="voice_hint" msgid="8939888732119726665">"വോയ്‌സ് അസിസ്റ്റിനായുള്ള ഐക്കണിൽ നിന്ന് സ്വൈപ്പുചെയ്യുക"</string>
@@ -427,7 +418,7 @@
     <string name="accessibility_volume_expand" msgid="5946812790999244205">"വികസിപ്പിക്കുക"</string>
     <string name="accessibility_volume_collapse" msgid="3609549593031810875">"ചുരുക്കുക"</string>
     <string name="screen_pinning_title" msgid="3273740381976175811">"സ്‌ക്രീൻ പിൻ ചെയ്‌തു"</string>
-    <string name="screen_pinning_description" msgid="3577937698406151604">"നിങ്ങൾ അൺപിൻ ചെയ്യുന്നതുവരെ ഇത് കാണുന്ന വിധത്തിൽ നിലനിർത്തും. അൺപിൻ ചെയ്യുന്നതിന് \'മടങ്ങുക\' സ്‌പർശിച്ചുപിടിക്കുക."</string>
+    <string name="screen_pinning_description" msgid="7238941806855968768">"നിങ്ങൾ അൺപിൻ ചെയ്യുന്നതുവരെ ഇത് കാണുന്ന വിധത്തിൽ നിലനിർത്തും. അൺപിൻ ചെയ്യുന്നതിന് \'മടങ്ങുക\' സ്‌പർശിച്ചുപിടിക്കുക."</string>
     <string name="screen_pinning_positive" msgid="3783985798366751226">"മനസ്സിലായി"</string>
     <string name="screen_pinning_negative" msgid="3741602308343880268">"വേണ്ട, നന്ദി"</string>
     <string name="quick_settings_reset_confirmation_title" msgid="748792586749897883">"<xliff:g id="TILE_LABEL">%1$s</xliff:g> എന്നത് മറയ്‌ക്കണോ?"</string>
@@ -437,15 +428,13 @@
     <string name="volumeui_prompt_allow" msgid="7954396902482228786">"അനുവദിക്കുക"</string>
     <string name="volumeui_prompt_deny" msgid="5720663643411696731">"നിരസിക്കുക"</string>
     <string name="volumeui_notification_title" msgid="4906770126345910955">"<xliff:g id="APP_NAME">%1$s</xliff:g>, വോളിയം ഡയലോഗാണ്"</string>
-    <string name="volumeui_notification_text" msgid="1826889705095768656">"ആദ്യത്തേത് പുനഃസ്ഥാപിക്കാൻ സ്‌പർശിക്കുക."</string>
+    <string name="volumeui_notification_text" msgid="8819536904234337445">"ഒറിജിനൽ പുനഃസ്ഥാപിക്കാൻ ടാപ്പുചെയ്യുക."</string>
     <string name="managed_profile_foreground_toast" msgid="5421487114739245972">"നിങ്ങൾ ഉപയോഗിക്കുന്നത് ഔദ്യോഗിക പ്രൊഫൈലാണ്"</string>
     <string name="volume_stream_content_description_unmute" msgid="4436631538779230857">"%1$s. അൺമ്യൂട്ടുചെയ്യുന്നതിന് ടാപ്പുചെയ്യുക."</string>
     <string name="volume_stream_content_description_vibrate" msgid="1187944970457807498">"%1$s. വൈബ്രേറ്റിലേക്ക് സജ്ജമാക്കുന്നതിന് ടാപ്പുചെയ്യുക. പ്രവേശനക്ഷമതാ സേവനങ്ങൾ മ്യൂട്ടുചെയ്യപ്പെട്ടേക്കാം."</string>
     <string name="volume_stream_content_description_mute" msgid="3625049841390467354">"%1$s. മ്യൂട്ടുചെയ്യുന്നതിന് ടാപ്പുചെയ്യുക. പ്രവേശനക്ഷമതാ സേവനങ്ങൾ മ്യൂട്ടുചെയ്യപ്പെട്ടേക്കാം."</string>
-    <!-- no translation found for volume_dialog_accessibility_shown_message (1834631467074259998) -->
-    <skip />
-    <!-- no translation found for volume_dialog_accessibility_dismissed_message (51543526013711399) -->
-    <skip />
+    <string name="volume_dialog_accessibility_shown_message" msgid="1834631467074259998">"%s വോളിയം നിയന്ത്രണങ്ങൾ കാണിച്ചിരിക്കുന്നു. ഡിസ്മിസ് ചെയ്യുന്നതിന് മുകളിലേക്ക് സ്വൈപ്പുചെയ്യുക."</string>
+    <string name="volume_dialog_accessibility_dismissed_message" msgid="51543526013711399">"വോളിയം നിയന്ത്രണങ്ങൾ മറച്ചിരിക്കുന്നു"</string>
     <string name="system_ui_tuner" msgid="708224127392452018">"സിസ്റ്റം UI ട്യൂണർ"</string>
     <string name="show_battery_percentage" msgid="5444136600512968798">"എംബഡ് ചെയ്‌ത ബാറ്ററി ശതമാനം കാണിക്കുക"</string>
     <string name="show_battery_percentage_summary" msgid="3215025775576786037">"ചാർജ്ജുചെയ്യാതിരിക്കുമ്പോൾ സ്റ്റാറ്റസ് ബാർ ഐക്കണിൽ ബാറ്ററി ലെവൽ ശതമാനം കാണിക്കുക"</string>
@@ -641,27 +630,17 @@
     <string name="accessibility_qs_edit_tile_removed" msgid="8584304916627913440">"<xliff:g id="TILE_NAME">%1$s</xliff:g> നീക്കംചെയ്യുന്നു"</string>
     <string name="accessibility_qs_edit_tile_moved" msgid="4343693412689365038">"സ്ഥാനം <xliff:g id="POSITION">%2$d</xliff:g>-ലേക്ക് <xliff:g id="TILE_NAME">%1$s</xliff:g> നീക്കി"</string>
     <string name="accessibility_desc_quick_settings_edit" msgid="8073587401747016103">"ദ്രുത ക്രമീകരണ എഡിറ്റർ."</string>
-    <!-- no translation found for accessibility_desc_notification_icon (8352414185263916335) -->
-    <skip />
+    <string name="accessibility_desc_notification_icon" msgid="8352414185263916335">"<xliff:g id="ID_1">%1$s</xliff:g> അറിയിപ്പ്: <xliff:g id="ID_2">%2$s</xliff:g>"</string>
     <string name="dock_forced_resizable" msgid="5914261505436217520">"സ്പ്ലിറ്റ്-സ്ക്രീനിനൊപ്പം ആപ്പ് പ്രവർത്തിച്ചേക്കില്ല."</string>
     <string name="dock_non_resizeble_failed_to_dock_text" msgid="3871617304250207291">"സ്പ്ലിറ്റ്-സ്ക്രീനിനെ ആപ്പ് പിന്തുണയ്ക്കുന്നില്ല."</string>
-    <!-- no translation found for accessibility_quick_settings_settings (6132460890024942157) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_expand (2375165227880477530) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_collapse (1792625797142648105) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_alarm_set (1863000242431528676) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_user (1567445362870421770) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_no_internet (31890692343084075) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_open_details (4230931801728005194) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_open_settings (7806613775728380737) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_edit (7839992848995240393) -->
-    <skip />
+    <string name="accessibility_quick_settings_settings" msgid="6132460890024942157">"ക്രമീകരണം തുറക്കുക."</string>
+    <string name="accessibility_quick_settings_expand" msgid="2375165227880477530">"ദ്രുത ക്രമീകരണം തുറക്കുക."</string>
+    <string name="accessibility_quick_settings_collapse" msgid="1792625797142648105">"ദ്രുത ക്രമീകരണം അടയ്ക്കുക."</string>
+    <string name="accessibility_quick_settings_alarm_set" msgid="1863000242431528676">"അലാറം സജ്ജമാക്കി."</string>
+    <string name="accessibility_quick_settings_user" msgid="1567445362870421770">"<xliff:g id="ID_1">%s</xliff:g> ആയി സൈൻ ഇൻ ചെയ്‌തു"</string>
+    <string name="accessibility_quick_settings_no_internet" msgid="31890692343084075">"ഇന്റർനെറ്റില്ല."</string>
+    <string name="accessibility_quick_settings_open_details" msgid="4230931801728005194">"വിശദാംശങ്ങൾ തുറക്കുക."</string>
+    <string name="accessibility_quick_settings_open_settings" msgid="7806613775728380737">"<xliff:g id="ID_1">%s</xliff:g> ക്രമീകരണം തുറക്കുക."</string>
+    <string name="accessibility_quick_settings_edit" msgid="7839992848995240393">"ക്രമീകരണ ക്രമം എഡിറ്റുചെയ്യുക."</string>
     <string name="accessibility_quick_settings_page" msgid="5032979051755200721">"പേജ് <xliff:g id="ID_1">%1$d</xliff:g> / <xliff:g id="ID_2">%2$d</xliff:g>"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-ml-rIN/strings_tv.xml b/packages/SystemUI/res/values-ml-rIN/strings_tv.xml
index 843603c..48bdb51 100644
--- a/packages/SystemUI/res/values-ml-rIN/strings_tv.xml
+++ b/packages/SystemUI/res/values-ml-rIN/strings_tv.xml
@@ -24,10 +24,8 @@
     <string name="pip_play" msgid="674145557658227044">"പ്ലേ ചെയ്യുക"</string>
     <string name="pip_pause" msgid="8412075640017218862">"തൽക്കാലം നിർത്തൂ"</string>
     <string name="pip_hold_home" msgid="340086535668778109">"PIP നിയന്ത്രിക്കാൻ "<b>"ഹോം"</b>" പിടിക്കുക"</string>
-    <!-- no translation found for pip_onboarding_title (7850436557670253991) -->
-    <skip />
-    <!-- no translation found for pip_onboarding_description (4028124563309465267) -->
-    <skip />
+    <string name="pip_onboarding_title" msgid="7850436557670253991">"ചിത്രം-അതിനുള്ളിൽ-ചിത്രം"</string>
+    <string name="pip_onboarding_description" msgid="4028124563309465267">"മറ്റൊരു വീഡിയോ പ്ലേ ചെയ്യുന്നത് വരെ നിങ്ങളുടെ വീഡിയോയെ ഇത് കാഴ്ചയിൽ നിലനിർത്തുന്നു. ഇത് നിയന്ത്രിക്കുന്നതിന് "<b>"ഹോം"</b>" അമർത്തിപ്പിടിക്കുക."</string>
     <string name="pip_onboarding_button" msgid="3957426748484904611">"മനസ്സിലായി"</string>
     <string name="recents_tv_dismiss" msgid="3555093879593377731">"ഡിസ്മിസ് ചെയ്യുക"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-mn-rMN/strings.xml b/packages/SystemUI/res/values-mn-rMN/strings.xml
index 2575cdc..d146210 100644
--- a/packages/SystemUI/res/values-mn-rMN/strings.xml
+++ b/packages/SystemUI/res/values-mn-rMN/strings.xml
@@ -69,7 +69,7 @@
     <string name="screenshot_saving_title" msgid="8242282144535555697">"Дэлгэцийн агшинг хадгалж байна…"</string>
     <string name="screenshot_saving_text" msgid="2419718443411738818">"Дэлгэцийн агшин хадгалагдав."</string>
     <string name="screenshot_saved_title" msgid="6461865960961414961">"Дэлгэцийн агшинг авсан."</string>
-    <string name="screenshot_saved_text" msgid="1152839647677558815">"Дэлгэцийн агшныг харах бол хүрнэ үү."</string>
+    <string name="screenshot_saved_text" msgid="2685605830386712477">"Дэлгэцийн агшингаа харахын тулд дарна уу."</string>
     <string name="screenshot_failed_title" msgid="705781116746922771">"Дэлгэцийн агшинг авч чадсангүй."</string>
     <string name="screenshot_failed_to_save_unknown_text" msgid="7887826345701753830">"Дэлгэцийн агшинг хадгалахад алдаа гарлаа."</string>
     <string name="screenshot_failed_to_save_text" msgid="2592658083866306296">"Хадгалах сангийн багтаамж бага байгаа тул дэлгэцийн авсан зургийг хадгалах боломжгүй байна."</string>
@@ -338,7 +338,7 @@
     <string name="zen_silence_introduction" msgid="3137882381093271568">"Энэ нь сэрүүлэг, хөгжим, видео, тоглоом зэргийг оруулаад зэрэг БҮХ дуу, чичиргээг блоклодог."</string>
     <string name="keyguard_more_overflow_text" msgid="9195222469041601365">"+<xliff:g id="NUMBER_OF_NOTIFICATIONS">%d</xliff:g>"</string>
     <string name="speed_bump_explanation" msgid="1288875699658819755">"Яаралтай биш мэдэгдлүүдийг доор"</string>
-    <string name="notification_tap_again" msgid="8524949573675922138">"Нээхийн тулд дахин хүрнэ үү"</string>
+    <string name="notification_tap_again" msgid="7590196980943943842">"Нээхийн тулд дахин товшино уу"</string>
     <string name="keyguard_unlock" msgid="8043466894212841998">"Түгжээг тайлах бол шудрана уу"</string>
     <string name="phone_hint" msgid="4872890986869209950">"Утсыг гаргахын тулд дүрс тэмдгээс шудрах"</string>
     <string name="voice_hint" msgid="8939888732119726665">"Дуут туслахыг нээхийн тулд дүрс тэмдгээс шудрах"</string>
@@ -416,7 +416,7 @@
     <string name="accessibility_volume_expand" msgid="5946812790999244205">"Дэлгэх"</string>
     <string name="accessibility_volume_collapse" msgid="3609549593031810875">"Хураах"</string>
     <string name="screen_pinning_title" msgid="3273740381976175811">"Дэлгэц эхэнд байрлуулагдсан"</string>
-    <string name="screen_pinning_description" msgid="3577937698406151604">"Таныг эхэнд нээхийг болиулах хүртэл харагдана. Хаахын тулд Хүрэх, Буцах товчлуурыг удаан дараарай."</string>
+    <string name="screen_pinning_description" msgid="7238941806855968768">"Таныг эхэнд нээхийг болиулах хүртэл харагдах болно. Эхэнд нээхийг болиулахын тулд Буцах товчлуурыг дараад, хүлээнэ үү."</string>
     <string name="screen_pinning_positive" msgid="3783985798366751226">"Ойлголоо"</string>
     <string name="screen_pinning_negative" msgid="3741602308343880268">"Үгүй"</string>
     <string name="quick_settings_reset_confirmation_title" msgid="748792586749897883">"<xliff:g id="TILE_LABEL">%1$s</xliff:g>-ийг нуух уу?"</string>
@@ -426,7 +426,7 @@
     <string name="volumeui_prompt_allow" msgid="7954396902482228786">"Зөвшөөрөх"</string>
     <string name="volumeui_prompt_deny" msgid="5720663643411696731">"Татгалзах"</string>
     <string name="volumeui_notification_title" msgid="4906770126345910955">"<xliff:g id="APP_NAME">%1$s</xliff:g> нь дууны диалог юм."</string>
-    <string name="volumeui_notification_text" msgid="1826889705095768656">"Анхны хувилбарыг эргүүлэн хадгалахыг хүсвэл хүрнэ үү."</string>
+    <string name="volumeui_notification_text" msgid="8819536904234337445">"Эх хувилбарыг сэргээхийн тулд дарна уу."</string>
     <string name="managed_profile_foreground_toast" msgid="5421487114739245972">"Та өөрийн ажлын профайлыг ашиглаж байна"</string>
     <string name="volume_stream_content_description_unmute" msgid="4436631538779230857">"%1$s. Дууг нь нээхийн тулд товшино уу."</string>
     <string name="volume_stream_content_description_vibrate" msgid="1187944970457807498">"%1$s. Чичиргээнд тохируулахын тулд товшино уу. Хүртээмжийн үйлчилгээний дууг хаасан."</string>
diff --git a/packages/SystemUI/res/values-mr-rIN/strings.xml b/packages/SystemUI/res/values-mr-rIN/strings.xml
index 17c6a04..3aef30b 100644
--- a/packages/SystemUI/res/values-mr-rIN/strings.xml
+++ b/packages/SystemUI/res/values-mr-rIN/strings.xml
@@ -71,7 +71,7 @@
     <string name="screenshot_saving_title" msgid="8242282144535555697">"स्क्रीनशॉट जतन करत आहे…"</string>
     <string name="screenshot_saving_text" msgid="2419718443411738818">"स्क्रीनशॉट जतन केला जात आहे."</string>
     <string name="screenshot_saved_title" msgid="6461865960961414961">"स्क्रीनशॉट कॅप्चर केला."</string>
-    <string name="screenshot_saved_text" msgid="1152839647677558815">"आपला स्क्रीनशॉट पाहण्यासाठी स्पर्श करा."</string>
+    <string name="screenshot_saved_text" msgid="2685605830386712477">"आपला स्क्रीनशॉट पाहण्यासाठी टॅप करा."</string>
     <string name="screenshot_failed_title" msgid="705781116746922771">"स्क्रीनशॉट कॅप्चर करू शकलो नाही."</string>
     <string name="screenshot_failed_to_save_unknown_text" msgid="7887826345701753830">"स्क्रीनशॉट जतन करताना समस्या आली."</string>
     <string name="screenshot_failed_to_save_text" msgid="2592658083866306296">"मर्यादित संचय जागेमुळे स्क्रीनशॉट जतन करू शकत नाही."</string>
@@ -118,8 +118,7 @@
     <string name="accessibility_data_signal_full" msgid="2708384608124519369">"डेटा सिग्नल पूर्ण."</string>
     <string name="accessibility_wifi_name" msgid="7202151365171148501">"<xliff:g id="WIFI">%s</xliff:g> शी कनेक्‍ट केले."</string>
     <string name="accessibility_bluetooth_name" msgid="8441517146585531676">"<xliff:g id="BLUETOOTH">%s</xliff:g> शी कनेक्‍ट केले."</string>
-    <!-- no translation found for accessibility_cast_name (4026393061247081201) -->
-    <skip />
+    <string name="accessibility_cast_name" msgid="4026393061247081201">"<xliff:g id="CAST">%s</xliff:g> शी कनेक्ट केले."</string>
     <string name="accessibility_no_wimax" msgid="4329180129727630368">"WiMAX नाही."</string>
     <string name="accessibility_wimax_one_bar" msgid="4170994299011863648">"WiMAX एक बार."</string>
     <string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"WiMAX दोन बार."</string>
@@ -150,17 +149,14 @@
     <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string>
     <string name="accessibility_data_connection_wifi" msgid="2324496756590645221">"वाय-फाय"</string>
     <string name="accessibility_no_sim" msgid="8274017118472455155">"सिम नाही."</string>
-    <!-- no translation found for accessibility_cell_data (7080312242791850520) -->
-    <skip />
-    <!-- no translation found for accessibility_cell_data_on (4310018593519761767) -->
-    <skip />
+    <string name="accessibility_cell_data" msgid="7080312242791850520">"मोबाइल डेटा"</string>
+    <string name="accessibility_cell_data_on" msgid="4310018593519761767">"मोबाइल डेटा चालू"</string>
     <string name="accessibility_cell_data_off" msgid="8000803571751407635">"मोबाइल डेटा बंद"</string>
     <string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"ब्लूटुथ टिथरिंग."</string>
     <string name="accessibility_airplane_mode" msgid="834748999790763092">"विमान मोड."</string>
     <string name="accessibility_no_sims" msgid="3957997018324995781">"सिम कार्ड नाही."</string>
     <string name="accessibility_carrier_network_change_mode" msgid="4017301580441304305">"वाहक नेटवर्क बदलणे."</string>
-    <!-- no translation found for accessibility_battery_details (7645516654955025422) -->
-    <skip />
+    <string name="accessibility_battery_details" msgid="7645516654955025422">"बॅटरी तपशील उघडा"</string>
     <string name="accessibility_battery_level" msgid="7451474187113371965">"बॅटरी <xliff:g id="NUMBER">%d</xliff:g> टक्के."</string>
     <string name="accessibility_battery_level_charging" msgid="1147587904439319646">"बॅटरी चार्ज होत आहे, <xliff:g id="BATTERY_PERCENTAGE">%d</xliff:g> टक्के."</string>
     <string name="accessibility_settings_button" msgid="799583911231893380">"सिस्‍टम सेटिंग्‍ज."</string>
@@ -200,13 +196,11 @@
     <string name="accessibility_quick_settings_dnd_priority_on" msgid="1448402297221249355">"व्यत्यय आणू नका चालू, केवळ प्राधान्य."</string>
     <string name="accessibility_quick_settings_dnd_none_on" msgid="6882582132662613537">"व्यत्यय आणू नका चालू, संपूर्ण शांतता."</string>
     <string name="accessibility_quick_settings_dnd_alarms_on" msgid="9152834845587554157">"व्यत्यय आणू नका चालू, केवळ अलार्म."</string>
-    <!-- no translation found for accessibility_quick_settings_dnd (6607873236717185815) -->
-    <skip />
+    <string name="accessibility_quick_settings_dnd" msgid="6607873236717185815">"व्यत्यय आणू नका."</string>
     <string name="accessibility_quick_settings_dnd_off" msgid="2371832603753738581">"व्यत्यय आणू नका बंद."</string>
     <string name="accessibility_quick_settings_dnd_changed_off" msgid="898107593453022935">"व्यत्यय आणू नका बंद करा"</string>
     <string name="accessibility_quick_settings_dnd_changed_on" msgid="4483780856613561039">"व्यत्यय आणू नका चालू करा"</string>
-    <!-- no translation found for accessibility_quick_settings_bluetooth (6341675755803320038) -->
-    <skip />
+    <string name="accessibility_quick_settings_bluetooth" msgid="6341675755803320038">"ब्लूटुथ."</string>
     <string name="accessibility_quick_settings_bluetooth_off" msgid="2133631372372064339">"ब्लूटुथ बंद."</string>
     <string name="accessibility_quick_settings_bluetooth_on" msgid="7681999166216621838">"ब्लूटुथ चालू."</string>
     <string name="accessibility_quick_settings_bluetooth_connecting" msgid="6953242966685343855">"ब्लूटुथ कनेक्ट करत आहे."</string>
@@ -272,10 +266,8 @@
     <string name="quick_settings_bluetooth_detail_empty_text" msgid="4910015762433302860">"कोणतेही जोडलेले डिव्हाइसेस उपलब्ध नाहीत"</string>
     <string name="quick_settings_brightness_label" msgid="6968372297018755815">"चमक"</string>
     <string name="quick_settings_rotation_unlocked_label" msgid="7305323031808150099">"स्वयं-फिरवा"</string>
-    <!-- no translation found for accessibility_quick_settings_rotation (4231661040698488779) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_rotation_value (1428962304214992318) -->
-    <skip />
+    <string name="accessibility_quick_settings_rotation" msgid="4231661040698488779">"स्वयं-फिरणारी स्क्रीन"</string>
+    <string name="accessibility_quick_settings_rotation_value" msgid="1428962304214992318">"<xliff:g id="ID_1">%s</xliff:g> वर सेट करा"</string>
     <string name="quick_settings_rotation_locked_label" msgid="6359205706154282377">"फिरविणे लॉक केले"</string>
     <string name="quick_settings_rotation_locked_portrait_label" msgid="5102691921442135053">"पोर्ट्रेट"</string>
     <string name="quick_settings_rotation_locked_landscape_label" msgid="8553157770061178719">"भूदृश्य"</string>
@@ -294,8 +286,7 @@
     <string name="quick_settings_wifi_not_connected" msgid="7171904845345573431">"कनेक्ट केले नाही"</string>
     <string name="quick_settings_wifi_no_network" msgid="2221993077220856376">"नेटवर्क नाही"</string>
     <string name="quick_settings_wifi_off_label" msgid="7558778100843885864">"वाय-फाय बंद"</string>
-    <!-- no translation found for quick_settings_wifi_on_label (7607810331387031235) -->
-    <skip />
+    <string name="quick_settings_wifi_on_label" msgid="7607810331387031235">"वाय-फाय चालू"</string>
     <string name="quick_settings_wifi_detail_empty_text" msgid="269990350383909226">"Wi-Fi नेटवर्क उपलब्‍ध नाहीत"</string>
     <string name="quick_settings_cast_title" msgid="7709016546426454729">"कास्‍ट करा"</string>
     <string name="quick_settings_casting" msgid="6601710681033353316">"कास्ट करत आहे"</string>
@@ -349,7 +340,7 @@
     <string name="zen_silence_introduction" msgid="3137882381093271568">"हे अलार्म, संगीत, व्हिडिओ आणि गेम यासह, सर्व आवाज आणि कंपने अवरोधित करते."</string>
     <string name="keyguard_more_overflow_text" msgid="9195222469041601365">"+<xliff:g id="NUMBER_OF_NOTIFICATIONS">%d</xliff:g>"</string>
     <string name="speed_bump_explanation" msgid="1288875699658819755">"खाली कमी तातडीच्या सूचना"</string>
-    <string name="notification_tap_again" msgid="8524949573675922138">"उघडण्यासाठी पुन्हा स्पर्श करा"</string>
+    <string name="notification_tap_again" msgid="7590196980943943842">"उघडण्यासाठी पुन्हा टॅप करा"</string>
     <string name="keyguard_unlock" msgid="8043466894212841998">"अनलॉक करण्यासाठी स्वाइप करा"</string>
     <string name="phone_hint" msgid="4872890986869209950">"फोनसाठी चिन्हावरून स्वाइप करा"</string>
     <string name="voice_hint" msgid="8939888732119726665">"व्हॉइस सहाय्यासाठी चिन्हावरून स्वाइप करा"</string>
@@ -427,7 +418,7 @@
     <string name="accessibility_volume_expand" msgid="5946812790999244205">"विस्तृत करा"</string>
     <string name="accessibility_volume_collapse" msgid="3609549593031810875">"संकुचित करा"</string>
     <string name="screen_pinning_title" msgid="3273740381976175811">"स्क्रीन पिन केलेली आहे"</string>
-    <string name="screen_pinning_description" msgid="3577937698406151604">"हे आपण अनपिन करेपर्यंत दृश्यामध्ये ते ठेवते. अनपिन करण्यासाठी परत ला स्पर्श करा आणि धरून ठेवा."</string>
+    <string name="screen_pinning_description" msgid="7238941806855968768">"आपण अनपिन करेपर्यंत हे त्यास दृश्यामध्ये ठेवते. अनपिन करण्यासाठी स्पर्श करा आणि परत धरून ठेवा."</string>
     <string name="screen_pinning_positive" msgid="3783985798366751226">"समजले"</string>
     <string name="screen_pinning_negative" msgid="3741602308343880268">"नाही धन्यवाद"</string>
     <string name="quick_settings_reset_confirmation_title" msgid="748792586749897883">"<xliff:g id="TILE_LABEL">%1$s</xliff:g> लपवायचे?"</string>
@@ -437,15 +428,13 @@
     <string name="volumeui_prompt_allow" msgid="7954396902482228786">"अनुमती द्या"</string>
     <string name="volumeui_prompt_deny" msgid="5720663643411696731">"नकार द्या"</string>
     <string name="volumeui_notification_title" msgid="4906770126345910955">"<xliff:g id="APP_NAME">%1$s</xliff:g> हा व्हॉल्यूम संवाद आहे"</string>
-    <string name="volumeui_notification_text" msgid="1826889705095768656">"मूळ पुनर्संचयित करण्यासाठी स्पर्श करा."</string>
+    <string name="volumeui_notification_text" msgid="8819536904234337445">"मूळ पुनर्संचयित करण्यासाठी टॅप करा."</string>
     <string name="managed_profile_foreground_toast" msgid="5421487114739245972">"आपण आपले कार्य प्रोफाईल वापरत आहात"</string>
     <string name="volume_stream_content_description_unmute" msgid="4436631538779230857">"%1$s. सशब्द करण्यासाठी टॅप करा."</string>
     <string name="volume_stream_content_description_vibrate" msgid="1187944970457807498">"%1$s. कंपन सेट करण्यासाठी टॅप करा. प्रवेशयोग्यता सेवा नि:शब्द केल्या जाऊ शकतात."</string>
     <string name="volume_stream_content_description_mute" msgid="3625049841390467354">"%1$s. नि:शब्द करण्यासाठी टॅप करा. प्रवेशक्षमता सेवा नि:शब्द केल्या जाऊ शकतात."</string>
-    <!-- no translation found for volume_dialog_accessibility_shown_message (1834631467074259998) -->
-    <skip />
-    <!-- no translation found for volume_dialog_accessibility_dismissed_message (51543526013711399) -->
-    <skip />
+    <string name="volume_dialog_accessibility_shown_message" msgid="1834631467074259998">"%s आवाज नियंत्रणे दर्शविली. डिसमिस करण्यासाठी वर स्वाइप करा."</string>
+    <string name="volume_dialog_accessibility_dismissed_message" msgid="51543526013711399">"आवाज नियंत्रणे लपविली"</string>
     <string name="system_ui_tuner" msgid="708224127392452018">"सिस्टीम UI ट्यूनर"</string>
     <string name="show_battery_percentage" msgid="5444136600512968798">"एम्बेडेड बॅटरी टक्केवारी दर्शवा"</string>
     <string name="show_battery_percentage_summary" msgid="3215025775576786037">"चार्ज होत नसताना स्टेटस बार चिन्हामध्‍ये बॅटरी पातळी टक्केवारी दर्शवा"</string>
@@ -641,27 +630,17 @@
     <string name="accessibility_qs_edit_tile_removed" msgid="8584304916627913440">"<xliff:g id="TILE_NAME">%1$s</xliff:g> ला काढले आहे"</string>
     <string name="accessibility_qs_edit_tile_moved" msgid="4343693412689365038">"<xliff:g id="TILE_NAME">%1$s</xliff:g> ला <xliff:g id="POSITION">%2$d</xliff:g> स्थितीवर हलविले"</string>
     <string name="accessibility_desc_quick_settings_edit" msgid="8073587401747016103">"द्रुत सेटिंग्ज संपादक."</string>
-    <!-- no translation found for accessibility_desc_notification_icon (8352414185263916335) -->
-    <skip />
+    <string name="accessibility_desc_notification_icon" msgid="8352414185263916335">"<xliff:g id="ID_1">%1$s</xliff:g> सूचना: <xliff:g id="ID_2">%2$s</xliff:g>"</string>
     <string name="dock_forced_resizable" msgid="5914261505436217520">"अॅप कदाचित विभाजित-स्क्रीनसह कार्य करू शकत नाही."</string>
     <string name="dock_non_resizeble_failed_to_dock_text" msgid="3871617304250207291">"अॅप स्क्रीन-विभाजनास समर्थन देत नाही."</string>
-    <!-- no translation found for accessibility_quick_settings_settings (6132460890024942157) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_expand (2375165227880477530) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_collapse (1792625797142648105) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_alarm_set (1863000242431528676) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_user (1567445362870421770) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_no_internet (31890692343084075) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_open_details (4230931801728005194) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_open_settings (7806613775728380737) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_edit (7839992848995240393) -->
-    <skip />
+    <string name="accessibility_quick_settings_settings" msgid="6132460890024942157">"सेटिंग्ज उघडा."</string>
+    <string name="accessibility_quick_settings_expand" msgid="2375165227880477530">"जलद सेटिंग्ज उघडा."</string>
+    <string name="accessibility_quick_settings_collapse" msgid="1792625797142648105">"जलद सेटिंग्ज बंद करा."</string>
+    <string name="accessibility_quick_settings_alarm_set" msgid="1863000242431528676">"अलार्म सेट केला."</string>
+    <string name="accessibility_quick_settings_user" msgid="1567445362870421770">"<xliff:g id="ID_1">%s</xliff:g> म्हणून साइन इन केले"</string>
+    <string name="accessibility_quick_settings_no_internet" msgid="31890692343084075">"इंटरनेट नाही."</string>
+    <string name="accessibility_quick_settings_open_details" msgid="4230931801728005194">"तपशील उघडा."</string>
+    <string name="accessibility_quick_settings_open_settings" msgid="7806613775728380737">"<xliff:g id="ID_1">%s</xliff:g> सेटिंग्ज उघडा."</string>
+    <string name="accessibility_quick_settings_edit" msgid="7839992848995240393">"सेटिंग्जचा क्रम संपादित करा."</string>
     <string name="accessibility_quick_settings_page" msgid="5032979051755200721">"पृष्ठ <xliff:g id="ID_2">%2$d</xliff:g> पैकी <xliff:g id="ID_1">%1$d</xliff:g>"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-mr-rIN/strings_tv.xml b/packages/SystemUI/res/values-mr-rIN/strings_tv.xml
index 19c9405..5841500 100644
--- a/packages/SystemUI/res/values-mr-rIN/strings_tv.xml
+++ b/packages/SystemUI/res/values-mr-rIN/strings_tv.xml
@@ -24,10 +24,8 @@
     <string name="pip_play" msgid="674145557658227044">"प्ले करा"</string>
     <string name="pip_pause" msgid="8412075640017218862">"विराम द्या"</string>
     <string name="pip_hold_home" msgid="340086535668778109">"PIP नियंत्रित करण्यासाठी "<b>"मुख्यपृष्ठ"</b>" धरून ठेवा"</string>
-    <!-- no translation found for pip_onboarding_title (7850436557670253991) -->
-    <skip />
-    <!-- no translation found for pip_onboarding_description (4028124563309465267) -->
-    <skip />
+    <string name="pip_onboarding_title" msgid="7850436557670253991">"चित्रा-मध्ये-चित्र"</string>
+    <string name="pip_onboarding_description" msgid="4028124563309465267">"आपण दुसरा व्हिडिओ प्ले करेपर्यंत हे आपल्या व्हिडिओस दृश्यामध्ये ठेवते. ते नियंत्रित करण्यासाठी "<b>"मुख्यपृष्ठ"</b>" दाबा आणि धरून ठेवा."</string>
     <string name="pip_onboarding_button" msgid="3957426748484904611">"समजले"</string>
     <string name="recents_tv_dismiss" msgid="3555093879593377731">"डिसमिस करा"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-ms-rMY/strings.xml b/packages/SystemUI/res/values-ms-rMY/strings.xml
index a426442..3c3e7a5 100644
--- a/packages/SystemUI/res/values-ms-rMY/strings.xml
+++ b/packages/SystemUI/res/values-ms-rMY/strings.xml
@@ -71,7 +71,7 @@
     <string name="screenshot_saving_title" msgid="8242282144535555697">"Menyimpan tangkapan skrin..."</string>
     <string name="screenshot_saving_text" msgid="2419718443411738818">"Tangkapan skrin sedang disimpan."</string>
     <string name="screenshot_saved_title" msgid="6461865960961414961">"Tangkapan skrin ditangkap."</string>
-    <string name="screenshot_saved_text" msgid="1152839647677558815">"Sentuh untuk melihat tangkapan skrin anda."</string>
+    <string name="screenshot_saved_text" msgid="2685605830386712477">"Ketik untuk melihat tangkapan skrin anda."</string>
     <string name="screenshot_failed_title" msgid="705781116746922771">"Tidak dapat menangkap tangkapan skrin."</string>
     <string name="screenshot_failed_to_save_unknown_text" msgid="7887826345701753830">"Berlaku masalah semasa menyimpan tangkapan skrin."</string>
     <string name="screenshot_failed_to_save_text" msgid="2592658083866306296">"Tidak dapat menyimpan tangkapan skrin kerana ruang storan terhad."</string>
@@ -118,8 +118,7 @@
     <string name="accessibility_data_signal_full" msgid="2708384608124519369">"Isyarat data penuh."</string>
     <string name="accessibility_wifi_name" msgid="7202151365171148501">"Disambungkan kepada <xliff:g id="WIFI">%s</xliff:g>."</string>
     <string name="accessibility_bluetooth_name" msgid="8441517146585531676">"Disambungkan kepada <xliff:g id="BLUETOOTH">%s</xliff:g>."</string>
-    <!-- no translation found for accessibility_cast_name (4026393061247081201) -->
-    <skip />
+    <string name="accessibility_cast_name" msgid="4026393061247081201">"Disambungkan ke <xliff:g id="CAST">%s</xliff:g>."</string>
     <string name="accessibility_no_wimax" msgid="4329180129727630368">"Tiada WiMAX"</string>
     <string name="accessibility_wimax_one_bar" msgid="4170994299011863648">"WiMAX satu bar."</string>
     <string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"WiMAX dua bar."</string>
@@ -150,17 +149,14 @@
     <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string>
     <string name="accessibility_data_connection_wifi" msgid="2324496756590645221">"Wi-Fi"</string>
     <string name="accessibility_no_sim" msgid="8274017118472455155">"Tiada SIM."</string>
-    <!-- no translation found for accessibility_cell_data (7080312242791850520) -->
-    <skip />
-    <!-- no translation found for accessibility_cell_data_on (4310018593519761767) -->
-    <skip />
+    <string name="accessibility_cell_data" msgid="7080312242791850520">"Data Selular"</string>
+    <string name="accessibility_cell_data_on" msgid="4310018593519761767">"Data Selular Dihidupkan"</string>
     <string name="accessibility_cell_data_off" msgid="8000803571751407635">"Data Selular Dimatikan"</string>
     <string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"Penambatan Bluetooth."</string>
     <string name="accessibility_airplane_mode" msgid="834748999790763092">"Mod pesawat"</string>
     <string name="accessibility_no_sims" msgid="3957997018324995781">"Tiada kad SIM."</string>
     <string name="accessibility_carrier_network_change_mode" msgid="4017301580441304305">"Perubahan rangkaian pembawa."</string>
-    <!-- no translation found for accessibility_battery_details (7645516654955025422) -->
-    <skip />
+    <string name="accessibility_battery_details" msgid="7645516654955025422">"Buka butiran bateri"</string>
     <string name="accessibility_battery_level" msgid="7451474187113371965">"Bateri <xliff:g id="NUMBER">%d</xliff:g> peratus."</string>
     <string name="accessibility_battery_level_charging" msgid="1147587904439319646">"Bateri mengecas, <xliff:g id="BATTERY_PERCENTAGE">%d</xliff:g> peratus."</string>
     <string name="accessibility_settings_button" msgid="799583911231893380">"Tetapan sistem."</string>
@@ -200,13 +196,11 @@
     <string name="accessibility_quick_settings_dnd_priority_on" msgid="1448402297221249355">"Jangan ganggu dihidupkan, perkara penting sahaja."</string>
     <string name="accessibility_quick_settings_dnd_none_on" msgid="6882582132662613537">"Jangan ganggu dihidupkan, senyap sepenuhnya."</string>
     <string name="accessibility_quick_settings_dnd_alarms_on" msgid="9152834845587554157">"Jangan ganggu dihidupkan, penggera sahaja."</string>
-    <!-- no translation found for accessibility_quick_settings_dnd (6607873236717185815) -->
-    <skip />
+    <string name="accessibility_quick_settings_dnd" msgid="6607873236717185815">"Jangan ganggu."</string>
     <string name="accessibility_quick_settings_dnd_off" msgid="2371832603753738581">"Jangan ganggu dimatikan."</string>
     <string name="accessibility_quick_settings_dnd_changed_off" msgid="898107593453022935">"Jangan ganggu dimatikan."</string>
     <string name="accessibility_quick_settings_dnd_changed_on" msgid="4483780856613561039">"Jangan ganggu dihidupkan."</string>
-    <!-- no translation found for accessibility_quick_settings_bluetooth (6341675755803320038) -->
-    <skip />
+    <string name="accessibility_quick_settings_bluetooth" msgid="6341675755803320038">"Bluetooth."</string>
     <string name="accessibility_quick_settings_bluetooth_off" msgid="2133631372372064339">"Bluetooth dimatikan."</string>
     <string name="accessibility_quick_settings_bluetooth_on" msgid="7681999166216621838">"Bluetooth dihidupkan."</string>
     <string name="accessibility_quick_settings_bluetooth_connecting" msgid="6953242966685343855">"Bluetooth menyambung."</string>
@@ -272,10 +266,8 @@
     <string name="quick_settings_bluetooth_detail_empty_text" msgid="4910015762433302860">"Tiada peranti berpasangan tersedia"</string>
     <string name="quick_settings_brightness_label" msgid="6968372297018755815">"Kecerahan"</string>
     <string name="quick_settings_rotation_unlocked_label" msgid="7305323031808150099">"Autoputar"</string>
-    <!-- no translation found for accessibility_quick_settings_rotation (4231661040698488779) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_rotation_value (1428962304214992318) -->
-    <skip />
+    <string name="accessibility_quick_settings_rotation" msgid="4231661040698488779">"Autoputar skrin"</string>
+    <string name="accessibility_quick_settings_rotation_value" msgid="1428962304214992318">"Tetapkan kepada <xliff:g id="ID_1">%s</xliff:g>"</string>
     <string name="quick_settings_rotation_locked_label" msgid="6359205706154282377">"Putaran dikunci"</string>
     <string name="quick_settings_rotation_locked_portrait_label" msgid="5102691921442135053">"Potret"</string>
     <string name="quick_settings_rotation_locked_landscape_label" msgid="8553157770061178719">"Landskap"</string>
@@ -294,8 +286,7 @@
     <string name="quick_settings_wifi_not_connected" msgid="7171904845345573431">"Tidak Disambungkan"</string>
     <string name="quick_settings_wifi_no_network" msgid="2221993077220856376">"Tiada Rangkaian"</string>
     <string name="quick_settings_wifi_off_label" msgid="7558778100843885864">"Wi-Fi Dimatikan"</string>
-    <!-- no translation found for quick_settings_wifi_on_label (7607810331387031235) -->
-    <skip />
+    <string name="quick_settings_wifi_on_label" msgid="7607810331387031235">"Wi-Fi Dihidupkan"</string>
     <string name="quick_settings_wifi_detail_empty_text" msgid="269990350383909226">"Tiada rangkaian Wi-Fi tersedia"</string>
     <string name="quick_settings_cast_title" msgid="7709016546426454729">"Hantar"</string>
     <string name="quick_settings_casting" msgid="6601710681033353316">"Menghantar"</string>
@@ -349,7 +340,7 @@
     <string name="zen_silence_introduction" msgid="3137882381093271568">"Mod ini menyekat SEMUA bunyi dan getaran, termasuk daripada penggera, muzik, video dan permainan."</string>
     <string name="keyguard_more_overflow_text" msgid="9195222469041601365">"+<xliff:g id="NUMBER_OF_NOTIFICATIONS">%d</xliff:g>"</string>
     <string name="speed_bump_explanation" msgid="1288875699658819755">"Pemberitahuan kurang penting di bawah"</string>
-    <string name="notification_tap_again" msgid="8524949573675922138">"Sentuh sekali lagi untuk membuka"</string>
+    <string name="notification_tap_again" msgid="7590196980943943842">"Ketik lagi untuk membuka"</string>
     <string name="keyguard_unlock" msgid="8043466894212841998">"Leret ke atas untuk membuka kunci"</string>
     <string name="phone_hint" msgid="4872890986869209950">"Leret dari ikon untuk telefon"</string>
     <string name="voice_hint" msgid="8939888732119726665">"Leret dari ikon untuk bantuan suara"</string>
@@ -427,7 +418,7 @@
     <string name="accessibility_volume_expand" msgid="5946812790999244205">"Kembangkan"</string>
     <string name="accessibility_volume_collapse" msgid="3609549593031810875">"Runtuhkan"</string>
     <string name="screen_pinning_title" msgid="3273740381976175811">"Skrin telah disemat"</string>
-    <string name="screen_pinning_description" msgid="3577937698406151604">"Ini akan memastikan skrin kelihatan sehingga anda menyahsemat. Sentuh dan tahan Kembali untuk menyahsemat."</string>
+    <string name="screen_pinning_description" msgid="7238941806855968768">"Tindakan ini memastikan skrin kelihatan sehingga anda menyahsemat. Sentuh &amp; tahan Kembali untuk menyahsemat."</string>
     <string name="screen_pinning_positive" msgid="3783985798366751226">"Faham"</string>
     <string name="screen_pinning_negative" msgid="3741602308343880268">"Tidak"</string>
     <string name="quick_settings_reset_confirmation_title" msgid="748792586749897883">"Sembunyikan <xliff:g id="TILE_LABEL">%1$s</xliff:g>?"</string>
@@ -437,15 +428,13 @@
     <string name="volumeui_prompt_allow" msgid="7954396902482228786">"Benarkan"</string>
     <string name="volumeui_prompt_deny" msgid="5720663643411696731">"Tolak"</string>
     <string name="volumeui_notification_title" msgid="4906770126345910955">"<xliff:g id="APP_NAME">%1$s</xliff:g> ialah dialog kelantangan"</string>
-    <string name="volumeui_notification_text" msgid="1826889705095768656">"Sentuh untuk memulihkan yang asal."</string>
+    <string name="volumeui_notification_text" msgid="8819536904234337445">"Ketik untuk memulihkan yang asal."</string>
     <string name="managed_profile_foreground_toast" msgid="5421487114739245972">"Anda sedang menggunakan profil kerja"</string>
     <string name="volume_stream_content_description_unmute" msgid="4436631538779230857">"%1$s. Ketik untuk menyahredam."</string>
     <string name="volume_stream_content_description_vibrate" msgid="1187944970457807498">"%1$s. Ketik untuk menetapkan pada getar. Perkhidmatan kebolehaksesan mungkin diredamkan."</string>
     <string name="volume_stream_content_description_mute" msgid="3625049841390467354">"%1$s. Ketik untuk meredam. Perkhidmatan kebolehaksesan mungkin diredamkan."</string>
-    <!-- no translation found for volume_dialog_accessibility_shown_message (1834631467074259998) -->
-    <skip />
-    <!-- no translation found for volume_dialog_accessibility_dismissed_message (51543526013711399) -->
-    <skip />
+    <string name="volume_dialog_accessibility_shown_message" msgid="1834631467074259998">"%s kawalan kelantangan ditunjukkan. Leret ke atas untuk mengetepikan."</string>
+    <string name="volume_dialog_accessibility_dismissed_message" msgid="51543526013711399">"Kawalan kelantangan disembunyikan"</string>
     <string name="system_ui_tuner" msgid="708224127392452018">"Penala UI Sistem"</string>
     <string name="show_battery_percentage" msgid="5444136600512968798">"Tunjukkan peratusan bateri terbenam"</string>
     <string name="show_battery_percentage_summary" msgid="3215025775576786037">"Tunjukkan peratusan aras bateri dalam ikon bar status semasa tidak mengecas"</string>
@@ -641,27 +630,17 @@
     <string name="accessibility_qs_edit_tile_removed" msgid="8584304916627913440">"<xliff:g id="TILE_NAME">%1$s</xliff:g> dialih keluar"</string>
     <string name="accessibility_qs_edit_tile_moved" msgid="4343693412689365038">"<xliff:g id="TILE_NAME">%1$s</xliff:g> dialihkan ke kedudukan <xliff:g id="POSITION">%2$d</xliff:g>"</string>
     <string name="accessibility_desc_quick_settings_edit" msgid="8073587401747016103">"Editor tetapan pantas."</string>
-    <!-- no translation found for accessibility_desc_notification_icon (8352414185263916335) -->
-    <skip />
+    <string name="accessibility_desc_notification_icon" msgid="8352414185263916335">"Pemberitahuan <xliff:g id="ID_1">%1$s</xliff:g>: <xliff:g id="ID_2">%2$s</xliff:g>"</string>
     <string name="dock_forced_resizable" msgid="5914261505436217520">"Apl mungkin tidak berfungsi dengan skrin pisah."</string>
     <string name="dock_non_resizeble_failed_to_dock_text" msgid="3871617304250207291">"Apl tidak menyokong skrin pisah."</string>
-    <!-- no translation found for accessibility_quick_settings_settings (6132460890024942157) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_expand (2375165227880477530) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_collapse (1792625797142648105) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_alarm_set (1863000242431528676) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_user (1567445362870421770) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_no_internet (31890692343084075) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_open_details (4230931801728005194) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_open_settings (7806613775728380737) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_edit (7839992848995240393) -->
-    <skip />
+    <string name="accessibility_quick_settings_settings" msgid="6132460890024942157">"Buka tetapan."</string>
+    <string name="accessibility_quick_settings_expand" msgid="2375165227880477530">"Buka tetapan pantas."</string>
+    <string name="accessibility_quick_settings_collapse" msgid="1792625797142648105">"Tutup tetapan pantas."</string>
+    <string name="accessibility_quick_settings_alarm_set" msgid="1863000242431528676">"Penggera ditetapkan."</string>
+    <string name="accessibility_quick_settings_user" msgid="1567445362870421770">"Dilog masuk sebagai <xliff:g id="ID_1">%s</xliff:g>"</string>
+    <string name="accessibility_quick_settings_no_internet" msgid="31890692343084075">"Tiada Internet."</string>
+    <string name="accessibility_quick_settings_open_details" msgid="4230931801728005194">"Buka butiran."</string>
+    <string name="accessibility_quick_settings_open_settings" msgid="7806613775728380737">"Buka tetapan <xliff:g id="ID_1">%s</xliff:g>."</string>
+    <string name="accessibility_quick_settings_edit" msgid="7839992848995240393">"Edit susunan tetapan."</string>
     <string name="accessibility_quick_settings_page" msgid="5032979051755200721">"Halaman <xliff:g id="ID_1">%1$d</xliff:g> daripada <xliff:g id="ID_2">%2$d</xliff:g>"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-ms-rMY/strings_tv.xml b/packages/SystemUI/res/values-ms-rMY/strings_tv.xml
index 6cb4113..502f231 100644
--- a/packages/SystemUI/res/values-ms-rMY/strings_tv.xml
+++ b/packages/SystemUI/res/values-ms-rMY/strings_tv.xml
@@ -24,10 +24,8 @@
     <string name="pip_play" msgid="674145557658227044">"Main"</string>
     <string name="pip_pause" msgid="8412075640017218862">"Jeda"</string>
     <string name="pip_hold_home" msgid="340086535668778109">"Thn "<b>"SKRN UTMA"</b>" utk kwl PIP"</string>
-    <!-- no translation found for pip_onboarding_title (7850436557670253991) -->
-    <skip />
-    <!-- no translation found for pip_onboarding_description (4028124563309465267) -->
-    <skip />
+    <string name="pip_onboarding_title" msgid="7850436557670253991">"Gambar dalam gambar"</string>
+    <string name="pip_onboarding_description" msgid="4028124563309465267">"Tindakan ini memastikan video anda sentiasa dipaparkan sehingga anda memainkan video lain. Tekan dan tahan "<b>"SKRIN UTAMA"</b>" untuk mengawalnya."</string>
     <string name="pip_onboarding_button" msgid="3957426748484904611">"OK"</string>
     <string name="recents_tv_dismiss" msgid="3555093879593377731">"Ketepikan"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-my-rMM/strings.xml b/packages/SystemUI/res/values-my-rMM/strings.xml
index 023bb3a0..2c51984 100644
--- a/packages/SystemUI/res/values-my-rMM/strings.xml
+++ b/packages/SystemUI/res/values-my-rMM/strings.xml
@@ -71,7 +71,7 @@
     <string name="screenshot_saving_title" msgid="8242282144535555697">"ဖန်သားပြင်ဓါတ်ပုံရိုက်ခြင်းအား သိမ်းဆည်းပါမည်"</string>
     <string name="screenshot_saving_text" msgid="2419718443411738818">"ဖန်သားပြင်ဓါတ်ပုံရိုက်ခြင်းအား သိမ်းဆည်းပြီးပါပြီ"</string>
     <string name="screenshot_saved_title" msgid="6461865960961414961">"ဖန်သားပြင်ဓါတ်ပုံရိုက်ခြင်းအား ဖမ်းယူပြီး"</string>
-    <string name="screenshot_saved_text" msgid="1152839647677558815">"သင့်ဖန်သားပြင်ဓါတ်ပုံရိုက်ခြင်းအား ကြည့်ရှုရန် ထိပါ"</string>
+    <string name="screenshot_saved_text" msgid="2685605830386712477">"မျက်နှာပြင်ပုံဖမ်းယူခြင်းကို ကြည့်ရှုရန် တို့ပါ"</string>
     <string name="screenshot_failed_title" msgid="705781116746922771">"ဖန်သားပြင်ဓါတ်ပုံရိုက်ခြင်းအား မဖမ်းစီးနိုင်ပါ"</string>
     <string name="screenshot_failed_to_save_unknown_text" msgid="7887826345701753830">"ဖန်သားပြင်ဓာတ်ပုံဖမ်းယူမှုကို သိမ်းဆည်းရာတွင် ပြဿနာကြုံခဲ့သည်။"</string>
     <string name="screenshot_failed_to_save_text" msgid="2592658083866306296">"သိုလှောင်ခန်းနေရာ အကန့်အသတ်ရှိသောကြောင့် ဖန်သားပြင်ဓာတ်ပုံကို သိမ်းဆည်း၍မရပါ။"</string>
@@ -340,7 +340,7 @@
     <string name="zen_silence_introduction" msgid="3137882381093271568">"နှိုးစက်၊ ဂီတ၊ ဗွီဒီယိုများနှင့် ဂိမ်းများ အပါအဝင်၊ အသံအားလုံးနှင့် တုန်ခါမှုများအား ဤအရာမှ တားဆီးပေး၏။"</string>
     <string name="keyguard_more_overflow_text" msgid="9195222469041601365">"+<xliff:g id="NUMBER_OF_NOTIFICATIONS">%d</xliff:g>"</string>
     <string name="speed_bump_explanation" msgid="1288875699658819755">"အရေးပါမှု နည်းသည့် အကြောင်းကြားချက်များ အောက်မှာ"</string>
-    <string name="notification_tap_again" msgid="8524949573675922138">"ဖွင့်ရန် ထပ်ပြီး ထိပါ"</string>
+    <string name="notification_tap_again" msgid="7590196980943943842">"ဖွင့်ရန် ထပ်ပြီး ပုတ်ပါ"</string>
     <string name="keyguard_unlock" msgid="8043466894212841998">"သော့ဖွင့်ရန် အပေါ်သို့ ပွတ်ဆွဲပါ"</string>
     <string name="phone_hint" msgid="4872890986869209950">"ဖုန်းအတွက် သင်္ကေတပုံအား ပွတ်ဆွဲပါ"</string>
     <string name="voice_hint" msgid="8939888732119726665">"အသံအကူအညီအတွက် သင်္ကေတပုံအား ပွတ်ဆွဲပါ"</string>
@@ -418,7 +418,7 @@
     <string name="accessibility_volume_expand" msgid="5946812790999244205">"တိုးချဲ့ရန်"</string>
     <string name="accessibility_volume_collapse" msgid="3609549593031810875">"ခေါက်သိမ်းရန်..."</string>
     <string name="screen_pinning_title" msgid="3273740381976175811">"မျက်နှာပြင် ပင်ထိုးပြီးပါပြီ"</string>
-    <string name="screen_pinning_description" msgid="3577937698406151604">"ပင်ဖြုတ်သည့်အထိ ၎င်းကို မြင်နေမည်။ ပင်ဖြုတ်ရန် နောက်သို့ ခလုတ်ကို ထိလျက် ကိုင်ထားပါ။"</string>
+    <string name="screen_pinning_description" msgid="7238941806855968768">"သင်က ပင်မဖြုတ်မချင်း ၎င်းကိုပြသထားပါမည်။ ပင်ဖြုတ်ရန် \'နောက်သို့\' ကိုထိပြီး ဖိထားပါ။"</string>
     <string name="screen_pinning_positive" msgid="3783985798366751226">"အဲဒါ ရပြီ"</string>
     <string name="screen_pinning_negative" msgid="3741602308343880268">"မလို ကျေးဇူးပဲ"</string>
     <string name="quick_settings_reset_confirmation_title" msgid="748792586749897883">"<xliff:g id="TILE_LABEL">%1$s</xliff:g> ဝှက်မည်လား?"</string>
@@ -428,7 +428,7 @@
     <string name="volumeui_prompt_allow" msgid="7954396902482228786">"ခွင့်ပြုသည်"</string>
     <string name="volumeui_prompt_deny" msgid="5720663643411696731">"ငြင်းပယ်သည်"</string>
     <string name="volumeui_notification_title" msgid="4906770126345910955">"<xliff:g id="APP_NAME">%1$s</xliff:g> သည် အသံဒိုင်ယာလော့ခ်ဖြစ်သည်"</string>
-    <string name="volumeui_notification_text" msgid="1826889705095768656">"မူရင်းအားပြန်လည်သိမ်းဆည်းရန် ထိပါ။"</string>
+    <string name="volumeui_notification_text" msgid="8819536904234337445">"မူရင်းကိုပြန်ယူရန် တို့ပါ။"</string>
     <string name="managed_profile_foreground_toast" msgid="5421487114739245972">"သင်သည် အလုပ်ပရိုဖိုင်းအား သုံးနေသည်"</string>
     <string name="volume_stream_content_description_unmute" msgid="4436631538779230857">"%1$s။ အသံပြန်ဖွင့်ရန် တို့ပါ။"</string>
     <string name="volume_stream_content_description_vibrate" msgid="1187944970457807498">"%1$s။ တုန်ခါမှုကို သတ်မှတ်ရန် တို့ပါ။ အများသုံးစွဲနိုင်မှု ဝန်ဆောင်မှုများကို အသံပိတ်ထားနိုင်ပါသည်။"</string>
diff --git a/packages/SystemUI/res/values-my-rMM/strings_tv.xml b/packages/SystemUI/res/values-my-rMM/strings_tv.xml
index f661d6e..4ce1992 100644
--- a/packages/SystemUI/res/values-my-rMM/strings_tv.xml
+++ b/packages/SystemUI/res/values-my-rMM/strings_tv.xml
@@ -25,7 +25,7 @@
     <string name="pip_pause" msgid="8412075640017218862">"ဆိုင်းငံ့ပါ"</string>
     <string name="pip_hold_home" msgid="340086535668778109">"PIP ကိုထိန်းချုပ်ရန် "<b>"ပင်မ"</b>" ခလုတ်ကို ဖိထားပါ"</string>
     <string name="pip_onboarding_title" msgid="7850436557670253991">"ပုံထဲမှပုံ"</string>
-    <string name="pip_onboarding_description" msgid="4028124563309465267">"အခြားတစ်ခုမဖွင့်မချင်း ၎င်းသည် သင့်ဗီဒီယိုကို ပြသထားပါမည်။ ၎င်းကိုထိန်းချုပ်ရန် "<b>"ပင်မ"</b>" ခလုတ်ကို နှိပ်ပြီးဖိထားပါ။"</string>
+    <string name="pip_onboarding_description" msgid="4028124563309465267">"နောက်တစ်ခုမဖွင့်မချင်း သင့်ဗီဒီယိုကို ပြသထားပါမည်။ ၎င်းကိုထိန်းချုပ်ရန် "<b>"ပင်မ"</b>" ခလုတ်ကို နှိပ်ပြီးဖိထားပါ။"</string>
     <string name="pip_onboarding_button" msgid="3957426748484904611">"ရပါပြီ"</string>
     <string name="recents_tv_dismiss" msgid="3555093879593377731">"ပယ်ပါ"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-nb/strings.xml b/packages/SystemUI/res/values-nb/strings.xml
index b572111..eb575da 100644
--- a/packages/SystemUI/res/values-nb/strings.xml
+++ b/packages/SystemUI/res/values-nb/strings.xml
@@ -71,7 +71,7 @@
     <string name="screenshot_saving_title" msgid="8242282144535555697">"Lagrer skjermdumpen …"</string>
     <string name="screenshot_saving_text" msgid="2419718443411738818">"Skjermdumpen lagres."</string>
     <string name="screenshot_saved_title" msgid="6461865960961414961">"Skjermdumpen er lagret."</string>
-    <string name="screenshot_saved_text" msgid="1152839647677558815">"Trykk for å se skjermdumpen."</string>
+    <string name="screenshot_saved_text" msgid="2685605830386712477">"Trykk for å se skjermdumpen."</string>
     <string name="screenshot_failed_title" msgid="705781116746922771">"Kan ikke lagre skjermdumpen."</string>
     <string name="screenshot_failed_to_save_unknown_text" msgid="7887826345701753830">"Det oppsto et problem under lagring av skjermdumpen."</string>
     <string name="screenshot_failed_to_save_text" msgid="2592658083866306296">"Kan ikke lagre skjermdumpen på grunn av begrenset lagringsplass."</string>
@@ -118,8 +118,7 @@
     <string name="accessibility_data_signal_full" msgid="2708384608124519369">"Datasignal er fullt."</string>
     <string name="accessibility_wifi_name" msgid="7202151365171148501">"Koblet til <xliff:g id="WIFI">%s</xliff:g>."</string>
     <string name="accessibility_bluetooth_name" msgid="8441517146585531676">"Koblet til <xliff:g id="BLUETOOTH">%s</xliff:g>."</string>
-    <!-- no translation found for accessibility_cast_name (4026393061247081201) -->
-    <skip />
+    <string name="accessibility_cast_name" msgid="4026393061247081201">"Koblet til <xliff:g id="CAST">%s</xliff:g>."</string>
     <string name="accessibility_no_wimax" msgid="4329180129727630368">"Ingen WiMAX."</string>
     <string name="accessibility_wimax_one_bar" msgid="4170994299011863648">"WiMAX – én stolpe."</string>
     <string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"WiMAX – to stolper."</string>
@@ -150,17 +149,14 @@
     <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string>
     <string name="accessibility_data_connection_wifi" msgid="2324496756590645221">"Wi-Fi"</string>
     <string name="accessibility_no_sim" msgid="8274017118472455155">"Uten SIM."</string>
-    <!-- no translation found for accessibility_cell_data (7080312242791850520) -->
-    <skip />
-    <!-- no translation found for accessibility_cell_data_on (4310018593519761767) -->
-    <skip />
+    <string name="accessibility_cell_data" msgid="7080312242791850520">"Mobildata"</string>
+    <string name="accessibility_cell_data_on" msgid="4310018593519761767">"Mobildata er på"</string>
     <string name="accessibility_cell_data_off" msgid="8000803571751407635">"Mobildata er av"</string>
     <string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"Bluetooth-internettdeling."</string>
     <string name="accessibility_airplane_mode" msgid="834748999790763092">"Flymodus."</string>
     <string name="accessibility_no_sims" msgid="3957997018324995781">"Mangler SIM-kort."</string>
     <string name="accessibility_carrier_network_change_mode" msgid="4017301580441304305">"Bytting av operatørnettverk."</string>
-    <!-- no translation found for accessibility_battery_details (7645516654955025422) -->
-    <skip />
+    <string name="accessibility_battery_details" msgid="7645516654955025422">"Åpne informasjon om batteriet"</string>
     <string name="accessibility_battery_level" msgid="7451474187113371965">"Batteri – <xliff:g id="NUMBER">%d</xliff:g> prosent."</string>
     <string name="accessibility_battery_level_charging" msgid="1147587904439319646">"Batteriet lades – <xliff:g id="BATTERY_PERCENTAGE">%d</xliff:g> prosent."</string>
     <string name="accessibility_settings_button" msgid="799583911231893380">"Systeminnstillinger."</string>
@@ -200,13 +196,11 @@
     <string name="accessibility_quick_settings_dnd_priority_on" msgid="1448402297221249355">"«Ikke forstyrr» er på – bare prioritert."</string>
     <string name="accessibility_quick_settings_dnd_none_on" msgid="6882582132662613537">"Ikke forstyrr er slått på, full stillhet."</string>
     <string name="accessibility_quick_settings_dnd_alarms_on" msgid="9152834845587554157">"Ikke forstyrr er på – bare alarmer."</string>
-    <!-- no translation found for accessibility_quick_settings_dnd (6607873236717185815) -->
-    <skip />
+    <string name="accessibility_quick_settings_dnd" msgid="6607873236717185815">"Ikke forstyrr."</string>
     <string name="accessibility_quick_settings_dnd_off" msgid="2371832603753738581">"«Ikke forstyrr» er av."</string>
     <string name="accessibility_quick_settings_dnd_changed_off" msgid="898107593453022935">"«Ikke forstyrr» er slått av."</string>
     <string name="accessibility_quick_settings_dnd_changed_on" msgid="4483780856613561039">"«Ikke forstyrr» er slått på."</string>
-    <!-- no translation found for accessibility_quick_settings_bluetooth (6341675755803320038) -->
-    <skip />
+    <string name="accessibility_quick_settings_bluetooth" msgid="6341675755803320038">"Bluetooth."</string>
     <string name="accessibility_quick_settings_bluetooth_off" msgid="2133631372372064339">"Bluetooth er av."</string>
     <string name="accessibility_quick_settings_bluetooth_on" msgid="7681999166216621838">"Bluetooth er på."</string>
     <string name="accessibility_quick_settings_bluetooth_connecting" msgid="6953242966685343855">"Bluetooth kobler til."</string>
@@ -272,10 +266,8 @@
     <string name="quick_settings_bluetooth_detail_empty_text" msgid="4910015762433302860">"Ingen sammenkoblede enheter er tilgjengelige"</string>
     <string name="quick_settings_brightness_label" msgid="6968372297018755815">"Lysstyrke"</string>
     <string name="quick_settings_rotation_unlocked_label" msgid="7305323031808150099">"Rotér automatisk"</string>
-    <!-- no translation found for accessibility_quick_settings_rotation (4231661040698488779) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_rotation_value (1428962304214992318) -->
-    <skip />
+    <string name="accessibility_quick_settings_rotation" msgid="4231661040698488779">"Rotér skjermen automatisk"</string>
+    <string name="accessibility_quick_settings_rotation_value" msgid="1428962304214992318">"Angi som <xliff:g id="ID_1">%s</xliff:g>"</string>
     <string name="quick_settings_rotation_locked_label" msgid="6359205706154282377">"Rotasjonen er låst"</string>
     <string name="quick_settings_rotation_locked_portrait_label" msgid="5102691921442135053">"Portrett"</string>
     <string name="quick_settings_rotation_locked_landscape_label" msgid="8553157770061178719">"Landskap"</string>
@@ -294,8 +286,7 @@
     <string name="quick_settings_wifi_not_connected" msgid="7171904845345573431">"Ikke tilkoblet"</string>
     <string name="quick_settings_wifi_no_network" msgid="2221993077220856376">"Ingen nettverk"</string>
     <string name="quick_settings_wifi_off_label" msgid="7558778100843885864">"Wi-Fi er av"</string>
-    <!-- no translation found for quick_settings_wifi_on_label (7607810331387031235) -->
-    <skip />
+    <string name="quick_settings_wifi_on_label" msgid="7607810331387031235">"Wi-Fi er på"</string>
     <string name="quick_settings_wifi_detail_empty_text" msgid="269990350383909226">"Ingen Wi-Fi-nettverk er tilgjengelige"</string>
     <string name="quick_settings_cast_title" msgid="7709016546426454729">"Cast"</string>
     <string name="quick_settings_casting" msgid="6601710681033353316">"Casting"</string>
@@ -349,7 +340,7 @@
     <string name="zen_silence_introduction" msgid="3137882381093271568">"Dette blokkerer ALLE lyder og vibrasjoner, inkludert fra alarmer, musikk, videoer og spill."</string>
     <string name="keyguard_more_overflow_text" msgid="9195222469041601365">"+<xliff:g id="NUMBER_OF_NOTIFICATIONS">%d</xliff:g>"</string>
     <string name="speed_bump_explanation" msgid="1288875699658819755">"Mindre presserende varsler nedenfor"</string>
-    <string name="notification_tap_again" msgid="8524949573675922138">"Trykk på nytt for å åpne"</string>
+    <string name="notification_tap_again" msgid="7590196980943943842">"Trykk på nytt for å åpne"</string>
     <string name="keyguard_unlock" msgid="8043466894212841998">"Sveip oppover for å låse opp"</string>
     <string name="phone_hint" msgid="4872890986869209950">"Sveip ikonet for å åpne telefon"</string>
     <string name="voice_hint" msgid="8939888732119726665">"Sveip fra ikonet for å åpne talehjelp"</string>
@@ -427,7 +418,7 @@
     <string name="accessibility_volume_expand" msgid="5946812790999244205">"Utvid"</string>
     <string name="accessibility_volume_collapse" msgid="3609549593031810875">"Skjul"</string>
     <string name="screen_pinning_title" msgid="3273740381976175811">"Skjermen er låst"</string>
-    <string name="screen_pinning_description" msgid="3577937698406151604">"På denne måten blir skjermen synlig frem til du låser den opp. Trykk og hold inne Tilbake for å låse opp."</string>
+    <string name="screen_pinning_description" msgid="7238941806855968768">"På denne måten blir skjermen synlig frem til du løsner den. Trykk og hold inne Tilbake for å løsne den."</string>
     <string name="screen_pinning_positive" msgid="3783985798366751226">"Skjønner"</string>
     <string name="screen_pinning_negative" msgid="3741602308343880268">"Nei takk"</string>
     <string name="quick_settings_reset_confirmation_title" msgid="748792586749897883">"Vil du skjule <xliff:g id="TILE_LABEL">%1$s</xliff:g>?"</string>
@@ -437,15 +428,13 @@
     <string name="volumeui_prompt_allow" msgid="7954396902482228786">"Tillat"</string>
     <string name="volumeui_prompt_deny" msgid="5720663643411696731">"Ikke tillat"</string>
     <string name="volumeui_notification_title" msgid="4906770126345910955">"<xliff:g id="APP_NAME">%1$s</xliff:g> er volumdialogen"</string>
-    <string name="volumeui_notification_text" msgid="1826889705095768656">"Trykk for å gå tilbake til den opprinnelige volumdialogen."</string>
+    <string name="volumeui_notification_text" msgid="8819536904234337445">"Trykk for å gjenopprette originalen."</string>
     <string name="managed_profile_foreground_toast" msgid="5421487114739245972">"Du bruker jobbprofilen din"</string>
     <string name="volume_stream_content_description_unmute" msgid="4436631538779230857">"%1$s. Trykk for å slå på lyden."</string>
     <string name="volume_stream_content_description_vibrate" msgid="1187944970457807498">"%1$s. Trykk for å angi vibrasjon. Lyden kan bli slått av for tilgjengelighetstjenestene."</string>
     <string name="volume_stream_content_description_mute" msgid="3625049841390467354">"%1$s. Trykk for å slå av lyden. Lyden kan bli slått av for tilgjengelighetstjenestene."</string>
-    <!-- no translation found for volume_dialog_accessibility_shown_message (1834631467074259998) -->
-    <skip />
-    <!-- no translation found for volume_dialog_accessibility_dismissed_message (51543526013711399) -->
-    <skip />
+    <string name="volume_dialog_accessibility_shown_message" msgid="1834631467074259998">"Volumkontrollene for %s vises. Sveip opp for å avvise dem."</string>
+    <string name="volume_dialog_accessibility_dismissed_message" msgid="51543526013711399">"Volumkontrollene er skjult"</string>
     <string name="system_ui_tuner" msgid="708224127392452018">"System UI Tuner"</string>
     <string name="show_battery_percentage" msgid="5444136600512968798">"Vis prosent for det innebygde batteriet"</string>
     <string name="show_battery_percentage_summary" msgid="3215025775576786037">"Vis batterinivåprosenten inni statusfeltikonet når du ikke lader"</string>
@@ -641,27 +630,17 @@
     <string name="accessibility_qs_edit_tile_removed" msgid="8584304916627913440">"<xliff:g id="TILE_NAME">%1$s</xliff:g> er fjernet"</string>
     <string name="accessibility_qs_edit_tile_moved" msgid="4343693412689365038">"<xliff:g id="TILE_NAME">%1$s</xliff:g> er flyttet til plassering <xliff:g id="POSITION">%2$d</xliff:g>"</string>
     <string name="accessibility_desc_quick_settings_edit" msgid="8073587401747016103">"Redigeringsvindu for hurtiginnstillinger."</string>
-    <!-- no translation found for accessibility_desc_notification_icon (8352414185263916335) -->
-    <skip />
+    <string name="accessibility_desc_notification_icon" msgid="8352414185263916335">"<xliff:g id="ID_1">%1$s</xliff:g>-varsel: <xliff:g id="ID_2">%2$s</xliff:g>"</string>
     <string name="dock_forced_resizable" msgid="5914261505436217520">"Det kan hende at appen ikke fungerer med delt skjerm."</string>
     <string name="dock_non_resizeble_failed_to_dock_text" msgid="3871617304250207291">"Appen støtter ikke delt skjerm."</string>
-    <!-- no translation found for accessibility_quick_settings_settings (6132460890024942157) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_expand (2375165227880477530) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_collapse (1792625797142648105) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_alarm_set (1863000242431528676) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_user (1567445362870421770) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_no_internet (31890692343084075) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_open_details (4230931801728005194) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_open_settings (7806613775728380737) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_edit (7839992848995240393) -->
-    <skip />
+    <string name="accessibility_quick_settings_settings" msgid="6132460890024942157">"Åpne innstillingene."</string>
+    <string name="accessibility_quick_settings_expand" msgid="2375165227880477530">"Åpner hurtiginnstillingene."</string>
+    <string name="accessibility_quick_settings_collapse" msgid="1792625797142648105">"Lukk hurtiginnstillingene."</string>
+    <string name="accessibility_quick_settings_alarm_set" msgid="1863000242431528676">"Alarm er angitt."</string>
+    <string name="accessibility_quick_settings_user" msgid="1567445362870421770">"Logget på som <xliff:g id="ID_1">%s</xliff:g>"</string>
+    <string name="accessibility_quick_settings_no_internet" msgid="31890692343084075">"Ingen Internett-tilkobling."</string>
+    <string name="accessibility_quick_settings_open_details" msgid="4230931801728005194">"Åpne informasjonen."</string>
+    <string name="accessibility_quick_settings_open_settings" msgid="7806613775728380737">"Åpne <xliff:g id="ID_1">%s</xliff:g>-innstillingene."</string>
+    <string name="accessibility_quick_settings_edit" msgid="7839992848995240393">"Endre rekkefølgen på innstillingene."</string>
     <string name="accessibility_quick_settings_page" msgid="5032979051755200721">"Side <xliff:g id="ID_1">%1$d</xliff:g> av <xliff:g id="ID_2">%2$d</xliff:g>"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-nb/strings_tv.xml b/packages/SystemUI/res/values-nb/strings_tv.xml
index 4c474c5..d401dfc 100644
--- a/packages/SystemUI/res/values-nb/strings_tv.xml
+++ b/packages/SystemUI/res/values-nb/strings_tv.xml
@@ -24,10 +24,8 @@
     <string name="pip_play" msgid="674145557658227044">"Spill av"</string>
     <string name="pip_pause" msgid="8412075640017218862">"Sett på pause"</string>
     <string name="pip_hold_home" msgid="340086535668778109">"Hold inne "<b>"STARTSIDE"</b>" for å kontrollere PIP"</string>
-    <!-- no translation found for pip_onboarding_title (7850436557670253991) -->
-    <skip />
-    <!-- no translation found for pip_onboarding_description (4028124563309465267) -->
-    <skip />
+    <string name="pip_onboarding_title" msgid="7850436557670253991">"Bilde-i-bilde"</string>
+    <string name="pip_onboarding_description" msgid="4028124563309465267">"Dette holder videoen din synlig frem til du spiller av en annen video. Trykk og holde inne "<b>"HOME"</b>" for å styre dette."</string>
     <string name="pip_onboarding_button" msgid="3957426748484904611">"Greit"</string>
     <string name="recents_tv_dismiss" msgid="3555093879593377731">"Avvis"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-ne-rNP/strings.xml b/packages/SystemUI/res/values-ne-rNP/strings.xml
index b12b621..62f81dc 100644
--- a/packages/SystemUI/res/values-ne-rNP/strings.xml
+++ b/packages/SystemUI/res/values-ne-rNP/strings.xml
@@ -71,7 +71,7 @@
     <string name="screenshot_saving_title" msgid="8242282144535555697">"स्क्रिनसट बचत गर्दै…"</string>
     <string name="screenshot_saving_text" msgid="2419718443411738818">"स्क्रिनसट बचत हुँदै छ।"</string>
     <string name="screenshot_saved_title" msgid="6461865960961414961">"स्क्रिनसट क्याप्चर गरियो।"</string>
-    <string name="screenshot_saved_text" msgid="1152839647677558815">"तपाईँको स्क्रिनसट हेर्न छुनुहोस्।"</string>
+    <string name="screenshot_saved_text" msgid="2685605830386712477">"आफ्नो स्क्रिनसट हेर्न ट्याप गर्नुहोस्।"</string>
     <string name="screenshot_failed_title" msgid="705781116746922771">"स्क्रिनसट क्याप्चर गर्न सकिएन।"</string>
     <string name="screenshot_failed_to_save_unknown_text" msgid="7887826345701753830">"स्क्रिनसटलाई सुरक्षित गर्दा समस्या भयो।"</string>
     <string name="screenshot_failed_to_save_text" msgid="2592658083866306296">"सीमित भण्डारण स्थान उपलब्ध रहेको हुनाले स्क्रिनसटलाई सुरक्षित गर्न सकिँदैन।"</string>
@@ -340,7 +340,7 @@
     <string name="zen_silence_introduction" msgid="3137882381093271568">"यसले अलार्म, संगीत, भिडियोहरू र खेलहरूसहित सबै ध्वनिहरू र कम्पनहरूलाई रोक्छ।"</string>
     <string name="keyguard_more_overflow_text" msgid="9195222469041601365">"+<xliff:g id="NUMBER_OF_NOTIFICATIONS">%d</xliff:g>"</string>
     <string name="speed_bump_explanation" msgid="1288875699658819755">"तल कम जरुरी सूचनाहरू"</string>
-    <string name="notification_tap_again" msgid="8524949573675922138">"खोल्न फेरि छुनुहोस्"</string>
+    <string name="notification_tap_again" msgid="7590196980943943842">"खोल्न पुनः ट्याप गर्नुहोस्"</string>
     <string name="keyguard_unlock" msgid="8043466894212841998">"अनलक गर्न स्वाप गर्नुहोस्"</string>
     <string name="phone_hint" msgid="4872890986869209950">"फोनको लागि आइकनबाट स्वाइप गर्नुहोस्"</string>
     <string name="voice_hint" msgid="8939888732119726665">"आवाज सहायताका लागि आइकनबाट स्वाइप गर्नुहोस्"</string>
@@ -418,7 +418,7 @@
     <string name="accessibility_volume_expand" msgid="5946812790999244205">"विस्तार गर्नुहोस्"</string>
     <string name="accessibility_volume_collapse" msgid="3609549593031810875">"संक्षिप्त पार्नुहोस्"</string>
     <string name="screen_pinning_title" msgid="3273740381976175811">"पर्दा राखेका छ"</string>
-    <string name="screen_pinning_description" msgid="3577937698406151604">"तपाईँले अनपिन नगरेसम्म यसले त्यसलाई देखाइ राख्छ। अनपिन गर्न छुनुहोस् र होल्ड गर्नुहोस्"</string>
+    <string name="screen_pinning_description" msgid="7238941806855968768">"तपाईँले अनपिन नगरेसम्म यसले त्यसलाई दृश्यमा कायम राख्छ। अनपिन गर्नका लागि पछाडि बटनलाई छोइराख्नुहोस्।"</string>
     <string name="screen_pinning_positive" msgid="3783985798366751226">"बुझेँ"</string>
     <string name="screen_pinning_negative" msgid="3741602308343880268">"धन्यवाद पर्दैन"</string>
     <string name="quick_settings_reset_confirmation_title" msgid="748792586749897883">"लुकाउनुहुन्छ <xliff:g id="TILE_LABEL">%1$s</xliff:g>?"</string>
@@ -428,7 +428,7 @@
     <string name="volumeui_prompt_allow" msgid="7954396902482228786">"अनुमति दिनुहोस्"</string>
     <string name="volumeui_prompt_deny" msgid="5720663643411696731">"अस्वीकार गर्नुहोस्"</string>
     <string name="volumeui_notification_title" msgid="4906770126345910955">"<xliff:g id="APP_NAME">%1$s</xliff:g> भोल्यूम संवाद हो"</string>
-    <string name="volumeui_notification_text" msgid="1826889705095768656">"मूल पुनर्स्थापना गर्न छुनुहोस्।"</string>
+    <string name="volumeui_notification_text" msgid="8819536904234337445">"मूललाई पुनर्स्थापना गर्न ट्याप गर्नुहोस्।"</string>
     <string name="managed_profile_foreground_toast" msgid="5421487114739245972">"तपाईँले कार्य प्रोफाइल प्रयोग गर्दै हुनुहुन्छ"</string>
     <string name="volume_stream_content_description_unmute" msgid="4436631538779230857">"%1$s। अनम्यूट गर्नका लागि ट्याप गर्नुहोस्।"</string>
     <string name="volume_stream_content_description_vibrate" msgid="1187944970457807498">"%1$s। कम्पनमा सेट गर्नका लागि ट्याप गर्नुहोस्। पहुँच सम्बन्धी सेवाहरू म्यूट हुन सक्छन्।"</string>
diff --git a/packages/SystemUI/res/values-nl/strings.xml b/packages/SystemUI/res/values-nl/strings.xml
index 558a1d2..e226254 100644
--- a/packages/SystemUI/res/values-nl/strings.xml
+++ b/packages/SystemUI/res/values-nl/strings.xml
@@ -71,7 +71,7 @@
     <string name="screenshot_saving_title" msgid="8242282144535555697">"Screenshot opslaan..."</string>
     <string name="screenshot_saving_text" msgid="2419718443411738818">"Screenshot wordt opgeslagen."</string>
     <string name="screenshot_saved_title" msgid="6461865960961414961">"Screenshot gemaakt."</string>
-    <string name="screenshot_saved_text" msgid="1152839647677558815">"Raak aan om je screenshot te bekijken."</string>
+    <string name="screenshot_saved_text" msgid="2685605830386712477">"Tik om je screenshot te bekijken."</string>
     <string name="screenshot_failed_title" msgid="705781116746922771">"Screenshot is niet gemaakt."</string>
     <string name="screenshot_failed_to_save_unknown_text" msgid="7887826345701753830">"Er is een probleem opgetreden bij het opslaan van het screenshot."</string>
     <string name="screenshot_failed_to_save_text" msgid="2592658083866306296">"Kan screenshot niet opslaan vanwege beperkte opslagruimte."</string>
@@ -118,8 +118,7 @@
     <string name="accessibility_data_signal_full" msgid="2708384608124519369">"Gegevenssignaal is op volle sterkte."</string>
     <string name="accessibility_wifi_name" msgid="7202151365171148501">"Verbonden met <xliff:g id="WIFI">%s</xliff:g>."</string>
     <string name="accessibility_bluetooth_name" msgid="8441517146585531676">"Verbonden met <xliff:g id="BLUETOOTH">%s</xliff:g>."</string>
-    <!-- no translation found for accessibility_cast_name (4026393061247081201) -->
-    <skip />
+    <string name="accessibility_cast_name" msgid="4026393061247081201">"Verbonden met <xliff:g id="CAST">%s</xliff:g>."</string>
     <string name="accessibility_no_wimax" msgid="4329180129727630368">"Geen WiMAX."</string>
     <string name="accessibility_wimax_one_bar" msgid="4170994299011863648">"WiMAX: één streepje."</string>
     <string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"WiMAX: twee streepjes."</string>
@@ -150,17 +149,14 @@
     <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string>
     <string name="accessibility_data_connection_wifi" msgid="2324496756590645221">"Wifi"</string>
     <string name="accessibility_no_sim" msgid="8274017118472455155">"Geen simkaart."</string>
-    <!-- no translation found for accessibility_cell_data (7080312242791850520) -->
-    <skip />
-    <!-- no translation found for accessibility_cell_data_on (4310018593519761767) -->
-    <skip />
+    <string name="accessibility_cell_data" msgid="7080312242791850520">"Mobiele data"</string>
+    <string name="accessibility_cell_data_on" msgid="4310018593519761767">"Mobiele data aan"</string>
     <string name="accessibility_cell_data_off" msgid="8000803571751407635">"Mobiele data uit"</string>
     <string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"Bluetooth-tethering."</string>
     <string name="accessibility_airplane_mode" msgid="834748999790763092">"Vliegtuigmodus."</string>
     <string name="accessibility_no_sims" msgid="3957997018324995781">"Geen simkaart."</string>
     <string name="accessibility_carrier_network_change_mode" msgid="4017301580441304305">"Netwerk van provider wordt gewijzigd."</string>
-    <!-- no translation found for accessibility_battery_details (7645516654955025422) -->
-    <skip />
+    <string name="accessibility_battery_details" msgid="7645516654955025422">"Accudetails openen"</string>
     <string name="accessibility_battery_level" msgid="7451474187113371965">"Accu: <xliff:g id="NUMBER">%d</xliff:g> procent."</string>
     <string name="accessibility_battery_level_charging" msgid="1147587904439319646">"Accu wordt opgeladen, <xliff:g id="BATTERY_PERCENTAGE">%d</xliff:g> procent."</string>
     <string name="accessibility_settings_button" msgid="799583911231893380">"Systeeminstellingen."</string>
@@ -200,13 +196,11 @@
     <string name="accessibility_quick_settings_dnd_priority_on" msgid="1448402297221249355">"Niet storen aan, alleen prioriteit."</string>
     <string name="accessibility_quick_settings_dnd_none_on" msgid="6882582132662613537">"Niet storen aan, totale stilte."</string>
     <string name="accessibility_quick_settings_dnd_alarms_on" msgid="9152834845587554157">"Niet storen aan, alleen alarmen."</string>
-    <!-- no translation found for accessibility_quick_settings_dnd (6607873236717185815) -->
-    <skip />
+    <string name="accessibility_quick_settings_dnd" msgid="6607873236717185815">"Niet storen."</string>
     <string name="accessibility_quick_settings_dnd_off" msgid="2371832603753738581">"Niet storen uit."</string>
     <string name="accessibility_quick_settings_dnd_changed_off" msgid="898107593453022935">"Niet storen uitgeschakeld."</string>
     <string name="accessibility_quick_settings_dnd_changed_on" msgid="4483780856613561039">"Niet storen ingeschakeld."</string>
-    <!-- no translation found for accessibility_quick_settings_bluetooth (6341675755803320038) -->
-    <skip />
+    <string name="accessibility_quick_settings_bluetooth" msgid="6341675755803320038">"Bluetooth."</string>
     <string name="accessibility_quick_settings_bluetooth_off" msgid="2133631372372064339">"Bluetooth uit."</string>
     <string name="accessibility_quick_settings_bluetooth_on" msgid="7681999166216621838">"Bluetooth aan."</string>
     <string name="accessibility_quick_settings_bluetooth_connecting" msgid="6953242966685343855">"Bluetooth-verbinding wordt gemaakt."</string>
@@ -272,10 +266,8 @@
     <string name="quick_settings_bluetooth_detail_empty_text" msgid="4910015762433302860">"Geen gekoppelde apparaten beschikbaar"</string>
     <string name="quick_settings_brightness_label" msgid="6968372297018755815">"Helderheid"</string>
     <string name="quick_settings_rotation_unlocked_label" msgid="7305323031808150099">"Automatische rotatie"</string>
-    <!-- no translation found for accessibility_quick_settings_rotation (4231661040698488779) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_rotation_value (1428962304214992318) -->
-    <skip />
+    <string name="accessibility_quick_settings_rotation" msgid="4231661040698488779">"Scherm automatisch draaien"</string>
+    <string name="accessibility_quick_settings_rotation_value" msgid="1428962304214992318">"Instellen op <xliff:g id="ID_1">%s</xliff:g>"</string>
     <string name="quick_settings_rotation_locked_label" msgid="6359205706154282377">"Rotatie vergrendeld"</string>
     <string name="quick_settings_rotation_locked_portrait_label" msgid="5102691921442135053">"Portret"</string>
     <string name="quick_settings_rotation_locked_landscape_label" msgid="8553157770061178719">"Landschap"</string>
@@ -294,8 +286,7 @@
     <string name="quick_settings_wifi_not_connected" msgid="7171904845345573431">"Niet verbonden"</string>
     <string name="quick_settings_wifi_no_network" msgid="2221993077220856376">"Geen netwerk"</string>
     <string name="quick_settings_wifi_off_label" msgid="7558778100843885864">"Wifi uit"</string>
-    <!-- no translation found for quick_settings_wifi_on_label (7607810331387031235) -->
-    <skip />
+    <string name="quick_settings_wifi_on_label" msgid="7607810331387031235">"Wifi aan"</string>
     <string name="quick_settings_wifi_detail_empty_text" msgid="269990350383909226">"Geen wifi-netwerken beschikbaar"</string>
     <string name="quick_settings_cast_title" msgid="7709016546426454729">"Casten"</string>
     <string name="quick_settings_casting" msgid="6601710681033353316">"Casten"</string>
@@ -349,7 +340,7 @@
     <string name="zen_silence_introduction" msgid="3137882381093271568">"Hiermee worden ALLE geluiden en trillingen geblokkeerd, waaronder die voor alarmen, muziek, video\'s en games."</string>
     <string name="keyguard_more_overflow_text" msgid="9195222469041601365">"+<xliff:g id="NUMBER_OF_NOTIFICATIONS">%d</xliff:g>"</string>
     <string name="speed_bump_explanation" msgid="1288875699658819755">"Minder urgente meldingen onderaan"</string>
-    <string name="notification_tap_again" msgid="8524949573675922138">"Raak opnieuw aan om te openen"</string>
+    <string name="notification_tap_again" msgid="7590196980943943842">"Tik nogmaals om te openen"</string>
     <string name="keyguard_unlock" msgid="8043466894212841998">"Veeg omhoog om te ontgrendelen"</string>
     <string name="phone_hint" msgid="4872890986869209950">"Vegen voor telefoon"</string>
     <string name="voice_hint" msgid="8939888732119726665">"Vegen vanaf pictogram voor spraakassistent"</string>
@@ -427,7 +418,7 @@
     <string name="accessibility_volume_expand" msgid="5946812790999244205">"Uitvouwen"</string>
     <string name="accessibility_volume_collapse" msgid="3609549593031810875">"Samenvouwen"</string>
     <string name="screen_pinning_title" msgid="3273740381976175811">"Scherm is vastgezet"</string>
-    <string name="screen_pinning_description" msgid="3577937698406151604">"Het scherm blijft zichtbaar totdat je het losmaakt. Blijf \'Terug\' aanraken om het los te maken."</string>
+    <string name="screen_pinning_description" msgid="7238941806855968768">"Het scherm blijft zichtbaar totdat je het losmaakt. Tik op Terug en houd vast om het scherm los te maken."</string>
     <string name="screen_pinning_positive" msgid="3783985798366751226">"Ik snap het"</string>
     <string name="screen_pinning_negative" msgid="3741602308343880268">"Nee, bedankt"</string>
     <string name="quick_settings_reset_confirmation_title" msgid="748792586749897883">"<xliff:g id="TILE_LABEL">%1$s</xliff:g> verbergen?"</string>
@@ -437,15 +428,13 @@
     <string name="volumeui_prompt_allow" msgid="7954396902482228786">"Toestaan"</string>
     <string name="volumeui_prompt_deny" msgid="5720663643411696731">"Weigeren"</string>
     <string name="volumeui_notification_title" msgid="4906770126345910955">"<xliff:g id="APP_NAME">%1$s</xliff:g> is het volumedialoogvenster"</string>
-    <string name="volumeui_notification_text" msgid="1826889705095768656">"Tik hierop om het origineel te herstellen."</string>
+    <string name="volumeui_notification_text" msgid="8819536904234337445">"Tik om het origineel te herstellen."</string>
     <string name="managed_profile_foreground_toast" msgid="5421487114739245972">"U gebruikt je werkprofiel"</string>
     <string name="volume_stream_content_description_unmute" msgid="4436631538779230857">"%1$s. Tik om dempen op te heffen."</string>
     <string name="volume_stream_content_description_vibrate" msgid="1187944970457807498">"%1$s. Tik om in te stellen op trillen. Toegankelijkheidsservices kunnen zijn gedempt."</string>
     <string name="volume_stream_content_description_mute" msgid="3625049841390467354">"%1$s. Tik om te dempen. Toegankelijkheidsservices kunnen zijn gedempt."</string>
-    <!-- no translation found for volume_dialog_accessibility_shown_message (1834631467074259998) -->
-    <skip />
-    <!-- no translation found for volume_dialog_accessibility_dismissed_message (51543526013711399) -->
-    <skip />
+    <string name="volume_dialog_accessibility_shown_message" msgid="1834631467074259998">"Volumeknoppen van %s worden weergegeven. Veeg omhoog om te sluiten."</string>
+    <string name="volume_dialog_accessibility_dismissed_message" msgid="51543526013711399">"Volumeknoppen verborgen"</string>
     <string name="system_ui_tuner" msgid="708224127392452018">"Systeem-UI-tuner"</string>
     <string name="show_battery_percentage" msgid="5444136600512968798">"Percentage ingebouwde accu weergeven"</string>
     <string name="show_battery_percentage_summary" msgid="3215025775576786037">"Accupercentage weergeven in het pictogram op de statusbalk wanneer er niet wordt opgeladen"</string>
@@ -641,27 +630,17 @@
     <string name="accessibility_qs_edit_tile_removed" msgid="8584304916627913440">"<xliff:g id="TILE_NAME">%1$s</xliff:g> is verwijderd"</string>
     <string name="accessibility_qs_edit_tile_moved" msgid="4343693412689365038">"<xliff:g id="TILE_NAME">%1$s</xliff:g> is verplaatst naar positie <xliff:g id="POSITION">%2$d</xliff:g>"</string>
     <string name="accessibility_desc_quick_settings_edit" msgid="8073587401747016103">"Editor voor \'Snelle instellingen\'."</string>
-    <!-- no translation found for accessibility_desc_notification_icon (8352414185263916335) -->
-    <skip />
+    <string name="accessibility_desc_notification_icon" msgid="8352414185263916335">"<xliff:g id="ID_1">%1$s</xliff:g>-melding: <xliff:g id="ID_2">%2$s</xliff:g>"</string>
     <string name="dock_forced_resizable" msgid="5914261505436217520">"App werkt mogelijk niet met gesplitst scherm."</string>
     <string name="dock_non_resizeble_failed_to_dock_text" msgid="3871617304250207291">"App biedt geen ondersteuning voor gesplitst scherm."</string>
-    <!-- no translation found for accessibility_quick_settings_settings (6132460890024942157) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_expand (2375165227880477530) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_collapse (1792625797142648105) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_alarm_set (1863000242431528676) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_user (1567445362870421770) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_no_internet (31890692343084075) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_open_details (4230931801728005194) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_open_settings (7806613775728380737) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_edit (7839992848995240393) -->
-    <skip />
+    <string name="accessibility_quick_settings_settings" msgid="6132460890024942157">"Instellingen openen."</string>
+    <string name="accessibility_quick_settings_expand" msgid="2375165227880477530">"Snelle instellingen openen."</string>
+    <string name="accessibility_quick_settings_collapse" msgid="1792625797142648105">"Snelle instellingen sluiten."</string>
+    <string name="accessibility_quick_settings_alarm_set" msgid="1863000242431528676">"Alarm is ingesteld."</string>
+    <string name="accessibility_quick_settings_user" msgid="1567445362870421770">"Ingelogd als <xliff:g id="ID_1">%s</xliff:g>"</string>
+    <string name="accessibility_quick_settings_no_internet" msgid="31890692343084075">"Geen internet."</string>
+    <string name="accessibility_quick_settings_open_details" msgid="4230931801728005194">"Details openen."</string>
+    <string name="accessibility_quick_settings_open_settings" msgid="7806613775728380737">"<xliff:g id="ID_1">%s</xliff:g>-instellingen openen."</string>
+    <string name="accessibility_quick_settings_edit" msgid="7839992848995240393">"Volgorde van instellingen bewerken."</string>
     <string name="accessibility_quick_settings_page" msgid="5032979051755200721">"Pagina <xliff:g id="ID_1">%1$d</xliff:g> van <xliff:g id="ID_2">%2$d</xliff:g>"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-nl/strings_tv.xml b/packages/SystemUI/res/values-nl/strings_tv.xml
index b5c4a29..ee0510c 100644
--- a/packages/SystemUI/res/values-nl/strings_tv.xml
+++ b/packages/SystemUI/res/values-nl/strings_tv.xml
@@ -24,10 +24,8 @@
     <string name="pip_play" msgid="674145557658227044">"Afspelen"</string>
     <string name="pip_pause" msgid="8412075640017218862">"Onderbreken"</string>
     <string name="pip_hold_home" msgid="340086535668778109">"Bedien PIP met "<b>"HOME"</b></string>
-    <!-- no translation found for pip_onboarding_title (7850436557670253991) -->
-    <skip />
-    <!-- no translation found for pip_onboarding_description (4028124563309465267) -->
-    <skip />
+    <string name="pip_onboarding_title" msgid="7850436557670253991">"Beeld-in-beeld"</string>
+    <string name="pip_onboarding_description" msgid="4028124563309465267">"Hiermee blijft je video in beeld totdat je een andere afspeelt. Houd "<b>"HOME"</b>" ingedrukt om de functie te bedienen."</string>
     <string name="pip_onboarding_button" msgid="3957426748484904611">"OK"</string>
     <string name="recents_tv_dismiss" msgid="3555093879593377731">"Sluiten"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-pa-rIN/strings.xml b/packages/SystemUI/res/values-pa-rIN/strings.xml
index 6c1c550..5cab544 100644
--- a/packages/SystemUI/res/values-pa-rIN/strings.xml
+++ b/packages/SystemUI/res/values-pa-rIN/strings.xml
@@ -71,7 +71,7 @@
     <string name="screenshot_saving_title" msgid="8242282144535555697">"ਸਕ੍ਰੀਨਸ਼ੌਟ ਸੁਰੱਖਿਅਤ ਕਰ ਰਿਹਾ ਹੈ…"</string>
     <string name="screenshot_saving_text" msgid="2419718443411738818">"ਸਕ੍ਰੀਨਸ਼ੌਟ ਸੁਰੱਖਿਅਤ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ।"</string>
     <string name="screenshot_saved_title" msgid="6461865960961414961">"ਸਕ੍ਰੀਨਸ਼ੌਟ ਕੈਪਚਰ ਕੀਤਾ।"</string>
-    <string name="screenshot_saved_text" msgid="1152839647677558815">"ਆਪਣਾ ਸਕ੍ਰੀਨਸ਼ੌਟ ਦੇਖਣ ਲਈ ਛੋਹਵੋ।"</string>
+    <string name="screenshot_saved_text" msgid="2685605830386712477">"ਆਪਣਾ ਸਕ੍ਰੀਨਸ਼ਾਟ ਵੇਖਣ ਲਈ ਟੈਪ ਕਰੋ।"</string>
     <string name="screenshot_failed_title" msgid="705781116746922771">"ਸਕ੍ਰੀਨਸ਼ੌਟ ਕੈਪਚਰ ਨਹੀਂ ਕਰ ਸਕਿਆ।"</string>
     <string name="screenshot_failed_to_save_unknown_text" msgid="7887826345701753830">"ਸਕ੍ਰੀਨਸ਼ਾਟ ਰੱਖਿਅਤ ਕਰਨ ਦੌਰਾਨ ਸਮੱਸਿਆ ਆਈ।"</string>
     <string name="screenshot_failed_to_save_text" msgid="2592658083866306296">"ਸੀਮਿਤ ਸਟੋਰੇਜ ਥਾਂ ਦੇ ਕਾਰਨ ਸਕ੍ਰੀਨਸ਼ਾਟ ਰੱਖਿਅਤ ਨਹੀਂ ਕੀਤਾ ਸਕਦਾ।"</string>
@@ -118,8 +118,7 @@
     <string name="accessibility_data_signal_full" msgid="2708384608124519369">"ਡਾਟਾ ਸਿਗਨਲ ਪੂਰਾ।"</string>
     <string name="accessibility_wifi_name" msgid="7202151365171148501">"<xliff:g id="WIFI">%s</xliff:g> ਨਾਲ ਕਨੈਕਟ ਕੀਤਾ।"</string>
     <string name="accessibility_bluetooth_name" msgid="8441517146585531676">"<xliff:g id="BLUETOOTH">%s</xliff:g> ਨਾਲ ਕਨੈਕਟ ਕੀਤਾ।"</string>
-    <!-- no translation found for accessibility_cast_name (4026393061247081201) -->
-    <skip />
+    <string name="accessibility_cast_name" msgid="4026393061247081201">"<xliff:g id="CAST">%s</xliff:g> ਨਾਲ ਕਨੈਕਟ ਕੀਤਾ ਗਿਆ।"</string>
     <string name="accessibility_no_wimax" msgid="4329180129727630368">"ਕੋਈ WiMAX ਨਹੀਂ।"</string>
     <string name="accessibility_wimax_one_bar" msgid="4170994299011863648">"WiMAX ਇੱਕ ਬਾਰ।"</string>
     <string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"WiMAX ਦੋ ਬਾਰਸ।"</string>
@@ -150,17 +149,14 @@
     <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"ਕਿਨਾਰਾ"</string>
     <string name="accessibility_data_connection_wifi" msgid="2324496756590645221">"Wi-Fi"</string>
     <string name="accessibility_no_sim" msgid="8274017118472455155">"ਕੋਈ SIM ਨਹੀਂ।"</string>
-    <!-- no translation found for accessibility_cell_data (7080312242791850520) -->
-    <skip />
-    <!-- no translation found for accessibility_cell_data_on (4310018593519761767) -->
-    <skip />
+    <string name="accessibility_cell_data" msgid="7080312242791850520">"ਸੈਲਿਊਲਰ ਡੈਟਾ"</string>
+    <string name="accessibility_cell_data_on" msgid="4310018593519761767">"ਸੈਲਿਊਲਰ ਡੈਟਾ ਚਾਲੂ ਹੈ"</string>
     <string name="accessibility_cell_data_off" msgid="8000803571751407635">"ਸੈਲਿਊਲਰ ਡੈਟਾ ਬੰਦ ਹੈ"</string>
     <string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"Bluetooth ਟੀਥਰਿੰਗ।"</string>
     <string name="accessibility_airplane_mode" msgid="834748999790763092">"ਏਅਰਪਲੇਨ ਮੋਡ।"</string>
     <string name="accessibility_no_sims" msgid="3957997018324995781">"ਕੋਈ SIM ਕਾਰਡ ਨਹੀਂ।"</string>
     <string name="accessibility_carrier_network_change_mode" msgid="4017301580441304305">"ਕੈਰੀਅਰ ਨੈੱਟਵਰਕ ਪਰਿਵਰਤਨ।"</string>
-    <!-- no translation found for accessibility_battery_details (7645516654955025422) -->
-    <skip />
+    <string name="accessibility_battery_details" msgid="7645516654955025422">"ਬੈਟਰੀ ਵੇਰਵੇ ਖੋਲ੍ਹੋ"</string>
     <string name="accessibility_battery_level" msgid="7451474187113371965">"ਬੈਟਰੀ <xliff:g id="NUMBER">%d</xliff:g> ਪ੍ਰਤੀਸ਼ਤ ਹੈ।"</string>
     <string name="accessibility_battery_level_charging" msgid="1147587904439319646">"ਬੈਟਰੀ ਚਾਰਜ ਹੋ ਰਹੀ ਹੈ, <xliff:g id="BATTERY_PERCENTAGE">%d</xliff:g> ਪ੍ਰਤੀਸ਼ਤ।"</string>
     <string name="accessibility_settings_button" msgid="799583911231893380">"ਸਿਸਟਮ ਸੈਟਿੰਗਾਂ।"</string>
@@ -200,13 +196,11 @@
     <string name="accessibility_quick_settings_dnd_priority_on" msgid="1448402297221249355">"ਪਰੇਸ਼ਾਨ ਨਾ ਕਰੋ ਚਾਲੂ, ਕੇਵਲ ਤਰਜੀਹੀ।"</string>
     <string name="accessibility_quick_settings_dnd_none_on" msgid="6882582132662613537">"ਪਰੇਸ਼ਾਨ ਨਾ ਕਰੋ ਚਾਲੂ ਕਰੋ, ਕੁਲ ਚੁੱਪੀ।"</string>
     <string name="accessibility_quick_settings_dnd_alarms_on" msgid="9152834845587554157">"ਪਰੇਸ਼ਾਨ ਨਾ ਕਰੋ ਚਾਲੂ, ਕੇਵਲ ਅਲਾਰਮ।"</string>
-    <!-- no translation found for accessibility_quick_settings_dnd (6607873236717185815) -->
-    <skip />
+    <string name="accessibility_quick_settings_dnd" msgid="6607873236717185815">"ਮੈਨੂੰ ਪਰੇਸ਼ਾਨ ਨਾ ਕਰੋ।"</string>
     <string name="accessibility_quick_settings_dnd_off" msgid="2371832603753738581">"ਪਰੇਸ਼ਾਨ ਨਾ ਕਰੋ ਬੰਦ।"</string>
     <string name="accessibility_quick_settings_dnd_changed_off" msgid="898107593453022935">"ਪਰੇਸ਼ਾਨ ਨਾ ਕਰੋ ਬੰਦ ਕੀਤਾ।"</string>
     <string name="accessibility_quick_settings_dnd_changed_on" msgid="4483780856613561039">"ਪਰੇਸ਼ਾਨ ਨਾ ਕਰੋ ਚਾਲੂ ਕੀਤਾ।"</string>
-    <!-- no translation found for accessibility_quick_settings_bluetooth (6341675755803320038) -->
-    <skip />
+    <string name="accessibility_quick_settings_bluetooth" msgid="6341675755803320038">"ਬਲੂਟੁੱਥ।"</string>
     <string name="accessibility_quick_settings_bluetooth_off" msgid="2133631372372064339">"Bluetooth ਬੰਦ।"</string>
     <string name="accessibility_quick_settings_bluetooth_on" msgid="7681999166216621838">"Bluetooth ਚਾਲੂ।"</string>
     <string name="accessibility_quick_settings_bluetooth_connecting" msgid="6953242966685343855">"Bluetooth ਕਨੈਕਟ ਕਰ ਰਿਹਾ ਹੈ।"</string>
@@ -272,10 +266,8 @@
     <string name="quick_settings_bluetooth_detail_empty_text" msgid="4910015762433302860">"ਕੋਈ ਪੇਅਰ ਕੀਤੀਆਂ ਡਿਵਾਈਸਾਂ ਉਪਲਬਧ ਨਹੀਂ"</string>
     <string name="quick_settings_brightness_label" msgid="6968372297018755815">"ਚਮਕ"</string>
     <string name="quick_settings_rotation_unlocked_label" msgid="7305323031808150099">"ਆਟੋ-ਰੋਟੇਟ"</string>
-    <!-- no translation found for accessibility_quick_settings_rotation (4231661040698488779) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_rotation_value (1428962304214992318) -->
-    <skip />
+    <string name="accessibility_quick_settings_rotation" msgid="4231661040698488779">"ਸਕ੍ਰੀਨ ਨੂੰ ਆਪਣੇ ਆਪ ਘੁੰਮਾਓ"</string>
+    <string name="accessibility_quick_settings_rotation_value" msgid="1428962304214992318">"<xliff:g id="ID_1">%s</xliff:g> \'ਤੇ ਸੈੱਟ ਕਰੋ"</string>
     <string name="quick_settings_rotation_locked_label" msgid="6359205706154282377">"ਰੋਟੇਸ਼ਨ ਲੌਕ ਕੀਤੀ"</string>
     <string name="quick_settings_rotation_locked_portrait_label" msgid="5102691921442135053">"ਤਸਵੀਰ"</string>
     <string name="quick_settings_rotation_locked_landscape_label" msgid="8553157770061178719">"ਲੈਂਡਸਕੇਪ"</string>
@@ -294,8 +286,7 @@
     <string name="quick_settings_wifi_not_connected" msgid="7171904845345573431">"ਕਨੈਕਟ ਨਹੀਂ ਕੀਤਾ"</string>
     <string name="quick_settings_wifi_no_network" msgid="2221993077220856376">"ਕੋਈ ਨੈਟਵਰਕ ਨਹੀਂ"</string>
     <string name="quick_settings_wifi_off_label" msgid="7558778100843885864">"Wi-Fi ਬੰਦ"</string>
-    <!-- no translation found for quick_settings_wifi_on_label (7607810331387031235) -->
-    <skip />
+    <string name="quick_settings_wifi_on_label" msgid="7607810331387031235">"Wi-Fi ਚਾਲੂ"</string>
     <string name="quick_settings_wifi_detail_empty_text" msgid="269990350383909226">"ਕੋਈ Wi-Fi ਨੈਟਵਰਕ ਉਪਲਬਧ ਨਹੀਂ"</string>
     <string name="quick_settings_cast_title" msgid="7709016546426454729">"ਜੋੜੋ"</string>
     <string name="quick_settings_casting" msgid="6601710681033353316">"ਕਾਸਟਿੰਗ"</string>
@@ -349,7 +340,8 @@
     <string name="zen_silence_introduction" msgid="3137882381093271568">"ਇਹ ਅਲਾਰਮ, ਸੰਗੀਤ, ਵੀਡੀਓਜ਼, ਅਤੇ ਗੇਮਸ ਸਮੇਤ, ਸਾਰੀਆਂ ਧੁਨੀਆਂ ਅਤੇ ਵਾਇਬ੍ਰੇਸ਼ਨ ਨੂੰ ਬਲੌਕ ਕਰਦਾ ਹੈ।"</string>
     <string name="keyguard_more_overflow_text" msgid="9195222469041601365">"+<xliff:g id="NUMBER_OF_NOTIFICATIONS">%d</xliff:g>"</string>
     <string name="speed_bump_explanation" msgid="1288875699658819755">"ਹੇਠਾਂ ਘੱਟ ਲਾਜ਼ਮੀ ਸੂਚਨਾਵਾਂ"</string>
-    <string name="notification_tap_again" msgid="8524949573675922138">"ਖੋਲ੍ਹਣ ਲਈ ਦੁਬਾਰਾ ਛੋਹਵੋ"</string>
+    <!-- no translation found for notification_tap_again (7590196980943943842) -->
+    <skip />
     <string name="keyguard_unlock" msgid="8043466894212841998">"ਅਨਲੌਕ ਕਰਨ ਲਈ ਉੱਪਰ ਸਵਾਈਪ ਕਰੋ।"</string>
     <string name="phone_hint" msgid="4872890986869209950">"ਫ਼ੋਨ ਲਈ ਆਈਕਨ ਤੋਂ ਸਵਾਈਪ ਕਰੋ"</string>
     <string name="voice_hint" msgid="8939888732119726665">"ਵੌਇਸ ਅਸਿਸਟ ਲਈ ਆਈਕਨ ਤੋਂ ਸਵਾਈਪ ਕਰੋ"</string>
@@ -427,7 +419,7 @@
     <string name="accessibility_volume_expand" msgid="5946812790999244205">"ਵਿਸਤਾਰ ਕਰੋ"</string>
     <string name="accessibility_volume_collapse" msgid="3609549593031810875">"ਨਸ਼ਟ ਕਰੋ"</string>
     <string name="screen_pinning_title" msgid="3273740381976175811">"ਸਕ੍ਰੀਨ ਪਿੰਨ ਕੀਤੀ"</string>
-    <string name="screen_pinning_description" msgid="3577937698406151604">"ਇਹ ਦ੍ਰਿਸ਼ ਵਿੱਚ ਉਦੋਂ ਤੱਕ ਬਣਿਆ ਰਹਿੰਦਾ ਹੈ ਜਦੋਂ ਤੱਕ ਤੁਸੀਂ ਅਨਪਿੰਨ ਨਹੀਂ ਕਰਦੇ। ਅਨਪਿੰਨ ਕਰਨ ਲਈ ਛੂੁਹੋ ਅਤੇ ਹੋਲਡ ਕਰੋ।"</string>
+    <string name="screen_pinning_description" msgid="7238941806855968768">"ਇਹ ਇਸ ਨੂੰ ਤੁਹਾਡੇ ਵੱਲੋਂ ਅਨਪਿੰਨ ਨਾ ਕੀਤੇ ਜਾਣ ਤੱਕ ਦ੍ਰਿਸ਼ ਵਿੱਚ ਰੱਖਦਾ ਹੈ। ਅਨਪਿੰਨ ਕਰਨ ਲਈ ਵਾਪਸ ਜਾਓ ਨੂੰ ਸਪਰਸ਼ ਕਰਕੇ ਦਬਾਈ ਰੱਖੋ।"</string>
     <string name="screen_pinning_positive" msgid="3783985798366751226">"ਸਮਝ ਗਿਆ"</string>
     <string name="screen_pinning_negative" msgid="3741602308343880268">"ਨਹੀਂ ਧੰਨਵਾਦ"</string>
     <string name="quick_settings_reset_confirmation_title" msgid="748792586749897883">"ਕੀ <xliff:g id="TILE_LABEL">%1$s</xliff:g> ਨੂੰ ਲੁਕਾਉਣਾ ਹੈ?"</string>
@@ -437,15 +429,13 @@
     <string name="volumeui_prompt_allow" msgid="7954396902482228786">"ਆਗਿਆ ਦਿਓ"</string>
     <string name="volumeui_prompt_deny" msgid="5720663643411696731">"ਅਸਵੀਕਾਰ ਕਰੋ"</string>
     <string name="volumeui_notification_title" msgid="4906770126345910955">"<xliff:g id="APP_NAME">%1$s</xliff:g> ਵੋਲਯੂਮ ਡਾਇਲੌਗ ਹੈ"</string>
-    <string name="volumeui_notification_text" msgid="1826889705095768656">"ਅਸਲੀ ਨੂੰ ਰੀਸਟੋਰ ਕਰਨ ਲਈ ਛੋਹਵੋ।"</string>
+    <string name="volumeui_notification_text" msgid="8819536904234337445">"ਅਸਲ ਨੂੰ ਮੁੜ-ਬਹਾਲ ਕਰਨ ਲਈ ਟੈਪ ਕਰੋ।"</string>
     <string name="managed_profile_foreground_toast" msgid="5421487114739245972">"ਤੁਸੀਂ ਆਪਣੀ ਕੰਮ ਪ੍ਰੋਫਾਈਲ ਵਰਤ ਰਹੇ ਹੋ"</string>
     <string name="volume_stream_content_description_unmute" msgid="4436631538779230857">"%1$s। ਅਣਮਿਊਟ ਕਰਨ ਲਈ ਟੈਪ ਕਰੋ।"</string>
     <string name="volume_stream_content_description_vibrate" msgid="1187944970457807498">"%1$s। ਥਰਥਰਾਹਟ ਸੈੱਟ ਕਰਨ ਲਈ ਟੈਪ ਕਰੋ। ਪਹੁੰਚਯੋਗਤਾ ਸੇਵਾਵਾਂ ਮਿਊਟ ਹੋ ਸਕਦੀਆਂ ਹਨ।"</string>
     <string name="volume_stream_content_description_mute" msgid="3625049841390467354">"%1$s। ਮਿਊਟ ਕਰਨ ਲਈ ਟੈਪ ਕਰੋ। ਪਹੁੰਚਯੋਗਤਾ ਸੇਵਾਵਾਂ ਮਿਊਟ ਹੋ ਸਕਦੀਆਂ ਹਨ।"</string>
-    <!-- no translation found for volume_dialog_accessibility_shown_message (1834631467074259998) -->
-    <skip />
-    <!-- no translation found for volume_dialog_accessibility_dismissed_message (51543526013711399) -->
-    <skip />
+    <string name="volume_dialog_accessibility_shown_message" msgid="1834631467074259998">"%s ਵੌਲਯੂਮ ਕੰਟਰੋਲ ਵਿਖਾਏ ਗਏ ਹਨ। ਬਰਖ਼ਾਸਤ ਕਰਨ ਲਈ ਉੱਪਰ ਸਵਾਈਪ ਕਰੋ।"</string>
+    <string name="volume_dialog_accessibility_dismissed_message" msgid="51543526013711399">"ਵੌਲਯੂਮ ਕੰਟਰੋਲ ਲੁਕਾਏ ਗਏ ਹਨ"</string>
     <string name="system_ui_tuner" msgid="708224127392452018">"System UI ਟਿਊਨਰ"</string>
     <string name="show_battery_percentage" msgid="5444136600512968798">"ਜੋਡ਼ੀ ਗਈ ਬੈਟਰੀ ਪ੍ਰਤਿਸ਼ਤਤਾ ਦਿਖਾਓ"</string>
     <string name="show_battery_percentage_summary" msgid="3215025775576786037">"ਜਦੋਂ ਚਾਰਜ ਨਾ ਹੋ ਰਹੀ ਹੋਵੇ ਤਾਂ ਸਥਿਤੀ ਬਾਰ ਦੇ ਅੰਦਰ ਬੈਟਰੀ ਪੱਧਰ ਪ੍ਰਤਿਸ਼ਤਤਾ ਦਿਖਾਓ"</string>
@@ -641,27 +631,17 @@
     <string name="accessibility_qs_edit_tile_removed" msgid="8584304916627913440">"<xliff:g id="TILE_NAME">%1$s</xliff:g> ਨੂੰ ਹਟਾਇਆ ਗਿਆ"</string>
     <string name="accessibility_qs_edit_tile_moved" msgid="4343693412689365038">"<xliff:g id="TILE_NAME">%1$s</xliff:g> ਨੂੰ <xliff:g id="POSITION">%2$d</xliff:g> ਸਥਿਤੀ \'ਤੇ ਤਬਦੀਲ ਕੀਤਾ ਗਿਆ"</string>
     <string name="accessibility_desc_quick_settings_edit" msgid="8073587401747016103">"ਤਤਕਾਲ ਸੈਟਿੰਗਾਂ ਸੰਪਾਦਕ।"</string>
-    <!-- no translation found for accessibility_desc_notification_icon (8352414185263916335) -->
-    <skip />
+    <string name="accessibility_desc_notification_icon" msgid="8352414185263916335">"<xliff:g id="ID_1">%1$s</xliff:g> ਸੂਚਨਾ: <xliff:g id="ID_2">%2$s</xliff:g>"</string>
     <string name="dock_forced_resizable" msgid="5914261505436217520">"ਹੋ ਸਕਦਾ ਹੈ ਕਿ ਐਪ ਸਪਲਿਟ-ਸਕ੍ਰੀਨ ਨਾਲ ਕੰਮ ਨਾ ਕਰੇ।"</string>
     <string name="dock_non_resizeble_failed_to_dock_text" msgid="3871617304250207291">"ਐਪ ਸਪਲਿਟ-ਸਕ੍ਰੀਨ ਨੂੰ ਸਮਰਥਨ ਨਹੀਂ ਕਰਦੀ।"</string>
-    <!-- no translation found for accessibility_quick_settings_settings (6132460890024942157) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_expand (2375165227880477530) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_collapse (1792625797142648105) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_alarm_set (1863000242431528676) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_user (1567445362870421770) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_no_internet (31890692343084075) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_open_details (4230931801728005194) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_open_settings (7806613775728380737) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_edit (7839992848995240393) -->
-    <skip />
+    <string name="accessibility_quick_settings_settings" msgid="6132460890024942157">"ਸੈਟਿੰਗਾਂ ਖੋਲ੍ਹੋ।"</string>
+    <string name="accessibility_quick_settings_expand" msgid="2375165227880477530">"ਤਤਕਾਲ ਸੈਟਿੰਗਾਂ ਨੂੰ ਖੋਲ੍ਹੋ।"</string>
+    <string name="accessibility_quick_settings_collapse" msgid="1792625797142648105">"ਤਤਕਾਲ ਸੈਟਿੰਗਾਂ ਨੂੰ ਬੰਦ ਕਰੋ।"</string>
+    <string name="accessibility_quick_settings_alarm_set" msgid="1863000242431528676">"ਅਲਾਰਮ ਸੈੱਟ ਕੀਤਾ।"</string>
+    <string name="accessibility_quick_settings_user" msgid="1567445362870421770">"<xliff:g id="ID_1">%s</xliff:g> ਵਜੋਂ ਸਾਈਨ ਇਨ ਕੀਤਾ"</string>
+    <string name="accessibility_quick_settings_no_internet" msgid="31890692343084075">"ਇੰਟਰਨੈੱਟ ਨਹੀਂ।"</string>
+    <string name="accessibility_quick_settings_open_details" msgid="4230931801728005194">"ਵੇਰਵੇ ਖੋਲ੍ਹੋ।"</string>
+    <string name="accessibility_quick_settings_open_settings" msgid="7806613775728380737">"<xliff:g id="ID_1">%s</xliff:g> ਸੈਟਿੰਗਾਂ ਖੋਲ੍ਹੋ।"</string>
+    <string name="accessibility_quick_settings_edit" msgid="7839992848995240393">"ਸੈਟਿੰਗਾਂ ਦੇ ਕ੍ਰਮ ਦਾ ਸੰਪਾਦਨ ਕਰੋ।"</string>
     <string name="accessibility_quick_settings_page" msgid="5032979051755200721">"<xliff:g id="ID_2">%2$d</xliff:g> ਦਾ <xliff:g id="ID_1">%1$d</xliff:g> ਪੰਨਾ"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-pa-rIN/strings_tv.xml b/packages/SystemUI/res/values-pa-rIN/strings_tv.xml
index adbb00c..afaa658 100644
--- a/packages/SystemUI/res/values-pa-rIN/strings_tv.xml
+++ b/packages/SystemUI/res/values-pa-rIN/strings_tv.xml
@@ -24,10 +24,8 @@
     <string name="pip_play" msgid="674145557658227044">"ਚਲਾਓ"</string>
     <string name="pip_pause" msgid="8412075640017218862">"ਰੋਕੋ"</string>
     <string name="pip_hold_home" msgid="340086535668778109">"PIP ਕੰਟਰੋਲ ਕਰਨ ਲਈ "<b>"ਹੋਮ"</b>" ਦਬਾਈ ਰੱਖੋ"</string>
-    <!-- no translation found for pip_onboarding_title (7850436557670253991) -->
-    <skip />
-    <!-- no translation found for pip_onboarding_description (4028124563309465267) -->
-    <skip />
+    <string name="pip_onboarding_title" msgid="7850436557670253991">"ਤਸਵੀਰ-ਵਿੱਚ-ਤਸਵੀਰ"</string>
+    <string name="pip_onboarding_description" msgid="4028124563309465267">"ਇਹ ਤੁਹਾਡੀ ਵੀਡੀਓ ਨੂੰ ਤਦ ਤੱਕ ਦ੍ਰਿਸ਼ ਵਿੱਚ ਰੱਖਦਾ ਹੈ, ਜਦੋਂ ਤੱਕ ਤੁਸੀਂ ਕੋਈ ਹੋਰ ਵੀਡੀਓ ਨਹੀਂ ਚਲਾਉਂਦੇ ਹੋ। ਇਸ ਨੂੰ ਕੰਟਰੋਲ ਕਰਨ ਲਈ "<b>"ਹੋਮ"</b>" ਬਟਨ ਨੂੰ ਦੱਬੋ ਅਤੇ ਦਬਾਈ ਰੱਖੋ।"</string>
     <string name="pip_onboarding_button" msgid="3957426748484904611">"ਸਮਝ ਲਿਆ"</string>
     <string name="recents_tv_dismiss" msgid="3555093879593377731">"ਖ਼ਾਰਜ ਕਰੋ"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-pl/strings.xml b/packages/SystemUI/res/values-pl/strings.xml
index 43b6aa5..dd7e4e6 100644
--- a/packages/SystemUI/res/values-pl/strings.xml
+++ b/packages/SystemUI/res/values-pl/strings.xml
@@ -73,7 +73,7 @@
     <string name="screenshot_saving_title" msgid="8242282144535555697">"Zapisywanie zrzutu ekranu..."</string>
     <string name="screenshot_saving_text" msgid="2419718443411738818">"Zapisywanie zrzutu ekranu."</string>
     <string name="screenshot_saved_title" msgid="6461865960961414961">"Wykonano zrzut ekranu."</string>
-    <string name="screenshot_saved_text" msgid="1152839647677558815">"Dotknij, aby wyświetlić zrzut ekranu."</string>
+    <string name="screenshot_saved_text" msgid="2685605830386712477">"Kliknij, by zobaczyć zrzut ekranu."</string>
     <string name="screenshot_failed_title" msgid="705781116746922771">"Nie udało się wykonać zrzutu ekranu."</string>
     <string name="screenshot_failed_to_save_unknown_text" msgid="7887826345701753830">"Podczas zapisywania zrzutu ekranu wystąpił błąd."</string>
     <string name="screenshot_failed_to_save_text" msgid="2592658083866306296">"Nie można zapisać zrzutu ekranu, bo brakuje miejsca w pamięci."</string>
@@ -120,8 +120,7 @@
     <string name="accessibility_data_signal_full" msgid="2708384608124519369">"Dane: pełna moc sygnału."</string>
     <string name="accessibility_wifi_name" msgid="7202151365171148501">"Połączono z <xliff:g id="WIFI">%s</xliff:g>."</string>
     <string name="accessibility_bluetooth_name" msgid="8441517146585531676">"Połączono z <xliff:g id="BLUETOOTH">%s</xliff:g>."</string>
-    <!-- no translation found for accessibility_cast_name (4026393061247081201) -->
-    <skip />
+    <string name="accessibility_cast_name" msgid="4026393061247081201">"Połączono z urządzeniem <xliff:g id="CAST">%s</xliff:g>."</string>
     <string name="accessibility_no_wimax" msgid="4329180129727630368">"WiMAX: brak"</string>
     <string name="accessibility_wimax_one_bar" msgid="4170994299011863648">"WiMAX: jeden pasek"</string>
     <string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"WiMAX: dwa paski"</string>
@@ -152,17 +151,14 @@
     <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string>
     <string name="accessibility_data_connection_wifi" msgid="2324496756590645221">"Wi-Fi"</string>
     <string name="accessibility_no_sim" msgid="8274017118472455155">"Brak karty SIM."</string>
-    <!-- no translation found for accessibility_cell_data (7080312242791850520) -->
-    <skip />
-    <!-- no translation found for accessibility_cell_data_on (4310018593519761767) -->
-    <skip />
+    <string name="accessibility_cell_data" msgid="7080312242791850520">"Komórkowa transmisja danych"</string>
+    <string name="accessibility_cell_data_on" msgid="4310018593519761767">"Komórkowa transmisja danych włączona"</string>
     <string name="accessibility_cell_data_off" msgid="8000803571751407635">"Komórkowa transmisja danych jest wyłączona"</string>
     <string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"Powiązanie Bluetooth."</string>
     <string name="accessibility_airplane_mode" msgid="834748999790763092">"Tryb samolotowy."</string>
     <string name="accessibility_no_sims" msgid="3957997018324995781">"Brak karty SIM."</string>
     <string name="accessibility_carrier_network_change_mode" msgid="4017301580441304305">"Zmiana sieci operatora."</string>
-    <!-- no translation found for accessibility_battery_details (7645516654955025422) -->
-    <skip />
+    <string name="accessibility_battery_details" msgid="7645516654955025422">"Zobacz szczegóły baterii"</string>
     <string name="accessibility_battery_level" msgid="7451474187113371965">"Bateria: <xliff:g id="NUMBER">%d</xliff:g> procent."</string>
     <string name="accessibility_battery_level_charging" msgid="1147587904439319646">"Ładuję baterię, <xliff:g id="BATTERY_PERCENTAGE">%d</xliff:g> procent."</string>
     <string name="accessibility_settings_button" msgid="799583911231893380">"Ustawienia systemu."</string>
@@ -202,13 +198,11 @@
     <string name="accessibility_quick_settings_dnd_priority_on" msgid="1448402297221249355">"Nie przeszkadzać (włączone, tylko priorytetowe)."</string>
     <string name="accessibility_quick_settings_dnd_none_on" msgid="6882582132662613537">"Nie przeszkadzać (włączone, całkowita cisza)."</string>
     <string name="accessibility_quick_settings_dnd_alarms_on" msgid="9152834845587554157">"Nie przeszkadzać (włączone, tylko alarmy)."</string>
-    <!-- no translation found for accessibility_quick_settings_dnd (6607873236717185815) -->
-    <skip />
+    <string name="accessibility_quick_settings_dnd" msgid="6607873236717185815">"Nie przeszkadzać."</string>
     <string name="accessibility_quick_settings_dnd_off" msgid="2371832603753738581">"Nie przeszkadzać (wyłączone)."</string>
     <string name="accessibility_quick_settings_dnd_changed_off" msgid="898107593453022935">"Nieprzeszkadzanie wyłączone."</string>
     <string name="accessibility_quick_settings_dnd_changed_on" msgid="4483780856613561039">"Nieprzeszkadzanie włączone."</string>
-    <!-- no translation found for accessibility_quick_settings_bluetooth (6341675755803320038) -->
-    <skip />
+    <string name="accessibility_quick_settings_bluetooth" msgid="6341675755803320038">"Bluetooth."</string>
     <string name="accessibility_quick_settings_bluetooth_off" msgid="2133631372372064339">"Bluetooth wyłączony."</string>
     <string name="accessibility_quick_settings_bluetooth_on" msgid="7681999166216621838">"Bluetooth włączony."</string>
     <string name="accessibility_quick_settings_bluetooth_connecting" msgid="6953242966685343855">"Nawiązywanie połączenia Bluetooth."</string>
@@ -274,10 +268,8 @@
     <string name="quick_settings_bluetooth_detail_empty_text" msgid="4910015762433302860">"Brak dostępnych sparowanych urządzeń"</string>
     <string name="quick_settings_brightness_label" msgid="6968372297018755815">"Jasność"</string>
     <string name="quick_settings_rotation_unlocked_label" msgid="7305323031808150099">"Autoobracanie"</string>
-    <!-- no translation found for accessibility_quick_settings_rotation (4231661040698488779) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_rotation_value (1428962304214992318) -->
-    <skip />
+    <string name="accessibility_quick_settings_rotation" msgid="4231661040698488779">"Autoobracanie ekranu"</string>
+    <string name="accessibility_quick_settings_rotation_value" msgid="1428962304214992318">"Ustaw na: <xliff:g id="ID_1">%s</xliff:g>"</string>
     <string name="quick_settings_rotation_locked_label" msgid="6359205706154282377">"Obracanie zablokowane"</string>
     <string name="quick_settings_rotation_locked_portrait_label" msgid="5102691921442135053">"Pionowo"</string>
     <string name="quick_settings_rotation_locked_landscape_label" msgid="8553157770061178719">"Poziomo"</string>
@@ -296,8 +288,7 @@
     <string name="quick_settings_wifi_not_connected" msgid="7171904845345573431">"Brak połączenia"</string>
     <string name="quick_settings_wifi_no_network" msgid="2221993077220856376">"Brak sieci"</string>
     <string name="quick_settings_wifi_off_label" msgid="7558778100843885864">"Wi-Fi wyłączone"</string>
-    <!-- no translation found for quick_settings_wifi_on_label (7607810331387031235) -->
-    <skip />
+    <string name="quick_settings_wifi_on_label" msgid="7607810331387031235">"Wi-Fi wł."</string>
     <string name="quick_settings_wifi_detail_empty_text" msgid="269990350383909226">"Brak dostępnych sieci Wi-Fi"</string>
     <string name="quick_settings_cast_title" msgid="7709016546426454729">"Przesyłanie"</string>
     <string name="quick_settings_casting" msgid="6601710681033353316">"Przesyłam"</string>
@@ -351,7 +342,7 @@
     <string name="zen_silence_introduction" msgid="3137882381093271568">"To zablokuje WSZYSTKIE dźwięki i wibracje – w tym alarmy, muzykę, filmy i gry."</string>
     <string name="keyguard_more_overflow_text" msgid="9195222469041601365">"+<xliff:g id="NUMBER_OF_NOTIFICATIONS">%d</xliff:g>"</string>
     <string name="speed_bump_explanation" msgid="1288875699658819755">"Poniżej widać mniej pilne powiadomienia"</string>
-    <string name="notification_tap_again" msgid="8524949573675922138">"Kliknij ponownie, by otworzyć"</string>
+    <string name="notification_tap_again" msgid="7590196980943943842">"Kliknij ponownie, by otworzyć"</string>
     <string name="keyguard_unlock" msgid="8043466894212841998">"Przesuń w górę, by odblokować"</string>
     <string name="phone_hint" msgid="4872890986869209950">"Aby włączyć telefon, przesuń palcem od ikony"</string>
     <string name="voice_hint" msgid="8939888732119726665">"Aby uzyskać pomoc głosową, przesuń palcem od ikony"</string>
@@ -429,7 +420,7 @@
     <string name="accessibility_volume_expand" msgid="5946812790999244205">"Rozwiń"</string>
     <string name="accessibility_volume_collapse" msgid="3609549593031810875">"Zwiń"</string>
     <string name="screen_pinning_title" msgid="3273740381976175811">"Ekran jest przypięty"</string>
-    <string name="screen_pinning_description" msgid="3577937698406151604">"Ekran będzie widoczny, dopóki go nie odepniesz. Aby to zrobić, kliknij i przytrzymaj Wstecz."</string>
+    <string name="screen_pinning_description" msgid="7238941806855968768">"Ekran będzie widoczny, dopóki go nie odepniesz. Aby to zrobić, kliknij i przytrzymaj Wstecz."</string>
     <string name="screen_pinning_positive" msgid="3783985798366751226">"OK"</string>
     <string name="screen_pinning_negative" msgid="3741602308343880268">"Nie, dziękuję"</string>
     <string name="quick_settings_reset_confirmation_title" msgid="748792586749897883">"Ukryć <xliff:g id="TILE_LABEL">%1$s</xliff:g>?"</string>
@@ -439,15 +430,13 @@
     <string name="volumeui_prompt_allow" msgid="7954396902482228786">"Zezwól"</string>
     <string name="volumeui_prompt_deny" msgid="5720663643411696731">"Odmów"</string>
     <string name="volumeui_notification_title" msgid="4906770126345910955">"<xliff:g id="APP_NAME">%1$s</xliff:g> steruje głośnością"</string>
-    <string name="volumeui_notification_text" msgid="1826889705095768656">"Dotknij, by przywrócić pierwotną."</string>
+    <string name="volumeui_notification_text" msgid="8819536904234337445">"Kliknij, by przywrócić ustawienie początkowe."</string>
     <string name="managed_profile_foreground_toast" msgid="5421487114739245972">"Używasz profilu do pracy"</string>
     <string name="volume_stream_content_description_unmute" msgid="4436631538779230857">"%1$s. Kliknij, by wyłączyć wyciszenie."</string>
     <string name="volume_stream_content_description_vibrate" msgid="1187944970457807498">"%1$s. Kliknij, by włączyć wibracje. Ułatwienia dostępu mogą być wyciszone."</string>
     <string name="volume_stream_content_description_mute" msgid="3625049841390467354">"%1$s. Kliknij, by wyciszyć. Ułatwienia dostępu mogą być wyciszone."</string>
-    <!-- no translation found for volume_dialog_accessibility_shown_message (1834631467074259998) -->
-    <skip />
-    <!-- no translation found for volume_dialog_accessibility_dismissed_message (51543526013711399) -->
-    <skip />
+    <string name="volume_dialog_accessibility_shown_message" msgid="1834631467074259998">"Wyświetlane są elementy sterowania głośnością aplikacji %s. Przesuń palcem, by odrzucić."</string>
+    <string name="volume_dialog_accessibility_dismissed_message" msgid="51543526013711399">"Elementy sterowania głośnością ukryte"</string>
     <string name="system_ui_tuner" msgid="708224127392452018">"Kalibrator System UI"</string>
     <string name="show_battery_percentage" msgid="5444136600512968798">"Pokaż procent naładowania baterii"</string>
     <string name="show_battery_percentage_summary" msgid="3215025775576786037">"Pokaż procent naładowania baterii w ikonie na pasku stanu, gdy telefon się nie ładuje"</string>
@@ -643,27 +632,17 @@
     <string name="accessibility_qs_edit_tile_removed" msgid="8584304916627913440">"Kafelek <xliff:g id="TILE_NAME">%1$s</xliff:g> został usunięty"</string>
     <string name="accessibility_qs_edit_tile_moved" msgid="4343693412689365038">"Kafelek <xliff:g id="TILE_NAME">%1$s</xliff:g> przeniesiony w położenie <xliff:g id="POSITION">%2$d</xliff:g>"</string>
     <string name="accessibility_desc_quick_settings_edit" msgid="8073587401747016103">"Edytor szybkich ustawień."</string>
-    <!-- no translation found for accessibility_desc_notification_icon (8352414185263916335) -->
-    <skip />
+    <string name="accessibility_desc_notification_icon" msgid="8352414185263916335">"Powiadomienie z aplikacji <xliff:g id="ID_1">%1$s</xliff:g>: <xliff:g id="ID_2">%2$s</xliff:g>"</string>
     <string name="dock_forced_resizable" msgid="5914261505436217520">"Aplikacja może nie działać przy podzielonym ekranie."</string>
     <string name="dock_non_resizeble_failed_to_dock_text" msgid="3871617304250207291">"Aplikacja nie obsługuje dzielonego ekranu."</string>
-    <!-- no translation found for accessibility_quick_settings_settings (6132460890024942157) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_expand (2375165227880477530) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_collapse (1792625797142648105) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_alarm_set (1863000242431528676) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_user (1567445362870421770) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_no_internet (31890692343084075) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_open_details (4230931801728005194) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_open_settings (7806613775728380737) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_edit (7839992848995240393) -->
-    <skip />
+    <string name="accessibility_quick_settings_settings" msgid="6132460890024942157">"Otwórz ustawienia."</string>
+    <string name="accessibility_quick_settings_expand" msgid="2375165227880477530">"Otwórz szybkie ustawienia."</string>
+    <string name="accessibility_quick_settings_collapse" msgid="1792625797142648105">"Zamknij szybkie ustawienia."</string>
+    <string name="accessibility_quick_settings_alarm_set" msgid="1863000242431528676">"Alarm ustawiony."</string>
+    <string name="accessibility_quick_settings_user" msgid="1567445362870421770">"Jesteś zalogowany jako <xliff:g id="ID_1">%s</xliff:g>"</string>
+    <string name="accessibility_quick_settings_no_internet" msgid="31890692343084075">"Brak internetu."</string>
+    <string name="accessibility_quick_settings_open_details" msgid="4230931801728005194">"Otwórz szczegóły."</string>
+    <string name="accessibility_quick_settings_open_settings" msgid="7806613775728380737">"Otwórz ustawienia: <xliff:g id="ID_1">%s</xliff:g>."</string>
+    <string name="accessibility_quick_settings_edit" msgid="7839992848995240393">"Edytuj kolejność ustawień."</string>
     <string name="accessibility_quick_settings_page" msgid="5032979051755200721">"Strona <xliff:g id="ID_1">%1$d</xliff:g> z <xliff:g id="ID_2">%2$d</xliff:g>"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-pl/strings_tv.xml b/packages/SystemUI/res/values-pl/strings_tv.xml
index b9c083c..03a18bd 100644
--- a/packages/SystemUI/res/values-pl/strings_tv.xml
+++ b/packages/SystemUI/res/values-pl/strings_tv.xml
@@ -24,10 +24,8 @@
     <string name="pip_play" msgid="674145557658227044">"Odtwórz"</string>
     <string name="pip_pause" msgid="8412075640017218862">"Wstrzymaj"</string>
     <string name="pip_hold_home" msgid="340086535668778109">"Przytrzymaj "<b>"EKRAN GŁÓWNY"</b>", by sterować PIP"</string>
-    <!-- no translation found for pip_onboarding_title (7850436557670253991) -->
-    <skip />
-    <!-- no translation found for pip_onboarding_description (4028124563309465267) -->
-    <skip />
+    <string name="pip_onboarding_title" msgid="7850436557670253991">"Obraz w obrazie"</string>
+    <string name="pip_onboarding_description" msgid="4028124563309465267">"W tym trybie film pozostaje na ekranie do czasu, aż odtworzysz kolejny. Aby sterować trybem, przytrzymaj przycisk "<b>"EKRAN GŁÓWNY"</b>"."</string>
     <string name="pip_onboarding_button" msgid="3957426748484904611">"OK"</string>
     <string name="recents_tv_dismiss" msgid="3555093879593377731">"Zamknij"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-pt-rBR/strings.xml b/packages/SystemUI/res/values-pt-rBR/strings.xml
index 81c1cb5..a315cec 100644
--- a/packages/SystemUI/res/values-pt-rBR/strings.xml
+++ b/packages/SystemUI/res/values-pt-rBR/strings.xml
@@ -71,7 +71,7 @@
     <string name="screenshot_saving_title" msgid="8242282144535555697">"Salvando captura de tela..."</string>
     <string name="screenshot_saving_text" msgid="2419718443411738818">"A captura de tela está sendo salva."</string>
     <string name="screenshot_saved_title" msgid="6461865960961414961">"Captura de tela obtida."</string>
-    <string name="screenshot_saved_text" msgid="1152839647677558815">"Toque para visualizar a captura de tela."</string>
+    <string name="screenshot_saved_text" msgid="2685605830386712477">"Toque para ver sua captura de tela."</string>
     <string name="screenshot_failed_title" msgid="705781116746922771">"Não foi possível obter a captura de tela."</string>
     <string name="screenshot_failed_to_save_unknown_text" msgid="7887826345701753830">"Problema encontrado ao salvar captura de tela."</string>
     <string name="screenshot_failed_to_save_text" msgid="2592658083866306296">"Não é possível salvar a captura de tela, porque não há espaço suficiente."</string>
@@ -118,8 +118,7 @@
     <string name="accessibility_data_signal_full" msgid="2708384608124519369">"Sinal de dados cheio."</string>
     <string name="accessibility_wifi_name" msgid="7202151365171148501">"Conectado a <xliff:g id="WIFI">%s</xliff:g>."</string>
     <string name="accessibility_bluetooth_name" msgid="8441517146585531676">"Conectado a <xliff:g id="BLUETOOTH">%s</xliff:g>."</string>
-    <!-- no translation found for accessibility_cast_name (4026393061247081201) -->
-    <skip />
+    <string name="accessibility_cast_name" msgid="4026393061247081201">"Conectado a <xliff:g id="CAST">%s</xliff:g>."</string>
     <string name="accessibility_no_wimax" msgid="4329180129727630368">"Sem WiMAX."</string>
     <string name="accessibility_wimax_one_bar" msgid="4170994299011863648">"Uma barra do WiMAX."</string>
     <string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"Duas barras do WiMAX."</string>
@@ -150,17 +149,14 @@
     <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string>
     <string name="accessibility_data_connection_wifi" msgid="2324496756590645221">"Wi-Fi"</string>
     <string name="accessibility_no_sim" msgid="8274017118472455155">"Sem SIM."</string>
-    <!-- no translation found for accessibility_cell_data (7080312242791850520) -->
-    <skip />
-    <!-- no translation found for accessibility_cell_data_on (4310018593519761767) -->
-    <skip />
+    <string name="accessibility_cell_data" msgid="7080312242791850520">"Dados da rede celular"</string>
+    <string name="accessibility_cell_data_on" msgid="4310018593519761767">"Dados da rede celular ativados"</string>
     <string name="accessibility_cell_data_off" msgid="8000803571751407635">"Dados da rede celular desativados"</string>
     <string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"Tethering Bluetooth."</string>
     <string name="accessibility_airplane_mode" msgid="834748999790763092">"Modo avião."</string>
     <string name="accessibility_no_sims" msgid="3957997018324995781">"Sem cartão SIM."</string>
     <string name="accessibility_carrier_network_change_mode" msgid="4017301580441304305">"Alteração de rede de operadora."</string>
-    <!-- no translation found for accessibility_battery_details (7645516654955025422) -->
-    <skip />
+    <string name="accessibility_battery_details" msgid="7645516654955025422">"Abrir detalhes da bateria"</string>
     <string name="accessibility_battery_level" msgid="7451474187113371965">"Bateria em <xliff:g id="NUMBER">%d</xliff:g> por cento."</string>
     <!-- String.format failed for translation -->
     <!-- no translation found for accessibility_battery_level_charging (1147587904439319646) -->
@@ -202,13 +198,11 @@
     <string name="accessibility_quick_settings_dnd_priority_on" msgid="1448402297221249355">"\"Não perturbe\" ativado, somente prioridade."</string>
     <string name="accessibility_quick_settings_dnd_none_on" msgid="6882582132662613537">"\"Não perturbe\" ativado, silêncio total."</string>
     <string name="accessibility_quick_settings_dnd_alarms_on" msgid="9152834845587554157">"\"Não perturbe\" ativado, somente alarmes."</string>
-    <!-- no translation found for accessibility_quick_settings_dnd (6607873236717185815) -->
-    <skip />
+    <string name="accessibility_quick_settings_dnd" msgid="6607873236717185815">"Não perturbe"</string>
     <string name="accessibility_quick_settings_dnd_off" msgid="2371832603753738581">"\"Não perturbe\" desativado."</string>
     <string name="accessibility_quick_settings_dnd_changed_off" msgid="898107593453022935">"\"Não perturbe\" desativado."</string>
     <string name="accessibility_quick_settings_dnd_changed_on" msgid="4483780856613561039">"\"Não perturbe\" ativado."</string>
-    <!-- no translation found for accessibility_quick_settings_bluetooth (6341675755803320038) -->
-    <skip />
+    <string name="accessibility_quick_settings_bluetooth" msgid="6341675755803320038">"Bluetooth."</string>
     <string name="accessibility_quick_settings_bluetooth_off" msgid="2133631372372064339">"Bluetooth desativado."</string>
     <string name="accessibility_quick_settings_bluetooth_on" msgid="7681999166216621838">"Bluetooth ativado."</string>
     <string name="accessibility_quick_settings_bluetooth_connecting" msgid="6953242966685343855">"Conectando Bluetooth."</string>
@@ -274,10 +268,8 @@
     <string name="quick_settings_bluetooth_detail_empty_text" msgid="4910015762433302860">"Não há dispositivos pareados disponíveis"</string>
     <string name="quick_settings_brightness_label" msgid="6968372297018755815">"Brilho"</string>
     <string name="quick_settings_rotation_unlocked_label" msgid="7305323031808150099">"Rotação automática"</string>
-    <!-- no translation found for accessibility_quick_settings_rotation (4231661040698488779) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_rotation_value (1428962304214992318) -->
-    <skip />
+    <string name="accessibility_quick_settings_rotation" msgid="4231661040698488779">"Girar tela automaticamente"</string>
+    <string name="accessibility_quick_settings_rotation_value" msgid="1428962304214992318">"Definir como <xliff:g id="ID_1">%s</xliff:g>"</string>
     <string name="quick_settings_rotation_locked_label" msgid="6359205706154282377">"Rotação bloqueada"</string>
     <string name="quick_settings_rotation_locked_portrait_label" msgid="5102691921442135053">"Retrato"</string>
     <string name="quick_settings_rotation_locked_landscape_label" msgid="8553157770061178719">"Paisagem"</string>
@@ -296,8 +288,7 @@
     <string name="quick_settings_wifi_not_connected" msgid="7171904845345573431">"Não conectado"</string>
     <string name="quick_settings_wifi_no_network" msgid="2221993077220856376">"Sem rede"</string>
     <string name="quick_settings_wifi_off_label" msgid="7558778100843885864">"Wi-Fi desligado"</string>
-    <!-- no translation found for quick_settings_wifi_on_label (7607810331387031235) -->
-    <skip />
+    <string name="quick_settings_wifi_on_label" msgid="7607810331387031235">"Wi-Fi ativado"</string>
     <string name="quick_settings_wifi_detail_empty_text" msgid="269990350383909226">"Nenhuma rede Wi-Fi disponível"</string>
     <string name="quick_settings_cast_title" msgid="7709016546426454729">"Transmitir"</string>
     <string name="quick_settings_casting" msgid="6601710681033353316">"Transmitindo"</string>
@@ -351,7 +342,7 @@
     <string name="zen_silence_introduction" msgid="3137882381093271568">"Isso bloqueia TODOS os sons e vibrações, incluindo alarmes, músicas, vídeos e jogos."</string>
     <string name="keyguard_more_overflow_text" msgid="9195222469041601365">"+<xliff:g id="NUMBER_OF_NOTIFICATIONS">%d</xliff:g>"</string>
     <string name="speed_bump_explanation" msgid="1288875699658819755">"Notificações menos urgentes abaixo"</string>
-    <string name="notification_tap_again" msgid="8524949573675922138">"Toque novamente para abrir"</string>
+    <string name="notification_tap_again" msgid="7590196980943943842">"Toque novamente para abrir"</string>
     <string name="keyguard_unlock" msgid="8043466894212841998">"Deslize para cima para desbloquear"</string>
     <string name="phone_hint" msgid="4872890986869209950">"Deslize a partir do ícone do telefone"</string>
     <string name="voice_hint" msgid="8939888732119726665">"Deslize a partir do ícone de assistência de voz"</string>
@@ -429,7 +420,7 @@
     <string name="accessibility_volume_expand" msgid="5946812790999244205">"Expandir"</string>
     <string name="accessibility_volume_collapse" msgid="3609549593031810875">"Recolher"</string>
     <string name="screen_pinning_title" msgid="3273740381976175811">"A tela está fixada"</string>
-    <string name="screen_pinning_description" msgid="3577937698406151604">"Ela é mantida à vista até que seja liberada. Toque em \"Voltar\" e mantenha essa opção pressionada para liberar."</string>
+    <string name="screen_pinning_description" msgid="7238941806855968768">"Ela é mantida à vista até que seja liberada. Toque em \"Voltar\" e mantenha essa opção pressionada para liberar."</string>
     <string name="screen_pinning_positive" msgid="3783985798366751226">"Entendi"</string>
     <string name="screen_pinning_negative" msgid="3741602308343880268">"Não, obrigado"</string>
     <string name="quick_settings_reset_confirmation_title" msgid="748792586749897883">"Esconder <xliff:g id="TILE_LABEL">%1$s</xliff:g>?"</string>
@@ -439,15 +430,13 @@
     <string name="volumeui_prompt_allow" msgid="7954396902482228786">"Permitir"</string>
     <string name="volumeui_prompt_deny" msgid="5720663643411696731">"Negar"</string>
     <string name="volumeui_notification_title" msgid="4906770126345910955">"<xliff:g id="APP_NAME">%1$s</xliff:g> é a caixa de diálogo referente ao volume"</string>
-    <string name="volumeui_notification_text" msgid="1826889705095768656">"Toque para restaurar o original."</string>
+    <string name="volumeui_notification_text" msgid="8819536904234337445">"Toque para restaurar o original."</string>
     <string name="managed_profile_foreground_toast" msgid="5421487114739245972">"Você está usando seu perfil de trabalho"</string>
     <string name="volume_stream_content_description_unmute" msgid="4436631538779230857">"%1$s. Toque para ativar o som."</string>
     <string name="volume_stream_content_description_vibrate" msgid="1187944970457807498">"%1$s. Toque para configurar para vibrar. É possível que os serviços de acessibilidade sejam silenciados."</string>
     <string name="volume_stream_content_description_mute" msgid="3625049841390467354">"%1$s. Toque para silenciar. É possível que os serviços de acessibilidade sejam silenciados."</string>
-    <!-- no translation found for volume_dialog_accessibility_shown_message (1834631467074259998) -->
-    <skip />
-    <!-- no translation found for volume_dialog_accessibility_dismissed_message (51543526013711399) -->
-    <skip />
+    <string name="volume_dialog_accessibility_shown_message" msgid="1834631467074259998">"%s controles de volume exibidos. Deslize para cima para dispensar."</string>
+    <string name="volume_dialog_accessibility_dismissed_message" msgid="51543526013711399">"Controles de volume ocultos"</string>
     <string name="system_ui_tuner" msgid="708224127392452018">"Sintonizador System UI"</string>
     <string name="show_battery_percentage" msgid="5444136600512968798">"Mostrar porcentagem de bateria incorporada"</string>
     <string name="show_battery_percentage_summary" msgid="3215025775576786037">"Mostrar porcentagem de nível de bateria dentro do ícone da barra de status quando não estiver carregando"</string>
@@ -643,27 +632,17 @@
     <string name="accessibility_qs_edit_tile_removed" msgid="8584304916627913440">"<xliff:g id="TILE_NAME">%1$s</xliff:g> é removido"</string>
     <string name="accessibility_qs_edit_tile_moved" msgid="4343693412689365038">"<xliff:g id="TILE_NAME">%1$s</xliff:g> movido para a posição <xliff:g id="POSITION">%2$d</xliff:g>"</string>
     <string name="accessibility_desc_quick_settings_edit" msgid="8073587401747016103">"Editor de configurações rápidas."</string>
-    <!-- no translation found for accessibility_desc_notification_icon (8352414185263916335) -->
-    <skip />
+    <string name="accessibility_desc_notification_icon" msgid="8352414185263916335">"Notificação do <xliff:g id="ID_1">%1$s</xliff:g>: <xliff:g id="ID_2">%2$s</xliff:g>"</string>
     <string name="dock_forced_resizable" msgid="5914261505436217520">"É possível que o app não funcione com o recurso de divisão de tela."</string>
     <string name="dock_non_resizeble_failed_to_dock_text" msgid="3871617304250207291">"O app não é compatível com a divisão de tela."</string>
-    <!-- no translation found for accessibility_quick_settings_settings (6132460890024942157) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_expand (2375165227880477530) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_collapse (1792625797142648105) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_alarm_set (1863000242431528676) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_user (1567445362870421770) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_no_internet (31890692343084075) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_open_details (4230931801728005194) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_open_settings (7806613775728380737) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_edit (7839992848995240393) -->
-    <skip />
+    <string name="accessibility_quick_settings_settings" msgid="6132460890024942157">"Abrir configurações."</string>
+    <string name="accessibility_quick_settings_expand" msgid="2375165227880477530">"Abrir as configurações rápidas."</string>
+    <string name="accessibility_quick_settings_collapse" msgid="1792625797142648105">"Fechar as configurações rápidas."</string>
+    <string name="accessibility_quick_settings_alarm_set" msgid="1863000242431528676">"Alarme definido."</string>
+    <string name="accessibility_quick_settings_user" msgid="1567445362870421770">"Login efetuado como <xliff:g id="ID_1">%s</xliff:g>"</string>
+    <string name="accessibility_quick_settings_no_internet" msgid="31890692343084075">"Sem Internet."</string>
+    <string name="accessibility_quick_settings_open_details" msgid="4230931801728005194">"Abrir detalhes."</string>
+    <string name="accessibility_quick_settings_open_settings" msgid="7806613775728380737">"Abrir configurações de <xliff:g id="ID_1">%s</xliff:g>."</string>
+    <string name="accessibility_quick_settings_edit" msgid="7839992848995240393">"Editar ordem das configurações."</string>
     <string name="accessibility_quick_settings_page" msgid="5032979051755200721">"Página <xliff:g id="ID_1">%1$d</xliff:g> de <xliff:g id="ID_2">%2$d</xliff:g>"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-pt-rBR/strings_tv.xml b/packages/SystemUI/res/values-pt-rBR/strings_tv.xml
index 705c01c..1857fee 100644
--- a/packages/SystemUI/res/values-pt-rBR/strings_tv.xml
+++ b/packages/SystemUI/res/values-pt-rBR/strings_tv.xml
@@ -24,10 +24,8 @@
     <string name="pip_play" msgid="674145557658227044">"Reproduzir"</string>
     <string name="pip_pause" msgid="8412075640017218862">"Pausar"</string>
     <string name="pip_hold_home" msgid="340086535668778109">"Mantenha "<b>"INÍCIO"</b>" pressionado para controlar o PIP"</string>
-    <!-- no translation found for pip_onboarding_title (7850436557670253991) -->
-    <skip />
-    <!-- no translation found for pip_onboarding_description (4028124563309465267) -->
-    <skip />
+    <string name="pip_onboarding_title" msgid="7850436557670253991">"Picture-in-picture"</string>
+    <string name="pip_onboarding_description" msgid="4028124563309465267">"Esse recurso faz com que seu vídeo continue sendo exibido até que você reproduza outro. Mantenha "<b>"INÍCIO"</b>" pressionado para controlá-lo."</string>
     <string name="pip_onboarding_button" msgid="3957426748484904611">"Entendi"</string>
     <string name="recents_tv_dismiss" msgid="3555093879593377731">"Dispensar"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-pt-rPT/strings.xml b/packages/SystemUI/res/values-pt-rPT/strings.xml
index bf977f8..07604b1 100644
--- a/packages/SystemUI/res/values-pt-rPT/strings.xml
+++ b/packages/SystemUI/res/values-pt-rPT/strings.xml
@@ -71,7 +71,7 @@
     <string name="screenshot_saving_title" msgid="8242282144535555697">"A guardar captura de ecrã..."</string>
     <string name="screenshot_saving_text" msgid="2419718443411738818">"A guardar captura de ecrã."</string>
     <string name="screenshot_saved_title" msgid="6461865960961414961">"Captura de ecrã efetuada"</string>
-    <string name="screenshot_saved_text" msgid="1152839647677558815">"Toque para ver a captura de ecrã"</string>
+    <string name="screenshot_saved_text" msgid="2685605830386712477">"Toque para ver a sua captura de ecrã."</string>
     <string name="screenshot_failed_title" msgid="705781116746922771">"Não foi possível obter captura de ecrã."</string>
     <string name="screenshot_failed_to_save_unknown_text" msgid="7887826345701753830">"Problema encontrado ao guardar a captura de ecrã."</string>
     <string name="screenshot_failed_to_save_text" msgid="2592658083866306296">"Não é possível guardar a captura de ecrã devido a espaço de armazenamento limitado."</string>
@@ -118,8 +118,7 @@
     <string name="accessibility_data_signal_full" msgid="2708384608124519369">"Sinal de dados completo."</string>
     <string name="accessibility_wifi_name" msgid="7202151365171148501">"Ligado a <xliff:g id="WIFI">%s</xliff:g>."</string>
     <string name="accessibility_bluetooth_name" msgid="8441517146585531676">"Ligado a <xliff:g id="BLUETOOTH">%s</xliff:g>."</string>
-    <!-- no translation found for accessibility_cast_name (4026393061247081201) -->
-    <skip />
+    <string name="accessibility_cast_name" msgid="4026393061247081201">"Ligado a <xliff:g id="CAST">%s</xliff:g>."</string>
     <string name="accessibility_no_wimax" msgid="4329180129727630368">"Sem WiMAX."</string>
     <string name="accessibility_wimax_one_bar" msgid="4170994299011863648">"Uma barra de WiMAX."</string>
     <string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"Duas barras de WiMAX."</string>
@@ -150,17 +149,14 @@
     <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string>
     <string name="accessibility_data_connection_wifi" msgid="2324496756590645221">"Wi-Fi"</string>
     <string name="accessibility_no_sim" msgid="8274017118472455155">"Sem SIM."</string>
-    <!-- no translation found for accessibility_cell_data (7080312242791850520) -->
-    <skip />
-    <!-- no translation found for accessibility_cell_data_on (4310018593519761767) -->
-    <skip />
+    <string name="accessibility_cell_data" msgid="7080312242791850520">"Dados móveis"</string>
+    <string name="accessibility_cell_data_on" msgid="4310018593519761767">"Dados móveis ativados"</string>
     <string name="accessibility_cell_data_off" msgid="8000803571751407635">"Dados móveis desativados"</string>
     <string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"Ligação Bluetooth via telemóvel."</string>
     <string name="accessibility_airplane_mode" msgid="834748999790763092">"Modo de avião"</string>
     <string name="accessibility_no_sims" msgid="3957997018324995781">"Nenhum cartão SIM."</string>
     <string name="accessibility_carrier_network_change_mode" msgid="4017301580441304305">"Rede do operador em mudança."</string>
-    <!-- no translation found for accessibility_battery_details (7645516654955025422) -->
-    <skip />
+    <string name="accessibility_battery_details" msgid="7645516654955025422">"Abrir detalhes da bateria"</string>
     <string name="accessibility_battery_level" msgid="7451474187113371965">"Bateria a <xliff:g id="NUMBER">%d</xliff:g> por cento."</string>
     <string name="accessibility_battery_level_charging" msgid="1147587904439319646">"A bateria está a carregar, <xliff:g id="BATTERY_PERCENTAGE">%d</xliff:g> por cento."</string>
     <string name="accessibility_settings_button" msgid="799583911231893380">"Definições do sistema"</string>
@@ -200,13 +196,11 @@
     <string name="accessibility_quick_settings_dnd_priority_on" msgid="1448402297221249355">"Não incomodar ligado, apenas prioridade."</string>
     <string name="accessibility_quick_settings_dnd_none_on" msgid="6882582132662613537">"Não incomodar ativado, silêncio total."</string>
     <string name="accessibility_quick_settings_dnd_alarms_on" msgid="9152834845587554157">"Não incomodar ligado, apenas alarmes."</string>
-    <!-- no translation found for accessibility_quick_settings_dnd (6607873236717185815) -->
-    <skip />
+    <string name="accessibility_quick_settings_dnd" msgid="6607873236717185815">"Não incomodar."</string>
     <string name="accessibility_quick_settings_dnd_off" msgid="2371832603753738581">"Não incomodar desligado."</string>
     <string name="accessibility_quick_settings_dnd_changed_off" msgid="898107593453022935">"Não incomodar desligado."</string>
     <string name="accessibility_quick_settings_dnd_changed_on" msgid="4483780856613561039">"Não incomodar ligado."</string>
-    <!-- no translation found for accessibility_quick_settings_bluetooth (6341675755803320038) -->
-    <skip />
+    <string name="accessibility_quick_settings_bluetooth" msgid="6341675755803320038">"Bluetooth."</string>
     <string name="accessibility_quick_settings_bluetooth_off" msgid="2133631372372064339">"Bluetooth desligado."</string>
     <string name="accessibility_quick_settings_bluetooth_on" msgid="7681999166216621838">"Bluetooth ligado."</string>
     <string name="accessibility_quick_settings_bluetooth_connecting" msgid="6953242966685343855">"A ligar o Bluetooth."</string>
@@ -272,10 +266,8 @@
     <string name="quick_settings_bluetooth_detail_empty_text" msgid="4910015762433302860">"Sem dispositivos sincronizados disponíveis"</string>
     <string name="quick_settings_brightness_label" msgid="6968372297018755815">"Brilho"</string>
     <string name="quick_settings_rotation_unlocked_label" msgid="7305323031808150099">"Rotação automática"</string>
-    <!-- no translation found for accessibility_quick_settings_rotation (4231661040698488779) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_rotation_value (1428962304214992318) -->
-    <skip />
+    <string name="accessibility_quick_settings_rotation" msgid="4231661040698488779">"Rodar o ecrã automaticamente"</string>
+    <string name="accessibility_quick_settings_rotation_value" msgid="1428962304214992318">"Definir como <xliff:g id="ID_1">%s</xliff:g>"</string>
     <string name="quick_settings_rotation_locked_label" msgid="6359205706154282377">"Rotação bloqueada"</string>
     <string name="quick_settings_rotation_locked_portrait_label" msgid="5102691921442135053">"Retrato"</string>
     <string name="quick_settings_rotation_locked_landscape_label" msgid="8553157770061178719">"Paisagem"</string>
@@ -294,8 +286,7 @@
     <string name="quick_settings_wifi_not_connected" msgid="7171904845345573431">"Não Ligado"</string>
     <string name="quick_settings_wifi_no_network" msgid="2221993077220856376">"Sem Rede"</string>
     <string name="quick_settings_wifi_off_label" msgid="7558778100843885864">"Wi-Fi Desligado"</string>
-    <!-- no translation found for quick_settings_wifi_on_label (7607810331387031235) -->
-    <skip />
+    <string name="quick_settings_wifi_on_label" msgid="7607810331387031235">"Wi-Fi ligado"</string>
     <string name="quick_settings_wifi_detail_empty_text" msgid="269990350383909226">"Não estão disponíveis redes Wi-Fi"</string>
     <string name="quick_settings_cast_title" msgid="7709016546426454729">"Transmitir"</string>
     <string name="quick_settings_casting" msgid="6601710681033353316">"Transmissão"</string>
@@ -349,7 +340,7 @@
     <string name="zen_silence_introduction" msgid="3137882381093271568">"Esta ação bloqueia TODOS os sons e as vibrações, incluindo de alarmes, de músicas, de vídeos e de jogos."</string>
     <string name="keyguard_more_overflow_text" msgid="9195222469041601365">"+<xliff:g id="NUMBER_OF_NOTIFICATIONS">%d</xliff:g>"</string>
     <string name="speed_bump_explanation" msgid="1288875699658819755">"Notificações menos urgentes abaixo"</string>
-    <string name="notification_tap_again" msgid="8524949573675922138">"Tocar novamente para abrir"</string>
+    <string name="notification_tap_again" msgid="7590196980943943842">"Toque novamente para abrir"</string>
     <string name="keyguard_unlock" msgid="8043466894212841998">"Deslizar rapidamente com o dedo para cima para desbloquear"</string>
     <string name="phone_hint" msgid="4872890986869209950">"Deslize rapid. a partir do ícone para aceder ao telemóvel"</string>
     <string name="voice_hint" msgid="8939888732119726665">"Deslize rapid. a partir do ícone para aceder ao assist. voz"</string>
@@ -427,7 +418,7 @@
     <string name="accessibility_volume_expand" msgid="5946812790999244205">"Expandir"</string>
     <string name="accessibility_volume_collapse" msgid="3609549593031810875">"Reduzir"</string>
     <string name="screen_pinning_title" msgid="3273740381976175811">"O ecrã está fixado"</string>
-    <string name="screen_pinning_description" msgid="3577937698406151604">"Será mantido na vista até soltar. Toque sem soltar em Anterior para soltar."</string>
+    <string name="screen_pinning_description" msgid="7238941806855968768">"Esta opção mantém o item visível até o soltar. Toque sem soltar em Anterior para soltar."</string>
     <string name="screen_pinning_positive" msgid="3783985798366751226">"Compreendi"</string>
     <string name="screen_pinning_negative" msgid="3741602308343880268">"Não, obrigado"</string>
     <string name="quick_settings_reset_confirmation_title" msgid="748792586749897883">"Pretende ocultar <xliff:g id="TILE_LABEL">%1$s</xliff:g>?"</string>
@@ -437,15 +428,13 @@
     <string name="volumeui_prompt_allow" msgid="7954396902482228786">"Permitir"</string>
     <string name="volumeui_prompt_deny" msgid="5720663643411696731">"Recusar"</string>
     <string name="volumeui_notification_title" msgid="4906770126345910955">"<xliff:g id="APP_NAME">%1$s</xliff:g> é a caixa de diálogo do volume"</string>
-    <string name="volumeui_notification_text" msgid="1826889705095768656">"Toque para restaurar o original."</string>
+    <string name="volumeui_notification_text" msgid="8819536904234337445">"Toque para restaurar o original."</string>
     <string name="managed_profile_foreground_toast" msgid="5421487114739245972">"Está a utilizar o seu perfil de trabalho"</string>
     <string name="volume_stream_content_description_unmute" msgid="4436631538779230857">"%1$s. Toque para reativar o som."</string>
     <string name="volume_stream_content_description_vibrate" msgid="1187944970457807498">"%1$s. Toque para ativar a vibração. Os serviços de acessibilidade podem ser silenciados."</string>
     <string name="volume_stream_content_description_mute" msgid="3625049841390467354">"%1$s. Toque para desativar o som. Os serviços de acessibilidade podem ser silenciados."</string>
-    <!-- no translation found for volume_dialog_accessibility_shown_message (1834631467074259998) -->
-    <skip />
-    <!-- no translation found for volume_dialog_accessibility_dismissed_message (51543526013711399) -->
-    <skip />
+    <string name="volume_dialog_accessibility_shown_message" msgid="1834631467074259998">"Controlos de volume %s apresentados. Deslize rapidamente para cima para ignorar."</string>
+    <string name="volume_dialog_accessibility_dismissed_message" msgid="51543526013711399">"Controles de volume ocultados"</string>
     <string name="system_ui_tuner" msgid="708224127392452018">"Sintonizador da interface do sistema"</string>
     <string name="show_battery_percentage" msgid="5444136600512968798">"Mostrar percentagem da bateria incorporada"</string>
     <string name="show_battery_percentage_summary" msgid="3215025775576786037">"Mostrar a percentagem do nível da bateria no ícone da barra de estado quando não estiver a carregar"</string>
@@ -641,27 +630,17 @@
     <string name="accessibility_qs_edit_tile_removed" msgid="8584304916627913440">"<xliff:g id="TILE_NAME">%1$s</xliff:g> removido"</string>
     <string name="accessibility_qs_edit_tile_moved" msgid="4343693412689365038">"<xliff:g id="TILE_NAME">%1$s</xliff:g> movido para a posição <xliff:g id="POSITION">%2$d</xliff:g>"</string>
     <string name="accessibility_desc_quick_settings_edit" msgid="8073587401747016103">"Editor de definições rápidas."</string>
-    <!-- no translation found for accessibility_desc_notification_icon (8352414185263916335) -->
-    <skip />
+    <string name="accessibility_desc_notification_icon" msgid="8352414185263916335">"Notificação do <xliff:g id="ID_1">%1$s</xliff:g>: <xliff:g id="ID_2">%2$s</xliff:g>"</string>
     <string name="dock_forced_resizable" msgid="5914261505436217520">"A aplicação pode não funcionar com o ecrã dividido."</string>
     <string name="dock_non_resizeble_failed_to_dock_text" msgid="3871617304250207291">"A aplicação não é compatível com o ecrã dividido."</string>
-    <!-- no translation found for accessibility_quick_settings_settings (6132460890024942157) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_expand (2375165227880477530) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_collapse (1792625797142648105) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_alarm_set (1863000242431528676) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_user (1567445362870421770) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_no_internet (31890692343084075) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_open_details (4230931801728005194) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_open_settings (7806613775728380737) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_edit (7839992848995240393) -->
-    <skip />
+    <string name="accessibility_quick_settings_settings" msgid="6132460890024942157">"Abrir as definições."</string>
+    <string name="accessibility_quick_settings_expand" msgid="2375165227880477530">"Abrir as definições rápidas."</string>
+    <string name="accessibility_quick_settings_collapse" msgid="1792625797142648105">"Fechar as definições rápidas."</string>
+    <string name="accessibility_quick_settings_alarm_set" msgid="1863000242431528676">"Alarme definido."</string>
+    <string name="accessibility_quick_settings_user" msgid="1567445362870421770">"Sessão iniciada como <xliff:g id="ID_1">%s</xliff:g>"</string>
+    <string name="accessibility_quick_settings_no_internet" msgid="31890692343084075">"Sem Internet."</string>
+    <string name="accessibility_quick_settings_open_details" msgid="4230931801728005194">"Abrir os detalhes."</string>
+    <string name="accessibility_quick_settings_open_settings" msgid="7806613775728380737">"Abrir as definições de <xliff:g id="ID_1">%s</xliff:g>."</string>
+    <string name="accessibility_quick_settings_edit" msgid="7839992848995240393">"Editar a ordem das definições."</string>
     <string name="accessibility_quick_settings_page" msgid="5032979051755200721">"Página <xliff:g id="ID_1">%1$d</xliff:g> de <xliff:g id="ID_2">%2$d</xliff:g>"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-pt-rPT/strings_tv.xml b/packages/SystemUI/res/values-pt-rPT/strings_tv.xml
index 8026613..915b227 100644
--- a/packages/SystemUI/res/values-pt-rPT/strings_tv.xml
+++ b/packages/SystemUI/res/values-pt-rPT/strings_tv.xml
@@ -24,10 +24,8 @@
     <string name="pip_play" msgid="674145557658227044">"Reproduzir"</string>
     <string name="pip_pause" msgid="8412075640017218862">"Interromper"</string>
     <string name="pip_hold_home" msgid="340086535668778109">"Prima sem soltar o botão "<b>"HOME"</b>" para controlar o PIP"</string>
-    <!-- no translation found for pip_onboarding_title (7850436557670253991) -->
-    <skip />
-    <!-- no translation found for pip_onboarding_description (4028124563309465267) -->
-    <skip />
+    <string name="pip_onboarding_title" msgid="7850436557670253991">"Imagem na imagem"</string>
+    <string name="pip_onboarding_description" msgid="4028124563309465267">"Esta opção mantém o vídeo visível até reproduzir outro vídeo. Prima sem soltar "<b>"HOME"</b>" para o controlar."</string>
     <string name="pip_onboarding_button" msgid="3957426748484904611">"Compreendi"</string>
     <string name="recents_tv_dismiss" msgid="3555093879593377731">"Ignorar"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-pt/strings.xml b/packages/SystemUI/res/values-pt/strings.xml
index 81c1cb5..a315cec 100644
--- a/packages/SystemUI/res/values-pt/strings.xml
+++ b/packages/SystemUI/res/values-pt/strings.xml
@@ -71,7 +71,7 @@
     <string name="screenshot_saving_title" msgid="8242282144535555697">"Salvando captura de tela..."</string>
     <string name="screenshot_saving_text" msgid="2419718443411738818">"A captura de tela está sendo salva."</string>
     <string name="screenshot_saved_title" msgid="6461865960961414961">"Captura de tela obtida."</string>
-    <string name="screenshot_saved_text" msgid="1152839647677558815">"Toque para visualizar a captura de tela."</string>
+    <string name="screenshot_saved_text" msgid="2685605830386712477">"Toque para ver sua captura de tela."</string>
     <string name="screenshot_failed_title" msgid="705781116746922771">"Não foi possível obter a captura de tela."</string>
     <string name="screenshot_failed_to_save_unknown_text" msgid="7887826345701753830">"Problema encontrado ao salvar captura de tela."</string>
     <string name="screenshot_failed_to_save_text" msgid="2592658083866306296">"Não é possível salvar a captura de tela, porque não há espaço suficiente."</string>
@@ -118,8 +118,7 @@
     <string name="accessibility_data_signal_full" msgid="2708384608124519369">"Sinal de dados cheio."</string>
     <string name="accessibility_wifi_name" msgid="7202151365171148501">"Conectado a <xliff:g id="WIFI">%s</xliff:g>."</string>
     <string name="accessibility_bluetooth_name" msgid="8441517146585531676">"Conectado a <xliff:g id="BLUETOOTH">%s</xliff:g>."</string>
-    <!-- no translation found for accessibility_cast_name (4026393061247081201) -->
-    <skip />
+    <string name="accessibility_cast_name" msgid="4026393061247081201">"Conectado a <xliff:g id="CAST">%s</xliff:g>."</string>
     <string name="accessibility_no_wimax" msgid="4329180129727630368">"Sem WiMAX."</string>
     <string name="accessibility_wimax_one_bar" msgid="4170994299011863648">"Uma barra do WiMAX."</string>
     <string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"Duas barras do WiMAX."</string>
@@ -150,17 +149,14 @@
     <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string>
     <string name="accessibility_data_connection_wifi" msgid="2324496756590645221">"Wi-Fi"</string>
     <string name="accessibility_no_sim" msgid="8274017118472455155">"Sem SIM."</string>
-    <!-- no translation found for accessibility_cell_data (7080312242791850520) -->
-    <skip />
-    <!-- no translation found for accessibility_cell_data_on (4310018593519761767) -->
-    <skip />
+    <string name="accessibility_cell_data" msgid="7080312242791850520">"Dados da rede celular"</string>
+    <string name="accessibility_cell_data_on" msgid="4310018593519761767">"Dados da rede celular ativados"</string>
     <string name="accessibility_cell_data_off" msgid="8000803571751407635">"Dados da rede celular desativados"</string>
     <string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"Tethering Bluetooth."</string>
     <string name="accessibility_airplane_mode" msgid="834748999790763092">"Modo avião."</string>
     <string name="accessibility_no_sims" msgid="3957997018324995781">"Sem cartão SIM."</string>
     <string name="accessibility_carrier_network_change_mode" msgid="4017301580441304305">"Alteração de rede de operadora."</string>
-    <!-- no translation found for accessibility_battery_details (7645516654955025422) -->
-    <skip />
+    <string name="accessibility_battery_details" msgid="7645516654955025422">"Abrir detalhes da bateria"</string>
     <string name="accessibility_battery_level" msgid="7451474187113371965">"Bateria em <xliff:g id="NUMBER">%d</xliff:g> por cento."</string>
     <!-- String.format failed for translation -->
     <!-- no translation found for accessibility_battery_level_charging (1147587904439319646) -->
@@ -202,13 +198,11 @@
     <string name="accessibility_quick_settings_dnd_priority_on" msgid="1448402297221249355">"\"Não perturbe\" ativado, somente prioridade."</string>
     <string name="accessibility_quick_settings_dnd_none_on" msgid="6882582132662613537">"\"Não perturbe\" ativado, silêncio total."</string>
     <string name="accessibility_quick_settings_dnd_alarms_on" msgid="9152834845587554157">"\"Não perturbe\" ativado, somente alarmes."</string>
-    <!-- no translation found for accessibility_quick_settings_dnd (6607873236717185815) -->
-    <skip />
+    <string name="accessibility_quick_settings_dnd" msgid="6607873236717185815">"Não perturbe"</string>
     <string name="accessibility_quick_settings_dnd_off" msgid="2371832603753738581">"\"Não perturbe\" desativado."</string>
     <string name="accessibility_quick_settings_dnd_changed_off" msgid="898107593453022935">"\"Não perturbe\" desativado."</string>
     <string name="accessibility_quick_settings_dnd_changed_on" msgid="4483780856613561039">"\"Não perturbe\" ativado."</string>
-    <!-- no translation found for accessibility_quick_settings_bluetooth (6341675755803320038) -->
-    <skip />
+    <string name="accessibility_quick_settings_bluetooth" msgid="6341675755803320038">"Bluetooth."</string>
     <string name="accessibility_quick_settings_bluetooth_off" msgid="2133631372372064339">"Bluetooth desativado."</string>
     <string name="accessibility_quick_settings_bluetooth_on" msgid="7681999166216621838">"Bluetooth ativado."</string>
     <string name="accessibility_quick_settings_bluetooth_connecting" msgid="6953242966685343855">"Conectando Bluetooth."</string>
@@ -274,10 +268,8 @@
     <string name="quick_settings_bluetooth_detail_empty_text" msgid="4910015762433302860">"Não há dispositivos pareados disponíveis"</string>
     <string name="quick_settings_brightness_label" msgid="6968372297018755815">"Brilho"</string>
     <string name="quick_settings_rotation_unlocked_label" msgid="7305323031808150099">"Rotação automática"</string>
-    <!-- no translation found for accessibility_quick_settings_rotation (4231661040698488779) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_rotation_value (1428962304214992318) -->
-    <skip />
+    <string name="accessibility_quick_settings_rotation" msgid="4231661040698488779">"Girar tela automaticamente"</string>
+    <string name="accessibility_quick_settings_rotation_value" msgid="1428962304214992318">"Definir como <xliff:g id="ID_1">%s</xliff:g>"</string>
     <string name="quick_settings_rotation_locked_label" msgid="6359205706154282377">"Rotação bloqueada"</string>
     <string name="quick_settings_rotation_locked_portrait_label" msgid="5102691921442135053">"Retrato"</string>
     <string name="quick_settings_rotation_locked_landscape_label" msgid="8553157770061178719">"Paisagem"</string>
@@ -296,8 +288,7 @@
     <string name="quick_settings_wifi_not_connected" msgid="7171904845345573431">"Não conectado"</string>
     <string name="quick_settings_wifi_no_network" msgid="2221993077220856376">"Sem rede"</string>
     <string name="quick_settings_wifi_off_label" msgid="7558778100843885864">"Wi-Fi desligado"</string>
-    <!-- no translation found for quick_settings_wifi_on_label (7607810331387031235) -->
-    <skip />
+    <string name="quick_settings_wifi_on_label" msgid="7607810331387031235">"Wi-Fi ativado"</string>
     <string name="quick_settings_wifi_detail_empty_text" msgid="269990350383909226">"Nenhuma rede Wi-Fi disponível"</string>
     <string name="quick_settings_cast_title" msgid="7709016546426454729">"Transmitir"</string>
     <string name="quick_settings_casting" msgid="6601710681033353316">"Transmitindo"</string>
@@ -351,7 +342,7 @@
     <string name="zen_silence_introduction" msgid="3137882381093271568">"Isso bloqueia TODOS os sons e vibrações, incluindo alarmes, músicas, vídeos e jogos."</string>
     <string name="keyguard_more_overflow_text" msgid="9195222469041601365">"+<xliff:g id="NUMBER_OF_NOTIFICATIONS">%d</xliff:g>"</string>
     <string name="speed_bump_explanation" msgid="1288875699658819755">"Notificações menos urgentes abaixo"</string>
-    <string name="notification_tap_again" msgid="8524949573675922138">"Toque novamente para abrir"</string>
+    <string name="notification_tap_again" msgid="7590196980943943842">"Toque novamente para abrir"</string>
     <string name="keyguard_unlock" msgid="8043466894212841998">"Deslize para cima para desbloquear"</string>
     <string name="phone_hint" msgid="4872890986869209950">"Deslize a partir do ícone do telefone"</string>
     <string name="voice_hint" msgid="8939888732119726665">"Deslize a partir do ícone de assistência de voz"</string>
@@ -429,7 +420,7 @@
     <string name="accessibility_volume_expand" msgid="5946812790999244205">"Expandir"</string>
     <string name="accessibility_volume_collapse" msgid="3609549593031810875">"Recolher"</string>
     <string name="screen_pinning_title" msgid="3273740381976175811">"A tela está fixada"</string>
-    <string name="screen_pinning_description" msgid="3577937698406151604">"Ela é mantida à vista até que seja liberada. Toque em \"Voltar\" e mantenha essa opção pressionada para liberar."</string>
+    <string name="screen_pinning_description" msgid="7238941806855968768">"Ela é mantida à vista até que seja liberada. Toque em \"Voltar\" e mantenha essa opção pressionada para liberar."</string>
     <string name="screen_pinning_positive" msgid="3783985798366751226">"Entendi"</string>
     <string name="screen_pinning_negative" msgid="3741602308343880268">"Não, obrigado"</string>
     <string name="quick_settings_reset_confirmation_title" msgid="748792586749897883">"Esconder <xliff:g id="TILE_LABEL">%1$s</xliff:g>?"</string>
@@ -439,15 +430,13 @@
     <string name="volumeui_prompt_allow" msgid="7954396902482228786">"Permitir"</string>
     <string name="volumeui_prompt_deny" msgid="5720663643411696731">"Negar"</string>
     <string name="volumeui_notification_title" msgid="4906770126345910955">"<xliff:g id="APP_NAME">%1$s</xliff:g> é a caixa de diálogo referente ao volume"</string>
-    <string name="volumeui_notification_text" msgid="1826889705095768656">"Toque para restaurar o original."</string>
+    <string name="volumeui_notification_text" msgid="8819536904234337445">"Toque para restaurar o original."</string>
     <string name="managed_profile_foreground_toast" msgid="5421487114739245972">"Você está usando seu perfil de trabalho"</string>
     <string name="volume_stream_content_description_unmute" msgid="4436631538779230857">"%1$s. Toque para ativar o som."</string>
     <string name="volume_stream_content_description_vibrate" msgid="1187944970457807498">"%1$s. Toque para configurar para vibrar. É possível que os serviços de acessibilidade sejam silenciados."</string>
     <string name="volume_stream_content_description_mute" msgid="3625049841390467354">"%1$s. Toque para silenciar. É possível que os serviços de acessibilidade sejam silenciados."</string>
-    <!-- no translation found for volume_dialog_accessibility_shown_message (1834631467074259998) -->
-    <skip />
-    <!-- no translation found for volume_dialog_accessibility_dismissed_message (51543526013711399) -->
-    <skip />
+    <string name="volume_dialog_accessibility_shown_message" msgid="1834631467074259998">"%s controles de volume exibidos. Deslize para cima para dispensar."</string>
+    <string name="volume_dialog_accessibility_dismissed_message" msgid="51543526013711399">"Controles de volume ocultos"</string>
     <string name="system_ui_tuner" msgid="708224127392452018">"Sintonizador System UI"</string>
     <string name="show_battery_percentage" msgid="5444136600512968798">"Mostrar porcentagem de bateria incorporada"</string>
     <string name="show_battery_percentage_summary" msgid="3215025775576786037">"Mostrar porcentagem de nível de bateria dentro do ícone da barra de status quando não estiver carregando"</string>
@@ -643,27 +632,17 @@
     <string name="accessibility_qs_edit_tile_removed" msgid="8584304916627913440">"<xliff:g id="TILE_NAME">%1$s</xliff:g> é removido"</string>
     <string name="accessibility_qs_edit_tile_moved" msgid="4343693412689365038">"<xliff:g id="TILE_NAME">%1$s</xliff:g> movido para a posição <xliff:g id="POSITION">%2$d</xliff:g>"</string>
     <string name="accessibility_desc_quick_settings_edit" msgid="8073587401747016103">"Editor de configurações rápidas."</string>
-    <!-- no translation found for accessibility_desc_notification_icon (8352414185263916335) -->
-    <skip />
+    <string name="accessibility_desc_notification_icon" msgid="8352414185263916335">"Notificação do <xliff:g id="ID_1">%1$s</xliff:g>: <xliff:g id="ID_2">%2$s</xliff:g>"</string>
     <string name="dock_forced_resizable" msgid="5914261505436217520">"É possível que o app não funcione com o recurso de divisão de tela."</string>
     <string name="dock_non_resizeble_failed_to_dock_text" msgid="3871617304250207291">"O app não é compatível com a divisão de tela."</string>
-    <!-- no translation found for accessibility_quick_settings_settings (6132460890024942157) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_expand (2375165227880477530) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_collapse (1792625797142648105) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_alarm_set (1863000242431528676) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_user (1567445362870421770) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_no_internet (31890692343084075) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_open_details (4230931801728005194) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_open_settings (7806613775728380737) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_edit (7839992848995240393) -->
-    <skip />
+    <string name="accessibility_quick_settings_settings" msgid="6132460890024942157">"Abrir configurações."</string>
+    <string name="accessibility_quick_settings_expand" msgid="2375165227880477530">"Abrir as configurações rápidas."</string>
+    <string name="accessibility_quick_settings_collapse" msgid="1792625797142648105">"Fechar as configurações rápidas."</string>
+    <string name="accessibility_quick_settings_alarm_set" msgid="1863000242431528676">"Alarme definido."</string>
+    <string name="accessibility_quick_settings_user" msgid="1567445362870421770">"Login efetuado como <xliff:g id="ID_1">%s</xliff:g>"</string>
+    <string name="accessibility_quick_settings_no_internet" msgid="31890692343084075">"Sem Internet."</string>
+    <string name="accessibility_quick_settings_open_details" msgid="4230931801728005194">"Abrir detalhes."</string>
+    <string name="accessibility_quick_settings_open_settings" msgid="7806613775728380737">"Abrir configurações de <xliff:g id="ID_1">%s</xliff:g>."</string>
+    <string name="accessibility_quick_settings_edit" msgid="7839992848995240393">"Editar ordem das configurações."</string>
     <string name="accessibility_quick_settings_page" msgid="5032979051755200721">"Página <xliff:g id="ID_1">%1$d</xliff:g> de <xliff:g id="ID_2">%2$d</xliff:g>"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-pt/strings_tv.xml b/packages/SystemUI/res/values-pt/strings_tv.xml
index 705c01c..1857fee 100644
--- a/packages/SystemUI/res/values-pt/strings_tv.xml
+++ b/packages/SystemUI/res/values-pt/strings_tv.xml
@@ -24,10 +24,8 @@
     <string name="pip_play" msgid="674145557658227044">"Reproduzir"</string>
     <string name="pip_pause" msgid="8412075640017218862">"Pausar"</string>
     <string name="pip_hold_home" msgid="340086535668778109">"Mantenha "<b>"INÍCIO"</b>" pressionado para controlar o PIP"</string>
-    <!-- no translation found for pip_onboarding_title (7850436557670253991) -->
-    <skip />
-    <!-- no translation found for pip_onboarding_description (4028124563309465267) -->
-    <skip />
+    <string name="pip_onboarding_title" msgid="7850436557670253991">"Picture-in-picture"</string>
+    <string name="pip_onboarding_description" msgid="4028124563309465267">"Esse recurso faz com que seu vídeo continue sendo exibido até que você reproduza outro. Mantenha "<b>"INÍCIO"</b>" pressionado para controlá-lo."</string>
     <string name="pip_onboarding_button" msgid="3957426748484904611">"Entendi"</string>
     <string name="recents_tv_dismiss" msgid="3555093879593377731">"Dispensar"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-ro/strings.xml b/packages/SystemUI/res/values-ro/strings.xml
index d40b3ec..44642a0 100644
--- a/packages/SystemUI/res/values-ro/strings.xml
+++ b/packages/SystemUI/res/values-ro/strings.xml
@@ -72,7 +72,7 @@
     <string name="screenshot_saving_title" msgid="8242282144535555697">"Se salvează captura de ecran..."</string>
     <string name="screenshot_saving_text" msgid="2419718443411738818">"Captura de ecran este salvată."</string>
     <string name="screenshot_saved_title" msgid="6461865960961414961">"Captură de ecran realizată."</string>
-    <string name="screenshot_saved_text" msgid="1152839647677558815">"Atingeți pentru a vedea captura de ecran."</string>
+    <string name="screenshot_saved_text" msgid="2685605830386712477">"Atingeți pentru a vedea captura de ecran."</string>
     <string name="screenshot_failed_title" msgid="705781116746922771">"Captura de ecran nu a putut fi realizată."</string>
     <string name="screenshot_failed_to_save_unknown_text" msgid="7887826345701753830">"Problemă întâmpinată la salvarea capturii de ecran."</string>
     <string name="screenshot_failed_to_save_text" msgid="2592658083866306296">"Captura de ecran nu poate fi salvată din cauza spațiului de stocare limitat."</string>
@@ -119,8 +119,7 @@
     <string name="accessibility_data_signal_full" msgid="2708384608124519369">"Semnal pentru date: complet."</string>
     <string name="accessibility_wifi_name" msgid="7202151365171148501">"Conectat la <xliff:g id="WIFI">%s</xliff:g>."</string>
     <string name="accessibility_bluetooth_name" msgid="8441517146585531676">"Conectat la <xliff:g id="BLUETOOTH">%s</xliff:g>."</string>
-    <!-- no translation found for accessibility_cast_name (4026393061247081201) -->
-    <skip />
+    <string name="accessibility_cast_name" msgid="4026393061247081201">"S-a stabilit conexiunea la <xliff:g id="CAST">%s</xliff:g>."</string>
     <string name="accessibility_no_wimax" msgid="4329180129727630368">"Fără WiMAX."</string>
     <string name="accessibility_wimax_one_bar" msgid="4170994299011863648">"WiMAX o bară."</string>
     <string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"WiMAX două bare."</string>
@@ -151,17 +150,14 @@
     <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"EDGE"</string>
     <string name="accessibility_data_connection_wifi" msgid="2324496756590645221">"Wi-Fi"</string>
     <string name="accessibility_no_sim" msgid="8274017118472455155">"Niciun card SIM."</string>
-    <!-- no translation found for accessibility_cell_data (7080312242791850520) -->
-    <skip />
-    <!-- no translation found for accessibility_cell_data_on (4310018593519761767) -->
-    <skip />
+    <string name="accessibility_cell_data" msgid="7080312242791850520">"Date mobile"</string>
+    <string name="accessibility_cell_data_on" msgid="4310018593519761767">"Date mobile activate"</string>
     <string name="accessibility_cell_data_off" msgid="8000803571751407635">"Datele mobile sunt dezactivate"</string>
     <string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"Conectarea ca modem prin Bluetooth."</string>
     <string name="accessibility_airplane_mode" msgid="834748999790763092">"Mod Avion."</string>
     <string name="accessibility_no_sims" msgid="3957997018324995781">"Niciun card SIM."</string>
     <string name="accessibility_carrier_network_change_mode" msgid="4017301580441304305">"Se schimbă rețeaua operatorului."</string>
-    <!-- no translation found for accessibility_battery_details (7645516654955025422) -->
-    <skip />
+    <string name="accessibility_battery_details" msgid="7645516654955025422">"Deschideți detaliile privind bateria"</string>
     <string name="accessibility_battery_level" msgid="7451474187113371965">"Baterie: <xliff:g id="NUMBER">%d</xliff:g> la sută."</string>
     <!-- String.format failed for translation -->
     <!-- no translation found for accessibility_battery_level_charging (1147587904439319646) -->
@@ -203,13 +199,11 @@
     <string name="accessibility_quick_settings_dnd_priority_on" msgid="1448402297221249355">"Setarea „Nu deranja” este activată – numai prioritare."</string>
     <string name="accessibility_quick_settings_dnd_none_on" msgid="6882582132662613537">"Setarea „Nu deranja” este activată – niciun sunet."</string>
     <string name="accessibility_quick_settings_dnd_alarms_on" msgid="9152834845587554157">"Setarea „Nu deranja” este activată – numai alarme."</string>
-    <!-- no translation found for accessibility_quick_settings_dnd (6607873236717185815) -->
-    <skip />
+    <string name="accessibility_quick_settings_dnd" msgid="6607873236717185815">"Nu deranja."</string>
     <string name="accessibility_quick_settings_dnd_off" msgid="2371832603753738581">"Setarea „Nu deranja” este dezactivată."</string>
     <string name="accessibility_quick_settings_dnd_changed_off" msgid="898107593453022935">"Setarea „Nu deranja” a fost dezactivată."</string>
     <string name="accessibility_quick_settings_dnd_changed_on" msgid="4483780856613561039">"Setarea „Nu deranja” a fost activată."</string>
-    <!-- no translation found for accessibility_quick_settings_bluetooth (6341675755803320038) -->
-    <skip />
+    <string name="accessibility_quick_settings_bluetooth" msgid="6341675755803320038">"Bluetooth."</string>
     <string name="accessibility_quick_settings_bluetooth_off" msgid="2133631372372064339">"Conexiunea prin Bluetooth este dezactivată."</string>
     <string name="accessibility_quick_settings_bluetooth_on" msgid="7681999166216621838">"Conexiunea prin Bluetooth este activată."</string>
     <string name="accessibility_quick_settings_bluetooth_connecting" msgid="6953242966685343855">"Se conectează prin Bluetooth."</string>
@@ -275,10 +269,8 @@
     <string name="quick_settings_bluetooth_detail_empty_text" msgid="4910015762433302860">"Niciun dispozitiv conectat disponibil"</string>
     <string name="quick_settings_brightness_label" msgid="6968372297018755815">"Luminozitate"</string>
     <string name="quick_settings_rotation_unlocked_label" msgid="7305323031808150099">"Rotire automată"</string>
-    <!-- no translation found for accessibility_quick_settings_rotation (4231661040698488779) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_rotation_value (1428962304214992318) -->
-    <skip />
+    <string name="accessibility_quick_settings_rotation" msgid="4231661040698488779">"Rotirea automată a ecranului"</string>
+    <string name="accessibility_quick_settings_rotation_value" msgid="1428962304214992318">"Setați la <xliff:g id="ID_1">%s</xliff:g>"</string>
     <string name="quick_settings_rotation_locked_label" msgid="6359205706154282377">"Rotire blocată"</string>
     <string name="quick_settings_rotation_locked_portrait_label" msgid="5102691921442135053">"Portret"</string>
     <string name="quick_settings_rotation_locked_landscape_label" msgid="8553157770061178719">"Peisaj"</string>
@@ -297,8 +289,7 @@
     <string name="quick_settings_wifi_not_connected" msgid="7171904845345573431">"Neconectat"</string>
     <string name="quick_settings_wifi_no_network" msgid="2221993077220856376">"Nicio rețea"</string>
     <string name="quick_settings_wifi_off_label" msgid="7558778100843885864">"Wi-Fi deconectat"</string>
-    <!-- no translation found for quick_settings_wifi_on_label (7607810331387031235) -->
-    <skip />
+    <string name="quick_settings_wifi_on_label" msgid="7607810331387031235">"Wi-Fi activat"</string>
     <string name="quick_settings_wifi_detail_empty_text" msgid="269990350383909226">"Nicio rețea Wi-Fi disponibilă"</string>
     <string name="quick_settings_cast_title" msgid="7709016546426454729">"Proiectați"</string>
     <string name="quick_settings_casting" msgid="6601710681033353316">"Se proiectează"</string>
@@ -352,7 +343,7 @@
     <string name="zen_silence_introduction" msgid="3137882381093271568">"Această opțiune blochează TOATE sunetele și vibrațiile, inclusiv cele ale alarmelor, muzicii, videoclipurilor și jocurilor."</string>
     <string name="keyguard_more_overflow_text" msgid="9195222469041601365">"+<xliff:g id="NUMBER_OF_NOTIFICATIONS">%d</xliff:g>"</string>
     <string name="speed_bump_explanation" msgid="1288875699658819755">"Notificările mai puțin urgente mai jos"</string>
-    <string name="notification_tap_again" msgid="8524949573675922138">"Atingeți din nou pentru a deschide"</string>
+    <string name="notification_tap_again" msgid="7590196980943943842">"Atingeți din nou pentru a deschide"</string>
     <string name="keyguard_unlock" msgid="8043466894212841998">"Glisați în sus pentru a debloca"</string>
     <string name="phone_hint" msgid="4872890986869209950">"Glisați dinspre telefon"</string>
     <string name="voice_hint" msgid="8939888732119726665">"Glisați dinspre pictogramă pentru asistentul vocal"</string>
@@ -430,7 +421,7 @@
     <string name="accessibility_volume_expand" msgid="5946812790999244205">"Extindeți"</string>
     <string name="accessibility_volume_collapse" msgid="3609549593031810875">"Restrângeți"</string>
     <string name="screen_pinning_title" msgid="3273740381976175811">"Ecranul este fixat"</string>
-    <string name="screen_pinning_description" msgid="3577937698406151604">"Ecranul este afișat până anulați fixarea. Atingeți lung opțiunea Înapoi pentru a anula fixarea."</string>
+    <string name="screen_pinning_description" msgid="7238941806855968768">"Ecranul este afișat până anulați fixarea. Atingeți lung opțiunea Înapoi pentru a anula fixarea."</string>
     <string name="screen_pinning_positive" msgid="3783985798366751226">"Am înțeles"</string>
     <string name="screen_pinning_negative" msgid="3741602308343880268">"Nu, mulțumesc"</string>
     <string name="quick_settings_reset_confirmation_title" msgid="748792586749897883">"Ascundeți <xliff:g id="TILE_LABEL">%1$s</xliff:g>?"</string>
@@ -440,15 +431,13 @@
     <string name="volumeui_prompt_allow" msgid="7954396902482228786">"Permiteți"</string>
     <string name="volumeui_prompt_deny" msgid="5720663643411696731">"Refuzați"</string>
     <string name="volumeui_notification_title" msgid="4906770126345910955">"<xliff:g id="APP_NAME">%1$s</xliff:g> afișează caseta de dialog pentru volum"</string>
-    <string name="volumeui_notification_text" msgid="1826889705095768656">"Atingeți pentru a reveni la setarea inițială."</string>
+    <string name="volumeui_notification_text" msgid="8819536904234337445">"Atingeți pentru a restabili versiunea originală."</string>
     <string name="managed_profile_foreground_toast" msgid="5421487114739245972">"Acum folosiți profilul de serviciu"</string>
     <string name="volume_stream_content_description_unmute" msgid="4436631538779230857">"%1$s. Atingeți pentru a activa sunetul."</string>
     <string name="volume_stream_content_description_vibrate" msgid="1187944970457807498">"%1$s. Atingeți pentru a seta vibrarea. Sunetul se poate dezactiva pentru serviciile de accesibilitate."</string>
     <string name="volume_stream_content_description_mute" msgid="3625049841390467354">"%1$s. Atingeți pentru a dezactiva sunetul. Sunetul se poate dezactiva pentru serviciile de accesibilitate."</string>
-    <!-- no translation found for volume_dialog_accessibility_shown_message (1834631467074259998) -->
-    <skip />
-    <!-- no translation found for volume_dialog_accessibility_dismissed_message (51543526013711399) -->
-    <skip />
+    <string name="volume_dialog_accessibility_shown_message" msgid="1834631467074259998">"Comenzile de volum pentru %s sunt afișate. Glisați pentru a închide."</string>
+    <string name="volume_dialog_accessibility_dismissed_message" msgid="51543526013711399">"Comenzile de volum sunt ascunse"</string>
     <string name="system_ui_tuner" msgid="708224127392452018">"System UI Tuner"</string>
     <string name="show_battery_percentage" msgid="5444136600512968798">"Afișați procentajul bateriei încorporat"</string>
     <string name="show_battery_percentage_summary" msgid="3215025775576786037">"Afișați procentajul cu nivelul bateriei în interiorul pictogramei din bara de stare, atunci când nu se încarcă"</string>
@@ -644,27 +633,17 @@
     <string name="accessibility_qs_edit_tile_removed" msgid="8584304916627913440">"Caseta <xliff:g id="TILE_NAME">%1$s</xliff:g> este eliminată"</string>
     <string name="accessibility_qs_edit_tile_moved" msgid="4343693412689365038">"Caseta <xliff:g id="TILE_NAME">%1$s</xliff:g> a fost mutată pe poziția <xliff:g id="POSITION">%2$d</xliff:g>"</string>
     <string name="accessibility_desc_quick_settings_edit" msgid="8073587401747016103">"Editorul pentru setări rapide."</string>
-    <!-- no translation found for accessibility_desc_notification_icon (8352414185263916335) -->
-    <skip />
+    <string name="accessibility_desc_notification_icon" msgid="8352414185263916335">"Notificare <xliff:g id="ID_1">%1$s</xliff:g>: <xliff:g id="ID_2">%2$s</xliff:g>"</string>
     <string name="dock_forced_resizable" msgid="5914261505436217520">"Este posibil ca aplicația să nu funcționeze cu ecranul împărțit."</string>
     <string name="dock_non_resizeble_failed_to_dock_text" msgid="3871617304250207291">"Aplicația nu acceptă ecranul împărțit."</string>
-    <!-- no translation found for accessibility_quick_settings_settings (6132460890024942157) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_expand (2375165227880477530) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_collapse (1792625797142648105) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_alarm_set (1863000242431528676) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_user (1567445362870421770) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_no_internet (31890692343084075) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_open_details (4230931801728005194) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_open_settings (7806613775728380737) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_edit (7839992848995240393) -->
-    <skip />
+    <string name="accessibility_quick_settings_settings" msgid="6132460890024942157">"Deschideți setările."</string>
+    <string name="accessibility_quick_settings_expand" msgid="2375165227880477530">"Deschideți setările rapide."</string>
+    <string name="accessibility_quick_settings_collapse" msgid="1792625797142648105">"Închideți setările rapide."</string>
+    <string name="accessibility_quick_settings_alarm_set" msgid="1863000242431528676">"Alarmă setată."</string>
+    <string name="accessibility_quick_settings_user" msgid="1567445362870421770">"Conectat(ă) ca <xliff:g id="ID_1">%s</xliff:g>"</string>
+    <string name="accessibility_quick_settings_no_internet" msgid="31890692343084075">"Nicio conexiune la internet."</string>
+    <string name="accessibility_quick_settings_open_details" msgid="4230931801728005194">"Deschideți detaliile."</string>
+    <string name="accessibility_quick_settings_open_settings" msgid="7806613775728380737">"Deschideți setările <xliff:g id="ID_1">%s</xliff:g>."</string>
+    <string name="accessibility_quick_settings_edit" msgid="7839992848995240393">"Editați ordinea setărilor."</string>
     <string name="accessibility_quick_settings_page" msgid="5032979051755200721">"Pagina <xliff:g id="ID_1">%1$d</xliff:g> din <xliff:g id="ID_2">%2$d</xliff:g>"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-ro/strings_tv.xml b/packages/SystemUI/res/values-ro/strings_tv.xml
index 5bc63f8..0287cb7 100644
--- a/packages/SystemUI/res/values-ro/strings_tv.xml
+++ b/packages/SystemUI/res/values-ro/strings_tv.xml
@@ -24,10 +24,8 @@
     <string name="pip_play" msgid="674145557658227044">"Redați"</string>
     <string name="pip_pause" msgid="8412075640017218862">"Întrerupeți"</string>
     <string name="pip_hold_home" msgid="340086535668778109">"Apăsați lung "<b>"ACASĂ"</b>" pentru a controla PIP"</string>
-    <!-- no translation found for pip_onboarding_title (7850436557670253991) -->
-    <skip />
-    <!-- no translation found for pip_onboarding_description (4028124563309465267) -->
-    <skip />
+    <string name="pip_onboarding_title" msgid="7850436557670253991">"Picture-in-Picture"</string>
+    <string name="pip_onboarding_description" msgid="4028124563309465267">"Astfel, videoclipul este afișat până când redați alt videoclip. Apăsați lung pe butonul "<b>"ACASĂ"</b>" pentru a controla funcția."</string>
     <string name="pip_onboarding_button" msgid="3957426748484904611">"Am înțeles"</string>
     <string name="recents_tv_dismiss" msgid="3555093879593377731">"Închideți"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-ru/strings.xml b/packages/SystemUI/res/values-ru/strings.xml
index d6720eb..f6088bf 100644
--- a/packages/SystemUI/res/values-ru/strings.xml
+++ b/packages/SystemUI/res/values-ru/strings.xml
@@ -73,7 +73,7 @@
     <string name="screenshot_saving_title" msgid="8242282144535555697">"Сохранение..."</string>
     <string name="screenshot_saving_text" msgid="2419718443411738818">"Сохранение..."</string>
     <string name="screenshot_saved_title" msgid="6461865960961414961">"Скриншот сохранен"</string>
-    <string name="screenshot_saved_text" msgid="1152839647677558815">"Нажмите, чтобы просмотреть"</string>
+    <string name="screenshot_saved_text" msgid="2685605830386712477">"Нажмите, чтобы увидеть скриншот"</string>
     <string name="screenshot_failed_title" msgid="705781116746922771">"Не удалось сохранить скриншот."</string>
     <string name="screenshot_failed_to_save_unknown_text" msgid="7887826345701753830">"Не удалось сохранить скриншот."</string>
     <string name="screenshot_failed_to_save_text" msgid="2592658083866306296">"Не удалось сохранить скриншот: недостаточно места."</string>
@@ -120,8 +120,7 @@
     <string name="accessibility_data_signal_full" msgid="2708384608124519369">"Надежный сигнал передачи данных."</string>
     <string name="accessibility_wifi_name" msgid="7202151365171148501">"<xliff:g id="WIFI">%s</xliff:g>: подключено."</string>
     <string name="accessibility_bluetooth_name" msgid="8441517146585531676">"<xliff:g id="BLUETOOTH">%s</xliff:g>: подключено."</string>
-    <!-- no translation found for accessibility_cast_name (4026393061247081201) -->
-    <skip />
+    <string name="accessibility_cast_name" msgid="4026393061247081201">"Подключено к: <xliff:g id="CAST">%s</xliff:g>."</string>
     <string name="accessibility_no_wimax" msgid="4329180129727630368">"Нет сигнала WiMAX."</string>
     <string name="accessibility_wimax_one_bar" msgid="4170994299011863648">"Сигнал WiMAX: одно деление."</string>
     <string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"Сигнал WiMAX: два деления."</string>
@@ -152,17 +151,14 @@
     <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string>
     <string name="accessibility_data_connection_wifi" msgid="2324496756590645221">"Wi-Fi"</string>
     <string name="accessibility_no_sim" msgid="8274017118472455155">"SIM-карта отсутствует."</string>
-    <!-- no translation found for accessibility_cell_data (7080312242791850520) -->
-    <skip />
-    <!-- no translation found for accessibility_cell_data_on (4310018593519761767) -->
-    <skip />
+    <string name="accessibility_cell_data" msgid="7080312242791850520">"Мобильные данные"</string>
+    <string name="accessibility_cell_data_on" msgid="4310018593519761767">"Передача мобильных данных включена"</string>
     <string name="accessibility_cell_data_off" msgid="8000803571751407635">"Передача мобильных данных отключена"</string>
     <string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"Bluetooth-модем"</string>
     <string name="accessibility_airplane_mode" msgid="834748999790763092">"Режим полета."</string>
     <string name="accessibility_no_sims" msgid="3957997018324995781">"Нет SIM-карты."</string>
     <string name="accessibility_carrier_network_change_mode" msgid="4017301580441304305">"Сменить сеть"</string>
-    <!-- no translation found for accessibility_battery_details (7645516654955025422) -->
-    <skip />
+    <string name="accessibility_battery_details" msgid="7645516654955025422">"Сведения о расходе заряда батареи"</string>
     <string name="accessibility_battery_level" msgid="7451474187113371965">"Заряд батареи в процентах: <xliff:g id="NUMBER">%d</xliff:g>."</string>
     <!-- String.format failed for translation -->
     <!-- no translation found for accessibility_battery_level_charging (1147587904439319646) -->
@@ -204,13 +200,11 @@
     <string name="accessibility_quick_settings_dnd_priority_on" msgid="1448402297221249355">"Режим \"Не беспокоить\" включен. Будут показаны только важные оповещения."</string>
     <string name="accessibility_quick_settings_dnd_none_on" msgid="6882582132662613537">"Не беспокоить, полная тишина."</string>
     <string name="accessibility_quick_settings_dnd_alarms_on" msgid="9152834845587554157">"Не беспокоить – только будильник."</string>
-    <!-- no translation found for accessibility_quick_settings_dnd (6607873236717185815) -->
-    <skip />
+    <string name="accessibility_quick_settings_dnd" msgid="6607873236717185815">"Не беспокоить."</string>
     <string name="accessibility_quick_settings_dnd_off" msgid="2371832603753738581">"Режим \"Не беспокоить\" выключен."</string>
     <string name="accessibility_quick_settings_dnd_changed_off" msgid="898107593453022935">"Режим \"Не беспокоить\" выключен."</string>
     <string name="accessibility_quick_settings_dnd_changed_on" msgid="4483780856613561039">"Режим \"Не беспокоить\" включен."</string>
-    <!-- no translation found for accessibility_quick_settings_bluetooth (6341675755803320038) -->
-    <skip />
+    <string name="accessibility_quick_settings_bluetooth" msgid="6341675755803320038">"Bluetooth."</string>
     <string name="accessibility_quick_settings_bluetooth_off" msgid="2133631372372064339">"Модуль Bluetooth отключен."</string>
     <string name="accessibility_quick_settings_bluetooth_on" msgid="7681999166216621838">"Модуль Bluetooth включен."</string>
     <string name="accessibility_quick_settings_bluetooth_connecting" msgid="6953242966685343855">"Bluetooth-соединение устанавливается."</string>
@@ -276,10 +270,8 @@
     <string name="quick_settings_bluetooth_detail_empty_text" msgid="4910015762433302860">"Нет доступных подключенных устройств"</string>
     <string name="quick_settings_brightness_label" msgid="6968372297018755815">"Яркость"</string>
     <string name="quick_settings_rotation_unlocked_label" msgid="7305323031808150099">"Автоповорот"</string>
-    <!-- no translation found for accessibility_quick_settings_rotation (4231661040698488779) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_rotation_value (1428962304214992318) -->
-    <skip />
+    <string name="accessibility_quick_settings_rotation" msgid="4231661040698488779">"Автоповорот экрана"</string>
+    <string name="accessibility_quick_settings_rotation_value" msgid="1428962304214992318">"<xliff:g id="ID_1">%s</xliff:g>"</string>
     <string name="quick_settings_rotation_locked_label" msgid="6359205706154282377">"Автоповорот отключен"</string>
     <string name="quick_settings_rotation_locked_portrait_label" msgid="5102691921442135053">"Вертикальная ориентация"</string>
     <string name="quick_settings_rotation_locked_landscape_label" msgid="8553157770061178719">"Горизонтальная ориентация"</string>
@@ -298,8 +290,7 @@
     <string name="quick_settings_wifi_not_connected" msgid="7171904845345573431">"Нет соединения"</string>
     <string name="quick_settings_wifi_no_network" msgid="2221993077220856376">"Нет сети"</string>
     <string name="quick_settings_wifi_off_label" msgid="7558778100843885864">"Wi-Fi выкл."</string>
-    <!-- no translation found for quick_settings_wifi_on_label (7607810331387031235) -->
-    <skip />
+    <string name="quick_settings_wifi_on_label" msgid="7607810331387031235">"Wi-Fi включен"</string>
     <string name="quick_settings_wifi_detail_empty_text" msgid="269990350383909226">"Не удалось найти доступные сети Wi-Fi"</string>
     <string name="quick_settings_cast_title" msgid="7709016546426454729">"Трансляция"</string>
     <string name="quick_settings_casting" msgid="6601710681033353316">"Передача изображения"</string>
@@ -353,7 +344,7 @@
     <string name="zen_silence_introduction" msgid="3137882381093271568">"В этом режиме будут отключены вибросигнал и все звуки (в том числе для будильника, музыкального проигрывателя, игр и видео)."</string>
     <string name="keyguard_more_overflow_text" msgid="9195222469041601365">"+<xliff:g id="NUMBER_OF_NOTIFICATIONS">%d</xliff:g>"</string>
     <string name="speed_bump_explanation" msgid="1288875699658819755">"Показать менее важные оповещения"</string>
-    <string name="notification_tap_again" msgid="8524949573675922138">"Нажмите ещё раз, чтобы открыть"</string>
+    <string name="notification_tap_again" msgid="7590196980943943842">"Нажмите ещё раз, чтобы открыть"</string>
     <string name="keyguard_unlock" msgid="8043466894212841998">"Проведите вверх, чтобы разблокировать"</string>
     <string name="phone_hint" msgid="4872890986869209950">"Телефон: проведите от значка"</string>
     <string name="voice_hint" msgid="8939888732119726665">"Аудиоподсказки: проведите от значка"</string>
@@ -431,7 +422,7 @@
     <string name="accessibility_volume_expand" msgid="5946812790999244205">"Развернуть"</string>
     <string name="accessibility_volume_collapse" msgid="3609549593031810875">"Свернуть"</string>
     <string name="screen_pinning_title" msgid="3273740381976175811">"Блокировка в приложении включена"</string>
-    <string name="screen_pinning_description" msgid="3577937698406151604">"Приложение останется активным, пока вы не отмените блокировку, одновременно нажав кнопки \"Назад\" и \"Обзор\"."</string>
+    <string name="screen_pinning_description" msgid="7238941806855968768">"Приложение останется активным, пока вы не отмените блокировку, нажав и удерживая кнопку \"Назад\"."</string>
     <string name="screen_pinning_positive" msgid="3783985798366751226">"ОК"</string>
     <string name="screen_pinning_negative" msgid="3741602308343880268">"Нет, спасибо"</string>
     <string name="quick_settings_reset_confirmation_title" msgid="748792586749897883">"Скрыть параметр \"<xliff:g id="TILE_LABEL">%1$s</xliff:g>\"?"</string>
@@ -441,15 +432,13 @@
     <string name="volumeui_prompt_allow" msgid="7954396902482228786">"Да"</string>
     <string name="volumeui_prompt_deny" msgid="5720663643411696731">"Нет"</string>
     <string name="volumeui_notification_title" msgid="4906770126345910955">"Приложение <xliff:g id="APP_NAME">%1$s</xliff:g> назначено регулятором громкости"</string>
-    <string name="volumeui_notification_text" msgid="1826889705095768656">"Нажмите, чтобы восстановить приложение по умолчанию."</string>
+    <string name="volumeui_notification_text" msgid="8819536904234337445">"Нажмите, чтобы восстановить оригинал"</string>
     <string name="managed_profile_foreground_toast" msgid="5421487114739245972">"Вы перешли в рабочий профиль"</string>
     <string name="volume_stream_content_description_unmute" msgid="4436631538779230857">"%1$s. Нажмите, чтобы включить звук."</string>
     <string name="volume_stream_content_description_vibrate" msgid="1187944970457807498">"%1$s. Нажмите, чтобы включить вибрацию. Специальные возможности могут прекратить работу."</string>
     <string name="volume_stream_content_description_mute" msgid="3625049841390467354">"%1$s. Нажмите, чтобы выключить звук. Специальные возможности могут прекратить работу."</string>
-    <!-- no translation found for volume_dialog_accessibility_shown_message (1834631467074259998) -->
-    <skip />
-    <!-- no translation found for volume_dialog_accessibility_dismissed_message (51543526013711399) -->
-    <skip />
+    <string name="volume_dialog_accessibility_shown_message" msgid="1834631467074259998">"Показаны регуляторы громкости: %s. Проведите вверх, чтобы скрыть."</string>
+    <string name="volume_dialog_accessibility_dismissed_message" msgid="51543526013711399">"Регуляторы громкости скрыты"</string>
     <string name="system_ui_tuner" msgid="708224127392452018">"System UI Tuner"</string>
     <string name="show_battery_percentage" msgid="5444136600512968798">"Показывать уровень заряда батареи в процентах"</string>
     <string name="show_battery_percentage_summary" msgid="3215025775576786037">"Когда устройство работает в автономном режиме, процент заряда батареи показан в строке состояния"</string>
@@ -645,27 +634,17 @@
     <string name="accessibility_qs_edit_tile_removed" msgid="8584304916627913440">"Кнопка \"<xliff:g id="TILE_NAME">%1$s</xliff:g>\" удалена"</string>
     <string name="accessibility_qs_edit_tile_moved" msgid="4343693412689365038">"Кнопка \"<xliff:g id="TILE_NAME">%1$s</xliff:g>\" теперь занимает позицию <xliff:g id="POSITION">%2$d</xliff:g>"</string>
     <string name="accessibility_desc_quick_settings_edit" msgid="8073587401747016103">"Редактор быстрых настроек."</string>
-    <!-- no translation found for accessibility_desc_notification_icon (8352414185263916335) -->
-    <skip />
+    <string name="accessibility_desc_notification_icon" msgid="8352414185263916335">"Уведомление <xliff:g id="ID_1">%1$s</xliff:g>: <xliff:g id="ID_2">%2$s</xliff:g>"</string>
     <string name="dock_forced_resizable" msgid="5914261505436217520">"Приложение не поддерживает разделение экрана."</string>
     <string name="dock_non_resizeble_failed_to_dock_text" msgid="3871617304250207291">"Приложение не поддерживает разделение экрана."</string>
-    <!-- no translation found for accessibility_quick_settings_settings (6132460890024942157) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_expand (2375165227880477530) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_collapse (1792625797142648105) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_alarm_set (1863000242431528676) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_user (1567445362870421770) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_no_internet (31890692343084075) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_open_details (4230931801728005194) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_open_settings (7806613775728380737) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_edit (7839992848995240393) -->
-    <skip />
+    <string name="accessibility_quick_settings_settings" msgid="6132460890024942157">"Открыть настройки."</string>
+    <string name="accessibility_quick_settings_expand" msgid="2375165227880477530">"Развернуть быстрые настройки."</string>
+    <string name="accessibility_quick_settings_collapse" msgid="1792625797142648105">"Скрыть быстрые настройки."</string>
+    <string name="accessibility_quick_settings_alarm_set" msgid="1863000242431528676">"Будильник установлен."</string>
+    <string name="accessibility_quick_settings_user" msgid="1567445362870421770">"Выполнен вход под именем <xliff:g id="ID_1">%s</xliff:g>"</string>
+    <string name="accessibility_quick_settings_no_internet" msgid="31890692343084075">"Нет подключения к Интернету."</string>
+    <string name="accessibility_quick_settings_open_details" msgid="4230931801728005194">"Показать подробности."</string>
+    <string name="accessibility_quick_settings_open_settings" msgid="7806613775728380737">"Открыть настройки <xliff:g id="ID_1">%s</xliff:g>."</string>
+    <string name="accessibility_quick_settings_edit" msgid="7839992848995240393">"Изменить порядок быстрых настроек."</string>
     <string name="accessibility_quick_settings_page" msgid="5032979051755200721">"Страница <xliff:g id="ID_1">%1$d</xliff:g> из <xliff:g id="ID_2">%2$d</xliff:g>"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-ru/strings_tv.xml b/packages/SystemUI/res/values-ru/strings_tv.xml
index d5b66a6..3c00160 100644
--- a/packages/SystemUI/res/values-ru/strings_tv.xml
+++ b/packages/SystemUI/res/values-ru/strings_tv.xml
@@ -24,10 +24,8 @@
     <string name="pip_play" msgid="674145557658227044">"Воспроизвести"</string>
     <string name="pip_pause" msgid="8412075640017218862">"Приостановить"</string>
     <string name="pip_hold_home" msgid="340086535668778109">"Управляйте кадром в кадре, удерживая кнопку "<b>"ГЛАВНАЯ"</b></string>
-    <!-- no translation found for pip_onboarding_title (7850436557670253991) -->
-    <skip />
-    <!-- no translation found for pip_onboarding_description (4028124563309465267) -->
-    <skip />
+    <string name="pip_onboarding_title" msgid="7850436557670253991">"Картинка в картинке"</string>
+    <string name="pip_onboarding_description" msgid="4028124563309465267">"Позволяет смотреть одно видео в другом. Для управления нажмите и удерживайте клавишу "<b>"HOME"</b>"."</string>
     <string name="pip_onboarding_button" msgid="3957426748484904611">"ОК"</string>
     <string name="recents_tv_dismiss" msgid="3555093879593377731">"Закрыть"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-si-rLK/strings.xml b/packages/SystemUI/res/values-si-rLK/strings.xml
index 06d3edc..c845a38 100644
--- a/packages/SystemUI/res/values-si-rLK/strings.xml
+++ b/packages/SystemUI/res/values-si-rLK/strings.xml
@@ -71,7 +71,7 @@
     <string name="screenshot_saving_title" msgid="8242282144535555697">"තිර රුව සුරැකෙමින් පවතී…"</string>
     <string name="screenshot_saving_text" msgid="2419718443411738818">"තිර රුව සුරැකෙමින් පවතී."</string>
     <string name="screenshot_saved_title" msgid="6461865960961414961">"තිර රුව ග්‍රහණය කරන ලදි."</string>
-    <string name="screenshot_saved_text" msgid="1152839647677558815">"ඔබගේ තිර රුව බැලීමට ස්පර්ශ කරන්න."</string>
+    <string name="screenshot_saved_text" msgid="2685605830386712477">"ඔබගේ තිර රුව බැලීමට තට්ටු කරන්න."</string>
     <string name="screenshot_failed_title" msgid="705781116746922771">"තිර රුව ග්‍රහණය කිරීමට නොහැකි විය."</string>
     <string name="screenshot_failed_to_save_unknown_text" msgid="7887826345701753830">"තිර රුව සුරකින අතරතුර ගැටලුවක් ඇති විය."</string>
     <string name="screenshot_failed_to_save_text" msgid="2592658083866306296">"සීමිත ගබඩා ඉඩ නිසා තිර රුව සුරැකිය නොහැකිය."</string>
@@ -340,7 +340,7 @@
     <string name="zen_silence_introduction" msgid="3137882381093271568">"මෙය සීනු, සංගීතය, වීඩියෝ, සහ ක්‍රීඩා ඇතුළු, සියලු ශබ්ද සහ කම්පන අවහිර කරයි."</string>
     <string name="keyguard_more_overflow_text" msgid="9195222469041601365">"+<xliff:g id="NUMBER_OF_NOTIFICATIONS">%d</xliff:g>"</string>
     <string name="speed_bump_explanation" msgid="1288875699658819755">"හදිසිය අඩු දැනුම් දීම් පහත"</string>
-    <string name="notification_tap_again" msgid="8524949573675922138">"විවෘත කිරීමට නැවත ස්පර්ශ කරන්න"</string>
+    <string name="notification_tap_again" msgid="7590196980943943842">"විවෘත කිරීමට නැවත තට්ටු කරන්න"</string>
     <string name="keyguard_unlock" msgid="8043466894212841998">"අගුළු ඇරීමට ස්වයිප් කරන්න."</string>
     <string name="phone_hint" msgid="4872890986869209950">"දුරකථනය සඳහා නිරූපකය වෙතින් ස්වයිප් කරන්න"</string>
     <string name="voice_hint" msgid="8939888732119726665">"හඬ සහාය සඳහා නිරූපකය වෙතින් ස්වයිප් කරන්න"</string>
@@ -418,7 +418,7 @@
     <string name="accessibility_volume_expand" msgid="5946812790999244205">"දිග හරින්න"</string>
     <string name="accessibility_volume_collapse" msgid="3609549593031810875">"හකුළන්න"</string>
     <string name="screen_pinning_title" msgid="3273740381976175811">"තීරය අමුණන ලදි"</string>
-    <string name="screen_pinning_description" msgid="3577937698406151604">"මෙය ඔබ ගලවන තෙක් එය දසුන තුළ තබයි. ගැලවීමට ස්පර්ශ කර අල්ලාගෙන සිටින්න."</string>
+    <string name="screen_pinning_description" msgid="7238941806855968768">"මෙය ඔබ ගලවන තෙක් එය දසුන තුළ තබයි. ගැලවීමට ස්පර්ශ කර ආපසු අල්ලාගෙන සිටින්න."</string>
     <string name="screen_pinning_positive" msgid="3783985798366751226">"හරි, තේරුණා"</string>
     <string name="screen_pinning_negative" msgid="3741602308343880268">"එපා ස්තූතියි"</string>
     <string name="quick_settings_reset_confirmation_title" msgid="748792586749897883">"<xliff:g id="TILE_LABEL">%1$s</xliff:g> සඟවන්නද?"</string>
@@ -428,7 +428,7 @@
     <string name="volumeui_prompt_allow" msgid="7954396902482228786">"ඉඩ දෙන්න"</string>
     <string name="volumeui_prompt_deny" msgid="5720663643411696731">"ප්‍රතික්ෂේප කරන්න"</string>
     <string name="volumeui_notification_title" msgid="4906770126345910955">"<xliff:g id="APP_NAME">%1$s</xliff:g> ධාරිතා සංවාදයයි"</string>
-    <string name="volumeui_notification_text" msgid="1826889705095768656">"මුල් තත්ත්වය නැවත ප්‍රතිසාධනය කිරීමට ස්පර්ශ කරන්න."</string>
+    <string name="volumeui_notification_text" msgid="8819536904234337445">"මුල් තත්ත්වය නැවත ප්‍රතිසාධනය කිරීමට තට්ටු කරන්න."</string>
     <string name="managed_profile_foreground_toast" msgid="5421487114739245972">"ඔබ ඔබේ කාර්යාල පැතිකඩ භාවිත කරමින් සිටී"</string>
     <string name="volume_stream_content_description_unmute" msgid="4436631538779230857">"%1$s. නිහඬ කිරීම ඉවත් කිරීමට තට්ටු කරන්න."</string>
     <string name="volume_stream_content_description_vibrate" msgid="1187944970457807498">"%1$s. කම්පනය කිරීමට තට්ටු කරන්න. ප්‍රවේශ්‍යතා සේවා නිහඬ කළ හැකිය."</string>
diff --git a/packages/SystemUI/res/values-sk/strings.xml b/packages/SystemUI/res/values-sk/strings.xml
index 3065307..33c12c2 100644
--- a/packages/SystemUI/res/values-sk/strings.xml
+++ b/packages/SystemUI/res/values-sk/strings.xml
@@ -73,7 +73,7 @@
     <string name="screenshot_saving_title" msgid="8242282144535555697">"Prebieha ukladanie snímky obrazovky..."</string>
     <string name="screenshot_saving_text" msgid="2419718443411738818">"Snímka obrazovky sa ukladá."</string>
     <string name="screenshot_saved_title" msgid="6461865960961414961">"Snímka obrazovky bola zaznamenaná."</string>
-    <string name="screenshot_saved_text" msgid="1152839647677558815">"Snímku obrazovky zobrazíte dotykom."</string>
+    <string name="screenshot_saved_text" msgid="2685605830386712477">"Klepnutím zobrazíte snímku obrazovky."</string>
     <string name="screenshot_failed_title" msgid="705781116746922771">"Snímku obrazovky sa nepodarilo zachytiť."</string>
     <string name="screenshot_failed_to_save_unknown_text" msgid="7887826345701753830">"Pri ukladaní snímky obrazovky sa vyskytol problém."</string>
     <string name="screenshot_failed_to_save_text" msgid="2592658083866306296">"Snímku obrazovky nie je možné vytvoriť z dôvodu nedostatku miesta v úložisku."</string>
@@ -120,8 +120,7 @@
     <string name="accessibility_data_signal_full" msgid="2708384608124519369">"Plný signál dátovej siete."</string>
     <string name="accessibility_wifi_name" msgid="7202151365171148501">"Pripojené k zariadeniu <xliff:g id="WIFI">%s</xliff:g>."</string>
     <string name="accessibility_bluetooth_name" msgid="8441517146585531676">"Pripojené k zariadeniu <xliff:g id="BLUETOOTH">%s</xliff:g>."</string>
-    <!-- no translation found for accessibility_cast_name (4026393061247081201) -->
-    <skip />
+    <string name="accessibility_cast_name" msgid="4026393061247081201">"Pripojené k zariadeniu <xliff:g id="CAST">%s</xliff:g>."</string>
     <string name="accessibility_no_wimax" msgid="4329180129727630368">"Žiadna sieť WiMAX."</string>
     <string name="accessibility_wimax_one_bar" msgid="4170994299011863648">"Jeden stĺpec signálu siete WiMAX."</string>
     <string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"Dva stĺpce signálu siete WiMAX."</string>
@@ -152,17 +151,14 @@
     <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string>
     <string name="accessibility_data_connection_wifi" msgid="2324496756590645221">"Wi-Fi"</string>
     <string name="accessibility_no_sim" msgid="8274017118472455155">"Žiadna SIM karta."</string>
-    <!-- no translation found for accessibility_cell_data (7080312242791850520) -->
-    <skip />
-    <!-- no translation found for accessibility_cell_data_on (4310018593519761767) -->
-    <skip />
+    <string name="accessibility_cell_data" msgid="7080312242791850520">"Mobilné dáta"</string>
+    <string name="accessibility_cell_data_on" msgid="4310018593519761767">"Mobilné dáta sú zapnuté"</string>
     <string name="accessibility_cell_data_off" msgid="8000803571751407635">"Mobilné dáta sú vypnuté"</string>
     <string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"Pripojenie cez Bluetooth."</string>
     <string name="accessibility_airplane_mode" msgid="834748999790763092">"Režim v lietadle."</string>
     <string name="accessibility_no_sims" msgid="3957997018324995781">"Žiadna SIM karta."</string>
     <string name="accessibility_carrier_network_change_mode" msgid="4017301580441304305">"Zmena siete operátora"</string>
-    <!-- no translation found for accessibility_battery_details (7645516654955025422) -->
-    <skip />
+    <string name="accessibility_battery_details" msgid="7645516654955025422">"Otvoriť podrobnosti o batérii"</string>
     <string name="accessibility_battery_level" msgid="7451474187113371965">"Batéria <xliff:g id="NUMBER">%d</xliff:g> percent."</string>
     <!-- String.format failed for translation -->
     <!-- no translation found for accessibility_battery_level_charging (1147587904439319646) -->
@@ -204,13 +200,11 @@
     <string name="accessibility_quick_settings_dnd_priority_on" msgid="1448402297221249355">"Stav Nerušiť je zapnutý, iba prioritné."</string>
     <string name="accessibility_quick_settings_dnd_none_on" msgid="6882582132662613537">"Stav Nerušiť je zapnutý, úplné ticho."</string>
     <string name="accessibility_quick_settings_dnd_alarms_on" msgid="9152834845587554157">"Stav Nerušiť je zapnutý, iba budíky."</string>
-    <!-- no translation found for accessibility_quick_settings_dnd (6607873236717185815) -->
-    <skip />
+    <string name="accessibility_quick_settings_dnd" msgid="6607873236717185815">"Nerušiť"</string>
     <string name="accessibility_quick_settings_dnd_off" msgid="2371832603753738581">"Stav Nerušiť je vypnutý."</string>
     <string name="accessibility_quick_settings_dnd_changed_off" msgid="898107593453022935">"Stav Nerušiť je vypnutý."</string>
     <string name="accessibility_quick_settings_dnd_changed_on" msgid="4483780856613561039">"Stav Nerušiť je zapnutý."</string>
-    <!-- no translation found for accessibility_quick_settings_bluetooth (6341675755803320038) -->
-    <skip />
+    <string name="accessibility_quick_settings_bluetooth" msgid="6341675755803320038">"Bluetooth"</string>
     <string name="accessibility_quick_settings_bluetooth_off" msgid="2133631372372064339">"Rozhranie Bluetooth je vypnuté."</string>
     <string name="accessibility_quick_settings_bluetooth_on" msgid="7681999166216621838">"Rozhranie Bluetooth je zapnuté."</string>
     <string name="accessibility_quick_settings_bluetooth_connecting" msgid="6953242966685343855">"Rozhranie Bluetooth sa pripája."</string>
@@ -276,10 +270,8 @@
     <string name="quick_settings_bluetooth_detail_empty_text" msgid="4910015762433302860">"Nie sú k dispozícii žiadne spárované zariadenia"</string>
     <string name="quick_settings_brightness_label" msgid="6968372297018755815">"Jas"</string>
     <string name="quick_settings_rotation_unlocked_label" msgid="7305323031808150099">"Automatické otáčanie"</string>
-    <!-- no translation found for accessibility_quick_settings_rotation (4231661040698488779) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_rotation_value (1428962304214992318) -->
-    <skip />
+    <string name="accessibility_quick_settings_rotation" msgid="4231661040698488779">"Automatické otáčanie obrazovky"</string>
+    <string name="accessibility_quick_settings_rotation_value" msgid="1428962304214992318">"Nastaviť režim <xliff:g id="ID_1">%s</xliff:g>"</string>
     <string name="quick_settings_rotation_locked_label" msgid="6359205706154282377">"Otáčanie je uzamknuté"</string>
     <string name="quick_settings_rotation_locked_portrait_label" msgid="5102691921442135053">"Na výšku"</string>
     <string name="quick_settings_rotation_locked_landscape_label" msgid="8553157770061178719">"Na šírku"</string>
@@ -298,8 +290,7 @@
     <string name="quick_settings_wifi_not_connected" msgid="7171904845345573431">"Nepripojené"</string>
     <string name="quick_settings_wifi_no_network" msgid="2221993077220856376">"Žiadna sieť"</string>
     <string name="quick_settings_wifi_off_label" msgid="7558778100843885864">"Sieť Wi-Fi je vypnutá"</string>
-    <!-- no translation found for quick_settings_wifi_on_label (7607810331387031235) -->
-    <skip />
+    <string name="quick_settings_wifi_on_label" msgid="7607810331387031235">"Wi-Fi je zapnuté"</string>
     <string name="quick_settings_wifi_detail_empty_text" msgid="269990350383909226">"K dispozícii nie sú žiadne siete Wi-Fi"</string>
     <string name="quick_settings_cast_title" msgid="7709016546426454729">"Prenos"</string>
     <string name="quick_settings_casting" msgid="6601710681033353316">"Prenáša sa"</string>
@@ -353,7 +344,7 @@
     <string name="zen_silence_introduction" msgid="3137882381093271568">"Zablokujú sa tým VŠETKY zvuky a vibrácie vrátane zvukov budíkov, hudby, videí a hier."</string>
     <string name="keyguard_more_overflow_text" msgid="9195222469041601365">"+<xliff:g id="NUMBER_OF_NOTIFICATIONS">%d</xliff:g>"</string>
     <string name="speed_bump_explanation" msgid="1288875699658819755">"Menej naliehavé upozornenia sa nachádzajú nižšie"</string>
-    <string name="notification_tap_again" msgid="8524949573675922138">"Otvorte opätovným klepnutím"</string>
+    <string name="notification_tap_again" msgid="7590196980943943842">"Upozornenie otvoríte opätovným klepnutím"</string>
     <string name="keyguard_unlock" msgid="8043466894212841998">"Odomknete prejdením prstom nahor"</string>
     <string name="phone_hint" msgid="4872890986869209950">"Telefón otvoríte prejdením prstom od ikony"</string>
     <string name="voice_hint" msgid="8939888732119726665">"Hlasového asistenta otvoríte prejdením prstom od ikony"</string>
@@ -431,7 +422,7 @@
     <string name="accessibility_volume_expand" msgid="5946812790999244205">"Rozbaliť"</string>
     <string name="accessibility_volume_collapse" msgid="3609549593031810875">"Zbaliť"</string>
     <string name="screen_pinning_title" msgid="3273740381976175811">"Obrazovka je pripnutá"</string>
-    <string name="screen_pinning_description" msgid="3577937698406151604">"Obsah bude pripnutý v zobrazení, dokým ho neuvoľníte. Uvoľníte ho stlačením a podržaním tlačidla Späť."</string>
+    <string name="screen_pinning_description" msgid="7238941806855968768">"Obsah bude pripnutý v zobrazení, dokým ho neuvoľníte. Uvoľníte ho stlačením a podržaním tlačidla Späť."</string>
     <string name="screen_pinning_positive" msgid="3783985798366751226">"Dobre"</string>
     <string name="screen_pinning_negative" msgid="3741602308343880268">"Nie, vďaka"</string>
     <string name="quick_settings_reset_confirmation_title" msgid="748792586749897883">"Skryť <xliff:g id="TILE_LABEL">%1$s</xliff:g>?"</string>
@@ -441,15 +432,13 @@
     <string name="volumeui_prompt_allow" msgid="7954396902482228786">"Povoliť"</string>
     <string name="volumeui_prompt_deny" msgid="5720663643411696731">"Odmietnuť"</string>
     <string name="volumeui_notification_title" msgid="4906770126345910955">"<xliff:g id="APP_NAME">%1$s</xliff:g> je dialóg hlasitosti"</string>
-    <string name="volumeui_notification_text" msgid="1826889705095768656">"Klepnutím obnovíte originál."</string>
+    <string name="volumeui_notification_text" msgid="8819536904234337445">"Klepnutím obnovíte pôvodnú verziu."</string>
     <string name="managed_profile_foreground_toast" msgid="5421487114739245972">"Používate svoj pracovný profil."</string>
     <string name="volume_stream_content_description_unmute" msgid="4436631538779230857">"%1$s. Klepnutím zapnite zvuk."</string>
     <string name="volume_stream_content_description_vibrate" msgid="1187944970457807498">"%1$s. Klepnutím aktivujte režim vibrovania. Služby dostupnosti je možné stlmiť."</string>
     <string name="volume_stream_content_description_mute" msgid="3625049841390467354">"%1$s. Klepnutím vypnite zvuk. Služby dostupnosti je možné stlmiť."</string>
-    <!-- no translation found for volume_dialog_accessibility_shown_message (1834631467074259998) -->
-    <skip />
-    <!-- no translation found for volume_dialog_accessibility_dismissed_message (51543526013711399) -->
-    <skip />
+    <string name="volume_dialog_accessibility_shown_message" msgid="1834631467074259998">"Zobrazujú sa ovládacie prvky hlasitosti zariadenia %s. Prejdením prstom nahor to odmietnete."</string>
+    <string name="volume_dialog_accessibility_dismissed_message" msgid="51543526013711399">"Ovládacie prvky hlasitosti sú skryté"</string>
     <string name="system_ui_tuner" msgid="708224127392452018">"Tuner používateľského rozhrania systému"</string>
     <string name="show_battery_percentage" msgid="5444136600512968798">"Zobraziť percentá vloženej batérie"</string>
     <string name="show_battery_percentage_summary" msgid="3215025775576786037">"Percentuálne zobrazenie nabitia batérie vnútri ikony v stavovom riadku, keď neprebieha nabíjanie"</string>
@@ -645,27 +634,17 @@
     <string name="accessibility_qs_edit_tile_removed" msgid="8584304916627913440">"Dlaždica <xliff:g id="TILE_NAME">%1$s</xliff:g> bola odstránená"</string>
     <string name="accessibility_qs_edit_tile_moved" msgid="4343693412689365038">"Dlaždica <xliff:g id="TILE_NAME">%1$s</xliff:g> bola presunutá na pozíciu <xliff:g id="POSITION">%2$d</xliff:g>"</string>
     <string name="accessibility_desc_quick_settings_edit" msgid="8073587401747016103">"Editor rýchlych nastavení"</string>
-    <!-- no translation found for accessibility_desc_notification_icon (8352414185263916335) -->
-    <skip />
+    <string name="accessibility_desc_notification_icon" msgid="8352414185263916335">"Upozornenie <xliff:g id="ID_1">%1$s</xliff:g>: <xliff:g id="ID_2">%2$s</xliff:g>"</string>
     <string name="dock_forced_resizable" msgid="5914261505436217520">"Aplikácia nemusí fungovať so zapnutou rozdelenou obrazovkou."</string>
     <string name="dock_non_resizeble_failed_to_dock_text" msgid="3871617304250207291">"Aplikácia nepodporuje rozdelenú obrazovku."</string>
-    <!-- no translation found for accessibility_quick_settings_settings (6132460890024942157) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_expand (2375165227880477530) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_collapse (1792625797142648105) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_alarm_set (1863000242431528676) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_user (1567445362870421770) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_no_internet (31890692343084075) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_open_details (4230931801728005194) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_open_settings (7806613775728380737) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_edit (7839992848995240393) -->
-    <skip />
+    <string name="accessibility_quick_settings_settings" msgid="6132460890024942157">"Otvoriť nastavenia"</string>
+    <string name="accessibility_quick_settings_expand" msgid="2375165227880477530">"Otvoriť rýchle nastavenia"</string>
+    <string name="accessibility_quick_settings_collapse" msgid="1792625797142648105">"Zavrieť rýchle nastavenia"</string>
+    <string name="accessibility_quick_settings_alarm_set" msgid="1863000242431528676">"Budík bol nastavený."</string>
+    <string name="accessibility_quick_settings_user" msgid="1567445362870421770">"Prihlásený/-á ako <xliff:g id="ID_1">%s</xliff:g>"</string>
+    <string name="accessibility_quick_settings_no_internet" msgid="31890692343084075">"Žiadny internet"</string>
+    <string name="accessibility_quick_settings_open_details" msgid="4230931801728005194">"Otvoriť podrobnosti"</string>
+    <string name="accessibility_quick_settings_open_settings" msgid="7806613775728380737">"Otvoriť nastavenia <xliff:g id="ID_1">%s</xliff:g>"</string>
+    <string name="accessibility_quick_settings_edit" msgid="7839992848995240393">"Upraviť poradie nastavení"</string>
     <string name="accessibility_quick_settings_page" msgid="5032979051755200721">"Strana <xliff:g id="ID_1">%1$d</xliff:g> z <xliff:g id="ID_2">%2$d</xliff:g>"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-sk/strings_tv.xml b/packages/SystemUI/res/values-sk/strings_tv.xml
index fb09d6e..f4e781a 100644
--- a/packages/SystemUI/res/values-sk/strings_tv.xml
+++ b/packages/SystemUI/res/values-sk/strings_tv.xml
@@ -24,10 +24,8 @@
     <string name="pip_play" msgid="674145557658227044">"Prehrať"</string>
     <string name="pip_pause" msgid="8412075640017218862">"Pozastaviť"</string>
     <string name="pip_hold_home" msgid="340086535668778109">"Režim PIP ovládajte pomocou tlačidla "<b>"PLOCHA"</b></string>
-    <!-- no translation found for pip_onboarding_title (7850436557670253991) -->
-    <skip />
-    <!-- no translation found for pip_onboarding_description (4028124563309465267) -->
-    <skip />
+    <string name="pip_onboarding_title" msgid="7850436557670253991">"Obraz v obraze"</string>
+    <string name="pip_onboarding_description" msgid="4028124563309465267">"Táto možnosť podrží video v obraze, dokým prehráte ďalšie. Stlačením a podržaním tlačidla "<b>"HOME"</b>" ho môžete ovládať."</string>
     <string name="pip_onboarding_button" msgid="3957426748484904611">"Dobre"</string>
     <string name="recents_tv_dismiss" msgid="3555093879593377731">"Odmietnuť"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-sl/strings.xml b/packages/SystemUI/res/values-sl/strings.xml
index a1547ba..afd2334 100644
--- a/packages/SystemUI/res/values-sl/strings.xml
+++ b/packages/SystemUI/res/values-sl/strings.xml
@@ -73,7 +73,7 @@
     <string name="screenshot_saving_title" msgid="8242282144535555697">"Shranjevanje posnetka zaslona ..."</string>
     <string name="screenshot_saving_text" msgid="2419718443411738818">"Shranjevanje posnetka zaslona."</string>
     <string name="screenshot_saved_title" msgid="6461865960961414961">"Posnetek zaslona je shranjen."</string>
-    <string name="screenshot_saved_text" msgid="1152839647677558815">"Dotaknite se, če si želite ogledati posnetek zaslona."</string>
+    <string name="screenshot_saved_text" msgid="2685605830386712477">"Dotaknite se, če si želite ogledati posnetek zaslona."</string>
     <string name="screenshot_failed_title" msgid="705781116746922771">"Posnetka zaslona ni bilo mogoče shraniti."</string>
     <string name="screenshot_failed_to_save_unknown_text" msgid="7887826345701753830">"Pri shranjevanju posnetka zaslona je prišlo do težave."</string>
     <string name="screenshot_failed_to_save_text" msgid="2592658083866306296">"Shranjevanje posnetka zaslona ni mogoče zaradi omejenega prostora za shranjevanje."</string>
@@ -120,8 +120,7 @@
     <string name="accessibility_data_signal_full" msgid="2708384608124519369">"Podatkovni signal poln."</string>
     <string name="accessibility_wifi_name" msgid="7202151365171148501">"Povezava vzpostavljena z: <xliff:g id="WIFI">%s</xliff:g>."</string>
     <string name="accessibility_bluetooth_name" msgid="8441517146585531676">"Povezava vzpostavljena z: <xliff:g id="BLUETOOTH">%s</xliff:g>."</string>
-    <!-- no translation found for accessibility_cast_name (4026393061247081201) -->
-    <skip />
+    <string name="accessibility_cast_name" msgid="4026393061247081201">"Vzpostavljena povezava: <xliff:g id="CAST">%s</xliff:g>."</string>
     <string name="accessibility_no_wimax" msgid="4329180129727630368">"Ni signala WiMAX."</string>
     <string name="accessibility_wimax_one_bar" msgid="4170994299011863648">"Signal WiMAX: ena črtica."</string>
     <string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"Signal WiMAX: dve črtici."</string>
@@ -152,17 +151,14 @@
     <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string>
     <string name="accessibility_data_connection_wifi" msgid="2324496756590645221">"Wi-Fi"</string>
     <string name="accessibility_no_sim" msgid="8274017118472455155">"Ni kartice SIM."</string>
-    <!-- no translation found for accessibility_cell_data (7080312242791850520) -->
-    <skip />
-    <!-- no translation found for accessibility_cell_data_on (4310018593519761767) -->
-    <skip />
+    <string name="accessibility_cell_data" msgid="7080312242791850520">"Prenos podatkov v mobilnih omrežjih"</string>
+    <string name="accessibility_cell_data_on" msgid="4310018593519761767">"Prenos podatkov v mobilnih omrežjih je vklopljen"</string>
     <string name="accessibility_cell_data_off" msgid="8000803571751407635">"Prenos podatkov v mobilnih omrežjih je izklopljen"</string>
     <string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"Internet prek Bluetootha."</string>
     <string name="accessibility_airplane_mode" msgid="834748999790763092">"Način za letalo."</string>
     <string name="accessibility_no_sims" msgid="3957997018324995781">"Ni kartice SIM."</string>
     <string name="accessibility_carrier_network_change_mode" msgid="4017301580441304305">"Spreminjanje omrežja operaterja."</string>
-    <!-- no translation found for accessibility_battery_details (7645516654955025422) -->
-    <skip />
+    <string name="accessibility_battery_details" msgid="7645516654955025422">"Odpiranje podrobnosti o akumulatorju"</string>
     <string name="accessibility_battery_level" msgid="7451474187113371965">"Baterija <xliff:g id="NUMBER">%d</xliff:g> odstotkov."</string>
     <!-- String.format failed for translation -->
     <!-- no translation found for accessibility_battery_level_charging (1147587904439319646) -->
@@ -204,13 +200,11 @@
     <string name="accessibility_quick_settings_dnd_priority_on" msgid="1448402297221249355">"Način »ne moti« je vklopljen, samo prednostno."</string>
     <string name="accessibility_quick_settings_dnd_none_on" msgid="6882582132662613537">"Način »ne moti« je vklopljen, popolna tišina."</string>
     <string name="accessibility_quick_settings_dnd_alarms_on" msgid="9152834845587554157">"Način »ne moti« je vklopljen, samo alarmi."</string>
-    <!-- no translation found for accessibility_quick_settings_dnd (6607873236717185815) -->
-    <skip />
+    <string name="accessibility_quick_settings_dnd" msgid="6607873236717185815">"Ne moti."</string>
     <string name="accessibility_quick_settings_dnd_off" msgid="2371832603753738581">"Način »ne moti« je izklopljen."</string>
     <string name="accessibility_quick_settings_dnd_changed_off" msgid="898107593453022935">"Način »ne moti« je izklopljen."</string>
     <string name="accessibility_quick_settings_dnd_changed_on" msgid="4483780856613561039">"Način »ne moti« je vklopljen."</string>
-    <!-- no translation found for accessibility_quick_settings_bluetooth (6341675755803320038) -->
-    <skip />
+    <string name="accessibility_quick_settings_bluetooth" msgid="6341675755803320038">"Bluetooth"</string>
     <string name="accessibility_quick_settings_bluetooth_off" msgid="2133631372372064339">"Bluetooth je izklopljen."</string>
     <string name="accessibility_quick_settings_bluetooth_on" msgid="7681999166216621838">"Bluetooth je vklopljen."</string>
     <string name="accessibility_quick_settings_bluetooth_connecting" msgid="6953242966685343855">"Povezava Bluetooth se vzpostavlja."</string>
@@ -276,10 +270,8 @@
     <string name="quick_settings_bluetooth_detail_empty_text" msgid="4910015762433302860">"Na voljo ni nobene seznanjene naprave"</string>
     <string name="quick_settings_brightness_label" msgid="6968372297018755815">"Svetlost"</string>
     <string name="quick_settings_rotation_unlocked_label" msgid="7305323031808150099">"Samodejno sukanje"</string>
-    <!-- no translation found for accessibility_quick_settings_rotation (4231661040698488779) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_rotation_value (1428962304214992318) -->
-    <skip />
+    <string name="accessibility_quick_settings_rotation" msgid="4231661040698488779">"Samodejno sukanje zaslona"</string>
+    <string name="accessibility_quick_settings_rotation_value" msgid="1428962304214992318">"Nastavitev na: <xliff:g id="ID_1">%s</xliff:g>"</string>
     <string name="quick_settings_rotation_locked_label" msgid="6359205706154282377">"Sukanje je zaklenjeno"</string>
     <string name="quick_settings_rotation_locked_portrait_label" msgid="5102691921442135053">"Pokončno"</string>
     <string name="quick_settings_rotation_locked_landscape_label" msgid="8553157770061178719">"Ležeče"</string>
@@ -298,8 +290,7 @@
     <string name="quick_settings_wifi_not_connected" msgid="7171904845345573431">"Povezava ni vzpostavljena"</string>
     <string name="quick_settings_wifi_no_network" msgid="2221993077220856376">"Ni omrežja"</string>
     <string name="quick_settings_wifi_off_label" msgid="7558778100843885864">"Wi-Fi izklopljen"</string>
-    <!-- no translation found for quick_settings_wifi_on_label (7607810331387031235) -->
-    <skip />
+    <string name="quick_settings_wifi_on_label" msgid="7607810331387031235">"Wi-Fi je vklopljen."</string>
     <string name="quick_settings_wifi_detail_empty_text" msgid="269990350383909226">"Na voljo ni nobeno omrežje Wi-Fi"</string>
     <string name="quick_settings_cast_title" msgid="7709016546426454729">"Predvajanje"</string>
     <string name="quick_settings_casting" msgid="6601710681033353316">"Predvajanje"</string>
@@ -353,7 +344,7 @@
     <string name="zen_silence_introduction" msgid="3137882381093271568">"S tem so blokirani VSI zvoki in vibriranje – tudi od alarmov, glasbe, videoposnetkov in iger."</string>
     <string name="keyguard_more_overflow_text" msgid="9195222469041601365">"+<xliff:g id="NUMBER_OF_NOTIFICATIONS">%d</xliff:g>"</string>
     <string name="speed_bump_explanation" msgid="1288875699658819755">"Manj nujna obvestila spodaj"</string>
-    <string name="notification_tap_again" msgid="8524949573675922138">"Dotaknite se znova, če želite odpreti"</string>
+    <string name="notification_tap_again" msgid="7590196980943943842">"Znova se dotaknite, da odprete"</string>
     <string name="keyguard_unlock" msgid="8043466894212841998">"Povlecite, da odklenete"</string>
     <string name="phone_hint" msgid="4872890986869209950">"Povlecite z ikone za telefon"</string>
     <string name="voice_hint" msgid="8939888732119726665">"Povlecite z ikone za glasovnega pomočnika"</string>
@@ -431,7 +422,7 @@
     <string name="accessibility_volume_expand" msgid="5946812790999244205">"Razširi"</string>
     <string name="accessibility_volume_collapse" msgid="3609549593031810875">"Strni"</string>
     <string name="screen_pinning_title" msgid="3273740381976175811">"Zaslon je pripet"</string>
-    <string name="screen_pinning_description" msgid="3577937698406151604">"S tem ostane zaslon v pogledu, dokler ga ne odpnete. Pridržite tipko za nazaj, če ga želite odpeti."</string>
+    <string name="screen_pinning_description" msgid="7238941806855968768">"S tem ostane zaslon v pogledu, dokler ga ne odpnete. Pridržite tipko za nazaj, če ga želite odpeti."</string>
     <string name="screen_pinning_positive" msgid="3783985798366751226">"Razumem"</string>
     <string name="screen_pinning_negative" msgid="3741602308343880268">"Ne, hvala"</string>
     <string name="quick_settings_reset_confirmation_title" msgid="748792586749897883">"Želite skriti <xliff:g id="TILE_LABEL">%1$s</xliff:g>?"</string>
@@ -441,15 +432,13 @@
     <string name="volumeui_prompt_allow" msgid="7954396902482228786">"Dovoli"</string>
     <string name="volumeui_prompt_deny" msgid="5720663643411696731">"Zavrni"</string>
     <string name="volumeui_notification_title" msgid="4906770126345910955">"<xliff:g id="APP_NAME">%1$s</xliff:g> je pogovorno okno glede prostornine"</string>
-    <string name="volumeui_notification_text" msgid="1826889705095768656">"Dotaknite se, če želite obnoviti izvirnik."</string>
+    <string name="volumeui_notification_text" msgid="8819536904234337445">"Dotaknite se, če želite obnoviti prvotno stanje."</string>
     <string name="managed_profile_foreground_toast" msgid="5421487114739245972">"Uporabljate delovni profil"</string>
     <string name="volume_stream_content_description_unmute" msgid="4436631538779230857">"%1$s. Dotaknite se, če želite vklopiti zvok."</string>
     <string name="volume_stream_content_description_vibrate" msgid="1187944970457807498">"%1$s. Dotaknite se, če želite nastaviti vibriranje. V storitvah za ljudi s posebnimi potrebami bo morda izklopljen zvok."</string>
     <string name="volume_stream_content_description_mute" msgid="3625049841390467354">"%1$s. Dotaknite se, če želite izklopiti zvok. V storitvah za ljudi s posebnimi potrebami bo morda izklopljen zvok."</string>
-    <!-- no translation found for volume_dialog_accessibility_shown_message (1834631467074259998) -->
-    <skip />
-    <!-- no translation found for volume_dialog_accessibility_dismissed_message (51543526013711399) -->
-    <skip />
+    <string name="volume_dialog_accessibility_shown_message" msgid="1834631467074259998">"Prikazani so ti kontrolniki za glasnost: %s. Povlecite navzgor za opustitev."</string>
+    <string name="volume_dialog_accessibility_dismissed_message" msgid="51543526013711399">"Kontrolniki za glasnost so skriti."</string>
     <string name="system_ui_tuner" msgid="708224127392452018">"Uglaševalnik uporabniškega vmesnika sistema"</string>
     <string name="show_battery_percentage" msgid="5444136600512968798">"Prikaži odstotek napolnjenosti vgraj. akumulatorja"</string>
     <string name="show_battery_percentage_summary" msgid="3215025775576786037">"Prikaz odstotka napolnjenosti akumulatorja znotraj ikone v vrstici stanja, ko se ne polni"</string>
@@ -645,27 +634,17 @@
     <string name="accessibility_qs_edit_tile_removed" msgid="8584304916627913440">"<xliff:g id="TILE_NAME">%1$s</xliff:g> je odstranjeno"</string>
     <string name="accessibility_qs_edit_tile_moved" msgid="4343693412689365038">"<xliff:g id="TILE_NAME">%1$s</xliff:g> premaknjeno na položaj <xliff:g id="POSITION">%2$d</xliff:g>"</string>
     <string name="accessibility_desc_quick_settings_edit" msgid="8073587401747016103">"Urejevalnik hitrih nastavitev."</string>
-    <!-- no translation found for accessibility_desc_notification_icon (8352414185263916335) -->
-    <skip />
+    <string name="accessibility_desc_notification_icon" msgid="8352414185263916335">"Obvestilo za <xliff:g id="ID_1">%1$s</xliff:g>: <xliff:g id="ID_2">%2$s</xliff:g>"</string>
     <string name="dock_forced_resizable" msgid="5914261505436217520">"Aplikacija morda ne deluje v načinu razdeljenega zaslona."</string>
     <string name="dock_non_resizeble_failed_to_dock_text" msgid="3871617304250207291">"Aplikacija ne podpira načina razdeljenega zaslona."</string>
-    <!-- no translation found for accessibility_quick_settings_settings (6132460890024942157) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_expand (2375165227880477530) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_collapse (1792625797142648105) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_alarm_set (1863000242431528676) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_user (1567445362870421770) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_no_internet (31890692343084075) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_open_details (4230931801728005194) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_open_settings (7806613775728380737) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_edit (7839992848995240393) -->
-    <skip />
+    <string name="accessibility_quick_settings_settings" msgid="6132460890024942157">"Odpri nastavitve."</string>
+    <string name="accessibility_quick_settings_expand" msgid="2375165227880477530">"Odpri hitre nastavitve."</string>
+    <string name="accessibility_quick_settings_collapse" msgid="1792625797142648105">"Zapri hitre nastavitve."</string>
+    <string name="accessibility_quick_settings_alarm_set" msgid="1863000242431528676">"Alarm je nastavljen."</string>
+    <string name="accessibility_quick_settings_user" msgid="1567445362870421770">"Prijavljeni ste kot <xliff:g id="ID_1">%s</xliff:g>."</string>
+    <string name="accessibility_quick_settings_no_internet" msgid="31890692343084075">"Brez interneta,"</string>
+    <string name="accessibility_quick_settings_open_details" msgid="4230931801728005194">"Odpri podrobnosti."</string>
+    <string name="accessibility_quick_settings_open_settings" msgid="7806613775728380737">"Odpri nastavitve za <xliff:g id="ID_1">%s</xliff:g>."</string>
+    <string name="accessibility_quick_settings_edit" msgid="7839992848995240393">"Uredi vrstni red nastavitev."</string>
     <string name="accessibility_quick_settings_page" msgid="5032979051755200721">"<xliff:g id="ID_1">%1$d</xliff:g>. stran od <xliff:g id="ID_2">%2$d</xliff:g>"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-sl/strings_tv.xml b/packages/SystemUI/res/values-sl/strings_tv.xml
index 4336415..b29253f 100644
--- a/packages/SystemUI/res/values-sl/strings_tv.xml
+++ b/packages/SystemUI/res/values-sl/strings_tv.xml
@@ -24,10 +24,8 @@
     <string name="pip_play" msgid="674145557658227044">"Predvajanje"</string>
     <string name="pip_pause" msgid="8412075640017218862">"Zaustavitev"</string>
     <string name="pip_hold_home" msgid="340086535668778109">"Pridr. "<b>"HOME"</b>" za up. n. PIP"</string>
-    <!-- no translation found for pip_onboarding_title (7850436557670253991) -->
-    <skip />
-    <!-- no translation found for pip_onboarding_description (4028124563309465267) -->
-    <skip />
+    <string name="pip_onboarding_title" msgid="7850436557670253991">"Slika v sliki"</string>
+    <string name="pip_onboarding_description" msgid="4028124563309465267">"S tem videoposnetek ostane v pogledu, dokler ne predvajate drugega. Pridržite tipko "<b>"HOME"</b>", če ga želite upravljati."</string>
     <string name="pip_onboarding_button" msgid="3957426748484904611">"Razumem"</string>
     <string name="recents_tv_dismiss" msgid="3555093879593377731">"Opusti"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-sq-rAL/strings.xml b/packages/SystemUI/res/values-sq-rAL/strings.xml
index 1f50ef0..14f840e 100644
--- a/packages/SystemUI/res/values-sq-rAL/strings.xml
+++ b/packages/SystemUI/res/values-sq-rAL/strings.xml
@@ -71,7 +71,7 @@
     <string name="screenshot_saving_title" msgid="8242282144535555697">"Po ruan pamjen e ekranit…"</string>
     <string name="screenshot_saving_text" msgid="2419718443411738818">"Pamja e ekranit po ruhet."</string>
     <string name="screenshot_saved_title" msgid="6461865960961414961">"Pamja e ekranit u kap."</string>
-    <string name="screenshot_saved_text" msgid="1152839647677558815">"Prek për të parë pamjen e ekranit tënd."</string>
+    <string name="screenshot_saved_text" msgid="2685605830386712477">"Trokit për të parë pamjen e ekranit."</string>
     <string name="screenshot_failed_title" msgid="705781116746922771">"Nuk mundi të kapte pamjen e ekranit."</string>
     <string name="screenshot_failed_to_save_unknown_text" msgid="7887826345701753830">"U has problem gjatë ruajtjes së pamjes së ekranit."</string>
     <string name="screenshot_failed_to_save_text" msgid="2592658083866306296">"Pamja e ekranit nuk mund të ruhet për shkak të hapësirës ruajtëse të kufizuar."</string>
@@ -118,8 +118,7 @@
     <string name="accessibility_data_signal_full" msgid="2708384608124519369">"Sinjali i të dhënave është i plotë."</string>
     <string name="accessibility_wifi_name" msgid="7202151365171148501">"Lidhur me <xliff:g id="WIFI">%s</xliff:g>."</string>
     <string name="accessibility_bluetooth_name" msgid="8441517146585531676">"Lidhur me <xliff:g id="BLUETOOTH">%s</xliff:g>"</string>
-    <!-- no translation found for accessibility_cast_name (4026393061247081201) -->
-    <skip />
+    <string name="accessibility_cast_name" msgid="4026393061247081201">"Është lidhur me <xliff:g id="CAST">%s</xliff:g>."</string>
     <string name="accessibility_no_wimax" msgid="4329180129727630368">"Nuk ka WiMAX."</string>
     <string name="accessibility_wimax_one_bar" msgid="4170994299011863648">"WiMAX ka një vijë"</string>
     <string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"WiMAX ka dy vija."</string>
@@ -150,17 +149,14 @@
     <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string>
     <string name="accessibility_data_connection_wifi" msgid="2324496756590645221">"Wi-Fi"</string>
     <string name="accessibility_no_sim" msgid="8274017118472455155">"Nuk ka kartë SIM."</string>
-    <!-- no translation found for accessibility_cell_data (7080312242791850520) -->
-    <skip />
-    <!-- no translation found for accessibility_cell_data_on (4310018593519761767) -->
-    <skip />
+    <string name="accessibility_cell_data" msgid="7080312242791850520">"Të dhënat celulare"</string>
+    <string name="accessibility_cell_data_on" msgid="4310018593519761767">"Të dhënat celulare aktive"</string>
     <string name="accessibility_cell_data_off" msgid="8000803571751407635">"Të dhënat celulare joaktive"</string>
     <string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"Po lidhet me \"bluetooth\"."</string>
     <string name="accessibility_airplane_mode" msgid="834748999790763092">"modaliteti i aeroplanit"</string>
     <string name="accessibility_no_sims" msgid="3957997018324995781">"Nuk ka kartë SIM."</string>
     <string name="accessibility_carrier_network_change_mode" msgid="4017301580441304305">"Rrjeti i operatorit celular po ndryshohet."</string>
-    <!-- no translation found for accessibility_battery_details (7645516654955025422) -->
-    <skip />
+    <string name="accessibility_battery_details" msgid="7645516654955025422">"Hap detajet e baterisë"</string>
     <string name="accessibility_battery_level" msgid="7451474187113371965">"Bateria ka edhe <xliff:g id="NUMBER">%d</xliff:g> për qind."</string>
     <string name="accessibility_battery_level_charging" msgid="1147587904439319646">"Bateria po ngarkohet, <xliff:g id="BATTERY_PERCENTAGE">%d</xliff:g> për qind."</string>
     <string name="accessibility_settings_button" msgid="799583911231893380">"Cilësimet e sistemit."</string>
@@ -200,13 +196,11 @@
     <string name="accessibility_quick_settings_dnd_priority_on" msgid="1448402297221249355">"\"Mos shqetëso\" është i aktivizuar, vetëm me prioritet."</string>
     <string name="accessibility_quick_settings_dnd_none_on" msgid="6882582132662613537">"\"Mos shqetëso\" është aktiv, heshtje e plotë."</string>
     <string name="accessibility_quick_settings_dnd_alarms_on" msgid="9152834845587554157">"\"Mos shqetëso\" është i aktivizuar, vetëm alarmet."</string>
-    <!-- no translation found for accessibility_quick_settings_dnd (6607873236717185815) -->
-    <skip />
+    <string name="accessibility_quick_settings_dnd" msgid="6607873236717185815">"Mos shqetëso."</string>
     <string name="accessibility_quick_settings_dnd_off" msgid="2371832603753738581">"\"Mos shqetëso\" është i çaktivizuar."</string>
     <string name="accessibility_quick_settings_dnd_changed_off" msgid="898107593453022935">"\"Mos shqetëso\" është i çaktivizuar."</string>
     <string name="accessibility_quick_settings_dnd_changed_on" msgid="4483780856613561039">"\"Mos shqetëso\" është i aktivizuar."</string>
-    <!-- no translation found for accessibility_quick_settings_bluetooth (6341675755803320038) -->
-    <skip />
+    <string name="accessibility_quick_settings_bluetooth" msgid="6341675755803320038">"Bluetooth-i."</string>
     <string name="accessibility_quick_settings_bluetooth_off" msgid="2133631372372064339">"\"Bluetooth-i\" është i çaktivizuar."</string>
     <string name="accessibility_quick_settings_bluetooth_on" msgid="7681999166216621838">"\"Bluetooth-i\" është i aktivizuar."</string>
     <string name="accessibility_quick_settings_bluetooth_connecting" msgid="6953242966685343855">"\"Bluetooth-i\" po lidhet."</string>
@@ -272,10 +266,8 @@
     <string name="quick_settings_bluetooth_detail_empty_text" msgid="4910015762433302860">"Nuk ofrohet për përdorim asnjë pajisje e çiftuar"</string>
     <string name="quick_settings_brightness_label" msgid="6968372297018755815">"Ndriçimi"</string>
     <string name="quick_settings_rotation_unlocked_label" msgid="7305323031808150099">"Rrotullim automatik"</string>
-    <!-- no translation found for accessibility_quick_settings_rotation (4231661040698488779) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_rotation_value (1428962304214992318) -->
-    <skip />
+    <string name="accessibility_quick_settings_rotation" msgid="4231661040698488779">"Ekran me rrotullim automatik"</string>
+    <string name="accessibility_quick_settings_rotation_value" msgid="1428962304214992318">"Vendos në <xliff:g id="ID_1">%s</xliff:g>"</string>
     <string name="quick_settings_rotation_locked_label" msgid="6359205706154282377">"rrotullimi është i kyçur"</string>
     <string name="quick_settings_rotation_locked_portrait_label" msgid="5102691921442135053">"Vertikalisht"</string>
     <string name="quick_settings_rotation_locked_landscape_label" msgid="8553157770061178719">"Horizontalisht"</string>
@@ -294,8 +286,7 @@
     <string name="quick_settings_wifi_not_connected" msgid="7171904845345573431">"Nuk është i lidhur"</string>
     <string name="quick_settings_wifi_no_network" msgid="2221993077220856376">"Nuk ka rrjet"</string>
     <string name="quick_settings_wifi_off_label" msgid="7558778100843885864">"Wi-Fi është i çaktivizuar"</string>
-    <!-- no translation found for quick_settings_wifi_on_label (7607810331387031235) -->
-    <skip />
+    <string name="quick_settings_wifi_on_label" msgid="7607810331387031235">"Wi-Fi i aktivizuar"</string>
     <string name="quick_settings_wifi_detail_empty_text" msgid="269990350383909226">"Nuk ka rrjete Wi-Fi të disponueshme"</string>
     <string name="quick_settings_cast_title" msgid="7709016546426454729">"Transmeto"</string>
     <string name="quick_settings_casting" msgid="6601710681033353316">"Po transmeton"</string>
@@ -349,7 +340,8 @@
     <string name="zen_silence_introduction" msgid="3137882381093271568">"Kjo bllokon TË GJITHË tingujt dhe dridhjet, duke përfshirë edhe nga alarmet, muzika, videot dhe lojërat."</string>
     <string name="keyguard_more_overflow_text" msgid="9195222469041601365">"+<xliff:g id="NUMBER_OF_NOTIFICATIONS">%d</xliff:g>"</string>
     <string name="speed_bump_explanation" msgid="1288875699658819755">"Njoftimet më pak urgjente, më poshtë!"</string>
-    <string name="notification_tap_again" msgid="8524949573675922138">"Prek sërish për ta hapur"</string>
+    <!-- no translation found for notification_tap_again (7590196980943943842) -->
+    <skip />
     <string name="keyguard_unlock" msgid="8043466894212841998">"Rrëshqit për të shkyçur"</string>
     <string name="phone_hint" msgid="4872890986869209950">"Rrëshqit për të hapur telefonin"</string>
     <string name="voice_hint" msgid="8939888732119726665">"Rrëshqit për të hapur ndihmën zanore"</string>
@@ -427,7 +419,7 @@
     <string name="accessibility_volume_expand" msgid="5946812790999244205">"Zgjeroje"</string>
     <string name="accessibility_volume_collapse" msgid="3609549593031810875">"Mbylle"</string>
     <string name="screen_pinning_title" msgid="3273740381976175811">"Ekrani u gozhdua"</string>
-    <string name="screen_pinning_description" msgid="3577937698406151604">"Kjo e ruan në pamje deri sa ta heqësh nga gozhdimi. Prek dhe mbaj të shtypur \"Prapa\" për ta hequr nga gozhdimi."</string>
+    <string name="screen_pinning_description" msgid="7238941806855968768">"Kjo e ruan në pamje deri sa ta heqësh nga gozhdimi. Prek dhe mbaj të shtypur \"Prapa\" për ta hequr nga gozhdimi."</string>
     <string name="screen_pinning_positive" msgid="3783985798366751226">"E kuptova!"</string>
     <string name="screen_pinning_negative" msgid="3741602308343880268">"Jo, faleminderit!"</string>
     <string name="quick_settings_reset_confirmation_title" msgid="748792586749897883">"Të fshihet <xliff:g id="TILE_LABEL">%1$s</xliff:g>?"</string>
@@ -437,15 +429,13 @@
     <string name="volumeui_prompt_allow" msgid="7954396902482228786">"Lejo"</string>
     <string name="volumeui_prompt_deny" msgid="5720663643411696731">"Refuzo"</string>
     <string name="volumeui_notification_title" msgid="4906770126345910955">"<xliff:g id="APP_NAME">%1$s</xliff:g> është dialogu i volumit"</string>
-    <string name="volumeui_notification_text" msgid="1826889705095768656">"Prek për të restauruar origjinalin."</string>
+    <string name="volumeui_notification_text" msgid="8819536904234337445">"Trokit për të restauruar origjinalin."</string>
     <string name="managed_profile_foreground_toast" msgid="5421487114739245972">"Po përdor profilin tënd të punës"</string>
     <string name="volume_stream_content_description_unmute" msgid="4436631538779230857">"%1$s. Trokit për të aktivizuar."</string>
     <string name="volume_stream_content_description_vibrate" msgid="1187944970457807498">"%1$s. Trokit për ta caktuar te dridhja. Shërbimet e qasshmërisë mund të çaktivizohen."</string>
     <string name="volume_stream_content_description_mute" msgid="3625049841390467354">"%1$s. Trokit për të çaktivizuar. Shërbimet e qasshmërisë mund të çaktivizohen."</string>
-    <!-- no translation found for volume_dialog_accessibility_shown_message (1834631467074259998) -->
-    <skip />
-    <!-- no translation found for volume_dialog_accessibility_dismissed_message (51543526013711399) -->
-    <skip />
+    <string name="volume_dialog_accessibility_shown_message" msgid="1834631467074259998">"Tregohen %s kontrolle volumi. Rrëshqit lart për ta larguar."</string>
+    <string name="volume_dialog_accessibility_dismissed_message" msgid="51543526013711399">"Kontrollet e volumit janë fshehur"</string>
     <string name="system_ui_tuner" msgid="708224127392452018">"Sintonizuesi i Sistemit të Ndërfaqes së Përdoruesit"</string>
     <string name="show_battery_percentage" msgid="5444136600512968798">"Shfaq përqindjen e baterisë së integruar"</string>
     <string name="show_battery_percentage_summary" msgid="3215025775576786037">"Shfaq përqindjen e nivelit të baterisë brenda ikonës së shiritit të statusit kur nuk është duke u ngarkuar."</string>
@@ -641,27 +631,17 @@
     <string name="accessibility_qs_edit_tile_removed" msgid="8584304916627913440">"<xliff:g id="TILE_NAME">%1$s</xliff:g> u hoq"</string>
     <string name="accessibility_qs_edit_tile_moved" msgid="4343693412689365038">"<xliff:g id="TILE_NAME">%1$s</xliff:g> u zhvendos te pozicioni <xliff:g id="POSITION">%2$d</xliff:g>"</string>
     <string name="accessibility_desc_quick_settings_edit" msgid="8073587401747016103">"Redaktori i cilësimeve të shpejta."</string>
-    <!-- no translation found for accessibility_desc_notification_icon (8352414185263916335) -->
-    <skip />
+    <string name="accessibility_desc_notification_icon" msgid="8352414185263916335">"Njoftim nga <xliff:g id="ID_1">%1$s</xliff:g>: <xliff:g id="ID_2">%2$s</xliff:g>"</string>
     <string name="dock_forced_resizable" msgid="5914261505436217520">"Aplikacioni mund të mos funksionojë me ekranin e ndarë."</string>
     <string name="dock_non_resizeble_failed_to_dock_text" msgid="3871617304250207291">"Aplikacioni nuk mbështet ekranin e ndarë."</string>
-    <!-- no translation found for accessibility_quick_settings_settings (6132460890024942157) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_expand (2375165227880477530) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_collapse (1792625797142648105) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_alarm_set (1863000242431528676) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_user (1567445362870421770) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_no_internet (31890692343084075) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_open_details (4230931801728005194) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_open_settings (7806613775728380737) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_edit (7839992848995240393) -->
-    <skip />
+    <string name="accessibility_quick_settings_settings" msgid="6132460890024942157">"Hap cilësimet."</string>
+    <string name="accessibility_quick_settings_expand" msgid="2375165227880477530">"Hap cilësimet e shpejta."</string>
+    <string name="accessibility_quick_settings_collapse" msgid="1792625797142648105">"Mbyll cilësimet e shpejta."</string>
+    <string name="accessibility_quick_settings_alarm_set" msgid="1863000242431528676">"Alarmi u vendos."</string>
+    <string name="accessibility_quick_settings_user" msgid="1567445362870421770">"Identifikuar si <xliff:g id="ID_1">%s</xliff:g>"</string>
+    <string name="accessibility_quick_settings_no_internet" msgid="31890692343084075">"Nuk ka internet."</string>
+    <string name="accessibility_quick_settings_open_details" msgid="4230931801728005194">"Hap detajet."</string>
+    <string name="accessibility_quick_settings_open_settings" msgid="7806613775728380737">"Hap cilësimet e <xliff:g id="ID_1">%s</xliff:g>."</string>
+    <string name="accessibility_quick_settings_edit" msgid="7839992848995240393">"Modifiko rendin e cilësimeve."</string>
     <string name="accessibility_quick_settings_page" msgid="5032979051755200721">"Faqja <xliff:g id="ID_1">%1$d</xliff:g> nga <xliff:g id="ID_2">%2$d</xliff:g>"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-sq-rAL/strings_tv.xml b/packages/SystemUI/res/values-sq-rAL/strings_tv.xml
index 64259d1..4d9ed2b 100644
--- a/packages/SystemUI/res/values-sq-rAL/strings_tv.xml
+++ b/packages/SystemUI/res/values-sq-rAL/strings_tv.xml
@@ -24,10 +24,8 @@
     <string name="pip_play" msgid="674145557658227044">"Luaj"</string>
     <string name="pip_pause" msgid="8412075640017218862">"Pauzë"</string>
     <string name="pip_hold_home" msgid="340086535668778109">"Mbaj shtypur "<b>"HOME"</b>" për të kontrolluar PIP"</string>
-    <!-- no translation found for pip_onboarding_title (7850436557670253991) -->
-    <skip />
-    <!-- no translation found for pip_onboarding_description (4028124563309465267) -->
-    <skip />
+    <string name="pip_onboarding_title" msgid="7850436557670253991">"Figurë brenda figurës"</string>
+    <string name="pip_onboarding_description" msgid="4028124563309465267">"Kjo e mban videon të dukshme derisa të luash një tjetër. Shtyp dhe mbaj shtypur "<b>"HOME"</b>" për ta kontrolluar."</string>
     <string name="pip_onboarding_button" msgid="3957426748484904611">"E kuptova"</string>
     <string name="recents_tv_dismiss" msgid="3555093879593377731">"Hiqe"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-sr/strings.xml b/packages/SystemUI/res/values-sr/strings.xml
index d6fc1a1..437a4d8 100644
--- a/packages/SystemUI/res/values-sr/strings.xml
+++ b/packages/SystemUI/res/values-sr/strings.xml
@@ -72,7 +72,7 @@
     <string name="screenshot_saving_title" msgid="8242282144535555697">"Чување снимка екрана..."</string>
     <string name="screenshot_saving_text" msgid="2419718443411738818">"Снимак екрана се чува."</string>
     <string name="screenshot_saved_title" msgid="6461865960961414961">"Снимак екрана је направљен."</string>
-    <string name="screenshot_saved_text" msgid="1152839647677558815">"Додирните да бисте видели снимак екрана."</string>
+    <string name="screenshot_saved_text" msgid="2685605830386712477">"Додирните да бисте видели снимак екрана."</string>
     <string name="screenshot_failed_title" msgid="705781116746922771">"Није могуће направити снимак екрана."</string>
     <string name="screenshot_failed_to_save_unknown_text" msgid="7887826345701753830">"Дошло је до проблема при чувању снимка екрана."</string>
     <string name="screenshot_failed_to_save_text" msgid="2592658083866306296">"Чување снимка екрана није успело због ограниченог меморијског простора."</string>
@@ -119,8 +119,7 @@
     <string name="accessibility_data_signal_full" msgid="2708384608124519369">"Сигнал за податке је најјачи."</string>
     <string name="accessibility_wifi_name" msgid="7202151365171148501">"Повезани сте са <xliff:g id="WIFI">%s</xliff:g>."</string>
     <string name="accessibility_bluetooth_name" msgid="8441517146585531676">"Повезани сте са <xliff:g id="BLUETOOTH">%s</xliff:g>."</string>
-    <!-- no translation found for accessibility_cast_name (4026393061247081201) -->
-    <skip />
+    <string name="accessibility_cast_name" msgid="4026393061247081201">"Повезани смо са уређајем <xliff:g id="CAST">%s</xliff:g>."</string>
     <string name="accessibility_no_wimax" msgid="4329180129727630368">"Нема WiMAX сигнала."</string>
     <string name="accessibility_wimax_one_bar" msgid="4170994299011863648">"WiMAX сигнал има једну црту."</string>
     <string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"WiMAX сигнал има две црте."</string>
@@ -151,17 +150,14 @@
     <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string>
     <string name="accessibility_data_connection_wifi" msgid="2324496756590645221">"Wi-Fi"</string>
     <string name="accessibility_no_sim" msgid="8274017118472455155">"Нема SIM картице."</string>
-    <!-- no translation found for accessibility_cell_data (7080312242791850520) -->
-    <skip />
-    <!-- no translation found for accessibility_cell_data_on (4310018593519761767) -->
-    <skip />
+    <string name="accessibility_cell_data" msgid="7080312242791850520">"Подаци за мобилне уређаје"</string>
+    <string name="accessibility_cell_data_on" msgid="4310018593519761767">"Подаци за мобилне уређаје су укључени"</string>
     <string name="accessibility_cell_data_off" msgid="8000803571751407635">"Подаци за мобилне уређаје су искључени"</string>
     <string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"Bluetooth привезивање."</string>
     <string name="accessibility_airplane_mode" msgid="834748999790763092">"Режим рада у авиону."</string>
     <string name="accessibility_no_sims" msgid="3957997018324995781">"Нема SIM картице."</string>
     <string name="accessibility_carrier_network_change_mode" msgid="4017301580441304305">"Промена мреже мобилног оператера."</string>
-    <!-- no translation found for accessibility_battery_details (7645516654955025422) -->
-    <skip />
+    <string name="accessibility_battery_details" msgid="7645516654955025422">"Отвори детаље о батерији"</string>
     <string name="accessibility_battery_level" msgid="7451474187113371965">"Батерија је на <xliff:g id="NUMBER">%d</xliff:g> посто."</string>
     <string name="accessibility_battery_level_charging" msgid="1147587904439319646">"Батерија се пуни, <xliff:g id="BATTERY_PERCENTAGE">%d</xliff:g> процената."</string>
     <string name="accessibility_settings_button" msgid="799583911231893380">"Системска подешавања."</string>
@@ -201,13 +197,11 @@
     <string name="accessibility_quick_settings_dnd_priority_on" msgid="1448402297221249355">"Подешавање Не узнемиравај је укључено, само приоритетни прекиди."</string>
     <string name="accessibility_quick_settings_dnd_none_on" msgid="6882582132662613537">"Подешавање Не узнемиравај је укључено, потпуна тишина."</string>
     <string name="accessibility_quick_settings_dnd_alarms_on" msgid="9152834845587554157">"Подешавање Не узнемиравај је укључено, само аларми."</string>
-    <!-- no translation found for accessibility_quick_settings_dnd (6607873236717185815) -->
-    <skip />
+    <string name="accessibility_quick_settings_dnd" msgid="6607873236717185815">"Не узнемиравај."</string>
     <string name="accessibility_quick_settings_dnd_off" msgid="2371832603753738581">"Подешавање Не узнемиравај је искључено."</string>
     <string name="accessibility_quick_settings_dnd_changed_off" msgid="898107593453022935">"Подешавање Не узнемиравај је искључено."</string>
     <string name="accessibility_quick_settings_dnd_changed_on" msgid="4483780856613561039">"Подешавање Не узнемиравај је укључено."</string>
-    <!-- no translation found for accessibility_quick_settings_bluetooth (6341675755803320038) -->
-    <skip />
+    <string name="accessibility_quick_settings_bluetooth" msgid="6341675755803320038">"Bluetooth."</string>
     <string name="accessibility_quick_settings_bluetooth_off" msgid="2133631372372064339">"Bluetooth је искључен."</string>
     <string name="accessibility_quick_settings_bluetooth_on" msgid="7681999166216621838">"Bluetooth је укључен."</string>
     <string name="accessibility_quick_settings_bluetooth_connecting" msgid="6953242966685343855">"Bluetooth се повезује."</string>
@@ -273,10 +267,8 @@
     <string name="quick_settings_bluetooth_detail_empty_text" msgid="4910015762433302860">"Није доступан ниједан упарени уређај"</string>
     <string name="quick_settings_brightness_label" msgid="6968372297018755815">"Осветљеност"</string>
     <string name="quick_settings_rotation_unlocked_label" msgid="7305323031808150099">"Аутоматска ротација"</string>
-    <!-- no translation found for accessibility_quick_settings_rotation (4231661040698488779) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_rotation_value (1428962304214992318) -->
-    <skip />
+    <string name="accessibility_quick_settings_rotation" msgid="4231661040698488779">"Аутоматско ротирање екрана"</string>
+    <string name="accessibility_quick_settings_rotation_value" msgid="1428962304214992318">"Подеси на <xliff:g id="ID_1">%s</xliff:g>"</string>
     <string name="quick_settings_rotation_locked_label" msgid="6359205706154282377">"Ротација је закључана"</string>
     <string name="quick_settings_rotation_locked_portrait_label" msgid="5102691921442135053">"Вертикални приказ"</string>
     <string name="quick_settings_rotation_locked_landscape_label" msgid="8553157770061178719">"Хоризонтални приказ"</string>
@@ -295,8 +287,7 @@
     <string name="quick_settings_wifi_not_connected" msgid="7171904845345573431">"Веза није успостављена"</string>
     <string name="quick_settings_wifi_no_network" msgid="2221993077220856376">"Нема мреже"</string>
     <string name="quick_settings_wifi_off_label" msgid="7558778100843885864">"Wi-Fi је искључен"</string>
-    <!-- no translation found for quick_settings_wifi_on_label (7607810331387031235) -->
-    <skip />
+    <string name="quick_settings_wifi_on_label" msgid="7607810331387031235">"Wi-Fi је укључен"</string>
     <string name="quick_settings_wifi_detail_empty_text" msgid="269990350383909226">"Није доступна ниједна Wi-Fi мрежа"</string>
     <string name="quick_settings_cast_title" msgid="7709016546426454729">"Пребацивање"</string>
     <string name="quick_settings_casting" msgid="6601710681033353316">"Пребацивање"</string>
@@ -350,7 +341,7 @@
     <string name="zen_silence_introduction" msgid="3137882381093271568">"Ово блокира СВЕ звукове и вибрације укључујући аларме, музику, видео снимке и игре."</string>
     <string name="keyguard_more_overflow_text" msgid="9195222469041601365">"+<xliff:g id="NUMBER_OF_NOTIFICATIONS">%d</xliff:g>"</string>
     <string name="speed_bump_explanation" msgid="1288875699658819755">"Мање хитна обавештења су у наставку"</string>
-    <string name="notification_tap_again" msgid="8524949573675922138">"Додирните поново да бисте отворили"</string>
+    <string name="notification_tap_again" msgid="7590196980943943842">"Додирните поново да бисте отворили"</string>
     <string name="keyguard_unlock" msgid="8043466894212841998">"Превуците нагоре да бисте откључали"</string>
     <string name="phone_hint" msgid="4872890986869209950">"Превуците од иконе за телефон"</string>
     <string name="voice_hint" msgid="8939888732119726665">"Превуците од иконе за гласовну помоћ"</string>
@@ -428,7 +419,7 @@
     <string name="accessibility_volume_expand" msgid="5946812790999244205">"Прошири"</string>
     <string name="accessibility_volume_collapse" msgid="3609549593031810875">"Скупи"</string>
     <string name="screen_pinning_title" msgid="3273740381976175811">"Екран је закачен"</string>
-    <string name="screen_pinning_description" msgid="3577937698406151604">"Због тога се он стално приказује док га не откачите. Додирните и задржите Назад да бисте га откачили."</string>
+    <string name="screen_pinning_description" msgid="7238941806855968768">"На овај начин се ово стално приказује док га не откачите. Додирните и задржите Назад да бисте га откачили."</string>
     <string name="screen_pinning_positive" msgid="3783985798366751226">"Важи"</string>
     <string name="screen_pinning_negative" msgid="3741602308343880268">"Не, хвала"</string>
     <string name="quick_settings_reset_confirmation_title" msgid="748792586749897883">"Желите ли да сакријете <xliff:g id="TILE_LABEL">%1$s</xliff:g>?"</string>
@@ -438,15 +429,13 @@
     <string name="volumeui_prompt_allow" msgid="7954396902482228786">"Дозволи"</string>
     <string name="volumeui_prompt_deny" msgid="5720663643411696731">"Одбиј"</string>
     <string name="volumeui_notification_title" msgid="4906770126345910955">"<xliff:g id="APP_NAME">%1$s</xliff:g> је дијалог за јачину звука"</string>
-    <string name="volumeui_notification_text" msgid="1826889705095768656">"Додирните да бисте вратили оригинал."</string>
+    <string name="volumeui_notification_text" msgid="8819536904234337445">"Додирните да бисте вратили оригинал."</string>
     <string name="managed_profile_foreground_toast" msgid="5421487114739245972">"Користите профил за Work"</string>
     <string name="volume_stream_content_description_unmute" msgid="4436631538779230857">"%1$s. Додирните да бисте укључили звук."</string>
     <string name="volume_stream_content_description_vibrate" msgid="1187944970457807498">"%1$s. Додирните да бисте подесили на вибрацију. Звук услуга приступачности ће можда бити искључен."</string>
     <string name="volume_stream_content_description_mute" msgid="3625049841390467354">"%1$s. Додирните да бисте искључили звук. Звук услуга приступачности ће можда бити искључен."</string>
-    <!-- no translation found for volume_dialog_accessibility_shown_message (1834631467074259998) -->
-    <skip />
-    <!-- no translation found for volume_dialog_accessibility_dismissed_message (51543526013711399) -->
-    <skip />
+    <string name="volume_dialog_accessibility_shown_message" msgid="1834631467074259998">"Контроле за јачину звука (%s) су приказане. Превуците нагоре да бисте их одбацили."</string>
+    <string name="volume_dialog_accessibility_dismissed_message" msgid="51543526013711399">"Контроле за јачину звука су сакривене"</string>
     <string name="system_ui_tuner" msgid="708224127392452018">"Тјунер за кориснички интерфејс система"</string>
     <string name="show_battery_percentage" msgid="5444136600512968798">"Приказуј уграђени проценат батерије"</string>
     <string name="show_battery_percentage_summary" msgid="3215025775576786037">"Приказивање нивоа напуњености батерије у процентима унутар иконе на статусној траци када се батерија не пуни"</string>
@@ -642,27 +631,17 @@
     <string name="accessibility_qs_edit_tile_removed" msgid="8584304916627913440">"Плочица <xliff:g id="TILE_NAME">%1$s</xliff:g> је уклоњена"</string>
     <string name="accessibility_qs_edit_tile_moved" msgid="4343693412689365038">"Плочица <xliff:g id="TILE_NAME">%1$s</xliff:g> је премештена на <xliff:g id="POSITION">%2$d</xliff:g>. позицију"</string>
     <string name="accessibility_desc_quick_settings_edit" msgid="8073587401747016103">"Уређивач за Брза подешавања."</string>
-    <!-- no translation found for accessibility_desc_notification_icon (8352414185263916335) -->
-    <skip />
+    <string name="accessibility_desc_notification_icon" msgid="8352414185263916335">"Обавештења за <xliff:g id="ID_1">%1$s</xliff:g>: <xliff:g id="ID_2">%2$s</xliff:g>"</string>
     <string name="dock_forced_resizable" msgid="5914261505436217520">"Апликација можда неће функционисати са подељеним екраном."</string>
     <string name="dock_non_resizeble_failed_to_dock_text" msgid="3871617304250207291">"Апликација не подржава подељени екран."</string>
-    <!-- no translation found for accessibility_quick_settings_settings (6132460890024942157) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_expand (2375165227880477530) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_collapse (1792625797142648105) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_alarm_set (1863000242431528676) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_user (1567445362870421770) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_no_internet (31890692343084075) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_open_details (4230931801728005194) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_open_settings (7806613775728380737) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_edit (7839992848995240393) -->
-    <skip />
+    <string name="accessibility_quick_settings_settings" msgid="6132460890024942157">"Отвори Подешавања."</string>
+    <string name="accessibility_quick_settings_expand" msgid="2375165227880477530">"Отвори Брза подешавања."</string>
+    <string name="accessibility_quick_settings_collapse" msgid="1792625797142648105">"Затвори Брза подешавања."</string>
+    <string name="accessibility_quick_settings_alarm_set" msgid="1863000242431528676">"Аларм је подешен."</string>
+    <string name="accessibility_quick_settings_user" msgid="1567445362870421770">"Пријављени сте као <xliff:g id="ID_1">%s</xliff:g>"</string>
+    <string name="accessibility_quick_settings_no_internet" msgid="31890692343084075">"Нема интернета."</string>
+    <string name="accessibility_quick_settings_open_details" msgid="4230931801728005194">"Отвори детаље."</string>
+    <string name="accessibility_quick_settings_open_settings" msgid="7806613775728380737">"Отвори подешавања за <xliff:g id="ID_1">%s</xliff:g>."</string>
+    <string name="accessibility_quick_settings_edit" msgid="7839992848995240393">"Измени редослед подешавања."</string>
     <string name="accessibility_quick_settings_page" msgid="5032979051755200721">"<xliff:g id="ID_1">%1$d</xliff:g>. страна од <xliff:g id="ID_2">%2$d</xliff:g>"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-sr/strings_tv.xml b/packages/SystemUI/res/values-sr/strings_tv.xml
index 10f2aaf..f5d948d 100644
--- a/packages/SystemUI/res/values-sr/strings_tv.xml
+++ b/packages/SystemUI/res/values-sr/strings_tv.xml
@@ -24,10 +24,8 @@
     <string name="pip_play" msgid="674145557658227044">"Пусти"</string>
     <string name="pip_pause" msgid="8412075640017218862">"Паузирај"</string>
     <string name="pip_hold_home" msgid="340086535668778109"><b>"ПОЧЕТНИ ЕКРАН"</b>" конт. PIP"</string>
-    <!-- no translation found for pip_onboarding_title (7850436557670253991) -->
-    <skip />
-    <!-- no translation found for pip_onboarding_description (4028124563309465267) -->
-    <skip />
+    <string name="pip_onboarding_title" msgid="7850436557670253991">"Слика у слици"</string>
+    <string name="pip_onboarding_description" msgid="4028124563309465267">"На овај начин ће видео бити приказан док не пустите неки други. Притисните и задржите "<b>"ПОЧЕТНА"</b>" да бисте га контролисали."</string>
     <string name="pip_onboarding_button" msgid="3957426748484904611">"Важи"</string>
     <string name="recents_tv_dismiss" msgid="3555093879593377731">"Одбаци"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-sv/strings.xml b/packages/SystemUI/res/values-sv/strings.xml
index 7897610..e20986a 100644
--- a/packages/SystemUI/res/values-sv/strings.xml
+++ b/packages/SystemUI/res/values-sv/strings.xml
@@ -71,7 +71,7 @@
     <string name="screenshot_saving_title" msgid="8242282144535555697">"Skärmdumpen sparas ..."</string>
     <string name="screenshot_saving_text" msgid="2419718443411738818">"Skärmdumpen sparas."</string>
     <string name="screenshot_saved_title" msgid="6461865960961414961">"Skärmdumpen har tagits."</string>
-    <string name="screenshot_saved_text" msgid="1152839647677558815">"Tryck här om du vill visa skärmdumpen."</string>
+    <string name="screenshot_saved_text" msgid="2685605830386712477">"Visa skärmdumpen genom att trycka här."</string>
     <string name="screenshot_failed_title" msgid="705781116746922771">"Det gick inte att ta någon skärmdump."</string>
     <string name="screenshot_failed_to_save_unknown_text" msgid="7887826345701753830">"Det gick inte att spara skärmdumpen."</string>
     <string name="screenshot_failed_to_save_text" msgid="2592658083866306296">"Det går inte att spara skärmdumpen eftersom lagringsutrymmet inte räcker."</string>
@@ -118,8 +118,7 @@
     <string name="accessibility_data_signal_full" msgid="2708384608124519369">"Datasignalen är full."</string>
     <string name="accessibility_wifi_name" msgid="7202151365171148501">"Ansluten till <xliff:g id="WIFI">%s</xliff:g>."</string>
     <string name="accessibility_bluetooth_name" msgid="8441517146585531676">"Ansluten till <xliff:g id="BLUETOOTH">%s</xliff:g>."</string>
-    <!-- no translation found for accessibility_cast_name (4026393061247081201) -->
-    <skip />
+    <string name="accessibility_cast_name" msgid="4026393061247081201">"Ansluten till <xliff:g id="CAST">%s</xliff:g>."</string>
     <string name="accessibility_no_wimax" msgid="4329180129727630368">"Ingen WiMAX."</string>
     <string name="accessibility_wimax_one_bar" msgid="4170994299011863648">"WiMAX: en stapel."</string>
     <string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"WiMAX: två staplar."</string>
@@ -150,17 +149,14 @@
     <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string>
     <string name="accessibility_data_connection_wifi" msgid="2324496756590645221">"Wi-Fi"</string>
     <string name="accessibility_no_sim" msgid="8274017118472455155">"Inget SIM-kort."</string>
-    <!-- no translation found for accessibility_cell_data (7080312242791850520) -->
-    <skip />
-    <!-- no translation found for accessibility_cell_data_on (4310018593519761767) -->
-    <skip />
+    <string name="accessibility_cell_data" msgid="7080312242791850520">"Mobildata"</string>
+    <string name="accessibility_cell_data_on" msgid="4310018593519761767">"Mobildata aktiverat"</string>
     <string name="accessibility_cell_data_off" msgid="8000803571751407635">"Mobildata inaktiverat"</string>
     <string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"Internetdelning via Bluetooth"</string>
     <string name="accessibility_airplane_mode" msgid="834748999790763092">"Flygplansläge"</string>
     <string name="accessibility_no_sims" msgid="3957997018324995781">"Inget SIM-kort."</string>
     <string name="accessibility_carrier_network_change_mode" msgid="4017301580441304305">"Byter leverantörsnätverk."</string>
-    <!-- no translation found for accessibility_battery_details (7645516654955025422) -->
-    <skip />
+    <string name="accessibility_battery_details" msgid="7645516654955025422">"Visa uppgifter om batteri"</string>
     <string name="accessibility_battery_level" msgid="7451474187113371965">"Batteri <xliff:g id="NUMBER">%d</xliff:g> procent."</string>
     <string name="accessibility_battery_level_charging" msgid="1147587904439319646">"Batteriet laddas, <xliff:g id="BATTERY_PERCENTAGE">%d</xliff:g> procent."</string>
     <string name="accessibility_settings_button" msgid="799583911231893380">"Systeminställningar."</string>
@@ -200,13 +196,11 @@
     <string name="accessibility_quick_settings_dnd_priority_on" msgid="1448402297221249355">"Stör ej har aktiverats. Endast prioriterade."</string>
     <string name="accessibility_quick_settings_dnd_none_on" msgid="6882582132662613537">"Stör ej är aktiverat. Helt tyst."</string>
     <string name="accessibility_quick_settings_dnd_alarms_on" msgid="9152834845587554157">"Stör ej är aktiverat, endast alarm."</string>
-    <!-- no translation found for accessibility_quick_settings_dnd (6607873236717185815) -->
-    <skip />
+    <string name="accessibility_quick_settings_dnd" msgid="6607873236717185815">"Stör ej."</string>
     <string name="accessibility_quick_settings_dnd_off" msgid="2371832603753738581">"Stör ej av."</string>
     <string name="accessibility_quick_settings_dnd_changed_off" msgid="898107593453022935">"Stör ej har inaktiverats."</string>
     <string name="accessibility_quick_settings_dnd_changed_on" msgid="4483780856613561039">"Stör ej har aktiverats."</string>
-    <!-- no translation found for accessibility_quick_settings_bluetooth (6341675755803320038) -->
-    <skip />
+    <string name="accessibility_quick_settings_bluetooth" msgid="6341675755803320038">"Bluetooth"</string>
     <string name="accessibility_quick_settings_bluetooth_off" msgid="2133631372372064339">"Bluetooth av."</string>
     <string name="accessibility_quick_settings_bluetooth_on" msgid="7681999166216621838">"Bluetooth på."</string>
     <string name="accessibility_quick_settings_bluetooth_connecting" msgid="6953242966685343855">"Ansluter Bluetooth."</string>
@@ -272,10 +266,8 @@
     <string name="quick_settings_bluetooth_detail_empty_text" msgid="4910015762433302860">"Det finns inga kopplade enheter tillgängliga"</string>
     <string name="quick_settings_brightness_label" msgid="6968372297018755815">"Ljusstyrka"</string>
     <string name="quick_settings_rotation_unlocked_label" msgid="7305323031808150099">"Rotera automatiskt"</string>
-    <!-- no translation found for accessibility_quick_settings_rotation (4231661040698488779) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_rotation_value (1428962304214992318) -->
-    <skip />
+    <string name="accessibility_quick_settings_rotation" msgid="4231661040698488779">"Rotera skärmen automatiskt"</string>
+    <string name="accessibility_quick_settings_rotation_value" msgid="1428962304214992318">"Välj <xliff:g id="ID_1">%s</xliff:g>"</string>
     <string name="quick_settings_rotation_locked_label" msgid="6359205706154282377">"Rotationen har låsts"</string>
     <string name="quick_settings_rotation_locked_portrait_label" msgid="5102691921442135053">"Stående"</string>
     <string name="quick_settings_rotation_locked_landscape_label" msgid="8553157770061178719">"Liggande"</string>
@@ -294,8 +286,7 @@
     <string name="quick_settings_wifi_not_connected" msgid="7171904845345573431">"Ej ansluten"</string>
     <string name="quick_settings_wifi_no_network" msgid="2221993077220856376">"Inget nätverk"</string>
     <string name="quick_settings_wifi_off_label" msgid="7558778100843885864">"Wi-Fi av"</string>
-    <!-- no translation found for quick_settings_wifi_on_label (7607810331387031235) -->
-    <skip />
+    <string name="quick_settings_wifi_on_label" msgid="7607810331387031235">"Wi-Fi är aktiverat"</string>
     <string name="quick_settings_wifi_detail_empty_text" msgid="269990350383909226">"Det finns inga tillgängliga Wi-Fi-nätverk"</string>
     <string name="quick_settings_cast_title" msgid="7709016546426454729">"Casta"</string>
     <string name="quick_settings_casting" msgid="6601710681033353316">"Castar"</string>
@@ -349,7 +340,7 @@
     <string name="zen_silence_introduction" msgid="3137882381093271568">"Detta blockerar ALLA ljud och vibrationer, inklusive alarm, musik, videor och spel."</string>
     <string name="keyguard_more_overflow_text" msgid="9195222469041601365">"+<xliff:g id="NUMBER_OF_NOTIFICATIONS">%d</xliff:g>"</string>
     <string name="speed_bump_explanation" msgid="1288875699658819755">"Mindre brådskande aviseringar nedan"</string>
-    <string name="notification_tap_again" msgid="8524949573675922138">"Tryck igen för att öppna"</string>
+    <string name="notification_tap_again" msgid="7590196980943943842">"Tryck igen för att öppna"</string>
     <string name="keyguard_unlock" msgid="8043466894212841998">"Svep uppåt om du vill låsa upp"</string>
     <string name="phone_hint" msgid="4872890986869209950">"Svep från ikonen och öppna telefonen"</string>
     <string name="voice_hint" msgid="8939888732119726665">"Svep från ikonen och öppna röstassistenten"</string>
@@ -427,7 +418,7 @@
     <string name="accessibility_volume_expand" msgid="5946812790999244205">"Utöka"</string>
     <string name="accessibility_volume_collapse" msgid="3609549593031810875">"Komprimera"</string>
     <string name="screen_pinning_title" msgid="3273740381976175811">"Skärmen har fästs"</string>
-    <string name="screen_pinning_description" msgid="3577937698406151604">"Detta visar skärmen tills du lossar den. Tryck länge på Tillbaka om du vill lossa skärmen."</string>
+    <string name="screen_pinning_description" msgid="7238941806855968768">"Detta visar skärmen tills du lossar den. Tryck länge på Tillbaka om du vill lossa skärmen."</string>
     <string name="screen_pinning_positive" msgid="3783985798366751226">"OK"</string>
     <string name="screen_pinning_negative" msgid="3741602308343880268">"Nej tack"</string>
     <string name="quick_settings_reset_confirmation_title" msgid="748792586749897883">"Vill du dölja <xliff:g id="TILE_LABEL">%1$s</xliff:g>?"</string>
@@ -437,15 +428,13 @@
     <string name="volumeui_prompt_allow" msgid="7954396902482228786">"Tillåt"</string>
     <string name="volumeui_prompt_deny" msgid="5720663643411696731">"Neka"</string>
     <string name="volumeui_notification_title" msgid="4906770126345910955">"<xliff:g id="APP_NAME">%1$s</xliff:g> används som volymkontroll"</string>
-    <string name="volumeui_notification_text" msgid="1826889705095768656">"Tryck här om du vill återställa den ursprungliga appen."</string>
+    <string name="volumeui_notification_text" msgid="8819536904234337445">"Återställ originalet genom att trycka här."</string>
     <string name="managed_profile_foreground_toast" msgid="5421487114739245972">"Du använder din jobbprofil"</string>
     <string name="volume_stream_content_description_unmute" msgid="4436631538779230857">"%1$s. Tryck här om du vill slå på ljudet."</string>
     <string name="volume_stream_content_description_vibrate" msgid="1187944970457807498">"%1$s. Tryck här om du vill sätta på vibrationen. Tillgänglighetstjänster kanske inaktiveras."</string>
     <string name="volume_stream_content_description_mute" msgid="3625049841390467354">"%1$s. Tryck här om du vill stänga av ljudet. Tillgänglighetstjänsterna kanske inaktiveras."</string>
-    <!-- no translation found for volume_dialog_accessibility_shown_message (1834631467074259998) -->
-    <skip />
-    <!-- no translation found for volume_dialog_accessibility_dismissed_message (51543526013711399) -->
-    <skip />
+    <string name="volume_dialog_accessibility_shown_message" msgid="1834631467074259998">"Volymkontrollerna för %s visas. Svep uppåt för att ignorera."</string>
+    <string name="volume_dialog_accessibility_dismissed_message" msgid="51543526013711399">"Volymkontrollerna är dolda"</string>
     <string name="system_ui_tuner" msgid="708224127392452018">"Inställningar för systemgränssnitt"</string>
     <string name="show_battery_percentage" msgid="5444136600512968798">"Visa inbäddad batteriprocent"</string>
     <string name="show_battery_percentage_summary" msgid="3215025775576786037">"Visa batterinivå i procent i statusfältsikonen när enheten inte laddas"</string>
@@ -641,27 +630,17 @@
     <string name="accessibility_qs_edit_tile_removed" msgid="8584304916627913440">"<xliff:g id="TILE_NAME">%1$s</xliff:g> har tagits bort"</string>
     <string name="accessibility_qs_edit_tile_moved" msgid="4343693412689365038">"<xliff:g id="TILE_NAME">%1$s</xliff:g> har flyttats till position <xliff:g id="POSITION">%2$d</xliff:g>"</string>
     <string name="accessibility_desc_quick_settings_edit" msgid="8073587401747016103">"Redigerare för snabbinställningar."</string>
-    <!-- no translation found for accessibility_desc_notification_icon (8352414185263916335) -->
-    <skip />
+    <string name="accessibility_desc_notification_icon" msgid="8352414185263916335">"<xliff:g id="ID_1">%1$s</xliff:g>-avisering: <xliff:g id="ID_2">%2$s</xliff:g>"</string>
     <string name="dock_forced_resizable" msgid="5914261505436217520">"Appen kanske inte fungerar med delad skärm."</string>
     <string name="dock_non_resizeble_failed_to_dock_text" msgid="3871617304250207291">"Appen har inte stöd för delad skärm."</string>
-    <!-- no translation found for accessibility_quick_settings_settings (6132460890024942157) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_expand (2375165227880477530) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_collapse (1792625797142648105) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_alarm_set (1863000242431528676) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_user (1567445362870421770) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_no_internet (31890692343084075) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_open_details (4230931801728005194) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_open_settings (7806613775728380737) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_edit (7839992848995240393) -->
-    <skip />
+    <string name="accessibility_quick_settings_settings" msgid="6132460890024942157">"Öppna inställningarna."</string>
+    <string name="accessibility_quick_settings_expand" msgid="2375165227880477530">"Öppna snabbinställningarna."</string>
+    <string name="accessibility_quick_settings_collapse" msgid="1792625797142648105">"Stäng snabbinställningarna"</string>
+    <string name="accessibility_quick_settings_alarm_set" msgid="1863000242431528676">"Alarmet aktiverat"</string>
+    <string name="accessibility_quick_settings_user" msgid="1567445362870421770">"Inloggad som <xliff:g id="ID_1">%s</xliff:g>"</string>
+    <string name="accessibility_quick_settings_no_internet" msgid="31890692343084075">"Inget internet."</string>
+    <string name="accessibility_quick_settings_open_details" msgid="4230931801728005194">"Visa information."</string>
+    <string name="accessibility_quick_settings_open_settings" msgid="7806613775728380737">"Öppna <xliff:g id="ID_1">%s</xliff:g>-inställningarna."</string>
+    <string name="accessibility_quick_settings_edit" msgid="7839992848995240393">"Ändra ordning på inställningarna."</string>
     <string name="accessibility_quick_settings_page" msgid="5032979051755200721">"Sida <xliff:g id="ID_1">%1$d</xliff:g> av <xliff:g id="ID_2">%2$d</xliff:g>"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-sv/strings_tv.xml b/packages/SystemUI/res/values-sv/strings_tv.xml
index d95ccf3..6341d5f 100644
--- a/packages/SystemUI/res/values-sv/strings_tv.xml
+++ b/packages/SystemUI/res/values-sv/strings_tv.xml
@@ -24,10 +24,8 @@
     <string name="pip_play" msgid="674145557658227044">"Spela upp"</string>
     <string name="pip_pause" msgid="8412075640017218862">"Pausa"</string>
     <string name="pip_hold_home" msgid="340086535668778109">"Styr PIP med "<b>"startknappen"</b></string>
-    <!-- no translation found for pip_onboarding_title (7850436557670253991) -->
-    <skip />
-    <!-- no translation found for pip_onboarding_description (4028124563309465267) -->
-    <skip />
+    <string name="pip_onboarding_title" msgid="7850436557670253991">"Bild-i-bild"</string>
+    <string name="pip_onboarding_description" msgid="4028124563309465267">"Då visas videon tills du spelar upp en annan. Tryck länge på "<b>"startknappen"</b>" om du vill styra uppspelningen."</string>
     <string name="pip_onboarding_button" msgid="3957426748484904611">"OK"</string>
     <string name="recents_tv_dismiss" msgid="3555093879593377731">"Ignorera"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-sw/strings.xml b/packages/SystemUI/res/values-sw/strings.xml
index ddba112..1a4ea49 100644
--- a/packages/SystemUI/res/values-sw/strings.xml
+++ b/packages/SystemUI/res/values-sw/strings.xml
@@ -71,7 +71,7 @@
     <string name="screenshot_saving_title" msgid="8242282144535555697">"Inahifadhi picha ya skrini..."</string>
     <string name="screenshot_saving_text" msgid="2419718443411738818">"Picha ya skrini inahifadhiwa"</string>
     <string name="screenshot_saved_title" msgid="6461865960961414961">"Picha ya skrini imenaswa."</string>
-    <string name="screenshot_saved_text" msgid="1152839647677558815">"Gusa ili kuona picha yako ya skrini."</string>
+    <string name="screenshot_saved_text" msgid="2685605830386712477">"Gonga ili utazame picha ya skrini uliyohifadhi."</string>
     <string name="screenshot_failed_title" msgid="705781116746922771">"Haikuweza kunasa picha ya skrini"</string>
     <string name="screenshot_failed_to_save_unknown_text" msgid="7887826345701753830">"Hitilafu imetokea wakati wa kuhifadhi picha ya skrini."</string>
     <string name="screenshot_failed_to_save_text" msgid="2592658083866306296">"Haina nafasi ya kutosha kuhifadhi picha ya skrini."</string>
@@ -118,8 +118,7 @@
     <string name="accessibility_data_signal_full" msgid="2708384608124519369">"Ishara ya data imejaa."</string>
     <string name="accessibility_wifi_name" msgid="7202151365171148501">"Imeunganishwa kwenye <xliff:g id="WIFI">%s</xliff:g>."</string>
     <string name="accessibility_bluetooth_name" msgid="8441517146585531676">"Imeunganishwa kwenye <xliff:g id="BLUETOOTH">%s</xliff:g>."</string>
-    <!-- no translation found for accessibility_cast_name (4026393061247081201) -->
-    <skip />
+    <string name="accessibility_cast_name" msgid="4026393061247081201">"Imeunganishwa kwenye <xliff:g id="CAST">%s</xliff:g>."</string>
     <string name="accessibility_no_wimax" msgid="4329180129727630368">"Hakuna WiMAX."</string>
     <string name="accessibility_wimax_one_bar" msgid="4170994299011863648">"Pau moja ya WiMAX."</string>
     <string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"Pau mbili za WiMAX."</string>
@@ -150,17 +149,14 @@
     <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Ukingo"</string>
     <string name="accessibility_data_connection_wifi" msgid="2324496756590645221">"Wi-Fi"</string>
     <string name="accessibility_no_sim" msgid="8274017118472455155">"Hakuna SIM."</string>
-    <!-- no translation found for accessibility_cell_data (7080312242791850520) -->
-    <skip />
-    <!-- no translation found for accessibility_cell_data_on (4310018593519761767) -->
-    <skip />
+    <string name="accessibility_cell_data" msgid="7080312242791850520">"Data ya Simu za Mkononi"</string>
+    <string name="accessibility_cell_data_on" msgid="4310018593519761767">"Imewasha Data ya Simu za Mkononi"</string>
     <string name="accessibility_cell_data_off" msgid="8000803571751407635">"Data ya simu za mkononi Imezimwa"</string>
     <string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"Shiriki intaneti kwa Bluetooth."</string>
     <string name="accessibility_airplane_mode" msgid="834748999790763092">"Hali ya ndege."</string>
     <string name="accessibility_no_sims" msgid="3957997018324995781">"Hakuna SIM kadi."</string>
     <string name="accessibility_carrier_network_change_mode" msgid="4017301580441304305">"Mabadiliko ya mtandao wa mtoa huduma."</string>
-    <!-- no translation found for accessibility_battery_details (7645516654955025422) -->
-    <skip />
+    <string name="accessibility_battery_details" msgid="7645516654955025422">"Fungua maelezo ya betri"</string>
     <string name="accessibility_battery_level" msgid="7451474187113371965">"Asilimia <xliff:g id="NUMBER">%d</xliff:g> ya betri"</string>
     <string name="accessibility_battery_level_charging" msgid="1147587904439319646">"Betri inachaji, asilimia <xliff:g id="BATTERY_PERCENTAGE">%d</xliff:g>."</string>
     <string name="accessibility_settings_button" msgid="799583911231893380">"Mipangilio ya mfumo."</string>
@@ -200,13 +196,11 @@
     <string name="accessibility_quick_settings_dnd_priority_on" msgid="1448402297221249355">"Kipengee cha usinisumbue kimewashwa, kipaumbele pekee."</string>
     <string name="accessibility_quick_settings_dnd_none_on" msgid="6882582132662613537">"Usinisumbue, kimya kabisa."</string>
     <string name="accessibility_quick_settings_dnd_alarms_on" msgid="9152834845587554157">"Kipengee cha usinisumbue kimewashwa, kengele pekee."</string>
-    <!-- no translation found for accessibility_quick_settings_dnd (6607873236717185815) -->
-    <skip />
+    <string name="accessibility_quick_settings_dnd" msgid="6607873236717185815">"Usinisumbue."</string>
     <string name="accessibility_quick_settings_dnd_off" msgid="2371832603753738581">"Kipengee cha usinisumbue kimezimwa."</string>
     <string name="accessibility_quick_settings_dnd_changed_off" msgid="898107593453022935">"Kipengee cha usinisumbue kimezimwa."</string>
     <string name="accessibility_quick_settings_dnd_changed_on" msgid="4483780856613561039">"Kipengee cha usinisumbue kimewashwa."</string>
-    <!-- no translation found for accessibility_quick_settings_bluetooth (6341675755803320038) -->
-    <skip />
+    <string name="accessibility_quick_settings_bluetooth" msgid="6341675755803320038">"Bluetooth"</string>
     <string name="accessibility_quick_settings_bluetooth_off" msgid="2133631372372064339">"Bluetooth imezimwa."</string>
     <string name="accessibility_quick_settings_bluetooth_on" msgid="7681999166216621838">"Bluetooth imewashwa."</string>
     <string name="accessibility_quick_settings_bluetooth_connecting" msgid="6953242966685343855">"Bluetooth inaunganishwa."</string>
@@ -272,10 +266,8 @@
     <string name="quick_settings_bluetooth_detail_empty_text" msgid="4910015762433302860">"Hakuna vifaa vilivyooanishwa vinavyopatikana"</string>
     <string name="quick_settings_brightness_label" msgid="6968372297018755815">"Ung\'avu"</string>
     <string name="quick_settings_rotation_unlocked_label" msgid="7305323031808150099">"Zungusha kiotomatiki"</string>
-    <!-- no translation found for accessibility_quick_settings_rotation (4231661040698488779) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_rotation_value (1428962304214992318) -->
-    <skip />
+    <string name="accessibility_quick_settings_rotation" msgid="4231661040698488779">"Skrini ijizungushe kiotomatiki"</string>
+    <string name="accessibility_quick_settings_rotation_value" msgid="1428962304214992318">"Weka kuwa <xliff:g id="ID_1">%s</xliff:g>"</string>
     <string name="quick_settings_rotation_locked_label" msgid="6359205706154282377">"Mzunguko umefungwa"</string>
     <string name="quick_settings_rotation_locked_portrait_label" msgid="5102691921442135053">"Wima"</string>
     <string name="quick_settings_rotation_locked_landscape_label" msgid="8553157770061178719">"Mlalo"</string>
@@ -294,8 +286,7 @@
     <string name="quick_settings_wifi_not_connected" msgid="7171904845345573431">"Haijaunganishwa"</string>
     <string name="quick_settings_wifi_no_network" msgid="2221993077220856376">"Hakuna Mtandao"</string>
     <string name="quick_settings_wifi_off_label" msgid="7558778100843885864">"Wi-Fi Imezimwa"</string>
-    <!-- no translation found for quick_settings_wifi_on_label (7607810331387031235) -->
-    <skip />
+    <string name="quick_settings_wifi_on_label" msgid="7607810331387031235">"Imewasha Wi-Fi"</string>
     <string name="quick_settings_wifi_detail_empty_text" msgid="269990350383909226">"Hakuna mitandao ya Wi-Fi inayopatikana"</string>
     <string name="quick_settings_cast_title" msgid="7709016546426454729">"Tuma"</string>
     <string name="quick_settings_casting" msgid="6601710681033353316">"Inatuma"</string>
@@ -349,7 +340,7 @@
     <string name="zen_silence_introduction" msgid="3137882381093271568">"Hatua hii huzuia sauti na mitetemo YOTE, ikiwa ni pamoja na ile inayotokana na kengele, muziki, video na michezo."</string>
     <string name="keyguard_more_overflow_text" msgid="9195222469041601365">"<xliff:g id="NUMBER_OF_NOTIFICATIONS">%d</xliff:g>+"</string>
     <string name="speed_bump_explanation" msgid="1288875699658819755">"Arifa zisizo za dharura sana ziko hapo chini"</string>
-    <string name="notification_tap_again" msgid="8524949573675922138">"Gusa tena ili ufungue"</string>
+    <string name="notification_tap_again" msgid="7590196980943943842">"Gonga tena ili ufungue"</string>
     <string name="keyguard_unlock" msgid="8043466894212841998">"Telezesha kidole ili ufungue"</string>
     <string name="phone_hint" msgid="4872890986869209950">"Telezesha kidole kutoka kwa aikoni ili ufikie simu"</string>
     <string name="voice_hint" msgid="8939888732119726665">"Telezesha kidole kutoka aikoni ili upate mapendekezo ya sauti"</string>
@@ -427,7 +418,7 @@
     <string name="accessibility_volume_expand" msgid="5946812790999244205">"Panua"</string>
     <string name="accessibility_volume_collapse" msgid="3609549593031810875">"Kunja"</string>
     <string name="screen_pinning_title" msgid="3273740381976175811">"Skrini imebandikwa"</string>
-    <string name="screen_pinning_description" msgid="3577937698406151604">"Hii itaendelea kuonyesha hadi uibandue. Gusa na ushikilie Nyuma ili ubandue."</string>
+    <string name="screen_pinning_description" msgid="7238941806855968768">"Utaendelea kuona hali hii hadi utakapobandua. Gusa na ushikilie kipengele cha Nyuma ili kubandua."</string>
     <string name="screen_pinning_positive" msgid="3783985798366751226">"Nimeelewa"</string>
     <string name="screen_pinning_negative" msgid="3741602308343880268">"Hapana, asante"</string>
     <string name="quick_settings_reset_confirmation_title" msgid="748792586749897883">"Ungependa kuficha <xliff:g id="TILE_LABEL">%1$s</xliff:g>?"</string>
@@ -437,15 +428,13 @@
     <string name="volumeui_prompt_allow" msgid="7954396902482228786">"Ruhusu"</string>
     <string name="volumeui_prompt_deny" msgid="5720663643411696731">"Kataa"</string>
     <string name="volumeui_notification_title" msgid="4906770126345910955">"<xliff:g id="APP_NAME">%1$s</xliff:g> ni mazungumzo ya sauti"</string>
-    <string name="volumeui_notification_text" msgid="1826889705095768656">"Gusa ili urejeshe ya awali."</string>
+    <string name="volumeui_notification_text" msgid="8819536904234337445">"Gonga ili urejeshe picha ya asili."</string>
     <string name="managed_profile_foreground_toast" msgid="5421487114739245972">"Unatumia wasifu wako wa kazini"</string>
     <string name="volume_stream_content_description_unmute" msgid="4436631538779230857">"%1$s. Gonga ili urejeshe."</string>
     <string name="volume_stream_content_description_vibrate" msgid="1187944970457807498">"%1$s. Gonga ili uweke mtetemo. Huenda ikakomesha huduma za zana za walio na matatizo ya kuona au kusikia."</string>
     <string name="volume_stream_content_description_mute" msgid="3625049841390467354">"%1$s. Gonga ili ukomeshe. Huenda ikakomesha huduma za zana za walio na matatizo ya kuona au kusikia."</string>
-    <!-- no translation found for volume_dialog_accessibility_shown_message (1834631467074259998) -->
-    <skip />
-    <!-- no translation found for volume_dialog_accessibility_dismissed_message (51543526013711399) -->
-    <skip />
+    <string name="volume_dialog_accessibility_shown_message" msgid="1834631467074259998">"Inaonyesha %s ya vidhibiti vya sauti. Telezesha kidole juu ili uondoe."</string>
+    <string name="volume_dialog_accessibility_dismissed_message" msgid="51543526013711399">"Imeficha vidhibiti vya sauti"</string>
     <string name="system_ui_tuner" msgid="708224127392452018">"Kipokea Ishara cha SystemUI"</string>
     <string name="show_battery_percentage" msgid="5444136600512968798">"Onyesha asilimia ya betri iliyopachikwa"</string>
     <string name="show_battery_percentage_summary" msgid="3215025775576786037">"Onyesha asilimia ya kiwango cha betri ndani ya aikoni ya sehemu ya arifa inapokuwa haichaji"</string>
@@ -641,27 +630,17 @@
     <string name="accessibility_qs_edit_tile_removed" msgid="8584304916627913440">"<xliff:g id="TILE_NAME">%1$s</xliff:g> imeondolewa"</string>
     <string name="accessibility_qs_edit_tile_moved" msgid="4343693412689365038">"<xliff:g id="TILE_NAME">%1$s</xliff:g> imehamishiwa kwenye nafasi ya <xliff:g id="POSITION">%2$d</xliff:g>"</string>
     <string name="accessibility_desc_quick_settings_edit" msgid="8073587401747016103">"Kihariri cha Mipangilio ya haraka."</string>
-    <!-- no translation found for accessibility_desc_notification_icon (8352414185263916335) -->
-    <skip />
+    <string name="accessibility_desc_notification_icon" msgid="8352414185263916335">"Arifa kutoka <xliff:g id="ID_1">%1$s</xliff:g>: <xliff:g id="ID_2">%2$s</xliff:g>"</string>
     <string name="dock_forced_resizable" msgid="5914261505436217520">"Huenda programu isifanye kazi kwenye skrini inayogawanywa."</string>
     <string name="dock_non_resizeble_failed_to_dock_text" msgid="3871617304250207291">"Programu haiwezi kutumia skrini iliyogawanywa."</string>
-    <!-- no translation found for accessibility_quick_settings_settings (6132460890024942157) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_expand (2375165227880477530) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_collapse (1792625797142648105) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_alarm_set (1863000242431528676) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_user (1567445362870421770) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_no_internet (31890692343084075) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_open_details (4230931801728005194) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_open_settings (7806613775728380737) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_edit (7839992848995240393) -->
-    <skip />
+    <string name="accessibility_quick_settings_settings" msgid="6132460890024942157">"Fungua mipangilio."</string>
+    <string name="accessibility_quick_settings_expand" msgid="2375165227880477530">"Fungua mipangilio ya haraka."</string>
+    <string name="accessibility_quick_settings_collapse" msgid="1792625797142648105">"Funga mipangilio ya haraka."</string>
+    <string name="accessibility_quick_settings_alarm_set" msgid="1863000242431528676">"Imeweka kengele."</string>
+    <string name="accessibility_quick_settings_user" msgid="1567445362870421770">"Umeingia katika akaunti ya <xliff:g id="ID_1">%s</xliff:g>"</string>
+    <string name="accessibility_quick_settings_no_internet" msgid="31890692343084075">"Hakuna intaneti."</string>
+    <string name="accessibility_quick_settings_open_details" msgid="4230931801728005194">"Fungua maelezo."</string>
+    <string name="accessibility_quick_settings_open_settings" msgid="7806613775728380737">"Fungua mipangilio ya <xliff:g id="ID_1">%s</xliff:g>."</string>
+    <string name="accessibility_quick_settings_edit" msgid="7839992848995240393">"Badilisha orodha ya mipangilio."</string>
     <string name="accessibility_quick_settings_page" msgid="5032979051755200721">"Ukurasa wa <xliff:g id="ID_1">%1$d</xliff:g> kati ya <xliff:g id="ID_2">%2$d</xliff:g>"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-sw/strings_tv.xml b/packages/SystemUI/res/values-sw/strings_tv.xml
index 585ffe2..20e9629 100644
--- a/packages/SystemUI/res/values-sw/strings_tv.xml
+++ b/packages/SystemUI/res/values-sw/strings_tv.xml
@@ -24,10 +24,8 @@
     <string name="pip_play" msgid="674145557658227044">"Cheza"</string>
     <string name="pip_pause" msgid="8412075640017218862">"Sitisha"</string>
     <string name="pip_hold_home" msgid="340086535668778109">"Shikilia kitufe cha "<b>"HOME"</b>" ili udhibiti PIP"</string>
-    <!-- no translation found for pip_onboarding_title (7850436557670253991) -->
-    <skip />
-    <!-- no translation found for pip_onboarding_description (4028124563309465267) -->
-    <skip />
+    <string name="pip_onboarding_title" msgid="7850436557670253991">"Picha ndani ya picha"</string>
+    <string name="pip_onboarding_description" msgid="4028124563309465267">"Hali hii itaendelea kuonyesha video yako hadi utakapocheza video nyingine. Bonyeza na ushikilie kitufe cha "<b>"HOME"</b>" ili uidhibiti."</string>
     <string name="pip_onboarding_button" msgid="3957426748484904611">"Nimeelewa"</string>
     <string name="recents_tv_dismiss" msgid="3555093879593377731">"Ondoa"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-ta-rIN/strings.xml b/packages/SystemUI/res/values-ta-rIN/strings.xml
index e0b7f18..e150e64 100644
--- a/packages/SystemUI/res/values-ta-rIN/strings.xml
+++ b/packages/SystemUI/res/values-ta-rIN/strings.xml
@@ -71,7 +71,7 @@
     <string name="screenshot_saving_title" msgid="8242282144535555697">"ஸ்க்ரீன் ஷாட்டைச் சேமிக்கிறது…"</string>
     <string name="screenshot_saving_text" msgid="2419718443411738818">"ஸ்க்ரீன் ஷாட் சேமிக்கப்படுகிறது."</string>
     <string name="screenshot_saved_title" msgid="6461865960961414961">"ஸ்கிரீன் ஷாட் எடுக்கப்பட்டது."</string>
-    <string name="screenshot_saved_text" msgid="1152839647677558815">"உங்கள் ஸ்க்ரீன் ஷாட்டைப் பார்க்க தொடவும்."</string>
+    <string name="screenshot_saved_text" msgid="2685605830386712477">"ஸ்கிரீன்ஷாட்டைப் பார்க்க, தட்டவும்."</string>
     <string name="screenshot_failed_title" msgid="705781116746922771">"ஸ்க்ரீன் ஷாட்டை எடுக்க முடியவில்லை."</string>
     <string name="screenshot_failed_to_save_unknown_text" msgid="7887826345701753830">"ஸ்க்ரீன்ஷாட்டைச் சேமிக்கும் போது, பிழை ஏற்பட்டது."</string>
     <string name="screenshot_failed_to_save_text" msgid="2592658083866306296">"போதுமான சேமிப்பிடம் இல்லாததால் ஸ்கிரீன்ஷாட்டைச் சேமிக்க முடியவில்லை."</string>
@@ -118,8 +118,7 @@
     <string name="accessibility_data_signal_full" msgid="2708384608124519369">"தரவு சிக்னல் முழுமையாக உள்ளது."</string>
     <string name="accessibility_wifi_name" msgid="7202151365171148501">"<xliff:g id="WIFI">%s</xliff:g>க்கு இணைக்கப்பட்டது."</string>
     <string name="accessibility_bluetooth_name" msgid="8441517146585531676">"<xliff:g id="BLUETOOTH">%s</xliff:g>க்கு இணைக்கப்பட்டது."</string>
-    <!-- no translation found for accessibility_cast_name (4026393061247081201) -->
-    <skip />
+    <string name="accessibility_cast_name" msgid="4026393061247081201">"<xliff:g id="CAST">%s</xliff:g> உடன் இணைக்கப்பட்டுள்ளது."</string>
     <string name="accessibility_no_wimax" msgid="4329180129727630368">"WiMAX இல்லை."</string>
     <string name="accessibility_wimax_one_bar" msgid="4170994299011863648">"WiMAX ஒரு கோடு."</string>
     <string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"WiMAX இரண்டு கோடுகள்."</string>
@@ -150,17 +149,14 @@
     <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string>
     <string name="accessibility_data_connection_wifi" msgid="2324496756590645221">"வைஃபை"</string>
     <string name="accessibility_no_sim" msgid="8274017118472455155">"சிம் இல்லை."</string>
-    <!-- no translation found for accessibility_cell_data (7080312242791850520) -->
-    <skip />
-    <!-- no translation found for accessibility_cell_data_on (4310018593519761767) -->
-    <skip />
+    <string name="accessibility_cell_data" msgid="7080312242791850520">"செல்லுலார் தரவு"</string>
+    <string name="accessibility_cell_data_on" msgid="4310018593519761767">"செல்லுலார் தரவு இயக்கப்பட்டது"</string>
     <string name="accessibility_cell_data_off" msgid="8000803571751407635">"செல்லுலார் தரவு முடக்கப்பட்டது"</string>
     <string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"புளூடூத் டெதெரிங்."</string>
     <string name="accessibility_airplane_mode" msgid="834748999790763092">"விமானப் பயன்முறை."</string>
     <string name="accessibility_no_sims" msgid="3957997018324995781">"சிம் கார்டு இல்லை."</string>
     <string name="accessibility_carrier_network_change_mode" msgid="4017301580441304305">"மொபைல் நிறுவன மாற்றம்."</string>
-    <!-- no translation found for accessibility_battery_details (7645516654955025422) -->
-    <skip />
+    <string name="accessibility_battery_details" msgid="7645516654955025422">"பேட்டரி விவரங்களைத் திறக்கும்"</string>
     <string name="accessibility_battery_level" msgid="7451474187113371965">"பேட்டரி சக்தி <xliff:g id="NUMBER">%d</xliff:g> சதவிகிதம் உள்ளது."</string>
     <string name="accessibility_battery_level_charging" msgid="1147587904439319646">"பேட்டரி சார்ஜ் செய்யப்படுகிறது, <xliff:g id="BATTERY_PERCENTAGE">%d</xliff:g> சதவீதம்."</string>
     <string name="accessibility_settings_button" msgid="799583911231893380">"கணினி அமைப்பு."</string>
@@ -200,13 +196,11 @@
     <string name="accessibility_quick_settings_dnd_priority_on" msgid="1448402297221249355">"தொந்தரவு செய்ய வேண்டாம் என்பது இயக்கப்பட்டது, முதன்மை மட்டும்."</string>
     <string name="accessibility_quick_settings_dnd_none_on" msgid="6882582132662613537">"தொந்தரவு செய்ய வேண்டாம் என்பது இயக்கப்பட்டது, அறிவிப்புகள் வேண்டாம்."</string>
     <string name="accessibility_quick_settings_dnd_alarms_on" msgid="9152834845587554157">"தொந்தரவு செய்ய வேண்டாம் என்பது இயக்கப்பட்டது, அலாரங்கள் மட்டும்."</string>
-    <!-- no translation found for accessibility_quick_settings_dnd (6607873236717185815) -->
-    <skip />
+    <string name="accessibility_quick_settings_dnd" msgid="6607873236717185815">"தொந்தரவு செய்ய வேண்டாம்."</string>
     <string name="accessibility_quick_settings_dnd_off" msgid="2371832603753738581">"தொந்தரவு செய்ய வேண்டாம் என்பது முடக்கப்பட்டது."</string>
     <string name="accessibility_quick_settings_dnd_changed_off" msgid="898107593453022935">"தொந்தரவு செய்ய வேண்டாம் என்பது முடக்கப்பட்டது."</string>
     <string name="accessibility_quick_settings_dnd_changed_on" msgid="4483780856613561039">"தொந்தரவு செய்ய வேண்டாம் என்பது இயக்கப்பட்டது."</string>
-    <!-- no translation found for accessibility_quick_settings_bluetooth (6341675755803320038) -->
-    <skip />
+    <string name="accessibility_quick_settings_bluetooth" msgid="6341675755803320038">"புளூடூத்."</string>
     <string name="accessibility_quick_settings_bluetooth_off" msgid="2133631372372064339">"புளூடூத் முடக்கத்தில்."</string>
     <string name="accessibility_quick_settings_bluetooth_on" msgid="7681999166216621838">"புளூடூத் இயக்கத்தில்."</string>
     <string name="accessibility_quick_settings_bluetooth_connecting" msgid="6953242966685343855">"புளூடூத் இணைக்கப்படுகிறது."</string>
@@ -272,10 +266,8 @@
     <string name="quick_settings_bluetooth_detail_empty_text" msgid="4910015762433302860">"இணைக்கப்பட்ட சாதனங்கள் இல்லை"</string>
     <string name="quick_settings_brightness_label" msgid="6968372297018755815">"ஒளிர்வு"</string>
     <string name="quick_settings_rotation_unlocked_label" msgid="7305323031808150099">"தானாகச் சுழற்று"</string>
-    <!-- no translation found for accessibility_quick_settings_rotation (4231661040698488779) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_rotation_value (1428962304214992318) -->
-    <skip />
+    <string name="accessibility_quick_settings_rotation" msgid="4231661040698488779">"திரையைத் தானாகச் சுழற்று"</string>
+    <string name="accessibility_quick_settings_rotation_value" msgid="1428962304214992318">"<xliff:g id="ID_1">%s</xliff:g>க்கு அமை"</string>
     <string name="quick_settings_rotation_locked_label" msgid="6359205706154282377">"சுழற்சி பூட்டப்பட்டது"</string>
     <string name="quick_settings_rotation_locked_portrait_label" msgid="5102691921442135053">"நீளமாக"</string>
     <string name="quick_settings_rotation_locked_landscape_label" msgid="8553157770061178719">"அகலமாக"</string>
@@ -294,8 +286,7 @@
     <string name="quick_settings_wifi_not_connected" msgid="7171904845345573431">"இணைக்கப்படவில்லை"</string>
     <string name="quick_settings_wifi_no_network" msgid="2221993077220856376">"நெட்வொர்க் இல்லை"</string>
     <string name="quick_settings_wifi_off_label" msgid="7558778100843885864">"வைஃபையை முடக்கு"</string>
-    <!-- no translation found for quick_settings_wifi_on_label (7607810331387031235) -->
-    <skip />
+    <string name="quick_settings_wifi_on_label" msgid="7607810331387031235">"வைஃபை இயக்கத்தில்"</string>
     <string name="quick_settings_wifi_detail_empty_text" msgid="269990350383909226">"வைஃபை நெட்வொர்க்குகள் இல்லை"</string>
     <string name="quick_settings_cast_title" msgid="7709016546426454729">"அனுப்பு"</string>
     <string name="quick_settings_casting" msgid="6601710681033353316">"அனுப்புகிறது"</string>
@@ -349,7 +340,7 @@
     <string name="zen_silence_introduction" msgid="3137882381093271568">"இது அலாரங்கள், இசை, வீடியோக்கள் மற்றும் கேம்கள் உட்பட எல்லா ஒலிகளையும் அதிர்வுகளையும் தடுக்கும்."</string>
     <string name="keyguard_more_overflow_text" msgid="9195222469041601365">"+<xliff:g id="NUMBER_OF_NOTIFICATIONS">%d</xliff:g>"</string>
     <string name="speed_bump_explanation" msgid="1288875699658819755">"அவசர நிலைக் குறைவான அறிவிப்புகள் கீழே உள்ளன"</string>
-    <string name="notification_tap_again" msgid="8524949573675922138">"திறக்க, மீண்டும் தட்டவும்"</string>
+    <string name="notification_tap_again" msgid="7590196980943943842">"திறக்க, மீண்டும் தட்டவும்"</string>
     <string name="keyguard_unlock" msgid="8043466894212841998">"திறக்க, மேலே ஸ்வைப் செய்யவும்"</string>
     <string name="phone_hint" msgid="4872890986869209950">"ஃபோனிற்கு ஐகானிலிருந்து ஸ்வைப் செய்யவும்"</string>
     <string name="voice_hint" msgid="8939888732119726665">"குரல் உதவிக்கு ஐகானிலிருந்து ஸ்வைப் செய்யவும்"</string>
@@ -427,7 +418,7 @@
     <string name="accessibility_volume_expand" msgid="5946812790999244205">"விரிவாக்கு"</string>
     <string name="accessibility_volume_collapse" msgid="3609549593031810875">"சுருக்கு"</string>
     <string name="screen_pinning_title" msgid="3273740381976175811">"திரை பொருத்தப்பட்டது"</string>
-    <string name="screen_pinning_description" msgid="3577937698406151604">"பொருத்தியதை விலக்கும்வரை இதைக் காட்சியில் வைக்கும். விலக்க, முந்தையது என்பதைத் தொட்டுப் பிடிக்கவும்."</string>
+    <string name="screen_pinning_description" msgid="7238941806855968768">"பொருத்தியதை விலக்கும் வரை இதைக் காட்சியில் வைக்கும். விலக்க, முந்தையது என்பதைத் தொட்டுப் பிடிக்கவும்."</string>
     <string name="screen_pinning_positive" msgid="3783985798366751226">"புரிந்தது"</string>
     <string name="screen_pinning_negative" msgid="3741602308343880268">"வேண்டாம்"</string>
     <string name="quick_settings_reset_confirmation_title" msgid="748792586749897883">"<xliff:g id="TILE_LABEL">%1$s</xliff:g>ஐ மறைக்கவா?"</string>
@@ -437,15 +428,13 @@
     <string name="volumeui_prompt_allow" msgid="7954396902482228786">"அனுமதி"</string>
     <string name="volumeui_prompt_deny" msgid="5720663643411696731">"நிராகரி"</string>
     <string name="volumeui_notification_title" msgid="4906770126345910955">"ஒலியளவு செய்தி: <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
-    <string name="volumeui_notification_text" msgid="1826889705095768656">"அசலை மீட்டமைக்கத் தொடவும்."</string>
+    <string name="volumeui_notification_text" msgid="8819536904234337445">"அசலை மீட்டமைக்க, தட்டவும்."</string>
     <string name="managed_profile_foreground_toast" msgid="5421487114739245972">"பணி சுயவிவரத்தைப் பயன்படுத்துகிறீர்கள்"</string>
     <string name="volume_stream_content_description_unmute" msgid="4436631538779230857">"%1$s. ஒலி இயக்க, தட்டவும்."</string>
     <string name="volume_stream_content_description_vibrate" msgid="1187944970457807498">"%1$s. அதிர்விற்கு அமைக்க, தட்டவும். அணுகல்தன்மை சேவைகள் ஒலியடக்கப்படக்கூடும்."</string>
     <string name="volume_stream_content_description_mute" msgid="3625049841390467354">"%1$s. ஒலியடக்க, தட்டவும். அணுகல்தன்மை சேவைகள் ஒலியடக்கப்படக்கூடும்."</string>
-    <!-- no translation found for volume_dialog_accessibility_shown_message (1834631467074259998) -->
-    <skip />
-    <!-- no translation found for volume_dialog_accessibility_dismissed_message (51543526013711399) -->
-    <skip />
+    <string name="volume_dialog_accessibility_shown_message" msgid="1834631467074259998">"%s ஒலிக் கட்டுப்பாடுகள் காட்டப்பட்டன. நிராகரிக்க, மேலே ஸ்வைப் செய்யவும்."</string>
+    <string name="volume_dialog_accessibility_dismissed_message" msgid="51543526013711399">"ஒலிக் கட்டுப்பாடுகள் மறைக்கப்பட்டன"</string>
     <string name="system_ui_tuner" msgid="708224127392452018">"System UI Tuner"</string>
     <string name="show_battery_percentage" msgid="5444136600512968798">"உள்ளிணைந்த பேட்டரி சதவீதத்தைக் காட்டு"</string>
     <string name="show_battery_percentage_summary" msgid="3215025775576786037">"சார்ஜ் செய்யாத போது, நிலைப் பட்டி ஐகானின் உள்ளே பேட்டரி அளவு சதவீதத்தைக் காட்டும்"</string>
@@ -641,27 +630,17 @@
     <string name="accessibility_qs_edit_tile_removed" msgid="8584304916627913440">"<xliff:g id="TILE_NAME">%1$s</xliff:g> அகற்றப்பட்டது"</string>
     <string name="accessibility_qs_edit_tile_moved" msgid="4343693412689365038">"<xliff:g id="TILE_NAME">%1$s</xliff:g> நிலை <xliff:g id="POSITION">%2$d</xliff:g>க்கு நகர்த்தப்பட்டது"</string>
     <string name="accessibility_desc_quick_settings_edit" msgid="8073587401747016103">"விரைவு அமைப்புகள் திருத்தி."</string>
-    <!-- no translation found for accessibility_desc_notification_icon (8352414185263916335) -->
-    <skip />
+    <string name="accessibility_desc_notification_icon" msgid="8352414185263916335">"<xliff:g id="ID_1">%1$s</xliff:g> அறிவிப்பு: <xliff:g id="ID_2">%2$s</xliff:g>"</string>
     <string name="dock_forced_resizable" msgid="5914261505436217520">"திரைப் பிரிப்பில் பயன்பாடு வேலைசெய்யாமல் போகக்கூடும்."</string>
     <string name="dock_non_resizeble_failed_to_dock_text" msgid="3871617304250207291">"திரையைப் பிரிப்பதைப் பயன்பாடு ஆதரிக்கவில்லை."</string>
-    <!-- no translation found for accessibility_quick_settings_settings (6132460890024942157) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_expand (2375165227880477530) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_collapse (1792625797142648105) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_alarm_set (1863000242431528676) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_user (1567445362870421770) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_no_internet (31890692343084075) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_open_details (4230931801728005194) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_open_settings (7806613775728380737) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_edit (7839992848995240393) -->
-    <skip />
+    <string name="accessibility_quick_settings_settings" msgid="6132460890024942157">"அமைப்புகளைத் திற."</string>
+    <string name="accessibility_quick_settings_expand" msgid="2375165227880477530">"விரைவு அமைப்புகளைத் திற."</string>
+    <string name="accessibility_quick_settings_collapse" msgid="1792625797142648105">"விரைவு அமைப்புகளை மூடு."</string>
+    <string name="accessibility_quick_settings_alarm_set" msgid="1863000242431528676">"அலாரம் அமைக்கப்பட்டது."</string>
+    <string name="accessibility_quick_settings_user" msgid="1567445362870421770">"<xliff:g id="ID_1">%s</xliff:g> என்ற பெயரில் உள்நுழைந்துள்ளீர்கள்"</string>
+    <string name="accessibility_quick_settings_no_internet" msgid="31890692343084075">"இணைய இணைப்பு இல்லை."</string>
+    <string name="accessibility_quick_settings_open_details" msgid="4230931801728005194">"விவரங்களைத் திற."</string>
+    <string name="accessibility_quick_settings_open_settings" msgid="7806613775728380737">"<xliff:g id="ID_1">%s</xliff:g> அமைப்புகளைத் திற."</string>
+    <string name="accessibility_quick_settings_edit" msgid="7839992848995240393">"அமைப்புகளின் வரிசை முறையைத் திருத்து."</string>
     <string name="accessibility_quick_settings_page" msgid="5032979051755200721">"பக்கம் <xliff:g id="ID_1">%1$d</xliff:g> / <xliff:g id="ID_2">%2$d</xliff:g>"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-ta-rIN/strings_tv.xml b/packages/SystemUI/res/values-ta-rIN/strings_tv.xml
index 6868b1e..f875a37 100644
--- a/packages/SystemUI/res/values-ta-rIN/strings_tv.xml
+++ b/packages/SystemUI/res/values-ta-rIN/strings_tv.xml
@@ -24,10 +24,8 @@
     <string name="pip_play" msgid="674145557658227044">"இயக்கு"</string>
     <string name="pip_pause" msgid="8412075640017218862">"இடைநிறுத்து"</string>
     <string name="pip_hold_home" msgid="340086535668778109">"PIPஐக் கட்டுப்படுத்த, "<b>"முகப்பைப்"</b>" பிடித்திருக்கவும்"</string>
-    <!-- no translation found for pip_onboarding_title (7850436557670253991) -->
-    <skip />
-    <!-- no translation found for pip_onboarding_description (4028124563309465267) -->
-    <skip />
+    <string name="pip_onboarding_title" msgid="7850436557670253991">"பிக்ச்சர் இன் பிக்ச்சர்"</string>
+    <string name="pip_onboarding_description" msgid="4028124563309465267">"இது நீங்கள் அடுத்த வீடியோவை இயக்கும் வரை தற்போதுள்ள வீடியோவை வைத்திருக்கும். அதைக் கட்டுப்படுத்த, "<b>"முகப்பு"</b>" என்பதை அழுத்திப் பிடிக்கவும்."</string>
     <string name="pip_onboarding_button" msgid="3957426748484904611">"சரி"</string>
     <string name="recents_tv_dismiss" msgid="3555093879593377731">"நிராகரி"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-te-rIN/strings.xml b/packages/SystemUI/res/values-te-rIN/strings.xml
index 271f80e..5e19564 100644
--- a/packages/SystemUI/res/values-te-rIN/strings.xml
+++ b/packages/SystemUI/res/values-te-rIN/strings.xml
@@ -71,7 +71,7 @@
     <string name="screenshot_saving_title" msgid="8242282144535555697">"స్క్రీన్‌షాట్‌ను సేవ్ చేస్తోంది…"</string>
     <string name="screenshot_saving_text" msgid="2419718443411738818">"స్క్రీన్‌షాట్ సేవ్ చేయబడుతోంది."</string>
     <string name="screenshot_saved_title" msgid="6461865960961414961">"స్క్రీన్‌షాట్ క్యాప్చర్ చేయబడింది."</string>
-    <string name="screenshot_saved_text" msgid="1152839647677558815">"మీ స్క్రీన్‌షాట్‌ను వీక్షించడానికి తాకండి."</string>
+    <string name="screenshot_saved_text" msgid="2685605830386712477">"మీ స్క్రీన్‌షాట్‌ను వీక్షించడానికి నొక్కండి."</string>
     <string name="screenshot_failed_title" msgid="705781116746922771">"స్క్రీన్‌షాట్‌ను క్యాప్చర్ చేయడం సాధ్యపడలేదు."</string>
     <string name="screenshot_failed_to_save_unknown_text" msgid="7887826345701753830">"స్క్రీన్‌షాట్‌ని సేవ్ చేస్తున్నప్పుడు సమస్య సంభవించింది."</string>
     <string name="screenshot_failed_to_save_text" msgid="2592658083866306296">"పరిమిత నిల్వ స్థలం కారణంగా స్క్రీన్‌షాట్‌ను సేవ్ చేయడం సాధ్యపడదు."</string>
@@ -118,8 +118,7 @@
     <string name="accessibility_data_signal_full" msgid="2708384608124519369">"డేటా సిగ్నల్ సంపూర్ణంగా ఉంది."</string>
     <string name="accessibility_wifi_name" msgid="7202151365171148501">"<xliff:g id="WIFI">%s</xliff:g>కి కనెక్ట్ చేయబడింది."</string>
     <string name="accessibility_bluetooth_name" msgid="8441517146585531676">"<xliff:g id="BLUETOOTH">%s</xliff:g>కి కనెక్ట్ చేయబడింది."</string>
-    <!-- no translation found for accessibility_cast_name (4026393061247081201) -->
-    <skip />
+    <string name="accessibility_cast_name" msgid="4026393061247081201">"<xliff:g id="CAST">%s</xliff:g>కి కనెక్ట్ చేయబడింది."</string>
     <string name="accessibility_no_wimax" msgid="4329180129727630368">"WiMAX లేదు."</string>
     <string name="accessibility_wimax_one_bar" msgid="4170994299011863648">"WiMAX ఒక బార్ కలిగి ఉంది."</string>
     <string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"WiMAX రెండు బార్‌లు కలిగి ఉంది."</string>
@@ -150,17 +149,14 @@
     <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"ఎడ్జ్"</string>
     <string name="accessibility_data_connection_wifi" msgid="2324496756590645221">"Wi-Fi"</string>
     <string name="accessibility_no_sim" msgid="8274017118472455155">"సిమ్ లేదు."</string>
-    <!-- no translation found for accessibility_cell_data (7080312242791850520) -->
-    <skip />
-    <!-- no translation found for accessibility_cell_data_on (4310018593519761767) -->
-    <skip />
+    <string name="accessibility_cell_data" msgid="7080312242791850520">"సెల్యులార్ డేటా"</string>
+    <string name="accessibility_cell_data_on" msgid="4310018593519761767">"సెల్యులార్ డేటా ఆన్‌లో ఉంది"</string>
     <string name="accessibility_cell_data_off" msgid="8000803571751407635">"సెల్యులార్ డేటా ఆఫ్‌లో ఉంది"</string>
     <string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"బ్లూటూత్ టెథెరింగ్."</string>
     <string name="accessibility_airplane_mode" msgid="834748999790763092">"ఎయిర్‌ప్లేన్ మోడ్."</string>
     <string name="accessibility_no_sims" msgid="3957997018324995781">"SIM కార్డ్ లేదు."</string>
     <string name="accessibility_carrier_network_change_mode" msgid="4017301580441304305">"క్యారియర్ నెట్‌వర్క్ మారుస్తుంది."</string>
-    <!-- no translation found for accessibility_battery_details (7645516654955025422) -->
-    <skip />
+    <string name="accessibility_battery_details" msgid="7645516654955025422">"బ్యాటరీ వివరాలను తెరుస్తుంది"</string>
     <string name="accessibility_battery_level" msgid="7451474187113371965">"బ్యాటరీ <xliff:g id="NUMBER">%d</xliff:g> శాతం."</string>
     <string name="accessibility_battery_level_charging" msgid="1147587904439319646">"బ్యాటరీ ఛార్జ్ అవుతోంది, <xliff:g id="BATTERY_PERCENTAGE">%d</xliff:g> శాతం."</string>
     <string name="accessibility_settings_button" msgid="799583911231893380">"సిస్టమ్ సెట్టింగ్‌లు."</string>
@@ -200,13 +196,11 @@
     <string name="accessibility_quick_settings_dnd_priority_on" msgid="1448402297221249355">"అంతరాయం కలిగించవద్దు ఆన్‌లో ఉంది, ప్రాధాన్యత మాత్రమే."</string>
     <string name="accessibility_quick_settings_dnd_none_on" msgid="6882582132662613537">"అంతరాయం కలిగించవద్దు ఆన్‌లో ఉంది, మొత్తం నిశ్శబ్దం."</string>
     <string name="accessibility_quick_settings_dnd_alarms_on" msgid="9152834845587554157">"అంతరాయం కలిగించవద్దు ఆన్‌లో ఉంది, అలారాలు మాత్రమే."</string>
-    <!-- no translation found for accessibility_quick_settings_dnd (6607873236717185815) -->
-    <skip />
+    <string name="accessibility_quick_settings_dnd" msgid="6607873236717185815">"అంతరాయం కలిగించవద్దు."</string>
     <string name="accessibility_quick_settings_dnd_off" msgid="2371832603753738581">"అంతరాయం కలిగించవద్దు ఆఫ్‌లో ఉంది."</string>
     <string name="accessibility_quick_settings_dnd_changed_off" msgid="898107593453022935">"అంతరాయం కలిగించవద్దు ఆఫ్ చేయబడింది."</string>
     <string name="accessibility_quick_settings_dnd_changed_on" msgid="4483780856613561039">"అంతరాయం కలిగించవద్దు ఆన్ చేయబడింది."</string>
-    <!-- no translation found for accessibility_quick_settings_bluetooth (6341675755803320038) -->
-    <skip />
+    <string name="accessibility_quick_settings_bluetooth" msgid="6341675755803320038">"బ్లూటూత్."</string>
     <string name="accessibility_quick_settings_bluetooth_off" msgid="2133631372372064339">"బ్లూటూత్ ఆఫ్‌లో ఉంది."</string>
     <string name="accessibility_quick_settings_bluetooth_on" msgid="7681999166216621838">"బ్లూటూత్ ఆన్‌లో ఉంది."</string>
     <string name="accessibility_quick_settings_bluetooth_connecting" msgid="6953242966685343855">"బ్లూటూత్ కనెక్ట్ అవుతోంది."</string>
@@ -272,10 +266,8 @@
     <string name="quick_settings_bluetooth_detail_empty_text" msgid="4910015762433302860">"జత చేసిన పరికరాలు ఏవీ అందుబాటులో లేవు"</string>
     <string name="quick_settings_brightness_label" msgid="6968372297018755815">"ప్రకాశం"</string>
     <string name="quick_settings_rotation_unlocked_label" msgid="7305323031808150099">"స్వయంచాలకంగా తిప్పడం"</string>
-    <!-- no translation found for accessibility_quick_settings_rotation (4231661040698488779) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_rotation_value (1428962304214992318) -->
-    <skip />
+    <string name="accessibility_quick_settings_rotation" msgid="4231661040698488779">"స్క్రీన్‌ను స్వయంచాలకంగా తిప్పు"</string>
+    <string name="accessibility_quick_settings_rotation_value" msgid="1428962304214992318">"<xliff:g id="ID_1">%s</xliff:g>కి సెట్ చేయి"</string>
     <string name="quick_settings_rotation_locked_label" msgid="6359205706154282377">"తిప్పడం లాక్ చేయబడింది"</string>
     <string name="quick_settings_rotation_locked_portrait_label" msgid="5102691921442135053">"పోర్ట్రెయిట్"</string>
     <string name="quick_settings_rotation_locked_landscape_label" msgid="8553157770061178719">"ల్యాండ్‌స్కేప్"</string>
@@ -294,8 +286,7 @@
     <string name="quick_settings_wifi_not_connected" msgid="7171904845345573431">"కనెక్ట్ చేయబడలేదు"</string>
     <string name="quick_settings_wifi_no_network" msgid="2221993077220856376">"నెట్‌వర్క్ లేదు"</string>
     <string name="quick_settings_wifi_off_label" msgid="7558778100843885864">"Wi-Fi ఆఫ్‌లో ఉంది"</string>
-    <!-- no translation found for quick_settings_wifi_on_label (7607810331387031235) -->
-    <skip />
+    <string name="quick_settings_wifi_on_label" msgid="7607810331387031235">"Wi-Fi ఆన్‌లో ఉంది"</string>
     <string name="quick_settings_wifi_detail_empty_text" msgid="269990350383909226">"Wi-Fi నెట్‌వర్క్‌లు ఏవీ అందుబాటులో లేవు"</string>
     <string name="quick_settings_cast_title" msgid="7709016546426454729">"ప్రసారం చేయండి"</string>
     <string name="quick_settings_casting" msgid="6601710681033353316">"ప్రసారం చేస్తోంది"</string>
@@ -349,7 +340,7 @@
     <string name="zen_silence_introduction" msgid="3137882381093271568">"ఇది అలారాలు, సంగీతం, వీడియోలు మరియు గేమ్‌లతో సహా అన్ని ధ్వనులు మరియు వైబ్రేషన్‌లను బ్లాక్ చేస్తుంది."</string>
     <string name="keyguard_more_overflow_text" msgid="9195222469041601365">"+<xliff:g id="NUMBER_OF_NOTIFICATIONS">%d</xliff:g>"</string>
     <string name="speed_bump_explanation" msgid="1288875699658819755">"తక్కువ అత్యవసర నోటిఫికేషన్‌లు దిగువన"</string>
-    <string name="notification_tap_again" msgid="8524949573675922138">"తెరవడానికి మళ్లీ తాకండి"</string>
+    <string name="notification_tap_again" msgid="7590196980943943842">"తెరవడానికి మళ్లీ నొక్కండి"</string>
     <string name="keyguard_unlock" msgid="8043466894212841998">"అన్‌లాక్ చేయడానికి ఎగువకు స్వైప్ చేయండి"</string>
     <string name="phone_hint" msgid="4872890986869209950">"ఫోన్ కోసం చిహ్నాన్ని స్వైప్ చేయండి"</string>
     <string name="voice_hint" msgid="8939888732119726665">"వాయిస్ సహాయకం చిహ్నం నుండి స్వైప్"</string>
@@ -427,7 +418,7 @@
     <string name="accessibility_volume_expand" msgid="5946812790999244205">"విస్తరింపజేయండి"</string>
     <string name="accessibility_volume_collapse" msgid="3609549593031810875">"కుదించండి"</string>
     <string name="screen_pinning_title" msgid="3273740381976175811">"స్క్రీన్ పిన్ చేయబడింది"</string>
-    <string name="screen_pinning_description" msgid="3577937698406151604">"ఇది మీరు అన్‌పిన్ చేసే వరకు దీన్ని వీక్షణలో ఉంచుతుంది. అన్‌పిన్ చేయడానికి వెనుకకు బటన్‌ను తాకి, ఉంచండి."</string>
+    <string name="screen_pinning_description" msgid="7238941806855968768">"ఇలా చేయడం వలన మీరు అన్‌పిన్ చేసే వరకు ఇది వీక్షణలో ఉంచబడుతుంది. అన్‌పిన్ చేయడానికి వెనుకకు తాకి, అలాగే పట్టుకోండి."</string>
     <string name="screen_pinning_positive" msgid="3783985798366751226">"అర్థమైంది"</string>
     <string name="screen_pinning_negative" msgid="3741602308343880268">"వద్దు, ధన్యవాదాలు"</string>
     <string name="quick_settings_reset_confirmation_title" msgid="748792586749897883">"<xliff:g id="TILE_LABEL">%1$s</xliff:g>ని దాచాలా?"</string>
@@ -437,15 +428,13 @@
     <string name="volumeui_prompt_allow" msgid="7954396902482228786">"అనుమతించు"</string>
     <string name="volumeui_prompt_deny" msgid="5720663643411696731">"తిరస్కరించు"</string>
     <string name="volumeui_notification_title" msgid="4906770126345910955">"<xliff:g id="APP_NAME">%1$s</xliff:g> అనేది వాల్యూమ్ డైలాగ్"</string>
-    <string name="volumeui_notification_text" msgid="1826889705095768656">"అసలుదాన్ని పునరుద్ధరించడానికి తాకండి."</string>
+    <string name="volumeui_notification_text" msgid="8819536904234337445">"అసలు దాన్ని పునరుద్ధరించడానికి నొక్కండి."</string>
     <string name="managed_profile_foreground_toast" msgid="5421487114739245972">"మీరు మీ కార్యాలయ ప్రొఫైల్‌ను ఉపయోగిస్తున్నారు"</string>
     <string name="volume_stream_content_description_unmute" msgid="4436631538779230857">"%1$s. అన్‌మ్యూట్ చేయడానికి నొక్కండి."</string>
     <string name="volume_stream_content_description_vibrate" msgid="1187944970457807498">"%1$s. వైబ్రేషన్‌కు సెట్ చేయడానికి నొక్కండి. ప్రాప్యత సేవలు మ్యూట్ చేయబడవచ్చు."</string>
     <string name="volume_stream_content_description_mute" msgid="3625049841390467354">"%1$s. మ్యూట్ చేయడానికి నొక్కండి. ప్రాప్యత సేవలు మ్యూట్ చేయబడవచ్చు."</string>
-    <!-- no translation found for volume_dialog_accessibility_shown_message (1834631467074259998) -->
-    <skip />
-    <!-- no translation found for volume_dialog_accessibility_dismissed_message (51543526013711399) -->
-    <skip />
+    <string name="volume_dialog_accessibility_shown_message" msgid="1834631467074259998">"%s వాల్యూమ్ నియంత్రణలు చూపబడ్డాయి. తీసివేయడానికి పైకి స్వైప్ చేయండి."</string>
+    <string name="volume_dialog_accessibility_dismissed_message" msgid="51543526013711399">"వాల్యూమ్ నియంత్రణలు దాచబడ్డాయి"</string>
     <string name="system_ui_tuner" msgid="708224127392452018">"సిస్టమ్ UI ట్యూనర్"</string>
     <string name="show_battery_percentage" msgid="5444136600512968798">"పొందుపరిచిన బ్యాటరీ శాతం చూపు"</string>
     <string name="show_battery_percentage_summary" msgid="3215025775576786037">"ఛార్జింగ్‌లో లేనప్పుడు స్థితి పట్టీ చిహ్నం లోపల బ్యాటరీ స్థాయి శాతం చూపుతుంది"</string>
@@ -641,27 +630,17 @@
     <string name="accessibility_qs_edit_tile_removed" msgid="8584304916627913440">"<xliff:g id="TILE_NAME">%1$s</xliff:g> తీసివేయబడింది"</string>
     <string name="accessibility_qs_edit_tile_moved" msgid="4343693412689365038">"<xliff:g id="TILE_NAME">%1$s</xliff:g> <xliff:g id="POSITION">%2$d</xliff:g>వ స్థానానికి తరలించబడింది"</string>
     <string name="accessibility_desc_quick_settings_edit" msgid="8073587401747016103">"శీఘ్ర సెట్టింగ్‌ల ఎడిటర్."</string>
-    <!-- no translation found for accessibility_desc_notification_icon (8352414185263916335) -->
-    <skip />
+    <string name="accessibility_desc_notification_icon" msgid="8352414185263916335">"<xliff:g id="ID_1">%1$s</xliff:g> నోటిఫికేషన్: <xliff:g id="ID_2">%2$s</xliff:g>"</string>
     <string name="dock_forced_resizable" msgid="5914261505436217520">"స్క్రీన్ విభజనతో అనువర్తనం పని చేయకపోవచ్చు."</string>
     <string name="dock_non_resizeble_failed_to_dock_text" msgid="3871617304250207291">"అనువర్తనంలో స్క్రీన్ విభజనకు మద్దతు లేదు."</string>
-    <!-- no translation found for accessibility_quick_settings_settings (6132460890024942157) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_expand (2375165227880477530) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_collapse (1792625797142648105) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_alarm_set (1863000242431528676) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_user (1567445362870421770) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_no_internet (31890692343084075) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_open_details (4230931801728005194) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_open_settings (7806613775728380737) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_edit (7839992848995240393) -->
-    <skip />
+    <string name="accessibility_quick_settings_settings" msgid="6132460890024942157">"సెట్టింగ్‌లను తెరవండి."</string>
+    <string name="accessibility_quick_settings_expand" msgid="2375165227880477530">"శీఘ్ర సెట్టింగ్‌లను తెరవండి."</string>
+    <string name="accessibility_quick_settings_collapse" msgid="1792625797142648105">"శీఘ్ర సెట్టింగ్‌లను మూసివేయండి."</string>
+    <string name="accessibility_quick_settings_alarm_set" msgid="1863000242431528676">"అలారం సెట్ చేయబడింది."</string>
+    <string name="accessibility_quick_settings_user" msgid="1567445362870421770">"<xliff:g id="ID_1">%s</xliff:g> వలె సైన్ ఇన్ చేసారు"</string>
+    <string name="accessibility_quick_settings_no_internet" msgid="31890692343084075">"ఇంటర్నెట్ వద్దు."</string>
+    <string name="accessibility_quick_settings_open_details" msgid="4230931801728005194">"వివరాలను తెరవండి."</string>
+    <string name="accessibility_quick_settings_open_settings" msgid="7806613775728380737">"<xliff:g id="ID_1">%s</xliff:g> సెట్టింగ్‌లను తెరవండి."</string>
+    <string name="accessibility_quick_settings_edit" msgid="7839992848995240393">"సెట్టింగ్‌ల క్రమాన్ని సవరించండి."</string>
     <string name="accessibility_quick_settings_page" msgid="5032979051755200721">"<xliff:g id="ID_2">%2$d</xliff:g>లో <xliff:g id="ID_1">%1$d</xliff:g>వ పేజీ"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-te-rIN/strings_tv.xml b/packages/SystemUI/res/values-te-rIN/strings_tv.xml
index fe1e472..c48b6b9 100644
--- a/packages/SystemUI/res/values-te-rIN/strings_tv.xml
+++ b/packages/SystemUI/res/values-te-rIN/strings_tv.xml
@@ -24,10 +24,8 @@
     <string name="pip_play" msgid="674145557658227044">"ప్లే చేయి"</string>
     <string name="pip_pause" msgid="8412075640017218862">"పాజ్ చేయి"</string>
     <string name="pip_hold_home" msgid="340086535668778109">"PIP నియం. "<b>"HOME"</b>"నొక్కిఉంచండి"</string>
-    <!-- no translation found for pip_onboarding_title (7850436557670253991) -->
-    <skip />
-    <!-- no translation found for pip_onboarding_description (4028124563309465267) -->
-    <skip />
+    <string name="pip_onboarding_title" msgid="7850436557670253991">"చిత్రంలో చిత్రం"</string>
+    <string name="pip_onboarding_description" msgid="4028124563309465267">"ఇది మీరు మరొకటి ప్లే చేసే వరకు మీ వీడియోను వీక్షణలో ఉంచుతుంది. దాన్ని నియంత్రించడానికి "<b>"హోమ్"</b>" నొక్కి, పట్టుకోండి."</string>
     <string name="pip_onboarding_button" msgid="3957426748484904611">"అర్థమైంది"</string>
     <string name="recents_tv_dismiss" msgid="3555093879593377731">"తీసివేస్తుంది"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-th/strings.xml b/packages/SystemUI/res/values-th/strings.xml
index 3038c54..c4b5152 100644
--- a/packages/SystemUI/res/values-th/strings.xml
+++ b/packages/SystemUI/res/values-th/strings.xml
@@ -71,7 +71,7 @@
     <string name="screenshot_saving_title" msgid="8242282144535555697">"กำลังบันทึกภาพหน้าจอ..."</string>
     <string name="screenshot_saving_text" msgid="2419718443411738818">"กำลังบันทึกภาพหน้าจอ"</string>
     <string name="screenshot_saved_title" msgid="6461865960961414961">"จับภาพหน้าจอแล้ว"</string>
-    <string name="screenshot_saved_text" msgid="1152839647677558815">"แตะเพื่อดูภาพหน้าจอของคุณ"</string>
+    <string name="screenshot_saved_text" msgid="2685605830386712477">"แตะเพื่อดูภาพหน้าจอของคุณ"</string>
     <string name="screenshot_failed_title" msgid="705781116746922771">"ไม่สามารถจับภาพหน้าจอ"</string>
     <string name="screenshot_failed_to_save_unknown_text" msgid="7887826345701753830">"พบปัญหาขณะกำลังบันทึกภาพหน้าจอ"</string>
     <string name="screenshot_failed_to_save_text" msgid="2592658083866306296">"ไม่สามารถบันทึกภาพหน้าจอเนื่องจากพื้นที่เก็บข้อมูลมีจำกัด"</string>
@@ -340,7 +340,7 @@
     <string name="zen_silence_introduction" msgid="3137882381093271568">"การใช้โหมดนี้จะบล็อกเสียงและการสั่นทั้งหมด ซึ่งรวมถึงเสียงปลุก เพลง วิดีโอ และเกม"</string>
     <string name="keyguard_more_overflow_text" msgid="9195222469041601365">"+<xliff:g id="NUMBER_OF_NOTIFICATIONS">%d</xliff:g>"</string>
     <string name="speed_bump_explanation" msgid="1288875699658819755">"การแจ้งเตือนที่เร่งด่วนน้อยด้านล่าง"</string>
-    <string name="notification_tap_again" msgid="8524949573675922138">"แตะอีกครั้งเพื่อเปิด"</string>
+    <string name="notification_tap_again" msgid="7590196980943943842">"แตะอีกครั้งเพื่อเปิด"</string>
     <string name="keyguard_unlock" msgid="8043466894212841998">"เลื่อนเพื่อปลดล็อก"</string>
     <string name="phone_hint" msgid="4872890986869209950">"เลื่อนไอคอนโทรศัพท์"</string>
     <string name="voice_hint" msgid="8939888732119726665">"เลื่อนไอคอนตัวช่วยเสียง"</string>
@@ -418,7 +418,7 @@
     <string name="accessibility_volume_expand" msgid="5946812790999244205">"ขยาย"</string>
     <string name="accessibility_volume_collapse" msgid="3609549593031810875">"ยุบ"</string>
     <string name="screen_pinning_title" msgid="3273740381976175811">"ตรึงหน้าจอแล้ว"</string>
-    <string name="screen_pinning_description" msgid="3577937698406151604">"การดำเนินการนี้จะแสดงหน้าจอนี้ไว้เสมอจนกว่าคุณจะเลิกตรึง แตะ \"กลับ\" ค้างไว้เพื่อเลิกตรึง"</string>
+    <string name="screen_pinning_description" msgid="7238941806855968768">"การดำเนินการนี้จะแสดงหน้าจอนี้ไว้เสมอจนกว่าคุณจะเลิกตรึง แตะ \"กลับ\" ค้างไว้เพื่อเลิกตรึง"</string>
     <string name="screen_pinning_positive" msgid="3783985798366751226">"รับทราบ"</string>
     <string name="screen_pinning_negative" msgid="3741602308343880268">"ไม่เป็นไร ขอบคุณ"</string>
     <string name="quick_settings_reset_confirmation_title" msgid="748792586749897883">"ซ่อน <xliff:g id="TILE_LABEL">%1$s</xliff:g> ไหม"</string>
@@ -428,7 +428,7 @@
     <string name="volumeui_prompt_allow" msgid="7954396902482228786">"อนุญาต"</string>
     <string name="volumeui_prompt_deny" msgid="5720663643411696731">"ปฏิเสธ"</string>
     <string name="volumeui_notification_title" msgid="4906770126345910955">"<xliff:g id="APP_NAME">%1$s</xliff:g> เป็นช่องโต้ตอบระดับเสียง"</string>
-    <string name="volumeui_notification_text" msgid="1826889705095768656">"แตะเพื่อคืนค่าดั้งเดิม"</string>
+    <string name="volumeui_notification_text" msgid="8819536904234337445">"แตะเพื่อคืนค่าเป็นค่าเดิม"</string>
     <string name="managed_profile_foreground_toast" msgid="5421487114739245972">"คุณกำลังใช้โปรไฟล์งานของคุณ"</string>
     <string name="volume_stream_content_description_unmute" msgid="4436631538779230857">"%1$s แตะเพื่อเปิดเสียง"</string>
     <string name="volume_stream_content_description_vibrate" msgid="1187944970457807498">"%1$s แตะเพื่อตั้งค่าให้สั่น อาจมีการปิดเสียงบริการการเข้าถึง"</string>
diff --git a/packages/SystemUI/res/values-tl/strings.xml b/packages/SystemUI/res/values-tl/strings.xml
index ffee6ab..184c5ac 100644
--- a/packages/SystemUI/res/values-tl/strings.xml
+++ b/packages/SystemUI/res/values-tl/strings.xml
@@ -71,7 +71,7 @@
     <string name="screenshot_saving_title" msgid="8242282144535555697">"Sine-save ang screenshot…"</string>
     <string name="screenshot_saving_text" msgid="2419718443411738818">"Sine-save ang screenshot."</string>
     <string name="screenshot_saved_title" msgid="6461865960961414961">"Nakuha ang screenshot."</string>
-    <string name="screenshot_saved_text" msgid="1152839647677558815">"Pindutin upang tingnan ang iyong screenshot."</string>
+    <string name="screenshot_saved_text" msgid="2685605830386712477">"I-tap upang tingnan ang iyong screenshot."</string>
     <string name="screenshot_failed_title" msgid="705781116746922771">"Hindi makuha ang screenshot."</string>
     <string name="screenshot_failed_to_save_unknown_text" msgid="7887826345701753830">"Nagkaroon ng problema habang sine-save ang screenshot."</string>
     <string name="screenshot_failed_to_save_text" msgid="2592658083866306296">"Hindi ma-save ang screenshot dahil sa limitadong espasyo ng storage."</string>
@@ -118,8 +118,7 @@
     <string name="accessibility_data_signal_full" msgid="2708384608124519369">"Puno ang signal ng data."</string>
     <string name="accessibility_wifi_name" msgid="7202151365171148501">"Nakakonekta sa <xliff:g id="WIFI">%s</xliff:g>."</string>
     <string name="accessibility_bluetooth_name" msgid="8441517146585531676">"Nakakonekta sa <xliff:g id="BLUETOOTH">%s</xliff:g>."</string>
-    <!-- no translation found for accessibility_cast_name (4026393061247081201) -->
-    <skip />
+    <string name="accessibility_cast_name" msgid="4026393061247081201">"Nakakonekta sa <xliff:g id="CAST">%s</xliff:g>."</string>
     <string name="accessibility_no_wimax" msgid="4329180129727630368">"Walang WiMAX."</string>
     <string name="accessibility_wimax_one_bar" msgid="4170994299011863648">"WiMAX na isang bar."</string>
     <string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"WiMAX na dalawang bar."</string>
@@ -150,17 +149,14 @@
     <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string>
     <string name="accessibility_data_connection_wifi" msgid="2324496756590645221">"Wi-Fi"</string>
     <string name="accessibility_no_sim" msgid="8274017118472455155">"Walang SIM."</string>
-    <!-- no translation found for accessibility_cell_data (7080312242791850520) -->
-    <skip />
-    <!-- no translation found for accessibility_cell_data_on (4310018593519761767) -->
-    <skip />
+    <string name="accessibility_cell_data" msgid="7080312242791850520">"Cellular Data"</string>
+    <string name="accessibility_cell_data_on" msgid="4310018593519761767">"Naka-on Ang Cellular Data"</string>
     <string name="accessibility_cell_data_off" msgid="8000803571751407635">"Naka-off ang Cellular Data"</string>
     <string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"Pag-tether ng Bluetooth."</string>
     <string name="accessibility_airplane_mode" msgid="834748999790763092">"Mode na eroplano."</string>
     <string name="accessibility_no_sims" msgid="3957997018324995781">"Walang SIM card."</string>
     <string name="accessibility_carrier_network_change_mode" msgid="4017301580441304305">"Nagpapalit ng carrier network."</string>
-    <!-- no translation found for accessibility_battery_details (7645516654955025422) -->
-    <skip />
+    <string name="accessibility_battery_details" msgid="7645516654955025422">"Buksan ang mga detalye ng baterya"</string>
     <string name="accessibility_battery_level" msgid="7451474187113371965">"Baterya <xliff:g id="NUMBER">%d</xliff:g> (na) porsyento."</string>
     <string name="accessibility_battery_level_charging" msgid="1147587904439319646">"Nagcha-charge ang baterya, <xliff:g id="BATTERY_PERCENTAGE">%d</xliff:g> (na) porsyento."</string>
     <string name="accessibility_settings_button" msgid="799583911231893380">"Mga setting ng system."</string>
@@ -200,13 +196,11 @@
     <string name="accessibility_quick_settings_dnd_priority_on" msgid="1448402297221249355">"Naka-on ang huwag istorbohin, priyoridad lang."</string>
     <string name="accessibility_quick_settings_dnd_none_on" msgid="6882582132662613537">"Naka-on ang huwag gambalain, ganap na katahimikan."</string>
     <string name="accessibility_quick_settings_dnd_alarms_on" msgid="9152834845587554157">"Naka-on ang huwag istorbohin, mga alarm lang."</string>
-    <!-- no translation found for accessibility_quick_settings_dnd (6607873236717185815) -->
-    <skip />
+    <string name="accessibility_quick_settings_dnd" msgid="6607873236717185815">"Huwag istorbohin."</string>
     <string name="accessibility_quick_settings_dnd_off" msgid="2371832603753738581">"Naka-off ang huwag istorbohin."</string>
     <string name="accessibility_quick_settings_dnd_changed_off" msgid="898107593453022935">"Na-off na ang huwag istorbohin"</string>
     <string name="accessibility_quick_settings_dnd_changed_on" msgid="4483780856613561039">"Na-on na ang huwag istorbohin."</string>
-    <!-- no translation found for accessibility_quick_settings_bluetooth (6341675755803320038) -->
-    <skip />
+    <string name="accessibility_quick_settings_bluetooth" msgid="6341675755803320038">"Bluetooth."</string>
     <string name="accessibility_quick_settings_bluetooth_off" msgid="2133631372372064339">"Naka-off ang Bluetooth."</string>
     <string name="accessibility_quick_settings_bluetooth_on" msgid="7681999166216621838">"Naka-on ang Bluetooth."</string>
     <string name="accessibility_quick_settings_bluetooth_connecting" msgid="6953242966685343855">"Kumokonekta ang Bluetooth."</string>
@@ -272,10 +266,8 @@
     <string name="quick_settings_bluetooth_detail_empty_text" msgid="4910015762433302860">"Walang available na mga magkapares na device"</string>
     <string name="quick_settings_brightness_label" msgid="6968372297018755815">"Brightness"</string>
     <string name="quick_settings_rotation_unlocked_label" msgid="7305323031808150099">"Awtomatikong i-rotate"</string>
-    <!-- no translation found for accessibility_quick_settings_rotation (4231661040698488779) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_rotation_value (1428962304214992318) -->
-    <skip />
+    <string name="accessibility_quick_settings_rotation" msgid="4231661040698488779">"Awtomatikong i-rotate ang screen"</string>
+    <string name="accessibility_quick_settings_rotation_value" msgid="1428962304214992318">"Itakda sa <xliff:g id="ID_1">%s</xliff:g>"</string>
     <string name="quick_settings_rotation_locked_label" msgid="6359205706154282377">"Naka-lock ang pag-ikot"</string>
     <string name="quick_settings_rotation_locked_portrait_label" msgid="5102691921442135053">"Portrait"</string>
     <string name="quick_settings_rotation_locked_landscape_label" msgid="8553157770061178719">"Landscape"</string>
@@ -294,8 +286,7 @@
     <string name="quick_settings_wifi_not_connected" msgid="7171904845345573431">"Hindi Nakakonekta"</string>
     <string name="quick_settings_wifi_no_network" msgid="2221993077220856376">"Walang Network"</string>
     <string name="quick_settings_wifi_off_label" msgid="7558778100843885864">"Naka-off ang Wi-Fi"</string>
-    <!-- no translation found for quick_settings_wifi_on_label (7607810331387031235) -->
-    <skip />
+    <string name="quick_settings_wifi_on_label" msgid="7607810331387031235">"Naka-on Ang Wi-Fi"</string>
     <string name="quick_settings_wifi_detail_empty_text" msgid="269990350383909226">"Walang available na mga Wi-Fi network"</string>
     <string name="quick_settings_cast_title" msgid="7709016546426454729">"I-cast"</string>
     <string name="quick_settings_casting" msgid="6601710681033353316">"Nagka-cast"</string>
@@ -349,7 +340,7 @@
     <string name="zen_silence_introduction" msgid="3137882381093271568">"Bina-block nito ang LAHAT ng tunog at pag-vibrate, kabilang ang mula sa mga alarm, musika, video at laro."</string>
     <string name="keyguard_more_overflow_text" msgid="9195222469041601365">"+<xliff:g id="NUMBER_OF_NOTIFICATIONS">%d</xliff:g>"</string>
     <string name="speed_bump_explanation" msgid="1288875699658819755">"Nasa ibaba ang mga notification na hindi masyadong mahalaga"</string>
-    <string name="notification_tap_again" msgid="8524949573675922138">"Pinduting muli upang buksan"</string>
+    <string name="notification_tap_again" msgid="7590196980943943842">"I-tap ulit upang buksan"</string>
     <string name="keyguard_unlock" msgid="8043466894212841998">"I-swipe pataas upang i-unlock"</string>
     <string name="phone_hint" msgid="4872890986869209950">"Mag-swipe mula sa icon para sa telepono"</string>
     <string name="voice_hint" msgid="8939888732119726665">"Mag-swipe mula sa icon para sa voice assist"</string>
@@ -427,7 +418,7 @@
     <string name="accessibility_volume_expand" msgid="5946812790999244205">"Palawakin"</string>
     <string name="accessibility_volume_collapse" msgid="3609549593031810875">"I-collapse"</string>
     <string name="screen_pinning_title" msgid="3273740381976175811">"Naka-pin ang screen"</string>
-    <string name="screen_pinning_description" msgid="3577937698406151604">"Pinapanatili nitong nasa view ito hanggang sa mag-unpin ka. Pindutin nang matagal ang Bumalik upang mag-unpin."</string>
+    <string name="screen_pinning_description" msgid="7238941806855968768">"Pinapanatili nitong nakikita ito hanggang sa mag-unpin ka. Pindutin nang matagal ang Bumalik upang mag-unpin."</string>
     <string name="screen_pinning_positive" msgid="3783985798366751226">"Nakuha ko"</string>
     <string name="screen_pinning_negative" msgid="3741602308343880268">"Hindi, salamat na lang"</string>
     <string name="quick_settings_reset_confirmation_title" msgid="748792586749897883">"Itago ang <xliff:g id="TILE_LABEL">%1$s</xliff:g>?"</string>
@@ -437,15 +428,13 @@
     <string name="volumeui_prompt_allow" msgid="7954396902482228786">"Payagan"</string>
     <string name="volumeui_prompt_deny" msgid="5720663643411696731">"Tanggihan"</string>
     <string name="volumeui_notification_title" msgid="4906770126345910955">"Ang <xliff:g id="APP_NAME">%1$s</xliff:g> ang volume dialog"</string>
-    <string name="volumeui_notification_text" msgid="1826889705095768656">"Pindutin upang ibalik ang orihinal."</string>
+    <string name="volumeui_notification_text" msgid="8819536904234337445">"I-tap upang i-restore ang orihinal."</string>
     <string name="managed_profile_foreground_toast" msgid="5421487114739245972">"Ginagamit mo ang iyong profile sa trabaho"</string>
     <string name="volume_stream_content_description_unmute" msgid="4436631538779230857">"%1$s. I-tap upang i-unmute."</string>
     <string name="volume_stream_content_description_vibrate" msgid="1187944970457807498">"%1$s. I-tap upang itakda na mag-vibrate. Maaaring i-mute ang mga serbisyo sa Accessibility."</string>
     <string name="volume_stream_content_description_mute" msgid="3625049841390467354">"%1$s. I-tap upang i-mute. Maaaring i-mute ang mga serbisyo sa Accessibility."</string>
-    <!-- no translation found for volume_dialog_accessibility_shown_message (1834631467074259998) -->
-    <skip />
-    <!-- no translation found for volume_dialog_accessibility_dismissed_message (51543526013711399) -->
-    <skip />
+    <string name="volume_dialog_accessibility_shown_message" msgid="1834631467074259998">"Ipinapakita ang mga kontrol ng volume ng %s. Mag-swipe pataas upang i-dismiss."</string>
+    <string name="volume_dialog_accessibility_dismissed_message" msgid="51543526013711399">"Nakatago ang mga kontrol ng volume"</string>
     <string name="system_ui_tuner" msgid="708224127392452018">"Tuner ng System UI"</string>
     <string name="show_battery_percentage" msgid="5444136600512968798">"Ipakita ang naka-embed na porsyento ng baterya"</string>
     <string name="show_battery_percentage_summary" msgid="3215025775576786037">"Ipakita ang porsyento ng antas ng baterya na nasa icon ng status bar kapag nagcha-charge"</string>
@@ -641,27 +630,17 @@
     <string name="accessibility_qs_edit_tile_removed" msgid="8584304916627913440">"Inalis ang <xliff:g id="TILE_NAME">%1$s</xliff:g>"</string>
     <string name="accessibility_qs_edit_tile_moved" msgid="4343693412689365038">"Inilipat ang <xliff:g id="TILE_NAME">%1$s</xliff:g> sa posisyon <xliff:g id="POSITION">%2$d</xliff:g>"</string>
     <string name="accessibility_desc_quick_settings_edit" msgid="8073587401747016103">"Editor ng Mga mabilisang setting."</string>
-    <!-- no translation found for accessibility_desc_notification_icon (8352414185263916335) -->
-    <skip />
+    <string name="accessibility_desc_notification_icon" msgid="8352414185263916335">"Notification sa <xliff:g id="ID_1">%1$s</xliff:g>: <xliff:g id="ID_2">%2$s</xliff:g>"</string>
     <string name="dock_forced_resizable" msgid="5914261505436217520">"Maaaring hindi gumana ang app sa split-screen."</string>
     <string name="dock_non_resizeble_failed_to_dock_text" msgid="3871617304250207291">"Hindi sinusuportahan ng app ang split-screen."</string>
-    <!-- no translation found for accessibility_quick_settings_settings (6132460890024942157) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_expand (2375165227880477530) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_collapse (1792625797142648105) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_alarm_set (1863000242431528676) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_user (1567445362870421770) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_no_internet (31890692343084075) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_open_details (4230931801728005194) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_open_settings (7806613775728380737) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_edit (7839992848995240393) -->
-    <skip />
+    <string name="accessibility_quick_settings_settings" msgid="6132460890024942157">"Buksan ang mga setting."</string>
+    <string name="accessibility_quick_settings_expand" msgid="2375165227880477530">"Buksan ang mga mabilisang setting."</string>
+    <string name="accessibility_quick_settings_collapse" msgid="1792625797142648105">"Isara ang mga mabilisang setting."</string>
+    <string name="accessibility_quick_settings_alarm_set" msgid="1863000242431528676">"Naitakda ang alarm."</string>
+    <string name="accessibility_quick_settings_user" msgid="1567445362870421770">"Naka-sign in bilang <xliff:g id="ID_1">%s</xliff:g>"</string>
+    <string name="accessibility_quick_settings_no_internet" msgid="31890692343084075">"Walang internet."</string>
+    <string name="accessibility_quick_settings_open_details" msgid="4230931801728005194">"Buksan ang mga detalye."</string>
+    <string name="accessibility_quick_settings_open_settings" msgid="7806613775728380737">"Buksan ang mga setting ng <xliff:g id="ID_1">%s</xliff:g>."</string>
+    <string name="accessibility_quick_settings_edit" msgid="7839992848995240393">"I-edit ang pagkakasunud-sunod ng mga setting."</string>
     <string name="accessibility_quick_settings_page" msgid="5032979051755200721">"Page <xliff:g id="ID_1">%1$d</xliff:g> ng <xliff:g id="ID_2">%2$d</xliff:g>"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-tl/strings_tv.xml b/packages/SystemUI/res/values-tl/strings_tv.xml
index 5591328..45fa081 100644
--- a/packages/SystemUI/res/values-tl/strings_tv.xml
+++ b/packages/SystemUI/res/values-tl/strings_tv.xml
@@ -24,10 +24,8 @@
     <string name="pip_play" msgid="674145557658227044">"I-play"</string>
     <string name="pip_pause" msgid="8412075640017218862">"I-pause"</string>
     <string name="pip_hold_home" msgid="340086535668778109">"I-hold ang "<b>"HOME"</b>" para makontrol ang PIP"</string>
-    <!-- no translation found for pip_onboarding_title (7850436557670253991) -->
-    <skip />
-    <!-- no translation found for pip_onboarding_description (4028124563309465267) -->
-    <skip />
+    <string name="pip_onboarding_title" msgid="7850436557670253991">"Larawan sa loob ng larawan"</string>
+    <string name="pip_onboarding_description" msgid="4028124563309465267">"Pinapanatili nitong nakikita ang iyong video hanggang sa mag-play ka ng iba. Pindutin nang matagal ang "<b>"HOME"</b>" upang kontrolin ito."</string>
     <string name="pip_onboarding_button" msgid="3957426748484904611">"OK"</string>
     <string name="recents_tv_dismiss" msgid="3555093879593377731">"I-dismiss"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-tr/strings.xml b/packages/SystemUI/res/values-tr/strings.xml
index afd1414..373b209 100644
--- a/packages/SystemUI/res/values-tr/strings.xml
+++ b/packages/SystemUI/res/values-tr/strings.xml
@@ -71,7 +71,7 @@
     <string name="screenshot_saving_title" msgid="8242282144535555697">"Ekran görüntüsü kaydediliyor..."</string>
     <string name="screenshot_saving_text" msgid="2419718443411738818">"Ekran görüntüsü kaydediliyor."</string>
     <string name="screenshot_saved_title" msgid="6461865960961414961">"Ekran görüntüsü alındı."</string>
-    <string name="screenshot_saved_text" msgid="1152839647677558815">"Ekran görüntünüzü izlemek için dokunun."</string>
+    <string name="screenshot_saved_text" msgid="2685605830386712477">"Ekran görüntünüzü görüntülemek için dokunun."</string>
     <string name="screenshot_failed_title" msgid="705781116746922771">"Ekran görüntüsü alınamadı."</string>
     <string name="screenshot_failed_to_save_unknown_text" msgid="7887826345701753830">"Ekran görüntüsü kaydedilirken sorun oluştu."</string>
     <string name="screenshot_failed_to_save_text" msgid="2592658083866306296">"Depolama alanı sınırlı olduğundan ekran görüntüsü kaydedilemiyor."</string>
@@ -118,8 +118,7 @@
     <string name="accessibility_data_signal_full" msgid="2708384608124519369">"Veri sinyali tam."</string>
     <string name="accessibility_wifi_name" msgid="7202151365171148501">"<xliff:g id="WIFI">%s</xliff:g> ile bağlı."</string>
     <string name="accessibility_bluetooth_name" msgid="8441517146585531676">"<xliff:g id="BLUETOOTH">%s</xliff:g> ile bağlı."</string>
-    <!-- no translation found for accessibility_cast_name (4026393061247081201) -->
-    <skip />
+    <string name="accessibility_cast_name" msgid="4026393061247081201">"<xliff:g id="CAST">%s</xliff:g> bağlantısı kuruldu."</string>
     <string name="accessibility_no_wimax" msgid="4329180129727630368">"WiMAX yok."</string>
     <string name="accessibility_wimax_one_bar" msgid="4170994299011863648">"WiMAX tek çubuk."</string>
     <string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"WiMAX iki çubuk."</string>
@@ -150,17 +149,14 @@
     <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string>
     <string name="accessibility_data_connection_wifi" msgid="2324496756590645221">"Kablosuz"</string>
     <string name="accessibility_no_sim" msgid="8274017118472455155">"SIM kart yok."</string>
-    <!-- no translation found for accessibility_cell_data (7080312242791850520) -->
-    <skip />
-    <!-- no translation found for accessibility_cell_data_on (4310018593519761767) -->
-    <skip />
+    <string name="accessibility_cell_data" msgid="7080312242791850520">"Hücresel Veriler"</string>
+    <string name="accessibility_cell_data_on" msgid="4310018593519761767">"Hücresel Veri Açık"</string>
     <string name="accessibility_cell_data_off" msgid="8000803571751407635">"Hücresel Veri Kapalı"</string>
     <string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"Bluetooth tethering"</string>
     <string name="accessibility_airplane_mode" msgid="834748999790763092">"Uçak modu."</string>
     <string name="accessibility_no_sims" msgid="3957997018324995781">"SIM kart yok."</string>
     <string name="accessibility_carrier_network_change_mode" msgid="4017301580441304305">"Operatör şebekesi değişiyor."</string>
-    <!-- no translation found for accessibility_battery_details (7645516654955025422) -->
-    <skip />
+    <string name="accessibility_battery_details" msgid="7645516654955025422">"Pil ayrıntılarını aç"</string>
     <string name="accessibility_battery_level" msgid="7451474187113371965">"Pil yüzdesi: <xliff:g id="NUMBER">%d</xliff:g>"</string>
     <string name="accessibility_battery_level_charging" msgid="1147587904439319646">"Pil şarj oluyor, yüzde <xliff:g id="BATTERY_PERCENTAGE">%d</xliff:g>."</string>
     <string name="accessibility_settings_button" msgid="799583911231893380">"Sistem ayarları."</string>
@@ -200,13 +196,11 @@
     <string name="accessibility_quick_settings_dnd_priority_on" msgid="1448402297221249355">"Rahatsız etmeyin ayarı açık, yalnızca öncelikliler."</string>
     <string name="accessibility_quick_settings_dnd_none_on" msgid="6882582132662613537">"Rahatsız etmeyin ayarı açık, tamamen sessiz."</string>
     <string name="accessibility_quick_settings_dnd_alarms_on" msgid="9152834845587554157">"Rahatsız etmeyin ayarı açık, yalnızca alarmlar."</string>
-    <!-- no translation found for accessibility_quick_settings_dnd (6607873236717185815) -->
-    <skip />
+    <string name="accessibility_quick_settings_dnd" msgid="6607873236717185815">"Rahatsız etmeyin."</string>
     <string name="accessibility_quick_settings_dnd_off" msgid="2371832603753738581">"\"Rahatsız etmeyin\" ayarı kapalı."</string>
     <string name="accessibility_quick_settings_dnd_changed_off" msgid="898107593453022935">"\"Rahatsız etmeyin\" ayarı kapalı."</string>
     <string name="accessibility_quick_settings_dnd_changed_on" msgid="4483780856613561039">"\"Rahatsız etmeyin\" ayarı açık."</string>
-    <!-- no translation found for accessibility_quick_settings_bluetooth (6341675755803320038) -->
-    <skip />
+    <string name="accessibility_quick_settings_bluetooth" msgid="6341675755803320038">"Bluetooth."</string>
     <string name="accessibility_quick_settings_bluetooth_off" msgid="2133631372372064339">"Bluetooth kapalı."</string>
     <string name="accessibility_quick_settings_bluetooth_on" msgid="7681999166216621838">"Bluetooth açık."</string>
     <string name="accessibility_quick_settings_bluetooth_connecting" msgid="6953242966685343855">"Bluetooth bağlanıyor."</string>
@@ -272,10 +266,8 @@
     <string name="quick_settings_bluetooth_detail_empty_text" msgid="4910015762433302860">"Kullanılabilir eşlenmiş cihaz yok"</string>
     <string name="quick_settings_brightness_label" msgid="6968372297018755815">"Parlaklık"</string>
     <string name="quick_settings_rotation_unlocked_label" msgid="7305323031808150099">"Otomatik döndür"</string>
-    <!-- no translation found for accessibility_quick_settings_rotation (4231661040698488779) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_rotation_value (1428962304214992318) -->
-    <skip />
+    <string name="accessibility_quick_settings_rotation" msgid="4231661040698488779">"Ekranı otomatik döndür"</string>
+    <string name="accessibility_quick_settings_rotation_value" msgid="1428962304214992318">"<xliff:g id="ID_1">%s</xliff:g> olarak ayarla"</string>
     <string name="quick_settings_rotation_locked_label" msgid="6359205706154282377">"Döndürme kilitlendi"</string>
     <string name="quick_settings_rotation_locked_portrait_label" msgid="5102691921442135053">"Dikey"</string>
     <string name="quick_settings_rotation_locked_landscape_label" msgid="8553157770061178719">"Yatay"</string>
@@ -294,8 +286,7 @@
     <string name="quick_settings_wifi_not_connected" msgid="7171904845345573431">"Bağlı Değil"</string>
     <string name="quick_settings_wifi_no_network" msgid="2221993077220856376">"Ağ yok"</string>
     <string name="quick_settings_wifi_off_label" msgid="7558778100843885864">"Kablosuz Kapalı"</string>
-    <!-- no translation found for quick_settings_wifi_on_label (7607810331387031235) -->
-    <skip />
+    <string name="quick_settings_wifi_on_label" msgid="7607810331387031235">"Kablosuz Bağlantı Açık"</string>
     <string name="quick_settings_wifi_detail_empty_text" msgid="269990350383909226">"Kullanılabilir kablosuz ağ yok"</string>
     <string name="quick_settings_cast_title" msgid="7709016546426454729">"Yayınlama"</string>
     <string name="quick_settings_casting" msgid="6601710681033353316">"Yayınlanıyor"</string>
@@ -349,7 +340,7 @@
     <string name="zen_silence_introduction" msgid="3137882381093271568">"Bu seçenek TÜM sesleri ve titreşimleri engeller. Buna alarmlar, müzik, videolar ve oyunlar dahildir."</string>
     <string name="keyguard_more_overflow_text" msgid="9195222469041601365">"+<xliff:g id="NUMBER_OF_NOTIFICATIONS">%d</xliff:g>"</string>
     <string name="speed_bump_explanation" msgid="1288875699658819755">"Daha az acil bildirimler aşağıdadır"</string>
-    <string name="notification_tap_again" msgid="8524949573675922138">"Açmak için tekrar dokunun"</string>
+    <string name="notification_tap_again" msgid="7590196980943943842">"Açmak için tekrar hafifçe vurun"</string>
     <string name="keyguard_unlock" msgid="8043466894212841998">"Kilidi açmak için hızlıca yukarı kaydırın"</string>
     <string name="phone_hint" msgid="4872890986869209950">"Telefon için, simgeden hızlıca kaydırın"</string>
     <string name="voice_hint" msgid="8939888732119726665">"Sesli yardım için, simgeden hızlıca kaydırın"</string>
@@ -427,7 +418,7 @@
     <string name="accessibility_volume_expand" msgid="5946812790999244205">"Genişlet"</string>
     <string name="accessibility_volume_collapse" msgid="3609549593031810875">"Daralt"</string>
     <string name="screen_pinning_title" msgid="3273740381976175811">"Ekran sabitlendi"</string>
-    <string name="screen_pinning_description" msgid="3577937698406151604">"Siz sabitlemeyi kaldırana kadar görüntülenmeye devam eder. Sabitlemeyi kaldırmak için Geri\'ye dokunun ve basılı tutun."</string>
+    <string name="screen_pinning_description" msgid="7238941806855968768">"Bu işlem, siz sabitlemeyi kaldırana kadar ekranı görünür durumda tutar. Sabitlemeyi kaldırmak için Geri\'ye dokunun ve basılı tutun."</string>
     <string name="screen_pinning_positive" msgid="3783985798366751226">"Anladım"</string>
     <string name="screen_pinning_negative" msgid="3741602308343880268">"Hayır, teşekkürler"</string>
     <string name="quick_settings_reset_confirmation_title" msgid="748792586749897883">"<xliff:g id="TILE_LABEL">%1$s</xliff:g> gizlensin mi?"</string>
@@ -437,15 +428,13 @@
     <string name="volumeui_prompt_allow" msgid="7954396902482228786">"İzin ver"</string>
     <string name="volumeui_prompt_deny" msgid="5720663643411696731">"Reddet"</string>
     <string name="volumeui_notification_title" msgid="4906770126345910955">"<xliff:g id="APP_NAME">%1$s</xliff:g> ses denetimi iletişim kutusu olarak ayarlandı"</string>
-    <string name="volumeui_notification_text" msgid="1826889705095768656">"Orijinali geri yüklemek için dokunun."</string>
+    <string name="volumeui_notification_text" msgid="8819536904234337445">"Orijinali geri yüklemek için dokunun."</string>
     <string name="managed_profile_foreground_toast" msgid="5421487114739245972">"İş profilinizi kullanıyorsunuz"</string>
     <string name="volume_stream_content_description_unmute" msgid="4436631538779230857">"%1$s. Sesi açmak için hafifçe dokunun."</string>
     <string name="volume_stream_content_description_vibrate" msgid="1187944970457807498">"%1$s. Titreşime ayarlamak için hafifçe dokunun. Erişilebilirlik hizmetlerinin sesi kapatılabilir."</string>
     <string name="volume_stream_content_description_mute" msgid="3625049841390467354">"%1$s. Sesi kapatmak için hafifçe dokunun. Erişilebilirlik hizmetlerinin sesi kapatılabilir."</string>
-    <!-- no translation found for volume_dialog_accessibility_shown_message (1834631467074259998) -->
-    <skip />
-    <!-- no translation found for volume_dialog_accessibility_dismissed_message (51543526013711399) -->
-    <skip />
+    <string name="volume_dialog_accessibility_shown_message" msgid="1834631467074259998">"%s ses denetimleri gösteriliyor. Kapatmak için hızlıca yukarı kaydırın."</string>
+    <string name="volume_dialog_accessibility_dismissed_message" msgid="51543526013711399">"Ses denetimleri gizlendi"</string>
     <string name="system_ui_tuner" msgid="708224127392452018">"Sistem Arayüzü Ayarlayıcısı"</string>
     <string name="show_battery_percentage" msgid="5444136600512968798">"Yerleşik pil yüzdesini göster"</string>
     <string name="show_battery_percentage_summary" msgid="3215025775576786037">"Şarj olmazken durum çubuğu simgesinin içinde pil düzeyi yüzdesini göster"</string>
@@ -641,27 +630,17 @@
     <string name="accessibility_qs_edit_tile_removed" msgid="8584304916627913440">"<xliff:g id="TILE_NAME">%1$s</xliff:g> kaldırıldı"</string>
     <string name="accessibility_qs_edit_tile_moved" msgid="4343693412689365038">"<xliff:g id="TILE_NAME">%1$s</xliff:g> <xliff:g id="POSITION">%2$d</xliff:g>. konumuna taşındı"</string>
     <string name="accessibility_desc_quick_settings_edit" msgid="8073587401747016103">"Hızlı ayar düzenleyicisi."</string>
-    <!-- no translation found for accessibility_desc_notification_icon (8352414185263916335) -->
-    <skip />
+    <string name="accessibility_desc_notification_icon" msgid="8352414185263916335">"<xliff:g id="ID_1">%1$s</xliff:g> bildirimi: <xliff:g id="ID_2">%2$s</xliff:g>"</string>
     <string name="dock_forced_resizable" msgid="5914261505436217520">"Uygulama bölünmüş ekranda çalışmayabilir."</string>
     <string name="dock_non_resizeble_failed_to_dock_text" msgid="3871617304250207291">"Uygulama bölünmüş ekranı desteklemiyor."</string>
-    <!-- no translation found for accessibility_quick_settings_settings (6132460890024942157) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_expand (2375165227880477530) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_collapse (1792625797142648105) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_alarm_set (1863000242431528676) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_user (1567445362870421770) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_no_internet (31890692343084075) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_open_details (4230931801728005194) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_open_settings (7806613775728380737) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_edit (7839992848995240393) -->
-    <skip />
+    <string name="accessibility_quick_settings_settings" msgid="6132460890024942157">"Ayarları aç."</string>
+    <string name="accessibility_quick_settings_expand" msgid="2375165227880477530">"Hızlı ayarları aç."</string>
+    <string name="accessibility_quick_settings_collapse" msgid="1792625797142648105">"Hızlı ayarları kapat."</string>
+    <string name="accessibility_quick_settings_alarm_set" msgid="1863000242431528676">"Alarm ayarlandı."</string>
+    <string name="accessibility_quick_settings_user" msgid="1567445362870421770">"<xliff:g id="ID_1">%s</xliff:g> olarak oturum açıldı"</string>
+    <string name="accessibility_quick_settings_no_internet" msgid="31890692343084075">"İnternet yok."</string>
+    <string name="accessibility_quick_settings_open_details" msgid="4230931801728005194">"Ayrıntıları aç."</string>
+    <string name="accessibility_quick_settings_open_settings" msgid="7806613775728380737">"<xliff:g id="ID_1">%s</xliff:g> ayarlarını aç."</string>
+    <string name="accessibility_quick_settings_edit" msgid="7839992848995240393">"Ayarların sırasını düzenle."</string>
     <string name="accessibility_quick_settings_page" msgid="5032979051755200721">"Sayfa <xliff:g id="ID_1">%1$d</xliff:g> / <xliff:g id="ID_2">%2$d</xliff:g>"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-tr/strings_tv.xml b/packages/SystemUI/res/values-tr/strings_tv.xml
index 5b77a99..3a88b8a 100644
--- a/packages/SystemUI/res/values-tr/strings_tv.xml
+++ b/packages/SystemUI/res/values-tr/strings_tv.xml
@@ -24,10 +24,8 @@
     <string name="pip_play" msgid="674145557658227044">"Oynat"</string>
     <string name="pip_pause" msgid="8412075640017218862">"Duraklat"</string>
     <string name="pip_hold_home" msgid="340086535668778109">"PIP\'yi kontrol etmek için "<b>"ANA EKRAN"</b>"\'ı basılı tutun"</string>
-    <!-- no translation found for pip_onboarding_title (7850436557670253991) -->
-    <skip />
-    <!-- no translation found for pip_onboarding_description (4028124563309465267) -->
-    <skip />
+    <string name="pip_onboarding_title" msgid="7850436557670253991">"Resim içinde resim"</string>
+    <string name="pip_onboarding_description" msgid="4028124563309465267">"Bu işlev, videonuzu, başka bir video oynatılıncaya kadar görünür tutar. Bu işlevi kontrol etmek için "<b>"HOME"</b>" tuşunu basılı tutun."</string>
     <string name="pip_onboarding_button" msgid="3957426748484904611">"Anladım"</string>
     <string name="recents_tv_dismiss" msgid="3555093879593377731">"Kapat"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-uk/strings.xml b/packages/SystemUI/res/values-uk/strings.xml
index 9ff1bf1..9d7cb91 100644
--- a/packages/SystemUI/res/values-uk/strings.xml
+++ b/packages/SystemUI/res/values-uk/strings.xml
@@ -73,7 +73,7 @@
     <string name="screenshot_saving_title" msgid="8242282144535555697">"Збереження знімка екрана..."</string>
     <string name="screenshot_saving_text" msgid="2419718443411738818">"Зберігається знімок екрана."</string>
     <string name="screenshot_saved_title" msgid="6461865960961414961">"Знімок екрана зроблено."</string>
-    <string name="screenshot_saved_text" msgid="1152839647677558815">"Торкніться, щоб переглянути знімок екрана."</string>
+    <string name="screenshot_saved_text" msgid="2685605830386712477">"Торкніться, щоб переглянути знімок екрана."</string>
     <string name="screenshot_failed_title" msgid="705781116746922771">"Не вдалося зробити знімок екрана."</string>
     <string name="screenshot_failed_to_save_unknown_text" msgid="7887826345701753830">"Не вдалося зберегти знімок екрана."</string>
     <string name="screenshot_failed_to_save_text" msgid="2592658083866306296">"Не вдалося зберегти знімок екрана через обмежений обсяг пам’яті."</string>
@@ -120,8 +120,7 @@
     <string name="accessibility_data_signal_full" msgid="2708384608124519369">"Максимальний сигнал даних."</string>
     <string name="accessibility_wifi_name" msgid="7202151365171148501">"Підключено до <xliff:g id="WIFI">%s</xliff:g>."</string>
     <string name="accessibility_bluetooth_name" msgid="8441517146585531676">"Підключено до <xliff:g id="BLUETOOTH">%s</xliff:g>."</string>
-    <!-- no translation found for accessibility_cast_name (4026393061247081201) -->
-    <skip />
+    <string name="accessibility_cast_name" msgid="4026393061247081201">"Під’єднано до пристрою <xliff:g id="CAST">%s</xliff:g>."</string>
     <string name="accessibility_no_wimax" msgid="4329180129727630368">"Немає сигналу WiMAX."</string>
     <string name="accessibility_wimax_one_bar" msgid="4170994299011863648">"Одна смужка сигналу WiMAX."</string>
     <string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"Дві смужки сигналу WiMAX."</string>
@@ -152,17 +151,14 @@
     <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string>
     <string name="accessibility_data_connection_wifi" msgid="2324496756590645221">"Wi-Fi"</string>
     <string name="accessibility_no_sim" msgid="8274017118472455155">"Немає SIM-карти."</string>
-    <!-- no translation found for accessibility_cell_data (7080312242791850520) -->
-    <skip />
-    <!-- no translation found for accessibility_cell_data_on (4310018593519761767) -->
-    <skip />
+    <string name="accessibility_cell_data" msgid="7080312242791850520">"Мобільний трафік"</string>
+    <string name="accessibility_cell_data_on" msgid="4310018593519761767">"Мобільний трафік увімкнено"</string>
     <string name="accessibility_cell_data_off" msgid="8000803571751407635">"Мобільний трафік вимкнено"</string>
     <string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"Прив’язка Bluetooth."</string>
     <string name="accessibility_airplane_mode" msgid="834748999790763092">"Режим польоту."</string>
     <string name="accessibility_no_sims" msgid="3957997018324995781">"Немає SIM-карти."</string>
     <string name="accessibility_carrier_network_change_mode" msgid="4017301580441304305">"Змінення мережі оператора."</string>
-    <!-- no translation found for accessibility_battery_details (7645516654955025422) -->
-    <skip />
+    <string name="accessibility_battery_details" msgid="7645516654955025422">"Відкрити деталі акумулятора"</string>
     <string name="accessibility_battery_level" msgid="7451474187113371965">"Заряд акумулятора у відсотках: <xliff:g id="NUMBER">%d</xliff:g>."</string>
     <!-- String.format failed for translation -->
     <!-- no translation found for accessibility_battery_level_charging (1147587904439319646) -->
@@ -204,13 +200,11 @@
     <string name="accessibility_quick_settings_dnd_priority_on" msgid="1448402297221249355">"Режим \"Не турбувати\" ввімкнено, лише пріоритетні."</string>
     <string name="accessibility_quick_settings_dnd_none_on" msgid="6882582132662613537">"Увімкнено режим \"Не турбувати\", сигнали вимкнено."</string>
     <string name="accessibility_quick_settings_dnd_alarms_on" msgid="9152834845587554157">"Увімкнено режим \"Не турбувати\", дозволено лише сигнали."</string>
-    <!-- no translation found for accessibility_quick_settings_dnd (6607873236717185815) -->
-    <skip />
+    <string name="accessibility_quick_settings_dnd" msgid="6607873236717185815">"Не турбувати."</string>
     <string name="accessibility_quick_settings_dnd_off" msgid="2371832603753738581">"Режим \"Не турбувати\" вимкнено."</string>
     <string name="accessibility_quick_settings_dnd_changed_off" msgid="898107593453022935">"Режим \"Не турбувати\" вимкнено."</string>
     <string name="accessibility_quick_settings_dnd_changed_on" msgid="4483780856613561039">"Режим \"Не турбувати\" ввімкнено."</string>
-    <!-- no translation found for accessibility_quick_settings_bluetooth (6341675755803320038) -->
-    <skip />
+    <string name="accessibility_quick_settings_bluetooth" msgid="6341675755803320038">"Bluetooth."</string>
     <string name="accessibility_quick_settings_bluetooth_off" msgid="2133631372372064339">"Bluetooth вимк."</string>
     <string name="accessibility_quick_settings_bluetooth_on" msgid="7681999166216621838">"Bluetooth увімк."</string>
     <string name="accessibility_quick_settings_bluetooth_connecting" msgid="6953242966685343855">"Під’єднання Bluetooth."</string>
@@ -276,10 +270,8 @@
     <string name="quick_settings_bluetooth_detail_empty_text" msgid="4910015762433302860">"Немає спарених пристроїв"</string>
     <string name="quick_settings_brightness_label" msgid="6968372297018755815">"Яскравість"</string>
     <string name="quick_settings_rotation_unlocked_label" msgid="7305323031808150099">"Автоматичне обертання"</string>
-    <!-- no translation found for accessibility_quick_settings_rotation (4231661040698488779) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_rotation_value (1428962304214992318) -->
-    <skip />
+    <string name="accessibility_quick_settings_rotation" msgid="4231661040698488779">"Автоматично обертати екран"</string>
+    <string name="accessibility_quick_settings_rotation_value" msgid="1428962304214992318">"Вибрано: <xliff:g id="ID_1">%s</xliff:g>"</string>
     <string name="quick_settings_rotation_locked_label" msgid="6359205706154282377">"Обертання заблоковано"</string>
     <string name="quick_settings_rotation_locked_portrait_label" msgid="5102691921442135053">"Книжкова орієнтація"</string>
     <string name="quick_settings_rotation_locked_landscape_label" msgid="8553157770061178719">"Альбомна орієнтація"</string>
@@ -298,8 +290,7 @@
     <string name="quick_settings_wifi_not_connected" msgid="7171904845345573431">"Не під’єднано."</string>
     <string name="quick_settings_wifi_no_network" msgid="2221993077220856376">"Немає мережі"</string>
     <string name="quick_settings_wifi_off_label" msgid="7558778100843885864">"Wi-Fi вимкнено"</string>
-    <!-- no translation found for quick_settings_wifi_on_label (7607810331387031235) -->
-    <skip />
+    <string name="quick_settings_wifi_on_label" msgid="7607810331387031235">"Wi-Fi увімкнено"</string>
     <string name="quick_settings_wifi_detail_empty_text" msgid="269990350383909226">"Немає доступних мереж Wi-Fi"</string>
     <string name="quick_settings_cast_title" msgid="7709016546426454729">"Трансляція"</string>
     <string name="quick_settings_casting" msgid="6601710681033353316">"Трансляція"</string>
@@ -353,7 +344,7 @@
     <string name="zen_silence_introduction" msgid="3137882381093271568">"Блокуватимуться ВСІ звукові та вібросигнали, зокрема будильники, музика, відео й ігри."</string>
     <string name="keyguard_more_overflow_text" msgid="9195222469041601365">"+<xliff:g id="NUMBER_OF_NOTIFICATIONS">%d</xliff:g>"</string>
     <string name="speed_bump_explanation" msgid="1288875699658819755">"Менше термінових сповіщень нижче"</string>
-    <string name="notification_tap_again" msgid="8524949573675922138">"Торкніться знову, щоб відкрити"</string>
+    <string name="notification_tap_again" msgid="7590196980943943842">"Торкніться знову, щоб відкрити"</string>
     <string name="keyguard_unlock" msgid="8043466894212841998">"Проведіть пальцем угору, щоб розблокувати"</string>
     <string name="phone_hint" msgid="4872890986869209950">"Телефон: проведіть пальцем від значка"</string>
     <string name="voice_hint" msgid="8939888732119726665">"Голосові підказки: проведіть пальцем від значка"</string>
@@ -431,7 +422,7 @@
     <string name="accessibility_volume_expand" msgid="5946812790999244205">"Розгорнути"</string>
     <string name="accessibility_volume_collapse" msgid="3609549593031810875">"Згорнути"</string>
     <string name="screen_pinning_title" msgid="3273740381976175811">"Екран закріплено"</string>
-    <string name="screen_pinning_description" msgid="3577937698406151604">"Ви постійно бачитимете екран, доки не відкріпите його. Щоб відкріпити екран, натисніть і утримуйте кнопку \"Назад\"."</string>
+    <string name="screen_pinning_description" msgid="7238941806855968768">"Ви постійно бачитимете екран, доки не відкріпите його. Щоб відкріпити екран, натисніть і утримуйте кнопку \"Назад\"."</string>
     <string name="screen_pinning_positive" msgid="3783985798366751226">"Зрозуміло"</string>
     <string name="screen_pinning_negative" msgid="3741602308343880268">"Ні, дякую"</string>
     <string name="quick_settings_reset_confirmation_title" msgid="748792586749897883">"Сховати <xliff:g id="TILE_LABEL">%1$s</xliff:g>?"</string>
@@ -441,15 +432,13 @@
     <string name="volumeui_prompt_allow" msgid="7954396902482228786">"Дозволити"</string>
     <string name="volumeui_prompt_deny" msgid="5720663643411696731">"Відхилити"</string>
     <string name="volumeui_notification_title" msgid="4906770126345910955">"<xliff:g id="APP_NAME">%1$s</xliff:g> призначено регулятором гучності"</string>
-    <string name="volumeui_notification_text" msgid="1826889705095768656">"Торкніться, щоб відновити оригінал."</string>
+    <string name="volumeui_notification_text" msgid="8819536904234337445">"Торкніться, щоб відновити оригінал."</string>
     <string name="managed_profile_foreground_toast" msgid="5421487114739245972">"Ви в робочому профілі"</string>
     <string name="volume_stream_content_description_unmute" msgid="4436631538779230857">"%1$s. Торкніться, щоб увімкнути звук."</string>
     <string name="volume_stream_content_description_vibrate" msgid="1187944970457807498">"%1$s. Торкніться, щоб налаштувати вібросигнал. Спеціальні можливості може бути вимкнено."</string>
     <string name="volume_stream_content_description_mute" msgid="3625049841390467354">"%1$s. Торкніться, щоб вимкнути звук. Спеціальні можливості може бути вимкнено."</string>
-    <!-- no translation found for volume_dialog_accessibility_shown_message (1834631467074259998) -->
-    <skip />
-    <!-- no translation found for volume_dialog_accessibility_dismissed_message (51543526013711399) -->
-    <skip />
+    <string name="volume_dialog_accessibility_shown_message" msgid="1834631467074259998">"Показано регуляторів гучності: %s. Проведіть пальцем угору, щоб закрити."</string>
+    <string name="volume_dialog_accessibility_dismissed_message" msgid="51543526013711399">"Регулятори гучності сховано"</string>
     <string name="system_ui_tuner" msgid="708224127392452018">"System UI Tuner"</string>
     <string name="show_battery_percentage" msgid="5444136600512968798">"Показувати заряд акумулятора у відсотках"</string>
     <string name="show_battery_percentage_summary" msgid="3215025775576786037">"Показувати заряд акумулятора у відсотках в рядку стану, коли пристрій не заряджається"</string>
@@ -645,27 +634,17 @@
     <string name="accessibility_qs_edit_tile_removed" msgid="8584304916627913440">"<xliff:g id="TILE_NAME">%1$s</xliff:g> видалено"</string>
     <string name="accessibility_qs_edit_tile_moved" msgid="4343693412689365038">"<xliff:g id="TILE_NAME">%1$s</xliff:g> переміщено на позицію <xliff:g id="POSITION">%2$d</xliff:g>"</string>
     <string name="accessibility_desc_quick_settings_edit" msgid="8073587401747016103">"Редактор швидких налаштувань."</string>
-    <!-- no translation found for accessibility_desc_notification_icon (8352414185263916335) -->
-    <skip />
+    <string name="accessibility_desc_notification_icon" msgid="8352414185263916335">"Сповіщення <xliff:g id="ID_1">%1$s</xliff:g>: <xliff:g id="ID_2">%2$s</xliff:g>"</string>
     <string name="dock_forced_resizable" msgid="5914261505436217520">"Додаток може не працювати в режимі розділеного екрана."</string>
     <string name="dock_non_resizeble_failed_to_dock_text" msgid="3871617304250207291">"Додаток не підтримує розділення екрана."</string>
-    <!-- no translation found for accessibility_quick_settings_settings (6132460890024942157) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_expand (2375165227880477530) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_collapse (1792625797142648105) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_alarm_set (1863000242431528676) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_user (1567445362870421770) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_no_internet (31890692343084075) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_open_details (4230931801728005194) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_open_settings (7806613775728380737) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_edit (7839992848995240393) -->
-    <skip />
+    <string name="accessibility_quick_settings_settings" msgid="6132460890024942157">"Відкрити налаштування."</string>
+    <string name="accessibility_quick_settings_expand" msgid="2375165227880477530">"Відкрити швидкі налаштування."</string>
+    <string name="accessibility_quick_settings_collapse" msgid="1792625797142648105">"Закрити швидкі налаштування."</string>
+    <string name="accessibility_quick_settings_alarm_set" msgid="1863000242431528676">"Будильник налаштовано."</string>
+    <string name="accessibility_quick_settings_user" msgid="1567445362870421770">"Ви ввійшли як <xliff:g id="ID_1">%s</xliff:g>"</string>
+    <string name="accessibility_quick_settings_no_internet" msgid="31890692343084075">"Немає з’єднання з Інтернетом."</string>
+    <string name="accessibility_quick_settings_open_details" msgid="4230931801728005194">"Відкрити деталі."</string>
+    <string name="accessibility_quick_settings_open_settings" msgid="7806613775728380737">"Відкрити налаштування <xliff:g id="ID_1">%s</xliff:g>."</string>
+    <string name="accessibility_quick_settings_edit" msgid="7839992848995240393">"Змінити порядок налаштувань."</string>
     <string name="accessibility_quick_settings_page" msgid="5032979051755200721">"Сторінка <xliff:g id="ID_1">%1$d</xliff:g> з <xliff:g id="ID_2">%2$d</xliff:g>"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-uk/strings_tv.xml b/packages/SystemUI/res/values-uk/strings_tv.xml
index aa72aff..76277d6 100644
--- a/packages/SystemUI/res/values-uk/strings_tv.xml
+++ b/packages/SystemUI/res/values-uk/strings_tv.xml
@@ -24,10 +24,8 @@
     <string name="pip_play" msgid="674145557658227044">"Відтворити"</string>
     <string name="pip_pause" msgid="8412075640017218862">"Призупинити"</string>
     <string name="pip_hold_home" msgid="340086535668778109">"Щоб керувати PIP, утримуйте кнопку "<b>"ГОЛОВНИЙ ЕКРАН"</b></string>
-    <!-- no translation found for pip_onboarding_title (7850436557670253991) -->
-    <skip />
-    <!-- no translation found for pip_onboarding_description (4028124563309465267) -->
-    <skip />
+    <string name="pip_onboarding_title" msgid="7850436557670253991">"Картинка в картинці"</string>
+    <string name="pip_onboarding_description" msgid="4028124563309465267">"Відео буде закріплено, доки ви не запустите інше відео. Щоб керувати, утримуйте кнопку "<b>"HOME"</b>"."</string>
     <string name="pip_onboarding_button" msgid="3957426748484904611">"OK"</string>
     <string name="recents_tv_dismiss" msgid="3555093879593377731">"Закрити"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-ur-rPK/strings.xml b/packages/SystemUI/res/values-ur-rPK/strings.xml
index 688fc45..682ca3c 100644
--- a/packages/SystemUI/res/values-ur-rPK/strings.xml
+++ b/packages/SystemUI/res/values-ur-rPK/strings.xml
@@ -71,7 +71,7 @@
     <string name="screenshot_saving_title" msgid="8242282144535555697">"اسکرین شاٹ محفوظ ہو رہا ہے…"</string>
     <string name="screenshot_saving_text" msgid="2419718443411738818">"اسکرین شاٹ محفوظ کیا جا رہا ہے۔"</string>
     <string name="screenshot_saved_title" msgid="6461865960961414961">"اسکرین شاٹ کیپچر کیا گیا۔"</string>
-    <string name="screenshot_saved_text" msgid="1152839647677558815">"اپنے اسکرین شاٹ دیکھنے کیلئے چھوئیں۔"</string>
+    <string name="screenshot_saved_text" msgid="2685605830386712477">"اپنا اسکرین شاٹ دیکھنے کیلئے تھپتھپائیں۔"</string>
     <string name="screenshot_failed_title" msgid="705781116746922771">"اسکرین شاٹ کیپچر نہیں کر سکے۔"</string>
     <string name="screenshot_failed_to_save_unknown_text" msgid="7887826345701753830">"اسکرین شاٹ محفوظ کرتے وقت مسئلہ پیش آ گیا۔"</string>
     <string name="screenshot_failed_to_save_text" msgid="2592658083866306296">"محدود اسٹوریج جگہ کی وجہ سے اسکرین شاٹس نہیں لئے جا سکتے۔"</string>
@@ -118,8 +118,7 @@
     <string name="accessibility_data_signal_full" msgid="2708384608124519369">"ڈیٹا سگنل بھرا ہوا ہے۔"</string>
     <string name="accessibility_wifi_name" msgid="7202151365171148501">"<xliff:g id="WIFI">%s</xliff:g> سے منسلک ہیں۔"</string>
     <string name="accessibility_bluetooth_name" msgid="8441517146585531676">"<xliff:g id="BLUETOOTH">%s</xliff:g> سے منسلک ہیں۔"</string>
-    <!-- no translation found for accessibility_cast_name (4026393061247081201) -->
-    <skip />
+    <string name="accessibility_cast_name" msgid="4026393061247081201">"<xliff:g id="CAST">%s</xliff:g> سے منسلک ہے۔"</string>
     <string name="accessibility_no_wimax" msgid="4329180129727630368">"‏کوئی WiMAX نہیں ہے۔"</string>
     <string name="accessibility_wimax_one_bar" msgid="4170994299011863648">"‏WiMAX ایک بار۔"</string>
     <string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"‏WiMAX دو بارز۔"</string>
@@ -150,17 +149,14 @@
     <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string>
     <string name="accessibility_data_connection_wifi" msgid="2324496756590645221">"Wi-Fi"</string>
     <string name="accessibility_no_sim" msgid="8274017118472455155">"‏کوئی SIM نہیں ہے۔"</string>
-    <!-- no translation found for accessibility_cell_data (7080312242791850520) -->
-    <skip />
-    <!-- no translation found for accessibility_cell_data_on (4310018593519761767) -->
-    <skip />
+    <string name="accessibility_cell_data" msgid="7080312242791850520">"سیلولر ڈیٹا"</string>
+    <string name="accessibility_cell_data_on" msgid="4310018593519761767">"سیلولر ڈیٹا آن ہے"</string>
     <string name="accessibility_cell_data_off" msgid="8000803571751407635">"سیلولر ڈیٹا آف ہے"</string>
     <string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"بلوٹوتھ مربوط کرنا۔"</string>
     <string name="accessibility_airplane_mode" msgid="834748999790763092">"ہوائی جہاز وضع۔"</string>
     <string name="accessibility_no_sims" msgid="3957997018324995781">"‏کوئی SIM کارڈ نہیں ہے۔"</string>
     <string name="accessibility_carrier_network_change_mode" msgid="4017301580441304305">"کیریئر نیٹ ورک تبدیل ہو رہا ہے۔"</string>
-    <!-- no translation found for accessibility_battery_details (7645516654955025422) -->
-    <skip />
+    <string name="accessibility_battery_details" msgid="7645516654955025422">"بیٹری کی تفصیلات کھولیں"</string>
     <string name="accessibility_battery_level" msgid="7451474187113371965">"بیٹری <xliff:g id="NUMBER">%d</xliff:g> فیصد۔"</string>
     <string name="accessibility_battery_level_charging" msgid="1147587904439319646">"بیٹری چارجنگ، <xliff:g id="BATTERY_PERCENTAGE">%d</xliff:g> فیصد۔"</string>
     <string name="accessibility_settings_button" msgid="799583911231893380">"سسٹم کی ترتیبات۔"</string>
@@ -200,13 +196,11 @@
     <string name="accessibility_quick_settings_dnd_priority_on" msgid="1448402297221249355">"ڈسٹرب نہ کریں آن ہے، صرف ترجیحی۔"</string>
     <string name="accessibility_quick_settings_dnd_none_on" msgid="6882582132662613537">"مداخلت نہ کریں آن ہے، مکمل خاموشی۔"</string>
     <string name="accessibility_quick_settings_dnd_alarms_on" msgid="9152834845587554157">"ڈسٹرب نہ کریں آن ہے، صرف الارمز۔"</string>
-    <!-- no translation found for accessibility_quick_settings_dnd (6607873236717185815) -->
-    <skip />
+    <string name="accessibility_quick_settings_dnd" msgid="6607873236717185815">"ڈسٹرب نہ کریں۔"</string>
     <string name="accessibility_quick_settings_dnd_off" msgid="2371832603753738581">"ڈسٹرب نہ کریں آف ہے۔"</string>
     <string name="accessibility_quick_settings_dnd_changed_off" msgid="898107593453022935">"ڈسٹرب نہ کریں کو آف کر دیا گیا۔"</string>
     <string name="accessibility_quick_settings_dnd_changed_on" msgid="4483780856613561039">"ڈسٹرب نہ کریں کو آن کر دیا گیا۔"</string>
-    <!-- no translation found for accessibility_quick_settings_bluetooth (6341675755803320038) -->
-    <skip />
+    <string name="accessibility_quick_settings_bluetooth" msgid="6341675755803320038">"بلوٹوتھ۔"</string>
     <string name="accessibility_quick_settings_bluetooth_off" msgid="2133631372372064339">"بلوٹوتھ آف ہے۔"</string>
     <string name="accessibility_quick_settings_bluetooth_on" msgid="7681999166216621838">"بلوٹوتھ آن ہے۔"</string>
     <string name="accessibility_quick_settings_bluetooth_connecting" msgid="6953242966685343855">"بلوٹوتھ منسلک ہو رہا ہے۔"</string>
@@ -272,10 +266,8 @@
     <string name="quick_settings_bluetooth_detail_empty_text" msgid="4910015762433302860">"کوئی جوڑا بنائے ہوئے آلات دستیاب نہیں ہیں"</string>
     <string name="quick_settings_brightness_label" msgid="6968372297018755815">"چمکیلا پن"</string>
     <string name="quick_settings_rotation_unlocked_label" msgid="7305323031808150099">"خود کار طور پر گھمائیں"</string>
-    <!-- no translation found for accessibility_quick_settings_rotation (4231661040698488779) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_rotation_value (1428962304214992318) -->
-    <skip />
+    <string name="accessibility_quick_settings_rotation" msgid="4231661040698488779">"اسکرین کو خود کار طور پر گھمائیں"</string>
+    <string name="accessibility_quick_settings_rotation_value" msgid="1428962304214992318">"<xliff:g id="ID_1">%s</xliff:g> پر سیٹ کریں"</string>
     <string name="quick_settings_rotation_locked_label" msgid="6359205706154282377">"گردش مقفل ہے"</string>
     <string name="quick_settings_rotation_locked_portrait_label" msgid="5102691921442135053">"پورٹریٹ"</string>
     <string name="quick_settings_rotation_locked_landscape_label" msgid="8553157770061178719">"لینڈ اسکیپ"</string>
@@ -294,8 +286,7 @@
     <string name="quick_settings_wifi_not_connected" msgid="7171904845345573431">"مربوط نہیں ہے"</string>
     <string name="quick_settings_wifi_no_network" msgid="2221993077220856376">"کوئی نیٹ ورک نہیں ہے"</string>
     <string name="quick_settings_wifi_off_label" msgid="7558778100843885864">"‏Wi-Fi آف ہے"</string>
-    <!-- no translation found for quick_settings_wifi_on_label (7607810331387031235) -->
-    <skip />
+    <string name="quick_settings_wifi_on_label" msgid="7607810331387031235">"‏Wi-Fi آن ہے"</string>
     <string name="quick_settings_wifi_detail_empty_text" msgid="269990350383909226">"‏کوئی WI-FI نیٹ ورک دستیاب نہیں"</string>
     <string name="quick_settings_cast_title" msgid="7709016546426454729">"کاسٹ کریں"</string>
     <string name="quick_settings_casting" msgid="6601710681033353316">"کاسٹنگ"</string>
@@ -349,7 +340,7 @@
     <string name="zen_silence_introduction" msgid="3137882381093271568">"یہ الارمز، موسیقی، ویڈیوز اور گیمز کی آوازوں اور وائبریشنز سمیت سبھی آوازیں اور وائبریشنز مسدود کر دیتا ہے۔"</string>
     <string name="keyguard_more_overflow_text" msgid="9195222469041601365">"‎+<xliff:g id="NUMBER_OF_NOTIFICATIONS">%d</xliff:g>‎"</string>
     <string name="speed_bump_explanation" msgid="1288875699658819755">"کم اہم اطلاعات ذیل میں ہیں"</string>
-    <string name="notification_tap_again" msgid="8524949573675922138">"کھولنے کیلئے دوبارہ ٹچ کریں"</string>
+    <string name="notification_tap_again" msgid="7590196980943943842">"کھولنے کیلئے دوبارہ تھپتھپائیں"</string>
     <string name="keyguard_unlock" msgid="8043466894212841998">"غیر مقفل کرنے کیلئے اوپر سوائپ کریں"</string>
     <string name="phone_hint" msgid="4872890986869209950">"فون کیلئے آئیکن سے سوائپ کریں"</string>
     <string name="voice_hint" msgid="8939888732119726665">"صوتی معاون کیلئے آئیکن سے سوائپ کریں"</string>
@@ -427,7 +418,7 @@
     <string name="accessibility_volume_expand" msgid="5946812790999244205">"پھیلائیں"</string>
     <string name="accessibility_volume_collapse" msgid="3609549593031810875">"سکیڑیں"</string>
     <string name="screen_pinning_title" msgid="3273740381976175811">"اسکرین پن کردہ ہے"</string>
-    <string name="screen_pinning_description" msgid="3577937698406151604">"یہ اس کو اس وقت تک منظر میں رکھتا ہے جب تک آپ اس سے پن ہٹا نہیں دیتے۔ پن ہٹانے کیلئے پیچھے بٹن کو ٹچ کریں اور دبائے رکھیں۔"</string>
+    <string name="screen_pinning_description" msgid="7238941806855968768">"یہ اسے اس وقت تک نظر میں رکھتا ہے جب تک آپ اس سے پن ہٹا نہیں دیتے۔ پن ہٹانے کیلئے پیچھے بٹن کو ٹچ کریں اور دبائے رکھیں۔"</string>
     <string name="screen_pinning_positive" msgid="3783985798366751226">"سمجھ آ گئی"</string>
     <string name="screen_pinning_negative" msgid="3741602308343880268">"نہیں شکریہ"</string>
     <string name="quick_settings_reset_confirmation_title" msgid="748792586749897883">"<xliff:g id="TILE_LABEL">%1$s</xliff:g> کو چھپائیں؟"</string>
@@ -437,15 +428,13 @@
     <string name="volumeui_prompt_allow" msgid="7954396902482228786">"اجازت دیں"</string>
     <string name="volumeui_prompt_deny" msgid="5720663643411696731">"مسترد کریں"</string>
     <string name="volumeui_notification_title" msgid="4906770126345910955">"<xliff:g id="APP_NAME">%1$s</xliff:g> والیوم ڈائلاگ ہے"</string>
-    <string name="volumeui_notification_text" msgid="1826889705095768656">"اصل کو بحال کرنے کیلئے ٹچ کریں۔"</string>
+    <string name="volumeui_notification_text" msgid="8819536904234337445">"اصل بحال کرنے کیلئے تھپتھپائیں۔"</string>
     <string name="managed_profile_foreground_toast" msgid="5421487114739245972">"آپ اپنا دفتری پروفائل استعمال کر رہے ہیں۔"</string>
     <string name="volume_stream_content_description_unmute" msgid="4436631538779230857">"‏‎%1$s۔ آواز چالو کرنے کیلئے تھپتھپائیں۔"</string>
     <string name="volume_stream_content_description_vibrate" msgid="1187944970457807498">"‏‎%1$s۔ ارتعاش پر سیٹ کرنے کیلئے تھپتھپائیں۔ Accessibility سروسز شاید خاموش ہوں۔"</string>
     <string name="volume_stream_content_description_mute" msgid="3625049841390467354">"‏‎%1$s۔ خاموش کرنے کیلئے تھپتھپائیں۔ Accessibility سروسز شاید خاموش ہوں۔"</string>
-    <!-- no translation found for volume_dialog_accessibility_shown_message (1834631467074259998) -->
-    <skip />
-    <!-- no translation found for volume_dialog_accessibility_dismissed_message (51543526013711399) -->
-    <skip />
+    <string name="volume_dialog_accessibility_shown_message" msgid="1834631467074259998">"‏%s والیوم کے کنٹرولز دکھائے جا رہے ہیں۔ برخاست کرنے کیلئے سوائپ کریں۔"</string>
+    <string name="volume_dialog_accessibility_dismissed_message" msgid="51543526013711399">"والیوم کے کنٹرولز مخفی ہیں"</string>
     <string name="system_ui_tuner" msgid="708224127392452018">"‏سسٹم UI ٹیونر"</string>
     <string name="show_battery_percentage" msgid="5444136600512968798">"سرایت کردہ بیٹری کی فیصد دکھائیں"</string>
     <string name="show_battery_percentage_summary" msgid="3215025775576786037">"جب چارج نہ ہو رہا ہو تو بیٹری کی سطح کی فیصد اسٹیٹس بار آئیکن کے اندر دکھائیں"</string>
@@ -641,27 +630,17 @@
     <string name="accessibility_qs_edit_tile_removed" msgid="8584304916627913440">"<xliff:g id="TILE_NAME">%1$s</xliff:g> ہٹا دیا گیا"</string>
     <string name="accessibility_qs_edit_tile_moved" msgid="4343693412689365038">"<xliff:g id="POSITION">%2$d</xliff:g> پوزیشن پر <xliff:g id="TILE_NAME">%1$s</xliff:g> منتقل ہو گیا ہے"</string>
     <string name="accessibility_desc_quick_settings_edit" msgid="8073587401747016103">"فوری ترتیبات کا ایڈیٹر۔"</string>
-    <!-- no translation found for accessibility_desc_notification_icon (8352414185263916335) -->
-    <skip />
+    <string name="accessibility_desc_notification_icon" msgid="8352414185263916335">"<xliff:g id="ID_1">%1$s</xliff:g> اطلاع: <xliff:g id="ID_2">%2$s</xliff:g>"</string>
     <string name="dock_forced_resizable" msgid="5914261505436217520">"ممکن ہے کہ ایپ سپلٹ اسکرین کے ساتھ کام نہ کرے۔"</string>
     <string name="dock_non_resizeble_failed_to_dock_text" msgid="3871617304250207291">"ایپ سپلٹ اسکرین کو سپورٹ نہیں کرتی۔"</string>
-    <!-- no translation found for accessibility_quick_settings_settings (6132460890024942157) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_expand (2375165227880477530) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_collapse (1792625797142648105) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_alarm_set (1863000242431528676) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_user (1567445362870421770) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_no_internet (31890692343084075) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_open_details (4230931801728005194) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_open_settings (7806613775728380737) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_edit (7839992848995240393) -->
-    <skip />
+    <string name="accessibility_quick_settings_settings" msgid="6132460890024942157">"ترتیبات کھولیں۔"</string>
+    <string name="accessibility_quick_settings_expand" msgid="2375165227880477530">"فوری ترتیبات کھولیں۔"</string>
+    <string name="accessibility_quick_settings_collapse" msgid="1792625797142648105">"فوری ترتیبات بند کریں۔"</string>
+    <string name="accessibility_quick_settings_alarm_set" msgid="1863000242431528676">"الارم سیٹ ہو گیا۔"</string>
+    <string name="accessibility_quick_settings_user" msgid="1567445362870421770">"<xliff:g id="ID_1">%s</xliff:g> کے بطور سائن ان ہے"</string>
+    <string name="accessibility_quick_settings_no_internet" msgid="31890692343084075">"انٹرنیٹ نہیں ہے۔"</string>
+    <string name="accessibility_quick_settings_open_details" msgid="4230931801728005194">"تفصیلات کھولیں۔"</string>
+    <string name="accessibility_quick_settings_open_settings" msgid="7806613775728380737">"<xliff:g id="ID_1">%s</xliff:g> ترتیبات کھولیں۔"</string>
+    <string name="accessibility_quick_settings_edit" msgid="7839992848995240393">"ترتیبات کی ترتیب میں ترمیم کریں۔"</string>
     <string name="accessibility_quick_settings_page" msgid="5032979051755200721">"صفحہ <xliff:g id="ID_1">%1$d</xliff:g> از <xliff:g id="ID_2">%2$d</xliff:g>"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-ur-rPK/strings_tv.xml b/packages/SystemUI/res/values-ur-rPK/strings_tv.xml
index 8b0aa19..1844c96 100644
--- a/packages/SystemUI/res/values-ur-rPK/strings_tv.xml
+++ b/packages/SystemUI/res/values-ur-rPK/strings_tv.xml
@@ -24,10 +24,8 @@
     <string name="pip_play" msgid="674145557658227044">"چلائیں"</string>
     <string name="pip_pause" msgid="8412075640017218862">"موقوف کریں"</string>
     <string name="pip_hold_home" msgid="340086535668778109">"‏PIP کنٹرول کرنے کیلئے "<b>"ہوم"</b>" پکڑے رکھیں"</string>
-    <!-- no translation found for pip_onboarding_title (7850436557670253991) -->
-    <skip />
-    <!-- no translation found for pip_onboarding_description (4028124563309465267) -->
-    <skip />
+    <string name="pip_onboarding_title" msgid="7850436557670253991">"تصویر میں تصویر"</string>
+    <string name="pip_onboarding_description" msgid="4028124563309465267">"یہ آپ کی ویڈیو تب تک دکھاتا رہتا ہے جب تک آپ کوئی دوسری نہیں چلاتے۔ اسے کنٹرول کرنے کیلئے "<b>"ہوم"</b>" دبائیں اور پکڑے رہیں۔"</string>
     <string name="pip_onboarding_button" msgid="3957426748484904611">"سمجھ آ گئی"</string>
     <string name="recents_tv_dismiss" msgid="3555093879593377731">"برخاست کریں"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-uz-rUZ/strings.xml b/packages/SystemUI/res/values-uz-rUZ/strings.xml
index 0782edb..48710f6 100644
--- a/packages/SystemUI/res/values-uz-rUZ/strings.xml
+++ b/packages/SystemUI/res/values-uz-rUZ/strings.xml
@@ -71,7 +71,7 @@
     <string name="screenshot_saving_title" msgid="8242282144535555697">"Skrinshot saqlanmoqda…"</string>
     <string name="screenshot_saving_text" msgid="2419718443411738818">"Skrinshot saqlanmoqda."</string>
     <string name="screenshot_saved_title" msgid="6461865960961414961">"Skrinshot saqlandi."</string>
-    <string name="screenshot_saved_text" msgid="1152839647677558815">"Ko‘rish uchun bu yerga bosing."</string>
+    <string name="screenshot_saved_text" msgid="2685605830386712477">"Skrinshotni ko‘rish uchun bosing."</string>
     <string name="screenshot_failed_title" msgid="705781116746922771">"Skrinshot saqlanmadi."</string>
     <string name="screenshot_failed_to_save_unknown_text" msgid="7887826345701753830">"Skrinshotni saqlashda muammo yuz berdi."</string>
     <string name="screenshot_failed_to_save_text" msgid="2592658083866306296">"Xotirada joy kamligi uchun skrinshotni saqlab bo‘lmadi."</string>
@@ -118,8 +118,7 @@
     <string name="accessibility_data_signal_full" msgid="2708384608124519369">"Ma’lumot uzatish signali to‘liq."</string>
     <string name="accessibility_wifi_name" msgid="7202151365171148501">"Ulangan: <xliff:g id="WIFI">%s</xliff:g>."</string>
     <string name="accessibility_bluetooth_name" msgid="8441517146585531676">"Ulangan: <xliff:g id="BLUETOOTH">%s</xliff:g>."</string>
-    <!-- no translation found for accessibility_cast_name (4026393061247081201) -->
-    <skip />
+    <string name="accessibility_cast_name" msgid="4026393061247081201">"Ulangan: <xliff:g id="CAST">%s</xliff:g>."</string>
     <string name="accessibility_no_wimax" msgid="4329180129727630368">"WiMAX tarmog‘i yo‘q."</string>
     <string name="accessibility_wimax_one_bar" msgid="4170994299011863648">"Bitta ustunli WiMAX."</string>
     <string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"Ikkita ustunli WiMAX."</string>
@@ -150,17 +149,14 @@
     <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string>
     <string name="accessibility_data_connection_wifi" msgid="2324496756590645221">"Wi-Fi"</string>
     <string name="accessibility_no_sim" msgid="8274017118472455155">"SIM karta yo‘q."</string>
-    <!-- no translation found for accessibility_cell_data (7080312242791850520) -->
-    <skip />
-    <!-- no translation found for accessibility_cell_data_on (4310018593519761767) -->
-    <skip />
+    <string name="accessibility_cell_data" msgid="7080312242791850520">"Mobil internet"</string>
+    <string name="accessibility_cell_data_on" msgid="4310018593519761767">"Mobil internet yoniq"</string>
     <string name="accessibility_cell_data_off" msgid="8000803571751407635">"Mobil internet o‘chiq"</string>
     <string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"Bluetooth modem"</string>
     <string name="accessibility_airplane_mode" msgid="834748999790763092">"Parvoz rejimi"</string>
     <string name="accessibility_no_sims" msgid="3957997018324995781">"Hech qanday SIM karta yo‘q."</string>
     <string name="accessibility_carrier_network_change_mode" msgid="4017301580441304305">"Mobil tarmoqni o‘zgartirish"</string>
-    <!-- no translation found for accessibility_battery_details (7645516654955025422) -->
-    <skip />
+    <string name="accessibility_battery_details" msgid="7645516654955025422">"Batareya quvvati sarfi haqida ma’lumot"</string>
     <string name="accessibility_battery_level" msgid="7451474187113371965">"Batareya <xliff:g id="NUMBER">%d</xliff:g> foiz."</string>
     <!-- String.format failed for translation -->
     <!-- no translation found for accessibility_battery_level_charging (1147587904439319646) -->
@@ -202,13 +198,11 @@
     <string name="accessibility_quick_settings_dnd_priority_on" msgid="1448402297221249355">"“Bezovta qilinmasin” funksiyasi yoqilgan, faqat muhim bildirishnomalar ko‘rsatiladi."</string>
     <string name="accessibility_quick_settings_dnd_none_on" msgid="6882582132662613537">"Bezovta qilinmasin, tinchlik saqlansin"</string>
     <string name="accessibility_quick_settings_dnd_alarms_on" msgid="9152834845587554157">"Bezovta qilinmasin, faqat signallar"</string>
-    <!-- no translation found for accessibility_quick_settings_dnd (6607873236717185815) -->
-    <skip />
+    <string name="accessibility_quick_settings_dnd" msgid="6607873236717185815">"Bezovta qilinmasin."</string>
     <string name="accessibility_quick_settings_dnd_off" msgid="2371832603753738581">"“Bezovta qilinmasin” funksiyasi o‘chirilgan."</string>
     <string name="accessibility_quick_settings_dnd_changed_off" msgid="898107593453022935">"“Bezovta qilinmasin” funksiyasi o‘chirildi."</string>
     <string name="accessibility_quick_settings_dnd_changed_on" msgid="4483780856613561039">"“Bezovta qilinmasin” funksiyasi yoqildi."</string>
-    <!-- no translation found for accessibility_quick_settings_bluetooth (6341675755803320038) -->
-    <skip />
+    <string name="accessibility_quick_settings_bluetooth" msgid="6341675755803320038">"Bluetooth."</string>
     <string name="accessibility_quick_settings_bluetooth_off" msgid="2133631372372064339">"Bluetooth o‘chirilgan."</string>
     <string name="accessibility_quick_settings_bluetooth_on" msgid="7681999166216621838">"Bluetooth yoqilgan."</string>
     <string name="accessibility_quick_settings_bluetooth_connecting" msgid="6953242966685343855">"Bluetooth ulanmoqda."</string>
@@ -274,10 +268,8 @@
     <string name="quick_settings_bluetooth_detail_empty_text" msgid="4910015762433302860">"Ulangan qurilmalar topilmadi"</string>
     <string name="quick_settings_brightness_label" msgid="6968372297018755815">"Yorqinlik"</string>
     <string name="quick_settings_rotation_unlocked_label" msgid="7305323031808150099">"Avtomatik burish"</string>
-    <!-- no translation found for accessibility_quick_settings_rotation (4231661040698488779) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_rotation_value (1428962304214992318) -->
-    <skip />
+    <string name="accessibility_quick_settings_rotation" msgid="4231661040698488779">"Ekranni avtomatik burish"</string>
+    <string name="accessibility_quick_settings_rotation_value" msgid="1428962304214992318">"Tanlandi: <xliff:g id="ID_1">%s</xliff:g>"</string>
     <string name="quick_settings_rotation_locked_label" msgid="6359205706154282377">"Aylanmaydigan qilingan"</string>
     <string name="quick_settings_rotation_locked_portrait_label" msgid="5102691921442135053">"Bo‘yiga"</string>
     <string name="quick_settings_rotation_locked_landscape_label" msgid="8553157770061178719">"Eniga"</string>
@@ -296,8 +288,7 @@
     <string name="quick_settings_wifi_not_connected" msgid="7171904845345573431">"Ulanmagan"</string>
     <string name="quick_settings_wifi_no_network" msgid="2221993077220856376">"Tarmoq mavjud emas"</string>
     <string name="quick_settings_wifi_off_label" msgid="7558778100843885864">"Wi-Fi o‘chiq"</string>
-    <!-- no translation found for quick_settings_wifi_on_label (7607810331387031235) -->
-    <skip />
+    <string name="quick_settings_wifi_on_label" msgid="7607810331387031235">"Wi-Fi yoqilgan"</string>
     <string name="quick_settings_wifi_detail_empty_text" msgid="269990350383909226">"Hech qanday Wi-Fi tarmog‘i mavjud emas"</string>
     <string name="quick_settings_cast_title" msgid="7709016546426454729">"Wi-Fi monitor"</string>
     <string name="quick_settings_casting" msgid="6601710681033353316">"Translatsiya qilinmoqda"</string>
@@ -351,7 +342,7 @@
     <string name="zen_silence_introduction" msgid="3137882381093271568">"Bu BARCHA, jumladan, signallar, musiqa, videolar va o‘yinlardan keladigan tovush va tebranishlarni to‘sib qo‘yadi."</string>
     <string name="keyguard_more_overflow_text" msgid="9195222469041601365">"+<xliff:g id="NUMBER_OF_NOTIFICATIONS">%d</xliff:g>"</string>
     <string name="speed_bump_explanation" msgid="1288875699658819755">"Kam ahamiyatli bildirishnomalarni pastda ko‘rsatish"</string>
-    <string name="notification_tap_again" msgid="8524949573675922138">"Ochish uchun yana bosing"</string>
+    <string name="notification_tap_again" msgid="7590196980943943842">"Ochish uchun yana bosing"</string>
     <string name="keyguard_unlock" msgid="8043466894212841998">"Qulfdan chiqarish uchun tepaga suring"</string>
     <string name="phone_hint" msgid="4872890986869209950">"Telefonni ochish uchun suring"</string>
     <string name="voice_hint" msgid="8939888732119726665">"Ovozli yordam: belgidan boshlab suring"</string>
@@ -429,7 +420,7 @@
     <string name="accessibility_volume_expand" msgid="5946812790999244205">"Yoyish"</string>
     <string name="accessibility_volume_collapse" msgid="3609549593031810875">"Yig‘ish"</string>
     <string name="screen_pinning_title" msgid="3273740381976175811">"Ekran qadaldi"</string>
-    <string name="screen_pinning_description" msgid="3577937698406151604">"Ekran yechilmaguncha u o‘zgarmas holatda qoladi. Uni yechish uchun “Orqaga” tugmasini bosing va ushlab turing."</string>
+    <string name="screen_pinning_description" msgid="7238941806855968768">"Ekran yechilmaguncha u o‘zgarmas holatda qoladi. Uni yechish uchun “Orqaga” tugmasini bosing va ushlab turing."</string>
     <string name="screen_pinning_positive" msgid="3783985798366751226">"OK"</string>
     <string name="screen_pinning_negative" msgid="3741602308343880268">"Yo‘q, kerakmas"</string>
     <string name="quick_settings_reset_confirmation_title" msgid="748792586749897883">"<xliff:g id="TILE_LABEL">%1$s</xliff:g> berkitilsinmi?"</string>
@@ -439,15 +430,13 @@
     <string name="volumeui_prompt_allow" msgid="7954396902482228786">"Ruxsat berish"</string>
     <string name="volumeui_prompt_deny" msgid="5720663643411696731">"Rad etish"</string>
     <string name="volumeui_notification_title" msgid="4906770126345910955">"<xliff:g id="APP_NAME">%1$s</xliff:g> ovoz balandligini boshqaradi"</string>
-    <string name="volumeui_notification_text" msgid="1826889705095768656">"Aslini tiklash uchun bosing."</string>
+    <string name="volumeui_notification_text" msgid="8819536904234337445">"Aslini tiklash uchun bosing."</string>
     <string name="managed_profile_foreground_toast" msgid="5421487114739245972">"Siz ishchi profildan foydalanmoqdasiz"</string>
     <string name="volume_stream_content_description_unmute" msgid="4436631538779230857">"%1$s. Ovozini yoqish uchun ustiga bosing."</string>
     <string name="volume_stream_content_description_vibrate" msgid="1187944970457807498">"%1$s. Tebranishni yoqish uchun ustiga bosing. Maxsus imkoniyatlar ishlamasligi mumkin."</string>
     <string name="volume_stream_content_description_mute" msgid="3625049841390467354">"%1$s. Ovozini o‘chirish uchun ustiga bosing. Maxsus imkoniyatlar ishlamasligi mumkin."</string>
-    <!-- no translation found for volume_dialog_accessibility_shown_message (1834631467074259998) -->
-    <skip />
-    <!-- no translation found for volume_dialog_accessibility_dismissed_message (51543526013711399) -->
-    <skip />
+    <string name="volume_dialog_accessibility_shown_message" msgid="1834631467074259998">"Ovoz balandligini boshqarish tugmalari ko‘rsatilgan: %s. Yopish uchun tepaga suring."</string>
+    <string name="volume_dialog_accessibility_dismissed_message" msgid="51543526013711399">"Ovoz balandligini boshqarish tugmalari yashirilgan"</string>
     <string name="system_ui_tuner" msgid="708224127392452018">"SystemUI Tuner"</string>
     <string name="show_battery_percentage" msgid="5444136600512968798">"Batareya foizi ko‘rsatilsin"</string>
     <string name="show_battery_percentage_summary" msgid="3215025775576786037">"Batareya quvvat olmayotgan vaqtda uning foizi holat qatorida ko‘rsatilsin"</string>
@@ -643,27 +632,17 @@
     <string name="accessibility_qs_edit_tile_removed" msgid="8584304916627913440">"“<xliff:g id="TILE_NAME">%1$s</xliff:g>” tugmasi o‘chirildi"</string>
     <string name="accessibility_qs_edit_tile_moved" msgid="4343693412689365038">"“<xliff:g id="TILE_NAME">%1$s</xliff:g>” tugmasi endi <xliff:g id="POSITION">%2$d</xliff:g>-joyni egallanmoqda"</string>
     <string name="accessibility_desc_quick_settings_edit" msgid="8073587401747016103">"Tezkor sozlamalar muharriri"</string>
-    <!-- no translation found for accessibility_desc_notification_icon (8352414185263916335) -->
-    <skip />
+    <string name="accessibility_desc_notification_icon" msgid="8352414185263916335">"<xliff:g id="ID_1">%1$s</xliff:g>-bildirishnoma: <xliff:g id="ID_2">%2$s</xliff:g>"</string>
     <string name="dock_forced_resizable" msgid="5914261505436217520">"Ilova ekranni ikkiga bo‘lish rejimini qo‘llab-quvvatlamaydi."</string>
     <string name="dock_non_resizeble_failed_to_dock_text" msgid="3871617304250207291">"Bu ilova ekranni bo‘lish xususiyatini qo‘llab-quvvatlamaydi."</string>
-    <!-- no translation found for accessibility_quick_settings_settings (6132460890024942157) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_expand (2375165227880477530) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_collapse (1792625797142648105) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_alarm_set (1863000242431528676) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_user (1567445362870421770) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_no_internet (31890692343084075) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_open_details (4230931801728005194) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_open_settings (7806613775728380737) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_edit (7839992848995240393) -->
-    <skip />
+    <string name="accessibility_quick_settings_settings" msgid="6132460890024942157">"Sozlamalarni ochish."</string>
+    <string name="accessibility_quick_settings_expand" msgid="2375165227880477530">"Tezkor sozlamalarni ochish."</string>
+    <string name="accessibility_quick_settings_collapse" msgid="1792625797142648105">"Tezkor sozlamalarni yopish."</string>
+    <string name="accessibility_quick_settings_alarm_set" msgid="1863000242431528676">"Uyg‘otkich o‘rnatildi."</string>
+    <string name="accessibility_quick_settings_user" msgid="1567445362870421770">"Siz <xliff:g id="ID_1">%s</xliff:g> sifatida kirgansiz"</string>
+    <string name="accessibility_quick_settings_no_internet" msgid="31890692343084075">"Internet yo‘q."</string>
+    <string name="accessibility_quick_settings_open_details" msgid="4230931801728005194">"Tafsilotlarini ko‘rsatish."</string>
+    <string name="accessibility_quick_settings_open_settings" msgid="7806613775728380737">"<xliff:g id="ID_1">%s</xliff:g> sozlamalarini ochish."</string>
+    <string name="accessibility_quick_settings_edit" msgid="7839992848995240393">"Sozlamalar tartibini o‘zgartirish."</string>
     <string name="accessibility_quick_settings_page" msgid="5032979051755200721">"<xliff:g id="ID_1">%1$d</xliff:g>-sahifa, jami: <xliff:g id="ID_2">%2$d</xliff:g> ta sahifa"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-uz-rUZ/strings_tv.xml b/packages/SystemUI/res/values-uz-rUZ/strings_tv.xml
index 1dda1c4..2af885e 100644
--- a/packages/SystemUI/res/values-uz-rUZ/strings_tv.xml
+++ b/packages/SystemUI/res/values-uz-rUZ/strings_tv.xml
@@ -24,10 +24,8 @@
     <string name="pip_play" msgid="674145557658227044">"Ijro"</string>
     <string name="pip_pause" msgid="8412075640017218862">"Pauza"</string>
     <string name="pip_hold_home" msgid="340086535668778109">"“Kadr ichida kadr” rejimini boshqarish uchun "<b>"BOSHI"</b>" tugmasini bosib turing"</string>
-    <!-- no translation found for pip_onboarding_title (7850436557670253991) -->
-    <skip />
-    <!-- no translation found for pip_onboarding_description (4028124563309465267) -->
-    <skip />
+    <string name="pip_onboarding_title" msgid="7850436557670253991">"Tasvir ichida tasvir"</string>
+    <string name="pip_onboarding_description" msgid="4028124563309465267">"Bir videoni boshqasida ko‘rish imkonini beradi. Boshqarish uchun "<b>"HOME"</b>" tugmasini bosib turing."</string>
     <string name="pip_onboarding_button" msgid="3957426748484904611">"OK"</string>
     <string name="recents_tv_dismiss" msgid="3555093879593377731">"Yopish"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-vi/strings.xml b/packages/SystemUI/res/values-vi/strings.xml
index e743c40..9ded699 100644
--- a/packages/SystemUI/res/values-vi/strings.xml
+++ b/packages/SystemUI/res/values-vi/strings.xml
@@ -71,7 +71,7 @@
     <string name="screenshot_saving_title" msgid="8242282144535555697">"Đang lưu ảnh chụp màn hình..."</string>
     <string name="screenshot_saving_text" msgid="2419718443411738818">"Ảnh chụp màn hình đang được lưu."</string>
     <string name="screenshot_saved_title" msgid="6461865960961414961">"Đã chụp ảnh màn hình."</string>
-    <string name="screenshot_saved_text" msgid="1152839647677558815">"Chạm để xem ảnh chụp màn hình của bạn."</string>
+    <string name="screenshot_saved_text" msgid="2685605830386712477">"Nhấn để xem ảnh chụp màn hình của bạn."</string>
     <string name="screenshot_failed_title" msgid="705781116746922771">"Không thể chụp ảnh màn hình."</string>
     <string name="screenshot_failed_to_save_unknown_text" msgid="7887826345701753830">"Đã gặp phải sự cố khi đang lưu ảnh chụp màn hình."</string>
     <string name="screenshot_failed_to_save_text" msgid="2592658083866306296">"Không thể lưu ảnh chụp màn hình do giới hạn dung lượng bộ nhớ."</string>
@@ -118,8 +118,7 @@
     <string name="accessibility_data_signal_full" msgid="2708384608124519369">"Tín hiệu dữ liệu đầy đủ."</string>
     <string name="accessibility_wifi_name" msgid="7202151365171148501">"Đã kết nối với <xliff:g id="WIFI">%s</xliff:g>."</string>
     <string name="accessibility_bluetooth_name" msgid="8441517146585531676">"Đã kết nối với <xliff:g id="BLUETOOTH">%s</xliff:g>."</string>
-    <!-- no translation found for accessibility_cast_name (4026393061247081201) -->
-    <skip />
+    <string name="accessibility_cast_name" msgid="4026393061247081201">"Đã kết nối với <xliff:g id="CAST">%s</xliff:g>."</string>
     <string name="accessibility_no_wimax" msgid="4329180129727630368">"Không có WiMAX."</string>
     <string name="accessibility_wimax_one_bar" msgid="4170994299011863648">"WiMAX một vạch."</string>
     <string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"WiMAX hai vạch."</string>
@@ -150,17 +149,14 @@
     <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Cạnh"</string>
     <string name="accessibility_data_connection_wifi" msgid="2324496756590645221">"Wi-Fi"</string>
     <string name="accessibility_no_sim" msgid="8274017118472455155">"Không có SIM nào."</string>
-    <!-- no translation found for accessibility_cell_data (7080312242791850520) -->
-    <skip />
-    <!-- no translation found for accessibility_cell_data_on (4310018593519761767) -->
-    <skip />
+    <string name="accessibility_cell_data" msgid="7080312242791850520">"Dữ liệu di động"</string>
+    <string name="accessibility_cell_data_on" msgid="4310018593519761767">"Dữ liệu di động đang bật"</string>
     <string name="accessibility_cell_data_off" msgid="8000803571751407635">"Dữ liệu di động bị tắt"</string>
     <string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"Truy cập Internet qua Bluetooth."</string>
     <string name="accessibility_airplane_mode" msgid="834748999790763092">"Chế độ trên máy bay."</string>
     <string name="accessibility_no_sims" msgid="3957997018324995781">"Không có thẻ SIM nào."</string>
     <string name="accessibility_carrier_network_change_mode" msgid="4017301580441304305">"Thay đổi mạng của nhà cung cấp dịch vụ."</string>
-    <!-- no translation found for accessibility_battery_details (7645516654955025422) -->
-    <skip />
+    <string name="accessibility_battery_details" msgid="7645516654955025422">"Mở chi tiết về pin"</string>
     <string name="accessibility_battery_level" msgid="7451474187113371965">"<xliff:g id="NUMBER">%d</xliff:g> phần trăm pin."</string>
     <string name="accessibility_battery_level_charging" msgid="1147587904439319646">"Đang sạc pin, <xliff:g id="BATTERY_PERCENTAGE">%d</xliff:g> phần trăm."</string>
     <string name="accessibility_settings_button" msgid="799583911231893380">"Cài đặt hệ thống"</string>
@@ -200,13 +196,11 @@
     <string name="accessibility_quick_settings_dnd_priority_on" msgid="1448402297221249355">"Bật tính năng không làm phiền, chỉ ưu tiên."</string>
     <string name="accessibility_quick_settings_dnd_none_on" msgid="6882582132662613537">"Bật tính năng không làm phiền, hoàn toàn tắt tiếng."</string>
     <string name="accessibility_quick_settings_dnd_alarms_on" msgid="9152834845587554157">"Bật tính năng không làm phiền, chỉ báo thức."</string>
-    <!-- no translation found for accessibility_quick_settings_dnd (6607873236717185815) -->
-    <skip />
+    <string name="accessibility_quick_settings_dnd" msgid="6607873236717185815">"Không làm phiền."</string>
     <string name="accessibility_quick_settings_dnd_off" msgid="2371832603753738581">"Tắt tính năng không làm phiền."</string>
     <string name="accessibility_quick_settings_dnd_changed_off" msgid="898107593453022935">"Đã tắt tính năng không làm phiền."</string>
     <string name="accessibility_quick_settings_dnd_changed_on" msgid="4483780856613561039">"Đã bật tính năng không làm phiền."</string>
-    <!-- no translation found for accessibility_quick_settings_bluetooth (6341675755803320038) -->
-    <skip />
+    <string name="accessibility_quick_settings_bluetooth" msgid="6341675755803320038">"Bluetooth."</string>
     <string name="accessibility_quick_settings_bluetooth_off" msgid="2133631372372064339">"Bluetooth tắt."</string>
     <string name="accessibility_quick_settings_bluetooth_on" msgid="7681999166216621838">"Bluetooth bật."</string>
     <string name="accessibility_quick_settings_bluetooth_connecting" msgid="6953242966685343855">"Đang kết nối Bluetooth."</string>
@@ -272,10 +266,8 @@
     <string name="quick_settings_bluetooth_detail_empty_text" msgid="4910015762433302860">"Không có thiết bị nào được ghép nối"</string>
     <string name="quick_settings_brightness_label" msgid="6968372297018755815">"Độ sáng"</string>
     <string name="quick_settings_rotation_unlocked_label" msgid="7305323031808150099">"Tự động xoay"</string>
-    <!-- no translation found for accessibility_quick_settings_rotation (4231661040698488779) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_rotation_value (1428962304214992318) -->
-    <skip />
+    <string name="accessibility_quick_settings_rotation" msgid="4231661040698488779">"Tự động xoay màn hình"</string>
+    <string name="accessibility_quick_settings_rotation_value" msgid="1428962304214992318">"Đặt thành <xliff:g id="ID_1">%s</xliff:g>"</string>
     <string name="quick_settings_rotation_locked_label" msgid="6359205706154282377">"Khóa xoay"</string>
     <string name="quick_settings_rotation_locked_portrait_label" msgid="5102691921442135053">"Dọc"</string>
     <string name="quick_settings_rotation_locked_landscape_label" msgid="8553157770061178719">"Ngang"</string>
@@ -294,8 +286,7 @@
     <string name="quick_settings_wifi_not_connected" msgid="7171904845345573431">"Chưa được kết nối"</string>
     <string name="quick_settings_wifi_no_network" msgid="2221993077220856376">"Không có mạng nào"</string>
     <string name="quick_settings_wifi_off_label" msgid="7558778100843885864">"Tắt Wi-Fi"</string>
-    <!-- no translation found for quick_settings_wifi_on_label (7607810331387031235) -->
-    <skip />
+    <string name="quick_settings_wifi_on_label" msgid="7607810331387031235">"Wi-Fi đang bật"</string>
     <string name="quick_settings_wifi_detail_empty_text" msgid="269990350383909226">"Không có mạng Wi-Fi"</string>
     <string name="quick_settings_cast_title" msgid="7709016546426454729">"Truyền"</string>
     <string name="quick_settings_casting" msgid="6601710681033353316">"Đang truyền"</string>
@@ -349,7 +340,7 @@
     <string name="zen_silence_introduction" msgid="3137882381093271568">"Chế độ này sẽ chặn TẤT CẢ âm thanh và tiếng rung, bao gồm báo thức, âm nhạc, video và trò chơi."</string>
     <string name="keyguard_more_overflow_text" msgid="9195222469041601365">"+<xliff:g id="NUMBER_OF_NOTIFICATIONS">%d</xliff:g>"</string>
     <string name="speed_bump_explanation" msgid="1288875699658819755">"Thông báo ít khẩn cấp hơn bên dưới"</string>
-    <string name="notification_tap_again" msgid="8524949573675922138">"Chạm lại để mở"</string>
+    <string name="notification_tap_again" msgid="7590196980943943842">"Nhấn lại để mở"</string>
     <string name="keyguard_unlock" msgid="8043466894212841998">"Vuốt lên để mở khóa"</string>
     <string name="phone_hint" msgid="4872890986869209950">"Vuốt từ biểu tượng để mở điện thoại"</string>
     <string name="voice_hint" msgid="8939888732119726665">"Vuốt từ biểu tượng để mở trợ lý thoại"</string>
@@ -427,7 +418,7 @@
     <string name="accessibility_volume_expand" msgid="5946812790999244205">"Mở rộng"</string>
     <string name="accessibility_volume_collapse" msgid="3609549593031810875">"Thu gọn"</string>
     <string name="screen_pinning_title" msgid="3273740381976175811">"Màn hình được ghim"</string>
-    <string name="screen_pinning_description" msgid="3577937698406151604">"Thao tác này sẽ duy trì hiển thị màn hình cho đến khi bạn bỏ ghim. Chạm và giữ Quay lại để bỏ ghim."</string>
+    <string name="screen_pinning_description" msgid="7238941806855968768">"Thao tác này sẽ duy trì hiển thị màn hình cho đến khi bạn bỏ ghim. Chạm và giữ Quay lại để bỏ ghim."</string>
     <string name="screen_pinning_positive" msgid="3783985798366751226">"Ok"</string>
     <string name="screen_pinning_negative" msgid="3741602308343880268">"Không, cảm ơn"</string>
     <string name="quick_settings_reset_confirmation_title" msgid="748792586749897883">"Ẩn <xliff:g id="TILE_LABEL">%1$s</xliff:g>?"</string>
@@ -437,15 +428,15 @@
     <string name="volumeui_prompt_allow" msgid="7954396902482228786">"Cho phép"</string>
     <string name="volumeui_prompt_deny" msgid="5720663643411696731">"Từ chối"</string>
     <string name="volumeui_notification_title" msgid="4906770126345910955">"<xliff:g id="APP_NAME">%1$s</xliff:g> là hộp thoại khối lượng"</string>
-    <string name="volumeui_notification_text" msgid="1826889705095768656">"Chạm để khôi phục bản gốc."</string>
+    <string name="volumeui_notification_text" msgid="8819536904234337445">"Nhấn để khôi phục ảnh chụp màn hình gốc."</string>
     <string name="managed_profile_foreground_toast" msgid="5421487114739245972">"Bạn đang sử dụng hồ sơ công việc của mình"</string>
     <string name="volume_stream_content_description_unmute" msgid="4436631538779230857">"%1$s. Nhấn để bật tiếng."</string>
     <string name="volume_stream_content_description_vibrate" msgid="1187944970457807498">"%1$s. Nhấn để đặt chế độ rung. Bạn có thể tắt tiếng dịch vụ trợ năng."</string>
     <string name="volume_stream_content_description_mute" msgid="3625049841390467354">"%1$s. Nhấn để tắt tiếng. Bạn có thể tắt tiếng dịch vụ trợ năng."</string>
+    <!-- String.format failed for translation -->
     <!-- no translation found for volume_dialog_accessibility_shown_message (1834631467074259998) -->
     <skip />
-    <!-- no translation found for volume_dialog_accessibility_dismissed_message (51543526013711399) -->
-    <skip />
+    <string name="volume_dialog_accessibility_dismissed_message" msgid="51543526013711399">"Các điều khiển âm lượng bị ẩn"</string>
     <string name="system_ui_tuner" msgid="708224127392452018">"Bộ điều hướng giao diện người dùng hệ thống"</string>
     <string name="show_battery_percentage" msgid="5444136600512968798">"Hiển thị tỷ lệ phần trăm pin được nhúng"</string>
     <string name="show_battery_percentage_summary" msgid="3215025775576786037">"Hiển thị tỷ lệ phần trăm mức pin bên trong biểu tượng thanh trạng thái khi không sạc"</string>
@@ -641,27 +632,17 @@
     <string name="accessibility_qs_edit_tile_removed" msgid="8584304916627913440">"<xliff:g id="TILE_NAME">%1$s</xliff:g> được di chuyển"</string>
     <string name="accessibility_qs_edit_tile_moved" msgid="4343693412689365038">"<xliff:g id="TILE_NAME">%1$s</xliff:g> được di chuyển sang vị trí <xliff:g id="POSITION">%2$d</xliff:g>"</string>
     <string name="accessibility_desc_quick_settings_edit" msgid="8073587401747016103">"Trình chỉnh sửa cài đặt nhanh."</string>
-    <!-- no translation found for accessibility_desc_notification_icon (8352414185263916335) -->
-    <skip />
+    <string name="accessibility_desc_notification_icon" msgid="8352414185263916335">"Thông báo của <xliff:g id="ID_1">%1$s</xliff:g>: <xliff:g id="ID_2">%2$s</xliff:g>"</string>
     <string name="dock_forced_resizable" msgid="5914261505436217520">"Ứng dụng có thể không hoạt động với tính năng chia đôi màn hình."</string>
     <string name="dock_non_resizeble_failed_to_dock_text" msgid="3871617304250207291">"Ứng dụng không hỗ trợ chia đôi màn hình."</string>
-    <!-- no translation found for accessibility_quick_settings_settings (6132460890024942157) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_expand (2375165227880477530) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_collapse (1792625797142648105) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_alarm_set (1863000242431528676) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_user (1567445362870421770) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_no_internet (31890692343084075) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_open_details (4230931801728005194) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_open_settings (7806613775728380737) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_edit (7839992848995240393) -->
-    <skip />
+    <string name="accessibility_quick_settings_settings" msgid="6132460890024942157">"Mở cài đặt."</string>
+    <string name="accessibility_quick_settings_expand" msgid="2375165227880477530">"Mở cài đặt nhanh."</string>
+    <string name="accessibility_quick_settings_collapse" msgid="1792625797142648105">"Đóng cài đặt nhanh."</string>
+    <string name="accessibility_quick_settings_alarm_set" msgid="1863000242431528676">"Đã đặt báo thức."</string>
+    <string name="accessibility_quick_settings_user" msgid="1567445362870421770">"Đã đăng nhập là <xliff:g id="ID_1">%s</xliff:g>"</string>
+    <string name="accessibility_quick_settings_no_internet" msgid="31890692343084075">"Không có Internet."</string>
+    <string name="accessibility_quick_settings_open_details" msgid="4230931801728005194">"Mở chi tiết."</string>
+    <string name="accessibility_quick_settings_open_settings" msgid="7806613775728380737">"Mở cài đặt <xliff:g id="ID_1">%s</xliff:g>."</string>
+    <string name="accessibility_quick_settings_edit" msgid="7839992848995240393">"Chỉnh sửa thứ tự cài đặt."</string>
     <string name="accessibility_quick_settings_page" msgid="5032979051755200721">"Trang <xliff:g id="ID_1">%1$d</xliff:g> / <xliff:g id="ID_2">%2$d</xliff:g>"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-vi/strings_tv.xml b/packages/SystemUI/res/values-vi/strings_tv.xml
index 3ac8574..21343be 100644
--- a/packages/SystemUI/res/values-vi/strings_tv.xml
+++ b/packages/SystemUI/res/values-vi/strings_tv.xml
@@ -24,10 +24,8 @@
     <string name="pip_play" msgid="674145557658227044">"Phát"</string>
     <string name="pip_pause" msgid="8412075640017218862">"Tạm dừng"</string>
     <string name="pip_hold_home" msgid="340086535668778109">"Giữ "<b>"HOME"</b>" để đ.khiển PIP"</string>
-    <!-- no translation found for pip_onboarding_title (7850436557670253991) -->
-    <skip />
-    <!-- no translation found for pip_onboarding_description (4028124563309465267) -->
-    <skip />
+    <string name="pip_onboarding_title" msgid="7850436557670253991">"Ảnh trong ảnh"</string>
+    <string name="pip_onboarding_description" msgid="4028124563309465267">"Màn hình này sẽ giữ video của bạn ở chế độ xem cho đến khi bạn phát video khác. Nhấn và giữ "<b>"HOME"</b>" để điều khiển màn hình."</string>
     <string name="pip_onboarding_button" msgid="3957426748484904611">"OK"</string>
     <string name="recents_tv_dismiss" msgid="3555093879593377731">"Loại bỏ"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-zh-rCN/strings.xml b/packages/SystemUI/res/values-zh-rCN/strings.xml
index 82ee690..d4d0288 100644
--- a/packages/SystemUI/res/values-zh-rCN/strings.xml
+++ b/packages/SystemUI/res/values-zh-rCN/strings.xml
@@ -71,7 +71,7 @@
     <string name="screenshot_saving_title" msgid="8242282144535555697">"正在保存屏幕截图..."</string>
     <string name="screenshot_saving_text" msgid="2419718443411738818">"正在保存屏幕截图。"</string>
     <string name="screenshot_saved_title" msgid="6461865960961414961">"已抓取屏幕截图。"</string>
-    <string name="screenshot_saved_text" msgid="1152839647677558815">"触摸可查看您的屏幕截图。"</string>
+    <string name="screenshot_saved_text" msgid="2685605830386712477">"点按即可查看您的屏幕截图。"</string>
     <string name="screenshot_failed_title" msgid="705781116746922771">"无法抓取屏幕截图。"</string>
     <string name="screenshot_failed_to_save_unknown_text" msgid="7887826345701753830">"保存屏幕截图时出现问题。"</string>
     <string name="screenshot_failed_to_save_text" msgid="2592658083866306296">"由于存储空间有限,无法保存屏幕截图。"</string>
@@ -118,8 +118,7 @@
     <string name="accessibility_data_signal_full" msgid="2708384608124519369">"数据信号满格。"</string>
     <string name="accessibility_wifi_name" msgid="7202151365171148501">"已连接到<xliff:g id="WIFI">%s</xliff:g>。"</string>
     <string name="accessibility_bluetooth_name" msgid="8441517146585531676">"已连接到<xliff:g id="BLUETOOTH">%s</xliff:g>。"</string>
-    <!-- no translation found for accessibility_cast_name (4026393061247081201) -->
-    <skip />
+    <string name="accessibility_cast_name" msgid="4026393061247081201">"已连接到 <xliff:g id="CAST">%s</xliff:g>。"</string>
     <string name="accessibility_no_wimax" msgid="4329180129727630368">"无 WiMAX 信号。"</string>
     <string name="accessibility_wimax_one_bar" msgid="4170994299011863648">"WiMAX 信号强度为一格。"</string>
     <string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"WiMAX 信号强度为两格。"</string>
@@ -150,17 +149,14 @@
     <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"EDGE"</string>
     <string name="accessibility_data_connection_wifi" msgid="2324496756590645221">"WLAN"</string>
     <string name="accessibility_no_sim" msgid="8274017118472455155">"无 SIM 卡。"</string>
-    <!-- no translation found for accessibility_cell_data (7080312242791850520) -->
-    <skip />
-    <!-- no translation found for accessibility_cell_data_on (4310018593519761767) -->
-    <skip />
+    <string name="accessibility_cell_data" msgid="7080312242791850520">"移动数据网络"</string>
+    <string name="accessibility_cell_data_on" msgid="4310018593519761767">"移动数据网络已开启"</string>
     <string name="accessibility_cell_data_off" msgid="8000803571751407635">"移动数据网络已关闭"</string>
     <string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"蓝牙网络共享。"</string>
     <string name="accessibility_airplane_mode" msgid="834748999790763092">"飞行模式。"</string>
     <string name="accessibility_no_sims" msgid="3957997018324995781">"没有 SIM 卡。"</string>
     <string name="accessibility_carrier_network_change_mode" msgid="4017301580441304305">"运营商网络正在更改。"</string>
-    <!-- no translation found for accessibility_battery_details (7645516654955025422) -->
-    <skip />
+    <string name="accessibility_battery_details" msgid="7645516654955025422">"打开电量详情"</string>
     <string name="accessibility_battery_level" msgid="7451474187113371965">"电池电量为百分之 <xliff:g id="NUMBER">%d</xliff:g>。"</string>
     <string name="accessibility_battery_level_charging" msgid="1147587904439319646">"正在充电,已完成百分之<xliff:g id="BATTERY_PERCENTAGE">%d</xliff:g>。"</string>
     <string name="accessibility_settings_button" msgid="799583911231893380">"系统设置。"</string>
@@ -200,13 +196,11 @@
     <string name="accessibility_quick_settings_dnd_priority_on" msgid="1448402297221249355">"勿扰模式已开启,仅限优先打扰。"</string>
     <string name="accessibility_quick_settings_dnd_none_on" msgid="6882582132662613537">"勿扰模式已开启,完全静音。"</string>
     <string name="accessibility_quick_settings_dnd_alarms_on" msgid="9152834845587554157">"勿扰模式已开启,仅限闹钟。"</string>
-    <!-- no translation found for accessibility_quick_settings_dnd (6607873236717185815) -->
-    <skip />
+    <string name="accessibility_quick_settings_dnd" msgid="6607873236717185815">"勿扰。"</string>
     <string name="accessibility_quick_settings_dnd_off" msgid="2371832603753738581">"勿扰模式关闭。"</string>
     <string name="accessibility_quick_settings_dnd_changed_off" msgid="898107593453022935">"已关闭勿扰模式。"</string>
     <string name="accessibility_quick_settings_dnd_changed_on" msgid="4483780856613561039">"已开启勿扰模式。"</string>
-    <!-- no translation found for accessibility_quick_settings_bluetooth (6341675755803320038) -->
-    <skip />
+    <string name="accessibility_quick_settings_bluetooth" msgid="6341675755803320038">"蓝牙。"</string>
     <string name="accessibility_quick_settings_bluetooth_off" msgid="2133631372372064339">"蓝牙关闭。"</string>
     <string name="accessibility_quick_settings_bluetooth_on" msgid="7681999166216621838">"蓝牙开启。"</string>
     <string name="accessibility_quick_settings_bluetooth_connecting" msgid="6953242966685343855">"蓝牙连接中。"</string>
@@ -272,10 +266,8 @@
     <string name="quick_settings_bluetooth_detail_empty_text" msgid="4910015762433302860">"没有可用的配对设备"</string>
     <string name="quick_settings_brightness_label" msgid="6968372297018755815">"亮度"</string>
     <string name="quick_settings_rotation_unlocked_label" msgid="7305323031808150099">"自动旋转"</string>
-    <!-- no translation found for accessibility_quick_settings_rotation (4231661040698488779) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_rotation_value (1428962304214992318) -->
-    <skip />
+    <string name="accessibility_quick_settings_rotation" msgid="4231661040698488779">"自动旋转屏幕"</string>
+    <string name="accessibility_quick_settings_rotation_value" msgid="1428962304214992318">"设置为<xliff:g id="ID_1">%s</xliff:g>"</string>
     <string name="quick_settings_rotation_locked_label" msgid="6359205706154282377">"屏幕方向:锁定"</string>
     <string name="quick_settings_rotation_locked_portrait_label" msgid="5102691921442135053">"纵向"</string>
     <string name="quick_settings_rotation_locked_landscape_label" msgid="8553157770061178719">"横向"</string>
@@ -294,8 +286,7 @@
     <string name="quick_settings_wifi_not_connected" msgid="7171904845345573431">"未连接"</string>
     <string name="quick_settings_wifi_no_network" msgid="2221993077220856376">"无网络"</string>
     <string name="quick_settings_wifi_off_label" msgid="7558778100843885864">"WLAN:关闭"</string>
-    <!-- no translation found for quick_settings_wifi_on_label (7607810331387031235) -->
-    <skip />
+    <string name="quick_settings_wifi_on_label" msgid="7607810331387031235">"WLAN 已开启"</string>
     <string name="quick_settings_wifi_detail_empty_text" msgid="269990350383909226">"没有 WLAN 网络"</string>
     <string name="quick_settings_cast_title" msgid="7709016546426454729">"投射"</string>
     <string name="quick_settings_casting" msgid="6601710681033353316">"正在投射"</string>
@@ -349,7 +340,7 @@
     <string name="zen_silence_introduction" msgid="3137882381093271568">"这会阻止所有声音和振动(包括闹钟、音乐、视频和游戏)打扰您。"</string>
     <string name="keyguard_more_overflow_text" msgid="9195222469041601365">"+<xliff:g id="NUMBER_OF_NOTIFICATIONS">%d</xliff:g>"</string>
     <string name="speed_bump_explanation" msgid="1288875699658819755">"不太紧急的通知会显示在下方"</string>
-    <string name="notification_tap_again" msgid="8524949573675922138">"再次触摸即可打开"</string>
+    <string name="notification_tap_again" msgid="7590196980943943842">"再次点按即可打开"</string>
     <string name="keyguard_unlock" msgid="8043466894212841998">"向上滑动即可解锁"</string>
     <string name="phone_hint" msgid="4872890986869209950">"滑动图标即可拨打电话"</string>
     <string name="voice_hint" msgid="8939888732119726665">"滑动图标即可打开语音助理"</string>
@@ -427,7 +418,7 @@
     <string name="accessibility_volume_expand" msgid="5946812790999244205">"展开"</string>
     <string name="accessibility_volume_collapse" msgid="3609549593031810875">"收起"</string>
     <string name="screen_pinning_title" msgid="3273740381976175811">"已固定屏幕"</string>
-    <string name="screen_pinning_description" msgid="3577937698406151604">"这将会固定显示此屏幕,直到您取消固定为止。触摸并按住“返回”即可取消固定屏幕。"</string>
+    <string name="screen_pinning_description" msgid="7238941806855968768">"这将会固定显示此屏幕,直到您取消固定为止。触摸并按住“返回”即可取消固定屏幕。"</string>
     <string name="screen_pinning_positive" msgid="3783985798366751226">"知道了"</string>
     <string name="screen_pinning_negative" msgid="3741602308343880268">"不用了"</string>
     <string name="quick_settings_reset_confirmation_title" msgid="748792586749897883">"要隐藏“<xliff:g id="TILE_LABEL">%1$s</xliff:g>”吗?"</string>
@@ -437,15 +428,13 @@
     <string name="volumeui_prompt_allow" msgid="7954396902482228786">"允许"</string>
     <string name="volumeui_prompt_deny" msgid="5720663643411696731">"拒绝"</string>
     <string name="volumeui_notification_title" msgid="4906770126345910955">"“<xliff:g id="APP_NAME">%1$s</xliff:g>”已用作音量控制对话框"</string>
-    <string name="volumeui_notification_text" msgid="1826889705095768656">"触摸即可恢复原始设置。"</string>
+    <string name="volumeui_notification_text" msgid="8819536904234337445">"点按即可恢复原始设置。"</string>
     <string name="managed_profile_foreground_toast" msgid="5421487114739245972">"您当前正在使用工作资料"</string>
     <string name="volume_stream_content_description_unmute" msgid="4436631538779230857">"%1$s。点按即可取消静音。"</string>
     <string name="volume_stream_content_description_vibrate" msgid="1187944970457807498">"%1$s。点按即可设为振动,但可能会同时将无障碍服务设为静音。"</string>
     <string name="volume_stream_content_description_mute" msgid="3625049841390467354">"%1$s。点按即可设为静音,但可能会同时将无障碍服务设为静音。"</string>
-    <!-- no translation found for volume_dialog_accessibility_shown_message (1834631467074259998) -->
-    <skip />
-    <!-- no translation found for volume_dialog_accessibility_dismissed_message (51543526013711399) -->
-    <skip />
+    <string name="volume_dialog_accessibility_shown_message" msgid="1834631467074259998">"已显示%s音量控件。向上滑动即可关闭。"</string>
+    <string name="volume_dialog_accessibility_dismissed_message" msgid="51543526013711399">"已隐藏音量控件"</string>
     <string name="system_ui_tuner" msgid="708224127392452018">"系统界面调节工具"</string>
     <string name="show_battery_percentage" msgid="5444136600512968798">"嵌入式显示电池电量百分比 显示嵌入的电池电量百分比"</string>
     <string name="show_battery_percentage_summary" msgid="3215025775576786037">"未充电时在状态栏图标内显示电池电量百分比"</string>
@@ -641,27 +630,17 @@
     <string name="accessibility_qs_edit_tile_removed" msgid="8584304916627913440">"已移除<xliff:g id="TILE_NAME">%1$s</xliff:g>"</string>
     <string name="accessibility_qs_edit_tile_moved" msgid="4343693412689365038">"已将<xliff:g id="TILE_NAME">%1$s</xliff:g>移至位置 <xliff:g id="POSITION">%2$d</xliff:g>"</string>
     <string name="accessibility_desc_quick_settings_edit" msgid="8073587401747016103">"快捷设置编辑器。"</string>
-    <!-- no translation found for accessibility_desc_notification_icon (8352414185263916335) -->
-    <skip />
+    <string name="accessibility_desc_notification_icon" msgid="8352414185263916335">"<xliff:g id="ID_1">%1$s</xliff:g>通知:<xliff:g id="ID_2">%2$s</xliff:g>"</string>
     <string name="dock_forced_resizable" msgid="5914261505436217520">"应用可能无法在分屏模式下正常运行。"</string>
     <string name="dock_non_resizeble_failed_to_dock_text" msgid="3871617304250207291">"应用不支持分屏。"</string>
-    <!-- no translation found for accessibility_quick_settings_settings (6132460890024942157) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_expand (2375165227880477530) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_collapse (1792625797142648105) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_alarm_set (1863000242431528676) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_user (1567445362870421770) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_no_internet (31890692343084075) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_open_details (4230931801728005194) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_open_settings (7806613775728380737) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_edit (7839992848995240393) -->
-    <skip />
+    <string name="accessibility_quick_settings_settings" msgid="6132460890024942157">"打开设置。"</string>
+    <string name="accessibility_quick_settings_expand" msgid="2375165227880477530">"开启快捷设置。"</string>
+    <string name="accessibility_quick_settings_collapse" msgid="1792625797142648105">"关闭快捷设置。"</string>
+    <string name="accessibility_quick_settings_alarm_set" msgid="1863000242431528676">"已设置闹钟。"</string>
+    <string name="accessibility_quick_settings_user" msgid="1567445362870421770">"目前登录的用户名为<xliff:g id="ID_1">%s</xliff:g>"</string>
+    <string name="accessibility_quick_settings_no_internet" msgid="31890692343084075">"未连接到互联网。"</string>
+    <string name="accessibility_quick_settings_open_details" msgid="4230931801728005194">"打开详情页面。"</string>
+    <string name="accessibility_quick_settings_open_settings" msgid="7806613775728380737">"打开<xliff:g id="ID_1">%s</xliff:g>设置。"</string>
+    <string name="accessibility_quick_settings_edit" msgid="7839992848995240393">"修改设置顺序。"</string>
     <string name="accessibility_quick_settings_page" msgid="5032979051755200721">"第 <xliff:g id="ID_1">%1$d</xliff:g> 页,共 <xliff:g id="ID_2">%2$d</xliff:g> 页"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-zh-rCN/strings_tv.xml b/packages/SystemUI/res/values-zh-rCN/strings_tv.xml
index ac4991d..e29dec3 100644
--- a/packages/SystemUI/res/values-zh-rCN/strings_tv.xml
+++ b/packages/SystemUI/res/values-zh-rCN/strings_tv.xml
@@ -24,10 +24,8 @@
     <string name="pip_play" msgid="674145557658227044">"播放"</string>
     <string name="pip_pause" msgid="8412075640017218862">"暂停"</string>
     <string name="pip_hold_home" msgid="340086535668778109">"按住"<b>"主屏幕"</b>"按钮即可控制画中画功能"</string>
-    <!-- no translation found for pip_onboarding_title (7850436557670253991) -->
-    <skip />
-    <!-- no translation found for pip_onboarding_description (4028124563309465267) -->
-    <skip />
+    <string name="pip_onboarding_title" msgid="7850436557670253991">"画中画"</string>
+    <string name="pip_onboarding_description" msgid="4028124563309465267">"这样会固定显示您的视频,直到您播放其他视频为止。按住"<b>"主屏幕"</b>"按钮即可控制该功能。"</string>
     <string name="pip_onboarding_button" msgid="3957426748484904611">"知道了"</string>
     <string name="recents_tv_dismiss" msgid="3555093879593377731">"关闭"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-zh-rHK/strings.xml b/packages/SystemUI/res/values-zh-rHK/strings.xml
index 120956c..c17d02c 100644
--- a/packages/SystemUI/res/values-zh-rHK/strings.xml
+++ b/packages/SystemUI/res/values-zh-rHK/strings.xml
@@ -71,7 +71,7 @@
     <string name="screenshot_saving_title" msgid="8242282144535555697">"正在儲存螢幕擷取畫面..."</string>
     <string name="screenshot_saving_text" msgid="2419718443411738818">"正在儲存螢幕擷取畫面。"</string>
     <string name="screenshot_saved_title" msgid="6461865960961414961">"已擷取螢幕畫面。"</string>
-    <string name="screenshot_saved_text" msgid="1152839647677558815">"輕觸即可查看螢幕擷取畫面。"</string>
+    <string name="screenshot_saved_text" msgid="2685605830386712477">"輕按即可查看螢幕擷圖。"</string>
     <string name="screenshot_failed_title" msgid="705781116746922771">"無法擷取螢幕畫面。"</string>
     <string name="screenshot_failed_to_save_unknown_text" msgid="7887826345701753830">"儲存螢幕擷圖時發生問題。"</string>
     <string name="screenshot_failed_to_save_text" msgid="2592658083866306296">"由於儲存空間有限,因此無法儲存螢幕擷取畫面。"</string>
@@ -118,7 +118,7 @@
     <string name="accessibility_data_signal_full" msgid="2708384608124519369">"數據網絡訊號滿格。"</string>
     <string name="accessibility_wifi_name" msgid="7202151365171148501">"已連線至<xliff:g id="WIFI">%s</xliff:g>。"</string>
     <string name="accessibility_bluetooth_name" msgid="8441517146585531676">"已連線至<xliff:g id="BLUETOOTH">%s</xliff:g>。"</string>
-    <string name="accessibility_cast_name" msgid="4026393061247081201">"已連線至 <xliff:g id="CAST">%s</xliff:g>。"</string>
+    <string name="accessibility_cast_name" msgid="4026393061247081201">"已連接至 <xliff:g id="CAST">%s</xliff:g>。"</string>
     <string name="accessibility_no_wimax" msgid="4329180129727630368">"沒有 WiMAX 訊號。"</string>
     <string name="accessibility_wimax_one_bar" msgid="4170994299011863648">"WiMAX 訊號強度一格。"</string>
     <string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"WiMAX 訊號強度兩格。"</string>
@@ -149,14 +149,14 @@
     <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string>
     <string name="accessibility_data_connection_wifi" msgid="2324496756590645221">"Wi-Fi"</string>
     <string name="accessibility_no_sim" msgid="8274017118472455155">"無 SIM 卡。"</string>
-    <string name="accessibility_cell_data" msgid="7080312242791850520">"行動數據"</string>
-    <string name="accessibility_cell_data_on" msgid="4310018593519761767">"已啟用行動數據連線"</string>
+    <string name="accessibility_cell_data" msgid="7080312242791850520">"流動數據"</string>
+    <string name="accessibility_cell_data_on" msgid="4310018593519761767">"已啟用流動數據"</string>
     <string name="accessibility_cell_data_off" msgid="8000803571751407635">"流動數據已關閉"</string>
     <string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"藍牙網絡共享。"</string>
     <string name="accessibility_airplane_mode" msgid="834748999790763092">"飛航模式。"</string>
     <string name="accessibility_no_sims" msgid="3957997018324995781">"沒有 SIM 卡。"</string>
     <string name="accessibility_carrier_network_change_mode" msgid="4017301580441304305">"流動網絡供應商網絡正在變更。"</string>
-    <string name="accessibility_battery_details" msgid="7645516654955025422">"開啟電量詳細資料"</string>
+    <string name="accessibility_battery_details" msgid="7645516654955025422">"開啟電池詳細資料"</string>
     <string name="accessibility_battery_level" msgid="7451474187113371965">"電池電量為百分之 <xliff:g id="NUMBER">%d</xliff:g>。"</string>
     <!-- String.format failed for translation -->
     <!-- no translation found for accessibility_battery_level_charging (1147587904439319646) -->
@@ -198,7 +198,7 @@
     <string name="accessibility_quick_settings_dnd_priority_on" msgid="1448402297221249355">"開啟「請勿騷擾」,僅限優先。"</string>
     <string name="accessibility_quick_settings_dnd_none_on" msgid="6882582132662613537">"開啟「請勿騷擾」,完全靜音。"</string>
     <string name="accessibility_quick_settings_dnd_alarms_on" msgid="9152834845587554157">"開啟「請勿騷擾」,僅限鬧鐘。"</string>
-    <string name="accessibility_quick_settings_dnd" msgid="6607873236717185815">"零打擾。"</string>
+    <string name="accessibility_quick_settings_dnd" msgid="6607873236717185815">"請勿騷擾。"</string>
     <string name="accessibility_quick_settings_dnd_off" msgid="2371832603753738581">"「請勿騷擾」關閉"</string>
     <string name="accessibility_quick_settings_dnd_changed_off" msgid="898107593453022935">"已關閉「請勿騷擾」。"</string>
     <string name="accessibility_quick_settings_dnd_changed_on" msgid="4483780856613561039">"已開啟「請勿騷擾」。"</string>
@@ -269,7 +269,7 @@
     <string name="quick_settings_brightness_label" msgid="6968372297018755815">"亮度"</string>
     <string name="quick_settings_rotation_unlocked_label" msgid="7305323031808150099">"自動旋轉"</string>
     <string name="accessibility_quick_settings_rotation" msgid="4231661040698488779">"自動旋轉螢幕"</string>
-    <string name="accessibility_quick_settings_rotation_value" msgid="1428962304214992318">"設為<xliff:g id="ID_1">%s</xliff:g>"</string>
+    <string name="accessibility_quick_settings_rotation_value" msgid="1428962304214992318">"設定為<xliff:g id="ID_1">%s</xliff:g>"</string>
     <string name="quick_settings_rotation_locked_label" msgid="6359205706154282377">"輪流展示鎖定"</string>
     <string name="quick_settings_rotation_locked_portrait_label" msgid="5102691921442135053">"直向"</string>
     <string name="quick_settings_rotation_locked_landscape_label" msgid="8553157770061178719">"橫向"</string>
@@ -288,7 +288,7 @@
     <string name="quick_settings_wifi_not_connected" msgid="7171904845345573431">"未連線"</string>
     <string name="quick_settings_wifi_no_network" msgid="2221993077220856376">"沒有網絡"</string>
     <string name="quick_settings_wifi_off_label" msgid="7558778100843885864">"Wi-Fi 關閉"</string>
-    <string name="quick_settings_wifi_on_label" msgid="7607810331387031235">"已開啟 Wi-Fi"</string>
+    <string name="quick_settings_wifi_on_label" msgid="7607810331387031235">"Wi-Fi 已開啟"</string>
     <string name="quick_settings_wifi_detail_empty_text" msgid="269990350383909226">"沒有可用的 Wi-Fi 網絡"</string>
     <string name="quick_settings_cast_title" msgid="7709016546426454729">"投放"</string>
     <string name="quick_settings_casting" msgid="6601710681033353316">"正在放送"</string>
@@ -342,7 +342,7 @@
     <string name="zen_silence_introduction" msgid="3137882381093271568">"這會封鎖所有聲音和震動,包括鬧鐘、音樂、影片和遊戲。"</string>
     <string name="keyguard_more_overflow_text" msgid="9195222469041601365">"還有 <xliff:g id="NUMBER_OF_NOTIFICATIONS">%d</xliff:g> 則通知"</string>
     <string name="speed_bump_explanation" msgid="1288875699658819755">"不太緊急的通知會在下方顯示"</string>
-    <string name="notification_tap_again" msgid="8524949573675922138">"再次輕觸即可開啟"</string>
+    <string name="notification_tap_again" msgid="7590196980943943842">"再次輕按即可開啟"</string>
     <string name="keyguard_unlock" msgid="8043466894212841998">"向上快速滑動即可解鎖"</string>
     <string name="phone_hint" msgid="4872890986869209950">"從圖示快速滑動即可使用手機功能"</string>
     <string name="voice_hint" msgid="8939888732119726665">"從圖示快速滑動即可使用語音助手"</string>
@@ -420,7 +420,7 @@
     <string name="accessibility_volume_expand" msgid="5946812790999244205">"展開"</string>
     <string name="accessibility_volume_collapse" msgid="3609549593031810875">"收合"</string>
     <string name="screen_pinning_title" msgid="3273740381976175811">"螢幕已固定"</string>
-    <string name="screen_pinning_description" msgid="3577937698406151604">"在您取消固定前,它會保持在檢視狀態。輕觸並按住 [返回] 即可取消固定。"</string>
+    <string name="screen_pinning_description" msgid="7238941806855968768">"畫面將會繼續顯示,直至您取消固定。按住 [返回] 即可取消固定。"</string>
     <string name="screen_pinning_positive" msgid="3783985798366751226">"知道了"</string>
     <string name="screen_pinning_negative" msgid="3741602308343880268">"不用了,謝謝"</string>
     <string name="quick_settings_reset_confirmation_title" msgid="748792586749897883">"隱藏 <xliff:g id="TILE_LABEL">%1$s</xliff:g>?"</string>
@@ -430,13 +430,13 @@
     <string name="volumeui_prompt_allow" msgid="7954396902482228786">"允許"</string>
     <string name="volumeui_prompt_deny" msgid="5720663643411696731">"拒絕"</string>
     <string name="volumeui_notification_title" msgid="4906770126345910955">"「<xliff:g id="APP_NAME">%1$s</xliff:g>」為音量對話框"</string>
-    <string name="volumeui_notification_text" msgid="1826889705095768656">"輕觸即可復原。"</string>
+    <string name="volumeui_notification_text" msgid="8819536904234337445">"輕按即可復原。"</string>
     <string name="managed_profile_foreground_toast" msgid="5421487114739245972">"您正在使用工作設定檔"</string>
     <string name="volume_stream_content_description_unmute" msgid="4436631538779230857">"%1$s。輕按即可取消靜音。"</string>
     <string name="volume_stream_content_description_vibrate" msgid="1187944970457807498">"%1$s。輕按即可設為震動。無障礙功能服務可能已經設為靜音。"</string>
     <string name="volume_stream_content_description_mute" msgid="3625049841390467354">"%1$s。輕按即可設為靜音。無障礙功能服務可能已經設為靜音。"</string>
-    <string name="volume_dialog_accessibility_shown_message" msgid="1834631467074259998">"已顯示 %s 個音量控制項。向上滑動即可關閉。"</string>
-    <string name="volume_dialog_accessibility_dismissed_message" msgid="51543526013711399">"已隱藏音量控制項"</string>
+    <string name="volume_dialog_accessibility_shown_message" msgid="1834631467074259998">"已顯示 %s 音量控制項。向上快速滑動即可關閉。"</string>
+    <string name="volume_dialog_accessibility_dismissed_message" msgid="51543526013711399">"已隱藏音量控制"</string>
     <string name="system_ui_tuner" msgid="708224127392452018">"系統使用者介面調諧器"</string>
     <string name="show_battery_percentage" msgid="5444136600512968798">"顯示嵌入的電池百分比"</string>
     <string name="show_battery_percentage_summary" msgid="3215025775576786037">"非充電時,在狀態列圖示顯示電量百分比"</string>
@@ -639,10 +639,10 @@
     <string name="accessibility_quick_settings_expand" msgid="2375165227880477530">"開啟快速設定。"</string>
     <string name="accessibility_quick_settings_collapse" msgid="1792625797142648105">"關閉快速設定。"</string>
     <string name="accessibility_quick_settings_alarm_set" msgid="1863000242431528676">"已設定鬧鐘。"</string>
-    <string name="accessibility_quick_settings_user" msgid="1567445362870421770">"以「<xliff:g id="ID_1">%s</xliff:g>」的身分登入"</string>
-    <string name="accessibility_quick_settings_no_internet" msgid="31890692343084075">"沒有網際網路連線。"</string>
-    <string name="accessibility_quick_settings_open_details" msgid="4230931801728005194">"開啟詳細資料。"</string>
-    <string name="accessibility_quick_settings_open_settings" msgid="7806613775728380737">"開啟「<xliff:g id="ID_1">%s</xliff:g>」設定。"</string>
-    <string name="accessibility_quick_settings_edit" msgid="7839992848995240393">"編輯設定順序。"</string>
+    <string name="accessibility_quick_settings_user" msgid="1567445362870421770">"已登入為<xliff:g id="ID_1">%s</xliff:g>。"</string>
+    <string name="accessibility_quick_settings_no_internet" msgid="31890692343084075">"沒有互聯網。"</string>
+    <string name="accessibility_quick_settings_open_details" msgid="4230931801728005194">"開啟詳細資料頁面。"</string>
+    <string name="accessibility_quick_settings_open_settings" msgid="7806613775728380737">"開啟<xliff:g id="ID_1">%s</xliff:g>設定頁面。"</string>
+    <string name="accessibility_quick_settings_edit" msgid="7839992848995240393">"編輯設定次序。"</string>
     <string name="accessibility_quick_settings_page" msgid="5032979051755200721">"第 <xliff:g id="ID_1">%1$d</xliff:g> 頁 (共 <xliff:g id="ID_2">%2$d</xliff:g> 頁)"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-zh-rHK/strings_tv.xml b/packages/SystemUI/res/values-zh-rHK/strings_tv.xml
index 6021766..bc164c8 100644
--- a/packages/SystemUI/res/values-zh-rHK/strings_tv.xml
+++ b/packages/SystemUI/res/values-zh-rHK/strings_tv.xml
@@ -24,8 +24,8 @@
     <string name="pip_play" msgid="674145557658227044">"播放"</string>
     <string name="pip_pause" msgid="8412075640017218862">"暫停"</string>
     <string name="pip_hold_home" msgid="340086535668778109">"按住"<b>"主按鈕"</b>"即可控制 PIP"</string>
-    <string name="pip_onboarding_title" msgid="7850436557670253991">"子母畫面"</string>
-    <string name="pip_onboarding_description" msgid="4028124563309465267">"您的影片會一直顯示在畫面中,直到您播放其他影片為止。按住 [HOME] (主畫面) 按鈕即可控制子母畫面。"<b></b></string>
+    <string name="pip_onboarding_title" msgid="7850436557670253991">"畫中畫"</string>
+    <string name="pip_onboarding_description" msgid="4028124563309465267">"這讓您繼續觀看影片,直至您播放下一部影片。按住"<b>"主按鈕"</b>"即可控制「畫中畫」。"</string>
     <string name="pip_onboarding_button" msgid="3957426748484904611">"知道了"</string>
     <string name="recents_tv_dismiss" msgid="3555093879593377731">"關閉"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-zh-rTW/strings.xml b/packages/SystemUI/res/values-zh-rTW/strings.xml
index 87b4bd8..3e200b2 100644
--- a/packages/SystemUI/res/values-zh-rTW/strings.xml
+++ b/packages/SystemUI/res/values-zh-rTW/strings.xml
@@ -71,7 +71,7 @@
     <string name="screenshot_saving_title" msgid="8242282144535555697">"正在儲存螢幕擷取畫面…"</string>
     <string name="screenshot_saving_text" msgid="2419718443411738818">"正在儲存螢幕擷取畫面。"</string>
     <string name="screenshot_saved_title" msgid="6461865960961414961">"已拍攝螢幕擷取畫面。"</string>
-    <string name="screenshot_saved_text" msgid="1152839647677558815">"輕觸即可查看螢幕擷取畫面。"</string>
+    <string name="screenshot_saved_text" msgid="2685605830386712477">"輕觸即可查看螢幕擷圖。"</string>
     <string name="screenshot_failed_title" msgid="705781116746922771">"無法拍攝螢幕擷取畫面。"</string>
     <string name="screenshot_failed_to_save_unknown_text" msgid="7887826345701753830">"儲存螢幕擷圖時發生問題。"</string>
     <string name="screenshot_failed_to_save_text" msgid="2592658083866306296">"由於儲存空間有限,因此無法儲存螢幕擷取畫面。"</string>
@@ -340,7 +340,7 @@
     <string name="zen_silence_introduction" msgid="3137882381093271568">"這會封鎖「所有」聲音和震動干擾,包括鬧鐘、音樂、影片和遊戲在內。"</string>
     <string name="keyguard_more_overflow_text" msgid="9195222469041601365">"還有 <xliff:g id="NUMBER_OF_NOTIFICATIONS">%d</xliff:g> 則通知"</string>
     <string name="speed_bump_explanation" msgid="1288875699658819755">"較不緊急的通知會顯示在下方"</string>
-    <string name="notification_tap_again" msgid="8524949573675922138">"再次輕觸即可開啟"</string>
+    <string name="notification_tap_again" msgid="7590196980943943842">"再次輕觸即可開啟"</string>
     <string name="keyguard_unlock" msgid="8043466894212841998">"向上滑動即可解鎖"</string>
     <string name="phone_hint" msgid="4872890986869209950">"滑動手機圖示即可啟用"</string>
     <string name="voice_hint" msgid="8939888732119726665">"滑動語音小幫手圖示即可啟用"</string>
@@ -418,7 +418,7 @@
     <string name="accessibility_volume_expand" msgid="5946812790999244205">"展開"</string>
     <string name="accessibility_volume_collapse" msgid="3609549593031810875">"收合"</string>
     <string name="screen_pinning_title" msgid="3273740381976175811">"螢幕已固定"</string>
-    <string name="screen_pinning_description" msgid="3577937698406151604">"這會讓目前的螢幕畫面保持顯示狀態,直到取消固定為止。按住「返回」按鈕即可取消固定。"</string>
+    <string name="screen_pinning_description" msgid="7238941806855968768">"這會讓目前的螢幕畫面保持顯示狀態,直到取消固定為止。按住「返回」按鈕即可取消固定。"</string>
     <string name="screen_pinning_positive" msgid="3783985798366751226">"知道了"</string>
     <string name="screen_pinning_negative" msgid="3741602308343880268">"不用了,謝謝"</string>
     <string name="quick_settings_reset_confirmation_title" msgid="748792586749897883">"隱藏<xliff:g id="TILE_LABEL">%1$s</xliff:g>?"</string>
@@ -428,7 +428,7 @@
     <string name="volumeui_prompt_allow" msgid="7954396902482228786">"允許"</string>
     <string name="volumeui_prompt_deny" msgid="5720663643411696731">"拒絕"</string>
     <string name="volumeui_notification_title" msgid="4906770126345910955">"「<xliff:g id="APP_NAME">%1$s</xliff:g>」現在是預設的音量控制對話方塊。"</string>
-    <string name="volumeui_notification_text" msgid="1826889705095768656">"輕觸這裡即可恢復原始設定。"</string>
+    <string name="volumeui_notification_text" msgid="8819536904234337445">"輕觸即可恢復原始設定。"</string>
     <string name="managed_profile_foreground_toast" msgid="5421487114739245972">"您正在使用 Work 設定檔"</string>
     <string name="volume_stream_content_description_unmute" msgid="4436631538779230857">"%1$s。輕觸即可取消靜音。"</string>
     <string name="volume_stream_content_description_vibrate" msgid="1187944970457807498">"%1$s。輕觸即可設為震動,但系統可能會將無障礙服務一併設為靜音。"</string>
diff --git a/packages/SystemUI/res/values-zu/strings.xml b/packages/SystemUI/res/values-zu/strings.xml
index 24677e4..0fecc0a 100644
--- a/packages/SystemUI/res/values-zu/strings.xml
+++ b/packages/SystemUI/res/values-zu/strings.xml
@@ -71,7 +71,7 @@
     <string name="screenshot_saving_title" msgid="8242282144535555697">"Ilondoloz umfanekiso weskrini..."</string>
     <string name="screenshot_saving_text" msgid="2419718443411738818">"Umfanekiso weskrini uyalondolozwa."</string>
     <string name="screenshot_saved_title" msgid="6461865960961414961">"Umfanekiso weskrini uqoshiwe"</string>
-    <string name="screenshot_saved_text" msgid="1152839647677558815">"Thinta ukubona imifanekiso yakho yeskrini"</string>
+    <string name="screenshot_saved_text" msgid="2685605830386712477">"Thepha ukuze ubuke isithombe-skrini sakho."</string>
     <string name="screenshot_failed_title" msgid="705781116746922771">"Yehlulekile ukulondoloza umfanekiso weskrini."</string>
     <string name="screenshot_failed_to_save_unknown_text" msgid="7887826345701753830">"Inkinga ivelile ngenkathi ilondoloza isithombe sikrini."</string>
     <string name="screenshot_failed_to_save_text" msgid="2592658083866306296">"Ayikwazi ukulondoloza isithombe-skrini ngenxa yesikhala sesitoreji esikhawulelwe."</string>
@@ -118,8 +118,7 @@
     <string name="accessibility_data_signal_full" msgid="2708384608124519369">"Igcwele i-signal yedatha"</string>
     <string name="accessibility_wifi_name" msgid="7202151365171148501">"Xhuma ku-<xliff:g id="WIFI">%s</xliff:g>."</string>
     <string name="accessibility_bluetooth_name" msgid="8441517146585531676">"Xhuma ku-<xliff:g id="BLUETOOTH">%s</xliff:g>."</string>
-    <!-- no translation found for accessibility_cast_name (4026393061247081201) -->
-    <skip />
+    <string name="accessibility_cast_name" msgid="4026393061247081201">"Ixhumeke ku-<xliff:g id="CAST">%s</xliff:g>."</string>
     <string name="accessibility_no_wimax" msgid="4329180129727630368">"Ayikho i-WiMAX."</string>
     <string name="accessibility_wimax_one_bar" msgid="4170994299011863648">"Ibha eyodwa ye-WiMAX."</string>
     <string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"Amabha amabili we-WiMAX."</string>
@@ -150,17 +149,14 @@
     <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Ekucupheleni"</string>
     <string name="accessibility_data_connection_wifi" msgid="2324496756590645221">"I-Wi-Fi"</string>
     <string name="accessibility_no_sim" msgid="8274017118472455155">"Ayikho i-SIM"</string>
-    <!-- no translation found for accessibility_cell_data (7080312242791850520) -->
-    <skip />
-    <!-- no translation found for accessibility_cell_data_on (4310018593519761767) -->
-    <skip />
+    <string name="accessibility_cell_data" msgid="7080312242791850520">"Idatha yeselula"</string>
+    <string name="accessibility_cell_data_on" msgid="4310018593519761767">"Idatha yeselula ivulekile"</string>
     <string name="accessibility_cell_data_off" msgid="8000803571751407635">"Idatha yeselula ivaliwe"</string>
     <string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"Imodemu nge-Bluetooth."</string>
     <string name="accessibility_airplane_mode" msgid="834748999790763092">"Imodi yendiza."</string>
     <string name="accessibility_no_sims" msgid="3957997018324995781">"Alikho ikhadi le-SIM."</string>
     <string name="accessibility_carrier_network_change_mode" msgid="4017301580441304305">"Iguqula inethiwekhi yenkampani yenethiwekhi."</string>
-    <!-- no translation found for accessibility_battery_details (7645516654955025422) -->
-    <skip />
+    <string name="accessibility_battery_details" msgid="7645516654955025422">"Vula imininingwane yebhethri"</string>
     <string name="accessibility_battery_level" msgid="7451474187113371965">"Iphesenti <xliff:g id="NUMBER">%d</xliff:g> lebhetri"</string>
     <string name="accessibility_battery_level_charging" msgid="1147587904439319646">"Ibhethri liyashaja, <xliff:g id="BATTERY_PERCENTAGE">%d</xliff:g> iphesenti."</string>
     <string name="accessibility_settings_button" msgid="799583911231893380">"Izilungiselelo zesistimu"</string>
@@ -200,13 +196,11 @@
     <string name="accessibility_quick_settings_dnd_priority_on" msgid="1448402297221249355">"Ukungaphazamisi kuvuliwe, okubalulekile kuphela."</string>
     <string name="accessibility_quick_settings_dnd_none_on" msgid="6882582132662613537">"Ungaphazamisi, ukuthula okuphelele."</string>
     <string name="accessibility_quick_settings_dnd_alarms_on" msgid="9152834845587554157">"Ukungaphazamisi kuvuliwe, ama-alamu kuphela."</string>
-    <!-- no translation found for accessibility_quick_settings_dnd (6607873236717185815) -->
-    <skip />
+    <string name="accessibility_quick_settings_dnd" msgid="6607873236717185815">"Ungaphazamisi."</string>
     <string name="accessibility_quick_settings_dnd_off" msgid="2371832603753738581">"Ukungaphazamisi kuvaliwe."</string>
     <string name="accessibility_quick_settings_dnd_changed_off" msgid="898107593453022935">"Ukungaphazamisi kuvaliwe."</string>
     <string name="accessibility_quick_settings_dnd_changed_on" msgid="4483780856613561039">"Ukungaphazamisi kuvuliwe."</string>
-    <!-- no translation found for accessibility_quick_settings_bluetooth (6341675755803320038) -->
-    <skip />
+    <string name="accessibility_quick_settings_bluetooth" msgid="6341675755803320038">"I-Bluetooth."</string>
     <string name="accessibility_quick_settings_bluetooth_off" msgid="2133631372372064339">"I-Bluetooth ivaliwe."</string>
     <string name="accessibility_quick_settings_bluetooth_on" msgid="7681999166216621838">"I-Bluetooth ivuliwe."</string>
     <string name="accessibility_quick_settings_bluetooth_connecting" msgid="6953242966685343855">"I-Bluetooth iyaxhuma."</string>
@@ -272,10 +266,8 @@
     <string name="quick_settings_bluetooth_detail_empty_text" msgid="4910015762433302860">"Awekho amadivayisi abhanqiwe atholakalayo"</string>
     <string name="quick_settings_brightness_label" msgid="6968372297018755815">"Ukugqama"</string>
     <string name="quick_settings_rotation_unlocked_label" msgid="7305323031808150099">"Ukuphenduka okuzenzakalelayo"</string>
-    <!-- no translation found for accessibility_quick_settings_rotation (4231661040698488779) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_rotation_value (1428962304214992318) -->
-    <skip />
+    <string name="accessibility_quick_settings_rotation" msgid="4231661040698488779">"Phendula iskrini ngokuzenzakalela"</string>
+    <string name="accessibility_quick_settings_rotation_value" msgid="1428962304214992318">"Isethelwe ku-<xliff:g id="ID_1">%s</xliff:g>"</string>
     <string name="quick_settings_rotation_locked_label" msgid="6359205706154282377">"Ukuphenduka kukhiyiwe"</string>
     <string name="quick_settings_rotation_locked_portrait_label" msgid="5102691921442135053">"Ukuma ngobude"</string>
     <string name="quick_settings_rotation_locked_landscape_label" msgid="8553157770061178719">"Ndlaleka okubanzi"</string>
@@ -294,8 +286,7 @@
     <string name="quick_settings_wifi_not_connected" msgid="7171904845345573431">"Akuxhunyiwe"</string>
     <string name="quick_settings_wifi_no_network" msgid="2221993077220856376">"Ayikho inethiwekhi"</string>
     <string name="quick_settings_wifi_off_label" msgid="7558778100843885864">"I-Wi-Fi icimile"</string>
-    <!-- no translation found for quick_settings_wifi_on_label (7607810331387031235) -->
-    <skip />
+    <string name="quick_settings_wifi_on_label" msgid="7607810331387031235">"I-Wi-Fi ivuliwe"</string>
     <string name="quick_settings_wifi_detail_empty_text" msgid="269990350383909226">"Awekho amanethiwekhi we-Wi-Fi atholakalayo"</string>
     <string name="quick_settings_cast_title" msgid="7709016546426454729">"Abalingisi"</string>
     <string name="quick_settings_casting" msgid="6601710681033353316">"Ukusakaza"</string>
@@ -349,7 +340,7 @@
     <string name="zen_silence_introduction" msgid="3137882381093271568">"Lokhu kuvimbela YONKE imisindo nokudlidliza, kufaka phakathi kusuka kuma-alamu, umculo, amavidiyo, namageyimu."</string>
     <string name="keyguard_more_overflow_text" msgid="9195222469041601365">"+<xliff:g id="NUMBER_OF_NOTIFICATIONS">%d</xliff:g>"</string>
     <string name="speed_bump_explanation" msgid="1288875699658819755">"Izaziso ezingasheshi kakhulu ezingezansi"</string>
-    <string name="notification_tap_again" msgid="8524949573675922138">"Thinta futhi ukuze uvule"</string>
+    <string name="notification_tap_again" msgid="7590196980943943842">"Thepha futhi ukuze uvule"</string>
     <string name="keyguard_unlock" msgid="8043466894212841998">"Swayiphela phezulu ukuze uvule"</string>
     <string name="phone_hint" msgid="4872890986869209950">"Swayiphela ifoni kusukela kusithonjana"</string>
     <string name="voice_hint" msgid="8939888732119726665">"Swayiphela isilekeleli sezwi kusukela kusithonjana"</string>
@@ -427,7 +418,7 @@
     <string name="accessibility_volume_expand" msgid="5946812790999244205">"Nweba"</string>
     <string name="accessibility_volume_collapse" msgid="3609549593031810875">"Goqa"</string>
     <string name="screen_pinning_title" msgid="3273740381976175811">"Isikrini siphiniwe"</string>
-    <string name="screen_pinning_description" msgid="3577937698406151604">"Lokhu kuyigcina ekubukekeni uze ususe ukuphina. Thinta uphinde ubambe ukubuyela emuva ukuze ususe ukuphina."</string>
+    <string name="screen_pinning_description" msgid="7238941806855968768">"Lokhu kuyigcina ekubukekeni uze ususe ukuphinda. Thinta uphinde ubambe okuthi Emuva ukuze ususe ukuphina."</string>
     <string name="screen_pinning_positive" msgid="3783985798366751226">"Ngiyitholile"</string>
     <string name="screen_pinning_negative" msgid="3741602308343880268">"Cha ngiyabonga"</string>
     <string name="quick_settings_reset_confirmation_title" msgid="748792586749897883">"Fihla i-<xliff:g id="TILE_LABEL">%1$s</xliff:g>?"</string>
@@ -437,15 +428,13 @@
     <string name="volumeui_prompt_allow" msgid="7954396902482228786">"Vumela"</string>
     <string name="volumeui_prompt_deny" msgid="5720663643411696731">"Phika"</string>
     <string name="volumeui_notification_title" msgid="4906770126345910955">"I-<xliff:g id="APP_NAME">%1$s</xliff:g> yingxoxo yevolumu"</string>
-    <string name="volumeui_notification_text" msgid="1826889705095768656">"Thinta ukuze ubuyisele kokwangempela."</string>
+    <string name="volumeui_notification_text" msgid="8819536904234337445">"Thepha ukuze ubuyisele okwasekuqaleni."</string>
     <string name="managed_profile_foreground_toast" msgid="5421487114739245972">"Usebenzisa iphrofayela yakho yomsebenzi"</string>
     <string name="volume_stream_content_description_unmute" msgid="4436631538779230857">"%1$s. Thepha ukuze ususe ukuthula."</string>
     <string name="volume_stream_content_description_vibrate" msgid="1187944970457807498">"%1$s. Thepha ukuze usethe ukudlidliza. Amasevisi okufinyelela angathuliswa."</string>
     <string name="volume_stream_content_description_mute" msgid="3625049841390467354">"%1$s. Thepha ukuze uthulise. Amasevisi okufinyelela angathuliswa."</string>
-    <!-- no translation found for volume_dialog_accessibility_shown_message (1834631467074259998) -->
-    <skip />
-    <!-- no translation found for volume_dialog_accessibility_dismissed_message (51543526013711399) -->
-    <skip />
+    <string name="volume_dialog_accessibility_shown_message" msgid="1834631467074259998">"%s izilawuli zevolumu ziyaboniswa. Swayiphela phezulu ukuze ulahle."</string>
+    <string name="volume_dialog_accessibility_dismissed_message" msgid="51543526013711399">"Izilawuli zevolumi zifihliwe"</string>
     <string name="system_ui_tuner" msgid="708224127392452018">"Isishuni se-UI yesistimu"</string>
     <string name="show_battery_percentage" msgid="5444136600512968798">"Bonisa amaphesenti ebhethri elinamathiselwe"</string>
     <string name="show_battery_percentage_summary" msgid="3215025775576786037">"Bonisa amaphesenti eleveli yebhethri ngaphakathi kwesithonjana sebha yesimo uma kungashajwa"</string>
@@ -641,27 +630,17 @@
     <string name="accessibility_qs_edit_tile_removed" msgid="8584304916627913440">"I-<xliff:g id="TILE_NAME">%1$s</xliff:g> isusiwe"</string>
     <string name="accessibility_qs_edit_tile_moved" msgid="4343693412689365038">"I-<xliff:g id="TILE_NAME">%1$s</xliff:g> ihanjiswe kusimo esingu-<xliff:g id="POSITION">%2$d</xliff:g>"</string>
     <string name="accessibility_desc_quick_settings_edit" msgid="8073587401747016103">"Isihleli sezilungiselelo ezisheshayo."</string>
-    <!-- no translation found for accessibility_desc_notification_icon (8352414185263916335) -->
-    <skip />
+    <string name="accessibility_desc_notification_icon" msgid="8352414185263916335">"<xliff:g id="ID_1">%1$s</xliff:g> isaziso: <xliff:g id="ID_2">%2$s</xliff:g>"</string>
     <string name="dock_forced_resizable" msgid="5914261505436217520">"Izinhlelo zokusebenza kungenzeka zingasebenzi ngesikrini esihlukanisiwe."</string>
     <string name="dock_non_resizeble_failed_to_dock_text" msgid="3871617304250207291">"Uhlelo lokusebenza alusekeli isikrini esihlukanisiwe."</string>
-    <!-- no translation found for accessibility_quick_settings_settings (6132460890024942157) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_expand (2375165227880477530) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_collapse (1792625797142648105) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_alarm_set (1863000242431528676) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_user (1567445362870421770) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_no_internet (31890692343084075) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_open_details (4230931801728005194) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_open_settings (7806613775728380737) -->
-    <skip />
-    <!-- no translation found for accessibility_quick_settings_edit (7839992848995240393) -->
-    <skip />
+    <string name="accessibility_quick_settings_settings" msgid="6132460890024942157">"Vula izilungiselelo."</string>
+    <string name="accessibility_quick_settings_expand" msgid="2375165227880477530">"Vula izilungiselelo ezisheshayo."</string>
+    <string name="accessibility_quick_settings_collapse" msgid="1792625797142648105">"Vala izilungiselelo ezisheshayo."</string>
+    <string name="accessibility_quick_settings_alarm_set" msgid="1863000242431528676">"I-alamu isethiwe."</string>
+    <string name="accessibility_quick_settings_user" msgid="1567445362870421770">"Ungene ngemvume njengo-<xliff:g id="ID_1">%s</xliff:g>"</string>
+    <string name="accessibility_quick_settings_no_internet" msgid="31890692343084075">"Ayikho i-inthanethi."</string>
+    <string name="accessibility_quick_settings_open_details" msgid="4230931801728005194">"Vula imininingwane."</string>
+    <string name="accessibility_quick_settings_open_settings" msgid="7806613775728380737">"Vula izilungiselelo ze-<xliff:g id="ID_1">%s</xliff:g>."</string>
+    <string name="accessibility_quick_settings_edit" msgid="7839992848995240393">"Hlela uhlelo lwezilungiselelo."</string>
     <string name="accessibility_quick_settings_page" msgid="5032979051755200721">"Ikhasi <xliff:g id="ID_1">%1$d</xliff:g> kwangu-<xliff:g id="ID_2">%2$d</xliff:g>"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-zu/strings_tv.xml b/packages/SystemUI/res/values-zu/strings_tv.xml
index 4fe3f1c..e1d0b5b 100644
--- a/packages/SystemUI/res/values-zu/strings_tv.xml
+++ b/packages/SystemUI/res/values-zu/strings_tv.xml
@@ -24,10 +24,8 @@
     <string name="pip_play" msgid="674145557658227044">"Dlala"</string>
     <string name="pip_pause" msgid="8412075640017218862">"Misa isikhashana"</string>
     <string name="pip_hold_home" msgid="340086535668778109">"Bamba "<b>"IKHAYA"</b>" ukuze ulawule i-PIP"</string>
-    <!-- no translation found for pip_onboarding_title (7850436557670253991) -->
-    <skip />
-    <!-- no translation found for pip_onboarding_description (4028124563309465267) -->
-    <skip />
+    <string name="pip_onboarding_title" msgid="7850436557670253991">"Isithombe-phakathi-kwesithombe"</string>
+    <string name="pip_onboarding_description" msgid="4028124563309465267">"Lokhu kugcina ividiyo yakho ibonakala uze udlale enye. Cindezela futhi ubambe okuthi "<b>"EKHAYA"</b>" ukuze uyilawule."</string>
     <string name="pip_onboarding_button" msgid="3957426748484904611">"Ngiyezwa"</string>
     <string name="recents_tv_dismiss" msgid="3555093879593377731">"Cashisa"</string>
 </resources>
diff --git a/packages/SystemUI/res/values/colors.xml b/packages/SystemUI/res/values/colors.xml
index c75741c..cb51649 100644
--- a/packages/SystemUI/res/values/colors.xml
+++ b/packages/SystemUI/res/values/colors.xml
@@ -157,6 +157,7 @@
     <color name="minimize_dock_shadow_end">#00000000</color>
 
     <color name="default_remote_input_background">@*android:color/notification_default_color</color>
+    <color name="remote_input_text_enabled">#ffffffff</color>
     <color name="remote_input_hint">#99ffffff</color>
 
     <color name="remote_input_accent">#eeeeee</color>
diff --git a/packages/SystemUI/res/values/dimens_tv.xml b/packages/SystemUI/res/values/dimens_tv.xml
index 5fa802b..2319229 100644
--- a/packages/SystemUI/res/values/dimens_tv.xml
+++ b/packages/SystemUI/res/values/dimens_tv.xml
@@ -52,9 +52,6 @@
     <dimen name="recents_tv_dismiss_icon_bottom_margin">1dip</dimen>
     <dimen name="recents_tv_dismiss_text_size">12sp</dimen>
 
-    <!-- Values for PIP in recents -->
-    <dimen name="recents_tv_pip_controls_margin_top">10dp</dimen>
-
     <!-- Extra space around the PIP and its outline in PIP onboarding activity  -->
     <dimen name="tv_pip_bounds_space">3dp</dimen>
 
diff --git a/packages/SystemUI/src/com/android/systemui/ImageWallpaper.java b/packages/SystemUI/src/com/android/systemui/ImageWallpaper.java
index c72f5d2..0962d84 100644
--- a/packages/SystemUI/src/com/android/systemui/ImageWallpaper.java
+++ b/packages/SystemUI/src/com/android/systemui/ImageWallpaper.java
@@ -158,6 +158,7 @@
         private int mLastRequestedHeight = -1;
         private AsyncTask<Void, Void, Bitmap> mLoader;
         private boolean mNeedsDrawAfterLoadingWallpaper;
+        private boolean mSurfaceValid;
 
         public DrawableEngine() {
             super();
@@ -249,11 +250,6 @@
         }
 
         @Override
-        public void onTouchEvent(MotionEvent event) {
-            super.onTouchEvent(event);
-        }
-
-        @Override
         public void onOffsetsChanged(float xOffset, float yOffset,
                 float xOffsetStep, float yOffsetStep,
                 int xPixels, int yPixels) {
@@ -288,13 +284,23 @@
         @Override
         public void onSurfaceDestroyed(SurfaceHolder holder) {
             super.onSurfaceDestroyed(holder);
+            if (DEBUG) {
+                Log.i(TAG, "onSurfaceDestroyed");
+            }
+
             mLastSurfaceWidth = mLastSurfaceHeight = -1;
+            mSurfaceValid = false;
         }
 
         @Override
         public void onSurfaceCreated(SurfaceHolder holder) {
             super.onSurfaceCreated(holder);
+            if (DEBUG) {
+                Log.i(TAG, "onSurfaceCreated");
+            }
+
             mLastSurfaceWidth = mLastSurfaceHeight = -1;
+            mSurfaceValid = true;
         }
 
         @Override
@@ -314,6 +320,9 @@
         }
 
         void drawFrame() {
+            if (!mSurfaceValid) {
+                return;
+            }
             try {
                 DisplayInfo displayInfo = getDefaultDisplayInfo();
                 int newRotation = displayInfo.rotation;
diff --git a/packages/SystemUI/src/com/android/systemui/Prefs.java b/packages/SystemUI/src/com/android/systemui/Prefs.java
index 28ed84f..907616c 100644
--- a/packages/SystemUI/src/com/android/systemui/Prefs.java
+++ b/packages/SystemUI/src/com/android/systemui/Prefs.java
@@ -44,6 +44,7 @@
         Key.TV_PICTURE_IN_PICTURE_ONBOARDING_SHOWN,
         Key.QS_HOTSPOT_ADDED,
         Key.QS_DATA_SAVER_ADDED,
+        Key.QS_DATA_SAVER_DIALOG_SHOWN,
         Key.QS_INVERT_COLORS_ADDED,
         Key.QS_WORK_ADDED,
         Key.QS_NIGHT_ADDED,
@@ -63,6 +64,7 @@
         String TV_PICTURE_IN_PICTURE_ONBOARDING_SHOWN = "TvPictureInPictureOnboardingShown";
         String QS_HOTSPOT_ADDED = "QsHotspotAdded";
         String QS_DATA_SAVER_ADDED = "QsDataSaverAdded";
+        String QS_DATA_SAVER_DIALOG_SHOWN = "QsDataSaverDialogShown";
         String QS_INVERT_COLORS_ADDED = "QsInvertColorsAdded";
         String QS_WORK_ADDED = "QsWorkAdded";
         String QS_NIGHT_ADDED = "QsNightAdded";
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewMediator.java b/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewMediator.java
index 4d8e33d..55fa10b 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewMediator.java
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewMediator.java
@@ -837,6 +837,7 @@
         long when = SystemClock.elapsedRealtime() + timeout;
         Intent intent = new Intent(DELAYED_KEYGUARD_ACTION);
         intent.putExtra("seq", mDelayedShowingSequence);
+        intent.addFlags(Intent.FLAG_RECEIVER_FOREGROUND);
         PendingIntent sender = PendingIntent.getBroadcast(mContext,
                 0, intent, PendingIntent.FLAG_CANCEL_CURRENT);
         mAlarmManager.setExactAndAllowWhileIdle(AlarmManager.ELAPSED_REALTIME_WAKEUP, when, sender);
@@ -857,6 +858,7 @@
                     Intent lockIntent = new Intent(DELAYED_LOCK_PROFILE_ACTION);
                     lockIntent.putExtra("seq", mDelayedProfileShowingSequence);
                     lockIntent.putExtra(Intent.EXTRA_USER_ID, profileId);
+                    lockIntent.addFlags(Intent.FLAG_RECEIVER_FOREGROUND);
                     PendingIntent lockSender = PendingIntent.getBroadcast(
                             mContext, 0, lockIntent, PendingIntent.FLAG_CANCEL_CURRENT);
                     mAlarmManager.setExactAndAllowWhileIdle(AlarmManager.ELAPSED_REALTIME_WAKEUP,
diff --git a/packages/SystemUI/src/com/android/systemui/qs/customize/QSCustomizer.java b/packages/SystemUI/src/com/android/systemui/qs/customize/QSCustomizer.java
index 716185f..b2aa966 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/customize/QSCustomizer.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/customize/QSCustomizer.java
@@ -106,6 +106,7 @@
     public void setHost(QSTileHost host) {
         mHost = host;
         mPhoneStatusBar = host.getPhoneStatusBar();
+        mTileAdapter.setHost(host);
     }
 
     public void setContainer(NotificationsQuickSettingsContainer notificationsQsContainer) {
diff --git a/packages/SystemUI/src/com/android/systemui/qs/customize/TileAdapter.java b/packages/SystemUI/src/com/android/systemui/qs/customize/TileAdapter.java
index 41b49d8..ec0eefb 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/customize/TileAdapter.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/customize/TileAdapter.java
@@ -81,6 +81,7 @@
     private Holder mCurrentDrag;
     private boolean mAccessibilityMoving;
     private int mAccessibilityFromIndex;
+    private QSTileHost mHost;
 
     public TileAdapter(Context context) {
         mContext = context;
@@ -88,6 +89,10 @@
         mItemTouchHelper = new ItemTouchHelper(mCallbacks);
     }
 
+    public void setHost(QSTileHost host) {
+        mHost = host;
+    }
+
     @Override
     public long getItemId(int position) {
         return mTiles.get(position) != null ? mAllTiles.indexOf(mTiles.get(position))
@@ -108,7 +113,7 @@
             newSpecs.add(mTiles.get(i).spec);
         }
         host.changeTiles(mCurrentSpecs, newSpecs);
-        setTileSpecs(newSpecs);
+        mCurrentSpecs = newSpecs;
     }
 
     public void setTileSpecs(List<String> currentSpecs) {
@@ -285,6 +290,7 @@
         move(mAccessibilityFromIndex, position, v);
         notifyItemChanged(mAccessibilityFromIndex);
         notifyItemMoved(mAccessibilityFromIndex, position);
+        saveSpecs(mHost);
     }
 
     private void showAccessibilityDialog(final int position, final View v) {
@@ -373,6 +379,7 @@
                     fromLabel, (to + 1));
         }
         v.announceForAccessibility(announcement);
+        saveSpecs(mHost);
         return true;
     }
 
diff --git a/packages/SystemUI/src/com/android/systemui/qs/external/CustomTile.java b/packages/SystemUI/src/com/android/systemui/qs/external/CustomTile.java
index 54dd015..23a3ca1 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/external/CustomTile.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/external/CustomTile.java
@@ -40,9 +40,11 @@
 import com.android.internal.logging.MetricsProto.MetricsEvent;
 import com.android.systemui.R;
 import com.android.systemui.qs.QSTile;
+import com.android.systemui.qs.external.TileLifecycleManager.TileChangeListener;
 import com.android.systemui.statusbar.phone.QSTileHost;
+import libcore.util.Objects;
 
-public class CustomTile extends QSTile<QSTile.State> {
+public class CustomTile extends QSTile<QSTile.State> implements TileChangeListener {
     public static final String PREFIX = "custom(";
 
     private static final boolean DEBUG = false;
@@ -58,7 +60,7 @@
     private final IQSTileService mService;
     private final TileServiceManager mServiceManager;
     private final int mUser;
-    private final android.graphics.drawable.Icon mDefaultIcon;
+    private android.graphics.drawable.Icon mDefaultIcon;
 
     private boolean mListening;
     private boolean mBound;
@@ -71,21 +73,10 @@
         mComponent = ComponentName.unflattenFromString(action);
         mServiceManager = host.getTileServices().getTileWrapper(this);
         mService = mServiceManager.getTileService();
+        mServiceManager.setTileChangeListener(this);
         mTile = new Tile(mComponent);
         mUser = ActivityManager.getCurrentUser();
-        android.graphics.drawable.Icon defaultIcon;
-        try {
-            PackageManager pm = mContext.getPackageManager();
-            ServiceInfo info = pm.getServiceInfo(mComponent,
-                    PackageManager.MATCH_ENCRYPTION_AWARE_AND_UNAWARE);
-            defaultIcon = info.icon != 0 ? android.graphics.drawable.Icon
-                    .createWithResource(mComponent.getPackageName(), info.icon) : null;
-            mTile.setIcon(defaultIcon);
-            mTile.setLabel(info.loadLabel(pm));
-        } catch (Exception e) {
-            defaultIcon = null;
-        }
-        mDefaultIcon = defaultIcon;
+        setTileIcon();
         try {
             mService.setQSTile(mTile);
         } catch (RemoteException e) {
@@ -93,6 +84,57 @@
         }
     }
 
+    private void setTileIcon() {
+        try {
+            PackageManager pm = mContext.getPackageManager();
+            ServiceInfo info = pm.getServiceInfo(mComponent,
+                    PackageManager.MATCH_ENCRYPTION_AWARE_AND_UNAWARE);
+            // Update the icon if its not set or is the default icon.
+            boolean updateIcon = mTile.getIcon() == null
+                    || iconEquals(mTile.getIcon(), mDefaultIcon);
+            mDefaultIcon = info.icon != 0 ? android.graphics.drawable.Icon
+                    .createWithResource(mComponent.getPackageName(), info.icon) : null;
+            if (updateIcon) {
+                mTile.setIcon(mDefaultIcon);
+            }
+            // Update the label if there is no label.
+            if (mTile.getLabel() == null) {
+                mTile.setLabel(info.loadLabel(pm));
+            }
+        } catch (Exception e) {
+            mDefaultIcon = null;
+        }
+    }
+
+    /**
+     * Compare two icons, only works for resources.
+     */
+    private boolean iconEquals(android.graphics.drawable.Icon icon1,
+            android.graphics.drawable.Icon icon2) {
+        if (icon1 == icon2) {
+            return true;
+        }
+        if (icon1 == null || icon2 == null) {
+            return false;
+        }
+        if (icon1.getType() != android.graphics.drawable.Icon.TYPE_RESOURCE
+                || icon2.getType() != android.graphics.drawable.Icon.TYPE_RESOURCE) {
+            return false;
+        }
+        if (icon1.getResId() != icon2.getResId()) {
+            return false;
+        }
+        if (!Objects.equal(icon1.getResPackage(), icon2.getResPackage())) {
+            return false;
+        }
+        return true;
+    }
+
+    @Override
+    public void onTileChanged(ComponentName tile) {
+        setTileIcon();
+    }
+
     @Override
     public boolean isAvailable() {
         return mDefaultIcon != null;
@@ -136,6 +178,8 @@
         mListening = listening;
         try {
             if (listening) {
+                setTileIcon();
+                refreshState();
                 if (!mServiceManager.isActiveTile()) {
                     mServiceManager.setBindRequested(true);
                     mService.onStartListening();
diff --git a/packages/SystemUI/src/com/android/systemui/qs/external/TileLifecycleManager.java b/packages/SystemUI/src/com/android/systemui/qs/external/TileLifecycleManager.java
index 5903218..212f179 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/external/TileLifecycleManager.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/external/TileLifecycleManager.java
@@ -80,6 +80,7 @@
     boolean mReceiverRegistered;
     private IQSService mService;
     private boolean mUnbindImmediate;
+    private TileChangeListener mChangeListener;
 
     public TileLifecycleManager(Handler handler, Context context, Intent intent, UserHandle user) {
         mContext = context;
@@ -168,7 +169,7 @@
     @Override
     public void onServiceDisconnected(ComponentName name) {
         if (DEBUG) Log.d(TAG, "onServiceDisconnected " + name);
-        mWrapper = null;
+        handleDeath();
     }
 
     private void handlePendingMessages() {
@@ -279,6 +280,10 @@
         mReceiverRegistered = false;
     }
 
+    public void setTileChangeListener(TileChangeListener changeListener) {
+        mChangeListener = changeListener;
+    }
+
     @Override
     public void onReceive(Context context, Intent intent) {
         if (DEBUG) Log.d(TAG, "onReceive: " + intent);
@@ -289,6 +294,9 @@
                 return;
             }
         }
+        if (Intent.ACTION_PACKAGE_CHANGED.equals(intent.getAction()) && mChangeListener != null) {
+            mChangeListener.onTileChanged(mIntent.getComponent());
+        }
         stopPackageListening();
         if (mBound) {
             // Trying to bind again will check the state of the package before bothering to bind.
@@ -401,4 +409,8 @@
         if (DEBUG) Log.d(TAG, "binderDeath");
         handleDeath();
     }
+
+    public interface TileChangeListener {
+        void onTileChanged(ComponentName tile);
+    }
 }
diff --git a/packages/SystemUI/src/com/android/systemui/qs/external/TileServiceManager.java b/packages/SystemUI/src/com/android/systemui/qs/external/TileServiceManager.java
index f34df75..82a5622 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/external/TileServiceManager.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/external/TileServiceManager.java
@@ -27,6 +27,7 @@
 import android.service.quicksettings.IQSTileService;
 import android.support.annotation.VisibleForTesting;
 import android.util.Log;
+import com.android.systemui.qs.external.TileLifecycleManager.TileChangeListener;
 import libcore.util.Objects;
 
 /**
@@ -81,6 +82,10 @@
                 new UserHandle(ActivityManager.getCurrentUser()), filter, null, mHandler);
     }
 
+    public void setTileChangeListener(TileChangeListener changeListener) {
+        mStateManager.setTileChangeListener(changeListener);
+    }
+
     public boolean isActiveTile() {
         return mStateManager.isActiveTile();
     }
diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/DataSaverTile.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/DataSaverTile.java
index 35aff21..0ce805e 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/tiles/DataSaverTile.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/DataSaverTile.java
@@ -14,10 +14,15 @@
 
 package com.android.systemui.qs.tiles;
 
+import android.content.DialogInterface;
 import android.content.Intent;
+
+import com.android.internal.logging.MetricsLogger;
 import com.android.internal.logging.MetricsProto.MetricsEvent;
+import com.android.systemui.Prefs;
 import com.android.systemui.R;
 import com.android.systemui.qs.QSTile;
+import com.android.systemui.statusbar.phone.SystemUIDialog;
 import com.android.systemui.statusbar.policy.DataSaverController;
 
 public class DataSaverTile extends QSTile<QSTile.BooleanState> implements
@@ -51,7 +56,31 @@
 
     @Override
     protected void handleClick() {
+        if (Prefs.getBoolean(mContext, Prefs.Key.QS_DATA_SAVER_DIALOG_SHOWN, false)) {
+            // Do it right away.
+            toggleDataSaver();
+            return;
+        }
+        // Shows dialog first
+        SystemUIDialog dialog = new SystemUIDialog(mContext);
+        dialog.setTitle(com.android.internal.R.string.data_saver_enable_title);
+        dialog.setMessage(com.android.internal.R.string.data_saver_description);
+        dialog.setPositiveButton(com.android.internal.R.string.data_saver_enable_button,
+                new DialogInterface.OnClickListener() {
+                    @Override
+                    public void onClick(DialogInterface dialog, int which) {
+                        toggleDataSaver();
+                    }
+                });
+        dialog.setNegativeButton(com.android.internal.R.string.cancel, null);
+        dialog.setShowForAllUsers(true);
+        dialog.show();
+        Prefs.putBoolean(mContext, Prefs.Key.QS_DATA_SAVER_DIALOG_SHOWN, true);
+    }
+
+    private void toggleDataSaver() {
         mState.value = !mDataSaverController.isDataSaverEnabled();
+        MetricsLogger.action(mContext, getMetricsCategory(), mState.value);
         mDataSaverController.setDataSaverEnabled(mState.value);
         refreshState(mState.value);
     }
diff --git a/packages/SystemUI/src/com/android/systemui/recents/RecentsActivity.java b/packages/SystemUI/src/com/android/systemui/recents/RecentsActivity.java
index 54713d0..f41355c 100644
--- a/packages/SystemUI/src/com/android/systemui/recents/RecentsActivity.java
+++ b/packages/SystemUI/src/com/android/systemui/recents/RecentsActivity.java
@@ -314,6 +314,18 @@
         // Notify that recents is now visible
         EventBus.getDefault().send(new RecentsVisibilityChangedEvent(this, true));
         MetricsLogger.visible(this, MetricsEvent.OVERVIEW_ACTIVITY);
+
+        // Notify of the next draw
+        mRecentsView.getViewTreeObserver().addOnPreDrawListener(
+                new ViewTreeObserver.OnPreDrawListener() {
+
+                    @Override
+                    public boolean onPreDraw() {
+                        mRecentsView.getViewTreeObserver().removeOnPreDrawListener(this);
+                        EventBus.getDefault().post(new RecentsDrawnEvent());
+                        return true;
+                    }
+                });
     }
 
     @Override
@@ -400,23 +412,6 @@
     }
 
     @Override
-    protected void onResume() {
-        super.onResume();
-
-        // Notify of the next draw
-        mRecentsView.getViewTreeObserver().addOnPreDrawListener(
-                new ViewTreeObserver.OnPreDrawListener() {
-
-                    @Override
-                    public boolean onPreDraw() {
-                        mRecentsView.getViewTreeObserver().removeOnPreDrawListener(this);
-                        EventBus.getDefault().post(new RecentsDrawnEvent());
-                        return true;
-                    }
-                });
-    }
-
-    @Override
     protected void onPause() {
         super.onPause();
 
diff --git a/packages/SystemUI/src/com/android/systemui/recents/misc/SystemServicesProxy.java b/packages/SystemUI/src/com/android/systemui/recents/misc/SystemServicesProxy.java
index be06ad0..46b2612 100644
--- a/packages/SystemUI/src/com/android/systemui/recents/misc/SystemServicesProxy.java
+++ b/packages/SystemUI/src/com/android/systemui/recents/misc/SystemServicesProxy.java
@@ -414,8 +414,8 @@
         }
 
         try {
-            return mIam.moveTaskToDockedStack(
-                    taskId, createMode, true /* onTop */, false /* animate */, initialBounds);
+            return mIam.moveTaskToDockedStack(taskId, createMode, true /* onTop */,
+                    false /* animate */, initialBounds, true /* moveHomeStackFront */ );
         } catch (RemoteException e) {
             e.printStackTrace();
         }
diff --git a/packages/SystemUI/src/com/android/systemui/recents/views/TaskViewHeader.java b/packages/SystemUI/src/com/android/systemui/recents/views/TaskViewHeader.java
index e2f2198..7b372ec 100644
--- a/packages/SystemUI/src/com/android/systemui/recents/views/TaskViewHeader.java
+++ b/packages/SystemUI/src/com/android/systemui/recents/views/TaskViewHeader.java
@@ -235,7 +235,6 @@
 
         // Initialize the icon and description views
         mIconView = (ImageView) findViewById(R.id.icon);
-        mIconView.setClickable(false);
         mIconView.setOnLongClickListener(this);
         mTitleView = (TextView) findViewById(R.id.title);
         mDismissButton = (ImageView) findViewById(R.id.dismiss_task);
@@ -459,6 +458,8 @@
         mDismissButton.setImageDrawable(t.useLightOnPrimaryColor ?
                 mLightDismissDrawable : mDarkDismissDrawable);
         mDismissButton.setContentDescription(t.dismissDescription);
+        mDismissButton.setOnClickListener(this);
+        mDismissButton.setClickable(false);
 
         // When freeform workspaces are enabled, then update the move-task button depending on the
         // current task
@@ -474,6 +475,8 @@
                         ? mLightFreeformIcon
                         : mDarkFreeformIcon);
             }
+            mMoveTaskButton.setOnClickListener(this);
+            mMoveTaskButton.setClickable(false);
         }
 
         if (Recents.getDebugFlags().isFastToggleRecentsEnabled()) {
@@ -491,6 +494,7 @@
         if (touchExplorationEnabled) {
             mIconView.setContentDescription(t.appInfoDescription);
             mIconView.setOnClickListener(this);
+            mIconView.setClickable(true);
         }
     }
 
@@ -509,15 +513,15 @@
         mTask = null;
         mIconView.setImageDrawable(null);
         if (touchExplorationEnabled) {
-            mIconView.setOnClickListener(null);
+            mIconView.setClickable(false);
         }
     }
 
     /** Animates this task bar if the user does not interact with the stack after a certain time. */
     void startNoUserInteractionAnimation() {
         int duration = getResources().getInteger(R.integer.recents_task_enter_from_app_duration);
-        mDismissButton.setOnClickListener(this);
         mDismissButton.setVisibility(View.VISIBLE);
+        mDismissButton.setClickable(true);
         if (mDismissButton.getVisibility() == VISIBLE) {
             mDismissButton.animate()
                     .alpha(1f)
@@ -529,8 +533,8 @@
         }
         if (mMoveTaskButton != null) {
             if (mMoveTaskButton.getVisibility() == VISIBLE) {
-                mMoveTaskButton.setOnClickListener(this);
                 mMoveTaskButton.setVisibility(View.VISIBLE);
+                mMoveTaskButton.setClickable(true);
                 mMoveTaskButton.animate()
                         .alpha(1f)
                         .setInterpolator(Interpolators.FAST_OUT_LINEAR_IN)
@@ -550,12 +554,12 @@
         mDismissButton.setVisibility(View.VISIBLE);
         mDismissButton.animate().cancel();
         mDismissButton.setAlpha(1f);
-        mDismissButton.setOnClickListener(this);
+        mDismissButton.setClickable(true);
         if (mMoveTaskButton != null) {
             mMoveTaskButton.setVisibility(View.VISIBLE);
             mMoveTaskButton.animate().cancel();
             mMoveTaskButton.setAlpha(1f);
-            mMoveTaskButton.setOnClickListener(this);
+            mMoveTaskButton.setClickable(true);
         }
     }
 
@@ -566,11 +570,11 @@
     void resetNoUserInteractionState() {
         mDismissButton.setVisibility(View.INVISIBLE);
         mDismissButton.setAlpha(0f);
-        mDismissButton.setOnClickListener(null);
+        mDismissButton.setClickable(false);
         if (mMoveTaskButton != null) {
             mMoveTaskButton.setVisibility(View.INVISIBLE);
             mMoveTaskButton.setAlpha(0f);
-            mMoveTaskButton.setOnClickListener(null);
+            mMoveTaskButton.setClickable(false);
         }
     }
 
diff --git a/packages/SystemUI/src/com/android/systemui/stackdivider/ForcedResizableInfoActivityController.java b/packages/SystemUI/src/com/android/systemui/stackdivider/ForcedResizableInfoActivityController.java
index 9294ecd..34a37ba 100644
--- a/packages/SystemUI/src/com/android/systemui/stackdivider/ForcedResizableInfoActivityController.java
+++ b/packages/SystemUI/src/com/android/systemui/stackdivider/ForcedResizableInfoActivityController.java
@@ -111,6 +111,7 @@
             Intent intent = new Intent(mContext, ForcedResizableInfoActivity.class);
             ActivityOptions options = ActivityOptions.makeBasic();
             options.setLaunchTaskId(mPendingTaskIds.valueAt(i));
+            options.setAvoidMoveToFront(true);
             mContext.startActivity(intent, options.toBundle());
         }
         mPendingTaskIds.clear();
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/CommandQueue.java b/packages/SystemUI/src/com/android/systemui/statusbar/CommandQueue.java
index 1bc2ebc..7b23c80 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/CommandQueue.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/CommandQueue.java
@@ -68,7 +68,7 @@
     private static final int MSG_START_ASSIST                  = 23 << MSG_SHIFT;
     private static final int MSG_CAMERA_LAUNCH_GESTURE         = 24 << MSG_SHIFT;
     private static final int MSG_TOGGLE_KEYBOARD_SHORTCUTS     = 25 << MSG_SHIFT;
-    private static final int MSG_REQUEST_TV_PICTURE_IN_PICTURE = 26 << MSG_SHIFT;
+    private static final int MSG_SHOW_TV_PICTURE_IN_PICTURE_MENU = 26 << MSG_SHIFT;
     private static final int MSG_ADD_QS_TILE                   = 27 << MSG_SHIFT;
     private static final int MSG_REMOVE_QS_TILE                = 28 << MSG_SHIFT;
     private static final int MSG_CLICK_QS_TILE                 = 29 << MSG_SHIFT;
@@ -124,7 +124,7 @@
         void showAssistDisclosure();
         void startAssist(Bundle args);
         void onCameraLaunchGestureDetected(int source);
-        void requestTvPictureInPicture();
+        void showTvPictureInPictureMenu();
 
         void addQsTile(ComponentName tile);
         void remQsTile(ComponentName tile);
@@ -274,10 +274,10 @@
     }
 
     @Override
-    public void requestTvPictureInPicture() {
+    public void showTvPictureInPictureMenu() {
         synchronized (mLock) {
-            mHandler.removeMessages(MSG_REQUEST_TV_PICTURE_IN_PICTURE);
-            mHandler.obtainMessage(MSG_REQUEST_TV_PICTURE_IN_PICTURE).sendToTarget();
+            mHandler.removeMessages(MSG_SHOW_TV_PICTURE_IN_PICTURE_MENU);
+            mHandler.obtainMessage(MSG_SHOW_TV_PICTURE_IN_PICTURE_MENU).sendToTarget();
         }
     }
 
@@ -488,8 +488,8 @@
                 case MSG_CAMERA_LAUNCH_GESTURE:
                     mCallbacks.onCameraLaunchGestureDetected(msg.arg1);
                     break;
-                case MSG_REQUEST_TV_PICTURE_IN_PICTURE:
-                    mCallbacks.requestTvPictureInPicture();
+                case MSG_SHOW_TV_PICTURE_IN_PICTURE_MENU:
+                    mCallbacks.showTvPictureInPictureMenu();
                     break;
                 case MSG_ADD_QS_TILE:
                     mCallbacks.addQsTile((ComponentName) msg.obj);
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/ExpandableNotificationRow.java b/packages/SystemUI/src/com/android/systemui/statusbar/ExpandableNotificationRow.java
index caa1585..5b16fce 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/ExpandableNotificationRow.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/ExpandableNotificationRow.java
@@ -263,9 +263,6 @@
         int headsUpheight = headsUpCustom && beforeN ? mMaxHeadsUpHeightLegacy
                 : mMaxHeadsUpHeight;
         layout.setHeights(minHeight, headsUpheight, mNotificationMaxHeight);
-        if (mSettingsIconRow != null) {
-            mSettingsIconRow.updateVerticalLocation();
-        }
     }
 
     public StatusBarNotification getStatusBarNotification() {
@@ -280,6 +277,10 @@
         int intrinsicBefore = getIntrinsicHeight();
         mIsHeadsUp = isHeadsUp;
         mPrivateLayout.setHeadsUp(isHeadsUp);
+        if (mIsSummaryWithChildren) {
+            // The overflow might change since we allow more lines as HUN.
+            mChildrenContainer.updateGroupOverflow();
+        }
         if (intrinsicBefore != getIntrinsicHeight()) {
             notifyHeightChanged(false  /* needsAnimation */);
         }
@@ -1123,6 +1124,9 @@
     protected void onLayout(boolean changed, int left, int top, int right, int bottom) {
         super.onLayout(changed, left, top, right, bottom);
         updateMaxHeights();
+        if (mSettingsIconRow != null) {
+            mSettingsIconRow.updateVerticalLocation();
+        }
     }
 
     private void updateMaxHeights() {
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/NotificationContentView.java b/packages/SystemUI/src/com/android/systemui/statusbar/NotificationContentView.java
index 7be50c4..5e9a8bc 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/NotificationContentView.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/NotificationContentView.java
@@ -17,6 +17,7 @@
 package com.android.systemui.statusbar;
 
 import android.app.Notification;
+import android.app.PendingIntent;
 import android.app.RemoteInput;
 import android.content.Context;
 import android.graphics.Rect;
@@ -55,15 +56,6 @@
     private final Rect mClipBounds = new Rect();
     private final int mMinContractedHeight;
     private final int mNotificationContentMarginEnd;
-    private final OnLayoutChangeListener mLayoutUpdater = new OnLayoutChangeListener() {
-        @Override
-        public void onLayoutChange(View v, int left, int top, int right, int bottom,
-                int oldLeft,
-                int oldTop, int oldRight, int oldBottom) {
-            selectLayout(false /* animate */, false /* force */);
-        }
-    };
-
 
     private View mContractedChild;
     private View mExpandedChild;
@@ -118,6 +110,9 @@
     private int mTransformationStartVisibleType;
     private boolean mUserExpanding;
     private int mSingleLineWidthIndention;
+    private boolean mForceSelectNextLayout = true;
+    private PendingIntent mPreviousExpandedRemoteInputIntent;
+    private PendingIntent mPreviousHeadsUpRemoteInputIntent;
 
     public NotificationContentView(Context context, AttributeSet attrs) {
         super(context, attrs);
@@ -267,6 +262,8 @@
         super.onLayout(changed, left, top, right, bottom);
         updateClipping();
         invalidateOutline();
+        selectLayout(false /* animate */, mForceSelectNextLayout /* force */);
+        mForceSelectNextLayout = false;
     }
 
     @Override
@@ -280,13 +277,19 @@
             mContractedChild.animate().cancel();
             removeView(mContractedChild);
         }
+        mPreviousExpandedRemoteInputIntent =
+                mExpandedRemoteInput != null ? mExpandedRemoteInput.getPendingIntent() : null;
         if (mExpandedChild != null) {
             mExpandedChild.animate().cancel();
             removeView(mExpandedChild);
+            mExpandedRemoteInput = null;
         }
+        mPreviousHeadsUpRemoteInputIntent =
+                mHeadsUpRemoteInput != null ? mHeadsUpRemoteInput.getPendingIntent() : null;
         if (mHeadsUpChild != null) {
             mHeadsUpChild.animate().cancel();
             removeView(mHeadsUpChild);
+            mHeadsUpRemoteInput = null;
         }
         mContractedChild = null;
         mExpandedChild = null;
@@ -308,44 +311,35 @@
     public void setContractedChild(View child) {
         if (mContractedChild != null) {
             mContractedChild.animate().cancel();
-            mContractedChild.removeOnLayoutChangeListener(mLayoutUpdater);
             removeView(mContractedChild);
         }
         addView(child);
         mContractedChild = child;
-        mContractedChild.addOnLayoutChangeListener(mLayoutUpdater);
         mContractedWrapper = NotificationViewWrapper.wrap(getContext(), child,
                 mContainingNotification);
-        selectLayout(false /* animate */, true /* force */);
         mContractedWrapper.setDark(mDark, false /* animate */, 0 /* delay */);
     }
 
     public void setExpandedChild(View child) {
         if (mExpandedChild != null) {
             mExpandedChild.animate().cancel();
-            mExpandedChild.removeOnLayoutChangeListener(mLayoutUpdater);
             removeView(mExpandedChild);
         }
         addView(child);
         mExpandedChild = child;
-        mExpandedChild.addOnLayoutChangeListener(mLayoutUpdater);
         mExpandedWrapper = NotificationViewWrapper.wrap(getContext(), child,
                 mContainingNotification);
-        selectLayout(false /* animate */, true /* force */);
     }
 
     public void setHeadsUpChild(View child) {
         if (mHeadsUpChild != null) {
             mHeadsUpChild.animate().cancel();
-            mHeadsUpChild.removeOnLayoutChangeListener(mLayoutUpdater);
             removeView(mHeadsUpChild);
         }
         addView(child);
         mHeadsUpChild = child;
-        mHeadsUpChild.addOnLayoutChangeListener(mLayoutUpdater);
         mHeadsUpWrapper = NotificationViewWrapper.wrap(getContext(), child,
                 mContainingNotification);
-        selectLayout(false /* animate */, true /* force */);
     }
 
     @Override
@@ -399,7 +393,8 @@
             updateBackgroundColor(true /* animate */);
         }
         if (mTransformationStartVisibleType != UNDEFINED
-                && mVisibleType != mTransformationStartVisibleType) {
+                && mVisibleType != mTransformationStartVisibleType
+                && getViewForVisibleType(mTransformationStartVisibleType) != null) {
             final TransformableView shownView = getTransformableViewForVisibleType(mVisibleType);
             final TransformableView hiddenView = getTransformableViewForVisibleType(
                     mTransformationStartVisibleType);
@@ -492,20 +487,66 @@
         }
         if (mUserExpanding) {
             updateContentTransformation();
-            return;
-        }
-        int visibleType = calculateVisibleType();
-        if (visibleType != mVisibleType || force) {
-            if (animate && ((visibleType == VISIBLE_TYPE_EXPANDED && mExpandedChild != null)
-                    || (visibleType == VISIBLE_TYPE_HEADSUP && mHeadsUpChild != null)
-                    || (visibleType == VISIBLE_TYPE_SINGLELINE && mSingleLineView != null)
-                    || visibleType == VISIBLE_TYPE_CONTRACTED)) {
-                animateToVisibleType(visibleType);
-            } else {
-                updateViewVisibilities(visibleType);
+        } else {
+            int visibleType = calculateVisibleType();
+            if (visibleType != mVisibleType || force) {
+            View visibleView = getViewForVisibleType(visibleType);
+            if (visibleView != null) {
+                visibleView.setVisibility(VISIBLE);
+                transferRemoteInputFocus(visibleType);
             }
-            mVisibleType = visibleType;
-            updateBackgroundColor(animate);
+
+                if (animate && ((visibleType == VISIBLE_TYPE_EXPANDED && mExpandedChild != null)
+                        || (visibleType == VISIBLE_TYPE_HEADSUP && mHeadsUpChild != null)
+                        || (visibleType == VISIBLE_TYPE_SINGLELINE && mSingleLineView != null)
+                        || visibleType == VISIBLE_TYPE_CONTRACTED)) {
+                    animateToVisibleType(visibleType);
+                } else {
+                    updateViewVisibilities(visibleType);
+                }
+                mVisibleType = visibleType;
+                updateBackgroundColor(animate);
+            }
+        }
+        if (mForceSelectNextLayout) {
+            forceUpdateVisibilities();
+        }
+    }
+
+    private void forceUpdateVisibilities() {
+        boolean contractedVisible = mVisibleType == VISIBLE_TYPE_CONTRACTED
+                || mTransformationStartVisibleType == VISIBLE_TYPE_CONTRACTED;
+        boolean expandedVisible = mVisibleType == VISIBLE_TYPE_EXPANDED
+                || mTransformationStartVisibleType == VISIBLE_TYPE_EXPANDED;
+        boolean headsUpVisible = mVisibleType == VISIBLE_TYPE_HEADSUP
+                || mTransformationStartVisibleType == VISIBLE_TYPE_HEADSUP;
+        boolean singleLineVisible = mVisibleType == VISIBLE_TYPE_SINGLELINE
+                || mTransformationStartVisibleType == VISIBLE_TYPE_SINGLELINE;
+        if (!contractedVisible) {
+            mContractedChild.setVisibility(View.INVISIBLE);
+        } else {
+            mContractedWrapper.setVisible(true);
+        }
+        if (mExpandedChild != null) {
+            if (!expandedVisible) {
+                mExpandedChild.setVisibility(View.INVISIBLE);
+            } else {
+                mExpandedWrapper.setVisible(true);
+            }
+        }
+        if (mHeadsUpChild != null) {
+            if (!headsUpVisible) {
+                mHeadsUpChild.setVisibility(View.INVISIBLE);
+            } else {
+                mHeadsUpWrapper.setVisible(true);
+            }
+        }
+        if (mSingleLineView != null) {
+            if (!singleLineVisible) {
+                mSingleLineView.setVisibility(View.INVISIBLE);
+            } else {
+                mSingleLineView.setVisible(true);
+            }
         }
     }
 
@@ -543,7 +584,7 @@
     private void animateToVisibleType(int visibleType) {
         final TransformableView shownView = getTransformableViewForVisibleType(visibleType);
         final TransformableView hiddenView = getTransformableViewForVisibleType(mVisibleType);
-        if (shownView == hiddenView) {
+        if (shownView == hiddenView || hiddenView == null) {
             shownView.setVisible(true);
             return;
         }
@@ -559,6 +600,19 @@
         });
     }
 
+    private void transferRemoteInputFocus(int visibleType) {
+        if (visibleType == VISIBLE_TYPE_HEADSUP
+                && mHeadsUpRemoteInput != null
+                && (mExpandedRemoteInput != null && mExpandedRemoteInput.isActive())) {
+            mHeadsUpRemoteInput.stealFocusFrom(mExpandedRemoteInput);
+        }
+        if (visibleType == VISIBLE_TYPE_EXPANDED
+                && mExpandedRemoteInput != null
+                && (mHeadsUpRemoteInput != null && mHeadsUpRemoteInput.isActive())) {
+            mExpandedRemoteInput.stealFocusFrom(mHeadsUpRemoteInput);
+        }
+    }
+
     /**
      * @param visibleType one of the static enum types in this view
      * @return the corresponding transformable view according to the given visible type
@@ -619,8 +673,9 @@
                 height = mContentHeight;
             }
             int expandedVisualType = getVisualTypeForHeight(height);
-            int collapsedVisualType = getVisualTypeForHeight(
-                    mContainingNotification.getCollapsedHeight());
+            int collapsedVisualType = mIsChildInGroup && !isGroupExpanded()
+                    ? VISIBLE_TYPE_SINGLELINE
+                    : getVisualTypeForHeight(mContainingNotification.getCollapsedHeight());
             return mTransformationStartVisibleType == collapsedVisualType
                     ? expandedVisualType
                     : collapsedVisualType;
@@ -734,8 +789,10 @@
             mHeadsUpWrapper.notifyContentUpdated(entry.notification);
         }
         updateShowingLegacyBackground();
-        selectLayout(false /* animate */, true /* force */);
+        mForceSelectNextLayout = true;
         setDark(mDark, false /* animate */, 0 /* delay */);
+        mPreviousExpandedRemoteInputIntent = null;
+        mPreviousHeadsUpRemoteInputIntent = null;
     }
 
     private void updateSingleLineView() {
@@ -771,19 +828,23 @@
 
         View bigContentView = mExpandedChild;
         if (bigContentView != null) {
-            mExpandedRemoteInput = applyRemoteInput(bigContentView, entry, hasRemoteInput);
+            mExpandedRemoteInput = applyRemoteInput(bigContentView, entry, hasRemoteInput,
+                    mPreviousExpandedRemoteInputIntent);
         } else {
             mExpandedRemoteInput = null;
         }
+
         View headsUpContentView = mHeadsUpChild;
         if (headsUpContentView != null) {
-            mHeadsUpRemoteInput = applyRemoteInput(headsUpContentView, entry, hasRemoteInput);
+            mHeadsUpRemoteInput = applyRemoteInput(headsUpContentView, entry, hasRemoteInput,
+                    mPreviousHeadsUpRemoteInputIntent);
         } else {
             mHeadsUpRemoteInput = null;
         }
     }
 
-    private RemoteInputView applyRemoteInput(View view, NotificationData.Entry entry, boolean hasRemoteInput) {
+    private RemoteInputView applyRemoteInput(View view, NotificationData.Entry entry,
+            boolean hasRemoteInput, PendingIntent existingPendingIntent) {
         View actionContainerCandidate = view.findViewById(
                 com.android.internal.R.id.actions_container);
         if (actionContainerCandidate instanceof FrameLayout) {
@@ -812,8 +873,26 @@
                     color = mContext.getColor(R.color.default_remote_input_background);
                 }
                 existing.setBackgroundColor(NotificationColorUtil.ensureTextBackgroundColor(color,
-                        mContext.getColor(R.color.remote_input_text),
+                        mContext.getColor(R.color.remote_input_text_enabled),
                         mContext.getColor(R.color.remote_input_hint)));
+
+                if (existingPendingIntent != null || existing.isActive()) {
+                    // The current action could be gone, or the pending intent no longer valid.
+                    // If we find a matching action in the new notification, focus, otherwise close.
+                    Notification.Action[] actions = entry.notification.getNotification().actions;
+                    if (existingPendingIntent != null) {
+                        existing.setPendingIntent(existingPendingIntent);
+                    }
+                    if (existing.updatePendingIntentFromActions(actions)) {
+                        if (!existing.isActive()) {
+                            existing.focus();
+                        }
+                    } else {
+                        if (existing.isActive()) {
+                            existing.close();
+                        }
+                    }
+                }
             }
             return existing;
         }
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/NotificationGuts.java b/packages/SystemUI/src/com/android/systemui/statusbar/NotificationGuts.java
index 057b020..4650a1f 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/NotificationGuts.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/NotificationGuts.java
@@ -299,12 +299,13 @@
     private void applyAuto() {
         mSeekBar.setEnabled(!mAuto);
 
-        final ColorStateList tint = mAuto ? mInactiveSliderTint : mActiveSliderTint;
+        final ColorStateList sliderTint = mAuto ? mInactiveSliderTint : mActiveSliderTint;
+        final ColorStateList starTint = mAuto ?  mActiveSliderTint : mInactiveSliderTint;
         Drawable icon = mAutoButton.getDrawable().mutate();
-        icon.setTintList(tint);
+        icon.setTintList(starTint);
         mAutoButton.setImageDrawable(icon);
-        mSeekBar.setProgressTintList(tint);
-        mSeekBar.setThumbTintList(tint);
+        mSeekBar.setProgressTintList(sliderTint);
+        mSeekBar.setThumbTintList(sliderTint);
 
         if (mAuto) {
             mSeekBar.setProgress(mNotificationImportance);
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/NotificationSettingsIconRow.java b/packages/SystemUI/src/com/android/systemui/statusbar/NotificationSettingsIconRow.java
index 060d8f4..4a1c451 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/NotificationSettingsIconRow.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/NotificationSettingsIconRow.java
@@ -244,7 +244,6 @@
     }
 
     public void setIconLocation(boolean onLeft) {
-        updateVerticalLocation();
         if ((mIconPlaced && onLeft == mOnLeft) || mSnapping || mParent == null
                 || mGearIcon.getWidth() == 0) {
             // Do nothing
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/StatusBarIconView.java b/packages/SystemUI/src/com/android/systemui/statusbar/StatusBarIconView.java
index 6d76763e..ce0163e 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/StatusBarIconView.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/StatusBarIconView.java
@@ -327,7 +327,14 @@
     public static String contentDescForNotification(Context c, Notification n) {
         Notification.Builder builder = Notification.Builder.recoverBuilder(c, n);
         String appName = builder.loadHeaderAppName();
+
+        CharSequence title = n.extras.getString(Notification.EXTRA_TITLE);
         CharSequence ticker = n.tickerText;
-        return c.getString(R.string.accessibility_desc_notification_icon, appName, ticker);
+
+        CharSequence desc = !TextUtils.isEmpty(ticker) ? ticker
+                : !TextUtils.isEmpty(title) ? title : "";
+
+        return c.getString(R.string.accessibility_desc_notification_icon, appName, desc);
     }
+
 }
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationMediaTemplateViewWrapper.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationMediaTemplateViewWrapper.java
index 3c95a78..4ce330c 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationMediaTemplateViewWrapper.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationMediaTemplateViewWrapper.java
@@ -52,7 +52,7 @@
         // This also clears the existing types
         super.updateTransformedTypes();
         if (mActions != null) {
-            mTransformationHelper.addTransformedView(TransformableView.TRANSFORMING_VIEW_TEXT,
+            mTransformationHelper.addTransformedView(TransformableView.TRANSFORMING_VIEW_ACTIONS,
                     mActions);
         }
     }
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/TransformState.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/TransformState.java
index f04fe5e..8207215 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/TransformState.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/TransformState.java
@@ -100,8 +100,17 @@
         boolean transformY = (transformationFlags & TRANSOFORM_Y) != 0;
         boolean transformScale = transformScale();
         // lets animate the positions correctly
-        if (transformationAmount == 0.0f) {
-            int[] otherPosition = otherState.getLocationOnScreen();
+        if (transformationAmount == 0.0f
+                || transformX && getTransformationStartX() == UNDEFINED
+                || transformY && getTransformationStartY() == UNDEFINED
+                || transformScale && getTransformationStartScaleX() == UNDEFINED
+                || transformScale && getTransformationStartScaleY() == UNDEFINED) {
+            int[] otherPosition;
+            if (transformationAmount != 0.0f) {
+                otherPosition = otherState.getLaidOutLocationOnScreen();
+            } else {
+                otherPosition = otherState.getLocationOnScreen();
+            }
             int[] ownStablePosition = getLaidOutLocationOnScreen();
             if (customTransformation == null
                     || !customTransformation.initTransformation(this, otherState)) {
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PanelView.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PanelView.java
index c4b7932..7c70e22 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PanelView.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PanelView.java
@@ -883,6 +883,10 @@
                 new ViewTreeObserver.OnGlobalLayoutListener() {
                     @Override
                     public void onGlobalLayout() {
+                        if (!mInstantExpanding) {
+                            getViewTreeObserver().removeOnGlobalLayoutListener(this);
+                            return;
+                        }
                         if (mStatusBar.getStatusBarWindow().getHeight()
                                 != mStatusBar.getStatusBarHeight()) {
                             getViewTreeObserver().removeOnGlobalLayoutListener(this);
@@ -907,6 +911,10 @@
         if (mExpanding) {
             notifyExpandingFinished();
         }
+        if (mInstantExpanding) {
+            mInstantExpanding = false;
+            notifyBarPanelExpansionChanged();
+        }
     }
 
     private void abortAnimations() {
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java
index 436dc9d..6fc32de 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java
@@ -409,6 +409,9 @@
                 if (mKeyguardBottomArea != null) {
                     mKeyguardBottomArea.setUserSetupComplete(mUserSetup);
                 }
+                if (mNetworkController != null) {
+                    mNetworkController.setUserSetupComplete(mUserSetup);
+                }
             }
             if (mIconPolicy != null) {
                 mIconPolicy.setCurrentUserSetup(mUserSetup);
@@ -838,6 +841,7 @@
             }
         });
         mNetworkController = new NetworkControllerImpl(mContext, mHandlerThread.getLooper());
+        mNetworkController.setUserSetupComplete(mUserSetup);
         mHotspotController = new HotspotControllerImpl(mContext);
         mBluetoothController = new BluetoothControllerImpl(mContext, mHandlerThread.getLooper());
         mSecurityController = new SecurityControllerImpl(mContext);
@@ -1437,7 +1441,11 @@
     public void removeNotification(String key, RankingMap ranking) {
         boolean deferRemoval = false;
         if (mHeadsUpManager.isHeadsUp(key)) {
-            deferRemoval = !mHeadsUpManager.removeNotification(key);
+            // A cancel() in repsonse to a remote input shouldn't be delayed, as it makes the
+            // sending look longer than it takes.
+            boolean ignoreEarliestRemovalTime = mRemoteInputController.isSpinning(key)
+                    && !FORCE_REMOTE_INPUT_HISTORY;
+            deferRemoval = !mHeadsUpManager.removeNotification(key,  ignoreEarliestRemovalTime);
         }
         if (key.equals(mMediaNotificationKey)) {
             clearCurrentMediaNotification();
@@ -1985,19 +1993,29 @@
                 artworkDrawable = new BitmapDrawable(mBackdropBack.getResources(), artworkBitmap);
             }
         }
+        boolean allowWhenShade = false;
         if (ENABLE_LOCKSCREEN_WALLPAPER && artworkDrawable == null) {
             Bitmap lockWallpaper = mLockscreenWallpaper.getBitmap();
             if (lockWallpaper != null) {
                 artworkDrawable = new LockscreenWallpaper.WallpaperDrawable(
                         mBackdropBack.getResources(), lockWallpaper);
+                // We're in the SHADE mode on the SIM screen - yet we still need to show
+                // the lockscreen wallpaper in that mode.
+                allowWhenShade = mStatusBarKeyguardViewManager != null
+                        && mStatusBarKeyguardViewManager.isShowing();
             }
         }
 
+        boolean hideBecauseOccluded = mStatusBarKeyguardViewManager != null
+                && mStatusBarKeyguardViewManager.isOccluded();
+
         final boolean hasArtwork = artworkDrawable != null;
 
-        if ((hasArtwork || DEBUG_MEDIA_FAKE_ARTWORK) && mState != StatusBarState.SHADE
+        if ((hasArtwork || DEBUG_MEDIA_FAKE_ARTWORK)
+                && (mState != StatusBarState.SHADE || allowWhenShade)
                 && mFingerprintUnlockController.getMode()
-                        != FingerprintUnlockController.MODE_WAKE_AND_UNLOCK_PULSING) {
+                        != FingerprintUnlockController.MODE_WAKE_AND_UNLOCK_PULSING
+                && !hideBecauseOccluded) {
             // time to show some art!
             if (mBackdrop.getVisibility() != View.VISIBLE) {
                 mBackdrop.setVisibility(View.VISIBLE);
@@ -2065,7 +2083,8 @@
                     Log.v(TAG, "DEBUG_MEDIA: Fading out album artwork");
                 }
                 if (mFingerprintUnlockController.getMode()
-                        == FingerprintUnlockController.MODE_WAKE_AND_UNLOCK_PULSING) {
+                        == FingerprintUnlockController.MODE_WAKE_AND_UNLOCK_PULSING
+                        || hideBecauseOccluded) {
 
                     // We are unlocking directly - no animation!
                     mBackdrop.setVisibility(View.GONE);
@@ -2353,7 +2372,7 @@
         if (wasHeadsUp) {
             if (!shouldPeek) {
                 // We don't want this to be interrupting anymore, lets remove it
-                mHeadsUpManager.removeNotification(key);
+                mHeadsUpManager.removeNotification(key, false /* ignoreEarliestRemovalTime */);
             } else {
                 mHeadsUpManager.updateNotification(entry, alertAgain);
             }
@@ -4503,7 +4522,7 @@
     }
 
     @Override
-    public void requestTvPictureInPicture() {
+    public void showTvPictureInPictureMenu() {
         // no-op.
     }
 
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManager.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManager.java
index 117e2b3..dcad75a 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManager.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManager.java
@@ -247,6 +247,7 @@
             }
         }
         mOccluded = occluded;
+        mPhoneStatusBar.updateMediaMetaData(false, false);
         mStatusBarWindowManager.setKeyguardOccluded(occluded);
         reset();
     }
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/BrightnessMirrorController.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/BrightnessMirrorController.java
index 7a6d080..ddded49 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/BrightnessMirrorController.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/BrightnessMirrorController.java
@@ -25,12 +25,14 @@
 import com.android.systemui.R;
 import com.android.systemui.statusbar.ScrimView;
 import com.android.systemui.statusbar.phone.StatusBarWindowView;
+import com.android.systemui.statusbar.stack.NotificationStackScrollLayout;
 
 /**
  * Controls showing and hiding of the brightness mirror.
  */
 public class BrightnessMirrorController {
 
+    private final NotificationStackScrollLayout mStackScroller;
     public long TRANSITION_DURATION_OUT = 150;
     public long TRANSITION_DURATION_IN = 200;
 
@@ -45,10 +47,13 @@
         mScrimBehind = (ScrimView) statusBarWindow.findViewById(R.id.scrim_behind);
         mBrightnessMirror = statusBarWindow.findViewById(R.id.brightness_mirror);
         mNotificationPanel = statusBarWindow.findViewById(R.id.notification_panel);
+        mStackScroller = (NotificationStackScrollLayout) statusBarWindow.findViewById(
+                R.id.notification_stack_scroller);
     }
 
     public void showMirror() {
         mBrightnessMirror.setVisibility(View.VISIBLE);
+        mStackScroller.setFadedOut(true);
         mScrimBehind.animateViewAlpha(0.0f, TRANSITION_DURATION_OUT, Interpolators.ALPHA_OUT);
         outAnimation(mNotificationPanel.animate())
                 .withLayer();
@@ -62,6 +67,7 @@
                     @Override
                     public void run() {
                         mBrightnessMirror.setVisibility(View.INVISIBLE);
+                        mStackScroller.setFadedOut(false);
                     }
                 });
     }
@@ -69,7 +75,8 @@
     private ViewPropertyAnimator outAnimation(ViewPropertyAnimator a) {
         return a.alpha(0.0f)
                 .setDuration(TRANSITION_DURATION_OUT)
-                .setInterpolator(Interpolators.ALPHA_OUT);
+                .setInterpolator(Interpolators.ALPHA_OUT)
+                .withEndAction(null);
     }
     private ViewPropertyAnimator inAnimation(ViewPropertyAnimator a) {
         return a.alpha(1.0f)
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/HeadsUpManager.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/HeadsUpManager.java
index 52fb470..d3ae549 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/HeadsUpManager.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/HeadsUpManager.java
@@ -264,9 +264,9 @@
      * @return true if the notification was removed and false if it still needs to be kept around
      * for a bit since it wasn't shown long enough
      */
-    public boolean removeNotification(String key) {
+    public boolean removeNotification(String key, boolean ignoreEarliestRemovalTime) {
         if (DEBUG) Log.v(TAG, "remove");
-        if (wasShownLongEnough(key)) {
+        if (wasShownLongEnough(key) || ignoreEarliestRemovalTime) {
             releaseImmediately(key);
             return true;
         } else {
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/MobileSignalController.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/MobileSignalController.java
index 80dcfb6..83e25eb 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/MobileSignalController.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/MobileSignalController.java
@@ -114,6 +114,11 @@
         notifyListenersIfNecessary();
     }
 
+    public void setUserSetupComplete(boolean userSetup) {
+        mCurrentState.userSetup = userSetup;
+        notifyListenersIfNecessary();
+    }
+
     @Override
     public void updateConnectivity(BitSet connectedTransports, BitSet validatedTransports) {
         boolean isValidated = validatedTransports.get(mTransportType);
@@ -204,11 +209,13 @@
 
         String contentDescription = getStringIfExists(getContentDescription());
         String dataContentDescription = getStringIfExists(icons.mDataContentDescription);
+        final boolean dataDisabled = mCurrentState.iconGroup == TelephonyIcons.DATA_DISABLED
+                && mCurrentState.userSetup;
 
-        // Show icon in QS when we are connected or need to show roaming.
+        // Show icon in QS when we are connected or need to show roaming or data is disabled.
         boolean showDataIcon = mCurrentState.dataConnected
                 || mCurrentState.iconGroup == TelephonyIcons.ROAMING
-                || mCurrentState.iconGroup == TelephonyIcons.DATA_DISABLED;
+                || dataDisabled;
         IconState statusIcon = new IconState(mCurrentState.enabled && !mCurrentState.airplaneMode,
                 getCurrentIconId(), contentDescription);
 
@@ -230,7 +237,7 @@
                         && mCurrentState.activityOut;
         showDataIcon &= mCurrentState.isDefault
                 || mCurrentState.iconGroup == TelephonyIcons.ROAMING
-                || mCurrentState.iconGroup == TelephonyIcons.DATA_DISABLED;
+                || dataDisabled;
         int typeIcon = showDataIcon ? icons.mDataType : 0;
         callback.setMobileDataIndicators(statusIcon, qsIcon, typeIcon, qsTypeIcon,
                 activityIn, activityOut, dataContentDescription, description, icons.mIsWide,
@@ -511,6 +518,7 @@
         boolean airplaneMode;
         boolean carrierNetworkChangeMode;
         boolean isDefault;
+        boolean userSetup;
 
         @Override
         public void copyFrom(State s) {
@@ -524,6 +532,7 @@
             isEmergency = state.isEmergency;
             airplaneMode = state.airplaneMode;
             carrierNetworkChangeMode = state.carrierNetworkChangeMode;
+            userSetup = state.userSetup;
         }
 
         @Override
@@ -537,7 +546,9 @@
             builder.append("isDefault=").append(isDefault).append(',');
             builder.append("isEmergency=").append(isEmergency).append(',');
             builder.append("airplaneMode=").append(airplaneMode).append(',');
-            builder.append("carrierNetworkChangeMode=").append(carrierNetworkChangeMode);
+            builder.append("carrierNetworkChangeMode=").append(carrierNetworkChangeMode)
+                    .append(',');
+            builder.append("userSetup=").append(userSetup);
         }
 
         @Override
@@ -550,6 +561,7 @@
                     && ((MobileState) o).isEmergency == isEmergency
                     && ((MobileState) o).airplaneMode == airplaneMode
                     && ((MobileState) o).carrierNetworkChangeMode == carrierNetworkChangeMode
+                    && ((MobileState) o).userSetup == userSetup
                     && ((MobileState) o).isDefault == isDefault;
         }
     }
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkControllerImpl.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkControllerImpl.java
index 40dacd3..a633241 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkControllerImpl.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkControllerImpl.java
@@ -130,6 +130,7 @@
 
     @VisibleForTesting
     ServiceState mLastServiceState;
+    private boolean mUserSetup;
 
     /**
      * Construct this controller object and register for updates.
@@ -490,6 +491,7 @@
                 MobileSignalController controller = new MobileSignalController(mContext, mConfig,
                         mHasMobileDataFeature, mPhone, mCallbackHandler,
                         this, subscriptions.get(i), mSubDefaults, mReceiverHandler.getLooper());
+                controller.setUserSetupComplete(mUserSetup);
                 mMobileSignalControllers.put(subId, controller);
                 if (subscriptions.get(i).getSimSlotIndex() == 0) {
                     mDefaultSignalController = controller;
@@ -516,6 +518,23 @@
         updateAirplaneMode(true /* force */);
     }
 
+    public void setUserSetupComplete(final boolean userSetup) {
+        mReceiverHandler.post(new Runnable() {
+            @Override
+            public void run() {
+                handleSetUserSetupComplete(userSetup);
+            }
+        });
+    }
+
+    @VisibleForTesting
+    void handleSetUserSetupComplete(boolean userSetup) {
+        mUserSetup = userSetup;
+        for (MobileSignalController controller : mMobileSignalControllers.values()) {
+            controller.setUserSetupComplete(mUserSetup);
+        }
+    }
+
     @VisibleForTesting
     boolean hasCorrectMobileControllers(List<SubscriptionInfo> allSubscriptions) {
         if (allSubscriptions.size() != mMobileSignalControllers.size()) {
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/RemoteInputView.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/RemoteInputView.java
index ecd1772..a855aed 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/RemoteInputView.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/RemoteInputView.java
@@ -16,6 +16,7 @@
 
 package com.android.systemui.statusbar.policy;
 
+import android.app.Notification;
 import android.app.PendingIntent;
 import android.app.RemoteInput;
 import android.content.Context;
@@ -43,6 +44,8 @@
 import android.widget.ProgressBar;
 import android.widget.TextView;
 
+import com.android.internal.logging.MetricsLogger;
+import com.android.internal.logging.MetricsProto;
 import com.android.systemui.R;
 import com.android.systemui.statusbar.NotificationData;
 import com.android.systemui.statusbar.RemoteInputController;
@@ -88,8 +91,6 @@
         mEditText.setOnEditorActionListener(new TextView.OnEditorActionListener() {
             @Override
             public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
-
-                // Check if this was the result of hitting the enter key
                 final boolean isSoftImeEvent = event == null
                         && (actionId == EditorInfo.IME_ACTION_DONE
                         || actionId == EditorInfo.IME_ACTION_NEXT
@@ -99,7 +100,10 @@
                         && event.getAction() == KeyEvent.ACTION_DOWN;
 
                 if (isSoftImeEvent || isKeyboardEnterKey) {
-                    sendRemoteInput();
+                    if (mEditText.length() > 0) {
+                        sendRemoteInput();
+                    }
+                    // Consume action to prevent IME from closing.
                     return true;
                 }
                 return false;
@@ -126,10 +130,14 @@
         mEditText.mShowImeOnInputConnection = false;
         mController.remoteInputSent(mEntry);
 
+        MetricsLogger.action(mContext, MetricsProto.MetricsEvent.ACTION_REMOTE_INPUT_SEND,
+                mEntry.notification.getPackageName());
         try {
             mPendingIntent.send(mContext, 0, fillInIntent);
         } catch (PendingIntent.CanceledException e) {
             Log.i(TAG, "Unable to send remote input result", e);
+            MetricsLogger.action(mContext, MetricsProto.MetricsEvent.ACTION_REMOTE_INPUT_FAIL,
+                    mEntry.notification.getPackageName());
         }
     }
 
@@ -164,6 +172,8 @@
         mController.removeRemoteInput(mEntry);
         mEntry.remoteInputText = mEditText.getText();
         setVisibility(INVISIBLE);
+        MetricsLogger.action(mContext, MetricsProto.MetricsEvent.ACTION_REMOTE_INPUT_CLOSE,
+                mEntry.notification.getPackageName());
     }
 
     @Override
@@ -197,6 +207,10 @@
     }
 
     public void focus() {
+        MetricsLogger.action(mContext, MetricsProto.MetricsEvent.ACTION_REMOTE_INPUT_OPEN,
+                mEntry.notification.getPackageName());
+
+        setVisibility(VISIBLE);
         mController.addRemoteInput(mEntry);
         mEditText.setInnerFocusable(true);
         mEditText.mShowImeOnInputConnection = true;
@@ -250,6 +264,7 @@
             findScrollContainer();
             if (mScrollContainer != null) {
                 mScrollContainer.requestDisallowLongPress();
+                mScrollContainer.requestDisallowDismiss();
             }
         }
         return super.onInterceptTouchEvent(ev);
@@ -275,6 +290,63 @@
         }
     }
 
+    public boolean isActive() {
+        return mEditText.isFocused();
+    }
+
+    public void stealFocusFrom(RemoteInputView other) {
+        other.close();
+        setPendingIntent(other.mPendingIntent);
+        setRemoteInput(other.mRemoteInputs, other.mRemoteInput);
+        focus();
+    }
+
+    /**
+     * Tries to find an action in {@param actions} that matches the current pending intent
+     * of this view and updates its state to that of the found action
+     *
+     * @return true if a matching action was found, false otherwise
+     */
+    public boolean updatePendingIntentFromActions(Notification.Action[] actions) {
+        boolean found = false;
+        if (mPendingIntent == null || actions == null) {
+            return false;
+        }
+        Intent current = mPendingIntent.getIntent();
+        if (current == null) {
+            return false;
+        }
+
+        for (Notification.Action a : actions) {
+            RemoteInput[] inputs = a.getRemoteInputs();
+            if (a.actionIntent == null || inputs == null) {
+                continue;
+            }
+            Intent candidate = a.actionIntent.getIntent();
+            if (!current.filterEquals(candidate)) {
+                continue;
+            }
+
+            RemoteInput input = null;
+            for (RemoteInput i : inputs) {
+                if (i.getAllowFreeFormInput()) {
+                    input = i;
+                }
+            }
+            if (input == null) {
+                continue;
+            }
+            setPendingIntent(a.actionIntent);
+            setRemoteInput(inputs, input);
+            return true;
+        }
+        return false;
+    }
+
+    public PendingIntent getPendingIntent() {
+        return mPendingIntent;
+    }
+
     /**
      * An EditText that changes appearance based on whether it's focusable and becomes
      * un-focusable whenever the user navigates away from it or it becomes invisible.
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/UserSwitcherController.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/UserSwitcherController.java
index c82ba3b..6800772 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/UserSwitcherController.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/UserSwitcherController.java
@@ -119,7 +119,7 @@
         filter.addAction(Intent.ACTION_USER_REMOVED);
         filter.addAction(Intent.ACTION_USER_INFO_CHANGED);
         filter.addAction(Intent.ACTION_USER_SWITCHED);
-        filter.addAction(Intent.ACTION_USER_STOPPING);
+        filter.addAction(Intent.ACTION_USER_STOPPED);
         filter.addAction(Intent.ACTION_USER_UNLOCKED);
         mContext.registerReceiverAsUser(mReceiver, UserHandle.SYSTEM, filter,
                 null /* permission */, null /* scheduler */);
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/stack/NotificationChildrenContainer.java b/packages/SystemUI/src/com/android/systemui/statusbar/stack/NotificationChildrenContainer.java
index be98d7a..a1e89b7 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/stack/NotificationChildrenContainer.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/stack/NotificationChildrenContainer.java
@@ -139,7 +139,9 @@
         for (int i = 0; i < childCount; i++) {
             ExpandableNotificationRow child = mChildren.get(i);
             boolean isOverflow = i == overflowIndex;
-            child.setSingleLineWidthIndention(isOverflow ? mOverflowNumber.getMeasuredWidth() : 0);
+            child.setSingleLineWidthIndention(isOverflow && mOverflowNumber != null
+                    ? mOverflowNumber.getMeasuredWidth()
+                    : 0);
             child.measure(widthMeasureSpec, newHeightSpec);
             height += child.getMeasuredHeight();
 
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/stack/NotificationStackScrollLayout.java b/packages/SystemUI/src/com/android/systemui/statusbar/stack/NotificationStackScrollLayout.java
index 3e0f930..0a4dce8 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/stack/NotificationStackScrollLayout.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/stack/NotificationStackScrollLayout.java
@@ -23,6 +23,7 @@
 import android.animation.TimeAnimator;
 import android.animation.ValueAnimator;
 import android.animation.ValueAnimator.AnimatorUpdateListener;
+import android.annotation.FloatRange;
 import android.annotation.Nullable;
 import android.content.Context;
 import android.content.res.Configuration;
@@ -231,6 +232,7 @@
      * animating.
      */
     private boolean mOnlyScrollingInThisMotion;
+    private boolean mDisallowDismissInThisMotion;
     private boolean mInterceptDelegateEnabled;
     private boolean mDelegateToScrollView;
     private boolean mDisallowScrollingInThisMotion;
@@ -327,6 +329,8 @@
     };
     private PorterDuffXfermode mSrcMode = new PorterDuffXfermode(PorterDuff.Mode.SRC);
     private boolean mPulsing;
+    private boolean mDrawBackgroundAsSrc;
+    private boolean mFadedOut;
 
     public NotificationStackScrollLayout(Context context) {
         this(context, null);
@@ -439,7 +443,12 @@
     }
 
     public void setDrawBackgroundAsSrc(boolean asSrc) {
-        mBackgroundPaint.setXfermode(asSrc ? mSrcMode : null);
+        mDrawBackgroundAsSrc = asSrc;
+        updateSrcDrawing();
+    }
+
+    private void updateSrcDrawing() {
+        mBackgroundPaint.setXfermode(mDrawBackgroundAsSrc && !mFadedOut ? mSrcMode : null);
         invalidate();
     }
 
@@ -1023,7 +1032,8 @@
         if (!mIsBeingDragged
                 && !mExpandingNotification
                 && !mExpandedInThisMotion
-                && !mOnlyScrollingInThisMotion) {
+                && !mOnlyScrollingInThisMotion
+                && !mDisallowDismissInThisMotion) {
             horizontalSwipeWantsIt = mSwipeHelper.onTouchEvent(ev);
         }
         return horizontalSwipeWantsIt || scrollerWantsIt || expandWantsIt || super.onTouchEvent(ev);
@@ -1743,7 +1753,9 @@
     }
 
     private void applyCurrentBackgroundBounds() {
-        mScrimController.setExcludedBackgroundArea(mCurrentBounds);
+        if (!mFadedOut) {
+            mScrimController.setExcludedBackgroundArea(mCurrentBounds);
+        }
         invalidate();
     }
 
@@ -2003,7 +2015,8 @@
         if (!mIsBeingDragged
                 && !mExpandingNotification
                 && !mExpandedInThisMotion
-                && !mOnlyScrollingInThisMotion) {
+                && !mOnlyScrollingInThisMotion
+                && !mDisallowDismissInThisMotion) {
             swipeWantsIt = mSwipeHelper.onInterceptTouchEvent(ev);
         }
         return swipeWantsIt || scrollWantsIt || expandWantsIt || super.onInterceptTouchEvent(ev);
@@ -2031,6 +2044,7 @@
             mExpandedInThisMotion = false;
             mOnlyScrollingInThisMotion = !mScroller.isFinished();
             mDisallowScrollingInThisMotion = false;
+            mDisallowDismissInThisMotion = false;
             mTouchIsClick = true;
             mInitialTouchX = ev.getX();
             mInitialTouchY = ev.getY();
@@ -2695,6 +2709,11 @@
         removeLongPressCallback();
     }
 
+    @Override
+    public void requestDisallowDismiss() {
+        mDisallowDismissInThisMotion = true;
+    }
+
     public void removeLongPressCallback() {
         mSwipeHelper.removeLongPressCallback();
     }
@@ -3421,6 +3440,24 @@
         updateNotificationAnimationStates();
     }
 
+    public void setFadedOut(boolean fadingOut) {
+        if (fadingOut != mFadedOut) {
+            mFadedOut = fadingOut;
+            if (fadingOut) {
+                mScrimController.setExcludedBackgroundArea(null);
+            } else {
+                applyCurrentBackgroundBounds();
+            }
+            updateSrcDrawing();
+        }
+    }
+
+    @Override
+    public void setAlpha(@FloatRange(from = 0.0, to = 1.0) float alpha) {
+        super.setAlpha(alpha);
+        setFadedOut(alpha != 1.0f);
+    }
+
     /**
      * A listener that is notified when some child locations might have changed.
      */
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/stack/ScrollContainer.java b/packages/SystemUI/src/com/android/systemui/statusbar/stack/ScrollContainer.java
index a35465e..64efa69 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/stack/ScrollContainer.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/stack/ScrollContainer.java
@@ -33,4 +33,9 @@
      * Request that the view is made visible by scrolling to it.
      */
     void scrollTo(View v);
+
+    /**
+     * Request that the view does not dismiss for the current touch.
+     */
+    void requestDisallowDismiss();
 }
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/tv/TvStatusBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/tv/TvStatusBar.java
index f9202c4..27726af 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/tv/TvStatusBar.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/tv/TvStatusBar.java
@@ -189,8 +189,8 @@
     }
 
     @Override
-    public void requestTvPictureInPicture() {
-        PipManager.getInstance().requestTvPictureInPicture();
+    public void showTvPictureInPictureMenu() {
+        PipManager.getInstance().showTvPictureInPictureMenu();
     }
 
     @Override
@@ -224,8 +224,22 @@
         putComponent(TvStatusBar.class, this);
     }
 
+    /**
+     * Updates the visibility of the picture-in-picture.
+     */
+    public void updatePipVisibility(boolean visible) {
+        if (visible) {
+            mSystemUiVisibility |= View.TV_PICTURE_IN_PICTURE_VISIBLE;
+        } else {
+            mSystemUiVisibility &= ~View.TV_PICTURE_IN_PICTURE_VISIBLE;
+        }
+        notifyUiVisibilityChanged(mSystemUiVisibility);
+    }
+
+    /**
+     * Updates the visibility of the Recents
+     */
     public void updateRecentsVisibility(boolean visible) {
-        // Update the recents visibility flag
         if (visible) {
             mSystemUiVisibility |= View.RECENT_APPS_VISIBLE;
         } else {
diff --git a/packages/SystemUI/src/com/android/systemui/tv/pip/PipControlsView.java b/packages/SystemUI/src/com/android/systemui/tv/pip/PipControlsView.java
index d15799c..5614bf9 100644
--- a/packages/SystemUI/src/com/android/systemui/tv/pip/PipControlsView.java
+++ b/packages/SystemUI/src/com/android/systemui/tv/pip/PipControlsView.java
@@ -57,9 +57,9 @@
     final PipManager mPipManager = PipManager.getInstance();
     Listener mListener;
 
-    PipControlButtonView mFullButtonView;
-    PipControlButtonView mCloseButtonView;
-    PipControlButtonView mPlayPauseButtonView;
+    private PipControlButtonView mFullButtonView;
+    private PipControlButtonView mCloseButtonView;
+    private PipControlButtonView mPlayPauseButtonView;
 
     private boolean mHasFocus;
     private OnFocusChangeListener mOnChildFocusChangeListener;
diff --git a/packages/SystemUI/src/com/android/systemui/tv/pip/PipManager.java b/packages/SystemUI/src/com/android/systemui/tv/pip/PipManager.java
index d7efca7..74f0cd3 100644
--- a/packages/SystemUI/src/com/android/systemui/tv/pip/PipManager.java
+++ b/packages/SystemUI/src/com/android/systemui/tv/pip/PipManager.java
@@ -41,8 +41,10 @@
 
 import com.android.systemui.Prefs;
 import com.android.systemui.R;
-import com.android.systemui.recents.misc.SystemServicesProxy;
+import com.android.systemui.SystemUIApplication;
 import com.android.systemui.recents.misc.SystemServicesProxy.TaskStackListener;
+import com.android.systemui.recents.misc.SystemServicesProxy;
+import com.android.systemui.statusbar.tv.TvStatusBar;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -225,26 +227,14 @@
     }
 
     /**
-     * Request PIP.
-     * It could either start PIP if there's none, and show PIP menu otherwise.
+     * Shows the picture-in-picture menu if an activity is in picture-in-picture mode.
      */
-    public void requestTvPictureInPicture() {
-        if (DEBUG) Log.d(TAG, "requestTvPictureInPicture()");
-        if (!isPipShown()) {
-            startPip();
-        } else if (mState == STATE_PIP_OVERLAY) {
+    public void showTvPictureInPictureMenu() {
+        if (mState == STATE_PIP_OVERLAY) {
             resizePinnedStack(STATE_PIP_MENU);
         }
     }
 
-    private void startPip() {
-        try {
-            mActivityManager.moveTopActivityToPinnedStack(FULLSCREEN_WORKSPACE_STACK_ID, mPipBounds);
-        } catch (RemoteException|IllegalArgumentException e) {
-            Log.e(TAG, "moveTopActivityToPinnedStack failed", e);
-        }
-    }
-
     /**
      * Closes PIP (PIPed activity and PIP system UI).
      */
@@ -268,6 +258,7 @@
             mListeners.get(i).onPipActivityClosed();
         }
         mHandler.removeCallbacks(mClosePipRunnable);
+        updatePipVisibility(false);
     }
 
     /**
@@ -276,6 +267,9 @@
     void movePipToFullscreen() {
         mState = STATE_NO_PIP;
         mPipTaskId = TASK_ID_NO_PIP;
+        for (int i = mListeners.size() - 1; i >= 0; --i) {
+            mListeners.get(i).onMoveToFullscreen();
+        }
         resizePinnedStack(mState);
     }
 
@@ -622,6 +616,7 @@
             for (int i = mListeners.size() - 1; i >= 0; i--) {
                 mListeners.get(i).onPipEntered();
             }
+            updatePipVisibility(true);
         }
 
         @Override
@@ -635,11 +630,6 @@
         public void onPinnedStackAnimationEnded() {
             if (DEBUG) Log.d(TAG, "onPinnedStackAnimationEnded()");
             switch (mState) {
-                case STATE_NO_PIP:
-                    for (int i = mListeners.size() - 1; i >= 0; --i) {
-                        mListeners.get(i).onMoveToFullscreen();
-                    }
-                    break;
                 case STATE_PIP_OVERLAY:
                     if (!mPipRecentsOverlayManager.isRecentsShown()) {
                         showPipOverlay();
@@ -706,4 +696,11 @@
     public PipRecentsOverlayManager getPipRecentsOverlayManager() {
         return mPipRecentsOverlayManager;
     }
+
+    private void updatePipVisibility(boolean visible) {
+        TvStatusBar statusBar = ((SystemUIApplication) mContext).getComponent(TvStatusBar.class);
+        if (statusBar != null) {
+            statusBar.updatePipVisibility(visible);
+        }
+    }
 }
diff --git a/packages/SystemUI/src/com/android/systemui/tv/pip/PipRecentsControlsView.java b/packages/SystemUI/src/com/android/systemui/tv/pip/PipRecentsControlsView.java
index 9c806f7..df44dc1 100644
--- a/packages/SystemUI/src/com/android/systemui/tv/pip/PipRecentsControlsView.java
+++ b/packages/SystemUI/src/com/android/systemui/tv/pip/PipRecentsControlsView.java
@@ -18,14 +18,15 @@
 
 import android.animation.Animator;
 import android.animation.AnimatorInflater;
+import android.animation.AnimatorListenerAdapter;
 import android.animation.AnimatorSet;
 import android.content.Context;
 import android.graphics.Rect;
 import android.util.AttributeSet;
-import android.util.Log;
 import android.view.KeyEvent;
 import android.view.View;
 import android.view.View.OnFocusChangeListener;
+import android.widget.FrameLayout;
 
 import com.android.systemui.R;
 
@@ -34,9 +35,9 @@
 import static com.android.systemui.tv.pip.PipManager.PLAYBACK_STATE_UNAVAILABLE;
 
 /**
- * An extended version of {@link PipControlsView} that supports animation in Recents.
+ * An FrameLayout that contains {@link PipControlsView} with its scrim.
  */
-public class PipRecentsControlsView extends PipControlsView {
+public class PipRecentsControlsView extends FrameLayout {
     /**
      * An interface to listen user action.
      */
@@ -47,7 +48,11 @@
         abstract void onBackPressed();
     }
 
-    private AnimatorSet mFocusGainAnimatorSet;
+    final PipManager mPipManager = PipManager.getInstance();
+    private Listener mListener;
+    private PipControlsView mPipControlsView;
+    private View mScrim;
+    private Animator mFocusGainAnimator;
     private AnimatorSet mFocusLoseAnimatorSet;
 
     public PipRecentsControlsView(Context context) {
@@ -71,26 +76,20 @@
     public void onFinishInflate() {
         super.onFinishInflate();
 
-        int buttonsFocusGainAnim = R.anim.tv_pip_controls_buttons_in_recents_focus_gain_animation;
-        mFocusGainAnimatorSet = new AnimatorSet();
-        mFocusGainAnimatorSet.playTogether(
-                loadAnimator(this, R.anim.tv_pip_controls_in_recents_focus_gain_animation),
-                loadAnimator(mFullButtonView,buttonsFocusGainAnim),
-                loadAnimator(mPlayPauseButtonView, buttonsFocusGainAnim),
-                loadAnimator(mCloseButtonView, buttonsFocusGainAnim));
+        mPipControlsView = (PipControlsView) findViewById(R.id.pip_control_contents);
+        mScrim = findViewById(R.id.scrim);
 
-        int buttonsFocusLoseAnim = R.anim.tv_pip_controls_buttons_in_recents_focus_lose_animation;
+        mFocusGainAnimator = loadAnimator(mPipControlsView,
+                      R.anim.tv_pip_controls_in_recents_focus_gain_animation);
+
         mFocusLoseAnimatorSet = new AnimatorSet();
-        mFocusLoseAnimatorSet.playTogether(
-                loadAnimator(this, R.anim.tv_pip_controls_in_recents_focus_lose_animation),
-                loadAnimator(mFullButtonView, buttonsFocusLoseAnim),
-                loadAnimator(mPlayPauseButtonView, buttonsFocusLoseAnim),
-                loadAnimator(mCloseButtonView, buttonsFocusLoseAnim));
+        mFocusLoseAnimatorSet.playSequentially(
+                loadAnimator(mPipControlsView,
+                        R.anim.tv_pip_controls_in_recents_focus_lose_animation),
+                loadAnimator(mScrim, R.anim.tv_pip_controls_in_recents_scrim_fade_in_animation));
 
         Rect pipBounds = mPipManager.getRecentsFocusedPipBounds();
-        int pipControlsMarginTop = getContext().getResources().getDimensionPixelSize(
-                R.dimen.recents_tv_pip_controls_margin_top);
-        setPadding(0, pipBounds.bottom + pipControlsMarginTop, 0, 0);
+        setPadding(0, pipBounds.bottom, 0, 0);
     }
 
     private Animator loadAnimator(View view, int animatorResId) {
@@ -103,44 +102,53 @@
      * Starts focus gaining animation.
      */
     public void startFocusGainAnimation() {
-        if (mFocusLoseAnimatorSet.isStarted()) {
-            mFocusLoseAnimatorSet.cancel();
-        }
-        mFocusGainAnimatorSet.start();
+        // Hides the scrim view as soon as possible, before the PIP resize animation starts.
+        // If we don't, PIP will be moved down a bit and a gap between the scrim and PIP will be
+        // shown at the bottom of the PIP.
+        mScrim.setAlpha(0);
+        startAnimator(mFocusGainAnimator, mFocusLoseAnimatorSet);
     }
 
     /**
      * Starts focus losing animation.
      */
     public void startFocusLoseAnimation() {
-        if (mFocusGainAnimatorSet.isStarted()) {
-            mFocusGainAnimatorSet.cancel();
-        }
-        mFocusLoseAnimatorSet.start();
+        startAnimator(mFocusLoseAnimatorSet, mFocusGainAnimator);
     }
 
     /**
      * Resets the view to the initial state. (i.e. end of the focus gain)
      */
     public void reset() {
-        if (mFocusGainAnimatorSet.isStarted()) {
-            mFocusGainAnimatorSet.cancel();
-        }
-        if (mFocusLoseAnimatorSet.isStarted()) {
-            mFocusLoseAnimatorSet.cancel();
-        }
+        cancelAnimator(mFocusGainAnimator);
+        cancelAnimator(mFocusLoseAnimatorSet);
 
         // Reset to initial state (i.e. end of focused)
         requestFocus();
-        setTranslationY(0);
-        setScaleXY(mFullButtonView, 1);
-        setScaleXY(mPlayPauseButtonView, 1);
-        setScaleXY(mCloseButtonView, 1);
+        mPipControlsView.setTranslationY(0);
+        mPipControlsView.setScaleX(1);
+        mPipControlsView.setScaleY(1);
+        mScrim.setAlpha(0);
     }
 
-    private void setScaleXY(View view, float scale) {
-        view.setScaleX(scale);
-        view.setScaleY(scale);
+    private static void startAnimator(Animator animator, Animator previousAnimator) {
+        cancelAnimator(previousAnimator);
+        if (!animator.isStarted()) {
+            animator.start();
+        }
+    }
+
+    private static void cancelAnimator(Animator animator) {
+        if (animator.isStarted()) {
+            animator.cancel();
+        }
+    }
+
+    /**
+     * Sets listeners.
+     */
+    public void setListener(Listener listener) {
+        mPipControlsView.setListener(listener);
     }
 
     @Override
@@ -148,8 +156,8 @@
         if (!event.isCanceled()
                 && event.getKeyCode() == KeyEvent.KEYCODE_BACK
                 && event.getAction() == KeyEvent.ACTION_UP) {
-            if (mListener != null) {
-                ((PipRecentsControlsView.Listener) mListener).onBackPressed();
+            if (mPipControlsView.mListener != null) {
+                ((PipRecentsControlsView.Listener) mPipControlsView.mListener).onBackPressed();
             }
             return true;
         }
diff --git a/packages/SystemUI/src/com/android/systemui/tv/pip/PipRecentsOverlayManager.java b/packages/SystemUI/src/com/android/systemui/tv/pip/PipRecentsOverlayManager.java
index dd12360..fe5d8bc 100644
--- a/packages/SystemUI/src/com/android/systemui/tv/pip/PipRecentsOverlayManager.java
+++ b/packages/SystemUI/src/com/android/systemui/tv/pip/PipRecentsOverlayManager.java
@@ -134,7 +134,8 @@
      */
     public void requestFocus(boolean allowRecentsFocusable) {
         mRecentsView.setVisibility(allowRecentsFocusable ? View.VISIBLE : View.GONE);
-        if (!mIsPipRecentsOverlayShown || !mIsRecentsShown || mIsPipFocusedInRecent) {
+        if (!mIsPipRecentsOverlayShown || !mIsRecentsShown || mIsPipFocusedInRecent
+                || !mPipManager.isPipShown()) {
             return;
         }
         mIsPipFocusedInRecent = true;
@@ -153,7 +154,8 @@
      * This should be called only by {@link com.android.systemui.recents.tv.RecentsTvActivity}.
      */
     public void clearFocus() {
-        if (!mIsPipRecentsOverlayShown || !mIsRecentsShown || !mIsPipFocusedInRecent) {
+        if (!mIsPipRecentsOverlayShown || !mIsRecentsShown || !mIsPipFocusedInRecent
+                || !mPipManager.isPipShown()) {
             return;
         }
         if (!mRecentsView.hasFocus()) {
diff --git a/packages/SystemUI/src/com/android/systemui/usb/StorageNotification.java b/packages/SystemUI/src/com/android/systemui/usb/StorageNotification.java
index 2c53e29..36dd727 100644
--- a/packages/SystemUI/src/com/android/systemui/usb/StorageNotification.java
+++ b/packages/SystemUI/src/com/android/systemui/usb/StorageNotification.java
@@ -654,8 +654,9 @@
         intent.putExtra(PackageManager.EXTRA_MOVE_ID, move.moveId);
 
         final VolumeInfo vol = mStorageManager.findVolumeByQualifiedUuid(move.volumeUuid);
-        intent.putExtra(VolumeInfo.EXTRA_VOLUME_ID, vol.getId());
-
+        if (vol != null) {
+            intent.putExtra(VolumeInfo.EXTRA_VOLUME_ID, vol.getId());
+        }
         return PendingIntent.getActivityAsUser(mContext, move.moveId, intent,
                 PendingIntent.FLAG_CANCEL_CURRENT, null, UserHandle.CURRENT);
     }
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerBaseTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerBaseTest.java
index 60d33fa..38cac1e 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerBaseTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerBaseTest.java
@@ -111,6 +111,7 @@
         when(mMockTm.getDataEnabled(mSubId)).thenReturn(true);
         setDefaultSubId(mSubId);
         setSubscriptions(mSubId);
+        mNetworkController.handleSetUserSetupComplete(true);
         mMobileSignalController = mNetworkController.mMobileSignalControllers.get(mSubId);
         mPhoneStateListener = mMobileSignalController.mPhoneStateListener;
     }
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerDataTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerDataTest.java
index d5eca95..542c390 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerDataTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerDataTest.java
@@ -1,9 +1,9 @@
 package com.android.systemui.statusbar.policy;
 
+import android.net.NetworkCapabilities;
 import android.os.Looper;
 import android.telephony.TelephonyManager;
 import android.test.suitebuilder.annotation.SmallTest;
-
 import com.android.settingslib.net.DataUsageController;
 import org.mockito.Mockito;
 
@@ -99,6 +99,29 @@
                 TelephonyIcons.QS_DATA_4G);
     }
 
+    public void testDataDisabledIcon() {
+        setupNetworkController();
+        Mockito.when(mMockTm.getDataEnabled(mSubId)).thenReturn(false);
+        setupDefaultSignal();
+        updateDataConnectionState(TelephonyManager.DATA_DISCONNECTED, 0);
+        setConnectivity(NetworkCapabilities.TRANSPORT_CELLULAR, false, false);
+
+        verifyDataIndicators(TelephonyIcons.ICON_DATA_DISABLED,
+                TelephonyIcons.QS_ICON_DATA_DISABLED);
+    }
+
+    public void testDataDisabledIcon_UserNotSetup() {
+        setupNetworkController();
+        Mockito.when(mMockTm.getDataEnabled(mSubId)).thenReturn(false);
+        setupDefaultSignal();
+        updateDataConnectionState(TelephonyManager.DATA_DISCONNECTED, 0);
+        setConnectivity(NetworkCapabilities.TRANSPORT_CELLULAR, false, false);
+        mNetworkController.handleSetUserSetupComplete(false);
+
+        // Don't show the X until the device is setup.
+        verifyDataIndicators(0, 0);
+    }
+
     public void test4gDataIconConfigChange() {
         setupDefaultSignal();
         updateDataConnectionState(TelephonyManager.DATA_CONNECTED,
@@ -145,7 +168,6 @@
         verifyLastMobileDataIndicators(true, DEFAULT_SIGNAL_STRENGTH, DEFAULT_ICON);
         verifyLastQsMobileDataIndicators(true, DEFAULT_QS_SIGNAL_STRENGTH,
                 DEFAULT_QS_ICON, in, out);
-
     }
 
     private void verifyDataIndicators(int dataIcon, int qsDataIcon) {
diff --git a/packages/WallpaperBackup/src/com/android/wallpaperbackup/WallpaperBackupAgent.java b/packages/WallpaperBackup/src/com/android/wallpaperbackup/WallpaperBackupAgent.java
index 2f79079..a3ea592 100644
--- a/packages/WallpaperBackup/src/com/android/wallpaperbackup/WallpaperBackupAgent.java
+++ b/packages/WallpaperBackup/src/com/android/wallpaperbackup/WallpaperBackupAgent.java
@@ -22,22 +22,28 @@
 import android.app.backup.BackupDataOutput;
 import android.app.backup.FullBackupDataOutput;
 import android.content.Context;
+import android.graphics.Rect;
 import android.os.Environment;
 import android.os.ParcelFileDescriptor;
 import android.os.UserHandle;
 import android.system.Os;
 import android.util.Slog;
+import android.util.Xml;
+
+import org.xmlpull.v1.XmlPullParser;
 
 import java.io.File;
+import java.io.FileInputStream;
 import java.io.FileOutputStream;
 import java.io.IOException;
+import java.nio.charset.StandardCharsets;
 
 public class WallpaperBackupAgent extends BackupAgent {
     private static final String TAG = "WallpaperBackup";
     private static final boolean DEBUG = false;
 
     // NB: must be kept in sync with WallpaperManagerService but has no
-    // compile-time visiblity.
+    // compile-time visibility.
 
     // Target filenames within the system's wallpaper directory
     static final String WALLPAPER = "wallpaper_orig";
@@ -107,11 +113,7 @@
     }
 
     // We use the default onRestoreFile() implementation that will recreate our stage files,
-    // then postprocess in onRestoreFinished() to move them on top of the live data.
-    //
-    // NOTE: this relies on our local files dir being on the same filesystem as the live
-    // system wallpaper data.  If this is not the case then an actual copy operation will
-    // be needed.
+    // then post-process in onRestoreFinished() to apply the new wallpaper.
     @Override
     public void onRestoreFinished() {
         if (DEBUG) {
@@ -125,19 +127,25 @@
             // to back up the original image on the source device.
             if (imageStage.exists()) {
                 if (DEBUG) {
-                    Slog.v(TAG, "Got restored wallpaper; renaming into place");
+                    Slog.v(TAG, "Got restored wallpaper; applying");
                 }
-                // Rename the image file into place last because that is the trigger for
-                // the wallpaper observer to generate a new crop/scale
-                Os.rename(infoStage.getCanonicalPath(), mWallpaperInfo.getCanonicalPath());
-                Os.rename(imageStage.getCanonicalPath(), mWallpaperFile.getCanonicalPath());
+
+                // Parse the restored info file to find the crop hint.  Note that this currently
+                // relies on a priori knowledge of the wallpaper info file schema.
+                Rect cropHint = parseCropHint(infoStage);
+                if (cropHint != null) {
+                    if (DEBUG) {
+                        Slog.v(TAG, "Restored crop hint " + cropHint + "; now writing data");
+                    }
+                    WallpaperManager wm = getSystemService(WallpaperManager.class);
+                    try (FileInputStream in = new FileInputStream(imageStage)) {
+                        wm.setStream(in, cropHint, true, WallpaperManager.FLAG_SYSTEM);
+                    } finally {} // auto-closes 'in'
+                }
             }
         } catch (Exception e) {
             Slog.e(TAG, "Unable to restore wallpaper: " + e.getMessage());
-            mWm.clearWallpaper(WallpaperManager.FLAG_SYSTEM, UserHandle.USER_SYSTEM);
         } finally {
-            // These "should" not exist because of the renames, but make sure
-            // in case of errors/exceptions/etc.
             if (DEBUG) {
                 Slog.v(TAG, "Removing restore stage files");
             }
@@ -146,8 +154,41 @@
         }
     }
 
+    private Rect parseCropHint(File wallpaperInfo) {
+        Rect cropHint = new Rect();
+        try (FileInputStream stream = new FileInputStream(wallpaperInfo)) {
+            XmlPullParser parser = Xml.newPullParser();
+            parser.setInput(stream, StandardCharsets.UTF_8.name());
+
+            int type;
+            do {
+                type = parser.next();
+                if (type == XmlPullParser.START_TAG) {
+                    String tag = parser.getName();
+                    if ("wp".equals(tag)) {
+                        cropHint.left = getAttributeInt(parser, "cropLeft", 0);
+                        cropHint.top = getAttributeInt(parser, "cropTop", 0);
+                        cropHint.right = getAttributeInt(parser, "cropRight", 0);
+                        cropHint.bottom = getAttributeInt(parser, "cropBottom", 0);
+                    }
+                }
+            } while (type != XmlPullParser.END_DOCUMENT);
+        } catch (Exception e) {
+            // Whoops; can't process the info file at all.  Report failure.
+            Slog.w(TAG, "Failed to parse restored metadata: " + e.getMessage());
+            return null;
+        }
+
+        return cropHint;
+    }
+
+    private int getAttributeInt(XmlPullParser parser, String name, int defValue) {
+        final String value = parser.getAttributeValue(null, name);
+        return (value == null) ? defValue : Integer.parseInt(value);
+    }
+
     //
-    // Key/value API: abstract, so required, but not used
+    // Key/value API: abstract, therefore required; but not used
     //
 
     @Override
diff --git a/proto/src/metrics_constants.proto b/proto/src/metrics_constants.proto
index 7b3fd66..c417fe8 100644
--- a/proto/src/metrics_constants.proto
+++ b/proto/src/metrics_constants.proto
@@ -2169,6 +2169,28 @@
     // User blacklisted an app for Data Saver mode; action pass package name of app.
     ACTION_DATA_SAVER_BLACKLIST = 396;
 
+    // User opened a remote input view associated with a notification. Passes package name of app
+    // that posted the notification. Note that this can also happen transiently during notification
+    // reinflation.
+    ACTION_REMOTE_INPUT_OPEN = 397;
+
+    // User attempt to send data through a remote input view associated with a notification.
+    // Passes package name of app that posted the notification. May succeed or fail.
+    ACTION_REMOTE_INPUT_SEND = 398;
+
+    // Failed attempt to send data through a remote input view associated with a
+    // notification. Passes package name of app that posted the notification.
+    ACTION_REMOTE_INPUT_FAIL = 399;
+
+    // User closed a remote input view associated with a notification. Passes package name of app
+    // that posted the notification. Note that this can also happen transiently during notification
+    // reinflation.
+    ACTION_REMOTE_INPUT_CLOSE = 400;
+
+    // OPEN: Settings > Accounts > Work profile settings
+    // CATEGORY: SETTINGS
+    ACCOUNTS_WORK_PROFILE_SETTINGS = 401;
+
     // Add new aosp constants above this line.
     // END OF AOSP CONSTANTS
   }
diff --git a/services/accessibility/java/com/android/server/accessibility/AccessibilityManagerService.java b/services/accessibility/java/com/android/server/accessibility/AccessibilityManagerService.java
index 1b85016..e1695e0 100644
--- a/services/accessibility/java/com/android/server/accessibility/AccessibilityManagerService.java
+++ b/services/accessibility/java/com/android/server/accessibility/AccessibilityManagerService.java
@@ -151,7 +151,10 @@
 
     private static final int WINDOW_ID_UNKNOWN = -1;
 
-    private static int sIdCounter = 0;
+    // Each service has an ID. Also provide one for magnification gesture handling
+    public static final int MAGNIFICATION_GESTURE_HANDLER_ID = 0;
+
+    private static int sIdCounter = MAGNIFICATION_GESTURE_HANDLER_ID + 1;
 
     private static int sNextWindowId;
 
@@ -183,8 +186,6 @@
 
     private MagnificationController mMagnificationController;
 
-    private boolean mUnregisterMagnificationOnReset;
-
     private InteractionBridge mInteractionBridge;
 
     private AlertDialog mEnableTouchExplorationDialog;
@@ -784,11 +785,6 @@
             float scale, float centerX, float centerY) {
         synchronized (mLock) {
             notifyMagnificationChangedLocked(region, scale, centerX, centerY);
-
-            if (mUnregisterMagnificationOnReset && scale == 1.0f) {
-                mUnregisterMagnificationOnReset = false;
-                mMagnificationController.unregister();
-            }
         }
     }
 
@@ -1249,8 +1245,8 @@
     private void updateServicesLocked(UserState userState) {
         Map<ComponentName, Service> componentNameToServiceMap =
                 userState.mComponentNameToServiceMap;
-        boolean isUnlocked = mContext.getSystemService(UserManager.class)
-                .isUserUnlocked(userState.mUserId);
+        boolean isUnlockingOrUnlocked = mContext.getSystemService(UserManager.class)
+                .isUserUnlockingOrUnlocked(userState.mUserId);
 
         for (int i = 0, count = userState.mInstalledServices.size(); i < count; i++) {
             AccessibilityServiceInfo installedService = userState.mInstalledServices.get(i);
@@ -1260,7 +1256,7 @@
             Service service = componentNameToServiceMap.get(componentName);
 
             // Ignore non-encryption-aware services until user is unlocked
-            if (!isUnlocked && !installedService.isDirectBootAware()) {
+            if (!isUnlockingOrUnlocked && !installedService.isDirectBootAware()) {
                 Slog.d(LOG_TAG, "Ignoring non-encryption-aware service " + componentName);
                 continue;
             }
@@ -1736,25 +1732,17 @@
     }
 
     private void updateMagnificationLocked(UserState userState) {
-        final int userId = userState.mUserId;
-        if (userId == mCurrentUserId && mMagnificationController != null) {
-            if (userState.mIsDisplayMagnificationEnabled ||
-                    userHasMagnificationServicesLocked(userState)) {
-                mMagnificationController.setUserId(userState.mUserId);
-            } else {
-                // If the user no longer has any magnification-controlling
-                // services and is not using magnification gestures, then
-                // reset the state to normal.
-                if (mMagnificationController.resetIfNeeded(true)) {
-                    // Animations are still running, so wait until we receive a
-                    // callback verifying that we've reset magnification.
-                    mUnregisterMagnificationOnReset = true;
-                } else {
-                    mUnregisterMagnificationOnReset = false;
-                    mMagnificationController.unregister();
-                    mMagnificationController = null;
-                }
-            }
+        if (userState.mUserId != mCurrentUserId) {
+            return;
+        }
+
+        if (userState.mIsDisplayMagnificationEnabled ||
+                userHasMagnificationServicesLocked(userState)) {
+            // Initialize the magnification controller if necessary
+            getMagnificationController();
+            mMagnificationController.register();
+        } else if (mMagnificationController != null) {
+            mMagnificationController.unregister();
         }
     }
 
@@ -2152,7 +2140,6 @@
         synchronized (mLock) {
             if (mMagnificationController == null) {
                 mMagnificationController = new MagnificationController(mContext, this, mLock);
-                mMagnificationController.register();
                 mMagnificationController.setUserId(mCurrentUserId);
             }
             return mMagnificationController;
@@ -2886,7 +2873,7 @@
             final long identity = Binder.clearCallingIdentity();
             try {
                 final Region region = Region.obtain();
-                getMagnificationController().getMagnifiedRegion(region);
+                getMagnificationController().getMagnificationRegion(region);
                 return region;
             } finally {
                 Binder.restoreCallingIdentity(identity);
@@ -2957,7 +2944,7 @@
             final long identity = Binder.clearCallingIdentity();
             try {
                 return getMagnificationController().setScaleAndCenter(
-                        scale, centerX, centerY, animate);
+                        scale, centerX, centerY, animate, mId);
             } finally {
                 Binder.restoreCallingIdentity(identity);
             }
@@ -3090,10 +3077,12 @@
                     userState.mInstalledServices.remove(mAccessibilityServiceInfo);
                     userState.mEnabledServices.remove(mComponentName);
                     userState.destroyUiAutomationService();
-                    if (readConfigurationForUserStateLocked(userState)) {
-                        onUserStateChangedLocked(userState);
-                    }
+                    readConfigurationForUserStateLocked(userState);
                 }
+                if (mId == getMagnificationController().getIdOfLastServiceToMagnify()) {
+                    getMagnificationController().resetIfNeeded(true);
+                }
+                onUserStateChangedLocked(userState);
             }
         }
 
diff --git a/services/accessibility/java/com/android/server/accessibility/MagnificationController.java b/services/accessibility/java/com/android/server/accessibility/MagnificationController.java
index f1b3722..027b6e2 100644
--- a/services/accessibility/java/com/android/server/accessibility/MagnificationController.java
+++ b/services/accessibility/java/com/android/server/accessibility/MagnificationController.java
@@ -17,6 +17,7 @@
 package com.android.server.accessibility;
 
 import com.android.internal.R;
+import com.android.internal.annotations.GuardedBy;
 import com.android.internal.os.SomeArgs;
 import com.android.server.LocalServices;
 
@@ -60,6 +61,8 @@
 
     private static final int DEFAULT_SCREEN_MAGNIFICATION_AUTO_UPDATE = 1;
 
+    private static final int INVALID_ID = -1;
+
     private static final float DEFAULT_MAGNIFICATION_SCALE = 2.0f;
 
     private static final float MIN_SCALE = 1.0f;
@@ -80,9 +83,8 @@
      */
     private final MagnificationSpec mCurrentMagnificationSpec = MagnificationSpec.obtain();
 
-    private final Region mMagnifiedRegion = Region.obtain();
-    private final Region mAvailableRegion = Region.obtain();
-    private final Rect mMagnifiedBounds = new Rect();
+    private final Region mMagnificationRegion = Region.obtain();
+    private final Rect mMagnificationBounds = new Rect();
 
     private final Rect mTempRect = new Rect();
     private final Rect mTempRect1 = new Rect();
@@ -97,35 +99,67 @@
 
     private int mUserId;
 
+    private int mIdOfLastServiceToMagnify = INVALID_ID;
+
+    // Flag indicating that we are registered with window manager.
+    private boolean mRegistered;
+
+    private boolean mUnregisterPending;
+
     public MagnificationController(Context context, AccessibilityManagerService ams, Object lock) {
         mAms = ams;
         mContentResolver = context.getContentResolver();
         mScreenStateObserver = new ScreenStateObserver(context, this);
         mWindowStateObserver = new WindowStateObserver(context, this);
-        mSpecAnimationBridge = new SpecAnimationBridge(context);
         mLock = lock;
+        mSpecAnimationBridge = new SpecAnimationBridge(context, mLock);
     }
 
     /**
-     * Registers magnification-related observers.
+     * Start tracking the magnification region for services that control magnification and the
+     * magnification gesture handler.
+     *
+     * This tracking imposes a cost on the system, so we avoid tracking this data
+     * unless it's required.
      */
     public void register() {
-        mScreenStateObserver.register();
-        mWindowStateObserver.register();
-
-        // Obtain initial state.
-        mWindowStateObserver.getRegions(mMagnifiedRegion, mAvailableRegion);
-        mMagnifiedRegion.getBounds(mMagnifiedBounds);
+        synchronized (mLock) {
+            if (!mRegistered) {
+                mScreenStateObserver.register();
+                mWindowStateObserver.register();
+                mSpecAnimationBridge.setEnabled(true);
+                // Obtain initial state.
+                mWindowStateObserver.getMagnificationRegion(mMagnificationRegion);
+                mMagnificationRegion.getBounds(mMagnificationBounds);
+                mRegistered = true;
+            }
+        }
     }
 
     /**
-     * Unregisters magnification-related observers.
+     * Stop requiring tracking the magnification region. We may remain registered while we
+     * reset magnification.
      */
     public void unregister() {
-        mSpecAnimationBridge.cancel();
+        synchronized (mLock) {
+            if (!isMagnifying()) {
+                unregisterInternalLocked();
+            } else {
+                mUnregisterPending = true;
+                resetLocked(true);
+            }
+        }
+    }
 
-        mScreenStateObserver.unregister();
-        mWindowStateObserver.unregister();
+    private void unregisterInternalLocked() {
+        if (mRegistered) {
+            mSpecAnimationBridge.setEnabled(false);
+            mScreenStateObserver.unregister();
+            mWindowStateObserver.unregister();
+            mMagnificationRegion.setEmpty();
+            mRegistered = false;
+        }
+        mUnregisterPending = false;
     }
 
     /**
@@ -137,24 +171,22 @@
     }
 
     /**
-     * Sets the magnified and available regions.
+     * Update our copy of the current magnification region
      *
      * @param magnified the magnified region
-     * @param available the region available for magnification
      * @param updateSpec {@code true} to update the scale and center based on
      *                   the region bounds, {@code false} to leave them as-is
      */
-    private void setMagnifiedRegion(Region magnified, Region available, boolean updateSpec) {
+    private void onMagnificationRegionChanged(Region magnified, boolean updateSpec) {
         synchronized (mLock) {
             boolean magnificationChanged = false;
             boolean boundsChanged = false;
 
-            if (!mMagnifiedRegion.equals(magnified)) {
-                mMagnifiedRegion.set(magnified);
-                mMagnifiedRegion.getBounds(mMagnifiedBounds);
+            if (!mMagnificationRegion.equals(magnified)) {
+                mMagnificationRegion.set(magnified);
+                mMagnificationRegion.getBounds(mMagnificationBounds);
                 boundsChanged = true;
             }
-            mAvailableRegion.set(available);
             if (updateSpec) {
                 final MagnificationSpec sentSpec = mSpecAnimationBridge.mSentMagnificationSpec;
                 final float scale = sentSpec.scale;
@@ -162,12 +194,12 @@
                 final float offsetY = sentSpec.offsetY;
 
                 // Compute the new center and update spec as needed.
-                final float centerX = (mMagnifiedBounds.width() / 2.0f
-                        + mMagnifiedBounds.left - offsetX) / scale;
-                final float centerY = (mMagnifiedBounds.height() / 2.0f
-                        + mMagnifiedBounds.top - offsetY) / scale;
+                final float centerX = (mMagnificationBounds.width() / 2.0f
+                        + mMagnificationBounds.left - offsetX) / scale;
+                final float centerY = (mMagnificationBounds.height() / 2.0f
+                        + mMagnificationBounds.top - offsetY) / scale;
                 magnificationChanged = setScaleAndCenterLocked(
-                        scale, centerX, centerY, false);
+                        scale, centerX, centerY, false, INVALID_ID);
             }
 
             // If magnification changed we already notified for the change.
@@ -178,7 +210,7 @@
     }
 
     /**
-     * Returns whether the magnified region contains the specified
+     * Returns whether the magnification region contains the specified
      * screen-relative coordinates.
      *
      * @param x the screen-relative X coordinate to check
@@ -186,51 +218,36 @@
      * @return {@code true} if the coordinate is contained within the
      *         magnified region, or {@code false} otherwise
      */
-    public boolean magnifiedRegionContains(float x, float y) {
+    public boolean magnificationRegionContains(float x, float y) {
         synchronized (mLock) {
-            return mMagnifiedRegion.contains((int) x, (int) y);
-        }
-    }
-
-    /**
-     * Returns whether the region available for magnification contains the
-     * specified screen-relative coordinates.
-     *
-     * @param x the screen-relative X coordinate to check
-     * @param y the screen-relative Y coordinate to check
-     * @return {@code true} if the coordinate is contained within the
-     *         region available for magnification, or {@code false} otherwise
-     */
-    private boolean availableRegionContains(float x, float y) {
-        synchronized (mLock) {
-            return mAvailableRegion.contains((int) x, (int) y);
+            return mMagnificationRegion.contains((int) x, (int) y);
         }
     }
 
     /**
      * Populates the specified rect with the screen-relative bounds of the
-     * magnified region. If magnification is not enabled, the returned
+     * magnification region. If magnification is not enabled, the returned
      * bounds will be empty.
      *
      * @param outBounds rect to populate with the bounds of the magnified
      *                  region
      */
-    public void getMagnifiedBounds(@NonNull Rect outBounds) {
+    public void getMagnificationBounds(@NonNull Rect outBounds) {
         synchronized (mLock) {
-            outBounds.set(mMagnifiedBounds);
+            outBounds.set(mMagnificationBounds);
         }
     }
 
     /**
-     * Populates the specified region with the screen-relative magnified
+     * Populates the specified region with the screen-relative magnification
      * region. If magnification is not enabled, then the returned region
      * will be empty.
      *
      * @param outRegion the region to populate
      */
-    public void getMagnifiedRegion(@NonNull Region outRegion) {
+    public void getMagnificationRegion(@NonNull Region outRegion) {
         synchronized (mLock) {
-            outRegion.set(mMagnifiedRegion);
+            outRegion.set(mMagnificationRegion);
         }
     }
 
@@ -263,8 +280,8 @@
      */
     public float getCenterX() {
         synchronized (mLock) {
-            return  (mMagnifiedBounds.width() / 2.0f
-                    + mMagnifiedBounds.left - getOffsetX()) / getScale();
+            return (mMagnificationBounds.width() / 2.0f
+                    + mMagnificationBounds.left - getOffsetX()) / getScale();
         }
     }
 
@@ -286,8 +303,8 @@
      */
     public float getCenterY() {
         synchronized (mLock) {
-            return (mMagnifiedBounds.height() / 2.0f
-                    + mMagnifiedBounds.top - getOffsetY()) / getScale();
+            return (mMagnificationBounds.height() / 2.0f
+                    + mMagnificationBounds.top - getOffsetY()) / getScale();
         }
     }
 
@@ -335,17 +352,25 @@
      */
     public boolean reset(boolean animate) {
         synchronized (mLock) {
-            final MagnificationSpec spec = mCurrentMagnificationSpec;
-            final boolean changed = !spec.isNop();
-            if (changed) {
-                spec.clear();
-                onMagnificationChangedLocked();
-            }
-            mSpecAnimationBridge.updateSentSpec(spec, animate);
-            return changed;
+            return resetLocked(animate);
         }
     }
 
+    private boolean resetLocked(boolean animate) {
+        if (!mRegistered) {
+            return false;
+        }
+        final MagnificationSpec spec = mCurrentMagnificationSpec;
+        final boolean changed = !spec.isNop();
+        if (changed) {
+            spec.clear();
+            onMagnificationChangedLocked();
+        }
+        mIdOfLastServiceToMagnify = INVALID_ID;
+        mSpecAnimationBridge.updateSentSpec(spec, animate);
+        return changed;
+    }
+
     /**
      * Scales the magnified region around the specified pivot point,
      * optionally animating the transition. If animation is disabled, the
@@ -356,16 +381,20 @@
      * @param pivotY the screen-relative Y coordinate around which to scale
      * @param animate {@code true} to animate the transition, {@code false}
      *                to transition immediately
+     * @param id the ID of the service requesting the change
      * @return {@code true} if the magnification spec changed, {@code false} if
      *         the spec did not change
      */
-    public boolean setScale(float scale, float pivotX, float pivotY, boolean animate) {
+    public boolean setScale(float scale, float pivotX, float pivotY, boolean animate, int id) {
         synchronized (mLock) {
+            if (!mRegistered) {
+                return false;
+            }
             // Constrain scale immediately for use in the pivot calculations.
             scale = MathUtils.constrain(scale, MIN_SCALE, MAX_SCALE);
 
             final Rect viewport = mTempRect;
-            mMagnifiedRegion.getBounds(viewport);
+            mMagnificationRegion.getBounds(viewport);
             final MagnificationSpec spec = mCurrentMagnificationSpec;
             final float oldScale = spec.scale;
             final float oldCenterX = (viewport.width() / 2.0f - spec.offsetX) / oldScale;
@@ -376,7 +405,8 @@
             final float offsetY = (oldCenterY - normPivotY) * (oldScale / scale);
             final float centerX = normPivotX + offsetX;
             final float centerY = normPivotY + offsetY;
-            return setScaleAndCenterLocked(scale, centerX, centerY, animate);
+            mIdOfLastServiceToMagnify = id;
+            return setScaleAndCenterLocked(scale, centerX, centerY, animate, id);
         }
     }
 
@@ -390,12 +420,16 @@
      *                center
      * @param animate {@code true} to animate the transition, {@code false}
      *                to transition immediately
+     * @param id the ID of the service requesting the change
      * @return {@code true} if the magnification spec changed, {@code false} if
      *         the spec did not change
      */
-    public boolean setCenter(float centerX, float centerY, boolean animate) {
+    public boolean setCenter(float centerX, float centerY, boolean animate, int id) {
         synchronized (mLock) {
-            return setScaleAndCenterLocked(Float.NaN, centerX, centerY, animate);
+            if (!mRegistered) {
+                return false;
+            }
+            return setScaleAndCenterLocked(Float.NaN, centerX, centerY, animate, id);
         }
     }
 
@@ -411,19 +445,27 @@
      *                center and scale, or {@link Float#NaN} to leave unchanged
      * @param animate {@code true} to animate the transition, {@code false}
      *                to transition immediately
+     * @param id the ID of the service requesting the change
      * @return {@code true} if the magnification spec changed, {@code false} if
      *         the spec did not change
      */
-    public boolean setScaleAndCenter(float scale, float centerX, float centerY, boolean animate) {
+    public boolean setScaleAndCenter(
+            float scale, float centerX, float centerY, boolean animate, int id) {
         synchronized (mLock) {
-            return setScaleAndCenterLocked(scale, centerX, centerY, animate);
+            if (!mRegistered) {
+                return false;
+            }
+            return setScaleAndCenterLocked(scale, centerX, centerY, animate, id);
         }
     }
 
     private boolean setScaleAndCenterLocked(float scale, float centerX, float centerY,
-            boolean animate) {
+            boolean animate, int id) {
         final boolean changed = updateMagnificationSpecLocked(scale, centerX, centerY);
         mSpecAnimationBridge.updateSentSpec(mCurrentMagnificationSpec, animate);
+        if (isMagnifying() && (id != INVALID_ID)) {
+            mIdOfLastServiceToMagnify = id;
+        }
         return changed;
     }
 
@@ -432,22 +474,42 @@
      *
      * @param offsetX the amount in pixels to offset the X center
      * @param offsetY the amount in pixels to offset the Y center
+     * @param id the ID of the service requesting the change
      */
-    public void offsetMagnifiedRegionCenter(float offsetX, float offsetY) {
+    public void offsetMagnifiedRegionCenter(float offsetX, float offsetY, int id) {
         synchronized (mLock) {
+            if (!mRegistered) {
+                return;
+            }
+
             final MagnificationSpec currSpec = mCurrentMagnificationSpec;
             final float nonNormOffsetX = currSpec.offsetX - offsetX;
             currSpec.offsetX = MathUtils.constrain(nonNormOffsetX, getMinOffsetXLocked(), 0);
             final float nonNormOffsetY = currSpec.offsetY - offsetY;
             currSpec.offsetY = MathUtils.constrain(nonNormOffsetY, getMinOffsetYLocked(), 0);
+            if (id != INVALID_ID) {
+                mIdOfLastServiceToMagnify = id;
+            }
             mSpecAnimationBridge.updateSentSpec(currSpec, false);
         }
     }
 
+    /**
+     * Get the ID of the last service that changed the magnification spec.
+     *
+     * @return The id
+     */
+    public int getIdOfLastServiceToMagnify() {
+        return mIdOfLastServiceToMagnify;
+    }
+
     private void onMagnificationChangedLocked() {
         mAms.onMagnificationStateChanged();
-        mAms.notifyMagnificationChanged(mMagnifiedRegion,
+        mAms.notifyMagnificationChanged(mMagnificationRegion,
                 getScale(), getCenterX(), getCenterY());
+        if (mUnregisterPending && !isMagnifying()) {
+            unregisterInternalLocked();
+        }
     }
 
     /**
@@ -503,8 +565,8 @@
             scale = getScale();
         }
 
-        // Ensure requested center is within the available region.
-        if (!availableRegionContains(centerX, centerY)) {
+        // Ensure requested center is within the magnification region.
+        if (!magnificationRegionContains(centerX, centerY)) {
             return false;
         }
 
@@ -518,16 +580,16 @@
             changed = true;
         }
 
-        final float nonNormOffsetX = mMagnifiedBounds.width() / 2.0f
-                + mMagnifiedBounds.left - centerX * scale;
+        final float nonNormOffsetX = mMagnificationBounds.width() / 2.0f
+                + mMagnificationBounds.left - centerX * scale;
         final float offsetX = MathUtils.constrain(nonNormOffsetX, getMinOffsetXLocked(), 0);
         if (Float.compare(currSpec.offsetX, offsetX) != 0) {
             currSpec.offsetX = offsetX;
             changed = true;
         }
 
-        final float nonNormOffsetY = mMagnifiedBounds.height() / 2.0f
-                + mMagnifiedBounds.top - centerY * scale;
+        final float nonNormOffsetY = mMagnificationBounds.height() / 2.0f
+                + mMagnificationBounds.top - centerY * scale;
         final float offsetY = MathUtils.constrain(nonNormOffsetY, getMinOffsetYLocked(), 0);
         if (Float.compare(currSpec.offsetY, offsetY) != 0) {
             currSpec.offsetY = offsetY;
@@ -542,12 +604,12 @@
     }
 
     private float getMinOffsetXLocked() {
-        final float viewportWidth = mMagnifiedBounds.width();
+        final float viewportWidth = mMagnificationBounds.width();
         return viewportWidth - viewportWidth * mCurrentMagnificationSpec.scale;
     }
 
     private float getMinOffsetYLocked() {
-        final float viewportHeight = mMagnifiedBounds.height();
+        final float viewportHeight = mMagnificationBounds.height();
         return viewportHeight - viewportHeight * mCurrentMagnificationSpec.scale;
     }
 
@@ -595,7 +657,7 @@
         final float scale = getSentScale();
         final float offsetX = getSentOffsetX();
         final float offsetY = getSentOffsetY();
-        getMagnifiedBounds(outFrame);
+        getMagnificationBounds(outFrame);
         outFrame.offset((int) -offsetX, (int) -offsetY);
         outFrame.scale(1.0f / scale);
     }
@@ -603,7 +665,7 @@
     private void requestRectangleOnScreen(int left, int top, int right, int bottom) {
         synchronized (mLock) {
             final Rect magnifiedFrame = mTempRect;
-            getMagnifiedBounds(magnifiedFrame);
+            getMagnificationBounds(magnifiedFrame);
             if (!magnifiedFrame.intersects(left, top, right, bottom)) {
                 return;
             }
@@ -640,7 +702,7 @@
             }
 
             final float scale = getScale();
-            offsetMagnifiedRegionCenter(scrollX * scale, scrollY * scale);
+            offsetMagnifiedRegionCenter(scrollX * scale, scrollY * scale, INVALID_ID);
         }
     }
 
@@ -656,7 +718,7 @@
 
         /**
          * The magnification spec that was sent to the window manager. This should
-         * only be accessed and modified on the main (e.g. animation) thread.
+         * only be accessed with the lock held.
          */
         private final MagnificationSpec mSentMagnificationSpec = MagnificationSpec.obtain();
 
@@ -667,8 +729,13 @@
         private final ValueAnimator mTransformationAnimator;
 
         private final long mMainThreadId;
+        private final Object mLock;
 
-        private SpecAnimationBridge(Context context) {
+        @GuardedBy("mLock")
+        private boolean mEnabled = false;
+
+        private SpecAnimationBridge(Context context, Object lock) {
+            mLock = lock;
             final Looper mainLooper = context.getMainLooper();
             mMainThreadId = mainLooper.getThread().getId();
 
@@ -685,9 +752,19 @@
             mTransformationAnimator.setInterpolator(new DecelerateInterpolator(2.5f));
         }
 
-        public void cancel() {
-            if (mTransformationAnimator != null && mTransformationAnimator.isRunning()) {
-                mTransformationAnimator.cancel();
+        /**
+         * Enabled means the bridge will accept input. When not enabled, the output of the animator
+         * will be ignored
+         */
+        public void setEnabled(boolean enabled) {
+            synchronized (mLock) {
+                if (enabled != mEnabled) {
+                    mEnabled = enabled;
+                    if (!mEnabled) {
+                        mSentMagnificationSpec.clear();
+                        mWindowManager.setMagnificationSpec(mSentMagnificationSpec);
+                    }
+                }
             }
         }
 
@@ -710,28 +787,32 @@
             }
 
             // If the current and sent specs don't match, update the sent spec.
-            final boolean changed = !mSentMagnificationSpec.equals(spec);
-            if (changed) {
-                if (animate) {
-                    animateMagnificationSpec(spec);
-                } else {
-                    setMagnificationSpec(spec);
+            synchronized (mLock) {
+                final boolean changed = !mSentMagnificationSpec.equals(spec);
+                if (changed) {
+                    if (animate) {
+                        animateMagnificationSpecLocked(spec);
+                    } else {
+                        setMagnificationSpecLocked(spec);
+                    }
                 }
             }
         }
 
-        private void animateMagnificationSpec(MagnificationSpec toSpec) {
+        private void animateMagnificationSpecLocked(MagnificationSpec toSpec) {
             mTransformationAnimator.setObjectValues(mSentMagnificationSpec, toSpec);
             mTransformationAnimator.start();
         }
 
-        private void setMagnificationSpec(MagnificationSpec spec) {
-            if (DEBUG_SET_MAGNIFICATION_SPEC) {
-                Slog.i(LOG_TAG, "Sending: " + spec);
-            }
+        private void setMagnificationSpecLocked(MagnificationSpec spec) {
+            if (mEnabled) {
+                if (DEBUG_SET_MAGNIFICATION_SPEC) {
+                    Slog.i(LOG_TAG, "Sending: " + spec);
+                }
 
-            mSentMagnificationSpec.setTo(spec);
-            mWindowManager.setMagnificationSpec(spec);
+                mSentMagnificationSpec.setTo(spec);
+                mWindowManager.setMagnificationSpec(spec);
+            }
         }
 
         private class UpdateHandler extends Handler {
@@ -759,12 +840,16 @@
 
             @Override
             public MagnificationSpec get(SpecAnimationBridge object) {
-                return object.mSentMagnificationSpec;
+                synchronized (object.mLock) {
+                    return object.mSentMagnificationSpec;
+                }
             }
 
             @Override
             public void set(SpecAnimationBridge object, MagnificationSpec value) {
-                object.setMagnificationSpec(value);
+                synchronized (object.mLock) {
+                    object.setMagnificationSpecLocked(value);
+                }
             }
         }
 
@@ -862,15 +947,14 @@
         }
 
         @Override
-        public void onMagnifiedBoundsChanged(Region magnified, Region available) {
+        public void onMagnificationRegionChanged(Region magnificationRegion) {
             final SomeArgs args = SomeArgs.obtain();
-            args.arg1 = Region.obtain(magnified);
-            args.arg2 = Region.obtain(available);
+            args.arg1 = Region.obtain(magnificationRegion);
             mHandler.obtainMessage(MESSAGE_ON_MAGNIFIED_BOUNDS_CHANGED, args).sendToTarget();
         }
 
-        private void handleOnMagnifiedBoundsChanged(Region magnified, Region available) {
-            mController.setMagnifiedRegion(magnified, available, mSpecIsDirty);
+        private void handleOnMagnifiedBoundsChanged(Region magnificationRegion) {
+            mController.onMagnificationRegionChanged(magnificationRegion, mSpecIsDirty);
             mSpecIsDirty = false;
         }
 
@@ -911,8 +995,15 @@
             mController.resetIfNeeded(true);
         }
 
-        public void getRegions(@NonNull Region outMagnified, @NonNull Region outAvailable) {
-            mWindowManager.getMagnificationRegions(outMagnified, outAvailable);
+        /**
+         * This method is used to get the magnification region in the tiny time slice between
+         * registering the callbacks and handling the message.
+         * TODO: Elimiante this extra path, perhaps by processing the message immediately
+         *
+         * @param outMagnificationRegion
+         */
+        public void getMagnificationRegion(@NonNull Region outMagnificationRegion) {
+            mWindowManager.getMagnificationRegion(outMagnificationRegion);
         }
 
         private class CallbackHandler extends Handler {
@@ -926,10 +1017,8 @@
                     case MESSAGE_ON_MAGNIFIED_BOUNDS_CHANGED: {
                         final SomeArgs args = (SomeArgs) message.obj;
                         final Region magnifiedBounds = (Region) args.arg1;
-                        final Region availableBounds = (Region) args.arg2;
-                        handleOnMagnifiedBoundsChanged(magnifiedBounds, availableBounds);
+                        handleOnMagnifiedBoundsChanged(magnifiedBounds);
                         magnifiedBounds.recycle();
-                        availableBounds.recycle();
                     } break;
                     case MESSAGE_ON_RECTANGLE_ON_SCREEN_REQUESTED: {
                         final SomeArgs args = (SomeArgs) message.obj;
diff --git a/services/accessibility/java/com/android/server/accessibility/MagnificationGestureHandler.java b/services/accessibility/java/com/android/server/accessibility/MagnificationGestureHandler.java
index 818ac81..39bc809 100644
--- a/services/accessibility/java/com/android/server/accessibility/MagnificationGestureHandler.java
+++ b/services/accessibility/java/com/android/server/accessibility/MagnificationGestureHandler.java
@@ -237,7 +237,7 @@
         final float eventX = event.getX();
         final float eventY = event.getY();
         if (mMagnificationController.isMagnifying()
-                && mMagnificationController.magnifiedRegionContains(eventX, eventY)) {
+                && mMagnificationController.magnificationRegionContains(eventX, eventY)) {
             final float scale = mMagnificationController.getScale();
             final float scaledOffsetX = mMagnificationController.getOffsetX();
             final float scaledOffsetY = mMagnificationController.getOffsetY();
@@ -381,7 +381,8 @@
                 Slog.i(LOG_TAG, "Panned content by scrollX: " + distanceX
                         + " scrollY: " + distanceY);
             }
-            mMagnificationController.offsetMagnifiedRegionCenter(distanceX, distanceY);
+            mMagnificationController.offsetMagnifiedRegionCenter(distanceX, distanceY,
+                    AccessibilityManagerService.MAGNIFICATION_GESTURE_HANDLER_ID);
             return true;
         }
 
@@ -421,7 +422,8 @@
 
             final float pivotX = detector.getFocusX();
             final float pivotY = detector.getFocusY();
-            mMagnificationController.setScale(scale, pivotX, pivotY, false);
+            mMagnificationController.setScale(scale, pivotX, pivotY, false,
+                    AccessibilityManagerService.MAGNIFICATION_GESTURE_HANDLER_ID);
             return true;
         }
 
@@ -469,14 +471,14 @@
                     }
                     final float eventX = event.getX();
                     final float eventY = event.getY();
-                    if (mMagnificationController.magnifiedRegionContains(eventX, eventY)) {
+                    if (mMagnificationController.magnificationRegionContains(eventX, eventY)) {
                         if (mLastMoveOutsideMagnifiedRegion) {
                             mLastMoveOutsideMagnifiedRegion = false;
-                            mMagnificationController.setCenter(eventX,
-                                    eventY, true);
+                            mMagnificationController.setCenter(eventX, eventY, true,
+                                    AccessibilityManagerService.MAGNIFICATION_GESTURE_HANDLER_ID);
                         } else {
-                            mMagnificationController.setCenter(eventX,
-                                    eventY, false);
+                            mMagnificationController.setCenter(eventX, eventY, false,
+                                    AccessibilityManagerService.MAGNIFICATION_GESTURE_HANDLER_ID);
                         }
                     } else {
                         mLastMoveOutsideMagnifiedRegion = true;
@@ -571,7 +573,7 @@
             switch (action) {
                 case MotionEvent.ACTION_DOWN: {
                     mHandler.removeMessages(MESSAGE_TRANSITION_TO_DELEGATING_STATE);
-                    if (!mMagnificationController.magnifiedRegionContains(
+                    if (!mMagnificationController.magnificationRegionContains(
                             event.getX(), event.getY())) {
                         transitionToDelegatingStateAndClear();
                         return;
@@ -616,7 +618,7 @@
                         return;
                     }
                     mHandler.removeMessages(MESSAGE_ON_ACTION_TAP_AND_HOLD);
-                    if (!mMagnificationController.magnifiedRegionContains(
+                    if (!mMagnificationController.magnificationRegionContains(
                             event.getX(), event.getY())) {
                         transitionToDelegatingStateAndClear();
                         return;
@@ -726,7 +728,8 @@
             if (!mMagnificationController.isMagnifying()) {
                 final float targetScale = mMagnificationController.getPersistedScale();
                 final float scale = MathUtils.constrain(targetScale, MIN_SCALE, MAX_SCALE);
-                mMagnificationController.setScaleAndCenter(scale, up.getX(), up.getY(), true);
+                mMagnificationController.setScaleAndCenter(scale, up.getX(), up.getY(), true,
+                        AccessibilityManagerService.MAGNIFICATION_GESTURE_HANDLER_ID);
             } else {
                 mMagnificationController.reset(true);
             }
@@ -742,7 +745,8 @@
 
             final float targetScale = mMagnificationController.getPersistedScale();
             final float scale = MathUtils.constrain(targetScale, MIN_SCALE, MAX_SCALE);
-            mMagnificationController.setScaleAndCenter(scale, down.getX(), down.getY(), true);
+            mMagnificationController.setScaleAndCenter(scale, down.getX(), down.getY(), true,
+                    AccessibilityManagerService.MAGNIFICATION_GESTURE_HANDLER_ID);
 
             transitionToState(STATE_VIEWPORT_DRAGGING);
         }
diff --git a/services/appwidget/java/com/android/server/appwidget/AppWidgetServiceImpl.java b/services/appwidget/java/com/android/server/appwidget/AppWidgetServiceImpl.java
index 0428ecf..c62689c 100644
--- a/services/appwidget/java/com/android/server/appwidget/AppWidgetServiceImpl.java
+++ b/services/appwidget/java/com/android/server/appwidget/AppWidgetServiceImpl.java
@@ -335,7 +335,7 @@
                     Provider provider = installedProviders.get(i);
 
                     final int userId = provider.getUserId();
-                    if (!mUserManager.isUserUnlocked(userId) ||
+                    if (!mUserManager.isUserUnlockingOrUnlocked(userId) ||
                             isProfileWithLockedParent(userId)) {
                         continue;
                     }
@@ -369,7 +369,7 @@
     }
 
     private void onPackageBroadcastReceived(Intent intent, int userId) {
-        if (!mUserManager.isUserUnlocked(userId) ||
+        if (!mUserManager.isUserUnlockingOrUnlocked(userId) ||
                 isProfileWithLockedParent(userId)) {
             return;
         }
@@ -455,7 +455,7 @@
      * userId must be the group parent.
      */
     private void reloadWidgetsMaskedStateForGroup(int userId) {
-        if (!mUserManager.isUserUnlocked(userId)) {
+        if (!mUserManager.isUserUnlockingOrUnlocked(userId)) {
             return;
         }
         synchronized (mLock) {
@@ -472,7 +472,7 @@
         try {
             UserInfo user  = mUserManager.getUserInfo(userId);
 
-            boolean lockedProfile = !mUserManager.isUserUnlocked(userId);
+            boolean lockedProfile = !mUserManager.isUserUnlockingOrUnlocked(userId);
             boolean quietProfile = user.isQuietModeEnabled();
             final int N = mProviders.size();
             for (int i = 0; i < N; i++) {
@@ -656,11 +656,15 @@
     }
 
     private void ensureGroupStateLoadedLocked(int userId) {
-        if (!mUserManager.isUserUnlocked(userId)) {
+        ensureGroupStateLoadedLocked(userId, /* enforceUserUnlockingOrUnlocked */ true );
+    }
+
+    private void ensureGroupStateLoadedLocked(int userId, boolean enforceUserUnlockingOrUnlocked) {
+        if (enforceUserUnlockingOrUnlocked && !mUserManager.isUserUnlockingOrUnlocked(userId)) {
             throw new IllegalStateException(
                     "User " + userId + " must be unlocked for widgets to be available");
         }
-        if (isProfileWithLockedParent(userId)) {
+        if (enforceUserUnlockingOrUnlocked && isProfileWithLockedParent(userId)) {
             throw new IllegalStateException(
                     "Profile " + userId + " must have unlocked parent");
         }
@@ -3363,7 +3367,7 @@
             if (userInfo != null && userInfo.isManagedProfile()) {
                 UserInfo parentInfo = mUserManager.getProfileParent(userId);
                 if (parentInfo != null
-                        && !mUserManager.isUserUnlocked(parentInfo.getUserHandle())) {
+                        && !mUserManager.isUserUnlockingOrUnlocked(parentInfo.getUserHandle())) {
                     return true;
                 }
             }
@@ -3378,7 +3382,7 @@
         if (userInfo != null && userInfo.isManagedProfile()) {
             UserInfo parentInfo = mUserManager.getProfileParent(userId);
             if (parentInfo != null
-                    && mUserManager.isUserUnlocked(parentInfo.getUserHandle())) {
+                    && mUserManager.isUserUnlockingOrUnlocked(parentInfo.getUserHandle())) {
                 return true;
             }
         }
@@ -3945,7 +3949,9 @@
         @Override
         public void run() {
             synchronized (mLock) {
-                ensureGroupStateLoadedLocked(mUserId);
+                // No need to enforce unlocked state when there is no caller. User can be in the
+                // stopping state or removed by the time the message is processed
+                ensureGroupStateLoadedLocked(mUserId, false /* enforceUserUnlockingOrUnlocked */ );
                 saveStateLocked(mUserId);
             }
         }
diff --git a/services/backup/java/com/android/server/backup/BackupManagerService.java b/services/backup/java/com/android/server/backup/BackupManagerService.java
index 6288b56..1b63cd4 100644
--- a/services/backup/java/com/android/server/backup/BackupManagerService.java
+++ b/services/backup/java/com/android/server/backup/BackupManagerService.java
@@ -3706,7 +3706,7 @@
                         result = BackupTransport.TRANSPORT_OK;
                     }
                 } catch (IOException e) {
-                    Slog.e(TAG, "Error backing up " + mPkg.packageName, e);
+                    Slog.e(TAG, "Error backing up " + mPkg.packageName + ": " + e.getMessage());
                     result = BackupTransport.AGENT_ERROR;
                 } finally {
                     try {
@@ -4466,7 +4466,6 @@
                             }
                         }
 
-
                         // If we've lost our running criteria, tell the transport to cancel
                         // and roll back this (partial) backup payload; otherwise tell it
                         // that we've reached the clean finish state.
@@ -4484,14 +4483,16 @@
                             }
                         }
 
-                        // TRANSPORT_ERROR here means that we've hit an error that the runner
-                        // doesn't know about, so it's still moving data but we're pulling the
+                        // A transport-originated error here means that we've hit an error that the
+                        // runner doesn't know about, so it's still moving data but we're pulling the
                         // rug out from under it.  Don't ask for its result:  we already know better
                         // and we'll hang if we block waiting for it, since it relies on us to
                         // read back the data it's writing into the engine.  Just proceed with
                         // a graceful failure.  The runner/engine mechanism will tear itself
-                        // down cleanly when we close the pipes from this end.
-                        if (backupPackageStatus != BackupTransport.TRANSPORT_ERROR) {
+                        // down cleanly when we close the pipes from this end.  Transport-level
+                        // errors take precedence over agent/app-specific errors for purposes of
+                        // determining our course of action.
+                        if (backupPackageStatus == BackupTransport.TRANSPORT_OK) {
                             // We still could fail in backup runner thread, getting result from there.
                             int backupRunnerResult = backupRunner.getBackupResultBlocking();
                             if (backupRunnerResult != BackupTransport.TRANSPORT_OK) {
@@ -4499,10 +4500,14 @@
                                 // not TRANSPORT_ERROR here, overwrite it.
                                 backupPackageStatus = backupRunnerResult;
                             }
+                        } else {
+                            if (MORE_DEBUG) {
+                                Slog.i(TAG, "Transport-level failure; cancelling agent work");
+                            }
                         }
 
                         if (MORE_DEBUG) {
-                            Slog.i(TAG, "Done trying to send backup data: result="
+                            Slog.i(TAG, "Done delivering backup data: result="
                                     + backupPackageStatus);
                         }
 
@@ -7706,6 +7711,11 @@
         // when we're finished.
         private int mPmToken;
 
+        // When this is restore-during-install, we need to tell the package manager
+        // whether we actually launched the app, because this affects notifications
+        // around externally-visible state transitions.
+        private boolean mDidLaunch;
+
         // Is this a whole-system restore, i.e. are we establishing a new ancestral
         // dataset to base future restore-at-install operations from?
         private boolean mIsSystemRestore;
@@ -7769,6 +7779,7 @@
             mTargetPackage = targetPackage;
             mIsSystemRestore = isFullSystemRestore;
             mFinished = false;
+            mDidLaunch = false;
 
             if (targetPackage != null) {
                 // Single package restore
@@ -8149,6 +8160,9 @@
                 return;
             }
 
+            // Whatever happens next, we've launched the target app now; remember that.
+            mDidLaunch = true;
+
             // And then finally start the restore on this agent
             try {
                 initiateOneRestore(mCurrentPackage, metaInfo.versionCode);
@@ -8430,6 +8444,10 @@
                     // Now we're really done with this one too
                     IoUtils.closeQuietly(mEnginePipes[0]);
 
+                    // In all cases we want to remember whether we launched
+                    // the target app as part of our work so far.
+                    mDidLaunch = (mEngine.getAgent() != null);
+
                     // If we hit a transport-level error, we are done with everything;
                     // if we hit an agent error we just go back to running the queue.
                     if (status == BackupTransport.TRANSPORT_OK) {
@@ -8522,7 +8540,7 @@
             if (mPmToken > 0) {
                 if (MORE_DEBUG) Slog.v(TAG, "finishing PM token " + mPmToken);
                 try {
-                    mPackageManagerBinder.finishPackageInstall(mPmToken);
+                    mPackageManagerBinder.finishPackageInstall(mPmToken, mDidLaunch);
                 } catch (RemoteException e) { /* can't happen */ }
             } else {
                 // We were invoked via an active restore session, not by the Package
@@ -9682,7 +9700,7 @@
             // Manager to proceed with the post-install handling for this package.
             if (DEBUG) Slog.v(TAG, "Finishing install immediately");
             try {
-                mPackageManagerBinder.finishPackageInstall(token);
+                mPackageManagerBinder.finishPackageInstall(token, false);
             } catch (RemoteException e) { /* can't happen */ }
         }
     }
diff --git a/services/core/java/com/android/server/BatteryService.java b/services/core/java/com/android/server/BatteryService.java
index 8753992..6b51721 100644
--- a/services/core/java/com/android/server/BatteryService.java
+++ b/services/core/java/com/android/server/BatteryService.java
@@ -358,7 +358,7 @@
         try {
             mBatteryStats.setBatteryState(mBatteryProps.batteryStatus, mBatteryProps.batteryHealth,
                     mPlugType, mBatteryProps.batteryLevel, mBatteryProps.batteryTemperature,
-                    mBatteryProps.batteryVoltage);
+                    mBatteryProps.batteryVoltage, mBatteryProps.batteryChargeCounter);
         } catch (RemoteException e) {
             // Should never happen.
         }
diff --git a/services/core/java/com/android/server/ConnectivityService.java b/services/core/java/com/android/server/ConnectivityService.java
index f06583b..00dcdea 100644
--- a/services/core/java/com/android/server/ConnectivityService.java
+++ b/services/core/java/com/android/server/ConnectivityService.java
@@ -29,8 +29,11 @@
 import static android.net.NetworkCapabilities.NET_CAPABILITY_NOT_RESTRICTED;
 import static android.net.NetworkCapabilities.NET_CAPABILITY_VALIDATED;
 import static android.net.NetworkPolicyManager.RULE_ALLOW_ALL;
+import static android.net.NetworkPolicyManager.RULE_ALLOW_METERED;
 import static android.net.NetworkPolicyManager.RULE_REJECT_ALL;
 import static android.net.NetworkPolicyManager.RULE_REJECT_METERED;
+import static android.net.NetworkPolicyManager.RULE_TEMPORARY_ALLOW_METERED;
+import static android.net.NetworkPolicyManager.RULE_UNKNOWN;
 
 import android.annotation.Nullable;
 import android.app.BroadcastOptions;
@@ -97,8 +100,10 @@
 import android.security.KeyStore;
 import android.telephony.TelephonyManager;
 import android.text.TextUtils;
+import android.util.ArraySet;
 import android.util.LocalLog;
 import android.util.LocalLog.ReadOnlyLocalLog;
+import android.util.Log;
 import android.util.Pair;
 import android.util.Slog;
 import android.util.SparseArray;
@@ -122,9 +127,9 @@
 import com.android.server.am.BatteryStatsService;
 import com.android.server.connectivity.DataConnectionStats;
 import com.android.server.connectivity.KeepaliveTracker;
-import com.android.server.connectivity.NetworkDiagnostics;
 import com.android.server.connectivity.Nat464Xlat;
 import com.android.server.connectivity.NetworkAgentInfo;
+import com.android.server.connectivity.NetworkDiagnostics;
 import com.android.server.connectivity.NetworkMonitor;
 import com.android.server.connectivity.PacManager;
 import com.android.server.connectivity.PermissionMonitor;
@@ -132,8 +137,8 @@
 import com.android.server.connectivity.Vpn;
 import com.android.server.net.BaseNetworkObserver;
 import com.android.server.net.LockdownVpnTracker;
+
 import com.google.android.collect.Lists;
-import com.google.android.collect.Sets;
 
 import org.xmlpull.v1.XmlPullParser;
 import org.xmlpull.v1.XmlPullParserException;
@@ -153,11 +158,11 @@
 import java.util.Collection;
 import java.util.HashMap;
 import java.util.HashSet;
-import java.util.SortedSet;
-import java.util.TreeSet;
 import java.util.List;
 import java.util.Map;
 import java.util.Objects;
+import java.util.SortedSet;
+import java.util.TreeSet;
 
 /**
  * @hide
@@ -203,9 +208,14 @@
     /** Lock around {@link #mUidRules} and {@link #mMeteredIfaces}. */
     private Object mRulesLock = new Object();
     /** Currently active network rules by UID. */
+    @GuardedBy("mRulesLock")
     private SparseIntArray mUidRules = new SparseIntArray();
     /** Set of ifaces that are costly. */
-    private HashSet<String> mMeteredIfaces = Sets.newHashSet();
+    @GuardedBy("mRulesLock")
+    private ArraySet<String> mMeteredIfaces = new ArraySet<>();
+    /** Flag indicating if background data is restricted. */
+    @GuardedBy("mRulesLock")
+    private boolean mRestrictBackground;
 
     final private Context mContext;
     private int mNetworkPreference;
@@ -652,7 +662,8 @@
         mTelephonyManager = (TelephonyManager) mContext.getSystemService(Context.TELEPHONY_SERVICE);
 
         try {
-            mPolicyManager.registerListener(mPolicyListener);
+            mPolicyManager.setConnectivityListener(mPolicyListener);
+            mRestrictBackground = mPolicyManager.getRestrictBackground();
         } catch (RemoteException e) {
             // ouch, no rules updates means some processes may never get network
             loge("unable to register INetworkPolicyListener" + e.toString());
@@ -731,7 +742,7 @@
         //set up the listener for user state for creating user VPNs
         IntentFilter intentFilter = new IntentFilter();
         intentFilter.addAction(Intent.ACTION_USER_STARTING);
-        intentFilter.addAction(Intent.ACTION_USER_STOPPING);
+        intentFilter.addAction(Intent.ACTION_USER_STOPPED);
         intentFilter.addAction(Intent.ACTION_USER_ADDED);
         intentFilter.addAction(Intent.ACTION_USER_REMOVED);
         intentFilter.addAction(Intent.ACTION_USER_UNLOCKED);
@@ -820,7 +831,7 @@
         throw new IllegalStateException("No free netIds");
     }
 
-    private NetworkState getFilteredNetworkState(int networkType, int uid) {
+    private NetworkState getFilteredNetworkState(int networkType, int uid, boolean ignoreBlocked) {
         if (mLegacyTypeTracker.isTypeSupported(networkType)) {
             final NetworkAgentInfo nai = mLegacyTypeTracker.getNetworkForType(networkType);
             final NetworkState state;
@@ -835,7 +846,7 @@
                 state = new NetworkState(info, new LinkProperties(), new NetworkCapabilities(),
                         null, null, null);
             }
-            filterNetworkStateForUid(state, uid);
+            filterNetworkStateForUid(state, uid, ignoreBlocked);
             return state;
         } else {
             return NetworkState.EMPTY;
@@ -891,22 +902,36 @@
     /**
      * Check if UID should be blocked from using the network with the given LinkProperties.
      */
-    private boolean isNetworkWithLinkPropertiesBlocked(LinkProperties lp, int uid) {
-        final boolean networkCostly;
+    private boolean isNetworkWithLinkPropertiesBlocked(LinkProperties lp, int uid,
+            boolean ignoreBlocked) {
+        // Networks aren't blocked when ignoring blocked status
+        if (ignoreBlocked) return false;
+        // Networks are never blocked for system services
+        if (uid < Process.FIRST_APPLICATION_UID) return false;
+
+        final boolean networkMetered;
         final int uidRules;
 
         final String iface = (lp == null ? "" : lp.getInterfaceName());
         synchronized (mRulesLock) {
-            networkCostly = mMeteredIfaces.contains(iface);
-            uidRules = mUidRules.get(uid, RULE_ALLOW_ALL);
+            networkMetered = mMeteredIfaces.contains(iface);
+            uidRules = mUidRules.get(uid, RULE_UNKNOWN);
         }
 
-        if (uidRules == RULE_REJECT_ALL) {
-            return true;
-        } else if ((uidRules == RULE_REJECT_METERED) && networkCostly) {
-            return true;
-        } else {
-            return false;
+        switch (uidRules) {
+            case RULE_ALLOW_ALL:
+            case RULE_ALLOW_METERED:
+            case RULE_TEMPORARY_ALLOW_METERED:
+                return false;
+            case RULE_REJECT_METERED:
+                return networkMetered;
+            case RULE_REJECT_ALL:
+                return true;
+            case RULE_UNKNOWN:
+            default:
+                // When background data is restricted device-wide, the default
+                // behavior for apps should be like RULE_REJECT_METERED
+                return mRestrictBackground ? networkMetered : false;
         }
     }
 
@@ -931,10 +956,10 @@
      * on {@link #isNetworkWithLinkPropertiesBlocked}, or
      * {@link NetworkInfo#isMetered()} based on network policies.
      */
-    private void filterNetworkStateForUid(NetworkState state, int uid) {
+    private void filterNetworkStateForUid(NetworkState state, int uid, boolean ignoreBlocked) {
         if (state == null || state.networkInfo == null || state.linkProperties == null) return;
 
-        if (isNetworkWithLinkPropertiesBlocked(state.linkProperties, uid)) {
+        if (isNetworkWithLinkPropertiesBlocked(state.linkProperties, uid, ignoreBlocked)) {
             state.networkInfo.setDetailedState(DetailedState.BLOCKED, null, null);
         }
         if (mLockdownTracker != null) {
@@ -963,7 +988,7 @@
         enforceAccessPermission();
         final int uid = Binder.getCallingUid();
         final NetworkState state = getUnfilteredActiveNetworkState(uid);
-        filterNetworkStateForUid(state, uid);
+        filterNetworkStateForUid(state, uid, false);
         maybeLogBlockedNetworkInfo(state.networkInfo, uid);
         return state.networkInfo;
     }
@@ -971,16 +996,16 @@
     @Override
     public Network getActiveNetwork() {
         enforceAccessPermission();
-        return getActiveNetworkForUidInternal(Binder.getCallingUid());
+        return getActiveNetworkForUidInternal(Binder.getCallingUid(), false);
     }
 
     @Override
-    public Network getActiveNetworkForUid(int uid) {
+    public Network getActiveNetworkForUid(int uid, boolean ignoreBlocked) {
         enforceConnectivityInternalPermission();
-        return getActiveNetworkForUidInternal(uid);
+        return getActiveNetworkForUidInternal(uid, ignoreBlocked);
     }
 
-    private Network getActiveNetworkForUidInternal(final int uid) {
+    private Network getActiveNetworkForUidInternal(final int uid, boolean ignoreBlocked) {
         final int user = UserHandle.getUserId(uid);
         int vpnNetId = NETID_UNSET;
         synchronized (mVpns) {
@@ -995,7 +1020,10 @@
             if (nai != null) return nai.network;
         }
         nai = getDefaultNetwork();
-        if (nai != null && isNetworkWithLinkPropertiesBlocked(nai.linkProperties, uid)) nai = null;
+        if (nai != null
+                && isNetworkWithLinkPropertiesBlocked(nai.linkProperties, uid, ignoreBlocked)) {
+            nai = null;
+        }
         return nai != null ? nai.network : null;
     }
 
@@ -1007,10 +1035,10 @@
     }
 
     @Override
-    public NetworkInfo getActiveNetworkInfoForUid(int uid) {
+    public NetworkInfo getActiveNetworkInfoForUid(int uid, boolean ignoreBlocked) {
         enforceConnectivityInternalPermission();
         final NetworkState state = getUnfilteredActiveNetworkState(uid);
-        filterNetworkStateForUid(state, uid);
+        filterNetworkStateForUid(state, uid, ignoreBlocked);
         return state.networkInfo;
     }
 
@@ -1024,22 +1052,21 @@
             // getUnfilteredActiveNetworkState.
             final NetworkState state = getUnfilteredActiveNetworkState(uid);
             if (state.networkInfo != null && state.networkInfo.getType() == networkType) {
-                filterNetworkStateForUid(state, uid);
+                filterNetworkStateForUid(state, uid, false);
                 return state.networkInfo;
             }
         }
-        final NetworkState state = getFilteredNetworkState(networkType, uid);
+        final NetworkState state = getFilteredNetworkState(networkType, uid, false);
         return state.networkInfo;
     }
 
     @Override
-    public NetworkInfo getNetworkInfoForNetwork(Network network) {
+    public NetworkInfo getNetworkInfoForUid(Network network, int uid, boolean ignoreBlocked) {
         enforceAccessPermission();
-        final int uid = Binder.getCallingUid();
         final NetworkAgentInfo nai = getNetworkAgentInfoForNetwork(network);
         if (nai != null) {
             final NetworkState state = nai.getNetworkState();
-            filterNetworkStateForUid(state, uid);
+            filterNetworkStateForUid(state, uid, ignoreBlocked);
             return state.networkInfo;
         } else {
             return null;
@@ -1064,8 +1091,8 @@
     public Network getNetworkForType(int networkType) {
         enforceAccessPermission();
         final int uid = Binder.getCallingUid();
-        NetworkState state = getFilteredNetworkState(networkType, uid);
-        if (!isNetworkWithLinkPropertiesBlocked(state.linkProperties, uid)) {
+        NetworkState state = getFilteredNetworkState(networkType, uid, false);
+        if (!isNetworkWithLinkPropertiesBlocked(state.linkProperties, uid, false)) {
             return state.network;
         }
         return null;
@@ -1382,6 +1409,15 @@
             if (LOGD_RULES) {
                 log("onRestrictBackgroundChanged(restrictBackground=" + restrictBackground + ")");
             }
+
+            synchronized (mRulesLock) {
+                mRestrictBackground = restrictBackground;
+            }
+
+            if (restrictBackground) {
+                log("onRestrictBackgroundChanged(true): disabling tethering");
+                mTethering.untetherAll();
+            }
         }
 
         @Override
@@ -1813,6 +1849,18 @@
         pw.decreaseIndent();
         pw.println();
 
+        pw.println("Metered Interfaces:");
+        pw.increaseIndent();
+        for (String value : mMeteredIfaces) {
+            pw.println(value);
+        }
+        pw.decreaseIndent();
+        pw.println();
+
+        pw.print("Restrict background: ");
+        pw.println(mRestrictBackground);
+        pw.println();
+
         pw.println("Network Requests:");
         pw.increaseIndent();
         for (NetworkRequestInfo nri : mNetworkRequests.values()) {
@@ -2568,7 +2616,14 @@
     public int tether(String iface) {
         ConnectivityManager.enforceTetherChangePermission(mContext);
         if (isTetheringSupported()) {
-            return mTethering.tether(iface);
+            final int status = mTethering.tether(iface);
+            if (status == ConnectivityManager.TETHER_ERROR_NO_ERROR) {
+                try {
+                    mPolicyManager.onTetheringChanged(iface, true);
+                } catch (RemoteException e) {
+                }
+            }
+            return status;
         } else {
             return ConnectivityManager.TETHER_ERROR_UNSUPPORTED;
         }
@@ -2579,7 +2634,14 @@
         ConnectivityManager.enforceTetherChangePermission(mContext);
 
         if (isTetheringSupported()) {
-            return mTethering.untether(iface);
+            final int status = mTethering.untether(iface);
+            if (status == ConnectivityManager.TETHER_ERROR_NO_ERROR) {
+                try {
+                    mPolicyManager.onTetheringChanged(iface, false);
+                } catch (RemoteException e) {
+                }
+            }
+            return status;
         } else {
             return ConnectivityManager.TETHER_ERROR_UNSUPPORTED;
         }
@@ -2740,7 +2802,7 @@
             // which isn't meant to work on uncreated networks.
             if (!nai.created) return;
 
-            if (isNetworkWithLinkPropertiesBlocked(nai.linkProperties, uid)) return;
+            if (isNetworkWithLinkPropertiesBlocked(nai.linkProperties, uid, false)) return;
 
             nai.networkMonitor.sendMessage(NetworkMonitor.CMD_FORCE_REEVALUATION, uid);
         }
@@ -3594,7 +3656,7 @@
         synchronized(mVpns) {
             Vpn userVpn = mVpns.get(userId);
             if (userVpn == null) {
-                loge("Stopping user has no VPN");
+                loge("Stopped user has no VPN");
                 return;
             }
             mVpns.delete(userId);
@@ -3639,7 +3701,7 @@
 
             if (Intent.ACTION_USER_STARTING.equals(action)) {
                 onUserStart(userId);
-            } else if (Intent.ACTION_USER_STOPPING.equals(action)) {
+            } else if (Intent.ACTION_USER_STOPPED.equals(action)) {
                 onUserStop(userId);
             } else if (Intent.ACTION_USER_ADDED.equals(action)) {
                 onUserAdded(userId);
@@ -4255,10 +4317,10 @@
         Collection<InetAddress> dnses = newLp.getDnsServers();
         if (DBG) log("Setting DNS servers for network " + netId + " to " + dnses);
         try {
-            mNetd.setDnsServersForNetwork(
+            mNetd.setDnsConfigurationForNetwork(
                     netId, NetworkUtils.makeStrings(dnses), newLp.getDomains());
         } catch (Exception e) {
-            loge("Exception in setDnsServersForNetwork: " + e);
+            loge("Exception in setDnsConfigurationForNetwork: " + e);
         }
         final NetworkAgentInfo defaultNai = getDefaultNetwork();
         if (defaultNai != null && defaultNai.network.netId == netId) {
diff --git a/services/core/java/com/android/server/InputMethodManagerService.java b/services/core/java/com/android/server/InputMethodManagerService.java
index 79d16da..a584f70 100644
--- a/services/core/java/com/android/server/InputMethodManagerService.java
+++ b/services/core/java/com/android/server/InputMethodManagerService.java
@@ -1020,7 +1020,7 @@
         // If the system is not ready or the device is not yed unlocked by the user, then we use
         // copy-on-write settings.
         final boolean useCopyOnWriteSettings =
-                !mSystemReady || !mUserManager.isUserUnlocked(newUserId);
+                !mSystemReady || !mUserManager.isUserUnlockingOrUnlocked(newUserId);
         mSettings.switchCurrentUser(newUserId, useCopyOnWriteSettings);
         updateCurrentProfileIds();
         // InputMethodFileManager should be reset when the user is changed
@@ -1077,7 +1077,7 @@
                 mSystemReady = true;
                 final int currentUserId = mSettings.getCurrentUserId();
                 mSettings.switchCurrentUser(currentUserId,
-                        !mUserManager.isUserUnlocked(currentUserId));
+                        !mUserManager.isUserUnlockingOrUnlocked(currentUserId));
                 mKeyguardManager = mContext.getSystemService(KeyguardManager.class);
                 mNotificationManager = mContext.getSystemService(NotificationManager.class);
                 mStatusBar = statusBar;
diff --git a/services/core/java/com/android/server/LockSettingsService.java b/services/core/java/com/android/server/LockSettingsService.java
index a3ef6b6..cbf7e80 100644
--- a/services/core/java/com/android/server/LockSettingsService.java
+++ b/services/core/java/com/android/server/LockSettingsService.java
@@ -256,13 +256,13 @@
         for (int i = 0; i < users.size(); i++) {
             UserInfo user = users.get(i);
             UserHandle userHandle = user.getUserHandle();
-            if (!mUserManager.isUserUnlocked(userHandle)) {
+            if (!mUserManager.isUserUnlockingOrUnlocked(userHandle)) {
                 if (!user.isManagedProfile()) {
                     showEncryptionNotification(userHandle);
                 } else {
                     UserInfo parent = mUserManager.getProfileParent(user.id);
                     if (parent != null &&
-                            mUserManager.isUserUnlocked(parent.getUserHandle()) &&
+                            mUserManager.isUserUnlockingOrUnlocked(parent.getUserHandle()) &&
                             !mUserManager.isQuietModeEnabled(userHandle)) {
                         // Only show notifications for managed profiles once their parent
                         // user is unlocked.
@@ -350,7 +350,7 @@
             UserInfo profile = profiles.get(i);
             if (profile.isManagedProfile()) {
                 UserHandle userHandle = profile.getUserHandle();
-                if (!mUserManager.isUserUnlocked(userHandle) &&
+                if (!mUserManager.isUserUnlockingOrUnlocked(userHandle) &&
                         !mUserManager.isQuietModeEnabled(userHandle)) {
                     showEncryptionNotificationForProfile(userHandle);
                 }
@@ -1281,8 +1281,14 @@
         // service can't connect to vold, it restarts, and then the new instance
         // does successfully connect.
         final IMountService service = getMountService();
-        String password = service.getPassword();
-        service.clearPassword();
+        String password;
+        long identity = Binder.clearCallingIdentity();
+        try {
+            password = service.getPassword();
+            service.clearPassword();
+        } finally {
+            Binder.restoreCallingIdentity(identity);
+        }
         if (password == null) {
             return false;
         }
diff --git a/services/core/java/com/android/server/MountService.java b/services/core/java/com/android/server/MountService.java
index ec05dae..8abbb111 100644
--- a/services/core/java/com/android/server/MountService.java
+++ b/services/core/java/com/android/server/MountService.java
@@ -2648,7 +2648,6 @@
      */
     @Override
     public int getPasswordType() {
-
         waitForReady();
 
         final NativeDaemonEvent event;
@@ -2672,6 +2671,8 @@
      */
     @Override
     public void setField(String field, String contents) throws RemoteException {
+        mContext.enforceCallingOrSelfPermission(Manifest.permission.STORAGE_INTERNAL,
+            "no permission to access the crypt keeper");
 
         waitForReady();
 
@@ -2690,6 +2691,8 @@
      */
     @Override
     public String getField(String field) throws RemoteException {
+        mContext.enforceCallingOrSelfPermission(Manifest.permission.STORAGE_INTERNAL,
+            "no permission to access the crypt keeper");
 
         waitForReady();
 
@@ -2714,6 +2717,8 @@
      */
     @Override
     public boolean isConvertibleToFBE() throws RemoteException {
+        mContext.enforceCallingOrSelfPermission(Manifest.permission.STORAGE_INTERNAL,
+            "no permission to access the crypt keeper");
 
         waitForReady();
 
@@ -2728,8 +2733,9 @@
 
     @Override
     public String getPassword() throws RemoteException {
-        mContext.enforceCallingOrSelfPermission(Manifest.permission.ACCESS_KEYGUARD_SECURE_STORAGE,
+        mContext.enforceCallingOrSelfPermission(Manifest.permission.STORAGE_INTERNAL,
                 "only keyguard can retrieve password");
+
         if (!isReady()) {
             return new String();
         }
@@ -2752,6 +2758,9 @@
 
     @Override
     public void clearPassword() throws RemoteException {
+        mContext.enforceCallingOrSelfPermission(Manifest.permission.STORAGE_INTERNAL,
+                "only keyguard can clear password");
+
         if (!isReady()) {
             return;
         }
@@ -2816,17 +2825,19 @@
         enforcePermission(android.Manifest.permission.STORAGE_INTERNAL);
         waitForReady();
 
-        // When a user has secure lock screen, require a challenge token to
-        // actually unlock. This check is mostly in place for emulation mode.
-        if (mLockPatternUtils.isSecure(userId) && ArrayUtils.isEmpty(token)) {
-            throw new IllegalStateException("Token required to unlock secure user " + userId);
-        }
+        if (StorageManager.isFileEncryptedNativeOrEmulated()) {
+            // When a user has secure lock screen, require a challenge token to
+            // actually unlock. This check is mostly in place for emulation mode.
+            if (mLockPatternUtils.isSecure(userId) && ArrayUtils.isEmpty(token)) {
+                throw new IllegalStateException("Token required to unlock secure user " + userId);
+            }
 
-        try {
-            mCryptConnector.execute("cryptfs", "unlock_user_key", userId, serialNumber,
-                    encodeBytes(token), encodeBytes(secret));
-        } catch (NativeDaemonConnectorException e) {
-            throw e.rethrowAsParcelableException();
+            try {
+                mCryptConnector.execute("cryptfs", "unlock_user_key", userId, serialNumber,
+                        encodeBytes(token), encodeBytes(secret));
+            } catch (NativeDaemonConnectorException e) {
+                throw e.rethrowAsParcelableException();
+            }
         }
 
         synchronized (mLock) {
@@ -2852,12 +2863,8 @@
 
     @Override
     public boolean isUserKeyUnlocked(int userId) {
-        if (StorageManager.isFileEncryptedNativeOrEmulated()) {
-            synchronized (mLock) {
-                return ArrayUtils.contains(mLocalUnlockedUsers, userId);
-            }
-        } else {
-            return true;
+        synchronized (mLock) {
+            return ArrayUtils.contains(mLocalUnlockedUsers, userId);
         }
     }
 
diff --git a/services/core/java/com/android/server/NetworkManagementService.java b/services/core/java/com/android/server/NetworkManagementService.java
index 7458898..2418160 100644
--- a/services/core/java/com/android/server/NetworkManagementService.java
+++ b/services/core/java/com/android/server/NetworkManagementService.java
@@ -47,6 +47,7 @@
 import static com.android.server.NetworkManagementSocketTagger.PROP_QTAGUID_ENABLED;
 import android.annotation.NonNull;
 import android.app.ActivityManagerNative;
+import android.content.ContentResolver;
 import android.content.Context;
 import android.net.ConnectivityManager;
 import android.net.INetd;
@@ -72,9 +73,11 @@
 import android.os.RemoteCallbackList;
 import android.os.RemoteException;
 import android.os.ServiceManager;
+import android.os.ServiceSpecificException;
 import android.os.StrictMode;
 import android.os.SystemClock;
 import android.os.SystemProperties;
+import android.provider.Settings;
 import android.telephony.DataConnectionRealTimeInfo;
 import android.telephony.PhoneStateListener;
 import android.telephony.SubscriptionManager;
@@ -174,6 +177,12 @@
         public static final int StrictCleartext           = 617;
     }
 
+    /* Defaults for resolver parameters. */
+    public static final int DNS_RESOLVER_DEFAULT_SAMPLE_VALIDITY_SECONDS = 1800;
+    public static final int DNS_RESOLVER_DEFAULT_SUCCESS_THRESHOLD_PERCENT = 25;
+    public static final int DNS_RESOLVER_DEFAULT_MIN_SAMPLES = 8;
+    public static final int DNS_RESOLVER_DEFAULT_MAX_SAMPLES = 64;
+
     /**
      * String indicating a softap command.
      */
@@ -1926,6 +1935,51 @@
     }
 
     @Override
+    public void setDnsConfigurationForNetwork(int netId, String[] servers, String domains) {
+        mContext.enforceCallingOrSelfPermission(CONNECTIVITY_INTERNAL, TAG);
+
+        ContentResolver resolver = mContext.getContentResolver();
+
+        int sampleValidity = Settings.Global.getInt(resolver,
+                Settings.Global.DNS_RESOLVER_SAMPLE_VALIDITY_SECONDS,
+                DNS_RESOLVER_DEFAULT_SAMPLE_VALIDITY_SECONDS);
+        if (sampleValidity < 0 || sampleValidity > 65535) {
+            Slog.w(TAG, "Invalid sampleValidity=" + sampleValidity + ", using default=" +
+                    DNS_RESOLVER_DEFAULT_SAMPLE_VALIDITY_SECONDS);
+            sampleValidity = DNS_RESOLVER_DEFAULT_SAMPLE_VALIDITY_SECONDS;
+        }
+
+        int successThreshold = Settings.Global.getInt(resolver,
+                Settings.Global.DNS_RESOLVER_SUCCESS_THRESHOLD_PERCENT,
+                DNS_RESOLVER_DEFAULT_SUCCESS_THRESHOLD_PERCENT);
+        if (successThreshold < 0 || successThreshold > 100) {
+            Slog.w(TAG, "Invalid successThreshold=" + successThreshold + ", using default=" +
+                    DNS_RESOLVER_DEFAULT_SUCCESS_THRESHOLD_PERCENT);
+            successThreshold = DNS_RESOLVER_DEFAULT_SUCCESS_THRESHOLD_PERCENT;
+        }
+
+        int minSamples = Settings.Global.getInt(resolver,
+                Settings.Global.DNS_RESOLVER_MIN_SAMPLES, DNS_RESOLVER_DEFAULT_MIN_SAMPLES);
+        int maxSamples = Settings.Global.getInt(resolver,
+                Settings.Global.DNS_RESOLVER_MAX_SAMPLES, DNS_RESOLVER_DEFAULT_MAX_SAMPLES);
+        if (minSamples < 0 || minSamples > maxSamples || maxSamples > 64) {
+            Slog.w(TAG, "Invalid sample count (min, max)=(" + minSamples + ", " + maxSamples +
+                    "), using default=(" + DNS_RESOLVER_DEFAULT_MIN_SAMPLES + ", " +
+                    DNS_RESOLVER_DEFAULT_MAX_SAMPLES + ")");
+            minSamples = DNS_RESOLVER_DEFAULT_MIN_SAMPLES;
+            maxSamples = DNS_RESOLVER_DEFAULT_MAX_SAMPLES;
+        }
+
+        final String[] domainStrs = domains == null ? new String[0] : domains.split(" ");
+        final int[] params = { sampleValidity, successThreshold, minSamples, maxSamples };
+        try {
+            mNetdService.setResolverConfiguration(netId, servers, domainStrs, params);
+        } catch (RemoteException e) {
+            throw new RuntimeException(e);
+        }
+    }
+
+    @Override
     public void setDnsServersForNetwork(int netId, String[] servers, String domains) {
         mContext.enforceCallingOrSelfPermission(CONNECTIVITY_INTERNAL, TAG);
 
@@ -2047,6 +2101,65 @@
         }
     }
 
+    private void closeSocketsForFirewallChainLocked(int chain, String chainName) {
+        // UID ranges to close sockets on.
+        UidRange[] ranges;
+        // UID ranges whose sockets we won't touch.
+        int[] exemptUids;
+
+        final SparseIntArray rules = getUidFirewallRules(chain);
+        int numUids = 0;
+
+        if (getFirewallType(chain) == FIREWALL_TYPE_WHITELIST) {
+            // Close all sockets on all non-system UIDs...
+            ranges = new UidRange[] {
+                // TODO: is there a better way of finding all existing users? If so, we could
+                // specify their ranges here.
+                new UidRange(Process.FIRST_APPLICATION_UID, Integer.MAX_VALUE),
+            };
+            // ... except for the UIDs that have allow rules.
+            exemptUids = new int[rules.size()];
+            for (int i = 0; i < exemptUids.length; i++) {
+                if (rules.valueAt(i) == NetworkPolicyManager.FIREWALL_RULE_ALLOW) {
+                    exemptUids[numUids] = rules.keyAt(i);
+                    numUids++;
+                }
+            }
+            // Normally, whitelist chains only contain deny rules, so numUids == exemptUids.length.
+            // But the code does not guarantee this in any way, and at least in one case - if we add
+            // a UID rule to the firewall, and then disable the firewall - the chains can contain
+            // the wrong type of rule. In this case, don't close connections that we shouldn't.
+            //
+            // TODO: tighten up this code by ensuring we never set the wrong type of rule, and
+            // fix setFirewallEnabled to grab mQuotaLock and clear rules.
+            if (numUids != exemptUids.length) {
+                exemptUids = Arrays.copyOf(exemptUids, numUids);
+            }
+        } else {
+            // Close sockets for every UID that has a deny rule...
+            ranges = new UidRange[rules.size()];
+            for (int i = 0; i < ranges.length; i++) {
+                if (rules.valueAt(i) == NetworkPolicyManager.FIREWALL_RULE_DENY) {
+                    int uid = rules.keyAt(i);
+                    ranges[numUids] = new UidRange(uid, uid);
+                    numUids++;
+                }
+            }
+            // As above; usually numUids == ranges.length, but not always.
+            if (numUids != ranges.length) {
+                ranges = Arrays.copyOf(ranges, numUids);
+            }
+            // ... with no exceptions.
+            exemptUids = new int[0];
+        }
+
+        try {
+            mNetdService.socketDestroy(ranges, exemptUids);
+        } catch(RemoteException | ServiceSpecificException e) {
+            Slog.e(TAG, "Error closing sockets after enabling chain " + chainName + ": " + e);
+        }
+    }
+
     @Override
     public void setFirewallChainEnabled(int chain, boolean enable) {
         enforceSystemUid();
@@ -2059,25 +2172,35 @@
             mFirewallChainStates.put(chain, enable);
 
             final String operation = enable ? "enable_chain" : "disable_chain";
+            final String chainName;
+            switch(chain) {
+                case FIREWALL_CHAIN_STANDBY:
+                    chainName = FIREWALL_CHAIN_NAME_STANDBY;
+                    break;
+                case FIREWALL_CHAIN_DOZABLE:
+                    chainName = FIREWALL_CHAIN_NAME_DOZABLE;
+                    break;
+                case FIREWALL_CHAIN_POWERSAVE:
+                    chainName = FIREWALL_CHAIN_NAME_POWERSAVE;
+                    break;
+                default:
+                    throw new IllegalArgumentException("Bad child chain: " + chain);
+            }
+
             try {
-                String chainName;
-                switch(chain) {
-                    case FIREWALL_CHAIN_STANDBY:
-                        chainName = FIREWALL_CHAIN_NAME_STANDBY;
-                        break;
-                    case FIREWALL_CHAIN_DOZABLE:
-                        chainName = FIREWALL_CHAIN_NAME_DOZABLE;
-                        break;
-                    case FIREWALL_CHAIN_POWERSAVE:
-                        chainName = FIREWALL_CHAIN_NAME_POWERSAVE;
-                        break;
-                    default:
-                        throw new IllegalArgumentException("Bad child chain: " + chain);
-                }
                 mConnector.execute("firewall", operation, chainName);
             } catch (NativeDaemonConnectorException e) {
                 throw e.rethrowAsParcelableException();
             }
+
+            // Close any sockets that were opened by the affected UIDs. This has to be done after
+            // disabling network connectivity, in case they react to the socket close by reopening
+            // the connection and race with the iptables commands that enable the firewall. All
+            // whitelist and blacklist chains allow RSTs through.
+            if (enable) {
+                if (DBG) Slog.d(TAG, "Closing sockets after enabling chain " + chainName);
+                closeSocketsForFirewallChainLocked(chain, chainName);
+            }
         }
     }
 
@@ -2376,7 +2499,7 @@
     }
 
     private void dumpUidFirewallRule(PrintWriter pw, String name, SparseIntArray rules) {
-        pw.print("UID firewall");
+        pw.print("UID firewall ");
         pw.print(name);
         pw.print(" rule: [");
         final int size = rules.size();
diff --git a/services/core/java/com/android/server/TextServicesManagerService.java b/services/core/java/com/android/server/TextServicesManagerService.java
index a628747..4b0d4be 100644
--- a/services/core/java/com/android/server/TextServicesManagerService.java
+++ b/services/core/java/com/android/server/TextServicesManagerService.java
@@ -166,7 +166,7 @@
         mMonitor = new TextServicesMonitor();
         mMonitor.register(context, null, true);
         final boolean useCopyOnWriteSettings =
-                !mSystemReady || !mUserManager.isUserUnlocked(userId);
+                !mSystemReady || !mUserManager.isUserUnlockingOrUnlocked(userId);
         mSettings = new TextServicesSettings(context.getContentResolver(), userId,
                 useCopyOnWriteSettings);
 
@@ -176,7 +176,7 @@
 
     private void resetInternalState(@UserIdInt int userId) {
         final boolean useCopyOnWriteSettings =
-                !mSystemReady || !mUserManager.isUserUnlocked(userId);
+                !mSystemReady || !mUserManager.isUserUnlockingOrUnlocked(userId);
         mSettings.switchCurrentUser(userId, useCopyOnWriteSettings);
         updateCurrentProfileIds();
         unbindServiceLocked();
diff --git a/services/core/java/com/android/server/accounts/AccountManagerService.java b/services/core/java/com/android/server/accounts/AccountManagerService.java
index 480da72..98b3b08 100644
--- a/services/core/java/com/android/server/accounts/AccountManagerService.java
+++ b/services/core/java/com/android/server/accounts/AccountManagerService.java
@@ -304,7 +304,7 @@
     }
 
     private final SparseArray<UserAccounts> mUsers = new SparseArray<>();
-    private final SparseBooleanArray mUnlockedUsers = new SparseBooleanArray();
+    private final SparseBooleanArray mLocalUnlockedUsers = new SparseBooleanArray();
 
     private static AtomicReference<AccountManagerService> sThis = new AtomicReference<>();
     private static final Account[] EMPTY_ACCOUNT_ARRAY = new Account[]{};
@@ -409,7 +409,6 @@
      */
     public void validateAccounts(int userId) {
         final UserAccounts accounts = getUserAccounts(userId);
-
         // Invalidate user-specific cache to make sure we catch any
         // removed authenticators.
         validateAccountsInternal(accounts, true /* invalidateAuthenticatorCache */);
@@ -424,17 +423,15 @@
         if (Log.isLoggable(TAG, Log.DEBUG)) {
             Log.d(TAG, "validateAccountsInternal " + accounts.userId
                     + " isCeDatabaseAttached=" + accounts.openHelper.isCeDatabaseAttached()
-                    + " userLocked=" + mUnlockedUsers.get(accounts.userId));
+                    + " userLocked=" + mLocalUnlockedUsers.get(accounts.userId));
         }
+
         if (invalidateAuthenticatorCache) {
             mAuthenticatorCache.invalidateCache(accounts.userId);
         }
 
-        final HashMap<String, Integer> knownAuth = new HashMap<>();
-        for (RegisteredServicesCache.ServiceInfo<AuthenticatorDescription> service :
-                mAuthenticatorCache.getAllServices(accounts.userId)) {
-            knownAuth.put(service.type.type, service.uid);
-        }
+        final HashMap<String, Integer> knownAuth = getAuthenticatorTypeAndUIDForUser(
+                mAuthenticatorCache, accounts.userId);
 
         synchronized (accounts.cacheLock) {
             final SQLiteDatabase db = accounts.openHelper.getWritableDatabase();
@@ -452,6 +449,7 @@
             // Create a list of authenticator type whose previous uid no longer exists
             HashSet<String> obsoleteAuthType = Sets.newHashSet();
             try {
+                SparseBooleanArray knownUids = null;
                 while (metaCursor.moveToNext()) {
                     String type = TextUtils.split(metaCursor.getString(0), META_KEY_DELIMITER)[1];
                     String uid = metaCursor.getString(1);
@@ -466,23 +464,48 @@
                         // Remove it from the knownAuth list if it's unchanged.
                         knownAuth.remove(type);
                     } else {
-                        // Only add it to the list if it no longer exists or uid different
-                        obsoleteAuthType.add(type);
-                        // And delete it from the TABLE_META
-                        db.delete(
-                                TABLE_META,
-                                META_KEY + "=? AND " + META_VALUE + "=?",
-                                new String[] {
-                                        META_KEY_FOR_AUTHENTICATOR_UID_FOR_TYPE_PREFIX + type,
-                                        uid}
-                                );
+                        /*
+                         * The authenticator is presently not cached and should only be triggered
+                         * when we think an authenticator has been removed (or is being updated).
+                         * But we still want to check if any data with the associated uid is
+                         * around. This is an (imperfect) signal that the package may be updating.
+                         *
+                         * A side effect of this is that an authenticator sharing a uid with
+                         * multiple apps won't get its credentials wiped as long as some app with
+                         * that uid is still on the device. But I suspect that this is a rare case.
+                         * And it isn't clear to me how an attacker could really exploit that
+                         * feature.
+                         *
+                         * The upshot is that we don't have to worry about accounts getting
+                         * uninstalled while the authenticator's package is being updated.
+                         *
+                         */
+                        if (knownUids == null) {
+                            knownUids = getUidsOfInstalledOrUpdatedPackagesAsUser(accounts.userId); 
+                        }
+                        if (!knownUids.get(Integer.parseInt(uid))) {
+                            // The authenticator is not presently available to the cache. And the
+                            // package no longer has a data directory (so we surmise it isn't updating).
+                            // So purge its data from the account databases.
+                            obsoleteAuthType.add(type);
+                            // And delete it from the TABLE_META
+                            db.delete(
+                                    TABLE_META,
+                                    META_KEY + "=? AND " + META_VALUE + "=?",
+                                    new String[] {
+                                            META_KEY_FOR_AUTHENTICATOR_UID_FOR_TYPE_PREFIX + type,
+                                            uid}
+                                    );
+                        }
                     }
                 }
             } finally {
                 metaCursor.close();
             }
 
-            // Add the newly registered authenticator to TABLE_META
+            // Add the newly registered authenticator to TABLE_META. If old authenticators have
+            // been renabled (after being updated for example), then we just overwrite the old
+            // values.
             Iterator<Entry<String, Integer>> iterator = knownAuth.entrySet().iterator();
             while (iterator.hasNext()) {
                 Entry<String, Integer> entry = iterator.next();
@@ -490,7 +513,7 @@
                 values.put(META_KEY,
                         META_KEY_FOR_AUTHENTICATOR_UID_FOR_TYPE_PREFIX + entry.getKey());
                 values.put(META_VALUE, entry.getValue());
-                db.insert(TABLE_META, null, values);
+                db.insertWithOnConflict(TABLE_META, null, values, SQLiteDatabase.CONFLICT_REPLACE);
             }
 
             Cursor cursor = db.query(TABLE_ACCOUNTS,
@@ -544,10 +567,32 @@
         }
     }
 
+    private SparseBooleanArray getUidsOfInstalledOrUpdatedPackagesAsUser(int userId) {
+        // Get the UIDs of all apps that might have data on the device. We want
+        // to preserve user data if the app might otherwise be storing data.
+        List<PackageInfo> pkgsWithData =
+                mPackageManager.getInstalledPackagesAsUser(
+                        PackageManager.MATCH_UNINSTALLED_PACKAGES, userId);
+        SparseBooleanArray knownUids = new SparseBooleanArray(pkgsWithData.size());
+        for (PackageInfo pkgInfo : pkgsWithData) {
+            if (pkgInfo.applicationInfo != null
+                    && (pkgInfo.applicationInfo.flags & ApplicationInfo.FLAG_INSTALLED) != 0) {
+                knownUids.put(pkgInfo.applicationInfo.uid, true);
+            }
+        }
+        return knownUids;
+    }
+
     private static HashMap<String, Integer> getAuthenticatorTypeAndUIDForUser(
             Context context,
             int userId) {
         AccountAuthenticatorCache authCache = new AccountAuthenticatorCache(context);
+        return getAuthenticatorTypeAndUIDForUser(authCache, userId);
+    }
+
+    private static HashMap<String, Integer> getAuthenticatorTypeAndUIDForUser(
+            IAccountAuthenticatorCache authCache,
+            int userId) {
         HashMap<String, Integer> knownAuth = new HashMap<>();
         for (RegisteredServicesCache.ServiceInfo<AuthenticatorDescription> service : authCache
                 .getAllServices(userId)) {
@@ -575,7 +620,7 @@
                 validateAccounts = true;
             }
             // open CE database if necessary
-            if (!accounts.openHelper.isCeDatabaseAttached() && mUnlockedUsers.get(userId)) {
+            if (!accounts.openHelper.isCeDatabaseAttached() && mLocalUnlockedUsers.get(userId)) {
                 Log.i(TAG, "User " + userId + " is unlocked - opening CE database");
                 synchronized (accounts.cacheLock) {
                     File preNDatabaseFile = new File(getPreNDatabaseName(userId));
@@ -648,8 +693,8 @@
         synchronized (mUsers) {
             accounts = mUsers.get(userId);
             mUsers.remove(userId);
-            userUnlocked = mUnlockedUsers.get(userId);
-            mUnlockedUsers.delete(userId);
+            userUnlocked = mLocalUnlockedUsers.get(userId);
+            mLocalUnlockedUsers.delete(userId);
         }
         if (accounts != null) {
             synchronized (accounts.cacheLock) {
@@ -686,7 +731,7 @@
             Log.v(TAG, "onUserUnlocked " + userId);
         }
         synchronized (mUsers) {
-            mUnlockedUsers.put(userId, true);
+            mLocalUnlockedUsers.put(userId, true);
         }
         if (userId < 1) return;
         syncSharedAccounts(userId);
@@ -746,7 +791,7 @@
         if (account == null) {
             return null;
         }
-        if (!isUserUnlocked(accounts.userId)) {
+        if (!isLocalUnlockedUser(accounts.userId)) {
             Log.w(TAG, "Password is not available - user " + accounts.userId + " data is locked");
             return null;
         }
@@ -828,7 +873,7 @@
                     account.type);
             throw new SecurityException(msg);
         }
-        if (!isUserUnlocked(userId)) {
+        if (!isLocalUnlockedUser(userId)) {
             Log.w(TAG, "User " + userId + " data is locked. callingUid " + callingUid);
             return null;
         }
@@ -1109,7 +1154,7 @@
         if (account == null) {
             return false;
         }
-        if (!isUserUnlocked(accounts.userId)) {
+        if (!isLocalUnlockedUser(accounts.userId)) {
             Log.w(TAG, "Account " + account + " cannot be added - user " + accounts.userId
                     + " is locked. callingUid=" + callingUid);
             return false;
@@ -1176,9 +1221,9 @@
         return true;
     }
 
-    private boolean isUserUnlocked(int userId) {
+    private boolean isLocalUnlockedUser(int userId) {
         synchronized (mUsers) {
-            return mUnlockedUsers.get(userId);
+            return mLocalUnlockedUsers.get(userId);
         }
     }
 
@@ -1193,7 +1238,7 @@
         for (UserInfo user : users) {
             if (user.isRestricted() && (parentUserId == user.restrictedProfileParentId)) {
                 addSharedAccountAsUser(account, user.id);
-                if (getUserManager().isUserUnlocked(user.id)) {
+                if (isLocalUnlockedUser(user.id)) {
                     mMessageHandler.sendMessage(mMessageHandler.obtainMessage(
                             MESSAGE_COPY_SHARED_ACCOUNT, parentUserId, user.id, account));
                 }
@@ -1597,7 +1642,7 @@
 
     private boolean removeAccountInternal(UserAccounts accounts, Account account, int callingUid) {
         int deleted;
-        boolean userUnlocked = isUserUnlocked(accounts.userId);
+        boolean userUnlocked = isLocalUnlockedUser(accounts.userId);
         if (!userUnlocked) {
             Slog.i(TAG, "Removing account " + account + " while user "+ accounts.userId
                     + " is still locked. CE data will be removed later");
@@ -1792,7 +1837,7 @@
                     account.type);
             throw new SecurityException(msg);
         }
-        if (!isUserUnlocked(userId)) {
+        if (!isLocalUnlockedUser(userId)) {
             Log.w(TAG, "Authtoken not available - user " + userId + " data is locked. callingUid "
                     + callingUid);
             return null;
@@ -4037,8 +4082,7 @@
                 return false;
             }
 
-            final ActivityManager am = mContext.getSystemService(ActivityManager.class);
-            if (am.isUserRunningAndLocked(mAccounts.userId)
+            if (!isLocalUnlockedUser(mAccounts.userId)
                     && !authenticatorInfo.componentInfo.directBootAware) {
                 Slog.w(TAG, "Blocking binding to authenticator " + authenticatorInfo.componentName
                         + " which isn't encryption aware");
diff --git a/services/core/java/com/android/server/am/ActivityManagerService.java b/services/core/java/com/android/server/am/ActivityManagerService.java
index 9d7ddc7..2153a2c 100644
--- a/services/core/java/com/android/server/am/ActivityManagerService.java
+++ b/services/core/java/com/android/server/am/ActivityManagerService.java
@@ -1946,9 +1946,7 @@
                     startPersistentApps(PackageManager.MATCH_DIRECT_BOOT_UNAWARE);
                 }
                 installEncryptionUnawareProviders(userId);
-                if (msg.obj instanceof ProgressReporter) {
-                    ((ProgressReporter) msg.obj).finish();
-                }
+                mUserController.finishUserUnlocked((UserState) msg.obj);
                 break;
             }
             case SYSTEM_USER_CURRENT_MSG: {
@@ -3726,13 +3724,16 @@
             }
             checkTime(startTime, "startProcess: done updating pids map");
         } catch (RuntimeException e) {
-            // XXX do better error recovery.
-            app.setPid(0);
-            mBatteryStatsService.noteProcessFinish(app.processName, app.info.uid);
-            if (app.isolated) {
-                mBatteryStatsService.removeIsolatedUid(app.uid, app.info.uid);
-            }
             Slog.e(TAG, "Failure starting process " + app.processName, e);
+
+            // Something went very wrong while trying to start this process; one
+            // common case is when the package is frozen due to an active
+            // upgrade. To recover, clean up any active bookkeeping related to
+            // starting this process. (We already invoked this method once when
+            // the package was initially frozen through KILL_APPLICATION_MSG, so
+            // it doesn't hurt to use it again.)
+            forceStopPackageLocked(app.info.packageName, UserHandle.getAppId(app.uid), false,
+                    false, true, false, false, UserHandle.getUserId(app.userId), "start failure");
         }
     }
 
@@ -3791,6 +3792,8 @@
                 intent.setFlags(intent.getFlags() | Intent.FLAG_ACTIVITY_NEW_TASK);
                 mActivityStarter.startHomeActivityLocked(intent, aInfo, reason);
             }
+        } else {
+            Slog.wtf(TAG, "No home screen found for " + intent, new Throwable());
         }
 
         return true;
@@ -5949,6 +5952,15 @@
 
     }
 
+    final boolean clearBroadcastQueueForUserLocked(int userId) {
+        boolean didSomething = false;
+        for (int i = mBroadcastQueues.length - 1; i >= 0; i--) {
+            didSomething |= mBroadcastQueues[i].cleanupDisabledPackageReceiversLocked(
+                    null, null, userId, true);
+        }
+        return didSomething;
+    }
+
     final boolean forceStopPackageLocked(String packageName, int appId,
             boolean callerWillRestart, boolean purgeCache, boolean doit,
             boolean evenPersistent, boolean uninstalling, int userId, String reason) {
@@ -6304,7 +6316,11 @@
         app.debugging = false;
         app.cached = false;
         app.killedByAm = false;
-        app.unlocked = mContext.getSystemService(UserManager.class).isUserUnlocked(app.userId);
+
+        // We carefully use the same state that PackageManager uses for
+        // filtering, since we use this flag to decide if we need to install
+        // providers when user is unlocked later
+        app.unlocked = StorageManager.isUserKeyUnlocked(app.userId);
 
         mHandler.removeMessages(PROC_START_TIMEOUT_MSG, app);
 
@@ -7329,9 +7345,11 @@
                             + "Picture-In-Picture not supported for r=" + r);
                 }
 
-                // Use the default launch bounds for pinned stack if it doesn't exist yet.
-                final Rect bounds = (mStackSupervisor.getStack(PINNED_STACK_ID) == null)
-                        ? mDefaultPinnedStackBounds : null;
+                // Use the default launch bounds for pinned stack if it doesn't exist yet or use the
+                // current bounds.
+                final ActivityStack pinnedStack = mStackSupervisor.getStack(PINNED_STACK_ID);
+                final Rect bounds = (pinnedStack != null)
+                        ? pinnedStack.mBounds : mDefaultPinnedStackBounds;
 
                 mStackSupervisor.moveActivityToPinnedStackLocked(
                         r, "enterPictureInPictureMode", bounds);
@@ -9689,7 +9707,7 @@
      */
     @Override
     public boolean moveTaskToDockedStack(int taskId, int createMode, boolean toTop, boolean animate,
-            Rect initialBounds) {
+            Rect initialBounds, boolean moveHomeStackFront) {
         enforceCallingPermission(MANAGE_ACTIVITY_STACKS, "moveTaskToDockedStack()");
         synchronized (this) {
             long ident = Binder.clearCallingIdentity();
@@ -9697,9 +9715,16 @@
                 if (DEBUG_STACK) Slog.d(TAG_STACK, "moveTaskToDockedStack: moving task=" + taskId
                         + " to createMode=" + createMode + " toTop=" + toTop);
                 mWindowManager.setDockedStackCreateState(createMode, initialBounds);
-                return mStackSupervisor.moveTaskToStackLocked(
-                        taskId, DOCKED_STACK_ID, toTop, !FORCE_FOCUS,
-                        "moveTaskToDockedStack", animate);
+                final boolean moved = mStackSupervisor.moveTaskToStackLocked(
+                        taskId, DOCKED_STACK_ID, toTop, !FORCE_FOCUS, "moveTaskToDockedStack",
+                        animate, DEFER_RESUME);
+                if (moved) {
+                    if (moveHomeStackFront) {
+                        mStackSupervisor.moveHomeStackToFront("moveTaskToDockedStack");
+                    }
+                    mStackSupervisor.ensureActivitiesVisibleLocked(null, 0, !PRESERVE_WINDOWS);
+                }
+                return moved;
             } finally {
                 Binder.restoreCallingIdentity(ident);
             }
@@ -11024,14 +11049,6 @@
      * belonging to any running apps.
      */
     private void installEncryptionUnawareProviders(int userId) {
-        if (!StorageManager.isFileEncryptedNativeOrEmulated()) {
-            // TODO: eventually pivot this back to look at current user state,
-            // similar to the comment in UserManager.isUserUnlocked(), but for
-            // now, if we started apps when "unlocked" then unaware providers
-            // have already been spun up.
-            return;
-        }
-
         // We're only interested in providers that are encryption unaware, and
         // we don't care about uninstalled apps, since there's no way they're
         // running at this point.
@@ -17178,6 +17195,7 @@
             if (isProtectedBroadcast
                     || Intent.ACTION_CLOSE_SYSTEM_DIALOGS.equals(action)
                     || Intent.ACTION_DISMISS_KEYBOARD_SHORTCUTS.equals(action)
+                    || Intent.ACTION_MEDIA_BUTTON.equals(action)
                     || Intent.ACTION_MEDIA_SCANNER_SCAN_FILE.equals(action)
                     || Intent.ACTION_SHOW_KEYBOARD_SHORTCUTS.equals(action)
                     || AppWidgetManager.ACTION_APPWIDGET_CONFIGURE.equals(action)
diff --git a/services/core/java/com/android/server/am/ActivityRecord.java b/services/core/java/com/android/server/am/ActivityRecord.java
index a7f4314..fa69b4a 100755
--- a/services/core/java/com/android/server/am/ActivityRecord.java
+++ b/services/core/java/com/android/server/am/ActivityRecord.java
@@ -21,6 +21,7 @@
 import static android.app.ActivityManager.StackId.PINNED_STACK_ID;
 import static android.content.pm.ActivityInfo.RESIZE_MODE_CROP_WINDOWS;
 import static android.content.pm.ActivityInfo.FLAG_ALWAYS_FOCUSABLE;
+import static android.content.pm.ActivityInfo.RESIZE_MODE_RESIZEABLE;
 import static android.content.pm.ActivityInfo.RESIZE_MODE_RESIZEABLE_AND_PIPABLE;
 import static com.android.server.am.ActivityManagerDebugConfig.DEBUG_CONFIGURATION;
 import static com.android.server.am.ActivityManagerDebugConfig.DEBUG_SWITCH;
@@ -591,7 +592,7 @@
             ActivityRecord _resultTo, String _resultWho, int _reqCode,
             boolean _componentSpecified, boolean _rootVoiceInteraction,
             ActivityStackSupervisor supervisor,
-            ActivityContainer container, ActivityOptions options) {
+            ActivityContainer container, ActivityOptions options, ActivityRecord sourceRecord) {
         service = _service;
         appToken = new Token(this, service);
         info = aInfo;
@@ -704,23 +705,12 @@
             noDisplay = ent != null && ent.array.getBoolean(
                     com.android.internal.R.styleable.Window_windowNoDisplay, false);
 
-            if ((!_componentSpecified || _launchedFromUid == Process.myUid()
-                    || _launchedFromUid == 0) &&
-                    Intent.ACTION_MAIN.equals(_intent.getAction()) &&
-                    _intent.hasCategory(Intent.CATEGORY_HOME) &&
-                    _intent.getCategories().size() == 1 &&
-                    _intent.getData() == null &&
-                    _intent.getType() == null &&
-                    !isResolverActivity()) {
-                // This sure looks like a home activity!
-                mActivityType = HOME_ACTIVITY_TYPE;
-            } else if (realActivity.getClassName().contains(RECENTS_PACKAGE_NAME)) {
-                mActivityType = RECENTS_ACTIVITY_TYPE;
-            } else {
-                mActivityType = APPLICATION_ACTIVITY_TYPE;
-            }
+            setActivityType(_componentSpecified, _launchedFromUid, _intent, sourceRecord);
 
             immersive = (aInfo.flags & ActivityInfo.FLAG_IMMERSIVE) != 0;
+
+            requestedVrComponent = (aInfo.requestedVrComponent == null) ?
+                    null : ComponentName.unflattenFromString(aInfo.requestedVrComponent);
         } else {
             realActivity = null;
             taskAffinity = null;
@@ -732,6 +722,37 @@
             noDisplay = false;
             mActivityType = APPLICATION_ACTIVITY_TYPE;
             immersive = false;
+            requestedVrComponent  = null;
+        }
+    }
+
+    private boolean isHomeIntent(Intent intent) {
+        return Intent.ACTION_MAIN.equals(intent.getAction())
+                && intent.hasCategory(Intent.CATEGORY_HOME)
+                && intent.getCategories().size() == 1
+                && intent.getData() == null
+                && intent.getType() == null;
+    }
+
+    private boolean canLaunchHomeActivity(int uid, ActivityRecord sourceRecord) {
+        if (uid == Process.myUid() || uid == 0) {
+            // System process can launch home activity.
+            return true;
+        }
+        // Resolver activity can launch home activity.
+        return sourceRecord != null && sourceRecord.isResolverActivity();
+    }
+
+    private void setActivityType(boolean componentSpecified,
+            int launchedFromUid, Intent intent, ActivityRecord sourceRecord) {
+        if ((!componentSpecified || canLaunchHomeActivity(launchedFromUid, sourceRecord))
+                && isHomeIntent(intent) && !isResolverActivity()) {
+            // This sure looks like a home activity!
+            mActivityType = HOME_ACTIVITY_TYPE;
+        } else if (realActivity.getClassName().contains(RECENTS_PACKAGE_NAME)) {
+            mActivityType = RECENTS_ACTIVITY_TYPE;
+        } else {
+            mActivityType = APPLICATION_ACTIVITY_TYPE;
         }
     }
 
@@ -818,6 +839,11 @@
         return !isHomeActivity() && (isResizeable() || service.mForceResizableActivities);
     }
 
+    boolean isNonResizableOrForced() {
+        return !isHomeActivity() && info.resizeMode != RESIZE_MODE_RESIZEABLE
+                && info.resizeMode != RESIZE_MODE_RESIZEABLE_AND_PIPABLE;
+    }
+
     boolean supportsPictureInPicture() {
         return !isHomeActivity() && info.resizeMode == RESIZE_MODE_RESIZEABLE_AND_PIPABLE;
     }
@@ -1463,7 +1489,7 @@
         }
         final ActivityRecord r = new ActivityRecord(service, /*caller*/null, launchedFromUid,
                 launchedFromPackage, intent, resolvedType, aInfo, service.getConfiguration(),
-                null, null, 0, componentSpecified, false, stackSupervisor, null, null);
+                null, null, 0, componentSpecified, false, stackSupervisor, null, null, null);
 
         r.persistentState = persistentState;
         r.taskDescription = taskDescription;
diff --git a/services/core/java/com/android/server/am/ActivityStack.java b/services/core/java/com/android/server/am/ActivityStack.java
index a7c994b..d751a32 100644
--- a/services/core/java/com/android/server/am/ActivityStack.java
+++ b/services/core/java/com/android/server/am/ActivityStack.java
@@ -3438,7 +3438,9 @@
                 mWindowManager.prepareAppTransition(transit, false);
                 mWindowManager.setAppVisibility(r.appToken, false);
                 mWindowManager.executeAppTransition();
-                mStackSupervisor.mWaitingVisibleActivities.add(r);
+                if (!mStackSupervisor.mWaitingVisibleActivities.contains(r)) {
+                    mStackSupervisor.mWaitingVisibleActivities.add(r);
+                }
             }
             return finishCurrentActivityLocked(r, (r.visible || r.nowVisible) ?
                     FINISH_AFTER_VISIBLE : FINISH_AFTER_PAUSE, oomAdj) == null;
@@ -3457,7 +3459,11 @@
         // First things first: if this activity is currently visible,
         // and the resumed activity is not yet visible, then hold off on
         // finishing until the resumed one becomes visible.
-        if (mode == FINISH_AFTER_VISIBLE && (r.visible || r.nowVisible)) {
+
+        final ActivityRecord next = mStackSupervisor.topRunningActivityLocked();
+
+        if (mode == FINISH_AFTER_VISIBLE && (r.visible || r.nowVisible)
+                && next != null && !next.nowVisible) {
             if (!mStackSupervisor.mStoppingActivities.contains(r)) {
                 addToStopping(r, false /* immediate */);
             }
@@ -3482,11 +3488,10 @@
         r.state = ActivityState.FINISHING;
 
         if (mode == FINISH_IMMEDIATELY
-                || (mode == FINISH_AFTER_PAUSE && prevState == ActivityState.PAUSED)
+                || (prevState == ActivityState.PAUSED
+                    && (mode == FINISH_AFTER_PAUSE || mStackId == PINNED_STACK_ID))
                 || prevState == ActivityState.STOPPED
                 || prevState == ActivityState.INITIALIZING) {
-            // If this activity is already stopped, we can just finish
-            // it right now.
             r.makeFinishingLocked();
             boolean activityRemoved = destroyActivityLocked(r, true, "finish-imm");
             if (activityRemoved) {
diff --git a/services/core/java/com/android/server/am/ActivityStackSupervisor.java b/services/core/java/com/android/server/am/ActivityStackSupervisor.java
index f281683..20ef0e8 100644
--- a/services/core/java/com/android/server/am/ActivityStackSupervisor.java
+++ b/services/core/java/com/android/server/am/ActivityStackSupervisor.java
@@ -1097,7 +1097,21 @@
             // Don't debug things in the system process
             if (!aInfo.processName.equals("system")) {
                 if ((startFlags & ActivityManager.START_FLAG_DEBUG) != 0) {
-                    mService.setDebugApp(aInfo.processName, true, false);
+                    final ProcessRecord app = mService.getProcessRecordLocked(
+                            aInfo.processName, aInfo.applicationInfo.uid, true);
+                    // If the process already started, we can't wait for debugger and shouldn't
+                    // modify the debug settings.
+                    // For non-persistent debug, normally we set the debug app here, and restores
+                    // to the original at attachApplication time. However, if the app process
+                    // already exists, we won't get another attachApplication, and the debug setting
+                    // never gets restored. Furthermore, if we get two such calls back-to-back,
+                    // both mOrigDebugApp and mDebugApp will become the same app, and it won't be
+                    // cleared even if we get attachApplication after the app process is killed.
+                    if (app == null || app.thread == null) {
+                        mService.setDebugApp(aInfo.processName, true, false);
+                    } else {
+                        Slog.w(TAG, "Ignoring waitForDebugger because process already exists");
+                    }
                 }
 
                 if ((startFlags & ActivityManager.START_FLAG_NATIVE_DEBUGGING) != 0) {
@@ -2983,7 +2997,11 @@
     }
 
     boolean switchUserLocked(int userId, UserState uss) {
-        mUserStackInFront.put(mCurrentUser, mFocusedStack.getStackId());
+        final int focusStackId = mFocusedStack.getStackId();
+        // We dismiss the docked stack whenever we switch users.
+        moveTasksToFullscreenStackLocked(DOCKED_STACK_ID, focusStackId == DOCKED_STACK_ID);
+
+        mUserStackInFront.put(mCurrentUser, focusStackId);
         final int restoreStackId = mUserStackInFront.get(userId, HOME_STACK_ID);
         mCurrentUser = userId;
 
@@ -3490,16 +3508,17 @@
             return;
         }
 
+        final ActivityRecord topActivity = task.getTopActivity();
         if (!task.canGoInDockedStack() || forceNonResizable) {
             // Display a warning toast that we tried to put a non-dockable task in the docked stack.
             mService.mHandler.sendEmptyMessage(NOTIFY_ACTIVITY_DISMISSING_DOCKED_STACK_MSG);
 
             // Dismiss docked stack. If task appeared to be in docked stack but is not resizable -
             // we need to move it to top of fullscreen stack, otherwise it will be covered.
-            mService.moveTasksToFullscreenStack(DOCKED_STACK_ID, actualStackId == DOCKED_STACK_ID);
-        } else if (task.mResizeMode == RESIZE_MODE_FORCE_RESIZEABLE) {
-            String packageName = task.getTopActivity() != null
-                    ? task.getTopActivity().appInfo.packageName : null;
+            moveTasksToFullscreenStackLocked(DOCKED_STACK_ID, actualStackId == DOCKED_STACK_ID);
+        } else if (topActivity != null && topActivity.isNonResizableOrForced()
+                && !topActivity.noDisplay) {
+            String packageName = topActivity.appInfo.packageName;
             mService.mHandler.obtainMessage(NOTIFY_FORCED_RESIZABLE_MSG, task.taskId, 0,
                     packageName).sendToTarget();
         }
diff --git a/services/core/java/com/android/server/am/ActivityStarter.java b/services/core/java/com/android/server/am/ActivityStarter.java
index 6622b34..c15effb 100644
--- a/services/core/java/com/android/server/am/ActivityStarter.java
+++ b/services/core/java/com/android/server/am/ActivityStarter.java
@@ -171,6 +171,7 @@
     private boolean mMovedToFront;
     private boolean mNoAnimation;
     private boolean mKeepCurTransition;
+    private boolean mAvoidMoveToFront;
 
     private IVoiceInteractionSession mVoiceSession;
     private IVoiceInteractor mVoiceInteractor;
@@ -207,6 +208,7 @@
         mMovedToFront = false;
         mNoAnimation = false;
         mKeepCurTransition = false;
+        mAvoidMoveToFront = false;
 
         mVoiceSession = null;
         mVoiceInteractor = null;
@@ -490,7 +492,7 @@
         ActivityRecord r = new ActivityRecord(mService, callerApp, callingUid, callingPackage,
                 intent, resolvedType, aInfo, mService.mConfiguration, resultRecord, resultWho,
                 requestCode, componentSpecified, voiceSession != null, mSupervisor, container,
-                options);
+                options, sourceRecord);
         if (outActivity != null) {
             outActivity[0] = r;
         }
@@ -683,8 +685,8 @@
                     Binder.restoreCallingIdentity(token);
                 }
                 if (parent != null
-                        && userManager.isUserUnlocked(parent.getUserHandle())
-                        && !userManager.isUserUnlocked(userInfo.getUserHandle())) {
+                        && userManager.isUserUnlockingOrUnlocked(parent.getUserHandle())
+                        && !userManager.isUserUnlockingOrUnlocked(userInfo.getUserHandle())) {
                     rInfo = mSupervisor.resolveIntent(intent, resolvedType, userId,
                             PackageManager.MATCH_DIRECT_BOOT_AWARE
                                     | PackageManager.MATCH_DIRECT_BOOT_UNAWARE);
@@ -1223,6 +1225,18 @@
             mDoResume = false;
         }
 
+        if (mOptions != null && mOptions.getLaunchTaskId() != -1 && mOptions.getAvoidMoveToFront()) {
+            final TaskRecord task = mSupervisor.anyTaskForIdLocked(mOptions.getLaunchTaskId());
+            final ActivityRecord top = task != null ? task.getTopActivity() : null;
+            if (top != null && !top.visible) {
+
+                // The caller specifies that we'd like to be avoided to be moved to the front, so be
+                // it!
+                mDoResume = false;
+                mAvoidMoveToFront = true;
+            }
+        }
+
         mNotTop = (mLaunchFlags & FLAG_ACTIVITY_PREVIOUS_IS_TOP) != 0 ? r : null;
 
         mInTask = inTask;
@@ -1419,8 +1433,9 @@
         ActivityRecord curTop = (focusStack == null)
                 ? null : focusStack.topRunningNonDelayedActivityLocked(mNotTop);
 
-        if (curTop != null && (curTop.task != intentActivity.task ||
-                curTop.task != focusStack.topTask())) {
+        if (curTop != null
+                && (curTop.task != intentActivity.task || curTop.task != focusStack.topTask())
+                && !mAvoidMoveToFront) {
             mStartActivity.intent.addFlags(Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT);
             if (mSourceRecord == null || (mSourceStack.topActivity() != null &&
                     mSourceStack.topActivity().task == mSourceRecord.task)) {
@@ -1582,9 +1597,6 @@
     private void setTaskFromReuseOrCreateNewTask(TaskRecord taskToAffiliate) {
         mTargetStack = computeStackFocus(mStartActivity, true, mLaunchBounds, mLaunchFlags,
                 mOptions);
-        if (mDoResume) {
-            mTargetStack.moveToFront("startingNewTask");
-        }
 
         if (mReuseTask == null) {
             final TaskRecord task = mTargetStack.createTaskRecord(
@@ -1631,7 +1643,7 @@
             mTargetStack.moveToFront("sourceStackToFront");
         }
         final TaskRecord topTask = mTargetStack.topTask();
-        if (topTask != sourceTask) {
+        if (topTask != sourceTask && !mAvoidMoveToFront) {
             mTargetStack.moveTaskToFrontLocked(sourceTask, mNoAnimation, mOptions,
                     mStartActivity.appTimeTracker, "sourceTaskToFront");
         }
diff --git a/services/core/java/com/android/server/am/AppErrors.java b/services/core/java/com/android/server/am/AppErrors.java
index e9ed34b..3ed9969 100644
--- a/services/core/java/com/android/server/am/AppErrors.java
+++ b/services/core/java/com/android/server/am/AppErrors.java
@@ -304,6 +304,15 @@
      * @param crashInfo describing the failure
      */
     void crashApplication(ProcessRecord r, ApplicationErrorReport.CrashInfo crashInfo) {
+        final long origId = Binder.clearCallingIdentity();
+        try {
+            crashApplicationInner(r, crashInfo);
+        } finally {
+            Binder.restoreCallingIdentity(origId);
+        }
+    }
+
+    void crashApplicationInner(ProcessRecord r, ApplicationErrorReport.CrashInfo crashInfo) {
         long timeMillis = System.currentTimeMillis();
         String shortMsg = crashInfo.exceptionClassName;
         String longMsg = crashInfo.exceptionMessage;
@@ -317,49 +326,20 @@
         AppErrorResult result = new AppErrorResult();
         TaskRecord task;
         synchronized (mService) {
-            if (mService.mController != null) {
-                try {
-                    String name = r != null ? r.processName : null;
-                    int pid = r != null ? r.pid : Binder.getCallingPid();
-                    int uid = r != null ? r.info.uid : Binder.getCallingUid();
-                    if (!mService.mController.appCrashed(name, pid,
-                            shortMsg, longMsg, timeMillis, crashInfo.stackTrace)) {
-                        if ("1".equals(SystemProperties.get(SYSTEM_DEBUGGABLE, "0"))
-                                && "Native crash".equals(crashInfo.exceptionClassName)) {
-                            Slog.w(TAG, "Skip killing native crashed app " + name
-                                    + "(" + pid + ") during testing");
-                        } else {
-                            Slog.w(TAG, "Force-killing crashed app " + name
-                                    + " at watcher's request");
-                            if (r != null) {
-                                r.kill("crash", true);
-                            } else {
-                                // Huh.
-                                Process.killProcess(pid);
-                                ActivityManagerService.killProcessGroup(uid, pid);
-                            }
-                        }
-                        return;
-                    }
-                } catch (RemoteException e) {
-                    mService.mController = null;
-                    Watchdog.getInstance().setActivityController(null);
-                }
+            /**
+             * If crash is handled by instance of {@link android.app.IActivityController},
+             * finish now and don't show the app error dialog.
+             */
+            if (handleAppCrashInActivityController(r, crashInfo, shortMsg, longMsg, stackTrace,
+                    timeMillis)) {
+                return;
             }
 
-            final long origId = Binder.clearCallingIdentity();
-
-            // If this process is running instrumentation, finish it.
+            /**
+             * If this process was running instrumentation, finish now - it will be handled in
+             * {@link ActivityManagerService#handleAppDiedLocked}.
+             */
             if (r != null && r.instrumentationClass != null) {
-                Slog.w(TAG, "Error in app " + r.processName
-                        + " running instrumentation " + r.instrumentationClass + ":");
-                if (shortMsg != null) Slog.w(TAG, "  " + shortMsg);
-                if (longMsg != null) Slog.w(TAG, "  " + longMsg);
-                Bundle info = new Bundle();
-                info.putString("shortMsg", shortMsg);
-                info.putString("longMsg", longMsg);
-                mService.finishInstrumentationLocked(r, Activity.RESULT_CANCELED, info);
-                Binder.restoreCallingIdentity(origId);
                 return;
             }
 
@@ -375,7 +355,6 @@
             // If we can't identify the process or it's already exceeded its crash quota,
             // quit right away without showing a crash dialog.
             if (r == null || !makeAppCrashingLocked(r, shortMsg, longMsg, stackTrace, data)) {
-                Binder.restoreCallingIdentity(origId);
                 return;
             }
 
@@ -385,97 +364,90 @@
             task = data.task;
             msg.obj = data;
             mService.mUiHandler.sendMessage(msg);
-
-            Binder.restoreCallingIdentity(origId);
         }
 
         int res = result.get();
 
         Intent appErrorIntent = null;
-        final long ident = Binder.clearCallingIdentity();
-        try {
-            MetricsLogger.action(mContext, MetricsProto.MetricsEvent.ACTION_APP_CRASH, res);
-            if (res == AppErrorDialog.TIMEOUT) {
-                res = AppErrorDialog.FORCE_QUIT;
-            }
-            if (res == AppErrorDialog.RESET) {
-                String[] packageList = r.getPackageList();
-                if (packageList != null) {
-                    PackageManager pm = mContext.getPackageManager();
-                    final Semaphore s = new Semaphore(0);
-                    for (int i = 0; i < packageList.length; i++) {
-                        if (i < packageList.length - 1) {
-                            pm.deleteApplicationCacheFiles(packageList[i], null);
-                        } else {
-                            pm.deleteApplicationCacheFiles(packageList[i],
-                                    new IPackageDataObserver.Stub() {
-                                        @Override
-                                        public void onRemoveCompleted(String packageName,
-                                                boolean succeeded) {
-                                            s.release();
-                                        }
-                                    });
+        MetricsLogger.action(mContext, MetricsProto.MetricsEvent.ACTION_APP_CRASH, res);
+        if (res == AppErrorDialog.TIMEOUT) {
+            res = AppErrorDialog.FORCE_QUIT;
+        }
+        if (res == AppErrorDialog.RESET) {
+            String[] packageList = r.getPackageList();
+            if (packageList != null) {
+                PackageManager pm = mContext.getPackageManager();
+                final Semaphore s = new Semaphore(0);
+                for (int i = 0; i < packageList.length; i++) {
+                    if (i < packageList.length - 1) {
+                        pm.deleteApplicationCacheFiles(packageList[i], null);
+                    } else {
+                        pm.deleteApplicationCacheFiles(packageList[i],
+                                new IPackageDataObserver.Stub() {
+                                    @Override
+                                    public void onRemoveCompleted(String packageName,
+                                                                  boolean succeeded) {
+                                        s.release();
+                                    }
+                                });
 
-                            // Wait until cache has been cleared before we restart.
-                            try {
-                                s.acquire();
-                            } catch (InterruptedException e) {
-                            }
-                        }
-                    }
-                }
-                // If there was nothing to reset, just restart;
-                res = AppErrorDialog.RESTART;
-            }
-            synchronized (mService) {
-                if (res == AppErrorDialog.MUTE) {
-                    stopReportingCrashesLocked(r);
-                }
-                if (res == AppErrorDialog.RESTART) {
-                    mService.removeProcessLocked(r, false, true, "crash");
-                    if (task != null) {
+                        // Wait until cache has been cleared before we restart.
                         try {
-                            mService.startActivityFromRecents(task.taskId,
-                                    ActivityOptions.makeBasic().toBundle());
-                        } catch (IllegalArgumentException e) {
-                            // Hmm, that didn't work, app might have crashed before creating a
-                            // recents entry. Let's see if we have a safe-to-restart intent.
-                            if (task.intent.getCategories().contains(
-                                    Intent.CATEGORY_LAUNCHER)) {
-                                mService.startActivityInPackage(task.mCallingUid,
-                                        task.mCallingPackage, task.intent,
-                                        null, null, null, 0, 0,
-                                        ActivityOptions.makeBasic().toBundle(),
-                                        task.userId, null, null);
-                            }
+                            s.acquire();
+                        } catch (InterruptedException e) {
                         }
                     }
                 }
-                if (res == AppErrorDialog.FORCE_QUIT) {
-                    long orig = Binder.clearCallingIdentity();
-                    try {
-                        // Kill it with fire!
-                        mService.mStackSupervisor.handleAppCrashLocked(r);
-                        if (!r.persistent) {
-                            mService.removeProcessLocked(r, false, false, "crash");
-                            mService.mStackSupervisor.resumeFocusedStackTopActivityLocked();
-                        }
-                    } finally {
-                        Binder.restoreCallingIdentity(orig);
-                    }
-                }
-                if (res == AppErrorDialog.FORCE_QUIT_AND_REPORT) {
-                    appErrorIntent = createAppErrorIntentLocked(r, timeMillis, crashInfo);
-                }
-                if (r != null && !r.isolated && res != AppErrorDialog.RESTART) {
-                    // XXX Can't keep track of crash time for isolated processes,
-                    // since they don't have a persistent identity.
-                    mProcessCrashTimes.put(r.info.processName, r.uid,
-                            SystemClock.uptimeMillis());
-                }
             }
-        } finally {
-            Binder.restoreCallingIdentity(ident);
+            // If there was nothing to reset, just restart;
+            res = AppErrorDialog.RESTART;
+        }
+        synchronized (mService) {
+            if (res == AppErrorDialog.MUTE) {
+                stopReportingCrashesLocked(r);
+            }
+            if (res == AppErrorDialog.RESTART) {
+                mService.removeProcessLocked(r, false, true, "crash");
+                if (task != null) {
+                    try {
+                        mService.startActivityFromRecents(task.taskId,
+                                ActivityOptions.makeBasic().toBundle());
+                    } catch (IllegalArgumentException e) {
+                        // Hmm, that didn't work, app might have crashed before creating a
+                        // recents entry. Let's see if we have a safe-to-restart intent.
+                        if (task.intent.getCategories().contains(
+                                Intent.CATEGORY_LAUNCHER)) {
+                            mService.startActivityInPackage(task.mCallingUid,
+                                    task.mCallingPackage, task.intent,
+                                    null, null, null, 0, 0,
+                                    ActivityOptions.makeBasic().toBundle(),
+                                    task.userId, null, null);
+                        }
+                    }
+                }
+            }
+            if (res == AppErrorDialog.FORCE_QUIT) {
+                long orig = Binder.clearCallingIdentity();
+                try {
+                    // Kill it with fire!
+                    mService.mStackSupervisor.handleAppCrashLocked(r);
+                    if (!r.persistent) {
+                        mService.removeProcessLocked(r, false, false, "crash");
+                        mService.mStackSupervisor.resumeFocusedStackTopActivityLocked();
+                    }
+                } finally {
+                    Binder.restoreCallingIdentity(orig);
+                }
+            }
+            if (res == AppErrorDialog.FORCE_QUIT_AND_REPORT) {
+                appErrorIntent = createAppErrorIntentLocked(r, timeMillis, crashInfo);
+            }
+            if (r != null && !r.isolated && res != AppErrorDialog.RESTART) {
+                // XXX Can't keep track of crash time for isolated processes,
+                // since they don't have a persistent identity.
+                mProcessCrashTimes.put(r.info.processName, r.uid,
+                        SystemClock.uptimeMillis());
+            }
         }
 
         if (appErrorIntent != null) {
@@ -487,6 +459,47 @@
         }
     }
 
+    private boolean handleAppCrashInActivityController(ProcessRecord r,
+                                                       ApplicationErrorReport.CrashInfo crashInfo,
+                                                       String shortMsg, String longMsg,
+                                                       String stackTrace, long timeMillis) {
+        if (mService.mController == null) {
+            return false;
+        }
+
+        try {
+            String name = r != null ? r.processName : null;
+            int pid = r != null ? r.pid : Binder.getCallingPid();
+            int uid = r != null ? r.info.uid : Binder.getCallingUid();
+            if (!mService.mController.appCrashed(name, pid,
+                    shortMsg, longMsg, timeMillis, crashInfo.stackTrace)) {
+                if ("1".equals(SystemProperties.get(SYSTEM_DEBUGGABLE, "0"))
+                        && "Native crash".equals(crashInfo.exceptionClassName)) {
+                    Slog.w(TAG, "Skip killing native crashed app " + name
+                            + "(" + pid + ") during testing");
+                } else {
+                    Slog.w(TAG, "Force-killing crashed app " + name
+                            + " at watcher's request");
+                    if (r != null) {
+                        if (!makeAppCrashingLocked(r, shortMsg, longMsg, stackTrace, null))
+                        {
+                            r.kill("crash", true);
+                        }
+                    } else {
+                        // Huh.
+                        Process.killProcess(pid);
+                        ActivityManagerService.killProcessGroup(uid, pid);
+                    }
+                }
+                return true;
+            }
+        } catch (RemoteException e) {
+            mService.mController = null;
+            Watchdog.getInstance().setActivityController(null);
+        }
+        return false;
+    }
+
     private boolean makeAppCrashingLocked(ProcessRecord app,
             String shortMsg, String longMsg, String stackTrace, AppErrorDialog.Data data) {
         app.crashing = true;
diff --git a/services/core/java/com/android/server/am/BatteryStatsService.java b/services/core/java/com/android/server/am/BatteryStatsService.java
index 2516f5d..d34ec86 100644
--- a/services/core/java/com/android/server/am/BatteryStatsService.java
+++ b/services/core/java/com/android/server/am/BatteryStatsService.java
@@ -79,7 +79,8 @@
  * battery life.
  */
 public final class BatteryStatsService extends IBatteryStats.Stub
-        implements PowerManagerInternal.LowPowerModeListener {
+        implements PowerManagerInternal.LowPowerModeListener,
+        BatteryStatsImpl.PlatformIdleStateCallback {
     static final String TAG = "BatteryStatsService";
 
     /**
@@ -173,6 +174,33 @@
         }
     }
 
+    private native int getPlatformLowPowerStats(ByteBuffer outBuffer);
+    private CharsetDecoder mDecoderStat = StandardCharsets.UTF_8
+                    .newDecoder()
+                    .onMalformedInput(CodingErrorAction.REPLACE)
+                    .onUnmappableCharacter(CodingErrorAction.REPLACE)
+                    .replaceWith("?");
+    private ByteBuffer mUtf8BufferStat = ByteBuffer.allocateDirect(MAX_LOW_POWER_STATS_SIZE);
+    private CharBuffer mUtf16BufferStat = CharBuffer.allocate(MAX_LOW_POWER_STATS_SIZE);
+    private static final int MAX_LOW_POWER_STATS_SIZE = 512;
+
+    @Override
+    public String getPlatformLowPowerStats() {
+        mUtf8BufferStat.clear();
+        mUtf16BufferStat.clear();
+        mDecoderStat.reset();
+        int bytesWritten = getPlatformLowPowerStats(mUtf8BufferStat);
+        if (bytesWritten < 0) {
+            return null;
+        } else if (bytesWritten == 0) {
+            return "Empty";
+        }
+        mUtf8BufferStat.limit(bytesWritten);
+        mDecoderStat.decode(mUtf8BufferStat, mUtf16BufferStat, true);
+        mUtf16BufferStat.flip();
+        return mUtf16BufferStat.toString();
+    }
+
     BatteryStatsService(File systemDir, Handler handler) {
         // Our handler here will be accessing the disk, use a different thread than
         // what the ActivityManagerService gave us (no I/O on that one!).
@@ -182,9 +210,9 @@
         mHandler = new BatteryStatsHandler(thread.getLooper());
 
         // BatteryStatsImpl expects the ActivityManagerService handler, so pass that one through.
-        mStats = new BatteryStatsImpl(systemDir, handler, mHandler);
+        mStats = new BatteryStatsImpl(systemDir, handler, mHandler, this);
     }
-    
+
     public void publish(Context context) {
         mContext = context;
         mStats.setRadioScanningTimeout(mContext.getResources().getInteger(
@@ -946,7 +974,7 @@
 
     @Override
     public void setBatteryState(final int status, final int health, final int plugType,
-                                final int level, final int temp, final int volt) {
+            final int level, final int temp, final int volt, final int chargeCount) {
         enforceCallingPermission();
 
         // BatteryService calls us here and we may update external state. It would be wrong
@@ -959,7 +987,8 @@
                     if (mStats.isOnBattery() == onBattery) {
                         // The battery state has not changed, so we don't need to sync external
                         // stats immediately.
-                        mStats.setBatteryStateLocked(status, health, plugType, level, temp, volt);
+                        mStats.setBatteryStateLocked(status, health, plugType, level, temp, volt,
+                                chargeCount);
                         return;
                     }
                 }
@@ -968,7 +997,8 @@
                 // immediately here, we may not collect the relevant data later.
                 updateExternalStatsSync("battery-state", BatteryStatsImpl.ExternalStatsSync.UPDATE_ALL);
                 synchronized (mStats) {
-                    mStats.setBatteryStateLocked(status, health, plugType, level, temp, volt);
+                    mStats.setBatteryStateLocked(status, health, plugType, level, temp, volt,
+                            chargeCount);
                 }
             }
         });
diff --git a/services/core/java/com/android/server/am/UserController.java b/services/core/java/com/android/server/am/UserController.java
index 75d49c3..bfa5b42 100644
--- a/services/core/java/com/android/server/am/UserController.java
+++ b/services/core/java/com/android/server/am/UserController.java
@@ -220,6 +220,7 @@
 
     private void finishUserBoot(UserState uss, IIntentReceiver resultTo) {
         final int userId = uss.mHandle.getIdentifier();
+        Slog.d(TAG, "Finishing user boot " + userId);
         synchronized (mService) {
             // Bail if we ended up with a stale user
             if (mStartedUsers.get(userId) != uss) return;
@@ -248,7 +249,8 @@
                             + "): attempting unlock because parent is unlocked");
                     maybeUnlockUser(userId);
                 } else {
-                    Slog.d(TAG, "User " + userId + " (parent " + parent.id
+                    String parentId = (parent == null) ? "<null>" : String.valueOf(parent.id);
+                    Slog.d(TAG, "User " + userId + " (parent " + parentId
                             + "): delaying unlock because parent is locked");
                 }
             } else {
@@ -268,7 +270,7 @@
             if (mStartedUsers.get(uss.mHandle.getIdentifier()) != uss) return;
 
             // Only keep marching forward if user is actually unlocked
-            if (!isUserKeyUnlocked(userId)) return;
+            if (!StorageManager.isUserKeyUnlocked(userId)) return;
 
             if (uss.setState(STATE_RUNNING_LOCKED, STATE_RUNNING_UNLOCKING)) {
                 uss.mUnlockProgress.start();
@@ -279,9 +281,29 @@
                 mUserManager.onBeforeUnlockUser(userId);
                 uss.mUnlockProgress.setProgress(20);
 
-                // Dispatch unlocked to system services
-                mHandler.obtainMessage(SYSTEM_USER_UNLOCK_MSG, userId, 0, uss.mUnlockProgress)
+                // Dispatch unlocked to system services; when fully dispatched,
+                // that calls through to the next "unlocked" phase
+                mHandler.obtainMessage(SYSTEM_USER_UNLOCK_MSG, userId, 0, uss)
                         .sendToTarget();
+            }
+        }
+    }
+
+    /**
+     * Step from {@link UserState#STATE_RUNNING_UNLOCKING} to
+     * {@link UserState#STATE_RUNNING_UNLOCKED}.
+     */
+    void finishUserUnlocked(final UserState uss) {
+        final int userId = uss.mHandle.getIdentifier();
+        synchronized (mService) {
+            // Bail if we ended up with a stale user
+            if (mStartedUsers.get(uss.mHandle.getIdentifier()) != uss) return;
+
+            // Only keep marching forward if user is actually unlocked
+            if (!StorageManager.isUserKeyUnlocked(userId)) return;
+
+            if (uss.setState(STATE_RUNNING_UNLOCKING, STATE_RUNNING_UNLOCKED)) {
+                uss.mUnlockProgress.finish();
 
                 // Dispatch unlocked to external apps
                 final Intent unlockedIntent = new Intent(Intent.ACTION_USER_UNLOCKED);
@@ -308,47 +330,67 @@
                     }
                 }
 
-                // Send PRE_BOOT broadcasts if fingerprint changed
+                // Send PRE_BOOT broadcasts if user fingerprint changed; we
+                // purposefully block sending BOOT_COMPLETED until after all
+                // PRE_BOOT receivers are finished to avoid ANR'ing apps
                 final UserInfo info = getUserInfo(userId);
                 if (!Objects.equals(info.lastLoggedInFingerprint, Build.FINGERPRINT)) {
                     new PreBootBroadcaster(mService, userId, null) {
                         @Override
                         public void onFinished() {
-                            finishUserUnlocked(uss);
+                            finishUserUnlockedCompleted(uss);
                         }
                     }.sendNext();
                 } else {
-                    finishUserUnlocked(uss);
+                    finishUserUnlockedCompleted(uss);
                 }
             }
         }
     }
 
-    /**
-     * Step from {@link UserState#STATE_RUNNING_UNLOCKING} to
-     * {@link UserState#STATE_RUNNING_UNLOCKED}.
-     */
-    private void finishUserUnlocked(UserState uss) {
+    private void finishUserUnlockedCompleted(UserState uss) {
         final int userId = uss.mHandle.getIdentifier();
         synchronized (mService) {
             // Bail if we ended up with a stale user
             if (mStartedUsers.get(uss.mHandle.getIdentifier()) != uss) return;
+            final UserInfo userInfo = getUserInfo(userId);
+            if (userInfo == null) {
+                return;
+            }
 
             // Only keep marching forward if user is actually unlocked
-            if (!isUserKeyUnlocked(userId)) return;
+            if (!StorageManager.isUserKeyUnlocked(userId)) return;
 
-            if (uss.setState(STATE_RUNNING_UNLOCKING, STATE_RUNNING_UNLOCKED)) {
-                // Remember that we logged in
-                mUserManager.onUserLoggedIn(userId);
+            // Remember that we logged in
+            mUserManager.onUserLoggedIn(userId);
 
-                final Intent bootIntent = new Intent(Intent.ACTION_BOOT_COMPLETED, null);
-                bootIntent.putExtra(Intent.EXTRA_USER_HANDLE, userId);
-                bootIntent.addFlags(Intent.FLAG_RECEIVER_NO_ABORT
-                        | Intent.FLAG_RECEIVER_INCLUDE_BACKGROUND);
-                mService.broadcastIntentLocked(null, null, bootIntent, null, null, 0, null, null,
-                        new String[] { android.Manifest.permission.RECEIVE_BOOT_COMPLETED },
-                        AppOpsManager.OP_NONE, null, true, false, MY_PID, SYSTEM_UID, userId);
+            if (!userInfo.isInitialized()) {
+                if (userId != UserHandle.USER_SYSTEM) {
+                    Slog.d(TAG, "Initializing user #" + userId);
+                    Intent intent = new Intent(Intent.ACTION_USER_INITIALIZE);
+                    intent.addFlags(Intent.FLAG_RECEIVER_FOREGROUND);
+                    mService.broadcastIntentLocked(null, null, intent, null,
+                            new IIntentReceiver.Stub() {
+                                @Override
+                                public void performReceive(Intent intent, int resultCode,
+                                        String data, Bundle extras, boolean ordered,
+                                        boolean sticky, int sendingUser) {
+                                    // Note: performReceive is called with mService lock held
+                                    getUserManager().makeInitialized(userInfo.id);
+                                }
+                            }, 0, null, null, null, AppOpsManager.OP_NONE,
+                            null, true, false, MY_PID, SYSTEM_UID, userId);
+                }
             }
+
+            Slog.d(TAG, "Sending BOOT_COMPLETE user #" + userId);
+            final Intent bootIntent = new Intent(Intent.ACTION_BOOT_COMPLETED, null);
+            bootIntent.putExtra(Intent.EXTRA_USER_HANDLE, userId);
+            bootIntent.addFlags(Intent.FLAG_RECEIVER_NO_ABORT
+                    | Intent.FLAG_RECEIVER_INCLUDE_BACKGROUND);
+            mService.broadcastIntentLocked(null, null, bootIntent, null, null, 0, null, null,
+                    new String[] { android.Manifest.permission.RECEIVE_BOOT_COMPLETED },
+                    AppOpsManager.OP_NONE, null, true, false, MY_PID, SYSTEM_UID, userId);
         }
     }
 
@@ -458,6 +500,8 @@
                         });
                     }
                 };
+                // Clear broadcast queue for the user to avoid delivering stale broadcasts
+                mService.clearBroadcastQueueForUserLocked(userId);
                 // Kick things off.
                 mService.broadcastIntentLocked(null, null, stoppingIntent,
                         null, stoppingReceiver, 0, null, null,
@@ -655,20 +699,35 @@
         return IMountService.Stub.asInterface(ServiceManager.getService("mount"));
     }
 
-    private boolean isUserKeyUnlocked(int userId) {
-        final IMountService mountService = getMountService();
-        if (mountService != null) {
-            try {
-                return mountService.isUserKeyUnlocked(userId);
-            } catch (RemoteException e) {
-                throw e.rethrowAsRuntimeException();
-            }
-        } else {
-            Slog.w(TAG, "Mount service not published; guessing locked state based on property");
-            return !StorageManager.isFileEncryptedNativeOrEmulated();
-        }
-    }
-
+    /**
+     * Start user, if its not already running.
+     * <p>The user will be brought to the foreground, if {@code foreground} parameter is set.
+     * When starting the user, multiple intents will be broadcast in the following order:</p>
+     * <ul>
+     *     <li>{@link Intent#ACTION_USER_STARTED} - sent to registered receivers of the new user
+     *     <li>{@link Intent#ACTION_USER_BACKGROUND} - sent to registered receivers of the outgoing
+     *     user and all profiles of this user. Sent only if {@code foreground} parameter is true
+     *     <li>{@link Intent#ACTION_USER_FOREGROUND} - sent to registered receivers of the new
+     *     user and all profiles of this user. Sent only if {@code foreground} parameter is true
+     *     <li>{@link Intent#ACTION_USER_SWITCHED} - sent to registered receivers of the new user.
+     *     Sent only if {@code foreground} parameter is true
+     *     <li>{@link Intent#ACTION_USER_STARTING} - ordered broadcast sent to registered receivers
+     *     of the new fg user
+     *     <li>{@link Intent#ACTION_LOCKED_BOOT_COMPLETED} - ordered broadcast sent to receivers of
+     *     the new user
+     *     <li>{@link Intent#ACTION_USER_UNLOCKED} - sent to registered receivers of the new user
+     *     <li>{@link Intent#ACTION_PRE_BOOT_COMPLETED} - ordered broadcast sent to receivers of the
+     *     new user. Sent only when the user is booting after a system update.
+     *     <li>{@link Intent#ACTION_USER_INITIALIZE} - ordered broadcast sent to receivers of the
+     *     new user. Sent only the first time a user is starting.
+     *     <li>{@link Intent#ACTION_BOOT_COMPLETED} - ordered broadcast sent to receivers of the new
+     *     user. Indicates that the user has finished booting.
+     * </ul>
+     *
+     * @param userId ID of the user to start
+     * @param foreground true if user should be brought to the foreground
+     * @return true if the user has been successfully started
+     */
     boolean startUser(final int userId, final boolean foreground) {
         if (mService.checkCallingPermission(INTERACT_ACROSS_USERS_FULL)
                 != PackageManager.PERMISSION_GRANTED) {
@@ -680,7 +739,7 @@
             throw new SecurityException(msg);
         }
 
-        if (DEBUG_MU) Slog.i(TAG, "starting userid:" + userId + " fore:" + foreground);
+        Slog.i(TAG, "Starting userid:" + userId + " fg:" + foreground);
 
         final long ident = Binder.clearCallingIdentity();
         try {
@@ -790,36 +849,8 @@
                             null, false, false, MY_PID, SYSTEM_UID, userId);
                 }
 
-                if ((userInfo.flags&UserInfo.FLAG_INITIALIZED) == 0) {
-                    if (userId != UserHandle.USER_SYSTEM) {
-                        Intent intent = new Intent(Intent.ACTION_USER_INITIALIZE);
-                        intent.addFlags(Intent.FLAG_RECEIVER_FOREGROUND);
-                        mService.broadcastIntentLocked(null, null, intent, null,
-                                new IIntentReceiver.Stub() {
-                                    @Override
-                                    public void performReceive(Intent intent, int resultCode,
-                                            String data, Bundle extras, boolean ordered,
-                                            boolean sticky, int sendingUser) {
-                                        mHandler.post(new Runnable() {
-                                            @Override
-                                            public void run() {
-                                                onUserInitialized(uss, foreground,
-                                                        oldUserId, userId);
-                                            }
-                                        });
-                                    }
-                                }, 0, null, null, null, AppOpsManager.OP_NONE,
-                                null, true, false, MY_PID, SYSTEM_UID, userId);
-                        uss.initializing = true;
-                    } else {
-                        getUserManager().makeInitialized(userInfo.id);
-                    }
-                }
-
                 if (foreground) {
-                    if (!uss.initializing) {
-                        moveUserToForegroundLocked(uss, oldUserId, userId);
-                    }
+                    moveUserToForegroundLocked(uss, oldUserId, userId);
                 } else {
                     mService.mUserController.finishUserBoot(uss);
                 }
@@ -909,7 +940,7 @@
             }
         }
 
-        if (!isUserKeyUnlocked(userId)) {
+        if (!StorageManager.isUserKeyUnlocked(userId)) {
             final UserInfo userInfo = getUserInfo(userId);
             final IMountService mountService = getMountService();
             try {
@@ -996,8 +1027,8 @@
         }
     }
 
-    void dispatchUserSwitch(final UserState uss, final int oldUserId,
-            final int newUserId) {
+    void dispatchUserSwitch(final UserState uss, final int oldUserId, final int newUserId) {
+        Slog.d(TAG, "Dispatch onUserSwitching oldUser #" + oldUserId + " newUser #" + newUserId);
         final int observerCount = mUserSwitchObservers.beginBroadcast();
         if (observerCount > 0) {
             final IRemoteCallback callback = new IRemoteCallback.Stub() {
@@ -1041,39 +1072,14 @@
     }
 
     void continueUserSwitch(UserState uss, int oldUserId, int newUserId) {
-        completeSwitchAndInitialize(uss, oldUserId, newUserId, false, true);
-    }
-
-    void onUserInitialized(UserState uss, boolean foreground, int oldUserId, int newUserId) {
+        Slog.d(TAG, "Continue user switch oldUser #" + oldUserId + ", newUser #" + newUserId);
         synchronized (mService) {
-            if (foreground) {
-                moveUserToForegroundLocked(uss, oldUserId, newUserId);
-            }
+            mService.mWindowManager.stopFreezingScreen();
         }
-        completeSwitchAndInitialize(uss, oldUserId, newUserId, true, false);
-    }
-
-    void completeSwitchAndInitialize(UserState uss, int oldUserId, int newUserId,
-            boolean clearInitializing, boolean clearSwitching) {
-        boolean unfrozen = false;
-        synchronized (mService) {
-            if (clearInitializing) {
-                uss.initializing = false;
-                getUserManager().makeInitialized(uss.mHandle.getIdentifier());
-            }
-            if (clearSwitching) {
-                uss.switching = false;
-            }
-            if (!uss.switching && !uss.initializing) {
-                mService.mWindowManager.stopFreezingScreen();
-                unfrozen = true;
-            }
-        }
-        if (unfrozen) {
-            mHandler.removeMessages(REPORT_USER_SWITCH_COMPLETE_MSG);
-            mHandler.sendMessage(mHandler.obtainMessage(REPORT_USER_SWITCH_COMPLETE_MSG,
-                    newUserId, 0));
-        }
+        uss.switching = false;
+        mHandler.removeMessages(REPORT_USER_SWITCH_COMPLETE_MSG);
+        mHandler.sendMessage(mHandler.obtainMessage(REPORT_USER_SWITCH_COMPLETE_MSG,
+                newUserId, 0));
         stopGuestOrEphemeralUserIfBackground();
         stopBackgroundUsersIfEnforced(oldUserId);
     }
@@ -1320,30 +1326,31 @@
         if ((flags & ActivityManager.FLAG_OR_STOPPED) != 0) {
             return true;
         }
-
-        final boolean unlocked;
-        switch (state.state) {
-            case UserState.STATE_STOPPING:
-            case UserState.STATE_SHUTDOWN:
-            default:
-                return false;
-
-            case UserState.STATE_BOOTING:
-            case UserState.STATE_RUNNING_LOCKED:
-                unlocked = false;
-                break;
-
-            case UserState.STATE_RUNNING_UNLOCKING:
-            case UserState.STATE_RUNNING_UNLOCKED:
-                unlocked = true;
-                break;
-        }
-
         if ((flags & ActivityManager.FLAG_AND_LOCKED) != 0) {
-            return !unlocked;
+            switch (state.state) {
+                case UserState.STATE_BOOTING:
+                case UserState.STATE_RUNNING_LOCKED:
+                    return true;
+                default:
+                    return false;
+            }
+        }
+        if ((flags & ActivityManager.FLAG_AND_UNLOCKING_OR_UNLOCKED) != 0) {
+            switch (state.state) {
+                case UserState.STATE_RUNNING_UNLOCKING:
+                case UserState.STATE_RUNNING_UNLOCKED:
+                    return true;
+                default:
+                    return false;
+            }
         }
         if ((flags & ActivityManager.FLAG_AND_UNLOCKED) != 0) {
-            return unlocked;
+            switch (state.state) {
+                case UserState.STATE_RUNNING_UNLOCKED:
+                    return true;
+                default:
+                    return false;
+            }
         }
 
         // One way or another, we're running!
diff --git a/services/core/java/com/android/server/am/UserState.java b/services/core/java/com/android/server/am/UserState.java
index 56abd95..952283e 100644
--- a/services/core/java/com/android/server/am/UserState.java
+++ b/services/core/java/com/android/server/am/UserState.java
@@ -54,7 +54,6 @@
     public int state = STATE_BOOTING;
     public int lastState = STATE_BOOTING;
     public boolean switching;
-    public boolean initializing;
 
     /**
      * The last time that a provider was reported to usage stats as being brought to important
@@ -103,7 +102,6 @@
         pw.print(prefix);
         pw.print("state="); pw.print(stateToString(state));
         if (switching) pw.print(" SWITCHING");
-        if (initializing) pw.print(" INITIALIZING");
         pw.println();
     }
 }
diff --git a/services/core/java/com/android/server/audio/AudioService.java b/services/core/java/com/android/server/audio/AudioService.java
index a6dfab0..0874fa7 100644
--- a/services/core/java/com/android/server/audio/AudioService.java
+++ b/services/core/java/com/android/server/audio/AudioService.java
@@ -3940,33 +3940,40 @@
             }
         }
 
+        private int getAbsoluteVolumeIndex(int index) {
+            /* Special handling for Bluetooth Absolute Volume scenario
+             * If we send full audio gain, some accessories are too loud even at its lowest
+             * volume. We are not able to enumerate all such accessories, so here is the
+             * workaround from phone side.
+             * Pre-scale volume at lowest volume steps 1 2 and 3.
+             * For volume step 0, set audio gain to 0 as some accessories won't mute on their end.
+             */
+            if (index == 0) {
+                // 0% for volume 0
+                index = 0;
+            } else if (index == 1) {
+                // 50% for volume 1
+                index = (int)(mIndexMax * 0.5) /10;
+            } else if (index == 2) {
+                // 70% for volume 2
+                index = (int)(mIndexMax * 0.70) /10;
+            } else if (index == 3) {
+                // 85% for volume 3
+                index = (int)(mIndexMax * 0.85) /10;
+            } else {
+                // otherwise, full gain
+                index = (mIndexMax + 5)/10;
+            }
+            return index;
+        }
+
         // must be called while synchronized VolumeStreamState.class
         public void applyDeviceVolume_syncVSS(int device) {
             int index;
             if (mIsMuted) {
                 index = 0;
             } else if ((device & AudioSystem.DEVICE_OUT_ALL_A2DP) != 0 && mAvrcpAbsVolSupported) {
-                /* Special handling for Bluetooth Absolute Volume scenario
-                 * If we send full audio gain, some accessories are too loud even at its lowest
-                 * volume. We are not able to enumerate all such accessories, so here is the
-                 * workaround from phone side.
-                 * For the lowest volume steps 1 and 2, restrict audio gain to 50% and 75%.
-                 * For volume step 0, set audio gain to 0 as some accessories won't mute on their end.
-                 */
-                int i = (getIndex(device) + 5)/10;
-                if (i == 0) {
-                    // 0% for volume 0
-                    index = 0;
-                } else if (i == 1) {
-                    // 50% for volume 1
-                    index = (int)(mIndexMax * 0.5) /10;
-                } else if (i == 2) {
-                    // 75% for volume 2
-                    index = (int)(mIndexMax * 0.75) /10;
-                } else {
-                    // otherwise, full gain
-                    index = (mIndexMax + 5)/10;
-                }
+                index = getAbsoluteVolumeIndex((getIndex(device) + 5)/10);
             } else if ((device & mFullVolumeDevices) != 0) {
                 index = (mIndexMax + 5)/10;
             } else {
@@ -3984,9 +3991,10 @@
                     if (device != AudioSystem.DEVICE_OUT_DEFAULT) {
                         if (mIsMuted) {
                             index = 0;
-                        } else if (((device & AudioSystem.DEVICE_OUT_ALL_A2DP) != 0 &&
-                                mAvrcpAbsVolSupported)
-                                    || ((device & mFullVolumeDevices) != 0)) {
+                        } else if ((device & AudioSystem.DEVICE_OUT_ALL_A2DP) != 0 &&
+                                mAvrcpAbsVolSupported) {
+                            index = getAbsoluteVolumeIndex((getIndex(device) + 5)/10);
+                        } else if ((device & mFullVolumeDevices) != 0) {
                             index = (mIndexMax + 5)/10;
                         } else {
                             index = (mIndexMap.valueAt(i) + 5)/10;
diff --git a/services/core/java/com/android/server/connectivity/MetricsLoggerService.java b/services/core/java/com/android/server/connectivity/MetricsLoggerService.java
index ac5c4ae..6d1c531 100644
--- a/services/core/java/com/android/server/connectivity/MetricsLoggerService.java
+++ b/services/core/java/com/android/server/connectivity/MetricsLoggerService.java
@@ -144,8 +144,13 @@
 
             boolean dumpSerializedSize = false;
             boolean dumpEvents = false;
+            boolean dumpDebugInfo = false;
             for (String arg : args) {
                 switch (arg) {
+                    case "--debug":
+                        dumpDebugInfo = true;
+                        break;
+
                     case "--events":
                         dumpEvents = true;
                         break;
@@ -155,6 +160,7 @@
                         break;
 
                     case "--all":
+                        dumpDebugInfo = true;
                         dumpEvents = true;
                         dumpSerializedSize = true;
                         break;
@@ -163,6 +169,7 @@
 
             synchronized (mEvents) {
                 pw.println("Number of events: " + mEvents.size());
+                pw.println("Counter: " + mEventCounter);
                 if (mEvents.size() > 0) {
                     pw.println("Time span: " +
                             DateUtils.formatElapsedTime(
@@ -171,16 +178,12 @@
                 }
 
                 if (dumpSerializedSize) {
-                    long dataSize = 0;
                     Parcel p = Parcel.obtain();
                     for (ConnectivityMetricsEvent e : mEvents) {
-                        dataSize += 16; // timestamp and 2 stamps
-
-                        p.writeParcelable(e.data, 0);
+                        p.writeParcelable(e, 0);
                     }
-                    dataSize += p.dataSize();
+                    pw.println("Serialized data size: " + p.dataSize());
                     p.recycle();
-                    pw.println("Serialized data size: " + dataSize);
                 }
 
                 if (dumpEvents) {
@@ -192,11 +195,28 @@
                 }
             }
 
-            if (!mPendingIntents.isEmpty()) {
-                pw.println();
-                pw.println("Pending intents:");
-                for (PendingIntent pi : mPendingIntents) {
-                    pw.println(pi.toString());
+            if (dumpDebugInfo) {
+                synchronized (mThrottlingCounters) {
+                    pw.println();
+                    for (int i = 0; i < ConnectivityMetricsLogger.NUMBER_OF_COMPONENTS; i++) {
+                        if (mThrottlingCounters[i] > 0) {
+                            pw.println("Throttling Counter #" + i + ": " + mThrottlingCounters[i]);
+                        }
+                    }
+                    pw.println("Throttling Time Remaining: " +
+                            DateUtils.formatElapsedTime(
+                                    (mThrottlingIntervalBoundaryMillis - System.currentTimeMillis())
+                                            / 1000));
+                }
+            }
+
+            synchronized (mPendingIntents) {
+                if (!mPendingIntents.isEmpty()) {
+                    pw.println();
+                    pw.println("Pending intents:");
+                    for (PendingIntent pi : mPendingIntents) {
+                        pw.println(pi.toString());
+                    }
                 }
             }
 
@@ -327,9 +347,9 @@
                         result[i++] = e;
                     }
                 }
-            }
 
-            reference.setValue(mLastEventReference);
+                reference.setValue(mLastEventReference);
+            }
 
             return result;
         }
diff --git a/services/core/java/com/android/server/connectivity/NetworkMonitor.java b/services/core/java/com/android/server/connectivity/NetworkMonitor.java
index f7784ac..f4e1424 100644
--- a/services/core/java/com/android/server/connectivity/NetworkMonitor.java
+++ b/services/core/java/com/android/server/connectivity/NetworkMonitor.java
@@ -71,7 +71,11 @@
 import java.io.IOException;
 import java.net.HttpURLConnection;
 import java.net.InetAddress;
+import java.net.MalformedURLException;
+import java.net.UnknownHostException;
 import java.net.URL;
+import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.atomic.AtomicReference;
 import java.util.List;
 import java.util.Random;
 
@@ -228,7 +232,8 @@
     private final AlarmManager mAlarmManager;
     private final NetworkRequest mDefaultRequest;
 
-    private boolean mIsCaptivePortalCheckEnabled = false;
+    private boolean mIsCaptivePortalCheckEnabled;
+    private boolean mUseHttps;
 
     // Set if the user explicitly selected "Do not use this network" in captive portal sign-in app.
     private boolean mUserDoesNotWant = false;
@@ -276,6 +281,8 @@
 
         mIsCaptivePortalCheckEnabled = Settings.Global.getInt(mContext.getContentResolver(),
                 Settings.Global.CAPTIVE_PORTAL_DETECTION_ENABLED, 1) == 1;
+        mUseHttps = Settings.Global.getInt(mContext.getContentResolver(),
+                Settings.Global.CAPTIVE_PORTAL_USE_HTTPS, 1) == 1;
 
         start();
     }
@@ -324,6 +331,21 @@
                     return HANDLED;
                 case CMD_CAPTIVE_PORTAL_APP_FINISHED:
                     log("CaptivePortal App responded with " + message.arg1);
+
+                    // If the user has seen and acted on a captive portal notification, and the
+                    // captive portal app is now closed, disable HTTPS probes. This avoids the
+                    // following pathological situation:
+                    //
+                    // 1. HTTP probe returns a captive portal, HTTPS probe fails or times out.
+                    // 2. User opens the app and logs into the captive portal.
+                    // 3. HTTP starts working, but HTTPS still doesn't work for some other reason -
+                    //    perhaps due to the network blocking HTTPS?
+                    //
+                    // In this case, we'll fail to validate the network even after the app is
+                    // dismissed. There is now no way to use this network, because the app is now
+                    // gone, so the user cannot select "Use this network as is".
+                    mUseHttps = false;
+
                     switch (message.arg1) {
                         case APP_RETURN_DISMISSED:
                             sendMessage(CMD_FORCE_REEVALUATION, 0 /* no UID */, 0);
@@ -424,6 +446,8 @@
      */
     @VisibleForTesting
     public static final class CaptivePortalProbeResult {
+        static final CaptivePortalProbeResult FAILED = new CaptivePortalProbeResult(599, null);
+
         final int mHttpResponseCode; // HTTP response code returned from Internet probe.
         final String mRedirectUrl;   // Redirect destination returned from Internet probe.
 
@@ -431,6 +455,11 @@
             mHttpResponseCode = httpResponseCode;
             mRedirectUrl = redirectUrl;
         }
+
+        boolean isSuccessful() { return mHttpResponseCode == 204; }
+        boolean isPortal() {
+            return !isSuccessful() && mHttpResponseCode >= 200 && mHttpResponseCode <= 399;
+        }
     }
 
     // Being in the EvaluatingState State indicates the Network is being evaluated for internet
@@ -481,6 +510,7 @@
                     //    expensive metered network, or unwanted leaking of the User Agent string.
                     if (!mDefaultRequest.networkCapabilities.satisfiedByNetworkCapabilities(
                             mNetworkAgentInfo.networkCapabilities)) {
+                        validationLog("Network would not satisfy default request, not validating");
                         transitionTo(mValidatedState);
                         return HANDLED;
                     }
@@ -492,10 +522,9 @@
                     // will be unresponsive. isCaptivePortal() could be executed on another Thread
                     // if this is found to cause problems.
                     CaptivePortalProbeResult probeResult = isCaptivePortal();
-                    if (probeResult.mHttpResponseCode == 204) {
+                    if (probeResult.isSuccessful()) {
                         transitionTo(mValidatedState);
-                    } else if (probeResult.mHttpResponseCode >= 200 &&
-                            probeResult.mHttpResponseCode <= 399) {
+                    } else if (probeResult.isPortal()) {
                         mConnectivityServiceHandler.sendMessage(obtainMessage(EVENT_NETWORK_TESTED,
                                 NETWORK_TEST_RESULT_INVALID, mNetId, probeResult.mRedirectUrl));
                         transitionTo(mCaptivePortalState);
@@ -659,11 +688,112 @@
         }
     }
 
-    public static String getCaptivePortalServerUrl(Context context) {
+    private static String getCaptivePortalServerUrl(Context context, boolean isHttps) {
         String server = Settings.Global.getString(context.getContentResolver(),
                 Settings.Global.CAPTIVE_PORTAL_SERVER);
         if (server == null) server = DEFAULT_SERVER;
-        return "http://" + server + "/generate_204";
+        return (isHttps ? "https" : "http") + "://" + server + "/generate_204";
+    }
+
+    public static String getCaptivePortalServerUrl(Context context) {
+        return getCaptivePortalServerUrl(context, false);
+    }
+
+    @VisibleForTesting
+    protected CaptivePortalProbeResult isCaptivePortal() {
+        if (!mIsCaptivePortalCheckEnabled) return new CaptivePortalProbeResult(204, null);
+
+        URL pacUrl = null, httpUrl = null, httpsUrl = null;
+
+        // On networks with a PAC instead of fetching a URL that should result in a 204
+        // response, we instead simply fetch the PAC script.  This is done for a few reasons:
+        // 1. At present our PAC code does not yet handle multiple PACs on multiple networks
+        //    until something like https://android-review.googlesource.com/#/c/115180/ lands.
+        //    Network.openConnection() will ignore network-specific PACs and instead fetch
+        //    using NO_PROXY.  If a PAC is in place, the only fetch we know will succeed with
+        //    NO_PROXY is the fetch of the PAC itself.
+        // 2. To proxy the generate_204 fetch through a PAC would require a number of things
+        //    happen before the fetch can commence, namely:
+        //        a) the PAC script be fetched
+        //        b) a PAC script resolver service be fired up and resolve the captive portal
+        //           server.
+        //    Network validation could be delayed until these prerequisities are satisifed or
+        //    could simply be left to race them.  Neither is an optimal solution.
+        // 3. PAC scripts are sometimes used to block or restrict Internet access and may in
+        //    fact block fetching of the generate_204 URL which would lead to false negative
+        //    results for network validation.
+        final ProxyInfo proxyInfo = mNetworkAgentInfo.linkProperties.getHttpProxy();
+        if (proxyInfo != null && !Uri.EMPTY.equals(proxyInfo.getPacFileUrl())) {
+            try {
+                pacUrl = new URL(proxyInfo.getPacFileUrl().toString());
+            } catch (MalformedURLException e) {
+                validationLog("Invalid PAC URL: " + proxyInfo.getPacFileUrl().toString());
+                return CaptivePortalProbeResult.FAILED;
+            }
+        }
+
+        if (pacUrl == null) {
+            try {
+                httpUrl = new URL(getCaptivePortalServerUrl(mContext, false));
+                httpsUrl = new URL(getCaptivePortalServerUrl(mContext, true));
+            } catch (MalformedURLException e) {
+                validationLog("Bad validation URL: " + getCaptivePortalServerUrl(mContext, false));
+                return CaptivePortalProbeResult.FAILED;
+            }
+        }
+
+        long startTime = SystemClock.elapsedRealtime();
+
+        // Pre-resolve the captive portal server host so we can log it.
+        // Only do this if HttpURLConnection is about to, to avoid any potentially
+        // unnecessary resolution.
+        String hostToResolve = null;
+        if (pacUrl != null) {
+            hostToResolve = pacUrl.getHost();
+        } else if (proxyInfo != null) {
+            hostToResolve = proxyInfo.getHost();
+        } else {
+            hostToResolve = httpUrl.getHost();
+        }
+
+        if (!TextUtils.isEmpty(hostToResolve)) {
+            String probeName = ValidationProbeEvent.getProbeName(ValidationProbeEvent.PROBE_DNS);
+            final Stopwatch dnsTimer = new Stopwatch().start();
+            try {
+                InetAddress[] addresses = mNetworkAgentInfo.network.getAllByName(hostToResolve);
+                long dnsLatency = dnsTimer.stop();
+                ValidationProbeEvent.logEvent(mNetId, dnsLatency,
+                        ValidationProbeEvent.PROBE_DNS, ValidationProbeEvent.DNS_SUCCESS);
+                final StringBuffer connectInfo = new StringBuffer(", " + hostToResolve + "=");
+                for (InetAddress address : addresses) {
+                    connectInfo.append(address.getHostAddress());
+                    if (address != addresses[addresses.length-1]) connectInfo.append(",");
+                }
+                validationLog(probeName + " OK " + dnsLatency + "ms" + connectInfo);
+            } catch (UnknownHostException e) {
+                long dnsLatency = dnsTimer.stop();
+                ValidationProbeEvent.logEvent(mNetId, dnsLatency,
+                        ValidationProbeEvent.PROBE_DNS, ValidationProbeEvent.DNS_FAILURE);
+                validationLog(probeName + " FAIL " + dnsLatency + "ms, " + hostToResolve);
+            }
+        }
+
+        CaptivePortalProbeResult result;
+        if (pacUrl != null) {
+            result = sendHttpProbe(pacUrl, ValidationProbeEvent.PROBE_PAC);
+        } else if (mUseHttps) {
+            result = sendParallelHttpProbes(httpsUrl, httpUrl);
+        } else {
+            result = sendHttpProbe(httpUrl, ValidationProbeEvent.PROBE_HTTP);
+        }
+
+        long endTime = SystemClock.elapsedRealtime();
+
+        sendNetworkConditionsBroadcast(true /* response received */,
+                result.isPortal() /* isCaptivePortal */,
+                startTime, endTime);
+
+        return result;
     }
 
     /**
@@ -671,60 +801,14 @@
      * Returns HTTP response code.
      */
     @VisibleForTesting
-    protected CaptivePortalProbeResult isCaptivePortal() {
-        if (!mIsCaptivePortalCheckEnabled) return new CaptivePortalProbeResult(204, null);
-
+    protected CaptivePortalProbeResult sendHttpProbe(URL url, int probeType) {
         HttpURLConnection urlConnection = null;
         int httpResponseCode = 599;
         String redirectUrl = null;
         final Stopwatch probeTimer = new Stopwatch().start();
         try {
-            URL url = new URL(getCaptivePortalServerUrl(mContext));
-            // On networks with a PAC instead of fetching a URL that should result in a 204
-            // response, we instead simply fetch the PAC script.  This is done for a few reasons:
-            // 1. At present our PAC code does not yet handle multiple PACs on multiple networks
-            //    until something like https://android-review.googlesource.com/#/c/115180/ lands.
-            //    Network.openConnection() will ignore network-specific PACs and instead fetch
-            //    using NO_PROXY.  If a PAC is in place, the only fetch we know will succeed with
-            //    NO_PROXY is the fetch of the PAC itself.
-            // 2. To proxy the generate_204 fetch through a PAC would require a number of things
-            //    happen before the fetch can commence, namely:
-            //        a) the PAC script be fetched
-            //        b) a PAC script resolver service be fired up and resolve the captive portal
-            //           server.
-            //    Network validation could be delayed until these prerequisities are satisifed or
-            //    could simply be left to race them.  Neither is an optimal solution.
-            // 3. PAC scripts are sometimes used to block or restrict Internet access and may in
-            //    fact block fetching of the generate_204 URL which would lead to false negative
-            //    results for network validation.
-            boolean fetchPac = false;
-            final ProxyInfo proxyInfo = mNetworkAgentInfo.linkProperties.getHttpProxy();
-            if (proxyInfo != null && !Uri.EMPTY.equals(proxyInfo.getPacFileUrl())) {
-                url = new URL(proxyInfo.getPacFileUrl().toString());
-                fetchPac = true;
-            }
-            final StringBuffer connectInfo = new StringBuffer();
-            String hostToResolve = null;
-            // Only resolve a host if HttpURLConnection is about to, to avoid any potentially
-            // unnecessary resolution.
-            if (proxyInfo == null || fetchPac) {
-                hostToResolve = url.getHost();
-            } else if (proxyInfo != null) {
-                hostToResolve = proxyInfo.getHost();
-            }
-            if (!TextUtils.isEmpty(hostToResolve)) {
-                connectInfo.append(", " + hostToResolve + "=");
-                final InetAddress[] addresses =
-                        mNetworkAgentInfo.network.getAllByName(hostToResolve);
-                for (InetAddress address : addresses) {
-                    connectInfo.append(address.getHostAddress());
-                    if (address != addresses[addresses.length-1]) connectInfo.append(",");
-                }
-            }
-            validationLog("Checking " + url.toString() + " on " +
-                    mNetworkAgentInfo.networkInfo.getExtraInfo() + connectInfo);
             urlConnection = (HttpURLConnection) mNetworkAgentInfo.network.openConnection(url);
-            urlConnection.setInstanceFollowRedirects(fetchPac);
+            urlConnection.setInstanceFollowRedirects(probeType == ValidationProbeEvent.PROBE_PAC);
             urlConnection.setConnectTimeout(SOCKET_TIMEOUT_MS);
             urlConnection.setReadTimeout(SOCKET_TIMEOUT_MS);
             urlConnection.setUseCaches(false);
@@ -738,7 +822,9 @@
             // Time how long it takes to get a response to our request
             long responseTimestamp = SystemClock.elapsedRealtime();
 
-            validationLog("isCaptivePortal: ret=" + httpResponseCode +
+            validationLog(ValidationProbeEvent.getProbeName(probeType) + " " + url +
+                    " time=" + (responseTimestamp - requestTimestamp) + "ms" +
+                    " ret=" + httpResponseCode +
                     " headers=" + urlConnection.getHeaderFields());
             // NOTE: We may want to consider an "HTTP/1.0 204" response to be a captive
             // portal.  The only example of this seen so far was a captive portal.  For
@@ -756,14 +842,10 @@
                 httpResponseCode = 204;
             }
 
-            if (httpResponseCode == 200 && fetchPac) {
+            if (httpResponseCode == 200 && probeType == ValidationProbeEvent.PROBE_PAC) {
                 validationLog("PAC fetch 200 response interpreted as 204 response.");
                 httpResponseCode = 204;
             }
-
-            sendNetworkConditionsBroadcast(true /* response received */,
-                    httpResponseCode != 204 /* isCaptivePortal */,
-                    requestTimestamp, responseTimestamp);
         } catch (IOException e) {
             validationLog("Probably not a portal: exception " + e);
             if (httpResponseCode == 599) {
@@ -774,11 +856,68 @@
                 urlConnection.disconnect();
             }
         }
-        final int probeType = ValidationProbeEvent.PROBE_HTTP;
         ValidationProbeEvent.logEvent(mNetId, probeTimer.stop(), probeType, httpResponseCode);
         return new CaptivePortalProbeResult(httpResponseCode, redirectUrl);
     }
 
+    private CaptivePortalProbeResult sendParallelHttpProbes(URL httpsUrl, URL httpUrl) {
+        // Number of probes to wait for. We might wait for all of them, but we might also return if
+        // only one of them has replied. For example, we immediately return if the HTTP probe finds
+        // a captive portal, even if the HTTPS probe is timing out.
+        final CountDownLatch latch = new CountDownLatch(2);
+
+        // Which probe result we're going to use. This doesn't need to be atomic, but it does need
+        // to be final because otherwise we can't set it from the ProbeThreads.
+        final AtomicReference<CaptivePortalProbeResult> finalResult = new AtomicReference<>();
+
+        final class ProbeThread extends Thread {
+            private final boolean mIsHttps;
+            private volatile CaptivePortalProbeResult mResult;
+
+            public ProbeThread(boolean isHttps) {
+                mIsHttps = isHttps;
+            }
+
+            public CaptivePortalProbeResult getResult() {
+                return mResult;
+            }
+
+            @Override
+            public void run() {
+                if (mIsHttps) {
+                    mResult = sendHttpProbe(httpsUrl, ValidationProbeEvent.PROBE_HTTPS);
+                } else {
+                    mResult = sendHttpProbe(httpUrl, ValidationProbeEvent.PROBE_HTTP);
+                }
+                if ((mIsHttps && mResult.isSuccessful()) || (!mIsHttps && mResult.isPortal())) {
+                    // HTTPS succeeded, or HTTP found a portal. Don't wait for the other probe.
+                    finalResult.compareAndSet(null, mResult);
+                    latch.countDown();
+                }
+                // Signal that one probe has completed. If we've already made a decision, or if this
+                // is the second probe, the latch will be at zero and we'll return a result.
+                latch.countDown();
+            }
+        }
+
+        ProbeThread httpsProbe = new ProbeThread(true);
+        ProbeThread httpProbe = new ProbeThread(false);
+        httpsProbe.start();
+        httpProbe.start();
+
+        try {
+            latch.await();
+        } catch (InterruptedException e) {
+            validationLog("Error: probe wait interrupted!");
+            return CaptivePortalProbeResult.FAILED;
+        }
+
+        // If there was no deciding probe, that means that both probes completed. Return HTTPS.
+        finalResult.compareAndSet(null, httpsProbe.getResult());
+
+        return finalResult.get();
+    }
+
     /**
      * @param responseReceived - whether or not we received a valid HTTP response to our request.
      * If false, isCaptivePortal and responseTimestampMs are ignored
diff --git a/services/core/java/com/android/server/connectivity/Tethering.java b/services/core/java/com/android/server/connectivity/Tethering.java
index c2022d5..1012f9a 100644
--- a/services/core/java/com/android/server/connectivity/Tethering.java
+++ b/services/core/java/com/android/server/connectivity/Tethering.java
@@ -610,6 +610,13 @@
         return ConnectivityManager.TETHER_ERROR_NO_ERROR;
     }
 
+    public void untetherAll() {
+        if (DBG) Log.d(TAG, "Untethering " + mIfaces);
+        for (String iface : mIfaces.keySet()) {
+            untether(iface);
+        }
+    }
+
     public int getLastTetherError(String iface) {
         TetherInterfaceSM sm = null;
         synchronized (mPublicSync) {
diff --git a/services/core/java/com/android/server/content/ContentService.java b/services/core/java/com/android/server/content/ContentService.java
index 03eb019..2103cce 100644
--- a/services/core/java/com/android/server/content/ContentService.java
+++ b/services/core/java/com/android/server/content/ContentService.java
@@ -352,6 +352,10 @@
         if (DEBUG) Slog.d(TAG, "Notifying update of " + uri + " for user " + userHandle
                 + " from observer " + observer + ", flags " + Integer.toHexString(flags));
 
+        if (uri == null) {
+            throw new NullPointerException("Uri must not be null");
+        }
+
         final int uid = Binder.getCallingUid();
         final int pid = Binder.getCallingPid();
         final int callingUserHandle = UserHandle.getCallingUserId();
diff --git a/services/core/java/com/android/server/content/SyncManager.java b/services/core/java/com/android/server/content/SyncManager.java
index 8af0af0..493fc4a 100644
--- a/services/core/java/com/android/server/content/SyncManager.java
+++ b/services/core/java/com/android/server/content/SyncManager.java
@@ -396,8 +396,8 @@
                 onUserRemoved(userId);
             } else if (Intent.ACTION_USER_UNLOCKED.equals(action)) {
                 onUserUnlocked(userId);
-            } else if (Intent.ACTION_USER_STOPPING.equals(action)) {
-                onUserStopping(userId);
+            } else if (Intent.ACTION_USER_STOPPED.equals(action)) {
+                onUserStopped(userId);
             }
         }
     };
@@ -405,6 +405,7 @@
     private final SyncHandler mSyncHandler;
 
     private volatile boolean mBootCompleted = false;
+    private volatile boolean mJobServiceReady = false;
 
     private ConnectivityManager getConnectivityManager() {
         synchronized (this) {
@@ -549,7 +550,7 @@
         intentFilter = new IntentFilter();
         intentFilter.addAction(Intent.ACTION_USER_REMOVED);
         intentFilter.addAction(Intent.ACTION_USER_UNLOCKED);
-        intentFilter.addAction(Intent.ACTION_USER_STOPPING);
+        intentFilter.addAction(Intent.ACTION_USER_STOPPED);
         mContext.registerReceiverAsUser(
                 mUserIntentReceiver, UserHandle.ALL, intentFilter, null, null);
 
@@ -1300,7 +1301,7 @@
         }
 
         getJobScheduler().scheduleAsPackage(b.build(), syncOperation.owningPackage,
-                syncOperation.target.userId, "sync");
+                syncOperation.target.userId, syncOperation.wakeLockName());
     }
 
     /**
@@ -1421,7 +1422,7 @@
         }
     }
 
-    private void onUserStopping(int userId) {
+    private void onUserStopped(int userId) {
         updateRunningAccounts(null /* Don't sync any target */);
 
         cancelActiveSync(
@@ -2177,11 +2178,7 @@
         static final int MESSAGE_SCHEDULE_SYNC = 12;
         static final int MESSAGE_UPDATE_PERIODIC_SYNC = 13;
         static final int MESSAGE_REMOVE_PERIODIC_SYNC = 14;
-        /**
-         * Posted delayed in order to expire syncs that are long-running.
-         * obj: {@link com.android.server.content.SyncManager.ActiveSyncContext}
-         */
-        private static final int MESSAGE_SYNC_EXPIRED = 7;
+
         /**
          * Posted periodically to monitor network process for long-running syncs.
          * obj: {@link com.android.server.content.SyncManager.ActiveSyncContext}
@@ -2209,7 +2206,7 @@
         }
 
         void checkIfDeviceReady() {
-            if (mProvisioned && mBootCompleted) {
+            if (mProvisioned && mBootCompleted && mJobServiceReady) {
                 synchronized(this) {
                     mSyncStorageEngine.restoreAllPeriodicSyncs();
                     // Dispatch any stashed messages.
@@ -2229,7 +2226,7 @@
          */
         private boolean tryEnqueueMessageUntilReadyToRun(Message msg) {
             synchronized (this) {
-                if (!mBootCompleted || !mProvisioned) {
+                if (!mBootCompleted || !mProvisioned || !mJobServiceReady) {
                     // Need to copy the message bc looper will recycle it.
                     Message m = Message.obtain(msg);
                     mUnreadyQueue.add(m);
@@ -2252,6 +2249,8 @@
                 if (msg.what == MESSAGE_JOBSERVICE_OBJECT) {
                     Slog.i(TAG, "Got SyncJobService instance.");
                     mSyncJobService = (SyncJobService) msg.obj;
+                    mJobServiceReady = true;
+                    checkIfDeviceReady();
                 } else if (msg.what == SyncHandler.MESSAGE_ACCOUNTS_UPDATED) {
                     if (Log.isLoggable(TAG, Log.VERBOSE)) {
                         Slog.v(TAG, "handleSyncHandlerMessage: MESSAGE_ACCOUNTS_UPDATED");
@@ -2972,7 +2971,6 @@
                 Slog.v(TAG, "removing all MESSAGE_MONITOR_SYNC & MESSAGE_SYNC_EXPIRED for "
                         + activeSyncContext.toString());
             }
-            mSyncHandler.removeMessages(SyncHandler.MESSAGE_SYNC_EXPIRED, activeSyncContext);
             mSyncHandler.removeMessages(SyncHandler.MESSAGE_MONITOR_SYNC, activeSyncContext);
         }
 
diff --git a/services/core/java/com/android/server/display/DisplayDeviceInfo.java b/services/core/java/com/android/server/display/DisplayDeviceInfo.java
index 55ba302..5ce66fa 100644
--- a/services/core/java/com/android/server/display/DisplayDeviceInfo.java
+++ b/services/core/java/com/android/server/display/DisplayDeviceInfo.java
@@ -165,6 +165,11 @@
     public Display.ColorTransform[] supportedColorTransforms = Display.ColorTransform.EMPTY_ARRAY;
 
     /**
+     * The HDR capabilities this display claims to support.
+     */
+    public Display.HdrCapabilities hdrCapabilities;
+
+    /**
      * The nominal apparent density of the display in DPI used for layout calculations.
      * This density is sensitive to the viewing distance.  A big TV and a tablet may have
      * the same apparent density even though the pixels on the TV are much bigger than
@@ -288,6 +293,7 @@
                 || colorTransformId != other.colorTransformId
                 || defaultColorTransformId != other.defaultColorTransformId
                 || !Arrays.equals(supportedColorTransforms, other.supportedColorTransforms)
+                || !Objects.equal(hdrCapabilities, other.hdrCapabilities)
                 || densityDpi != other.densityDpi
                 || xDpi != other.xDpi
                 || yDpi != other.yDpi
@@ -321,6 +327,7 @@
         colorTransformId = other.colorTransformId;
         defaultColorTransformId = other.defaultColorTransformId;
         supportedColorTransforms = other.supportedColorTransforms;
+        hdrCapabilities = other.hdrCapabilities;
         densityDpi = other.densityDpi;
         xDpi = other.xDpi;
         yDpi = other.yDpi;
@@ -349,6 +356,7 @@
         sb.append(", colorTransformId ").append(colorTransformId);
         sb.append(", defaultColorTransformId ").append(defaultColorTransformId);
         sb.append(", supportedColorTransforms ").append(Arrays.toString(supportedColorTransforms));
+        sb.append(", HdrCapabilities ").append(hdrCapabilities);
         sb.append(", density ").append(densityDpi);
         sb.append(", ").append(xDpi).append(" x ").append(yDpi).append(" dpi");
         sb.append(", appVsyncOff ").append(appVsyncOffsetNanos);
diff --git a/services/core/java/com/android/server/display/LocalDisplayAdapter.java b/services/core/java/com/android/server/display/LocalDisplayAdapter.java
index 715d2d8..7b16ea6 100644
--- a/services/core/java/com/android/server/display/LocalDisplayAdapter.java
+++ b/services/core/java/com/android/server/display/LocalDisplayAdapter.java
@@ -158,6 +158,7 @@
         private int mDefaultColorTransformId;
         private int mActiveColorTransformId;
         private boolean mActiveColorTransformInvalid;
+        private Display.HdrCapabilities mHdrCapabilities;
 
         private  SurfaceControl.PhysicalDisplayInfo mDisplayInfos[];
 
@@ -172,6 +173,7 @@
             } else {
                 mBacklight = null;
             }
+            mHdrCapabilities = SurfaceControl.getHdrCapabilities(displayToken);
         }
 
         public boolean updatePhysicalDisplayInfoLocked(
@@ -368,6 +370,7 @@
                 for (int i = 0; i < mSupportedColorTransforms.size(); i++) {
                     mInfo.supportedColorTransforms[i] = mSupportedColorTransforms.valueAt(i);
                 }
+                mInfo.hdrCapabilities = mHdrCapabilities;
                 mInfo.appVsyncOffsetNanos = phys.appVsyncOffsetNanos;
                 mInfo.presentationDeadlineNanos = phys.presentationDeadlineNanos;
                 mInfo.state = mState;
diff --git a/services/core/java/com/android/server/display/LogicalDisplay.java b/services/core/java/com/android/server/display/LogicalDisplay.java
index 6dae397..973f04c 100644
--- a/services/core/java/com/android/server/display/LogicalDisplay.java
+++ b/services/core/java/com/android/server/display/LogicalDisplay.java
@@ -241,6 +241,7 @@
             mBaseDisplayInfo.supportedColorTransforms = Arrays.copyOf(
                     deviceInfo.supportedColorTransforms,
                     deviceInfo.supportedColorTransforms.length);
+            mBaseDisplayInfo.hdrCapabilities = deviceInfo.hdrCapabilities;
             mBaseDisplayInfo.logicalDensityDpi = deviceInfo.densityDpi;
             mBaseDisplayInfo.physicalXDpi = deviceInfo.xDpi;
             mBaseDisplayInfo.physicalYDpi = deviceInfo.yDpi;
diff --git a/services/core/java/com/android/server/fingerprint/EnrollClient.java b/services/core/java/com/android/server/fingerprint/EnrollClient.java
index b636ce5..6a533c9 100644
--- a/services/core/java/com/android/server/fingerprint/EnrollClient.java
+++ b/services/core/java/com/android/server/fingerprint/EnrollClient.java
@@ -51,7 +51,8 @@
                     " getGroupId():" + getGroupId());
         }
         if (remaining == 0) {
-            FingerprintUtils.getInstance().addFingerprintForUser(getContext(), fingerId, groupId);
+            FingerprintUtils.getInstance().addFingerprintForUser(getContext(), fingerId,
+                    getTargetUserId());
         }
         return sendEnrollResult(fingerId, groupId, remaining);
     }
diff --git a/services/core/java/com/android/server/fingerprint/FingerprintService.java b/services/core/java/com/android/server/fingerprint/FingerprintService.java
index 9a2db8e..ae01635 100644
--- a/services/core/java/com/android/server/fingerprint/FingerprintService.java
+++ b/services/core/java/com/android/server/fingerprint/FingerprintService.java
@@ -540,13 +540,15 @@
         startClient(client, true /* initiatedByClient */);
     }
 
-    private void startEnrollment(IBinder token, byte [] cryptoToken, int callingUserId, int groupId,
+    private void startEnrollment(IBinder token, byte [] cryptoToken, int userId,
             IFingerprintServiceReceiver receiver, int flags, boolean restricted,
             String opPackageName) {
-        updateActiveGroup(groupId, opPackageName);
+        updateActiveGroup(userId, opPackageName);
+
+        final int groupId = userId; // default group for fingerprint enrollment
 
         EnrollClient client = new EnrollClient(getContext(), mHalDeviceId, token, receiver,
-                callingUserId, groupId, cryptoToken, restricted, opPackageName) {
+                userId, groupId, cryptoToken, restricted, opPackageName) {
 
             @Override
             public IFingerprintDaemon getFingerprintDaemon() {
@@ -680,15 +682,14 @@
         }
 
         @Override // Binder call
-        public void enroll(final IBinder token, final byte[] cryptoToken, final int groupId,
+        public void enroll(final IBinder token, final byte[] cryptoToken, final int userId,
                 final IFingerprintServiceReceiver receiver, final int flags,
                 final String opPackageName) {
             checkPermission(MANAGE_FINGERPRINT);
             final int limit =  mContext.getResources().getInteger(
                     com.android.internal.R.integer.config_fingerprintMaxTemplatesPerUser);
-            final int callingUserId = UserHandle.getCallingUserId();
-            final int enrolled = FingerprintService.this.
-                    getEnrolledFingerprints(callingUserId).size();
+
+            final int enrolled = FingerprintService.this.getEnrolledFingerprints(userId).size();
             if (enrolled >= limit) {
                 Slog.w(TAG, "Too many fingerprints registered");
                 return;
@@ -696,7 +697,7 @@
 
             // Group ID is arbitrarily set to parent profile user ID. It just represents
             // the default fingerprints for the user.
-            if (!isCurrentUserOrProfile(groupId)) {
+            if (!isCurrentUserOrProfile(userId)) {
                 return;
             }
 
@@ -704,7 +705,7 @@
             mHandler.post(new Runnable() {
                 @Override
                 public void run() {
-                    startEnrollment(token, cryptoToken, callingUserId, groupId, receiver, flags,
+                    startEnrollment(token, cryptoToken, userId, receiver, flags,
                             restricted, opPackageName);
                 }
             });
diff --git a/services/core/java/com/android/server/job/JobStore.java b/services/core/java/com/android/server/job/JobStore.java
index 5ad988a..1f7d312 100644
--- a/services/core/java/com/android/server/job/JobStore.java
+++ b/services/core/java/com/android/server/job/JobStore.java
@@ -333,6 +333,7 @@
             out.attribute(null, "sourceUserId", String.valueOf(jobStatus.getSourceUserId()));
             out.attribute(null, "uid", Integer.toString(jobStatus.getUid()));
             out.attribute(null, "priority", String.valueOf(jobStatus.getPriority()));
+            out.attribute(null, "flags", String.valueOf(jobStatus.getFlags()));
         }
 
         private void writeBundleToXml(PersistableBundle extras, XmlSerializer out)
@@ -543,6 +544,10 @@
                 if (val != null) {
                     jobBuilder.setPriority(Integer.parseInt(val));
                 }
+                val = parser.getAttributeValue(null, "flags");
+                if (val != null) {
+                    jobBuilder.setFlags(Integer.parseInt(val));
+                }
                 val = parser.getAttributeValue(null, "sourceUserId");
                 sourceUserId = val == null ? -1 : Integer.parseInt(val);
             } catch (NumberFormatException e) {
diff --git a/services/core/java/com/android/server/job/controllers/ConnectivityController.java b/services/core/java/com/android/server/job/controllers/ConnectivityController.java
index 88cf322..f5aac08 100644
--- a/services/core/java/com/android/server/job/controllers/ConnectivityController.java
+++ b/services/core/java/com/android/server/job/controllers/ConnectivityController.java
@@ -16,6 +16,7 @@
 
 package com.android.server.job.controllers;
 
+import android.app.job.JobInfo;
 import android.content.BroadcastReceiver;
 import android.content.Context;
 import android.content.Intent;
@@ -97,7 +98,9 @@
     }
 
     private boolean updateConstraintsSatisfied(JobStatus jobStatus) {
-        final NetworkInfo info = mConnManager.getActiveNetworkInfoForUid(jobStatus.getSourceUid());
+        final boolean ignoreBlocked = (jobStatus.getFlags() & JobInfo.FLAG_WILL_BE_FOREGROUND) != 0;
+        final NetworkInfo info = mConnManager.getActiveNetworkInfoForUid(jobStatus.getSourceUid(),
+                ignoreBlocked);
         final boolean connected = (info != null) && info.isConnected();
         final boolean unmetered = connected && !info.isMetered();
         final boolean notRoaming = connected && !info.isRoaming();
diff --git a/services/core/java/com/android/server/job/controllers/JobStatus.java b/services/core/java/com/android/server/job/controllers/JobStatus.java
index 9ab4386..19bede9 100644
--- a/services/core/java/com/android/server/job/controllers/JobStatus.java
+++ b/services/core/java/com/android/server/job/controllers/JobStatus.java
@@ -150,19 +150,9 @@
             this.sourceTag = tag;
         }
 
-        if (this.sourceTag != null) {
-            StringBuilder sb = new StringBuilder();
-            sb.append(job.getService().getPackageName());
-            sb.append('/');
-            sb.append(this.sourceTag);
-            if (sourcePackageName != null) {
-                sb.append('/');
-                sb.append(this.sourcePackageName);
-            }
-            this.batteryName = sb.toString();
-        } else {
-            this.batteryName = job.getService().flattenToShortString();
-        }
+        this.batteryName = this.sourceTag != null
+                ? this.sourceTag + ":" + job.getService().getPackageName()
+                : job.getService().flattenToShortString();
         this.tag = "*job*/" + this.batteryName;
 
         this.earliestRunTimeElapsedMillis = earliestRunTimeElapsedMillis;
@@ -307,6 +297,10 @@
         return job.getPriority();
     }
 
+    public int getFlags() {
+        return job.getFlags();
+    }
+
     public boolean hasConnectivityConstraint() {
         return (requiredConstraints&CONSTRAINT_CONNECTIVITY) != 0;
     }
@@ -426,12 +420,12 @@
         // satisfied).
         // AppNotIdle implicit constraint must be satisfied
         // DeviceNotDozing implicit constraint must be satisfied
-        return (isConstraintsSatisfied()
-                || (!job.isPeriodic()
-                && hasDeadlineConstraint() && (satisfiedConstraints&CONSTRAINT_DEADLINE) != 0)
-                )
-                && (satisfiedConstraints & CONSTRAINT_APP_NOT_IDLE) != 0
-                && (satisfiedConstraints & CONSTRAINT_DEVICE_NOT_DOZING) != 0;
+        final boolean deadlineSatisfied = (!job.isPeriodic() && hasDeadlineConstraint()
+                && (satisfiedConstraints & CONSTRAINT_DEADLINE) != 0);
+        final boolean notIdle = (satisfiedConstraints & CONSTRAINT_APP_NOT_IDLE) != 0;
+        final boolean notDozing = (satisfiedConstraints & CONSTRAINT_DEVICE_NOT_DOZING) != 0
+                || (job.getFlags() & JobInfo.FLAG_WILL_BE_FOREGROUND) != 0;
+        return (isConstraintsSatisfied() || deadlineSatisfied) && notIdle && notDozing;
     }
 
     static final int CONSTRAINTS_OF_INTEREST =
@@ -571,6 +565,10 @@
             if (job.getPriority() != 0) {
                 pw.print(prefix); pw.print("  Priority: "); pw.println(job.getPriority());
             }
+            if (job.getFlags() != 0) {
+                pw.print(prefix); pw.print("  Flags: ");
+                pw.println(Integer.toHexString(job.getFlags()));
+            }
             pw.print(prefix); pw.print("  Requires: charging=");
             pw.print(job.isRequireCharging()); pw.print(" deviceIdle=");
             pw.println(job.isRequireDeviceIdle());
@@ -623,6 +621,9 @@
             pw.print(prefix); pw.print("Satisfied constraints:");
             dumpConstraints(pw, satisfiedConstraints);
             pw.println();
+            pw.print(prefix); pw.print("Unsatisfied constraints:");
+            dumpConstraints(pw, (requiredConstraints & ~satisfiedConstraints));
+            pw.println();
         }
         if (changedAuthorities != null) {
             pw.print(prefix); pw.println("Changed authorities:");
diff --git a/services/core/java/com/android/server/net/NetworkPolicyManagerService.java b/services/core/java/com/android/server/net/NetworkPolicyManagerService.java
index 43f47fa..50d9368 100644
--- a/services/core/java/com/android/server/net/NetworkPolicyManagerService.java
+++ b/services/core/java/com/android/server/net/NetworkPolicyManagerService.java
@@ -48,7 +48,6 @@
 import static android.net.NetworkPolicyManager.FIREWALL_RULE_DENY;
 import static android.net.NetworkPolicyManager.POLICY_NONE;
 import static android.net.NetworkPolicyManager.POLICY_REJECT_METERED_BACKGROUND;
-import static android.net.NetworkPolicyManager.RULE_ALLOW_ALL;
 import static android.net.NetworkPolicyManager.RULE_ALLOW_METERED;
 import static android.net.NetworkPolicyManager.RULE_REJECT_METERED;
 import static android.net.NetworkPolicyManager.RULE_TEMPORARY_ALLOW_METERED;
@@ -349,6 +348,9 @@
     /** Foreground at UID granularity. */
     final SparseIntArray mUidState = new SparseIntArray();
 
+    /** Higher priority listener before general event dispatch */
+    private INetworkPolicyListener mConnectivityListener;
+
     private final RemoteCallbackList<INetworkPolicyListener>
             mListeners = new RemoteCallbackList<>();
 
@@ -465,7 +467,7 @@
                 continue;
             }
             for (int j = 0; j < numberUsers; j++) {
-                final UserInfo user = users.get(i);
+                final UserInfo user = users.get(j);
                 final int uid = UserHandle.getUid(user.id, app.uid);
                 mDefaultRestrictBackgroundWhitelistUids.append(uid, true);
                 if (LOGD) Slog.d(TAG, "revoked whistelist status for uid " + uid + ": "
@@ -1391,6 +1393,7 @@
                 final String tag = in.getName();
                 if (type == START_TAG) {
                     if (TAG_POLICY_LIST.equals(tag)) {
+                        final boolean oldValue = mRestrictBackground;
                         version = readIntAttribute(in, ATTR_VERSION);
                         if (version >= VERSION_ADDED_RESTRICT_BACKGROUND) {
                             mRestrictBackground = readBooleanAttribute(
@@ -1398,6 +1401,12 @@
                         } else {
                             mRestrictBackground = false;
                         }
+                        if (mRestrictBackground != oldValue) {
+                            // Some early services may have read the default value,
+                            // so notify them that it's changed
+                            mHandler.obtainMessage(MSG_RESTRICT_BACKGROUND_CHANGED,
+                                    mRestrictBackground ? 1 : 0, 0).sendToTarget();
+                        }
 
                     } else if (TAG_NETWORK_POLICY.equals(tag)) {
                         final int networkTemplate = readIntAttribute(in, ATTR_NETWORK_TEMPLATE);
@@ -1766,20 +1775,25 @@
     }
 
     @Override
+    public void setConnectivityListener(INetworkPolicyListener listener) {
+        mContext.enforceCallingOrSelfPermission(CONNECTIVITY_INTERNAL, TAG);
+        if (mConnectivityListener != null) {
+            throw new IllegalStateException("Connectivity listener already registered");
+        }
+        mConnectivityListener = listener;
+    }
+
+    @Override
     public void registerListener(INetworkPolicyListener listener) {
         // TODO: create permission for observing network policy
         mContext.enforceCallingOrSelfPermission(CONNECTIVITY_INTERNAL, TAG);
-
         mListeners.register(listener);
-
-        // TODO: consider dispatching existing rules to new listeners
     }
 
     @Override
     public void unregisterListener(INetworkPolicyListener listener) {
         // TODO: create permission for observing network policy
         mContext.enforceCallingOrSelfPermission(CONNECTIVITY_INTERNAL, TAG);
-
         mListeners.unregister(listener);
     }
 
@@ -1899,6 +1913,18 @@
     }
 
     @Override
+    public void onTetheringChanged(String iface, boolean tethering) {
+        // No need to enforce permission because setRestrictBackground() will do it.
+        if (LOGD) Log.d(TAG, "onTetherStateChanged(" + iface + ", " + tethering + ")");
+        synchronized (mRulesLock) {
+            if (mRestrictBackground && tethering) {
+                Log.d(TAG, "Tethering on (" + iface +"); disable Data Saver");
+                setRestrictBackground(false);
+            }
+        }
+    }
+
+    @Override
     public void setRestrictBackground(boolean restrictBackground) {
         mContext.enforceCallingOrSelfPermission(MANAGE_NETWORK_POLICY, TAG);
         final long token = Binder.clearCallingIdentity();
@@ -2742,8 +2768,8 @@
         final boolean isBlacklisted = (uidPolicy & POLICY_REJECT_METERED_BACKGROUND) != 0;
         final boolean isWhitelisted = mRestrictBackgroundWhitelistUids.get(uid);
 
-        int newRule = RULE_ALLOW_ALL;
-        final int oldRule = mUidRules.get(uid);
+        int newRule = RULE_UNKNOWN;
+        final int oldRule = mUidRules.get(uid, RULE_UNKNOWN);
 
         // First step: define the new rule based on user restrictions and foreground state.
         if (isForeground) {
@@ -2765,8 +2791,7 @@
                     + ", oldRule: " + ruleToString(oldRule));
         }
 
-
-        if (newRule == RULE_ALLOW_ALL) {
+        if (newRule == RULE_UNKNOWN) {
             mUidRules.delete(uid);
         } else {
             mUidRules.put(uid, newRule);
@@ -2846,6 +2871,45 @@
         }
     }
 
+    private void dispatchUidRulesChanged(INetworkPolicyListener listener, int uid, int uidRules) {
+        if (listener != null) {
+            try {
+                listener.onUidRulesChanged(uid, uidRules);
+            } catch (RemoteException ignored) {
+            }
+        }
+    }
+
+    private void dispatchMeteredIfacesChanged(INetworkPolicyListener listener,
+            String[] meteredIfaces) {
+        if (listener != null) {
+            try {
+                listener.onMeteredIfacesChanged(meteredIfaces);
+            } catch (RemoteException ignored) {
+            }
+        }
+    }
+
+    private void dispatchRestrictBackgroundChanged(INetworkPolicyListener listener,
+            boolean restrictBackground) {
+        if (listener != null) {
+            try {
+                listener.onRestrictBackgroundChanged(restrictBackground);
+            } catch (RemoteException ignored) {
+            }
+        }
+    }
+
+    private void dispatchRestrictBackgroundWhitelistChanged(INetworkPolicyListener listener,
+            int uid, boolean whitelisted) {
+        if (listener != null) {
+            try {
+                listener.onRestrictBackgroundWhitelistChanged(uid, whitelisted);
+            } catch (RemoteException ignored) {
+            }
+        }
+    }
+
     private Handler.Callback mHandlerCallback = new Handler.Callback() {
         @Override
         public boolean handleMessage(Message msg) {
@@ -2853,30 +2917,22 @@
                 case MSG_RULES_CHANGED: {
                     final int uid = msg.arg1;
                     final int uidRules = msg.arg2;
+                    dispatchUidRulesChanged(mConnectivityListener, uid, uidRules);
                     final int length = mListeners.beginBroadcast();
                     for (int i = 0; i < length; i++) {
                         final INetworkPolicyListener listener = mListeners.getBroadcastItem(i);
-                        if (listener != null) {
-                            try {
-                                listener.onUidRulesChanged(uid, uidRules);
-                            } catch (RemoteException e) {
-                            }
-                        }
+                        dispatchUidRulesChanged(listener, uid, uidRules);
                     }
                     mListeners.finishBroadcast();
                     return true;
                 }
                 case MSG_METERED_IFACES_CHANGED: {
                     final String[] meteredIfaces = (String[]) msg.obj;
+                    dispatchMeteredIfacesChanged(mConnectivityListener, meteredIfaces);
                     final int length = mListeners.beginBroadcast();
                     for (int i = 0; i < length; i++) {
                         final INetworkPolicyListener listener = mListeners.getBroadcastItem(i);
-                        if (listener != null) {
-                            try {
-                                listener.onMeteredIfacesChanged(meteredIfaces);
-                            } catch (RemoteException e) {
-                            }
-                        }
+                        dispatchMeteredIfacesChanged(listener, meteredIfaces);
                     }
                     mListeners.finishBroadcast();
                     return true;
@@ -2903,15 +2959,11 @@
                 }
                 case MSG_RESTRICT_BACKGROUND_CHANGED: {
                     final boolean restrictBackground = msg.arg1 != 0;
+                    dispatchRestrictBackgroundChanged(mConnectivityListener, restrictBackground);
                     final int length = mListeners.beginBroadcast();
                     for (int i = 0; i < length; i++) {
                         final INetworkPolicyListener listener = mListeners.getBroadcastItem(i);
-                        if (listener != null) {
-                            try {
-                                listener.onRestrictBackgroundChanged(restrictBackground);
-                            } catch (RemoteException e) {
-                            }
-                        }
+                        dispatchRestrictBackgroundChanged(listener, restrictBackground);
                     }
                     mListeners.finishBroadcast();
                     final Intent intent =
@@ -2935,18 +2987,16 @@
                     final boolean changed = msg.arg2 == 1;
                     final Boolean whitelisted = (Boolean) msg.obj;
 
+                    // First notify internal listeners...
                     if (whitelisted != null) {
+                        final boolean whitelistedBool = whitelisted.booleanValue();
+                        dispatchRestrictBackgroundWhitelistChanged(mConnectivityListener, uid,
+                                whitelistedBool);
                         final int length = mListeners.beginBroadcast();
                         for (int i = 0; i < length; i++) {
-                            // First notify internal listeners...
                             final INetworkPolicyListener listener = mListeners.getBroadcastItem(i);
-                            if (listener != null) {
-                                try {
-                                    listener.onRestrictBackgroundWhitelistChanged(uid,
-                                            whitelisted.booleanValue());
-                                } catch (RemoteException e) {
-                                }
-                            }
+                            dispatchRestrictBackgroundWhitelistChanged(listener, uid,
+                                    whitelistedBool);
                         }
                         mListeners.finishBroadcast();
                     }
diff --git a/services/core/java/com/android/server/notification/NotificationManagerService.java b/services/core/java/com/android/server/notification/NotificationManagerService.java
index e411579..9bdb149 100644
--- a/services/core/java/com/android/server/notification/NotificationManagerService.java
+++ b/services/core/java/com/android/server/notification/NotificationManagerService.java
@@ -3316,9 +3316,9 @@
 
                         mNotificationList.remove(index);
 
-                        cancelNotificationLocked(r, sendDelete, reason);
                         cancelGroupChildrenLocked(r, callingUid, callingPid, listenerName,
                                 REASON_GROUP_SUMMARY_CANCELED);
+                        cancelNotificationLocked(r, sendDelete, reason);
                         updateLightsLocked();
                     }
                 }
diff --git a/services/core/java/com/android/server/notification/ScheduleCalendar.java b/services/core/java/com/android/server/notification/ScheduleCalendar.java
index 4c57c1d..9267d82 100644
--- a/services/core/java/com/android/server/notification/ScheduleCalendar.java
+++ b/services/core/java/com/android/server/notification/ScheduleCalendar.java
@@ -31,7 +31,7 @@
 
     @Override
     public String toString() {
-        return "ScheduleCalendar[mDays=" + mDays + "]";
+        return "ScheduleCalendar[mDays=" + mDays + ", mSchedule=" + mSchedule + "]";
     }
 
     public void setSchedule(ScheduleInfo schedule) {
diff --git a/services/core/java/com/android/server/notification/ScheduleConditionProvider.java b/services/core/java/com/android/server/notification/ScheduleConditionProvider.java
index 8d0ad96..15a63ec 100644
--- a/services/core/java/com/android/server/notification/ScheduleConditionProvider.java
+++ b/services/core/java/com/android/server/notification/ScheduleConditionProvider.java
@@ -86,6 +86,8 @@
             pw.print("        ");
             pw.print(meetsSchedule(mSubscriptions.get(conditionId), now) ? "* " : "  ");
             pw.println(conditionId);
+            pw.print("            ");
+            pw.println(mSubscriptions.get(conditionId).toString());
         }
         dumpUpcomingTime(pw, "mNextAlarmTime", mNextAlarmTime, now);
     }
diff --git a/services/core/java/com/android/server/os/SchedulingPolicyService.java b/services/core/java/com/android/server/os/SchedulingPolicyService.java
index 80faf473..f98012b 100644
--- a/services/core/java/com/android/server/os/SchedulingPolicyService.java
+++ b/services/core/java/com/android/server/os/SchedulingPolicyService.java
@@ -66,7 +66,7 @@
         final int callingUid = Binder.getCallingUid();
         switch (callingUid) {
         case Process.AUDIOSERVER_UID: // fastcapture, fastmixer
-        case Process.MEDIA_UID: // camera
+        case Process.CAMERASERVER_UID: // camera high frame rate recording
             return true;
         default:
             return false;
diff --git a/services/core/java/com/android/server/pm/BackgroundDexOptService.java b/services/core/java/com/android/server/pm/BackgroundDexOptService.java
index f6255af..0a25402 100644
--- a/services/core/java/com/android/server/pm/BackgroundDexOptService.java
+++ b/services/core/java/com/android/server/pm/BackgroundDexOptService.java
@@ -148,7 +148,7 @@
                     // jobs because PackageDexOptimizer.performDexOpt is synchronized.
                     pm.performDexOpt(pkg,
                             /* instruction set */ null,
-                            /* checkProfiles */ false,
+                            /* checkProfiles */ true,
                             PackageManagerService.REASON_BOOT,
                             /* force */ false);
                 }
diff --git a/services/core/java/com/android/server/pm/Installer.java b/services/core/java/com/android/server/pm/Installer.java
index 66c1a53..913c824 100644
--- a/services/core/java/com/android/server/pm/Installer.java
+++ b/services/core/java/com/android/server/pm/Installer.java
@@ -133,19 +133,20 @@
     }
 
     public void dexopt(String apkPath, int uid, String instructionSet, int dexoptNeeded,
-            int dexFlags, String compilerFilter, String volumeUuid) throws InstallerException {
+            int dexFlags, String compilerFilter, String volumeUuid, String sharedLibraries)
+            throws InstallerException {
         assertValidInstructionSet(instructionSet);
         mInstaller.dexopt(apkPath, uid, instructionSet, dexoptNeeded, dexFlags,
-                compilerFilter, volumeUuid);
+                compilerFilter, volumeUuid, sharedLibraries);
     }
 
     public void dexopt(String apkPath, int uid, String pkgName, String instructionSet,
             int dexoptNeeded, @Nullable String outputPath, int dexFlags,
-            String compilerFilter, String volumeUuid)
-                    throws InstallerException {
+            String compilerFilter, String volumeUuid, String sharedLibraries)
+            throws InstallerException {
         assertValidInstructionSet(instructionSet);
         mInstaller.dexopt(apkPath, uid, pkgName, instructionSet, dexoptNeeded,
-                outputPath, dexFlags, compilerFilter, volumeUuid);
+                outputPath, dexFlags, compilerFilter, volumeUuid, sharedLibraries);
     }
 
     public boolean mergeProfiles(int uid, String pkgName) throws InstallerException {
diff --git a/services/core/java/com/android/server/pm/OtaDexoptService.java b/services/core/java/com/android/server/pm/OtaDexoptService.java
index c3a9226..649a27c 100644
--- a/services/core/java/com/android/server/pm/OtaDexoptService.java
+++ b/services/core/java/com/android/server/pm/OtaDexoptService.java
@@ -142,7 +142,8 @@
             return;
         }
 
-        mPackageDexOptimizer.performDexOpt(nextPackage, null /* ISAs */, false /* useProfiles */,
+        mPackageDexOptimizer.performDexOpt(nextPackage, nextPackage.usesLibraryFiles,
+                null /* ISAs */, false /* checkProfiles */,
                 getCompilerFilterForReason(PackageManagerService.REASON_AB_OTA));
     }
 
diff --git a/services/core/java/com/android/server/pm/PackageDexOptimizer.java b/services/core/java/com/android/server/pm/PackageDexOptimizer.java
index b3ac05c..f134e40 100644
--- a/services/core/java/com/android/server/pm/PackageDexOptimizer.java
+++ b/services/core/java/com/android/server/pm/PackageDexOptimizer.java
@@ -88,8 +88,8 @@
      * <p>Calls to {@link com.android.server.pm.Installer#dexopt} on {@link #mInstaller} are
      * synchronized on {@link #mInstallLock}.
      */
-    int performDexOpt(PackageParser.Package pkg, String[] instructionSets, boolean checkProfiles,
-            String targetCompilationFilter) {
+    int performDexOpt(PackageParser.Package pkg, String[] sharedLibraries,
+            String[] instructionSets, boolean checkProfiles, String targetCompilationFilter) {
         synchronized (mInstallLock) {
             final boolean useLock = mSystemReady;
             if (useLock) {
@@ -97,7 +97,7 @@
                 mDexoptWakeLock.acquire();
             }
             try {
-                return performDexOptLI(pkg, instructionSets, checkProfiles,
+                return performDexOptLI(pkg, sharedLibraries, instructionSets, checkProfiles,
                         targetCompilationFilter);
             } finally {
                 if (useLock) {
@@ -122,8 +122,8 @@
         return dexoptFlags;
     }
 
-    private int performDexOptLI(PackageParser.Package pkg, String[] targetInstructionSets,
-            boolean checkProfiles, String targetCompilerFilter) {
+    private int performDexOptLI(PackageParser.Package pkg, String[] sharedLibraries,
+            String[] targetInstructionSets, boolean checkProfiles, String targetCompilerFilter) {
         final String[] instructionSets = targetInstructionSets != null ?
                 targetInstructionSets : getAppDexInstructionSets(pkg.applicationInfo);
 
@@ -137,21 +137,14 @@
         boolean isProfileGuidedFilter = DexFile.isProfileGuidedCompilerFilter(targetCompilerFilter);
         // If any part of the app is used by other apps, we cannot use profile-guided
         // compilation.
-        // Skip the check for forward locked packages since they don't share their code.
-        if (isProfileGuidedFilter && !pkg.isForwardLocked()) {
-            for (String path : paths) {
-                if (isUsedByOtherApps(path)) {
-                    checkProfiles = false;
+        if (isProfileGuidedFilter && isUsedByOtherApps(pkg)) {
+            checkProfiles = false;
 
-                    targetCompilerFilter = getNonProfileGuidedCompilerFilter(targetCompilerFilter);
-                    if (DexFile.isProfileGuidedCompilerFilter(targetCompilerFilter)) {
-                        throw new IllegalStateException(targetCompilerFilter);
-                    }
-                    isProfileGuidedFilter = false;
-
-                    break;
-                }
+            targetCompilerFilter = getNonProfileGuidedCompilerFilter(targetCompilerFilter);
+            if (DexFile.isProfileGuidedCompilerFilter(targetCompilerFilter)) {
+                throw new IllegalStateException(targetCompilerFilter);
             }
+            isProfileGuidedFilter = false;
         }
 
         // If we're asked to take profile updates into account, check now.
@@ -207,10 +200,22 @@
                         throw new IllegalStateException("Invalid dexopt:" + dexoptNeeded);
                 }
 
+                String sharedLibrariesPath = null;
+                if (sharedLibraries != null && sharedLibraries.length != 0) {
+                    StringBuilder sb = new StringBuilder();
+                    for (String lib : sharedLibraries) {
+                        if (sb.length() != 0) {
+                            sb.append(":");
+                        }
+                        sb.append(lib);
+                    }
+                    sharedLibrariesPath = sb.toString();
+                }
                 Log.i(TAG, "Running dexopt (" + dexoptType + ") on: " + path + " pkg="
                         + pkg.applicationInfo.packageName + " isa=" + dexCodeInstructionSet
                         + " vmSafeMode=" + vmSafeMode + " debuggable=" + debuggable
-                        + " target-filter=" + targetCompilerFilter + " oatDir = " + oatDir);
+                        + " target-filter=" + targetCompilerFilter + " oatDir = " + oatDir
+                        + " sharedLibraries=" + sharedLibrariesPath);
                 // Profile guide compiled oat files should not be public.
                 final boolean isPublic = !pkg.isForwardLocked() && !isProfileGuidedFilter;
                 final int profileFlag = isProfileGuidedFilter ? DEXOPT_PROFILE_GUIDED : 0;
@@ -223,7 +228,8 @@
 
                 try {
                     mInstaller.dexopt(path, sharedGid, pkg.packageName, dexCodeInstructionSet,
-                            dexoptNeeded, oatDir, dexFlags, targetCompilerFilter, pkg.volumeUuid);
+                            dexoptNeeded, oatDir, dexFlags, targetCompilerFilter, pkg.volumeUuid,
+                            sharedLibrariesPath);
                     performedDexOpt = true;
                 } catch (InstallerException e) {
                     Slog.w(TAG, "Failed to dexopt", e);
@@ -281,20 +287,34 @@
         mSystemReady = true;
     }
 
-    private boolean isUsedByOtherApps(String apkPath) {
-        try {
-            apkPath = new File(apkPath).getCanonicalPath();
-        } catch (IOException e) {
-            // Log an error but continue without it.
-            Slog.w(TAG, "Failed to get canonical path", e);
+    /**
+     * Returns true if the profiling data collected for the given app indicate
+     * that the apps's APK has been loaded by another app.
+     * Note that this returns false for all forward-locked apps and apps without
+     * any collected profiling data.
+     */
+    public static boolean isUsedByOtherApps(PackageParser.Package pkg) {
+        if (pkg.isForwardLocked()) {
+            // Skip the check for forward locked packages since they don't share their code.
+            return false;
         }
-        String useMarker = apkPath.replace('/', '@');
-        final int[] currentUserIds = UserManagerService.getInstance().getUserIds();
-        for (int i = 0; i < currentUserIds.length; i++) {
-            File profileDir = Environment.getDataProfilesDeForeignDexDirectory(currentUserIds[i]);
-            File foreignUseMark = new File(profileDir, useMarker);
-            if (foreignUseMark.exists()) {
-                return true;
+
+        for (String apkPath : pkg.getAllCodePathsExcludingResourceOnly()) {
+            try {
+                apkPath = new File(apkPath).getCanonicalPath();
+            } catch (IOException e) {
+                // Log an error but continue without it.
+                Slog.w(TAG, "Failed to get canonical path", e);
+            }
+            String useMarker = apkPath.replace('/', '@');
+            final int[] currentUserIds = UserManagerService.getInstance().getUserIds();
+            for (int i = 0; i < currentUserIds.length; i++) {
+                File profileDir =
+                        Environment.getDataProfilesDeForeignDexDirectory(currentUserIds[i]);
+                File foreignUseMark = new File(profileDir, useMarker);
+                if (foreignUseMark.exists()) {
+                    return true;
+                }
             }
         }
         return false;
diff --git a/services/core/java/com/android/server/pm/PackageInstallerService.java b/services/core/java/com/android/server/pm/PackageInstallerService.java
index 8368185..83af017 100644
--- a/services/core/java/com/android/server/pm/PackageInstallerService.java
+++ b/services/core/java/com/android/server/pm/PackageInstallerService.java
@@ -866,8 +866,9 @@
         if ((callingUid != Process.SHELL_UID) && (callingUid != Process.ROOT_UID)) {
             mAppOps.checkPackage(callingUid, callerPackageName);
             final String installerPackageName = mPm.getInstallerPackageName(packageName);
-            allowSilentUninstall = installerPackageName != null
-                    && installerPackageName.equals(callerPackageName);
+            allowSilentUninstall = mPm.isOrphaned(packageName) ||
+                    (installerPackageName != null
+                            && installerPackageName.equals(callerPackageName));
         }
 
         // Check whether the caller is device owner, in which case we do it silently.
diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java
index 547379d..24a6171 100644
--- a/services/core/java/com/android/server/pm/PackageManagerService.java
+++ b/services/core/java/com/android/server/pm/PackageManagerService.java
@@ -266,6 +266,7 @@
 import java.io.ByteArrayOutputStream;
 import java.io.File;
 import java.io.FileDescriptor;
+import java.io.FileInputStream;
 import java.io.FileNotFoundException;
 import java.io.FileOutputStream;
 import java.io.FileReader;
@@ -274,6 +275,7 @@
 import java.io.InputStream;
 import java.io.PrintWriter;
 import java.nio.charset.StandardCharsets;
+import java.security.DigestInputStream;
 import java.security.MessageDigest;
 import java.security.NoSuchAlgorithmException;
 import java.security.PublicKey;
@@ -437,6 +439,8 @@
      */
     private static final int DEFAULT_VERIFICATION_RESPONSE = PackageManager.VERIFICATION_ALLOW;
 
+    static final String PLATFORM_PACKAGE_NAME = "android";
+
     static final String DEFAULT_CONTAINER_PACKAGE = "com.android.defcontainer";
 
     static final ComponentName DEFAULT_CONTAINER_COMPONENT = new ComponentName(
@@ -498,6 +502,9 @@
 
     public static final int REASON_LAST = REASON_FORCED_DEXOPT;
 
+    /** Special library name that skips shared libraries check during compilation. */
+    private static final String SKIP_SHARED_LIBRARY_CHECK = "&";
+
     final ServiceThread mHandlerThread;
 
     final PackageHandler mHandler;
@@ -1217,12 +1224,7 @@
             // Initial version of the file had no version number and stored one
             // package-timestamp pair per line.
             // Note that the first line has already been read from the InputStream.
-            String line = firstLine;
-            while (true) {
-                if (line == null) {
-                    break;
-                }
-
+            for (String line = firstLine; line != null; line = readLine(in, sb)) {
                 String[] tokens = line.split(" ");
                 if (tokens.length != 2) {
                     throw new IOException("Failed to parse " + line +
@@ -1241,8 +1243,6 @@
                         reason++) {
                     pkg.mLastPackageUsageTimeInMills[reason] = timestamp;
                 }
-
-                line = readLine(in, sb);
             }
         }
 
@@ -1574,6 +1574,7 @@
                     if (DEBUG_INSTALL) Log.v(TAG, "Handling post-install for " + msg.arg1);
 
                     PostInstallData data = mRunningInstalls.get(msg.arg1);
+                    final boolean didRestore = (msg.arg2 != 0);
                     mRunningInstalls.delete(msg.arg1);
 
                     if (data != null) {
@@ -1588,7 +1589,8 @@
 
                         // Handle the parent package
                         handlePackagePostInstall(parentRes, grantPermissions, killApp,
-                                grantedPermissions, args.observer);
+                                grantedPermissions, didRestore, args.installerPackageName,
+                                args.observer);
 
                         // Handle the child packages
                         final int childCount = (parentRes.addedChildPackages != null)
@@ -1596,7 +1598,8 @@
                         for (int i = 0; i < childCount; i++) {
                             PackageInstalledInfo childRes = parentRes.addedChildPackages.valueAt(i);
                             handlePackagePostInstall(childRes, grantPermissions, killApp,
-                                    grantedPermissions, args.observer);
+                                    grantedPermissions, false, args.installerPackageName,
+                                    args.observer);
                         }
 
                         // Log tracing if needed
@@ -1792,6 +1795,7 @@
 
     private void handlePackagePostInstall(PackageInstalledInfo res, boolean grantPermissions,
             boolean killApp, String[] grantedPermissions,
+            boolean launchedForRestore, String installerPackage,
             IPackageInstallObserver2 installObserver) {
         if (res.returnCode == PackageManager.INSTALL_SUCCEEDED) {
             // Send the removed broadcasts
@@ -1876,6 +1880,14 @@
                             null /*package*/, null /*extras*/, 0 /*flags*/,
                             packageName /*targetPackage*/,
                             null /*finishedReceiver*/, updateUsers);
+                } else if (launchedForRestore && !isSystemApp(res.pkg)) {
+                    // First-install and we did a restore, so we're responsible for the
+                    // first-launch broadcast.
+                    if (DEBUG_BACKUP) {
+                        Slog.i(TAG, "Post-restore of " + packageName
+                                + " sending FIRST_LAUNCH in " + Arrays.toString(firstUsers));
+                    }
+                    sendFirstLaunchBroadcast(packageName, installerPackage, firstUsers);
                 }
 
                 // Send broadcast package appeared if forward locked/external for all users
@@ -2050,17 +2062,18 @@
         final int immutableFlags = PackageManager.FLAG_PERMISSION_SYSTEM_FIXED
                 | PackageManager.FLAG_PERMISSION_POLICY_FIXED;
 
-        synchronized (mPackages) {
-            for (String permission : pkg.requestedPermissions) {
-                BasePermission bp = mSettings.mPermissions.get(permission);
-                if (bp != null && (bp.isRuntime() || bp.isDevelopment())
-                        && (grantedPermissions == null
-                               || ArrayUtils.contains(grantedPermissions, permission))) {
-                    final int flags = permissionsState.getPermissionFlags(permission, userId);
-                    // Installer cannot change immutable permissions.
-                    if ((flags & immutableFlags) == 0) {
-                        grantRuntimePermission(pkg.packageName, permission, userId);
-                    }
+        for (String permission : pkg.requestedPermissions) {
+            final BasePermission bp;
+            synchronized (mPackages) {
+                bp = mSettings.mPermissions.get(permission);
+            }
+            if (bp != null && (bp.isRuntime() || bp.isDevelopment())
+                    && (grantedPermissions == null
+                           || ArrayUtils.contains(grantedPermissions, permission))) {
+                final int flags = permissionsState.getPermissionFlags(permission, userId);
+                // Installer cannot change immutable permissions.
+                if ((flags & immutableFlags) == 0) {
+                    grantRuntimePermission(pkg.packageName, permission, userId);
                 }
             }
         }
@@ -2338,7 +2351,8 @@
                                 mInstaller.dexopt(lib, Process.SYSTEM_UID, dexCodeInstructionSet,
                                         dexoptNeeded, DEXOPT_PUBLIC /*dexFlags*/,
                                         getCompilerFilterForReason(REASON_SHARED_APK),
-                                        StorageManager.UUID_PRIVATE_INTERNAL);
+                                        StorageManager.UUID_PRIVATE_INTERNAL,
+                                        SKIP_SHARED_LIBRARY_CHECK);
                             }
                         } catch (FileNotFoundException e) {
                             Slog.w(TAG, "Library not found: " + lib);
@@ -3102,7 +3116,7 @@
 
     @Override
     public void checkPackageStartable(String packageName, int userId) {
-        final boolean userKeyUnlocked = isUserKeyUnlocked(userId);
+        final boolean userKeyUnlocked = StorageManager.isUserKeyUnlocked(userId);
 
         synchronized (mPackages) {
             final PackageSetting ps = mSettings.mPackages.get(packageName);
@@ -3453,30 +3467,6 @@
     }
 
     /**
-     * Return if the user key is currently unlocked.
-     */
-    private boolean isUserKeyUnlocked(int userId) {
-        if (StorageManager.isFileEncryptedNativeOrEmulated()) {
-            final IMountService mount = IMountService.Stub
-                    .asInterface(ServiceManager.getService("mount"));
-            if (mount == null) {
-                Slog.w(TAG, "Early during boot, assuming locked");
-                return false;
-            }
-            final long token = Binder.clearCallingIdentity();
-            try {
-                return mount.isUserKeyUnlocked(userId);
-            } catch (RemoteException e) {
-                throw e.rethrowAsRuntimeException();
-            } finally {
-                Binder.restoreCallingIdentity(token);
-            }
-        } else {
-            return true;
-        }
-    }
-
-    /**
      * Update given flags based on encryption status of current user.
      */
     private int updateFlags(int flags, int userId) {
@@ -3487,7 +3477,7 @@
             // give them what they want
         } else {
             // Caller expressed no opinion, so match based on user state
-            if (isUserKeyUnlocked(userId)) {
+            if (StorageManager.isUserKeyUnlocked(userId)) {
                 flags |= PackageManager.MATCH_DIRECT_BOOT_AWARE | MATCH_DIRECT_BOOT_UNAWARE;
             } else {
                 flags |= PackageManager.MATCH_DIRECT_BOOT_AWARE;
@@ -7197,7 +7187,7 @@
 
             performDexOpt(pkg.packageName,
                     null /* instructionSet */,
-                    false /* checkProfiles */,
+                    true /* checkProfiles */,
                     causeFirstBoot ? REASON_FIRST_BOOT : REASON_BOOT,
                     false /* force */);
         }
@@ -7304,12 +7294,14 @@
             for (PackageParser.Package depPackage : deps) {
                 // TODO: Analyze and investigate if we (should) profile libraries.
                 // Currently this will do a full compilation of the library by default.
-                pdo.performDexOpt(depPackage, instructionSets, false /* checkProfiles */,
+                pdo.performDexOpt(depPackage, null /* sharedLibraries */, instructionSets,
+                        false /* checkProfiles */,
                         getCompilerFilterForReason(REASON_NON_SYSTEM_LIBRARY));
             }
         }
 
-        return pdo.performDexOpt(p, instructionSets, checkProfiles, targetCompilerFilter);
+        return pdo.performDexOpt(p, p.usesLibraryFiles, instructionSets, checkProfiles,
+                targetCompilerFilter);
     }
 
     Collection<PackageParser.Package> findSharedNonSystemLibraries(PackageParser.Package p) {
@@ -9743,7 +9735,9 @@
                 switch (grant) {
                     case GRANT_INSTALL: {
                         // Revoke this as runtime permission to handle the case of
-                        // a runtime permission being downgraded to an install one. Also in permission review mode we keep dangerous permissions for legacy apps
+                        // a runtime permission being downgraded to an install one.
+                        // Also in permission review mode we keep dangerous permissions
+                        // for legacy apps
                         for (int userId : UserManagerService.getInstance().getUserIds()) {
                             if (origPermissions.getRuntimePermissionState(
                                     bp.name, userId) != null) {
@@ -9791,10 +9785,21 @@
                                     && !appSupportsRuntimePermissions) {
                                 // For legacy apps that need a permission review, every new
                                 // runtime permission is granted but it is pending a review.
-                                if ((flags & FLAG_PERMISSION_REVIEW_REQUIRED) == 0) {
-                                    permissionsState.grantRuntimePermission(bp, userId);
-                                    flags |= FLAG_PERMISSION_REVIEW_REQUIRED;
-                                    // We changed the permission and flags, hence have to write.
+                                // We also need to review only platform defined runtime
+                                // permissions as these are the only ones the platform knows
+                                // how to disable the API to simulate revocation as legacy
+                                // apps don't expect to run with revoked permissions.
+                                if (PLATFORM_PACKAGE_NAME.equals(bp.sourcePackage)) {
+                                    if ((flags & FLAG_PERMISSION_REVIEW_REQUIRED) == 0) {
+                                        flags |= FLAG_PERMISSION_REVIEW_REQUIRED;
+                                        // We changed the flags, hence have to write.
+                                        changedRuntimePermissionUserIds = ArrayUtils.appendInt(
+                                                changedRuntimePermissionUserIds, userId);
+                                    }
+                                }
+                                if (permissionsState.grantRuntimePermission(bp, userId)
+                                        != PermissionsState.PERMISSION_OPERATION_FAILURE) {
+                                    // We changed the permission, hence have to write.
                                     changedRuntimePermissionUserIds = ArrayUtils.appendInt(
                                             changedRuntimePermissionUserIds, userId);
                                 }
@@ -11723,7 +11728,7 @@
     }
 
     @Override
-    public void finishPackageInstall(int token) {
+    public void finishPackageInstall(int token, boolean didLaunch) {
         enforceSystemOrRoot("Only the system is allowed to finish installs");
 
         if (DEBUG_INSTALL) {
@@ -11731,7 +11736,7 @@
         }
         Trace.asyncTraceEnd(TRACE_TAG_PACKAGE_MANAGER, "restore", token);
 
-        final Message msg = mHandler.obtainMessage(POST_INSTALL, token, 0);
+        final Message msg = mHandler.obtainMessage(POST_INSTALL, token, didLaunch ? 1 : 0);
         mHandler.sendMessage(msg);
     }
 
@@ -12060,6 +12065,54 @@
         });
     }
 
+    /**
+     * Callback from PackageSettings whenever an app is first transitioned out of the
+     * 'stopped' state.  Normally we just issue the broadcast, but we can't do that if
+     * the app was "launched" for a restoreAtInstall operation.  Therefore we check
+     * here whether the app is the target of an ongoing install, and only send the
+     * broadcast immediately if it is not in that state.  If it *is* undergoing a restore,
+     * the first-launch broadcast will be sent implicitly on that basis in POST_INSTALL
+     * handling.
+     */
+    void notifyFirstLaunch(final String pkgName, final String installerPackage, final int userId) {
+        // Serialize this with the rest of the install-process message chain.  In the
+        // restore-at-install case, this Runnable will necessarily run before the
+        // POST_INSTALL message is processed, so the contents of mRunningInstalls
+        // are coherent.  In the non-restore case, the app has already completed install
+        // and been launched through some other means, so it is not in a problematic
+        // state for observers to see the FIRST_LAUNCH signal.
+        mHandler.post(new Runnable() {
+            @Override
+            public void run() {
+                for (int i = 0; i < mRunningInstalls.size(); i++) {
+                    final PostInstallData data = mRunningInstalls.valueAt(i);
+                    if (pkgName.equals(data.res.pkg.applicationInfo.packageName)) {
+                        // right package; but is it for the right user?
+                        for (int uIndex = 0; uIndex < data.res.newUsers.length; uIndex++) {
+                            if (userId == data.res.newUsers[uIndex]) {
+                                if (DEBUG_BACKUP) {
+                                    Slog.i(TAG, "Package " + pkgName
+                                            + " being restored so deferring FIRST_LAUNCH");
+                                }
+                                return;
+                            }
+                        }
+                    }
+                }
+                // didn't find it, so not being restored
+                if (DEBUG_BACKUP) {
+                    Slog.i(TAG, "Package " + pkgName + " sending normal FIRST_LAUNCH");
+                }
+                sendFirstLaunchBroadcast(pkgName, installerPackage, new int[] {userId});
+            }
+        });
+    }
+
+    private void sendFirstLaunchBroadcast(String pkgName, String installerPkg, int[] userIds) {
+        sendPackageBroadcast(Intent.ACTION_PACKAGE_FIRST_LAUNCH, pkgName, null, 0,
+                installerPkg, null, userIds);
+    }
+
     private abstract class HandlerParams {
         private static final int MAX_RETRIES = 4;
 
@@ -13787,6 +13840,13 @@
         return false;
     }
 
+    private static void updateDigest(MessageDigest digest, File file) throws IOException {
+        try (DigestInputStream digestStream =
+                new DigestInputStream(new FileInputStream(file), digest)) {
+            while (digestStream.read() != -1) {} // nothing to do; just plow through the file
+        }
+    }
+
     private void replacePackageLIF(PackageParser.Package pkg, final int policyFlags, int scanFlags,
             UserHandle user, String installerPackageName, PackageInstalledInfo res) {
         final boolean isEphemeral = (policyFlags & PackageParser.PARSE_IS_EPHEMERAL) != 0;
@@ -13794,10 +13854,26 @@
         final PackageParser.Package oldPackage;
         final String pkgName = pkg.packageName;
         final int[] allUsers;
+        final int[] installedUsers;
 
-        // First find the old package info and check signatures
         synchronized(mPackages) {
             oldPackage = mPackages.get(pkgName);
+            if (DEBUG_INSTALL) Slog.d(TAG, "replacePackageLI: new=" + pkg + ", old=" + oldPackage);
+
+            // don't allow upgrade to target a release SDK from a pre-release SDK
+            final boolean oldTargetsPreRelease = oldPackage.applicationInfo.targetSdkVersion
+                    == android.os.Build.VERSION_CODES.CUR_DEVELOPMENT;
+            final boolean newTargetsPreRelease = pkg.applicationInfo.targetSdkVersion
+                    == android.os.Build.VERSION_CODES.CUR_DEVELOPMENT;
+            if (oldTargetsPreRelease
+                    && !newTargetsPreRelease
+                    && ((policyFlags & PackageParser.PARSE_FORCE_SDK) == 0)) {
+                Slog.w(TAG, "Can't install package targeting released sdk");
+                res.setReturnCode(PackageManager.INSTALL_FAILED_UPDATE_INCOMPATIBLE);
+                return;
+            }
+
+            // don't allow an upgrade from full to ephemeral
             final boolean oldIsEphemeral = oldPackage.applicationInfo.isEphemeralApp();
             if (isEphemeral && !oldIsEphemeral) {
                 // can't downgrade from full to ephemeral
@@ -13805,7 +13881,8 @@
                 res.setReturnCode(PackageManager.INSTALL_FAILED_EPHEMERAL_INVALID);
                 return;
             }
-            if (DEBUG_INSTALL) Slog.d(TAG, "replacePackageLI: new=" + pkg + ", old=" + oldPackage);
+
+            // verify signatures are valid
             final PackageSetting ps = mSettings.mPackages.get(pkgName);
             if (shouldCheckUpgradeKeySetLP(ps, scanFlags)) {
                 if (!checkUpgradeKeySetLP(ps, pkg)) {
@@ -13824,6 +13901,32 @@
                 }
             }
 
+            // don't allow a system upgrade unless the upgrade hash matches
+            if (oldPackage.restrictUpdateHash != null && oldPackage.isSystemApp()) {
+                byte[] digestBytes = null;
+                try {
+                    final MessageDigest digest = MessageDigest.getInstance("SHA-512");
+                    updateDigest(digest, new File(pkg.baseCodePath));
+                    if (!ArrayUtils.isEmpty(pkg.splitCodePaths)) {
+                        for (String path : pkg.splitCodePaths) {
+                            updateDigest(digest, new File(path));
+                        }
+                    }
+                    digestBytes = digest.digest();
+                } catch (NoSuchAlgorithmException | IOException e) {
+                    res.setError(INSTALL_FAILED_INVALID_APK,
+                            "Could not compute hash: " + pkgName);
+                    return;
+                }
+                if (!Arrays.equals(oldPackage.restrictUpdateHash, digestBytes)) {
+                    res.setError(INSTALL_FAILED_INVALID_APK,
+                            "New package fails restrict-update check: " + pkgName);
+                    return;
+                }
+                // retain upgrade restriction
+                pkg.restrictUpdateHash = oldPackage.restrictUpdateHash;
+            }
+
             // Check for shared user id changes
             String invalidPackageName =
                     getParentOrChildPackageChangedSharedUser(oldPackage, pkg);
@@ -13836,6 +13939,7 @@
 
             // In case of rollback, remember per-user/profile install state
             allUsers = sUserManager.getUserIds();
+            installedUsers = ps.queryInstalledUsers(allUsers, true);
         }
 
         // Update what is removed
@@ -13843,6 +13947,7 @@
         res.removedInfo.uid = oldPackage.applicationInfo.uid;
         res.removedInfo.removedPackage = oldPackage.packageName;
         res.removedInfo.isUpdate = true;
+        res.removedInfo.origUsers = installedUsers;
         final int childCount = (oldPackage.childPackages != null)
                 ? oldPackage.childPackages.size() : 0;
         for (int i = 0; i < childCount; i++) {
@@ -14411,6 +14516,7 @@
         final boolean onExternal = (((installFlags & PackageManager.INSTALL_EXTERNAL) != 0)
                 || (args.volumeUuid != null));
         final boolean ephemeral = ((installFlags & PackageManager.INSTALL_EPHEMERAL) != 0);
+        final boolean forceSdk = ((installFlags & PackageManager.INSTALL_FORCE_SDK) != 0);
         boolean replace = false;
         int scanFlags = SCAN_NEW_INSTALL | SCAN_UPDATE_SIGNATURE;
         if (args.move != null) {
@@ -14439,7 +14545,8 @@
                 | PackageParser.PARSE_ENFORCE_CODE
                 | (forwardLocked ? PackageParser.PARSE_FORWARD_LOCK : 0)
                 | (onExternal ? PackageParser.PARSE_EXTERNAL_STORAGE : 0)
-                | (ephemeral ? PackageParser.PARSE_IS_EPHEMERAL : 0);
+                | (ephemeral ? PackageParser.PARSE_IS_EPHEMERAL : 0)
+                | (forceSdk ? PackageParser.PARSE_FORCE_SDK : 0);
         PackageParser pp = new PackageParser();
         pp.setSeparateProcesses(mSeparateProcesses);
         pp.setDisplayMetrics(mMetrics);
@@ -14694,11 +14801,20 @@
                 return;
             }
 
+            // Shared libraries for the package need to be updated.
+            synchronized (mPackages) {
+                try {
+                    updateSharedLibrariesLPw(pkg, null);
+                } catch (PackageManagerException e) {
+                    Slog.e(TAG, "updateSharedLibrariesLPw failed: " + e.getMessage());
+                }
+            }
             Trace.traceBegin(TRACE_TAG_PACKAGE_MANAGER, "dexopt");
             // Do not run PackageDexOptimizer through the local performDexOpt
             // method because `pkg` is not in `mPackages` yet.
-            int result = mPackageDexOptimizer.performDexOpt(pkg, null /* instructionSets */,
-                    false /* checkProfiles */, getCompilerFilterForReason(REASON_INSTALL));
+            int result = mPackageDexOptimizer.performDexOpt(pkg, pkg.usesLibraryFiles,
+                    null /* instructionSets */, false /* checkProfiles */,
+                    getCompilerFilterForReason(REASON_INSTALL));
             Trace.traceEnd(TRACE_TAG_PACKAGE_MANAGER);
             if (result == PackageDexOptimizer.DEX_OPT_FAILED) {
                 String msg = "Extracting package failed for " + pkgName;
@@ -16016,7 +16132,7 @@
 
         final UserManager um = mContext.getSystemService(UserManager.class);
         final int flags;
-        if (um.isUserUnlocked(userId)) {
+        if (um.isUserUnlockingOrUnlocked(userId)) {
             flags = StorageManager.FLAG_STORAGE_DE | StorageManager.FLAG_STORAGE_CE;
         } else if (um.isUserRunning(userId)) {
             flags = StorageManager.FLAG_STORAGE_DE;
@@ -17415,6 +17531,13 @@
         }
     }
 
+    public boolean isOrphaned(String packageName) {
+        // reader
+        synchronized (mPackages) {
+            return mSettings.isOrphaned(packageName);
+        }
+    }
+
     @Override
     public int getApplicationEnabledSetting(String packageName, int userId) {
         if (!sUserManager.exists(userId)) return COMPONENT_ENABLED_STATE_DISABLED;
@@ -18700,7 +18823,7 @@
         final UserManager um = mContext.getSystemService(UserManager.class);
         for (UserInfo user : um.getUsers()) {
             final int flags;
-            if (um.isUserUnlocked(user.id)) {
+            if (um.isUserUnlockingOrUnlocked(user.id)) {
                 flags = StorageManager.FLAG_STORAGE_DE | StorageManager.FLAG_STORAGE_CE;
             } else if (um.isUserRunning(user.id)) {
                 flags = StorageManager.FLAG_STORAGE_DE;
@@ -19014,7 +19137,8 @@
         // First look for stale data that doesn't belong, and check if things
         // have changed since we did our last restorecon
         if ((flags & StorageManager.FLAG_STORAGE_CE) != 0) {
-            if (!isUserKeyUnlocked(userId)) {
+            if (StorageManager.isFileEncryptedNativeOrEmulated()
+                    && !StorageManager.isUserKeyUnlocked(userId)) {
                 throw new RuntimeException(
                         "Yikes, someone asked us to reconcile CE storage while " + userId
                                 + " was still locked; this would have caused massive data loss!");
@@ -19122,7 +19246,7 @@
         final UserManager um = mContext.getSystemService(UserManager.class);
         for (UserInfo user : um.getUsers()) {
             final int flags;
-            if (um.isUserUnlocked(user.id)) {
+            if (um.isUserUnlockingOrUnlocked(user.id)) {
                 flags = StorageManager.FLAG_STORAGE_DE | StorageManager.FLAG_STORAGE_CE;
             } else if (um.isUserRunning(user.id)) {
                 flags = StorageManager.FLAG_STORAGE_DE;
@@ -19397,12 +19521,13 @@
     public int movePackage(final String packageName, final String volumeUuid) {
         mContext.enforceCallingOrSelfPermission(android.Manifest.permission.MOVE_PACKAGE, null);
 
+        final UserHandle user = new UserHandle(UserHandle.getCallingUserId());
         final int moveId = mNextMoveId.getAndIncrement();
         mHandler.post(new Runnable() {
             @Override
             public void run() {
                 try {
-                    movePackageInternal(packageName, volumeUuid, moveId);
+                    movePackageInternal(packageName, volumeUuid, moveId, user);
                 } catch (PackageManagerException e) {
                     Slog.w(TAG, "Failed to move " + packageName, e);
                     mMoveCallbacks.notifyStatusChanged(moveId,
@@ -19414,8 +19539,7 @@
     }
 
     private void movePackageInternal(final String packageName, final String volumeUuid,
-            final int moveId) throws PackageManagerException {
-        final UserHandle user = new UserHandle(UserHandle.getCallingUserId());
+            final int moveId, UserHandle user) throws PackageManagerException {
         final StorageManager storage = mContext.getSystemService(StorageManager.class);
         final PackageManager pm = mContext.getPackageManager();
 
diff --git a/services/core/java/com/android/server/pm/PackageManagerServiceUtils.java b/services/core/java/com/android/server/pm/PackageManagerServiceUtils.java
index 3c065ae..67cbcd8 100644
--- a/services/core/java/com/android/server/pm/PackageManagerServiceUtils.java
+++ b/services/core/java/com/android/server/pm/PackageManagerServiceUtils.java
@@ -69,11 +69,12 @@
         long now = System.currentTimeMillis();
         for (Iterator<PackageParser.Package> i = pkgs.iterator(); i.hasNext();) {
             PackageParser.Package pkg = i.next();
-            long then = pkg.getLatestPackageUseTimeInMills();
+            long then = pkg.getLatestForegroundPackageUseTimeInMills();
             if (then + dexOptLRUThresholdInMills < now) {
                 if (DEBUG_DEXOPT) {
-                    Log.i(TAG, "Skipping dexopt of " + pkg.packageName + " last resumed: " +
-                          ((then == 0) ? "never" : new Date(then)));
+                    Log.i(TAG, "Skipping dexopt of " + pkg.packageName +
+                            " last used in foreground: " +
+                            ((then == 0) ? "never" : new Date(then)));
                 }
                 i.remove();
                 skipped++;
@@ -117,6 +118,18 @@
         }
         remainingPkgs.removeAll(result);
 
+        // Give priority to apps used by other apps.
+        for (PackageParser.Package pkg : remainingPkgs) {
+            if (PackageDexOptimizer.isUsedByOtherApps(pkg)) {
+                if (DEBUG_DEXOPT) {
+                    Log.i(TAG, "Adding app used by other apps " + result.size() + ": " +
+                            pkg.packageName);
+                }
+                result.add(pkg);
+            }
+        }
+        remainingPkgs.removeAll(result);
+
         // Filter out packages that aren't recently used, add all remaining apps.
         // TODO: add a property to control this?
         if (packageManagerService.isHistoricalPackageUsageAvailable()) {
diff --git a/services/core/java/com/android/server/pm/PackageManagerShellCommand.java b/services/core/java/com/android/server/pm/PackageManagerShellCommand.java
index 8527fd4..9ac9930 100644
--- a/services/core/java/com/android/server/pm/PackageManagerShellCommand.java
+++ b/services/core/java/com/android/server/pm/PackageManagerShellCommand.java
@@ -74,6 +74,8 @@
     final private WeakHashMap<String, Resources> mResourceCache =
             new WeakHashMap<String, Resources>();
     int mTargetUser;
+    boolean mBrief;
+    boolean mComponents;
 
     PackageManagerShellCommand(PackageManagerService service) {
         mInterface = service;
@@ -842,12 +844,20 @@
 
     private Intent parseIntentAndUser() throws URISyntaxException {
         mTargetUser = UserHandle.USER_CURRENT;
+        mBrief = false;
+        mComponents = false;
         Intent intent = Intent.parseCommandArgs(this, new Intent.CommandOptionHandler() {
             @Override
             public boolean handleOption(String opt, ShellCommand cmd) {
                 if ("--user".equals(opt)) {
                     mTargetUser = UserHandle.parseUserArg(cmd.getNextArgRequired());
                     return true;
+                } else if ("--brief".equals(opt)) {
+                    mBrief = true;
+                    return true;
+                } else if ("--components".equals(opt)) {
+                    mComponents = true;
+                    return true;
                 }
                 return false;
             }
@@ -857,6 +867,34 @@
         return intent;
     }
 
+    private void printResolveInfo(PrintWriterPrinter pr, String prefix, ResolveInfo ri,
+            boolean brief, boolean components) {
+        if (brief || components) {
+            final ComponentName comp;
+            if (ri.activityInfo != null) {
+                comp = new ComponentName(ri.activityInfo.packageName, ri.activityInfo.name);
+            } else if (ri.serviceInfo != null) {
+                comp = new ComponentName(ri.serviceInfo.packageName, ri.serviceInfo.name);
+            } else if (ri.providerInfo != null) {
+                comp = new ComponentName(ri.providerInfo.packageName, ri.providerInfo.name);
+            } else {
+                comp = null;
+            }
+            if (comp != null) {
+                if (!components) {
+                    pr.println(prefix + "priority=" + ri.priority
+                            + " preferredOrder=" + ri.preferredOrder
+                            + " match=0x" + Integer.toHexString(ri.match)
+                            + " specificIndex=" + ri.specificIndex
+                            + " isDefault=" + ri.isDefault);
+                }
+                pr.println(prefix + comp.flattenToShortString());
+                return;
+            }
+        }
+        ri.dump(pr, prefix);
+    }
+
     private int runResolveActivity() {
         Intent intent;
         try {
@@ -871,7 +909,7 @@
                 pw.println("No activity found");
             } else {
                 PrintWriterPrinter pr = new PrintWriterPrinter(pw);
-                ri.dump(pr, "");
+                printResolveInfo(pr, "", ri, mBrief, mComponents);
             }
         } catch (RemoteException e) {
             throw new RuntimeException("Failed calling service", e);
@@ -893,11 +931,18 @@
             if (result == null || result.size() <= 0) {
                 pw.println("No activities found");
             } else {
-                pw.print(result.size()); pw.println(" activities found:");
-                PrintWriterPrinter pr = new PrintWriterPrinter(pw);
-                for (int i=0; i<result.size(); i++) {
-                    pw.print("  Activity #"); pw.print(i); pw.println(":");
-                    result.get(i).dump(pr, "    ");
+                if (!mComponents) {
+                    pw.print(result.size()); pw.println(" activities found:");
+                    PrintWriterPrinter pr = new PrintWriterPrinter(pw);
+                    for (int i = 0; i < result.size(); i++) {
+                        pw.print("  Activity #"); pw.print(i); pw.println(":");
+                        printResolveInfo(pr, "    ", result.get(i), mBrief, mComponents);
+                    }
+                } else {
+                    PrintWriterPrinter pr = new PrintWriterPrinter(pw);
+                    for (int i = 0; i < result.size(); i++) {
+                        printResolveInfo(pr, "", result.get(i), mBrief, mComponents);
+                    }
                 }
             }
         } catch (RemoteException e) {
@@ -920,11 +965,18 @@
             if (result == null || result.size() <= 0) {
                 pw.println("No services found");
             } else {
-                pw.print(result.size()); pw.println(" services found:");
-                PrintWriterPrinter pr = new PrintWriterPrinter(pw);
-                for (int i=0; i<result.size(); i++) {
-                    pw.print("  Service #"); pw.print(i); pw.println(":");
-                    result.get(i).dump(pr, "    ");
+                if (!mComponents) {
+                    pw.print(result.size()); pw.println(" services found:");
+                    PrintWriterPrinter pr = new PrintWriterPrinter(pw);
+                    for (int i = 0; i < result.size(); i++) {
+                        pw.print("  Service #"); pw.print(i); pw.println(":");
+                        printResolveInfo(pr, "    ", result.get(i), mBrief, mComponents);
+                    }
+                } else {
+                    PrintWriterPrinter pr = new PrintWriterPrinter(pw);
+                    for (int i = 0; i < result.size(); i++) {
+                        printResolveInfo(pr, "", result.get(i), mBrief, mComponents);
+                    }
                 }
             }
         } catch (RemoteException e) {
@@ -947,11 +999,18 @@
             if (result == null || result.size() <= 0) {
                 pw.println("No receivers found");
             } else {
-                pw.print(result.size()); pw.println(" receivers found:");
-                PrintWriterPrinter pr = new PrintWriterPrinter(pw);
-                for (int i=0; i<result.size(); i++) {
-                    pw.print("  Receiver #"); pw.print(i); pw.println(":");
-                    result.get(i).dump(pr, "    ");
+                if (!mComponents) {
+                    pw.print(result.size()); pw.println(" receivers found:");
+                    PrintWriterPrinter pr = new PrintWriterPrinter(pw);
+                    for (int i = 0; i < result.size(); i++) {
+                        pw.print("  Receiver #"); pw.print(i); pw.println(":");
+                        printResolveInfo(pr, "    ", result.get(i), mBrief, mComponents);
+                    }
+                } else {
+                    PrintWriterPrinter pr = new PrintWriterPrinter(pw);
+                    for (int i = 0; i < result.size(); i++) {
+                        printResolveInfo(pr, "", result.get(i), mBrief, mComponents);
+                    }
                 }
             }
         } catch (RemoteException e) {
@@ -1000,6 +1059,9 @@
                 case "-g":
                     sessionParams.installFlags |= PackageManager.INSTALL_GRANT_RUNTIME_PERMISSIONS;
                     break;
+                case "--dont-kill":
+                    sessionParams.installFlags |= PackageManager.INSTALL_DONT_KILL_APP;
+                    break;
                 case "--originating-uri":
                     sessionParams.originatingUri = Uri.parse(getNextArg());
                     break;
@@ -1035,6 +1097,9 @@
                         sessionParams.volumeUuid = null;
                     }
                     break;
+                case "--force-sdk":
+                    sessionParams.installFlags |= PackageManager.INSTALL_FORCE_SDK;
+                    break;
                 default:
                     throw new IllegalArgumentException("Unknown option " + opt);
             }
@@ -1403,13 +1468,13 @@
         pw.println("      -s: short summary");
         pw.println("      -d: only list dangerous permissions");
         pw.println("      -u: list only the permissions users will see");
-        pw.println("  resolve-activity [--user USER_ID] INTENT");
+        pw.println("  resolve-activity [--brief] [--components] [--user USER_ID] INTENT");
         pw.println("    Prints the activity that resolves to the given Intent.");
-        pw.println("  query-activities [--user USER_ID] INTENT");
+        pw.println("  query-activities [--brief] [--components] [--user USER_ID] INTENT");
         pw.println("    Prints all activities that can handle the given Intent.");
-        pw.println("  query-services [--user USER_ID] INTENT");
+        pw.println("  query-services [--brief] [--components] [--user USER_ID] INTENT");
         pw.println("    Prints all services that can handle the given Intent.");
-        pw.println("  query-receivers [--user USER_ID] INTENT");
+        pw.println("  query-receivers [--brief] [--components] [--user USER_ID] INTENT");
         pw.println("    Prints all broadcast receivers that can handle the given Intent.");
         pw.println("  suspend [--user USER_ID] TARGET-PACKAGE");
         pw.println("    Suspends the specified package (as user).");
diff --git a/services/core/java/com/android/server/pm/PackageSettingBase.java b/services/core/java/com/android/server/pm/PackageSettingBase.java
index 9d04472..851f085 100644
--- a/services/core/java/com/android/server/pm/PackageSettingBase.java
+++ b/services/core/java/com/android/server/pm/PackageSettingBase.java
@@ -125,6 +125,8 @@
 
     /** Package name of the app that installed this package */
     String installerPackageName;
+    /** Indicates if the package that installed this app has been uninstalled */
+    boolean isOrphaned;
     /** UUID of {@link VolumeInfo} hosting this app */
     String volumeUuid;
 
@@ -182,6 +184,7 @@
         origPackage = base.origPackage;
 
         installerPackageName = base.installerPackageName;
+        isOrphaned = base.isOrphaned;
         volumeUuid = base.volumeUuid;
 
         keySetData = new PackageKeySetData(base.keySetData);
diff --git a/services/core/java/com/android/server/pm/Settings.java b/services/core/java/com/android/server/pm/Settings.java
index 7debf9b..e2e6c7b 100644
--- a/services/core/java/com/android/server/pm/Settings.java
+++ b/services/core/java/com/android/server/pm/Settings.java
@@ -718,6 +718,21 @@
                     // let's log a message about it.
                     Slog.i(PackageManagerService.TAG, "Package " + name + " codePath changed from "
                             + p.codePath + " to " + codePath + "; Retaining data and using new");
+
+                    // The owner user's installed flag is set false
+                    // when the application was installed by other user
+                    // and the installed flag is not updated
+                    // when the application is appended as system app later.
+                    if ((pkgFlags & ApplicationInfo.FLAG_SYSTEM) != 0 &&
+                            getDisabledSystemPkgLPr(name) == null) {
+                        List<UserInfo> allUserInfos = getAllUsers();
+                        if (allUserInfos != null) {
+                            for (UserInfo userInfo : allUserInfos) {
+                                p.setInstalled(true, userInfo.id);
+                            }
+                        }
+                    }
+
                     /*
                      * Since we've changed paths, we need to prefer the new
                      * native library path over the one stored in the
@@ -1102,6 +1117,7 @@
             if (installerPackageName != null
                     && installerPackageName.equals(packageName)) {
                 ps.setInstallerPackageName(null);
+                ps.isOrphaned = true;
             }
         }
         mInstallerPackages.remove(packageName);
@@ -2632,6 +2648,9 @@
         if (pkg.installerPackageName != null) {
             serializer.attribute(null, "installer", pkg.installerPackageName);
         }
+        if (pkg.isOrphaned) {
+            serializer.attribute(null, "isOrphaned", "true");
+        }
         if (pkg.volumeUuid != null) {
             serializer.attribute(null, "volumeUuid", pkg.volumeUuid);
         }
@@ -3507,6 +3526,7 @@
         String cpuAbiOverrideString = null;
         String systemStr = null;
         String installerPackageName = null;
+        String isOrphaned = null;
         String volumeUuid = null;
         String uidError = null;
         int pkgFlags = 0;
@@ -3548,6 +3568,7 @@
                 }
             }
             installerPackageName = parser.getAttributeValue(null, "installer");
+            isOrphaned = parser.getAttributeValue(null, "isOrphaned");
             volumeUuid = parser.getAttributeValue(null, "volumeUuid");
 
             systemStr = parser.getAttributeValue(null, "publicFlags");
@@ -3698,6 +3719,7 @@
         if (packageSetting != null) {
             packageSetting.uidError = "true".equals(uidError);
             packageSetting.installerPackageName = installerPackageName;
+            packageSetting.isOrphaned = "true".equals(isOrphaned);
             packageSetting.volumeUuid = volumeUuid;
             packageSetting.legacyNativeLibraryPathString = legacyNativeLibraryPathStr;
             packageSetting.primaryCpuAbiString = primaryCpuAbiString;
@@ -4100,6 +4122,14 @@
         return pkg.installerPackageName;
     }
 
+    boolean isOrphaned(String packageName) {
+        final PackageSetting pkg = mPackages.get(packageName);
+        if (pkg == null) {
+            throw new IllegalArgumentException("Unknown package: " + packageName);
+        }
+        return pkg.isOrphaned;
+    }
+
     int getApplicationEnabledSettingLPr(String packageName, int userId) {
         final PackageSetting pkg = mPackages.get(packageName);
         if (pkg == null) {
@@ -4118,7 +4148,7 @@
         return pkg.getCurrentEnabledStateLPr(classNameStr, userId);
     }
 
-    boolean setPackageStoppedStateLPw(PackageManagerService yucky, String packageName,
+    boolean setPackageStoppedStateLPw(PackageManagerService pm, String packageName,
             boolean stopped, boolean allowedByPermission, int uid, int userId) {
         int appId = UserHandle.getAppId(uid);
         final PackageSetting pkgSetting = mPackages.get(packageName);
@@ -4143,9 +4173,7 @@
             // pkgSetting.pkg.mSetStopped = stopped;
             if (pkgSetting.getNotLaunched(userId)) {
                 if (pkgSetting.installerPackageName != null) {
-                    yucky.sendPackageBroadcast(Intent.ACTION_PACKAGE_FIRST_LAUNCH,
-                            pkgSetting.name, null, 0,
-                            pkgSetting.installerPackageName, null, new int[] {userId});
+                    pm.notifyFirstLaunch(pkgSetting.name, pkgSetting.installerPackageName, userId);
                 }
                 pkgSetting.setNotLaunched(false, userId);
             }
diff --git a/services/core/java/com/android/server/pm/ShortcutPackage.java b/services/core/java/com/android/server/pm/ShortcutPackage.java
index 8e96a58..d7f8cc6 100644
--- a/services/core/java/com/android/server/pm/ShortcutPackage.java
+++ b/services/core/java/com/android/server/pm/ShortcutPackage.java
@@ -109,6 +109,27 @@
         return getPackageUserId();
     }
 
+    /**
+     * Called when a shortcut is about to be published.  At this point we know the publisher package
+     * exists (as opposed to Launcher trying to fetch shortcuts from a non-existent package), so
+     * we do some initialization for the package.
+     */
+    private void onShortcutPublish(ShortcutService s) {
+        // Make sure we have the version code for the app.  We need the version code in
+        // handlePackageUpdated().
+        if (getPackageInfo().getVersionCode() < 0) {
+            final int versionCode = s.getApplicationVersionCode(getPackageName(), getOwnerUserId());
+            if (ShortcutService.DEBUG) {
+                Slog.d(TAG, String.format("Package %s version = %d", getPackageName(),
+                        versionCode));
+            }
+            if (versionCode >= 0) {
+                getPackageInfo().setVersionCode(versionCode);
+                s.scheduleSaveUser(getOwnerUserId());
+            }
+        }
+    }
+
     @Override
     protected void onRestoreBlocked(ShortcutService s) {
         // Can't restore due to version/signature mismatch.  Remove all shortcuts.
@@ -153,6 +174,9 @@
      */
     public void addDynamicShortcut(@NonNull ShortcutService s,
             @NonNull ShortcutInfo newShortcut) {
+
+        onShortcutPublish(s);
+
         newShortcut.addFlags(ShortcutInfo.FLAG_DYNAMIC);
 
         final ShortcutInfo oldShortcut = mShortcuts.get(newShortcut.getId());
@@ -387,6 +411,40 @@
         mApiCallCount = 0;
     }
 
+    /**
+     * Called when the package is updated.  If there are shortcuts with resource icons, update
+     * their timestamps.
+     */
+    public void handlePackageUpdated(ShortcutService s, int newVersionCode) {
+        if (getPackageInfo().getVersionCode() >= newVersionCode) {
+            // Version hasn't changed; nothing to do.
+            return;
+        }
+        if (ShortcutService.DEBUG) {
+            Slog.d(TAG, String.format("Package %s updated, version %d -> %d", getPackageName(),
+                    getPackageInfo().getVersionCode(), newVersionCode));
+        }
+
+        getPackageInfo().setVersionCode(newVersionCode);
+
+        boolean changed = false;
+        for (int i = mShortcuts.size() - 1; i >= 0; i--) {
+            final ShortcutInfo si = mShortcuts.valueAt(i);
+
+            if (si.hasIconResource()) {
+                changed = true;
+                si.setTimestamp(s.injectCurrentTimeMillis());
+            }
+        }
+        if (changed) {
+            // This will send a notification to the launcher, and also save .
+            s.packageShortcutsChanged(getPackageName(), getPackageUserId());
+        } else {
+            // Still save the version code.
+            s.scheduleSaveUser(getPackageUserId());
+        }
+    }
+
     public void dump(@NonNull ShortcutService s, @NonNull PrintWriter pw, @NonNull String prefix) {
         pw.println();
 
@@ -413,17 +471,20 @@
         getPackageInfo().dump(s, pw, prefix + "  ");
         pw.println();
 
-        pw.println("      Shortcuts:");
+        pw.print(prefix);
+        pw.println("  Shortcuts:");
         long totalBitmapSize = 0;
         final ArrayMap<String, ShortcutInfo> shortcuts = mShortcuts;
         final int size = shortcuts.size();
         for (int i = 0; i < size; i++) {
             final ShortcutInfo si = shortcuts.valueAt(i);
-            pw.print("        ");
+            pw.print(prefix);
+            pw.print("    ");
             pw.println(si.toInsecureString());
             if (si.getBitmapPath() != null) {
                 final long len = new File(si.getBitmapPath()).length();
-                pw.print("          ");
+                pw.print(prefix);
+                pw.print("      ");
                 pw.print("bitmap size=");
                 pw.println(len);
 
diff --git a/services/core/java/com/android/server/pm/ShortcutPackageInfo.java b/services/core/java/com/android/server/pm/ShortcutPackageInfo.java
index 2c45890..74969f0 100644
--- a/services/core/java/com/android/server/pm/ShortcutPackageInfo.java
+++ b/services/core/java/com/android/server/pm/ShortcutPackageInfo.java
@@ -45,12 +45,14 @@
     private static final String TAG_SIGNATURE = "signature";
     private static final String ATTR_SIGNATURE_HASH = "hash";
 
+    private static final int VERSION_UNKNOWN = -1;
+
     /**
      * When true, this package information was restored from the previous device, and the app hasn't
      * been installed yet.
      */
     private boolean mIsShadow;
-    private int mVersionCode;
+    private int mVersionCode = VERSION_UNKNOWN;
     private ArrayList<byte[]> mSigHashes;
 
     private ShortcutPackageInfo(int versionCode, ArrayList<byte[]> sigHashes, boolean isShadow) {
@@ -60,7 +62,7 @@
     }
 
     public static ShortcutPackageInfo newEmpty() {
-        return new ShortcutPackageInfo(0, new ArrayList<>(0), /* isShadow */ false);
+        return new ShortcutPackageInfo(VERSION_UNKNOWN, new ArrayList<>(0), /* isShadow */ false);
     }
 
     public boolean isShadow() {
@@ -75,6 +77,10 @@
         return mVersionCode;
     }
 
+    public void setVersionCode(int versionCode) {
+        mVersionCode = versionCode;
+    }
+
     public boolean hasSignatures() {
         return mSigHashes.size() > 0;
     }
diff --git a/services/core/java/com/android/server/pm/ShortcutService.java b/services/core/java/com/android/server/pm/ShortcutService.java
index 0ac5c1f..c0874ef 100644
--- a/services/core/java/com/android/server/pm/ShortcutService.java
+++ b/services/core/java/com/android/server/pm/ShortcutService.java
@@ -356,7 +356,7 @@
             // Preload
             getUserShortcutsLocked(userId);
 
-            cleanupGonePackages(userId);
+            checkPackageChanges(userId);
         }
     }
 
@@ -1158,7 +1158,11 @@
      * - Sends a notification to LauncherApps
      * - Write to file
      */
-    private void userPackageChanged(@NonNull String packageName, @UserIdInt int userId) {
+    void packageShortcutsChanged(@NonNull String packageName, @UserIdInt int userId) {
+        if (DEBUG) {
+            Slog.d(TAG, String.format(
+                    "Shortcut changes: package=%s, user=%d", packageName, userId));
+        }
         notifyListeners(packageName, userId);
         scheduleSaveUser(userId);
     }
@@ -1284,7 +1288,7 @@
                 ps.addDynamicShortcut(this, newShortcut);
             }
         }
-        userPackageChanged(packageName, userId);
+        packageShortcutsChanged(packageName, userId);
         return true;
     }
 
@@ -1323,7 +1327,7 @@
                 }
             }
         }
-        userPackageChanged(packageName, userId);
+        packageShortcutsChanged(packageName, userId);
 
         return true;
     }
@@ -1353,7 +1357,7 @@
                 ps.addDynamicShortcut(this, newShortcut);
             }
         }
-        userPackageChanged(packageName, userId);
+        packageShortcutsChanged(packageName, userId);
 
         return true;
     }
@@ -1370,7 +1374,7 @@
                         Preconditions.checkStringNotEmpty((String) shortcutIds.get(i)));
             }
         }
-        userPackageChanged(packageName, userId);
+        packageShortcutsChanged(packageName, userId);
     }
 
     @Override
@@ -1380,7 +1384,7 @@
         synchronized (mLock) {
             getPackageShortcutsLocked(packageName, userId).deleteAllDynamicShortcuts(this);
         }
-        userPackageChanged(packageName, userId);
+        packageShortcutsChanged(packageName, userId);
     }
 
     @Override
@@ -1557,48 +1561,46 @@
 
     // === House keeping ===
 
-    @VisibleForTesting
-    void cleanUpPackageLocked(String packageName, int owningUserId, int packageUserId) {
-        cleanUpPackageLocked(packageName, owningUserId, packageUserId,
-                /* forceForCommandLine= */ false);
+    private void cleanUpPackageForAllLoadedUsers(String packageName, @UserIdInt int packageUserId) {
+        synchronized (mLock) {
+            forEachLoadedUserLocked(user ->
+                    cleanUpPackageLocked(packageName, user.getUserId(), packageUserId));
+        }
     }
 
     /**
      * Remove all the information associated with a package.  This will really remove all the
      * information, including the restore information (i.e. it'll remove packages even if they're
      * shadow).
+     *
+     * This is called when an app is uninstalled, or an app gets "clear data"ed.
      */
-    private void cleanUpPackageLocked(String packageName, int owningUserId, int packageUserId,
-            boolean forceForCommandLine) {
-        if (!forceForCommandLine && isPackageInstalled(packageName, packageUserId)) {
-            wtf("Package " + packageName + " is still installed for user " + packageUserId);
-            return;
-        }
-
+    @VisibleForTesting
+    void cleanUpPackageLocked(String packageName, int owningUserId, int packageUserId) {
         final boolean wasUserLoaded = isUserLoadedLocked(owningUserId);
 
-        final ShortcutUser mUser = getUserShortcutsLocked(owningUserId);
+        final ShortcutUser user = getUserShortcutsLocked(owningUserId);
         boolean doNotify = false;
 
         // First, remove the package from the package list (if the package is a publisher).
         if (packageUserId == owningUserId) {
-            if (mUser.removePackage(this, packageName) != null) {
+            if (user.removePackage(this, packageName) != null) {
                 doNotify = true;
             }
         }
 
         // Also remove from the launcher list (if the package is a launcher).
-        mUser.removeLauncher(packageUserId, packageName);
+        user.removeLauncher(packageUserId, packageName);
 
         // Then remove pinned shortcuts from all launchers.
-        final ArrayMap<PackageWithUser, ShortcutLauncher> launchers = mUser.getAllLaunchers();
+        final ArrayMap<PackageWithUser, ShortcutLauncher> launchers = user.getAllLaunchers();
         for (int i = launchers.size() - 1; i >= 0; i--) {
             launchers.valueAt(i).cleanUpPackage(packageName, packageUserId);
         }
         // Now there may be orphan shortcuts because we removed pinned shortucts at the previous
         // step.  Remove them too.
-        for (int i = mUser.getAllPackages().size() - 1; i >= 0; i--) {
-            mUser.getAllPackages().valueAt(i).refreshPinnedFlags(this);
+        for (int i = user.getAllPackages().size() - 1; i >= 0; i--) {
+            user.getAllPackages().valueAt(i).refreshPinnedFlags(this);
         }
 
         scheduleSaveUser(owningUserId);
@@ -1729,7 +1731,7 @@
                 launcher.pinShortcuts(
                         ShortcutService.this, userId, packageName, shortcutIds);
             }
-            userPackageChanged(packageName, userId);
+            packageShortcutsChanged(packageName, userId);
         }
 
         @Override
@@ -1838,16 +1840,23 @@
         public void onPackageRemoved(String packageName, int uid) {
             handlePackageRemoved(packageName, getChangingUserId());
         }
+
+        @Override
+        public void onPackageDataCleared(String packageName, int uid) {
+            handlePackageDataCleared(packageName, getChangingUserId());
+        }
     };
 
     /**
-     * Called when a user is unlocked.  Check all known packages still exist, and otherwise
-     * perform cleanup.
+     * Called when a user is unlocked.
+     * - Check all known packages still exist, and otherwise perform cleanup.
+     * - If a package still exists, check the version code.  If it's been updated, may need to
+     *   update timestamps of its shortcuts.
      */
     @VisibleForTesting
-    void cleanupGonePackages(@UserIdInt int ownerUserId) {
+    void checkPackageChanges(@UserIdInt int ownerUserId) {
         if (DEBUG) {
-            Slog.d(TAG, "cleanupGonePackages() ownerUserId=" + ownerUserId);
+            Slog.d(TAG, "checkPackageChanges() ownerUserId=" + ownerUserId);
         }
         final ArrayList<PackageWithUser> gonePackages = new ArrayList<>();
 
@@ -1858,10 +1867,15 @@
                 if (spi.getPackageInfo().isShadow()) {
                     return; // Don't delete shadow information.
                 }
-                if (isPackageInstalled(spi.getPackageName(), spi.getPackageUserId())) {
-                    return; // Package not gone.
+                final int versionCode = getApplicationVersionCode(
+                        spi.getPackageName(), spi.getPackageUserId());
+                if (versionCode >= 0) {
+                    // Package still installed, see if it's updated.
+                    getUserShortcutsLocked(ownerUserId).handlePackageUpdated(
+                            this, spi.getPackageName(), versionCode);
+                } else {
+                    gonePackages.add(PackageWithUser.of(spi));
                 }
-                gonePackages.add(PackageWithUser.of(spi));
             });
             if (gonePackages.size() > 0) {
                 for (int i = gonePackages.size() - 1; i >= 0; i--) {
@@ -1890,6 +1904,12 @@
         synchronized (mLock) {
             forEachLoadedUserLocked(user ->
                     user.attemptToRestoreIfNeededAndSave(this, packageName, userId));
+
+            final int versionCode = getApplicationVersionCode(packageName, userId);
+            if (versionCode < 0) {
+                return; // shouldn't happen
+            }
+            getUserShortcutsLocked(userId).handlePackageUpdated(this, packageName, versionCode);
         }
     }
 
@@ -1898,16 +1918,15 @@
             Slog.d(TAG, String.format("handlePackageRemoved: %s user=%d", packageName,
                     packageUserId));
         }
-        handlePackageRemovedInner(packageName, packageUserId, /* forceForCommandLine =*/ false);
+        cleanUpPackageForAllLoadedUsers(packageName, packageUserId);
     }
 
-    private void handlePackageRemovedInner(String packageName, @UserIdInt int packageUserId,
-            boolean forceForCommandLine) {
-        synchronized (mLock) {
-            forEachLoadedUserLocked(user ->
-                cleanUpPackageLocked(packageName, user.getUserId(), packageUserId,
-                        forceForCommandLine));
+    private void handlePackageDataCleared(String packageName, int packageUserId) {
+        if (DEBUG) {
+            Slog.d(TAG, String.format("handlePackageDataCleared: %s user=%d", packageName,
+                    packageUserId));
         }
+        cleanUpPackageForAllLoadedUsers(packageName, packageUserId);
     }
 
     // === PackageManager interaction ===
@@ -1978,6 +1997,17 @@
         return isApplicationFlagSet(packageName, userId, ApplicationInfo.FLAG_INSTALLED);
     }
 
+    /**
+     * @return the version code of the package, or -1 if the app is not installed.
+     */
+    int getApplicationVersionCode(String packageName, int userId) {
+        final ApplicationInfo ai = injectApplicationInfo(packageName, userId);
+        if ((ai == null) || ((ai.flags & ApplicationInfo.FLAG_INSTALLED) == 0)) {
+            return -1;
+        }
+        return ai.versionCode;
+    }
+
     // === Backup & restore ===
 
     boolean shouldBackupApp(String packageName, int userId) {
@@ -2100,7 +2130,7 @@
             pw.println(mResetInterval);
             pw.print("    maxUpdatesPerInterval: ");
             pw.println(mMaxUpdatesPerInterval);
-            pw.print("    maxDynamicShortcuts:");
+            pw.print("    maxDynamicShortcuts: ");
             pw.println(mMaxDynamicShortcuts);
             pw.println();
 
@@ -2362,8 +2392,7 @@
 
             Slog.i(TAG, "cmd: handleClearShortcuts: " + mUserId + ", " + packageName);
 
-            ShortcutService.this.handlePackageRemovedInner(packageName, mUserId,
-                    /* forceForCommandLine= */ true);
+            ShortcutService.this.cleanUpPackageForAllLoadedUsers(packageName, mUserId);
         }
     }
 
diff --git a/services/core/java/com/android/server/pm/ShortcutUser.java b/services/core/java/com/android/server/pm/ShortcutUser.java
index 0b8c3a2..3d2e2ec 100644
--- a/services/core/java/com/android/server/pm/ShortcutUser.java
+++ b/services/core/java/com/android/server/pm/ShortcutUser.java
@@ -176,6 +176,17 @@
         });
     }
 
+    /**
+     * Called when a package is updated.
+     */
+    public void handlePackageUpdated(ShortcutService s, @NonNull String packageName,
+            int newVersionCode) {
+        if (!mPackages.containsKey(packageName)) {
+            return;
+        }
+        getPackageShortcuts(s, packageName).handlePackageUpdated(s, newVersionCode);
+    }
+
     public void attemptToRestoreIfNeededAndSave(ShortcutService s, @NonNull String packageName,
             @UserIdInt int packageUserId) {
         forPackageItem(packageName, packageUserId, spi -> {
diff --git a/services/core/java/com/android/server/pm/UserManagerService.java b/services/core/java/com/android/server/pm/UserManagerService.java
index a085370..a2d859b 100644
--- a/services/core/java/com/android/server/pm/UserManagerService.java
+++ b/services/core/java/com/android/server/pm/UserManagerService.java
@@ -692,7 +692,7 @@
     @Override
     public boolean trySetQuietModeDisabled(int userHandle, IntentSender target) {
         final int credentialOwnerUserId = getCredentialOwnerProfile(userHandle);
-        if (mContext.getSystemService(StorageManager.class).isUserKeyUnlocked(userHandle)
+        if (StorageManager.isUserKeyUnlocked(userHandle)
                 || !mLockPatternUtils.isSecure(credentialOwnerUserId)) {
             // if the user is already unlocked, no need to show a profile challenge
             setQuietModeEnabled(userHandle, false);
diff --git a/services/core/java/com/android/server/pm/UserRestrictionsUtils.java b/services/core/java/com/android/server/pm/UserRestrictionsUtils.java
index 364e9fa6..38a3f42 100644
--- a/services/core/java/com/android/server/pm/UserRestrictionsUtils.java
+++ b/services/core/java/com/android/server/pm/UserRestrictionsUtils.java
@@ -370,19 +370,6 @@
                                 android.provider.Settings.Secure.LOCATION_MODE_OFF,
                                 userId);
                     }
-                    // Send out notifications as some clients may want to reread the
-                    // value which actually changed due to a restriction having been
-                    // applied.
-                    final String property =
-                            android.provider.Settings.Secure.SYS_PROP_SETTING_VERSION;
-                    long version = SystemProperties.getLong(property, 0) + 1;
-                    SystemProperties.set(property, Long.toString(version));
-
-                    final String name = android.provider.Settings.Secure.LOCATION_PROVIDERS_ALLOWED;
-                    final Uri url = Uri.withAppendedPath(
-                            android.provider.Settings.Secure.CONTENT_URI, name);
-                    context.getContentResolver().notifyChange(url, null, true, userId);
-
                     break;
                 case UserManager.DISALLOW_DEBUGGING_FEATURES:
                     if (newValue) {
diff --git a/services/core/java/com/android/server/policy/PhoneWindowManager.java b/services/core/java/com/android/server/policy/PhoneWindowManager.java
index 4e4b2f3..2636d09 100644
--- a/services/core/java/com/android/server/policy/PhoneWindowManager.java
+++ b/services/core/java/com/android/server/policy/PhoneWindowManager.java
@@ -404,8 +404,9 @@
     volatile boolean mEndCallKeyHandled;
     volatile boolean mCameraGestureTriggeredDuringGoingToSleep;
     volatile boolean mGoingToSleep;
+    volatile boolean mRecentsVisible;
+    volatile boolean mTvPictureInPictureVisible;
 
-    boolean mRecentsVisible;
     int mRecentAppsHeldModifiers;
     boolean mLanguageSwitchKeyPressed;
 
@@ -712,7 +713,7 @@
     private static final int MSG_POWER_LONG_PRESS = 14;
     private static final int MSG_UPDATE_DREAMING_SLEEP_TOKEN = 15;
     private static final int MSG_REQUEST_TRANSIENT_BARS = 16;
-    private static final int MSG_REQUEST_TV_PICTURE_IN_PICTURE = 17;
+    private static final int MSG_SHOW_TV_PICTURE_IN_PICTURE_MENU = 17;
     private static final int MSG_BACK_LONG_PRESS = 18;
 
     private static final int MSG_REQUEST_TRANSIENT_BARS_ARG_STATUS = 0;
@@ -775,8 +776,8 @@
                         requestTransientBars(targetBar);
                     }
                     break;
-                case MSG_REQUEST_TV_PICTURE_IN_PICTURE:
-                    requestTvPictureInPictureInternal();
+                case MSG_SHOW_TV_PICTURE_IN_PICTURE_MENU:
+                    showTvPictureInPictureMenuInternal();
                     break;
                 case MSG_BACK_LONG_PRESS:
                     backLongPress();
@@ -1457,22 +1458,18 @@
         }
     }
 
-    private void requestTvPictureInPicture(KeyEvent event) {
-        if (DEBUG_INPUT) Log.d(TAG, "requestTvPictureInPicture event=" + event);
-        mHandler.removeMessages(MSG_REQUEST_TV_PICTURE_IN_PICTURE);
-        Message msg = mHandler.obtainMessage(MSG_REQUEST_TV_PICTURE_IN_PICTURE);
+    private void showTvPictureInPictureMenu(KeyEvent event) {
+        if (DEBUG_INPUT) Log.d(TAG, "showTvPictureInPictureMenu event=" + event);
+        mHandler.removeMessages(MSG_SHOW_TV_PICTURE_IN_PICTURE_MENU);
+        Message msg = mHandler.obtainMessage(MSG_SHOW_TV_PICTURE_IN_PICTURE_MENU);
         msg.setAsynchronous(true);
         msg.sendToTarget();
     }
 
-    private void requestTvPictureInPictureInternal() {
-        try {
-            StatusBarManagerInternal statusbar = getStatusBarManagerInternal();
-            if (statusbar != null) {
-                statusbar.requestTvPictureInPicture();
-            }
-        } catch (IllegalArgumentException e) {
-            Slog.e(TAG, "Cannot handle picture-in-picture key", e);
+    private void showTvPictureInPictureMenuInternal() {
+        StatusBarManagerInternal statusbar = getStatusBarManagerInternal();
+        if (statusbar != null) {
+            statusbar.showTvPictureInPictureMenu();
         }
     }
 
@@ -3787,6 +3784,7 @@
         mStatusBarController.adjustSystemUiVisibilityLw(mLastSystemUiFlags, visibility);
         mNavigationBarController.adjustSystemUiVisibilityLw(mLastSystemUiFlags, visibility);
         mRecentsVisible = (visibility & View.RECENT_APPS_VISIBLE) > 0;
+        mTvPictureInPictureVisible = (visibility & View.TV_PICTURE_IN_PICTURE_VISIBLE) > 0;
 
         // Reset any bits in mForceClearingStatusBarVisibility that
         // are now clear.
@@ -4319,11 +4317,25 @@
             pf.top = df.top = of.top = mUnrestrictedScreenTop;
             pf.right = df.right = of.right = mUnrestrictedScreenLeft + mUnrestrictedScreenWidth;
             pf.bottom = df.bottom = of.bottom = mUnrestrictedScreenTop + mUnrestrictedScreenHeight;
-            cf.bottom = vf.bottom = mStableBottom;
-            // Note: In Phone landscape mode, the button bar should also be excluded.
-            cf.right = vf.right = mStableRight;
-            cf.left = vf.left = mStableLeft;
-            cf.top = vf.top = mStableTop;
+            if (adjust != SOFT_INPUT_ADJUST_RESIZE) {
+                cf.left = mDockLeft;
+                cf.top = mDockTop;
+                cf.right = mDockRight;
+                cf.bottom = mDockBottom;
+            } else {
+                cf.left = mContentLeft;
+                cf.top = mContentTop;
+                cf.right = mContentRight;
+                cf.bottom = mContentBottom;
+            }
+            if (adjust != SOFT_INPUT_ADJUST_NOTHING) {
+                vf.left = mCurLeft;
+                vf.top = mCurTop;
+                vf.right = mCurRight;
+                vf.bottom = mCurBottom;
+            } else {
+                vf.set(cf);
+            }
         } else if (win == mStatusBar) {
             pf.left = df.left = of.left = mUnrestrictedScreenLeft;
             pf.top = df.top = of.top = mUnrestrictedScreenTop;
@@ -4912,7 +4924,7 @@
                     }
                 }
 
-                if (mWinShowWhenLocked != null &&
+                if (!mKeyguardHidden && mWinShowWhenLocked != null &&
                         mWinShowWhenLocked.getAppToken() != win.getAppToken() &&
                         (attrs.flags & FLAG_SHOW_WHEN_LOCKED) == 0) {
                     win.hideLw(false);
@@ -5147,7 +5159,6 @@
             mKeyguardOccluded = false;
             mKeyguardDelegate.setOccluded(false);
             mStatusBar.getAttrs().privateFlags |= PRIVATE_FLAG_KEYGUARD;
-            mStatusBar.getAttrs().flags |= FLAG_SHOW_WALLPAPER;
             return true;
         } else if (!wasOccluded && isOccluded && showing) {
             mKeyguardOccluded = true;
@@ -5674,10 +5685,16 @@
             }
             case KeyEvent.KEYCODE_WINDOW: {
                 if (mShortPressWindowBehavior == SHORT_PRESS_WINDOW_PICTURE_IN_PICTURE) {
-                    if (!down) {
-                        requestTvPictureInPicture(event);
+                    if (mTvPictureInPictureVisible) {
+                        // Consumes the key only if picture-in-picture is visible
+                        // to show picture-in-picture control menu.
+                        // This gives a chance to the foreground activity
+                        // to customize PIP key behavior.
+                        if (!down) {
+                            showTvPictureInPictureMenu(event);
+                        }
+                        result &= ~ACTION_PASS_TO_USER;
                     }
-                    result &= ~ACTION_PASS_TO_USER;
                 }
                 break;
             }
diff --git a/services/core/java/com/android/server/search/SearchManagerService.java b/services/core/java/com/android/server/search/SearchManagerService.java
index e3e1097..4d91814 100644
--- a/services/core/java/com/android/server/search/SearchManagerService.java
+++ b/services/core/java/com/android/server/search/SearchManagerService.java
@@ -112,7 +112,7 @@
             if (um.getUserInfo(userId) == null) {
                 throw new IllegalStateException("User " + userId + " doesn't exist");
             }
-            if (!um.isUserUnlocked(userId)) {
+            if (!um.isUserUnlockingOrUnlocked(userId)) {
                 throw new IllegalStateException("User " + userId + " isn't unlocked");
             }
         } finally {
diff --git a/services/core/java/com/android/server/statusbar/StatusBarManagerInternal.java b/services/core/java/com/android/server/statusbar/StatusBarManagerInternal.java
index 52b2439..fb0dd2a 100644
--- a/services/core/java/com/android/server/statusbar/StatusBarManagerInternal.java
+++ b/services/core/java/com/android/server/statusbar/StatusBarManagerInternal.java
@@ -41,14 +41,9 @@
     void toggleKeyboardShortcutsMenu(int deviceId);
 
     /**
-     * Request picture-in-picture.
-     *
-     * <p>
-     * This is called when an user presses picture-in-picture key or equivalent.
-     * TV device may start picture-in-picture from foreground activity if there's none.
-     * Picture-in-picture overlay menu will be shown instead otherwise.
+     * Show TV picture-in-picture menu.
      */
-    void requestTvPictureInPicture();
+    void showTvPictureInPictureMenu();
 
     void setWindowState(int window, int state);
 
diff --git a/services/core/java/com/android/server/statusbar/StatusBarManagerService.java b/services/core/java/com/android/server/statusbar/StatusBarManagerService.java
index c630d4a..baa7f1e 100644
--- a/services/core/java/com/android/server/statusbar/StatusBarManagerService.java
+++ b/services/core/java/com/android/server/statusbar/StatusBarManagerService.java
@@ -295,10 +295,10 @@
         }
 
         @Override
-        public void requestTvPictureInPicture() {
+        public void showTvPictureInPictureMenu() {
             if (mBar != null) {
                 try {
-                    mBar.requestTvPictureInPicture();
+                    mBar.showTvPictureInPictureMenu();
                 } catch (RemoteException ex) {}
             }
         }
diff --git a/services/core/java/com/android/server/wallpaper/WallpaperManagerService.java b/services/core/java/com/android/server/wallpaper/WallpaperManagerService.java
index d6ace91..4c7f9eb 100644
--- a/services/core/java/com/android/server/wallpaper/WallpaperManagerService.java
+++ b/services/core/java/com/android/server/wallpaper/WallpaperManagerService.java
@@ -73,6 +73,8 @@
 import android.service.wallpaper.IWallpaperEngine;
 import android.service.wallpaper.IWallpaperService;
 import android.service.wallpaper.WallpaperService;
+import android.system.ErrnoException;
+import android.system.Os;
 import android.util.EventLog;
 import android.util.Slog;
 import android.util.SparseArray;
@@ -224,6 +226,17 @@
                         + " whichPending=0x" + Integer.toHexString(wallpaper.whichPending)
                         + " written=" + written);
             }
+
+            if (moved && lockWallpaperChanged) {
+                // We just migrated sys -> lock to preserve imagery for an impending
+                // new system-only wallpaper.  Tell keyguard about it but that's it.
+                if (DEBUG) {
+                    Slog.i(TAG, "Sys -> lock MOVED_TO");
+                }
+                notifyLockWallpaperChanged();
+                return;
+            }
+
             synchronized (mLock) {
                 if (sysWallpaperChanged || lockWallpaperChanged) {
                     notifyCallbacksLocked(wallpaper);
@@ -276,14 +289,7 @@
                                     mLockWallpaperMap.remove(wallpaper.userId);
                                 }
                                 // and in any case, tell keyguard about it
-                                final IWallpaperManagerCallback cb = mKeyguardListener;
-                                if (cb != null) {
-                                    try {
-                                        cb.onWallpaperChanged();
-                                    } catch (RemoteException e) {
-                                        // Oh well it went away; no big deal
-                                    }
-                                }
+                                notifyLockWallpaperChanged();
                             }
                             saveSettingsLocked(wallpaper.userId);
                         }
@@ -293,6 +299,17 @@
         }
     }
 
+    void notifyLockWallpaperChanged() {
+        final IWallpaperManagerCallback cb = mKeyguardListener;
+        if (cb != null) {
+            try {
+                cb.onWallpaperChanged();
+            } catch (RemoteException e) {
+                // Oh well it went away; no big deal
+            }
+        }
+    }
+
     /**
      * Once a new wallpaper has been written via setWallpaper(...), it needs to be cropped
      * for display.
@@ -862,7 +879,6 @@
 
         IntentFilter userFilter = new IntentFilter();
         userFilter.addAction(Intent.ACTION_USER_REMOVED);
-        userFilter.addAction(Intent.ACTION_USER_STOPPING);
         mContext.registerReceiver(new BroadcastReceiver() {
             @Override
             public void onReceive(Context context, Intent intent) {
@@ -871,12 +887,6 @@
                     onRemoveUser(intent.getIntExtra(Intent.EXTRA_USER_HANDLE,
                             UserHandle.USER_NULL));
                 }
-                // TODO: Race condition causing problems when cleaning up on stopping a user.
-                // Comment this out for now.
-                // else if (Intent.ACTION_USER_STOPPING.equals(action)) {
-                //     onStoppingUser(intent.getIntExtra(Intent.EXTRA_USER_HANDLE,
-                //             UserHandle.USER_NULL));
-                // }
             }
         }, userFilter);
 
@@ -1341,6 +1351,17 @@
             if (DEBUG) Slog.v(TAG, "setWallpaper which=0x" + Integer.toHexString(which));
             WallpaperData wallpaper;
 
+            /* If we're setting system but not lock, and lock is currently sharing the system
+             * wallpaper, we need to migrate that image over to being lock-only before
+             * the caller here writes new bitmap data.
+             */
+            if (which == FLAG_SYSTEM && mLockWallpaperMap.get(userId) == null) {
+                if (DEBUG) {
+                    Slog.i(TAG, "Migrating system->lock to preserve");
+                }
+                migrateSystemToLockWallpaperLocked(userId);
+            }
+
             wallpaper = getWallpaperSafeLocked(userId, which);
             final long ident = Binder.clearCallingIdentity();
             try {
@@ -1361,6 +1382,38 @@
         }
     }
 
+    private void migrateSystemToLockWallpaperLocked(int userId) {
+        WallpaperData sysWP = mWallpaperMap.get(userId);
+        if (sysWP == null) {
+            if (DEBUG) {
+                Slog.i(TAG, "No system wallpaper?  Not tracking for lock-only");
+            }
+            return;
+        }
+
+        // We know a-priori that there is no lock-only wallpaper currently
+        WallpaperData lockWP = new WallpaperData(userId,
+                WALLPAPER_LOCK_ORIG, WALLPAPER_LOCK_CROP);
+        lockWP.wallpaperId = sysWP.wallpaperId;
+        lockWP.cropHint.set(sysWP.cropHint);
+        lockWP.width = sysWP.width;
+        lockWP.height = sysWP.height;
+        lockWP.allowBackup = false;
+
+        // Migrate the bitmap files outright; no need to copy
+        try {
+            Os.rename(sysWP.wallpaperFile.getAbsolutePath(), lockWP.wallpaperFile.getAbsolutePath());
+            Os.rename(sysWP.cropFile.getAbsolutePath(), lockWP.cropFile.getAbsolutePath());
+        } catch (ErrnoException e) {
+            Slog.e(TAG, "Can't migrate system wallpaper: " + e.getMessage());
+            lockWP.wallpaperFile.delete();
+            lockWP.cropFile.delete();
+            return;
+        }
+
+        mLockWallpaperMap.put(userId, lockWP);
+    }
+
     ParcelFileDescriptor updateWallpaperBitmapLocked(String name, WallpaperData wallpaper,
             Bundle extras) {
         if (name == null) name = "";
diff --git a/services/core/java/com/android/server/webkit/WebViewUpdateServiceImpl.java b/services/core/java/com/android/server/webkit/WebViewUpdateServiceImpl.java
index d90d922..91de797 100644
--- a/services/core/java/com/android/server/webkit/WebViewUpdateServiceImpl.java
+++ b/services/core/java/com/android/server/webkit/WebViewUpdateServiceImpl.java
@@ -536,16 +536,37 @@
         }
 
         /**
+         * Both versionCodes should be from a WebView provider package implemented by Chromium.
+         * VersionCodes from other kinds of packages won't make any sense in this method.
+         *
+         * An introduction to Chromium versionCode scheme:
+         * "BBBBPPPAX"
+         * BBBB: 4 digit branch number. It monotonically increases over time.
+         * PPP: patch number in the branch. It is padded with zeroes to the left. These three digits may
+         * change their meaning in the future.
+         * A: architecture digit.
+         * X: A digit to differentiate APKs for other reasons.
+         *
+         * This method takes the "BBBB" of versionCodes and compare them.
+         *
+         * @return true if versionCode1 is higher than or equal to versionCode2.
+         */
+        private static boolean versionCodeGE(int versionCode1, int versionCode2) {
+            int v1 = versionCode1 / 100000;
+            int v2 = versionCode2 / 100000;
+
+            return v1 >= v2;
+        }
+
+        /**
          * Returns whether this provider is valid for use as a WebView provider.
          */
         public boolean isValidProvider(WebViewProviderInfo configInfo,
                 PackageInfo packageInfo) {
-            if ((packageInfo.applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) == 0
-                    && packageInfo.versionCode < getMinimumVersionCode()
+            if (!versionCodeGE(packageInfo.versionCode, getMinimumVersionCode())
                     && !mSystemInterface.systemIsDebuggable()) {
-                // Non-system package webview providers may be downgraded arbitrarily low, prevent
-                // that by enforcing minimum version code. This check is only enforced for user
-                // builds.
+                // Webview providers may be downgraded arbitrarily low, prevent that by enforcing
+                // minimum version code. This check is only enforced for user builds.
                 return false;
             }
             if (providerHasValidSignature(configInfo, packageInfo, mSystemInterface) &&
diff --git a/services/core/java/com/android/server/wm/AccessibilityController.java b/services/core/java/com/android/server/wm/AccessibilityController.java
index 3ef077b..101f56f 100644
--- a/services/core/java/com/android/server/wm/AccessibilityController.java
+++ b/services/core/java/com/android/server/wm/AccessibilityController.java
@@ -124,9 +124,9 @@
         }
     }
 
-    public void getMagnificationRegionsLocked(Region outMagnified, Region outAvailable) {
+    public void getMagnificationRegionLocked(Region outMagnificationRegion) {
         if (mDisplayMagnifier != null) {
-            mDisplayMagnifier.getMagnificationRegionsLocked(outMagnified, outAvailable);
+            mDisplayMagnifier.getMagnificationRegionLocked(outMagnificationRegion);
         }
     }
 
@@ -400,8 +400,8 @@
             return spec;
         }
 
-        public void getMagnificationRegionsLocked(Region outMagnified, Region outAvailable) {
-            mMagnifedViewport.getBoundsLocked(outMagnified, outAvailable);
+        public void getMagnificationRegionLocked(Region outMagnificationRegion) {
+            mMagnifedViewport.getMagnificationRegionLocked(outMagnificationRegion);
         }
 
         public void destroyLocked() {
@@ -424,10 +424,8 @@
 
             private final Matrix mTempMatrix = new Matrix();
 
-            private final Region mMagnifiedBounds = new Region();
-            private final Region mAvailableBounds = new Region();
-            private final Region mOldMagnifiedBounds = new Region();
-            private final Region mOldAvailableBounds = new Region();
+            private final Region mMagnificationRegion = new Region();
+            private final Region mOldMagnificationRegion = new Region();
 
             private final Path mCircularPath;
 
@@ -463,10 +461,8 @@
                 recomputeBoundsLocked();
             }
 
-            public void getBoundsLocked(@NonNull Region outMagnified,
-                    @NonNull Region outAvailable) {
-                outMagnified.set(mMagnifiedBounds);
-                outAvailable.set(mAvailableBounds);
+            public void getMagnificationRegionLocked(@NonNull Region outMagnificationRegion) {
+                outMagnificationRegion.set(mMagnificationRegion);
             }
 
             public void updateMagnificationSpecLocked(MagnificationSpec spec) {
@@ -488,11 +484,12 @@
                 final int screenWidth = mTempPoint.x;
                 final int screenHeight = mTempPoint.y;
 
-                mMagnifiedBounds.set(0, 0, 0, 0);
-                mAvailableBounds.set(0, 0, screenWidth, screenHeight);
+                mMagnificationRegion.set(0, 0, 0, 0);
+                final Region availableBounds = mTempRegion1;
+                availableBounds.set(0, 0, screenWidth, screenHeight);
 
                 if (mCircularPath != null) {
-                    mAvailableBounds.setPath(mCircularPath, mAvailableBounds);
+                    availableBounds.setPath(mCircularPath, availableBounds);
                 }
 
                 Region nonMagnifiedBounds = mTempRegion4;
@@ -526,21 +523,21 @@
                             (int) windowFrame.right, (int) windowFrame.bottom);
                     // Only update new regions
                     Region portionOfWindowAlreadyAccountedFor = mTempRegion3;
-                    portionOfWindowAlreadyAccountedFor.set(mMagnifiedBounds);
+                    portionOfWindowAlreadyAccountedFor.set(mMagnificationRegion);
                     portionOfWindowAlreadyAccountedFor.op(nonMagnifiedBounds, Region.Op.UNION);
                     windowBounds.op(portionOfWindowAlreadyAccountedFor, Region.Op.DIFFERENCE);
 
                     if (mWindowManagerService.mPolicy.canMagnifyWindow(windowState.mAttrs.type)) {
-                        mMagnifiedBounds.op(windowBounds, Region.Op.UNION);
-                        mMagnifiedBounds.op(mAvailableBounds, Region.Op.INTERSECT);
+                        mMagnificationRegion.op(windowBounds, Region.Op.UNION);
+                        mMagnificationRegion.op(availableBounds, Region.Op.INTERSECT);
                     } else {
                         nonMagnifiedBounds.op(windowBounds, Region.Op.UNION);
-                        mAvailableBounds.op(windowBounds, Region.Op.DIFFERENCE);
+                        availableBounds.op(windowBounds, Region.Op.DIFFERENCE);
                     }
 
                     // Update accounted bounds
                     Region accountedBounds = mTempRegion2;
-                    accountedBounds.set(mMagnifiedBounds);
+                    accountedBounds.set(mMagnificationRegion);
                     accountedBounds.op(nonMagnifiedBounds, Region.Op.UNION);
                     accountedBounds.op(0, 0, screenWidth, screenHeight, Region.Op.INTERSECT);
 
@@ -556,43 +553,36 @@
 
                 visibleWindows.clear();
 
-                mMagnifiedBounds.op(mDrawBorderInset, mDrawBorderInset,
+                mMagnificationRegion.op(mDrawBorderInset, mDrawBorderInset,
                         screenWidth - mDrawBorderInset, screenHeight - mDrawBorderInset,
                         Region.Op.INTERSECT);
 
-                final boolean magnifiedChanged = !mOldMagnifiedBounds.equals(mMagnifiedBounds);
-                final boolean availableChanged = !mOldAvailableBounds.equals(mAvailableBounds);
-                if (magnifiedChanged || availableChanged) {
-                    if (magnifiedChanged) {
-                        mWindow.setBounds(mMagnifiedBounds);
-                        Rect dirtyRect = mTempRect1;
-                        if (mFullRedrawNeeded) {
-                            mFullRedrawNeeded = false;
-                            dirtyRect.set(mDrawBorderInset, mDrawBorderInset,
-                                    screenWidth - mDrawBorderInset,
-                                    screenHeight - mDrawBorderInset);
-                            mWindow.invalidate(dirtyRect);
-                        } else {
-                            Region dirtyRegion = mTempRegion3;
-                            dirtyRegion.set(mMagnifiedBounds);
-                            dirtyRegion.op(mOldMagnifiedBounds, Region.Op.UNION);
-                            dirtyRegion.op(nonMagnifiedBounds, Region.Op.INTERSECT);
-                            dirtyRegion.getBounds(dirtyRect);
-                            mWindow.invalidate(dirtyRect);
-                        }
-
-                        mOldMagnifiedBounds.set(mMagnifiedBounds);
+                final boolean magnifiedChanged =
+                        !mOldMagnificationRegion.equals(mMagnificationRegion);
+                if (magnifiedChanged) {
+                    mWindow.setBounds(mMagnificationRegion);
+                    final Rect dirtyRect = mTempRect1;
+                    if (mFullRedrawNeeded) {
+                        mFullRedrawNeeded = false;
+                        dirtyRect.set(mDrawBorderInset, mDrawBorderInset,
+                                screenWidth - mDrawBorderInset,
+                                screenHeight - mDrawBorderInset);
+                        mWindow.invalidate(dirtyRect);
+                    } else {
+                        final Region dirtyRegion = mTempRegion3;
+                        dirtyRegion.set(mMagnificationRegion);
+                        dirtyRegion.op(mOldMagnificationRegion, Region.Op.UNION);
+                        dirtyRegion.op(nonMagnifiedBounds, Region.Op.INTERSECT);
+                        dirtyRegion.getBounds(dirtyRect);
+                        mWindow.invalidate(dirtyRect);
                     }
 
-                    if (availableChanged) {
-                        mOldAvailableBounds.set(mAvailableBounds);
-                    }
-
+                    mOldMagnificationRegion.set(mMagnificationRegion);
                     final SomeArgs args = SomeArgs.obtain();
-                    args.arg1 = Region.obtain(mMagnifiedBounds);
-                    args.arg2 = Region.obtain(mAvailableBounds);
+                    args.arg1 = Region.obtain(mMagnificationRegion);
                     mHandler.obtainMessage(
-                            MyHandler.MESSAGE_NOTIFY_MAGNIFIED_BOUNDS_CHANGED, args).sendToTarget();
+                            MyHandler.MESSAGE_NOTIFY_MAGNIFICATION_REGION_CHANGED, args)
+                            .sendToTarget();
                 }
             }
 
@@ -616,14 +606,14 @@
             public void setMagnifiedRegionBorderShownLocked(boolean shown, boolean animate) {
                 if (shown) {
                     mFullRedrawNeeded = true;
-                    mOldMagnifiedBounds.set(0, 0, 0, 0);
+                    mOldMagnificationRegion.set(0, 0, 0, 0);
                 }
                 mWindow.setShown(shown, animate);
             }
 
             public void getMagnifiedFrameInContentCoordsLocked(Rect rect) {
                 MagnificationSpec spec = mMagnificationSpec;
-                mMagnifiedBounds.getBounds(rect);
+                mMagnificationRegion.getBounds(rect);
                 rect.offset((int) -spec.offsetX, (int) -spec.offsetY);
                 rect.scale(1.0f / spec.scale);
             }
@@ -886,7 +876,7 @@
         }
 
         private class MyHandler extends Handler {
-            public static final int MESSAGE_NOTIFY_MAGNIFIED_BOUNDS_CHANGED = 1;
+            public static final int MESSAGE_NOTIFY_MAGNIFICATION_REGION_CHANGED = 1;
             public static final int MESSAGE_NOTIFY_RECTANGLE_ON_SCREEN_REQUESTED = 2;
             public static final int MESSAGE_NOTIFY_USER_CONTEXT_CHANGED = 3;
             public static final int MESSAGE_NOTIFY_ROTATION_CHANGED = 4;
@@ -899,13 +889,11 @@
             @Override
             public void handleMessage(Message message) {
                 switch (message.what) {
-                    case MESSAGE_NOTIFY_MAGNIFIED_BOUNDS_CHANGED: {
+                    case MESSAGE_NOTIFY_MAGNIFICATION_REGION_CHANGED: {
                         final SomeArgs args = (SomeArgs) message.obj;
                         final Region magnifiedBounds = (Region) args.arg1;
-                        final Region availableBounds = (Region) args.arg2;
-                        mCallbacks.onMagnifiedBoundsChanged(magnifiedBounds, availableBounds);
+                        mCallbacks.onMagnificationRegionChanged(magnifiedBounds);
                         magnifiedBounds.recycle();
-                        availableBounds.recycle();
                     } break;
 
                     case MESSAGE_NOTIFY_RECTANGLE_ON_SCREEN_REQUESTED: {
diff --git a/services/core/java/com/android/server/wm/AppTransition.java b/services/core/java/com/android/server/wm/AppTransition.java
index 9199d10..4553f8e 100644
--- a/services/core/java/com/android/server/wm/AppTransition.java
+++ b/services/core/java/com/android/server/wm/AppTransition.java
@@ -39,6 +39,7 @@
 import static com.android.internal.R.styleable.WindowAnimation_wallpaperIntraOpenExitAnimation;
 import static com.android.internal.R.styleable.WindowAnimation_wallpaperOpenEnterAnimation;
 import static com.android.internal.R.styleable.WindowAnimation_wallpaperOpenExitAnimation;
+import static com.android.server.wm.AppWindowAnimator.PROLONG_ANIMATION_AT_START;
 import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_ANIM;
 import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_APP_TRANSITIONS;
 import static com.android.server.wm.WindowManagerDebugConfig.TAG_WITH_CLASS_NAME;
@@ -228,6 +229,7 @@
 
     private int mLastClipRevealMaxTranslation;
     private boolean mLastHadClipReveal;
+    private boolean mProlongedAnimationsEnded;
 
     AppTransition(Context context, WindowManagerService service) {
         mContext = context;
@@ -370,7 +372,23 @@
                 topOpeningAppAnimator != null ? topOpeningAppAnimator.animation : null,
                 topClosingAppAnimator != null ? topClosingAppAnimator.animation : null);
         mService.getDefaultDisplayContentLocked().getDockedDividerController()
-                .notifyAppTransitionStarting(openingApps, closingApps);
+                .notifyAppTransitionStarting();
+
+        // Prolong the start for the transition when docking a task from recents, unless recents
+        // ended it already then we don't need to wait.
+        if (mNextAppTransition == TRANSIT_DOCK_TASK_FROM_RECENTS && !mProlongedAnimationsEnded) {
+            for (int i = openingApps.size() - 1; i >= 0; i--) {
+                final AppWindowAnimator appAnimator = openingApps.valueAt(i).mAppAnimator;
+                appAnimator.startProlongAnimation(PROLONG_ANIMATION_AT_START);
+            }
+        }
+    }
+
+    /**
+     * Let the transitions manager know that the somebody wanted to end the prolonged animations.
+     */
+    void notifyProlongedAnimationsEnded() {
+        mProlongedAnimationsEnded = true;
     }
 
     void clear() {
@@ -380,6 +398,7 @@
         mNextAppTransitionAnimationsSpecsFuture = null;
         mDefaultNextAppTransitionAnimationSpec = null;
         mAnimationFinishedCallback = null;
+        mProlongedAnimationsEnded = false;
     }
 
     void freeze() {
@@ -1914,14 +1933,6 @@
                 setAppTransition(transit);
             }
         }
-        if (transit != TRANSIT_DOCK_TASK_FROM_RECENTS
-                && mNextAppTransition == TRANSIT_DOCK_TASK_FROM_RECENTS) {
-
-            // Somebody is trying to start another transition while we are waiting for the docking
-            // window to be drawn. Because TRANSIT_DOCK_TASK_FROM_RECENTS starts prolonged
-            // animations, we need to override it or our prolonged animations will never be ended.
-            setAppTransition(transit);
-        }
         boolean prepared = prepare();
         if (isTransitionSet()) {
             mService.mH.removeMessages(H.APP_TRANSITION_TIMEOUT);
diff --git a/services/core/java/com/android/server/wm/AppWindowToken.java b/services/core/java/com/android/server/wm/AppWindowToken.java
index 9f54b53..b4ead44 100644
--- a/services/core/java/com/android/server/wm/AppWindowToken.java
+++ b/services/core/java/com/android/server/wm/AppWindowToken.java
@@ -390,8 +390,8 @@
     }
 
     boolean hasSavedSurface() {
-        for (int i = windows.size() -1; i >= 0; i--) {
-            final WindowState ws = windows.get(i);
+        for (int i = allAppWindows.size() -1; i >= 0; i--) {
+            final WindowState ws = allAppWindows.get(i);
             if (ws.hasSavedSurface()) {
                 return true;
             }
@@ -408,8 +408,8 @@
         // Check if we have enough drawn windows to mark allDrawn= true.
         int numInteresting = 0;
         int numDrawn = 0;
-        for (int i = windows.size() - 1; i >= 0; i--) {
-            WindowState w = windows.get(i);
+        for (int i = allAppWindows.size() - 1; i >= 0; i--) {
+            WindowState w = allAppWindows.get(i);
             if (w.hasSavedSurface()) {
                 w.restoreSavedSurface();
             }
@@ -429,8 +429,8 @@
     }
 
     void destroySavedSurfaces() {
-        for (int i = windows.size() - 1; i >= 0; i--) {
-            WindowState win = windows.get(i);
+        for (int i = allAppWindows.size() - 1; i >= 0; i--) {
+            WindowState win = allAppWindows.get(i);
             win.destroySavedSurface();
         }
         mAnimatingWithSavedSurface = false;
@@ -515,6 +515,13 @@
         }
     }
 
+    void requestUpdateWallpaperIfNeeded() {
+        for (int i = allAppWindows.size() - 1; i >= 0; i--) {
+            final WindowState w = allAppWindows.get(i);
+            w.requestUpdateWallpaperIfNeeded();
+        }
+    }
+
     boolean isRelaunching() {
         return mPendingRelaunchCount > 0;
     }
diff --git a/services/core/java/com/android/server/wm/BoundsAnimationController.java b/services/core/java/com/android/server/wm/BoundsAnimationController.java
index 1f44b29..220a6de 100644
--- a/services/core/java/com/android/server/wm/BoundsAnimationController.java
+++ b/services/core/java/com/android/server/wm/BoundsAnimationController.java
@@ -24,10 +24,12 @@
 import android.animation.Animator;
 import android.animation.ValueAnimator;
 import android.graphics.Rect;
+import android.os.IBinder;
 import android.os.Debug;
 import android.util.ArrayMap;
 import android.util.Slog;
 import android.view.animation.LinearInterpolator;
+import android.view.WindowManagerInternal;
 
 /**
  * Enables animating bounds of objects.
@@ -49,6 +51,32 @@
     // Only accessed on UI thread.
     private ArrayMap<AnimateBoundsUser, BoundsAnimator> mRunningAnimations = new ArrayMap<>();
 
+    private final WindowManagerInternal.AppTransitionListener mAppTransitionNotifier
+        = new WindowManagerInternal.AppTransitionListener() {
+                public void onAppTransitionCancelledLocked() {
+                    animationFinished();
+                }
+                public void onAppTransitionFinishedLocked(IBinder token) {
+                    animationFinished();
+                }
+                private void animationFinished() {
+                    if (mFinishAnimationAfterTransition) {
+                        for (int i = 0; i < mRunningAnimations.size(); i++) {
+                            BoundsAnimator b = mRunningAnimations.valueAt(i);
+                            b.onAnimationEnd(null);
+                        }
+                    }
+                }
+            };
+
+    private final AppTransition mAppTransition;
+    private boolean mFinishAnimationAfterTransition = false;
+
+    BoundsAnimationController(AppTransition transition) {
+        mAppTransition = transition;
+        mAppTransition.registerListenerLocked(mAppTransitionNotifier);
+    }
+
     private final class BoundsAnimator extends ValueAnimator
             implements ValueAnimator.AnimatorUpdateListener, ValueAnimator.AnimatorListener {
         private final AnimateBoundsUser mTarget;
@@ -129,6 +157,7 @@
         public void onAnimationStart(Animator animation) {
             if (DEBUG) Slog.d(TAG, "onAnimationStart: mTarget=" + mTarget
                     + " mReplacement=" + mReplacement);
+            mFinishAnimationAfterTransition = false;
             // Ensure that we have prepared the target for animation before
             // we trigger any size changes, so it can swap surfaces
             // in to appropriate modes, or do as it wishes otherwise.
@@ -149,14 +178,21 @@
         public void onAnimationEnd(Animator animation) {
             if (DEBUG) Slog.d(TAG, "onAnimationEnd: mTarget=" + mTarget
                     + " mMoveToFullScreen=" + mMoveToFullScreen + " mWillReplace=" + mWillReplace);
+
+            // There could be another animation running. For example in the
+            // move to fullscreen case, recents will also be closing while the
+            // previous task will be taking its place in the fullscreen stack.
+            // we have to ensure this is completed before we finish the animation
+            // and take our place in the fullscreen stack.
+            if (mAppTransition.isRunning() && !mFinishAnimationAfterTransition) {
+                mFinishAnimationAfterTransition = true;
+                return;
+            }
+
             if (mMoveToFullScreen && !mWillReplace) {
                 mTarget.moveToFullscreen();
             }
 
-            // If we finish the animation before we move the target to fullscreen,
-            // recents may close itself and we may try and resume the previous
-            // fullscreen app leading to churn and flicker after we then move
-            // our target to fullscreen.
             finishAnimation();
         }
 
diff --git a/services/core/java/com/android/server/wm/DisplayContent.java b/services/core/java/com/android/server/wm/DisplayContent.java
index 1f16481..037eb5a 100644
--- a/services/core/java/com/android/server/wm/DisplayContent.java
+++ b/services/core/java/com/android/server/wm/DisplayContent.java
@@ -364,8 +364,8 @@
             final ArrayList<Task> tasks = stack.getTasks();
             for (int taskNdx = tasks.size() - 1; taskNdx >= 0; --taskNdx) {
                 final Task task = tasks.get(taskNdx);
-                final WindowState win = task.getTopVisibleAppMainWindow();
-                if (win == null) {
+                AppWindowToken token = task.getTopVisibleAppToken();
+                if (token == null || !token.isVisible()) {
                     continue;
                 }
 
@@ -375,20 +375,18 @@
                  * We also remove the outside touch area for resizing for all freeform
                  * tasks (including the focused).
                  *
-                 * (For freeform focused task, the below logic will first remove the enlarged
-                 * area, then add back the inner area.)
+                 * We save the focused task region once we find it, and add it back at the end.
                  */
+
+                if (task == focusedTask) {
+                    addBackFocusedTask = true;
+                    mTmpRect2.set(mTmpRect);
+                }
+
                 final boolean isFreeformed = task.inFreeformWorkspace();
                 if (task != focusedTask || isFreeformed) {
                     task.getDimBounds(mTmpRect);
                     if (isFreeformed) {
-                        // If we're removing a freeform, focused app from the exclusion region,
-                        // we need to add back its touchable frame later. Remember the touchable
-                        // frame now.
-                        if (task == focusedTask) {
-                            addBackFocusedTask = true;
-                            mTmpRect2.set(mTmpRect);
-                        }
                         // If the task is freeformed, enlarge the area to account for outside
                         // touch area for resize.
                         mTmpRect.inset(-delta, -delta);
diff --git a/services/core/java/com/android/server/wm/DockedStackDividerController.java b/services/core/java/com/android/server/wm/DockedStackDividerController.java
index 8174c13..45262d3 100644
--- a/services/core/java/com/android/server/wm/DockedStackDividerController.java
+++ b/services/core/java/com/android/server/wm/DockedStackDividerController.java
@@ -17,6 +17,7 @@
 package com.android.server.wm;
 
 import static android.app.ActivityManager.StackId.DOCKED_STACK_ID;
+import static android.app.ActivityManager.StackId.FULLSCREEN_WORKSPACE_STACK_ID;
 import static android.app.ActivityManager.StackId.INVALID_STACK_ID;
 import static android.view.WindowManager.DOCKED_BOTTOM;
 import static android.view.WindowManager.DOCKED_LEFT;
@@ -24,7 +25,6 @@
 import static android.view.WindowManager.DOCKED_TOP;
 import static com.android.server.wm.AppTransition.DEFAULT_APP_TRANSITION_DURATION;
 import static com.android.server.wm.AppTransition.TOUCH_RESPONSE_INTERPOLATOR;
-import static com.android.server.wm.DragResizeMode.DRAG_RESIZE_MODE_DOCKED_DIVIDER;
 import static com.android.server.wm.WindowManagerDebugConfig.TAG_WITH_CLASS_NAME;
 import static com.android.server.wm.WindowManagerDebugConfig.TAG_WM;
 import static com.android.server.wm.WindowManagerService.H.NOTIFY_DOCKED_STACK_MINIMIZED_CHANGED;
@@ -33,7 +33,6 @@
 import android.graphics.Rect;
 import android.os.RemoteCallbackList;
 import android.os.RemoteException;
-import android.util.ArraySet;
 import android.util.Slog;
 import android.view.DisplayInfo;
 import android.view.IDockedStackListener;
@@ -369,44 +368,31 @@
      * Notifies the docked stack divider controller of a visibility change that happens without
      * an animation.
      */
-    void notifyAppVisibilityChanged(AppWindowToken wtoken, boolean visible) {
-        final Task task = wtoken.mTask;
-        if (!task.isHomeTask() || !task.isVisibleForUser()) {
-            return;
-        }
-
-        // If the app that having visibility change is not the top visible one in the task,
-        // it does not affect whether the docked stack is minimized, ignore it.
-        if (task.getTopVisibleAppToken() == null || task.getTopVisibleAppToken() != wtoken) {
-            return;
-        }
-
-        // If the stack is completely offscreen, this might just be an intermediate state when
-        // docking a task/launching recents at the same time, but home doesn't actually get
-        // visible after the state settles in.
-        if (isWithinDisplay(task)
-                && mDisplayContent.getDockedStackVisibleForUserLocked() != null) {
-            setMinimizedDockedStack(visible, false /* animate */);
-        }
+    void notifyAppVisibilityChanged() {
+        checkMinimizeChanged(false /* animate */);
     }
 
-    void notifyAppTransitionStarting(ArraySet<AppWindowToken> openingApps,
-            ArraySet<AppWindowToken> closingApps) {
-        if (containsHomeTaskWithinDisplay(openingApps)) {
-            setMinimizedDockedStack(true /* minimized */, true /* animate */);
-        } else if (containsHomeTaskWithinDisplay(closingApps)) {
-            setMinimizedDockedStack(false /* minimized */, true /* animate */);
-        }
+    void notifyAppTransitionStarting() {
+        checkMinimizeChanged(true /* animate */);
     }
 
-    private boolean containsHomeTaskWithinDisplay(ArraySet<AppWindowToken> apps) {
-        for (int i = apps.size() - 1; i >= 0; i--) {
-            final Task task = apps.valueAt(i).mTask;
-            if (task != null && task.isHomeTask()) {
-                return isWithinDisplay(task);
-            }
+    private void checkMinimizeChanged(boolean animate) {
+        final TaskStack homeStack = mDisplayContent.getHomeStack();
+        if (homeStack == null) {
+            return;
         }
-        return false;
+        final Task homeTask = homeStack.findHomeTask();
+        if (homeTask == null || !isWithinDisplay(homeTask)) {
+            return;
+        }
+        final TaskStack fullscreenStack
+                = mService.mStackIdToStack.get(FULLSCREEN_WORKSPACE_STACK_ID);
+        final ArrayList<Task> homeStackTasks = homeStack.getTasks();
+        final Task topHomeStackTask = homeStackTasks.get(homeStackTasks.size() - 1);
+        final boolean homeVisible = homeTask.getTopVisibleAppToken() != null;
+        final boolean homeBehind = (fullscreenStack != null && fullscreenStack.isVisibleLocked())
+                || (homeStackTasks.size() > 1 && topHomeStackTask != homeTask);
+        setMinimizedDockedStack(homeVisible && !homeBehind, animate);
     }
 
     private boolean isWithinDisplay(Task task) {
@@ -598,7 +584,7 @@
     }
 
     private boolean animateForMinimizedDockedStack(long now) {
-        final TaskStack stack = mDisplayContent.getDockedStackVisibleForUserLocked();
+        final TaskStack stack = mService.mStackIdToStack.get(DOCKED_STACK_ID);
         if (!mAnimationStarted) {
             mAnimationStarted = true;
             mAnimationStartTime = now;
diff --git a/services/core/java/com/android/server/wm/Task.java b/services/core/java/com/android/server/wm/Task.java
index 6925fa5..8d41dab 100644
--- a/services/core/java/com/android/server/wm/Task.java
+++ b/services/core/java/com/android/server/wm/Task.java
@@ -719,6 +719,10 @@
         return null;
     }
 
+    AppWindowToken getTopAppToken() {
+        return mAppTokens.size() > 0 ? mAppTokens.get(mAppTokens.size() - 1) : null;
+    }
+
     @Override
     public boolean isFullscreen() {
         if (useCurrentBounds()) {
diff --git a/services/core/java/com/android/server/wm/TaskPositioner.java b/services/core/java/com/android/server/wm/TaskPositioner.java
index ae70aa8..222087d 100644
--- a/services/core/java/com/android/server/wm/TaskPositioner.java
+++ b/services/core/java/com/android/server/wm/TaskPositioner.java
@@ -204,7 +204,7 @@
                                     : DOCKED_STACK_CREATE_MODE_BOTTOM_OR_RIGHT;
                             mService.mActivityManager.moveTaskToDockedStack(
                                     mTask.mTaskId, createMode, true /*toTop*/, true /* animate */,
-                                    null /* initialBounds */);
+                                    null /* initialBounds */, false /* moveHomeStackFront */);
                         }
                     } catch(RemoteException e) {}
 
diff --git a/services/core/java/com/android/server/wm/TaskStack.java b/services/core/java/com/android/server/wm/TaskStack.java
index 6f8207e..6c80d1a 100644
--- a/services/core/java/com/android/server/wm/TaskStack.java
+++ b/services/core/java/com/android/server/wm/TaskStack.java
@@ -18,6 +18,7 @@
 
 import static android.app.ActivityManager.DOCKED_STACK_CREATE_MODE_TOP_OR_LEFT;
 import static android.app.ActivityManager.StackId.DOCKED_STACK_ID;
+import static android.app.ActivityManager.StackId.HOME_STACK_ID;
 import static android.app.ActivityManager.StackId.PINNED_STACK_ID;
 import static android.content.res.Configuration.DENSITY_DPI_UNDEFINED;
 import static android.content.res.Configuration.ORIENTATION_PORTRAIT;
@@ -110,11 +111,6 @@
     /** Detach this stack from its display when animation completes. */
     boolean mDeferDetach;
 
-    // Display rotation as of the last time the display information was updated for this stack.
-    private int mLastUpdateDisplayInfoRotation = -1;
-    // Display rotation as of the last time the configuration was updated for this stack.
-    private int mLastConfigChangedRotation = -1;
-
     // Whether the stack and all its tasks is currently being drag-resized
     private boolean mDragResizing;
 
@@ -160,6 +156,19 @@
         return mTasks;
     }
 
+    Task findHomeTask() {
+        if (mStackId != HOME_STACK_ID) {
+            return null;
+        }
+
+        for (int i = mTasks.size() - 1; i >= 0; i--) {
+            if (mTasks.get(i).isHomeTask()) {
+                return mTasks.get(i);
+            }
+        }
+        return null;
+    }
+
     /**
      * Set the bounds of the stack and its containing tasks.
      * @param stackBounds New stack bounds. Passing in null sets the bounds to fullscreen.
@@ -371,36 +380,27 @@
         final int newDensity = mDisplayContent.getDisplayInfo().logicalDensityDpi;
         if (mRotation == newRotation && mDensity == newDensity) {
             setBounds(mTmpRect2);
-        } else {
-            mLastUpdateDisplayInfoRotation = newRotation;
-            updateBoundsAfterConfigChange(true);
         }
+
+        // If the rotation or density didn't match, we'll update it in onConfigurationChanged.
     }
 
     boolean onConfigurationChanged() {
-        mLastConfigChangedRotation = getDisplayInfo().rotation;
-        return updateBoundsAfterConfigChange(false);
+        return updateBoundsAfterConfigChange();
     }
 
-    boolean updateBoundsAfterConfigChange(boolean scheduleResize) {
+    private boolean updateBoundsAfterConfigChange() {
         if (mFullscreen) {
             // Bounds will already be set correctly when display info is updated in the case of
             // fullscreen.
             return false;
         }
 
-        if (mLastConfigChangedRotation != mLastUpdateDisplayInfoRotation) {
-            // We wait for the rotation values after configuration change and display info. update
-            // to be equal before updating the bounds due to rotation change otherwise things might
-            // get out of alignment...
-            return false;
-        }
-
         final int newRotation = getDisplayInfo().rotation;
         final int newDensity = getDisplayInfo().logicalDensityDpi;
 
         if (mRotation == newRotation && mDensity == newDensity) {
-            // Nothing to do here if the rotation didn't change
+            // Nothing to do here as we already update the state in updateDisplayInfo.
             return false;
         }
 
@@ -416,16 +416,7 @@
             }
         }
 
-        if (scheduleResize) {
-            // Post message to inform activity manager of the bounds change simulating
-            // a one-way call. We do this to prevent a deadlock between window manager
-            // lock and activity manager lock been held.
-            mService.mH.obtainMessage(RESIZE_STACK, mStackId,
-                    0 /*allowResizeInDockedMode*/, mTmpRect2).sendToTarget();
-        } else {
-            mBoundsAfterRotation.set(mTmpRect2);
-        }
-
+        mBoundsAfterRotation.set(mTmpRect2);
         return true;
     }
 
@@ -1121,6 +1112,14 @@
         pw.println(prefix + "mDeferDetach=" + mDeferDetach);
         pw.println(prefix + "mFullscreen=" + mFullscreen);
         pw.println(prefix + "mBounds=" + mBounds.toShortString());
+        if (mMinimizeAmount != 0f) {
+            pw.println(prefix + "mMinimizeAmout=" + mMinimizeAmount);
+        }
+        if (mAdjustedForIme) {
+            pw.println(prefix + "mAdjustedForIme=true");
+            pw.println(prefix + "mAdjustImeAmount=" + mAdjustImeAmount);
+            pw.println(prefix + "mAdjustDividerAmount=" + mAdjustDividerAmount);
+        }
         if (!mAdjustedBounds.isEmpty()) {
             pw.println(prefix + "mAdjustedBounds=" + mAdjustedBounds.toShortString());
         }
diff --git a/services/core/java/com/android/server/wm/WindowManagerService.java b/services/core/java/com/android/server/wm/WindowManagerService.java
index 0b66959..76c8b56 100644
--- a/services/core/java/com/android/server/wm/WindowManagerService.java
+++ b/services/core/java/com/android/server/wm/WindowManagerService.java
@@ -715,8 +715,7 @@
 
     final WindowAnimator mAnimator;
 
-    private final BoundsAnimationController mBoundsAnimationController =
-            new BoundsAnimationController();
+    private final BoundsAnimationController mBoundsAnimationController;
 
     SparseArray<Task> mTaskIdToTask = new SparseArray<>();
 
@@ -974,6 +973,8 @@
         mAppTransition = new AppTransition(context, this);
         mAppTransition.registerListenerLocked(mActivityManagerAppTransitionNotifier);
 
+        mBoundsAnimationController = new BoundsAnimationController(mAppTransition);
+
         mActivityManager = ActivityManagerNative.getDefault();
         mAmInternal = LocalServices.getService(ActivityManagerInternal.class);
         mAppOps = (AppOpsManager)context.getSystemService(Context.APP_OPS_SERVICE);
@@ -2758,6 +2759,13 @@
             }
             win.setWindowScale(win.mRequestedWidth, win.mRequestedHeight);
 
+            if (win.mAttrs.surfaceInsets.left != 0
+                    || win.mAttrs.surfaceInsets.top != 0
+                    || win.mAttrs.surfaceInsets.right != 0
+                    || win.mAttrs.surfaceInsets.bottom != 0) {
+                winAnimator.setOpaqueLocked(false);
+            }
+
             boolean imMayMove = (flagChanges & (FLAG_ALT_FOCUSABLE_IM | FLAG_NOT_FOCUSABLE)) != 0;
             final boolean isDefaultDisplay = win.isDefaultDisplay();
             boolean focusMayChange = isDefaultDisplay && (win.mViewVisibility != viewVisibility
@@ -3618,8 +3626,7 @@
             // disregarding font scale, which should remain set to
             // the value of the previous configuration.
             mTempConfiguration.setToDefaults();
-            mTempConfiguration.fontScale = currentConfig.fontScale;
-            mTempConfiguration.uiMode = currentConfig.uiMode;
+            mTempConfiguration.updateFrom(currentConfig);
             computeScreenConfigurationLocked(mTempConfiguration);
             if (currentConfig.diff(mTempConfiguration) != 0) {
                 mWaitingForConfig = true;
@@ -3682,11 +3689,15 @@
         }
 
         synchronized(mWindowMap) {
-            mCurConfiguration = new Configuration(config);
             if (mWaitingForConfig) {
                 mWaitingForConfig = false;
                 mLastFinishedFreezeSource = "new-config";
             }
+            boolean configChanged = mCurConfiguration.diff(config) != 0;
+            if (!configChanged) {
+                return null;
+            }
+            mCurConfiguration = new Configuration(config);
             return onConfigurationChanged();
         }
     }
@@ -3934,6 +3945,7 @@
                     appToken.mAppAnimator.endProlongedAnimation();
                 }
             }
+            mAppTransition.notifyProlongedAnimationsEnded();
         }
     }
 
@@ -4323,15 +4335,21 @@
             }
         }
 
-        if (visibilityChanged && !delayed) {
-            if (visible) {
+        if (visibilityChanged) {
+            if (visible && !delayed) {
                 // The token was made immediately visible, there will be no entrance animation.
                 // We need to inform the client the enter animation was finished.
                 wtoken.mEnteringAnimation = true;
                 mActivityManagerAppTransitionNotifier.onAppTransitionFinishedLocked(wtoken.token);
             }
-            getDefaultDisplayContentLocked().getDockedDividerController()
-                    .notifyAppVisibilityChanged(wtoken, visible);
+
+            if (!mClosingApps.contains(wtoken) && !mOpeningApps.contains(wtoken)) {
+                // The token is not closing nor opening, so even if there is an animation set, that
+                // doesn't mean that it goes through the normal app transition cycle so we have
+                // to inform the docked controller about visibility change.
+                getDefaultDisplayContentLocked().getDockedDividerController()
+                        .notifyAppVisibilityChanged();
+            }
         }
 
         return delayed;
@@ -4409,7 +4427,11 @@
                 if (wtoken.hidden || wtoken.mAppStopped) {
                     wtoken.allDrawn = false;
                     wtoken.deferClearAllDrawn = false;
-                    wtoken.waitingToShow = true;
+
+                    // If the app was already visible, don't reset the waitingToShow state.
+                    if (wtoken.hidden) {
+                        wtoken.waitingToShow = true;
+                    }
 
                     if (wtoken.clientHidden) {
                         // In the case where we are making an app visible
@@ -4422,6 +4444,8 @@
                         wtoken.sendAppVisibilityToClients();
                     }
                 }
+                wtoken.requestUpdateWallpaperIfNeeded();
+
                 if (DEBUG_ADD_REMOVE) Slog.v(
                         TAG_WM, "No longer Stopped: " + wtoken);
                 wtoken.mAppStopped = false;
@@ -6274,9 +6298,11 @@
                         + maxLayer + " appToken=" + appToken);
                 for (int i = 0; i < windows.size(); i++) {
                     WindowState win = windows.get(i);
+                    WindowSurfaceController controller = win.mWinAnimator.mSurfaceController;
                     Slog.i(TAG_WM, win + ": " + win.mLayer
                             + " animLayer=" + win.mWinAnimator.mAnimLayer
-                            + " surfaceLayer=" + win.mWinAnimator.mSurfaceController.getLayer());
+                            + " surfaceLayer=" + ((controller == null)
+                                ? "null" : controller.getLayer()));
                 }
             }
 
@@ -8864,8 +8890,7 @@
 
         boolean configChanged = updateOrientationFromAppTokensLocked(false);
         mTempConfiguration.setToDefaults();
-        mTempConfiguration.fontScale = mCurConfiguration.fontScale;
-        mTempConfiguration.uiMode = mCurConfiguration.uiMode;
+        mTempConfiguration.updateFrom(mCurConfiguration);
         computeScreenConfigurationLocked(mTempConfiguration);
         configChanged |= mCurConfiguration.diff(mTempConfiguration) != 0;
 
@@ -10962,12 +10987,10 @@
         }
 
         @Override
-        public void getMagnificationRegions(@NonNull Region outMagnified,
-                @NonNull Region outAvailable) {
+        public void getMagnificationRegion(@NonNull Region magnificationRegion) {
             synchronized (mWindowMap) {
                 if (mAccessibilityController != null) {
-                    mAccessibilityController.getMagnificationRegionsLocked(
-                            outMagnified, outAvailable);
+                    mAccessibilityController.getMagnificationRegionLocked(magnificationRegion);
                 } else {
                     throw new IllegalStateException("Magnification callbacks not set!");
                 }
diff --git a/services/core/java/com/android/server/wm/WindowState.java b/services/core/java/com/android/server/wm/WindowState.java
index ae20ae3..dd88bea 100644
--- a/services/core/java/com/android/server/wm/WindowState.java
+++ b/services/core/java/com/android/server/wm/WindowState.java
@@ -73,6 +73,7 @@
 import static android.view.WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL;
 import static android.view.WindowManager.LayoutParams.FLAG_SCALED;
 import static android.view.WindowManager.LayoutParams.FLAG_SECURE;
+import static android.view.WindowManager.LayoutParams.FLAG_SHOW_WALLPAPER;
 import static android.view.WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED;
 import static android.view.WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON;
 import static android.view.WindowManager.LayoutParams.LAST_SUB_WINDOW;
@@ -90,6 +91,7 @@
 import static android.view.WindowManager.LayoutParams.TYPE_INPUT_METHOD;
 import static android.view.WindowManager.LayoutParams.TYPE_INPUT_METHOD_DIALOG;
 import static android.view.WindowManager.LayoutParams.TYPE_WALLPAPER;
+import static android.view.WindowManagerPolicy.FINISH_LAYOUT_REDO_WALLPAPER;
 import static com.android.server.wm.DragResizeMode.DRAG_RESIZE_MODE_DOCKED_DIVIDER;
 import static com.android.server.wm.DragResizeMode.DRAG_RESIZE_MODE_FREEFORM;
 import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_ADD_REMOVE;
@@ -2719,6 +2721,14 @@
         mAnimateReplacingWindow = false;
     }
 
+    void requestUpdateWallpaperIfNeeded() {
+        if (mDisplayContent != null && (mAttrs.flags & FLAG_SHOW_WALLPAPER) != 0) {
+            mDisplayContent.pendingLayoutChanges |= FINISH_LAYOUT_REDO_WALLPAPER;
+            mDisplayContent.layoutNeeded = true;
+            mService.mWindowPlacerLocked.requestTraversal();
+        }
+    }
+
     float translateToWindowX(float x) {
         float winX = x - mFrame.left;
         if (mEnforceSizeCompat) {
diff --git a/services/core/java/com/android/server/wm/WindowStateAnimator.java b/services/core/java/com/android/server/wm/WindowStateAnimator.java
index 1493bc7..a0784b5 100644
--- a/services/core/java/com/android/server/wm/WindowStateAnimator.java
+++ b/services/core/java/com/android/server/wm/WindowStateAnimator.java
@@ -1441,6 +1441,18 @@
             return;
         }
 
+        // Do not change surface properties of opening apps if we are waiting for the
+        // transition to be ready. transitionGoodToGo could be not ready even after all
+        // opening apps are drawn. It's only waiting on isFetchingAppTransitionsSpecs()
+        // to get the animation spec. (For example, go into Recents and immediately open
+        // the same app again before the app's surface is destroyed or saved, the surface
+        // is always ready in the whole process.) If we go ahead here, the opening app
+        // will be shown with the full size before the correct animation spec arrives.
+        if (mService.mAppTransition.isTransitionSet() && isDummyAnimation() &&
+                mService.mOpeningApps.contains(w.mAppToken)) {
+            return;
+        }
+
         boolean displayed = false;
 
         computeShownFrameLocked();
diff --git a/services/core/java/com/android/server/wm/WindowSurfacePlacer.java b/services/core/java/com/android/server/wm/WindowSurfacePlacer.java
index 8937f09..a45ae60 100644
--- a/services/core/java/com/android/server/wm/WindowSurfacePlacer.java
+++ b/services/core/java/com/android/server/wm/WindowSurfacePlacer.java
@@ -1251,10 +1251,6 @@
             if (mService.mAppTransition.isNextAppTransitionThumbnailUp()) {
                 createThumbnailAppAnimator(transit, wtoken, topOpeningLayer, topClosingLayer);
             }
-            if (mService.mAppTransition.getAppTransition()
-                    == AppTransition.TRANSIT_DOCK_TASK_FROM_RECENTS) {
-                appAnimator.startProlongAnimation(PROLONG_ANIMATION_AT_START);
-            }
         }
         return topOpeningApp;
     }
diff --git a/services/core/jni/com_android_server_am_BatteryStatsService.cpp b/services/core/jni/com_android_server_am_BatteryStatsService.cpp
index 5c43659..183a370 100644
--- a/services/core/jni/com_android_server_am_BatteryStatsService.cpp
+++ b/services/core/jni/com_android_server_am_BatteryStatsService.cpp
@@ -27,8 +27,10 @@
 #include <utils/misc.h>
 #include <utils/Log.h>
 #include <hardware/hardware.h>
+#include <hardware/power.h>
 #include <suspend/autosuspend.h>
 
+#include <inttypes.h>
 #include <stdio.h>
 #include <errno.h>
 #include <fcntl.h>
@@ -47,6 +49,7 @@
 
 static bool wakeup_init = false;
 static sem_t wakeup_sem;
+extern struct power_module* gPowerModule;
 
 static void wakeup_callback(bool success)
 {
@@ -170,8 +173,122 @@
     return mergedreasonpos - mergedreason;
 }
 
+static jint getPlatformLowPowerStats(JNIEnv* env, jobject /* clazz */, jobject outBuf) {
+    int num_modes = -1;
+    char *output = (char*)env->GetDirectBufferAddress(outBuf), *offset = output;
+    int remaining = (int)env->GetDirectBufferCapacity(outBuf);
+    power_state_platform_sleep_state_t *list;
+    size_t *voter_list;
+    int total_added = -1;
+
+    if (outBuf == NULL) {
+        jniThrowException(env, "java/lang/NullPointerException", "null argument");
+        goto error;
+    }
+
+    if (!gPowerModule) {
+        ALOGE("%s: gPowerModule not loaded", POWER_HARDWARE_MODULE_ID);
+        goto error;
+    }
+
+    if (! (gPowerModule->get_platform_low_power_stats && gPowerModule->get_number_of_platform_modes
+       && gPowerModule->get_voter_list)) {
+        ALOGE("%s: Missing API", POWER_HARDWARE_MODULE_ID);
+        goto error;
+    }
+
+    if (gPowerModule->get_number_of_platform_modes) {
+        num_modes = gPowerModule->get_number_of_platform_modes(gPowerModule);
+    }
+
+    if (num_modes < 1) {
+        ALOGE("%s: Platform does not even have one low power mode", POWER_HARDWARE_MODULE_ID);
+        goto error;
+    }
+
+    list = (power_state_platform_sleep_state_t *)calloc(num_modes,
+        sizeof(power_state_platform_sleep_state_t));
+    if (!list) {
+        ALOGE("%s: power_state_platform_sleep_state_t allocation failed", POWER_HARDWARE_MODULE_ID);
+        goto error;
+    }
+
+    voter_list = (size_t *)calloc(num_modes, sizeof(*voter_list));
+    if (!voter_list) {
+        ALOGE("%s: voter_list allocation failed", POWER_HARDWARE_MODULE_ID);
+        goto err_free;
+    }
+
+    gPowerModule->get_voter_list(gPowerModule, voter_list);
+
+    for (int i = 0; i < num_modes; i++) {
+        list[i].voters = (power_state_voter_t *)calloc(voter_list[i],
+                         sizeof(power_state_voter_t));
+        if (!list[i].voters) {
+            ALOGE("%s: voter_t allocation failed", POWER_HARDWARE_MODULE_ID);
+            goto err_free;
+        }
+    }
+
+    if (!gPowerModule->get_platform_low_power_stats(gPowerModule, list)) {
+        for (int i = 0; i < num_modes; i++) {
+            int added;
+
+            added = snprintf(offset, remaining, "%s_time=%" PRIu64 " %s_count=%" PRIu64 " ",
+                    list[i].name, list[i].residency_in_msec_since_boot, list[i].name,
+                    list[i].total_transitions);
+            if (added < 0) {
+                break;
+            }
+            if (added > remaining) {
+                added = remaining;
+            }
+            offset += added;
+            remaining -= added;
+            total_added += added;
+
+            for (unsigned int j = 0; j < list[i].number_of_voters; j++) {
+                added = snprintf(offset, remaining, "%s_time=%" PRIu64 " %s_count=%" PRIu64 " ",
+                        list[i].voters[j].name,
+                        list[i].voters[j].total_time_in_msec_voted_for_since_boot,
+                        list[i].voters[j].name,
+                        list[i].voters[j].total_number_of_times_voted_since_boot);
+                if (added < 0) {
+                    break;
+                }
+                if (added > remaining) {
+                    added = remaining;
+                }
+                offset += added;
+                remaining -= added;
+                total_added += added;
+            }
+
+            if (remaining <= 0) {
+                /* rewrite NULL character*/
+                offset--;
+                total_added--;
+                ALOGE("%s module: buffer not enough", POWER_HARDWARE_MODULE_ID);
+                break;
+            }
+        }
+    }
+    *offset = 0;
+    total_added += 1;
+
+err_free:
+    for (int i = 0; i < num_modes; i++) {
+        free(list[i].voters);
+    }
+    free(list);
+    free(voter_list);
+error:
+    return total_added;
+}
+
 static const JNINativeMethod method_table[] = {
     { "nativeWaitWakeup", "(Ljava/nio/ByteBuffer;)I", (void*)nativeWaitWakeup },
+    { "getPlatformLowPowerStats", "(Ljava/nio/ByteBuffer;)I", (void*)getPlatformLowPowerStats },
 };
 
 int register_android_server_BatteryStatsService(JNIEnv *env)
diff --git a/services/core/jni/com_android_server_power_PowerManagerService.cpp b/services/core/jni/com_android_server_power_PowerManagerService.cpp
index 2fdb8e2..cbbfda6a 100644
--- a/services/core/jni/com_android_server_power_PowerManagerService.cpp
+++ b/services/core/jni/com_android_server_power_PowerManagerService.cpp
@@ -48,7 +48,7 @@
 // ----------------------------------------------------------------------------
 
 static jobject gPowerManagerServiceObj;
-static struct power_module* gPowerModule;
+struct power_module* gPowerModule;
 
 static nsecs_t gLastEventTime[USER_ACTIVITY_EVENT_LAST + 1];
 
diff --git a/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java b/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java
index 56e2001..93fbe5c 100644
--- a/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java
+++ b/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java
@@ -6224,6 +6224,8 @@
     }
 
     private void enforceUserUnlocked(int userId) {
+        // Since we're doing this operation on behalf of an app, we only
+        // want to use the actual "unlocked" state.
         Preconditions.checkState(mUserManager.isUserUnlocked(userId),
                 "User must be running and unlocked");
     }
diff --git a/services/net/java/android/net/dhcp/DhcpClient.java b/services/net/java/android/net/dhcp/DhcpClient.java
index 6d0808f..db521e2 100644
--- a/services/net/java/android/net/dhcp/DhcpClient.java
+++ b/services/net/java/android/net/dhcp/DhcpClient.java
@@ -32,8 +32,6 @@
 import android.net.NetworkUtils;
 import android.net.metrics.DhcpClientEvent;
 import android.net.metrics.DhcpErrorEvent;
-import android.os.IBinder;
-import android.os.INetworkManagementService;
 import android.os.Message;
 import android.os.RemoteException;
 import android.os.ServiceManager;
@@ -107,19 +105,25 @@
     /* Commands from controller to start/stop DHCP */
     public static final int CMD_START_DHCP                  = PUBLIC_BASE + 1;
     public static final int CMD_STOP_DHCP                   = PUBLIC_BASE + 2;
-    public static final int CMD_RENEW_DHCP                  = PUBLIC_BASE + 3;
 
     /* Notification from DHCP state machine prior to DHCP discovery/renewal */
-    public static final int CMD_PRE_DHCP_ACTION             = PUBLIC_BASE + 4;
+    public static final int CMD_PRE_DHCP_ACTION             = PUBLIC_BASE + 3;
     /* Notification from DHCP state machine post DHCP discovery/renewal. Indicates
      * success/failure */
-    public static final int CMD_POST_DHCP_ACTION            = PUBLIC_BASE + 5;
+    public static final int CMD_POST_DHCP_ACTION            = PUBLIC_BASE + 4;
     /* Notification from DHCP state machine before quitting */
-    public static final int CMD_ON_QUIT                     = PUBLIC_BASE + 6;
+    public static final int CMD_ON_QUIT                     = PUBLIC_BASE + 5;
 
     /* Command from controller to indicate DHCP discovery/renewal can continue
      * after pre DHCP action is complete */
-    public static final int CMD_PRE_DHCP_ACTION_COMPLETE    = PUBLIC_BASE + 7;
+    public static final int CMD_PRE_DHCP_ACTION_COMPLETE    = PUBLIC_BASE + 6;
+
+    /* Command and event notification to/from IpManager requesting the setting
+     * (or clearing) of an IPv4 LinkAddress.
+     */
+    public static final int CMD_CLEAR_LINKADDRESS           = PUBLIC_BASE + 7;
+    public static final int CMD_CONFIGURE_LINKADDRESS       = PUBLIC_BASE + 8;
+    public static final int EVENT_LINKADDRESS_CONFIGURED    = PUBLIC_BASE + 9;
 
     /* Message.arg1 arguments to CMD_POST_DHCP notification */
     public static final int DHCP_SUCCESS = 1;
@@ -130,7 +134,7 @@
     private static final int CMD_KICK             = PRIVATE_BASE + 1;
     private static final int CMD_RECEIVED_PACKET  = PRIVATE_BASE + 2;
     private static final int CMD_TIMEOUT          = PRIVATE_BASE + 3;
-    private static final int CMD_ONESHOT_TIMEOUT  = PRIVATE_BASE + 4;
+    private static final int CMD_RENEW_DHCP       = PRIVATE_BASE + 4;
 
     // For message logging.
     private static final Class[] sMessageClasses = { DhcpClient.class };
@@ -157,7 +161,6 @@
     // System services / libraries we use.
     private final Context mContext;
     private final Random mRandom;
-    private final INetworkManagementService mNMService;
 
     // Sockets.
     // - We use a packet socket to receive, because servers send us packets bound for IP addresses
@@ -173,7 +176,6 @@
     private final WakeupMessage mKickAlarm;
     private final WakeupMessage mTimeoutAlarm;
     private final WakeupMessage mRenewAlarm;
-    private final WakeupMessage mOneshotTimeoutAlarm;
     private final String mIfaceName;
 
     private boolean mRegisteredForPreDhcpNotification;
@@ -192,7 +194,8 @@
     private State mDhcpInitState = new DhcpInitState();
     private State mDhcpSelectingState = new DhcpSelectingState();
     private State mDhcpRequestingState = new DhcpRequestingState();
-    private State mDhcpHaveAddressState = new DhcpHaveAddressState();
+    private State mDhcpHaveLeaseState = new DhcpHaveLeaseState();
+    private State mConfiguringInterfaceState = new ConfiguringInterfaceState();
     private State mDhcpBoundState = new DhcpBoundState();
     private State mDhcpRenewingState = new DhcpRenewingState();
     private State mDhcpRebindingState = new DhcpRebindingState();
@@ -219,19 +222,17 @@
             addState(mWaitBeforeStartState, mDhcpState);
             addState(mDhcpSelectingState, mDhcpState);
             addState(mDhcpRequestingState, mDhcpState);
-            addState(mDhcpHaveAddressState, mDhcpState);
-                addState(mDhcpBoundState, mDhcpHaveAddressState);
-                addState(mWaitBeforeRenewalState, mDhcpHaveAddressState);
-                addState(mDhcpRenewingState, mDhcpHaveAddressState);
-                addState(mDhcpRebindingState, mDhcpHaveAddressState);
+            addState(mDhcpHaveLeaseState, mDhcpState);
+                addState(mConfiguringInterfaceState, mDhcpHaveLeaseState);
+                addState(mDhcpBoundState, mDhcpHaveLeaseState);
+                addState(mWaitBeforeRenewalState, mDhcpHaveLeaseState);
+                addState(mDhcpRenewingState, mDhcpHaveLeaseState);
+                addState(mDhcpRebindingState, mDhcpHaveLeaseState);
             addState(mDhcpInitRebootState, mDhcpState);
             addState(mDhcpRebootingState, mDhcpState);
 
         setInitialState(mStoppedState);
 
-        IBinder b = ServiceManager.getService(Context.NETWORKMANAGEMENT_SERVICE);
-        mNMService = INetworkManagementService.Stub.asInterface(b);
-
         mRandom = new Random();
 
         // Used to schedule packet retransmissions.
@@ -240,10 +241,6 @@
         mTimeoutAlarm = makeWakeupMessage("TIMEOUT", CMD_TIMEOUT);
         // Used to schedule DHCP renews.
         mRenewAlarm = makeWakeupMessage("RENEW", CMD_RENEW_DHCP);
-        // Used to tell the caller when its request (CMD_START_DHCP or CMD_RENEW_DHCP) timed out.
-        // TODO: when the legacy DHCP client is gone, make the client fully asynchronous and
-        // remove this.
-        mOneshotTimeoutAlarm = makeWakeupMessage("ONESHOT_TIMEOUT", CMD_ONESHOT_TIMEOUT);
     }
 
     public void registerForPreDhcpNotification() {
@@ -321,18 +318,6 @@
         closeQuietly(mPacketSock);
     }
 
-    private boolean setIpAddress(LinkAddress address) {
-        InterfaceConfiguration ifcg = new InterfaceConfiguration();
-        ifcg.setLinkAddress(address);
-        try {
-            mNMService.setInterfaceConfig(mIfaceName, ifcg);
-        } catch (RemoteException|IllegalStateException e) {
-            Log.e(TAG, "Error configuring IP address " + address + ": ", e);
-            return false;
-        }
-        return true;
-    }
-
     class ReceiveThread extends Thread {
 
         private final byte[] mPacket = new byte[DhcpPacket.MAX_LENGTH];
@@ -357,8 +342,8 @@
                 } catch (IOException|ErrnoException e) {
                     if (!mStopped) {
                         Log.e(TAG, "Read error", e);
+                        DhcpErrorEvent.logReceiveError(mIfaceName);
                     }
-                    DhcpErrorEvent.logReceiveError(mIfaceName);
                 } catch (DhcpPacket.ParseException e) {
                     Log.e(TAG, "Can't parse packet: " + e.getMessage());
                     if (PACKET_DBG) {
@@ -382,7 +367,8 @@
                 Os.sendto(mPacketSock, buf.array(), 0, buf.limit(), 0, mInterfaceBroadcastAddr);
             } else {
                 // It's safe to call getpeername here, because we only send unicast packets if we
-                // have an IP address, and we connect the UDP socket in DhcpHaveAddressState#enter.
+                // have an IP address, and we connect the UDP socket before
+                // ConfiguringInterfaceState#exit.
                 if (DBG) Log.d(TAG, "Unicasting " + description + " to " + Os.getpeername(mUdpSock));
                 Os.write(mUdpSock, buf);
             }
@@ -460,6 +446,7 @@
     }
 
     abstract class LoggingState extends State {
+        @Override
         public void enter() {
             if (STATE_DBG) Log.d(TAG, "Entering state " + getName());
             DhcpClientEvent.logStateEvent(mIfaceName, getName());
@@ -513,29 +500,12 @@
         }
     }
 
-    // The one-shot timeout is used to implement the timeout for CMD_START_DHCP. We can't use a
-    // state timeout to do this because obtaining an IP address involves passing through more than
-    // one state (specifically, it passes at least once through DhcpInitState and once through
-    // DhcpRequestingState). The one-shot timeout is created when CMD_START_DHCP is received, and is
-    // cancelled when exiting DhcpState (either due to a CMD_STOP_DHCP, or because of an error), or
-    // when we get an IP address (when entering DhcpBoundState). If it fires, we send ourselves
-    // CMD_ONESHOT_TIMEOUT and notify the caller that DHCP failed, but we take no other action. For
-    // example, if we're in DhcpInitState and sending DISCOVERs, we continue to do so.
-    //
-    // The one-shot timeout is not used for CMD_RENEW_DHCP because that is implemented using only
-    // one state, so we can just use the state timeout.
-    private void scheduleOneshotTimeout() {
-        final long alarmTime = SystemClock.elapsedRealtime() + DHCP_TIMEOUT_MS;
-        mOneshotTimeoutAlarm.schedule(alarmTime);
-    }
-
     class StoppedState extends LoggingState {
         @Override
         public boolean processMessage(Message message) {
             super.processMessage(message);
             switch (message.what) {
                 case CMD_START_DHCP:
-                    scheduleOneshotTimeout();
                     if (mRegisteredForPreDhcpNotification) {
                         transitionTo(mWaitBeforeStartState);
                     } else {
@@ -578,7 +548,6 @@
 
         @Override
         public void exit() {
-            mOneshotTimeoutAlarm.cancel();
             if (mReceiveThread != null) {
                 mReceiveThread.halt();  // Also closes sockets.
                 mReceiveThread = null;
@@ -593,10 +562,6 @@
                 case CMD_STOP_DHCP:
                     transitionTo(mStoppedState);
                     return HANDLED;
-                case CMD_ONESHOT_TIMEOUT:
-                    if (DBG) Log.d(TAG, "Timed out");
-                    notifyFailure();
-                    return HANDLED;
                 default:
                     return NOT_HANDLED;
             }
@@ -759,7 +724,8 @@
                     mOffer = null;
                     Log.d(TAG, "Confirmed lease: " + mDhcpLease);
                     setDhcpLeaseExpiry(packet);
-                    transitionTo(mDhcpBoundState);
+                    notifySuccess();
+                    transitionTo(mConfiguringInterfaceState);
                 }
             } else if (packet instanceof DhcpNakPacket) {
                 // TODO: Wait a while before returning into INIT state.
@@ -776,24 +742,52 @@
         }
     }
 
-    class DhcpHaveAddressState extends LoggingState {
+    class DhcpHaveLeaseState extends LoggingState {
         @Override
         public void enter() {
             super.enter();
-            if (!setIpAddress(mDhcpLease.ipAddress) ||
-                    (mDhcpLease.serverAddress != null &&
-                            !connectUdpSock((mDhcpLease.serverAddress)))) {
-                notifyFailure();
-                // There's likely no point in going into DhcpInitState here, we'll probably just
-                // repeat the transaction, get the same IP address as before, and fail.
-                transitionTo(mStoppedState);
-            }
         }
 
         @Override
         public void exit() {
-            if (DBG) Log.d(TAG, "Clearing IP address");
-            setIpAddress(new LinkAddress("0.0.0.0/0"));
+            // Tell IpManager to clear the IPv4 address. There is no need to
+            // wait for confirmation since any subsequent packets are sent from
+            // INADDR_ANY anyway (DISCOVER, REQUEST).
+            mController.sendMessage(CMD_CLEAR_LINKADDRESS);
+        }
+    }
+
+    class ConfiguringInterfaceState extends LoggingState {
+        @Override
+        public void enter() {
+            super.enter();
+            mController.sendMessage(CMD_CONFIGURE_LINKADDRESS, mDhcpLease.ipAddress);
+        }
+
+        @Override
+        public boolean processMessage(Message message) {
+            super.processMessage(message);
+            switch (message.what) {
+                case EVENT_LINKADDRESS_CONFIGURED:
+                    if (mDhcpLease.serverAddress != null &&
+                            !connectUdpSock(mDhcpLease.serverAddress)) {
+                        // There's likely no point in going into DhcpInitState here, we'll probably
+                        // just repeat the transaction, get the same IP address as before, and fail.
+                        //
+                        // NOTE: It is observed that connectUdpSock() basically never fails, due to
+                        // SO_BINDTODEVICE. Examining the local socket address shows it will happily
+                        // return an IPv4 address from another interface, or even return "0.0.0.0".
+                        //
+                        // TODO: Consider deleting this check, following testing on several kernels.
+                        notifyFailure();
+                        transitionTo(mStoppedState);
+                    } else {
+                        transitionTo(mDhcpBoundState);
+                    }
+                    return HANDLED;
+                default:
+                    return NOT_HANDLED;
+            }
         }
     }
 
@@ -801,10 +795,8 @@
         @Override
         public void enter() {
             super.enter();
-            mOneshotTimeoutAlarm.cancel();
-            notifySuccess();
-            // TODO: DhcpStateMachine only supported renewing at 50% of the lease time, and did not
-            // support rebinding. Once the legacy DHCP client is gone, fix this.
+            // TODO: DhcpStateMachine only supported renewing at 50% of the lease time,
+            // and did not support rebinding. Now that the legacy DHCP client is gone, fix this.
             scheduleRenew();
         }
 
@@ -858,6 +850,7 @@
             if (!isValidPacket(packet)) return;
             if ((packet instanceof DhcpAckPacket)) {
                 setDhcpLeaseExpiry(packet);
+                notifySuccess();
                 transitionTo(mDhcpBoundState);
             } else if (packet instanceof DhcpNakPacket) {
                 transitionTo(mDhcpInitState);
@@ -867,7 +860,7 @@
         @Override
         protected void timeout() {
             transitionTo(mDhcpInitState);
-            sendMessage(CMD_ONESHOT_TIMEOUT);
+            notifyFailure();
         }
     }
 
diff --git a/services/net/java/android/net/ip/IpManager.java b/services/net/java/android/net/ip/IpManager.java
index 2683673..34152cf 100644
--- a/services/net/java/android/net/ip/IpManager.java
+++ b/services/net/java/android/net/ip/IpManager.java
@@ -17,6 +17,7 @@
 package android.net.ip;
 
 import com.android.internal.util.MessageUtils;
+import com.android.internal.util.WakeupMessage;
 
 import android.content.Context;
 import android.net.apf.ApfCapabilities;
@@ -41,7 +42,6 @@
 import android.util.Log;
 import android.util.SparseArray;
 
-import com.android.internal.annotations.GuardedBy;
 import com.android.internal.annotations.VisibleForTesting;
 import com.android.internal.util.IndentingPrintWriter;
 import com.android.internal.util.State;
@@ -54,10 +54,7 @@
 import java.net.NetworkInterface;
 import java.net.SocketException;
 import java.util.Objects;
-
-import static android.net.metrics.IpConnectivityEvent.IPCE_IPMGR_PROVISIONING_OK;
-import static android.net.metrics.IpConnectivityEvent.IPCE_IPMGR_PROVISIONING_FAIL;
-import static android.net.metrics.IpConnectivityEvent.IPCE_IPMGR_COMPLETE_LIFECYCLE;
+import java.util.StringJoiner;
 
 
 /**
@@ -255,6 +252,7 @@
      *     final ProvisioningConfiguration config =
      *             mIpManager.buildProvisioningConfiguration()
      *                     .withPreDhcpAction()
+     *                     .withProvisioningTimeoutMs(36 * 1000)
      *                     .build();
      *     mIpManager.startProvisioning(config);
      *     ...
@@ -265,6 +263,15 @@
      * must specify the configuration again.
      */
     public static class ProvisioningConfiguration {
+        // TODO: Delete this default timeout once those callers that care are
+        // fixed to pass in their preferred timeout.
+        //
+        // We pick 36 seconds so we can send DHCP requests at
+        //
+        //     t=0, t=2, t=6, t=14, t=30
+        //
+        // allowing for 10% jitter.
+        private static final int DEFAULT_TIMEOUT_MS = 36 * 1000;
 
         public static class Builder {
             private ProvisioningConfiguration mConfig = new ProvisioningConfiguration();
@@ -275,7 +282,12 @@
             }
 
             public Builder withPreDhcpAction() {
-                mConfig.mRequestedPreDhcpAction = true;
+                mConfig.mRequestedPreDhcpActionMs = DEFAULT_TIMEOUT_MS;
+                return this;
+            }
+
+            public Builder withPreDhcpAction(int dhcpActionTimeoutMs) {
+                mConfig.mRequestedPreDhcpActionMs = dhcpActionTimeoutMs;
                 return this;
             }
 
@@ -289,23 +301,41 @@
                 return this;
             }
 
+            public Builder withProvisioningTimeoutMs(int timeoutMs) {
+                mConfig.mProvisioningTimeoutMs = timeoutMs;
+                return this;
+            }
+
             public ProvisioningConfiguration build() {
                 return new ProvisioningConfiguration(mConfig);
             }
         }
 
         /* package */ boolean mUsingIpReachabilityMonitor = true;
-        /* package */ boolean mRequestedPreDhcpAction;
+        /* package */ int mRequestedPreDhcpActionMs;
         /* package */ StaticIpConfiguration mStaticIpConfig;
         /* package */ ApfCapabilities mApfCapabilities;
+        /* package */ int mProvisioningTimeoutMs = DEFAULT_TIMEOUT_MS;
 
         public ProvisioningConfiguration() {}
 
         public ProvisioningConfiguration(ProvisioningConfiguration other) {
             mUsingIpReachabilityMonitor = other.mUsingIpReachabilityMonitor;
-            mRequestedPreDhcpAction = other.mRequestedPreDhcpAction;
+            mRequestedPreDhcpActionMs = other.mRequestedPreDhcpActionMs;
             mStaticIpConfig = other.mStaticIpConfig;
             mApfCapabilities = other.mApfCapabilities;
+            mProvisioningTimeoutMs = other.mProvisioningTimeoutMs;
+        }
+
+        @Override
+        public String toString() {
+            return new StringJoiner(", ", getClass().getSimpleName() + "{", "}")
+                    .add("mUsingIpReachabilityMonitor: " + mUsingIpReachabilityMonitor)
+                    .add("mRequestedPreDhcpActionMs: " + mRequestedPreDhcpActionMs)
+                    .add("mStaticIpConfig: " + mStaticIpConfig)
+                    .add("mApfCapabilities: " + mApfCapabilities)
+                    .add("mProvisioningTimeoutMs: " + mProvisioningTimeoutMs)
+                    .toString();
         }
     }
 
@@ -320,6 +350,8 @@
     private static final int CMD_UPDATE_TCP_BUFFER_SIZES = 6;
     private static final int CMD_UPDATE_HTTP_PROXY = 7;
     private static final int CMD_SET_MULTICAST_FILTER = 8;
+    private static final int EVENT_PROVISIONING_TIMEOUT = 9;
+    private static final int EVENT_DHCPACTION_TIMEOUT = 10;
 
     private static final int MAX_LOG_RECORDS = 500;
 
@@ -330,7 +362,6 @@
     // TODO: Revert this hack once IpManager and Nat464Xlat work in concert.
     private static final String CLAT_PREFIX = "v4-";
 
-    private final Object mLock = new Object();
     private final State mStoppedState = new StoppedState();
     private final State mStoppingState = new StoppingState();
     private final State mStartedState = new StartedState();
@@ -343,6 +374,8 @@
     protected final Callback mCallback;
     private final INetworkManagementService mNwService;
     private final NetlinkTracker mNetlinkTracker;
+    private final WakeupMessage mProvisioningTimeoutAlarm;
+    private final WakeupMessage mDhcpActionTimeoutAlarm;
     private final LocalLog mLocalLog;
 
     private NetworkInterface mNetworkInterface;
@@ -350,6 +383,7 @@
     /**
      * Non-final member variables accessed only from within our StateMachine.
      */
+    private LinkProperties mLinkProperties;
     private ProvisioningConfiguration mConfiguration;
     private IpReachabilityMonitor mIpReachabilityMonitor;
     private DhcpClient mDhcpClient;
@@ -360,13 +394,6 @@
     private boolean mMulticastFiltering;
     private long mStartTimeMillis;
 
-    /**
-     * Member variables accessed both from within the StateMachine thread
-     * and via accessors from other threads.
-     */
-    @GuardedBy("mLock")
-    private LinkProperties mLinkProperties;
-
     public IpManager(Context context, String ifName, Callback callback)
                 throws IllegalArgumentException {
         this(context, ifName, callback, INetworkManagementService.Stub.asInterface(
@@ -423,6 +450,11 @@
 
         resetLinkProperties();
 
+        mProvisioningTimeoutAlarm = new WakeupMessage(mContext, getHandler(),
+                mTag + ".EVENT_PROVISIONING_TIMEOUT", EVENT_PROVISIONING_TIMEOUT);
+        mDhcpActionTimeoutAlarm = new WakeupMessage(mContext, getHandler(),
+                mTag + ".EVENT_DHCPACTION_TIMEOUT", EVENT_DHCPACTION_TIMEOUT);
+
         // Super simple StateMachine.
         addState(mStoppedState);
         addState(mStartedState);
@@ -506,12 +538,6 @@
         sendMessage(CMD_SET_MULTICAST_FILTER, enabled);
     }
 
-    public LinkProperties getLinkProperties() {
-        synchronized (mLock) {
-            return new LinkProperties(mLinkProperties);
-        }
-    }
-
     public void dump(FileDescriptor fd, PrintWriter writer, String[] args) {
         IndentingPrintWriter pw = new IndentingPrintWriter(writer, "  ");
         pw.println("APF dump:");
@@ -586,10 +612,8 @@
         mTcpBufferSizes = "";
         mHttpProxy = null;
 
-        synchronized (mLock) {
-            mLinkProperties = new LinkProperties();
-            mLinkProperties.setInterfaceName(mInterfaceName);
-        }
+        mLinkProperties = new LinkProperties();
+        mLinkProperties.setInterfaceName(mInterfaceName);
     }
 
     private void recordMetric(final int type) {
@@ -669,17 +693,16 @@
     }
 
     private void dispatchCallback(ProvisioningChange delta, LinkProperties newLp) {
-        if (mApfFilter != null) mApfFilter.setLinkProperties(newLp);
         switch (delta) {
             case GAINED_PROVISIONING:
                 if (VDBG) { Log.d(mTag, "onProvisioningSuccess()"); }
-                recordMetric(IPCE_IPMGR_PROVISIONING_OK);
+                recordMetric(IpManagerEvent.PROVISIONING_OK);
                 mCallback.onProvisioningSuccess(newLp);
                 break;
 
             case LOST_PROVISIONING:
                 if (VDBG) { Log.d(mTag, "onProvisioningFailure()"); }
-                recordMetric(IPCE_IPMGR_PROVISIONING_FAIL);
+                recordMetric(IpManagerEvent.PROVISIONING_FAIL);
                 mCallback.onProvisioningFailure(newLp);
                 break;
 
@@ -690,33 +713,31 @@
         }
     }
 
+    // Updates all IpManager-related state concerned with LinkProperties.
+    // Returns a ProvisioningChange for possibly notifying other interested
+    // parties that are not fronted by IpManager.
     private ProvisioningChange setLinkProperties(LinkProperties newLp) {
+        if (mApfFilter != null) {
+            mApfFilter.setLinkProperties(newLp);
+        }
         if (mIpReachabilityMonitor != null) {
             mIpReachabilityMonitor.updateLinkProperties(newLp);
         }
 
-        ProvisioningChange delta;
-        synchronized (mLock) {
-            delta = compareProvisioning(mLinkProperties, newLp);
-            mLinkProperties = new LinkProperties(newLp);
-        }
+        ProvisioningChange delta = compareProvisioning(mLinkProperties, newLp);
+        mLinkProperties = new LinkProperties(newLp);
 
-        if (DBG) {
-            switch (delta) {
-                case GAINED_PROVISIONING:
-                case LOST_PROVISIONING:
-                    Log.d(mTag, "provisioning: " + delta);
-                    break;
-            }
+        if (delta == ProvisioningChange.GAINED_PROVISIONING) {
+            // TODO: Add a proper ProvisionedState and cancel the alarm in
+            // its enter() method.
+            mProvisioningTimeoutAlarm.cancel();
         }
 
         return delta;
     }
 
     private boolean linkPropertiesUnchanged(LinkProperties newLp) {
-        synchronized (mLock) {
-            return Objects.equals(newLp, mLinkProperties);
-        }
+        return Objects.equals(newLp, mLinkProperties);
     }
 
     private LinkProperties assembleLinkProperties() {
@@ -791,6 +812,19 @@
         return (delta != ProvisioningChange.LOST_PROVISIONING);
     }
 
+    private boolean setIPv4Address(LinkAddress address) {
+        final InterfaceConfiguration ifcg = new InterfaceConfiguration();
+        ifcg.setLinkAddress(address);
+        try {
+            mNwService.setInterfaceConfig(mInterfaceName, ifcg);
+            if (VDBG) Log.d(mTag, "IPv4 configuration succeeded");
+        } catch (IllegalStateException | RemoteException e) {
+            Log.e(mTag, "IPv4 configuration failed: ", e);
+            return false;
+        }
+        return true;
+    }
+
     private void clearIPv4Address() {
         try {
             final InterfaceConfiguration ifcg = new InterfaceConfiguration();
@@ -810,34 +844,39 @@
             Log.d(mTag, "onNewDhcpResults(" + Objects.toString(dhcpResults) + ")");
         }
         mCallback.onNewDhcpResults(dhcpResults);
-
         dispatchCallback(delta, newLp);
     }
 
     private void handleIPv4Failure() {
-        // TODO: Figure out to de-dup this and the same code in DhcpClient.
+        // TODO: Investigate deleting this clearIPv4Address() call.
+        //
+        // DhcpClient will send us CMD_CLEAR_LINKADDRESS in all circumstances
+        // that could trigger a call to this function. If we missed handling
+        // that message in StartedState for some reason we would still clear
+        // any addresses upon entry to StoppedState.
         clearIPv4Address();
         mDhcpResults = null;
+        if (VDBG) { Log.d(mTag, "onNewDhcpResults(null)"); }
+        mCallback.onNewDhcpResults(null);
+
+        handleProvisioningFailure();
+    }
+
+    private void handleProvisioningFailure() {
         final LinkProperties newLp = assembleLinkProperties();
         ProvisioningChange delta = setLinkProperties(newLp);
         // If we've gotten here and we're still not provisioned treat that as
         // a total loss of provisioning.
         //
         // Either (a) static IP configuration failed or (b) DHCPv4 failed AND
-        // there was no usable IPv6 obtained before the DHCPv4 timeout.
+        // there was no usable IPv6 obtained before a non-zero provisioning
+        // timeout expired.
         //
         // Regardless: GAME OVER.
-        //
-        // TODO: Make the DHCP client not time out and just continue in
-        // exponential backoff. Callers such as Wi-Fi which need a timeout
-        // should implement it themselves.
         if (delta == ProvisioningChange.STILL_NOT_PROVISIONED) {
             delta = ProvisioningChange.LOST_PROVISIONING;
         }
 
-        if (VDBG) { Log.d(mTag, "onNewDhcpResults(null)"); }
-        mCallback.onNewDhcpResults(null);
-
         dispatchCallback(delta, newLp);
         if (delta == ProvisioningChange.LOST_PROVISIONING) {
             transitionTo(mStoppingState);
@@ -856,7 +895,7 @@
 
             resetLinkProperties();
             if (mStartTimeMillis > 0) {
-                recordMetric(IPCE_IPMGR_COMPLETE_LIFECYCLE);
+                recordMetric(IpManagerEvent.COMPLETE_LIFECYCLE);
                 mStartTimeMillis = 0;
             }
         }
@@ -965,12 +1004,12 @@
             // If we have a StaticIpConfiguration attempt to apply it and
             // handle the result accordingly.
             if (mConfiguration.mStaticIpConfig != null) {
-                if (applyStaticIpConfig()) {
+                if (setIPv4Address(mConfiguration.mStaticIpConfig.ipAddress)) {
                     handleIPv4Success(new DhcpResults(mConfiguration.mStaticIpConfig));
                 } else {
                     if (VDBG) { Log.d(mTag, "onProvisioningFailure()"); }
-                    recordMetric(IPCE_IPMGR_PROVISIONING_FAIL);
-                    mCallback.onProvisioningFailure(getLinkProperties());
+                    recordMetric(IpManagerEvent.PROVISIONING_FAIL);
+                    mCallback.onProvisioningFailure(new LinkProperties(mLinkProperties));
                     transitionTo(mStoppingState);
                 }
             } else {
@@ -981,11 +1020,20 @@
                         mInterfaceName);
                 mDhcpClient.registerForPreDhcpNotification();
                 mDhcpClient.sendMessage(DhcpClient.CMD_START_DHCP);
+
+                if (mConfiguration.mProvisioningTimeoutMs > 0) {
+                    final long alarmTime = SystemClock.elapsedRealtime() +
+                            mConfiguration.mProvisioningTimeoutMs;
+                    mProvisioningTimeoutAlarm.schedule(alarmTime);
+                }
             }
         }
 
         @Override
         public void exit() {
+            mProvisioningTimeoutAlarm.cancel();
+            mDhcpActionTimeoutAlarm.cancel();
+
             if (mIpReachabilityMonitor != null) {
                 mIpReachabilityMonitor.stop();
                 mIpReachabilityMonitor = null;
@@ -1004,11 +1052,23 @@
             resetLinkProperties();
         }
 
+        private void startDhcpAction() {
+            mCallback.onPreDhcpAction();
+            final long alarmTime = SystemClock.elapsedRealtime() +
+                    mConfiguration.mRequestedPreDhcpActionMs;
+            mDhcpActionTimeoutAlarm.schedule(alarmTime);
+        }
+
+        private void stopDhcpAction() {
+            mDhcpActionTimeoutAlarm.cancel();
+            mCallback.onPostDhcpAction();
+        }
+
         @Override
         public boolean processMessage(Message msg) {
             switch (msg.what) {
                 case CMD_STOP:
-                    transitionTo(mStoppedState);
+                    transitionTo(mStoppingState);
                     break;
 
                 case CMD_START:
@@ -1036,7 +1096,7 @@
 
                 case EVENT_NETLINK_LINKPROPERTIES_CHANGED:
                     if (!handleLinkPropertiesUpdate(SEND_CALLBACKS)) {
-                        transitionTo(mStoppedState);
+                        transitionTo(mStoppingState);
                     }
                     break;
 
@@ -1062,21 +1122,50 @@
                     break;
                 }
 
+                case EVENT_PROVISIONING_TIMEOUT:
+                    handleProvisioningFailure();
+                    break;
+
+                case EVENT_DHCPACTION_TIMEOUT:
+                    stopDhcpAction();
+                    break;
+
                 case DhcpClient.CMD_PRE_DHCP_ACTION:
                     if (VDBG) { Log.d(mTag, "onPreDhcpAction()"); }
-                    if (mConfiguration.mRequestedPreDhcpAction) {
-                        mCallback.onPreDhcpAction();
+                    if (mConfiguration.mRequestedPreDhcpActionMs > 0) {
+                        startDhcpAction();
                     } else {
                         sendMessage(EVENT_PRE_DHCP_ACTION_COMPLETE);
                     }
                     break;
 
+                case DhcpClient.CMD_CLEAR_LINKADDRESS:
+                    clearIPv4Address();
+                    break;
+
+                case DhcpClient.CMD_CONFIGURE_LINKADDRESS: {
+                    final LinkAddress ipAddress = (LinkAddress) msg.obj;
+                    if (setIPv4Address(ipAddress)) {
+                        mDhcpClient.sendMessage(DhcpClient.EVENT_LINKADDRESS_CONFIGURED);
+                    } else {
+                        Log.e(mTag, "Failed to set IPv4 address!");
+                        dispatchCallback(ProvisioningChange.LOST_PROVISIONING,
+                                new LinkProperties(mLinkProperties));
+                        transitionTo(mStoppingState);
+                    }
+                    break;
+                }
+
+                // This message is only received when:
+                //
+                //     a) initial address acquisition succeeds,
+                //     b) renew succeeds,
+                //     c) renew fails,
+                //
+                // but never when initial address acquisition fails. The latter
+                // condition is now governed by the provisioning timeout.
                 case DhcpClient.CMD_POST_DHCP_ACTION: {
-                    // Note that onPostDhcpAction() is likely to be
-                    // asynchronous, and thus there is no guarantee that we
-                    // will be able to observe any of its effects here.
-                    if (VDBG) { Log.d(mTag, "onPostDhcpAction()"); }
-                    mCallback.onPostDhcpAction();
+                    stopDhcpAction();
 
                     final DhcpResults dhcpResults = (DhcpResults) msg.obj;
                     switch (msg.arg1) {
@@ -1103,20 +1192,5 @@
             }
             return HANDLED;
         }
-
-        private boolean applyStaticIpConfig() {
-            final InterfaceConfiguration ifcg = new InterfaceConfiguration();
-            ifcg.setLinkAddress(mConfiguration.mStaticIpConfig.ipAddress);
-            ifcg.setInterfaceUp();
-            try {
-                mNwService.setInterfaceConfig(mInterfaceName, ifcg);
-                if (DBG) Log.d(mTag, "Static IP configuration succeeded");
-            } catch (IllegalStateException | RemoteException e) {
-                Log.e(mTag, "Static IP configuration failed: ", e);
-                return false;
-            }
-
-            return true;
-        }
     }
 }
diff --git a/services/print/java/com/android/server/print/PrintManagerService.java b/services/print/java/com/android/server/print/PrintManagerService.java
index 4d02928..1feb816 100644
--- a/services/print/java/com/android/server/print/PrintManagerService.java
+++ b/services/print/java/com/android/server/print/PrintManagerService.java
@@ -727,7 +727,7 @@
 
                 @Override
                 public void onPackageModified(String packageName) {
-                    if (!mUserManager.isUserUnlocked(getChangingUserId())) return;
+                    if (!mUserManager.isUserUnlockingOrUnlocked(getChangingUserId())) return;
                     UserState userState = getOrCreateUserStateLocked(getChangingUserId(), false);
 
                     synchronized (mLock) {
@@ -742,7 +742,7 @@
 
                 @Override
                 public void onPackageRemoved(String packageName, int uid) {
-                    if (!mUserManager.isUserUnlocked(getChangingUserId())) return;
+                    if (!mUserManager.isUserUnlockingOrUnlocked(getChangingUserId())) return;
                     UserState userState = getOrCreateUserStateLocked(getChangingUserId(), false);
 
                     synchronized (mLock) {
@@ -757,7 +757,7 @@
                 @Override
                 public boolean onHandleForceStop(Intent intent, String[] stoppedPackages,
                         int uid, boolean doit) {
-                    if (!mUserManager.isUserUnlocked(getChangingUserId())) return false;
+                    if (!mUserManager.isUserUnlockingOrUnlocked(getChangingUserId())) return false;
                     synchronized (mLock) {
                         // A background user/profile's print jobs are running but there is
                         // no UI shown. Hence, if the packages of such a user change we need
@@ -795,7 +795,7 @@
 
                 @Override
                 public void onPackageAdded(String packageName, int uid) {
-                    if (!mUserManager.isUserUnlocked(getChangingUserId())) return;
+                    if (!mUserManager.isUserUnlockingOrUnlocked(getChangingUserId())) return;
                     synchronized (mLock) {
                         if (hasPrintService(packageName)) {
                             UserState userState = getOrCreateUserStateLocked(getChangingUserId(),
@@ -812,7 +812,7 @@
         }
 
         private UserState getOrCreateUserStateLocked(int userId, boolean lowPriority) {
-            if (!mUserManager.isUserUnlocked(userId)) {
+            if (!mUserManager.isUserUnlockingOrUnlocked(userId)) {
                 throw new IllegalStateException(
                         "User " + userId + " must be unlocked for printing to be available");
             }
@@ -836,6 +836,8 @@
             BackgroundThread.getHandler().post(new Runnable() {
                 @Override
                 public void run() {
+                    if (!mUserManager.isUserUnlockingOrUnlocked(userId)) return;
+
                     UserState userState;
                     synchronized (mLock) {
                         userState = getOrCreateUserStateLocked(userId, true);
diff --git a/services/tests/servicestests/src/com/android/server/pm/ShortcutManagerTest.java b/services/tests/servicestests/src/com/android/server/pm/ShortcutManagerTest.java
index 5387f31..13518b5 100644
--- a/services/tests/servicestests/src/com/android/server/pm/ShortcutManagerTest.java
+++ b/services/tests/servicestests/src/com/android/server/pm/ShortcutManagerTest.java
@@ -36,6 +36,7 @@
 import static com.android.server.pm.shortcutmanagertest.ShortcutManagerTestUtils.assertDynamicOnly;
 import static com.android.server.pm.shortcutmanagertest.ShortcutManagerTestUtils.assertExpectException;
 import static com.android.server.pm.shortcutmanagertest.ShortcutManagerTestUtils.assertShortcutIds;
+import static com.android.server.pm.shortcutmanagertest.ShortcutManagerTestUtils.findShortcut;
 import static com.android.server.pm.shortcutmanagertest.ShortcutManagerTestUtils.hashSet;
 import static com.android.server.pm.shortcutmanagertest.ShortcutManagerTestUtils.list;
 import static com.android.server.pm.shortcutmanagertest.ShortcutManagerTestUtils.makeBundle;
@@ -644,6 +645,7 @@
         pi.applicationInfo.flags = ApplicationInfo.FLAG_INSTALLED
                 | ApplicationInfo.FLAG_ALLOW_BACKUP;
         pi.versionCode = version;
+        pi.applicationInfo.versionCode = version;
         pi.signatures = genSignatures(signatures);
 
         return pi;
@@ -657,6 +659,13 @@
         c.accept(mInjectedPackages.get(packageName));
     }
 
+    private void updatePackageVersion(String packageName, int increment) {
+        updatePackageInfo(packageName, pi -> {
+            pi.versionCode += increment;
+            pi.applicationInfo.versionCode += increment;
+        });
+    }
+
     private void uninstallPackage(int userId, String packageName) {
         if (ENABLE_DUMP) {
             Log.i(TAG, "Unnstall package " + packageName + " / " + userId);
@@ -1052,6 +1061,12 @@
         i.putExtra(Intent.EXTRA_REPLACING, true);
         return i;
     }
+    private Intent genPackageDataClear(String packageName, int userId) {
+        Intent i = new Intent(Intent.ACTION_PACKAGE_DATA_CLEARED);
+        i.setData(Uri.parse("package:" + packageName));
+        i.putExtra(Intent.EXTRA_USER_HANDLE, userId);
+        return i;
+    }
 
     private ShortcutInfo parceled(ShortcutInfo si) {
         Parcel p = Parcel.obtain();
@@ -3839,7 +3854,7 @@
 
         // Start uninstalling.
         uninstallPackage(USER_10, LAUNCHER_1);
-        mService.cleanupGonePackages(USER_10);
+        mService.checkPackageChanges(USER_10);
 
         assertDynamicAndPinned(getPackageShortcut(CALLING_PACKAGE_1, "s1", USER_0));
         assertDynamicAndPinned(getPackageShortcut(CALLING_PACKAGE_1, "s2", USER_0));
@@ -3859,7 +3874,7 @@
 
         // Uninstall.
         uninstallPackage(USER_10, CALLING_PACKAGE_1);
-        mService.cleanupGonePackages(USER_10);
+        mService.checkPackageChanges(USER_10);
 
         assertDynamicAndPinned(getPackageShortcut(CALLING_PACKAGE_1, "s1", USER_0));
         assertDynamicAndPinned(getPackageShortcut(CALLING_PACKAGE_1, "s2", USER_0));
@@ -3878,7 +3893,7 @@
         assertNull(getPackageShortcut(CALLING_PACKAGE_1, "s3", USER_10));
 
         uninstallPackage(USER_P0, LAUNCHER_1);
-        mService.cleanupGonePackages(USER_0);
+        mService.checkPackageChanges(USER_0);
 
         assertDynamicAndPinned(getPackageShortcut(CALLING_PACKAGE_1, "s1", USER_0));
         assertDynamicOnly(getPackageShortcut(CALLING_PACKAGE_1, "s2", USER_0));
@@ -3896,7 +3911,7 @@
         assertNull(getPackageShortcut(CALLING_PACKAGE_1, "s2", USER_10));
         assertNull(getPackageShortcut(CALLING_PACKAGE_1, "s3", USER_10));
 
-        mService.cleanupGonePackages(USER_P0);
+        mService.checkPackageChanges(USER_P0);
         
         assertDynamicAndPinned(getPackageShortcut(CALLING_PACKAGE_1, "s1", USER_0));
         assertDynamicOnly(getPackageShortcut(CALLING_PACKAGE_1, "s2", USER_0));
@@ -4150,6 +4165,266 @@
         assertFalse(bitmapDirectoryExists(CALLING_PACKAGE_3, USER_10));
     }
 
+    /** Almost ame as testHandlePackageDelete, except it doesn't uninstall packages. */
+    public void testHandlePackageClearData() {
+        final Icon bmp32x32 = Icon.createWithBitmap(BitmapFactory.decodeResource(
+                getTestContext().getResources(), R.drawable.black_32x32));
+        setCaller(CALLING_PACKAGE_1, USER_0);
+        assertTrue(mManager.addDynamicShortcuts(list(
+                makeShortcutWithIcon("s1", bmp32x32), makeShortcutWithIcon("s2", bmp32x32)
+        )));
+
+        setCaller(CALLING_PACKAGE_2, USER_0);
+        assertTrue(mManager.addDynamicShortcuts(list(makeShortcutWithIcon("s1", bmp32x32))));
+
+        setCaller(CALLING_PACKAGE_3, USER_0);
+        assertTrue(mManager.addDynamicShortcuts(list(makeShortcutWithIcon("s1", bmp32x32))));
+
+        setCaller(CALLING_PACKAGE_1, USER_10);
+        assertTrue(mManager.addDynamicShortcuts(list(makeShortcutWithIcon("s1", bmp32x32))));
+
+        setCaller(CALLING_PACKAGE_2, USER_10);
+        assertTrue(mManager.addDynamicShortcuts(list(makeShortcutWithIcon("s1", bmp32x32))));
+
+        setCaller(CALLING_PACKAGE_3, USER_10);
+        assertTrue(mManager.addDynamicShortcuts(list(makeShortcutWithIcon("s1", bmp32x32))));
+
+        assertNotNull(mService.getPackageShortcutForTest(CALLING_PACKAGE_1, "s1", USER_0));
+        assertNotNull(mService.getPackageShortcutForTest(CALLING_PACKAGE_2, "s1", USER_0));
+        assertNotNull(mService.getPackageShortcutForTest(CALLING_PACKAGE_3, "s1", USER_0));
+        assertNotNull(mService.getPackageShortcutForTest(CALLING_PACKAGE_1, "s1", USER_10));
+        assertNotNull(mService.getPackageShortcutForTest(CALLING_PACKAGE_2, "s1", USER_10));
+        assertNotNull(mService.getPackageShortcutForTest(CALLING_PACKAGE_3, "s1", USER_10));
+
+        assertTrue(bitmapDirectoryExists(CALLING_PACKAGE_1, USER_0));
+        assertTrue(bitmapDirectoryExists(CALLING_PACKAGE_2, USER_0));
+        assertTrue(bitmapDirectoryExists(CALLING_PACKAGE_3, USER_0));
+        assertTrue(bitmapDirectoryExists(CALLING_PACKAGE_1, USER_10));
+        assertTrue(bitmapDirectoryExists(CALLING_PACKAGE_2, USER_10));
+        assertTrue(bitmapDirectoryExists(CALLING_PACKAGE_3, USER_10));
+
+        mService.mPackageMonitor.onReceive(getTestContext(),
+                genPackageDataClear(CALLING_PACKAGE_1, USER_0));
+
+        assertNull(mService.getPackageShortcutForTest(CALLING_PACKAGE_1, "s1", USER_0));
+        assertNotNull(mService.getPackageShortcutForTest(CALLING_PACKAGE_2, "s1", USER_0));
+        assertNotNull(mService.getPackageShortcutForTest(CALLING_PACKAGE_3, "s1", USER_0));
+        assertNotNull(mService.getPackageShortcutForTest(CALLING_PACKAGE_1, "s1", USER_10));
+        assertNotNull(mService.getPackageShortcutForTest(CALLING_PACKAGE_2, "s1", USER_10));
+        assertNotNull(mService.getPackageShortcutForTest(CALLING_PACKAGE_3, "s1", USER_10));
+
+        assertFalse(bitmapDirectoryExists(CALLING_PACKAGE_1, USER_0));
+        assertTrue(bitmapDirectoryExists(CALLING_PACKAGE_2, USER_0));
+        assertTrue(bitmapDirectoryExists(CALLING_PACKAGE_3, USER_0));
+        assertTrue(bitmapDirectoryExists(CALLING_PACKAGE_1, USER_10));
+        assertTrue(bitmapDirectoryExists(CALLING_PACKAGE_2, USER_10));
+        assertTrue(bitmapDirectoryExists(CALLING_PACKAGE_3, USER_10));
+
+        mService.mPackageMonitor.onReceive(getTestContext(),
+                genPackageDataClear(CALLING_PACKAGE_2, USER_10));
+
+        assertNull(mService.getPackageShortcutForTest(CALLING_PACKAGE_1, "s1", USER_0));
+        assertNotNull(mService.getPackageShortcutForTest(CALLING_PACKAGE_2, "s1", USER_0));
+        assertNotNull(mService.getPackageShortcutForTest(CALLING_PACKAGE_3, "s1", USER_0));
+        assertNotNull(mService.getPackageShortcutForTest(CALLING_PACKAGE_1, "s1", USER_10));
+        assertNull(mService.getPackageShortcutForTest(CALLING_PACKAGE_2, "s1", USER_10));
+        assertNotNull(mService.getPackageShortcutForTest(CALLING_PACKAGE_3, "s1", USER_10));
+
+        assertFalse(bitmapDirectoryExists(CALLING_PACKAGE_1, USER_0));
+        assertTrue(bitmapDirectoryExists(CALLING_PACKAGE_2, USER_0));
+        assertTrue(bitmapDirectoryExists(CALLING_PACKAGE_3, USER_0));
+        assertTrue(bitmapDirectoryExists(CALLING_PACKAGE_1, USER_10));
+        assertFalse(bitmapDirectoryExists(CALLING_PACKAGE_2, USER_10));
+        assertTrue(bitmapDirectoryExists(CALLING_PACKAGE_3, USER_10));
+    }
+
+    public void testHandlePackageUpdate() throws Throwable {
+
+        // Set up shortcuts and launchers.
+
+        final Icon res32x32 = Icon.createWithResource(getTestContext(), R.drawable.black_32x32);
+        final Icon bmp32x32 = Icon.createWithBitmap(BitmapFactory.decodeResource(
+                getTestContext().getResources(), R.drawable.black_32x32));
+
+        runWithCaller(CALLING_PACKAGE_1, USER_0, () -> {
+            assertTrue(mManager.setDynamicShortcuts(list(
+                    makeShortcut("s1"),
+                    makeShortcutWithIcon("s2", res32x32),
+                    makeShortcutWithIcon("s3", res32x32),
+                    makeShortcutWithIcon("s4", bmp32x32))));
+        });
+        runWithCaller(CALLING_PACKAGE_2, USER_0, () -> {
+            assertTrue(mManager.setDynamicShortcuts(list(
+                    makeShortcut("s1"),
+                    makeShortcutWithIcon("s2", bmp32x32))));
+        });
+        runWithCaller(CALLING_PACKAGE_3, USER_0, () -> {
+            assertTrue(mManager.setDynamicShortcuts(list(
+                    makeShortcutWithIcon("s1", res32x32))));
+        });
+
+        runWithCaller(CALLING_PACKAGE_1, USER_10, () -> {
+            assertTrue(mManager.setDynamicShortcuts(list(
+                    makeShortcutWithIcon("s1", res32x32),
+                    makeShortcutWithIcon("s2", res32x32))));
+        });
+        runWithCaller(CALLING_PACKAGE_2, USER_10, () -> {
+            assertTrue(mManager.setDynamicShortcuts(list(
+                    makeShortcutWithIcon("s1", bmp32x32),
+                    makeShortcutWithIcon("s2", bmp32x32))));
+        });
+
+        LauncherApps.Callback c0 = mock(LauncherApps.Callback.class);
+        LauncherApps.Callback c10 = mock(LauncherApps.Callback.class);
+
+        runWithCaller(LAUNCHER_1, USER_0, () -> {
+            mLauncherApps.registerCallback(c0, new Handler(Looper.getMainLooper()));
+        });
+        runWithCaller(LAUNCHER_1, USER_10, () -> {
+            mLauncherApps.registerCallback(c10, new Handler(Looper.getMainLooper()));
+        });
+
+        mInjectedCurrentTimeLillis = START_TIME + 100;
+
+        ArgumentCaptor<List> shortcuts;
+
+        // First, call the event without updating the versions.
+        reset(c0);
+        reset(c10);
+
+        mService.mPackageMonitor.onReceive(getTestContext(),
+                genPackageUpdateIntent(CALLING_PACKAGE_1, USER_0));
+        mService.mPackageMonitor.onReceive(getTestContext(),
+                genPackageUpdateIntent(CALLING_PACKAGE_1, USER_10));
+
+        waitOnMainThread();
+
+        // Version not changed, so no callback.
+        verify(c0, times(0)).onShortcutsChanged(
+                eq(CALLING_PACKAGE_1),
+                any(List.class),
+                any(UserHandle.class));
+        verify(c10, times(0)).onShortcutsChanged(
+                eq(CALLING_PACKAGE_1),
+                any(List.class),
+                any(UserHandle.class));
+
+        // Next, update the version info for package 1.
+        reset(c0);
+        reset(c10);
+        updatePackageVersion(CALLING_PACKAGE_1, 1);
+
+        // Then send the broadcast, to only user-0.
+        mService.mPackageMonitor.onReceive(getTestContext(),
+                genPackageUpdateIntent(CALLING_PACKAGE_1, USER_0));
+
+        waitOnMainThread();
+
+        // User-0 should get the notification.
+        shortcuts = ArgumentCaptor.forClass(List.class);
+        verify(c0).onShortcutsChanged(
+                eq(CALLING_PACKAGE_1),
+                shortcuts.capture(),
+                eq(HANDLE_USER_0));
+
+        // User-10 shouldn't yet get the notification.
+        verify(c10, times(0)).onShortcutsChanged(
+                eq(CALLING_PACKAGE_1),
+                any(List.class),
+                any(UserHandle.class));
+        assertShortcutIds(shortcuts.getValue(), "s1", "s2", "s3", "s4");
+        assertEquals(START_TIME,
+                findShortcut(shortcuts.getValue(), "s1").getLastChangedTimestamp());
+        assertEquals(START_TIME + 100,
+                findShortcut(shortcuts.getValue(), "s2").getLastChangedTimestamp());
+        assertEquals(START_TIME + 100,
+                findShortcut(shortcuts.getValue(), "s3").getLastChangedTimestamp());
+        assertEquals(START_TIME,
+                findShortcut(shortcuts.getValue(), "s4").getLastChangedTimestamp());
+
+        // Next, send unlock even on user-10.  Now we scan packages on this user and send a
+        // notification to the launcher.
+        mInjectedCurrentTimeLillis = START_TIME + 200;
+
+        when(mMockUserManager.isUserRunning(eq(USER_10))).thenReturn(true);
+
+        reset(c0);
+        reset(c10);
+        mService.handleUnlockUser(USER_10);
+
+        shortcuts = ArgumentCaptor.forClass(List.class);
+        verify(c0, times(0)).onShortcutsChanged(
+                eq(CALLING_PACKAGE_1),
+                any(List.class),
+                any(UserHandle.class));
+
+        verify(c10).onShortcutsChanged(
+                eq(CALLING_PACKAGE_1),
+                shortcuts.capture(),
+                eq(HANDLE_USER_10));
+
+        assertShortcutIds(shortcuts.getValue(), "s1", "s2");
+        assertEquals(START_TIME + 200,
+                findShortcut(shortcuts.getValue(), "s1").getLastChangedTimestamp());
+        assertEquals(START_TIME + 200,
+                findShortcut(shortcuts.getValue(), "s2").getLastChangedTimestamp());
+
+
+        // Do the same thing for package 2, which doesn't have resource icons.
+        mInjectedCurrentTimeLillis = START_TIME + 300;
+
+        reset(c0);
+        reset(c10);
+        updatePackageVersion(CALLING_PACKAGE_2, 10);
+
+        // Then send the broadcast, to only user-0.
+        mService.mPackageMonitor.onReceive(getTestContext(),
+                genPackageUpdateIntent(CALLING_PACKAGE_2, USER_0));
+        mService.handleUnlockUser(USER_10);
+
+        waitOnMainThread();
+
+        verify(c0, times(0)).onShortcutsChanged(
+                eq(CALLING_PACKAGE_1),
+                any(List.class),
+                any(UserHandle.class));
+
+        verify(c10, times(0)).onShortcutsChanged(
+                eq(CALLING_PACKAGE_1),
+                any(List.class),
+                any(UserHandle.class));
+
+        // Do the same thing for package 3
+        mInjectedCurrentTimeLillis = START_TIME + 400;
+
+        reset(c0);
+        reset(c10);
+        updatePackageVersion(CALLING_PACKAGE_3, 100);
+
+        // Then send the broadcast, to only user-0.
+        mService.mPackageMonitor.onReceive(getTestContext(),
+                genPackageUpdateIntent(CALLING_PACKAGE_3, USER_0));
+        mService.handleUnlockUser(USER_10);
+
+        waitOnMainThread();
+
+        shortcuts = ArgumentCaptor.forClass(List.class);
+        verify(c0).onShortcutsChanged(
+                eq(CALLING_PACKAGE_3),
+                shortcuts.capture(),
+                eq(HANDLE_USER_0));
+
+        // User 10 doesn't have package 3, so no callback.
+        verify(c10, times(0)).onShortcutsChanged(
+                eq(CALLING_PACKAGE_3),
+                any(List.class),
+                any(UserHandle.class));
+
+        assertShortcutIds(shortcuts.getValue(), "s1");
+        assertEquals(START_TIME + 400,
+                findShortcut(shortcuts.getValue(), "s1").getLastChangedTimestamp());
+    }
+
     private void backupAndRestore() {
         int prevUid = mInjectedCallingUid;
 
diff --git a/services/tests/shortcutmanagerutils/src/com/android/server/pm/shortcutmanagertest/ShortcutManagerTestUtils.java b/services/tests/shortcutmanagerutils/src/com/android/server/pm/shortcutmanagertest/ShortcutManagerTestUtils.java
index d09b62c..ad49c2f 100644
--- a/services/tests/shortcutmanagerutils/src/com/android/server/pm/shortcutmanagertest/ShortcutManagerTestUtils.java
+++ b/services/tests/shortcutmanagerutils/src/com/android/server/pm/shortcutmanagertest/ShortcutManagerTestUtils.java
@@ -413,6 +413,16 @@
         }
     }
 
+    public static ShortcutInfo findShortcut(List<ShortcutInfo> list, String id) {
+        for (ShortcutInfo si : list) {
+            if (si.getId().equals(id)) {
+                return si;
+            }
+        }
+        fail("Shortcut " + id + " not found in the list");
+        return null;
+    }
+
     public static Bitmap pfdToBitmap(ParcelFileDescriptor pfd) {
         assertNotNull(pfd);
         try {
diff --git a/services/voiceinteraction/java/com/android/server/soundtrigger/SoundTriggerHelper.java b/services/voiceinteraction/java/com/android/server/soundtrigger/SoundTriggerHelper.java
index 612e5e8..f58de26 100644
--- a/services/voiceinteraction/java/com/android/server/soundtrigger/SoundTriggerHelper.java
+++ b/services/voiceinteraction/java/com/android/server/soundtrigger/SoundTriggerHelper.java
@@ -501,7 +501,10 @@
                     if (status != STATUS_OK) {
                         Slog.w(TAG, "Error stopping keyphrase model: " + model.getHandle());
                     }
-                    model.clearState();
+                    model.setStopped();
+                    model.setRequested(false);
+                    model.clearCallback();
+                    model.setRecognitionConfig(null);
                 }
             }
             internalClearGlobalStateLocked();
diff --git a/telephony/java/android/telephony/CarrierConfigManager.java b/telephony/java/android/telephony/CarrierConfigManager.java
index e8df24e..8f09bda 100644
--- a/telephony/java/android/telephony/CarrierConfigManager.java
+++ b/telephony/java/android/telephony/CarrierConfigManager.java
@@ -425,7 +425,12 @@
      */
     public static final String KEY_CARRIER_METERED_APN_TYPES_STRINGS =
             "carrier_metered_apn_types_strings";
-
+    /**
+     * Default APN types that are roamig-metered by the carrier
+     * @hide
+     */
+    public static final String KEY_CARRIER_METERED_ROAMING_APN_TYPES_STRINGS =
+            "carrier_metered_roaming_apn_types_strings";
     /**
      * CDMA carrier ERI (Enhanced Roaming Indicator) file name
      * @hide
@@ -758,6 +763,8 @@
         sDefaults.putInt(KEY_DURATION_BLOCKING_DISABLED_AFTER_EMERGENCY_INT, 7200);
         sDefaults.putStringArray(KEY_CARRIER_METERED_APN_TYPES_STRINGS,
                 new String[]{"default", "mms", "dun", "supl"});
+        sDefaults.putStringArray(KEY_CARRIER_METERED_ROAMING_APN_TYPES_STRINGS,
+                new String[]{"default", "mms", "dun", "supl"});
 
         sDefaults.putStringArray(KEY_GSM_ROAMING_NETWORKS_STRING_ARRAY, null);
         sDefaults.putStringArray(KEY_GSM_NONROAMING_NETWORKS_STRING_ARRAY, null);
diff --git a/telephony/java/android/telephony/TelephonyManager.java b/telephony/java/android/telephony/TelephonyManager.java
index 343b110..5fed594 100644
--- a/telephony/java/android/telephony/TelephonyManager.java
+++ b/telephony/java/android/telephony/TelephonyManager.java
@@ -24,6 +24,7 @@
 import android.content.ContentResolver;
 import android.content.Context;
 import android.content.Intent;
+import android.net.ConnectivityManager;
 import android.net.Uri;
 import android.os.BatteryStats;
 import android.os.ResultReceiver;
@@ -183,6 +184,7 @@
 
     /**
      * Returns the number of phones available.
+     * Returns 0 if none of voice, sms, data is not supported
      * Returns 1 for Single standby mode (Single SIM functionality)
      * Returns 2 for Dual standby mode.(Dual SIM functionality)
      */
@@ -190,7 +192,28 @@
         int phoneCount = 1;
         switch (getMultiSimConfiguration()) {
             case UNKNOWN:
-                phoneCount = 1;
+                // if voice or sms or data is supported, return 1 otherwise 0
+                if (isVoiceCapable() || isSmsCapable()) {
+                    phoneCount = 1;
+                } else {
+                    // todo: try to clean this up further by getting rid of the nested conditions
+                    if (mContext == null) {
+                        phoneCount = 1;
+                    } else {
+                        // check for data support
+                        ConnectivityManager cm = (ConnectivityManager)mContext.getSystemService(
+                                Context.CONNECTIVITY_SERVICE);
+                        if (cm == null) {
+                            phoneCount = 1;
+                        } else {
+                            if (cm.isNetworkSupported(ConnectivityManager.TYPE_MOBILE)) {
+                                phoneCount = 1;
+                            } else {
+                                phoneCount = 0;
+                            }
+                        }
+                    }
+                }
                 break;
             case DSDS:
             case DSDA:
diff --git a/tests/HwAccelerationTest/AndroidManifest.xml b/tests/HwAccelerationTest/AndroidManifest.xml
index b9e9ac8..3785cdc 100644
--- a/tests/HwAccelerationTest/AndroidManifest.xml
+++ b/tests/HwAccelerationTest/AndroidManifest.xml
@@ -383,6 +383,15 @@
         </activity>
 
         <activity
+                android:name="VideoViewCaptureActivity"
+                android:label="SurfaceView/GetBitmap with Video source">
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+                <category android:name="com.android.test.hwui.TEST" />
+            </intent-filter>
+        </activity>
+
+        <activity
                 android:name="GLTextureViewActivity"
                 android:label="TextureView/OpenGL">
             <intent-filter>
diff --git a/tests/HwAccelerationTest/res/drawable/default_wallpaper.png b/tests/HwAccelerationTest/res/drawable/default_wallpaper.png
index 187a6c0..91ad252 100644
--- a/tests/HwAccelerationTest/res/drawable/default_wallpaper.png
+++ b/tests/HwAccelerationTest/res/drawable/default_wallpaper.png
Binary files differ
diff --git a/tests/HwAccelerationTest/res/raw/colorgrid_video.mp4 b/tests/HwAccelerationTest/res/raw/colorgrid_video.mp4
new file mode 100644
index 0000000..1be8bee
--- /dev/null
+++ b/tests/HwAccelerationTest/res/raw/colorgrid_video.mp4
Binary files differ
diff --git a/tests/HwAccelerationTest/src/com/android/test/hwui/GetBitmapSurfaceViewActivity.java b/tests/HwAccelerationTest/src/com/android/test/hwui/GetBitmapSurfaceViewActivity.java
index d3cd7db..6fe2cb4 100644
--- a/tests/HwAccelerationTest/src/com/android/test/hwui/GetBitmapSurfaceViewActivity.java
+++ b/tests/HwAccelerationTest/src/com/android/test/hwui/GetBitmapSurfaceViewActivity.java
@@ -18,13 +18,12 @@
 
 import android.app.Activity;
 import android.graphics.Bitmap;
-import android.graphics.PixelCopy;
-import android.graphics.PixelCopy.OnPixelCopyFinished;
-import android.graphics.PixelCopy.Response;
 import android.hardware.Camera;
 import android.os.Bundle;
 import android.os.Environment;
 import android.view.Gravity;
+import android.view.PixelCopy;
+import android.view.Surface;
 import android.view.SurfaceHolder;
 import android.view.SurfaceView;
 import android.view.View;
@@ -32,7 +31,6 @@
 import android.widget.FrameLayout;
 import android.widget.Toast;
 
-import java.io.FileNotFoundException;
 import java.io.FileOutputStream;
 import java.io.IOException;
 
@@ -52,12 +50,25 @@
         Button button = new Button(this);
         button.setText("Copy bitmap to /sdcard/surfaceview.png");
         button.setOnClickListener((View v) -> {
-            Bitmap b = Bitmap.createBitmap(
-                            mSurfaceView.getWidth(),
-                            mSurfaceView.getHeight(),
-                            Bitmap.Config.ARGB_8888);
+            final Bitmap b = Bitmap.createBitmap(
+                    mSurfaceView.getWidth(), mSurfaceView.getHeight(),
+                    Bitmap.Config.ARGB_8888);
             PixelCopy.request(mSurfaceView, b,
-                    mOnCopyFinished, mSurfaceView.getHandler());
+                    (int result) -> {
+                        if (result != PixelCopy.SUCCESS) {
+                            Toast.makeText(GetBitmapSurfaceViewActivity.this,
+                                    "Failed to copy", Toast.LENGTH_SHORT).show();
+                            return;
+                        }
+                        try {
+                            try (FileOutputStream out = new FileOutputStream(
+                                    Environment.getExternalStorageDirectory() + "/surfaceview.png");) {
+                                b.compress(Bitmap.CompressFormat.PNG, 100, out);
+                            }
+                        } catch (Exception e) {
+                            // Ignore
+                        }
+                    }, mSurfaceView.getHandler());
         });
 
         content.addView(mSurfaceView, new FrameLayout.LayoutParams(500, 400, Gravity.CENTER));
@@ -67,25 +78,6 @@
         setContentView(content);
     }
 
-    private final OnPixelCopyFinished mOnCopyFinished = new OnPixelCopyFinished() {
-        @Override
-        public void onPixelCopyFinished(Response response) {
-            if (!response.success) {
-                Toast.makeText(GetBitmapSurfaceViewActivity.this,
-                        "Failed to copy", Toast.LENGTH_SHORT).show();
-                return;
-            }
-            try {
-                try (FileOutputStream out = new FileOutputStream(
-                        Environment.getExternalStorageDirectory() + "/surfaceview.png");) {
-                    response.bitmap.compress(Bitmap.CompressFormat.PNG, 100, out);
-                }
-            } catch (Exception e) {
-                // Ignore
-            }
-        }
-    };
-
     @Override
     public void surfaceCreated(SurfaceHolder holder) {
         mCamera = Camera.open();
@@ -96,9 +88,42 @@
             android.util.Log.e("TextureView", "Cannot set preview texture target!", t);
         }
 
+        setCameraDisplayOrientation(this, 0, mCamera);
         mCamera.startPreview();
     }
 
+    public static void setCameraDisplayOrientation(Activity activity,
+            int cameraId, android.hardware.Camera camera) {
+        android.hardware.Camera.CameraInfo info = new android.hardware.Camera.CameraInfo();
+        android.hardware.Camera.getCameraInfo(cameraId, info);
+        int rotation = activity.getWindowManager().getDefaultDisplay()
+                .getRotation();
+        int degrees = 0;
+        switch (rotation) {
+            case Surface.ROTATION_0:
+                degrees = 0;
+                break;
+            case Surface.ROTATION_90:
+                degrees = 90;
+                break;
+            case Surface.ROTATION_180:
+                degrees = 180;
+                break;
+            case Surface.ROTATION_270:
+                degrees = 270;
+                break;
+        }
+
+        int result;
+        if (info.facing == Camera.CameraInfo.CAMERA_FACING_FRONT) {
+            result = (info.orientation + degrees) % 360;
+            result = (360 - result) % 360; // compensate the mirror
+        } else { // back-facing
+            result = (info.orientation - degrees + 360) % 360;
+        }
+        camera.setDisplayOrientation(result);
+    }
+
     @Override
     public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
     }
diff --git a/tests/HwAccelerationTest/src/com/android/test/hwui/HardwareCanvasSurfaceViewActivity.java b/tests/HwAccelerationTest/src/com/android/test/hwui/HardwareCanvasSurfaceViewActivity.java
index 5c30fab..086a8f0 100644
--- a/tests/HwAccelerationTest/src/com/android/test/hwui/HardwareCanvasSurfaceViewActivity.java
+++ b/tests/HwAccelerationTest/src/com/android/test/hwui/HardwareCanvasSurfaceViewActivity.java
@@ -20,12 +20,10 @@
 import android.graphics.Bitmap;
 import android.graphics.Canvas;
 import android.graphics.Paint;
-import android.graphics.PixelCopy;
-import android.graphics.PixelCopy.OnPixelCopyFinished;
-import android.graphics.PixelCopy.Response;
 import android.graphics.PorterDuff;
 import android.os.Bundle;
 import android.os.Environment;
+import android.view.PixelCopy;
 import android.view.Surface;
 import android.view.SurfaceHolder;
 import android.view.SurfaceHolder.Callback;
@@ -36,9 +34,7 @@
 import android.widget.LinearLayout;
 import android.widget.Toast;
 
-import java.io.FileNotFoundException;
 import java.io.FileOutputStream;
-import java.io.IOException;
 
 public class HardwareCanvasSurfaceViewActivity extends Activity implements Callback {
     private SurfaceView mSurfaceView;
@@ -56,12 +52,25 @@
         Button button = new Button(this);
         button.setText("Copy bitmap to /sdcard/surfaceview.png");
         button.setOnClickListener((View v) -> {
-            Bitmap b = Bitmap.createBitmap(
-                            mSurfaceView.getWidth(),
-                            mSurfaceView.getHeight(),
-                            Bitmap.Config.ARGB_8888);
+            final Bitmap b = Bitmap.createBitmap(
+                    mSurfaceView.getWidth(), mSurfaceView.getHeight(),
+                    Bitmap.Config.ARGB_8888);
             PixelCopy.request(mSurfaceView, b,
-                    mOnCopyFinished, mSurfaceView.getHandler());
+                    (int result) -> {
+                        if (result != PixelCopy.SUCCESS) {
+                            Toast.makeText(HardwareCanvasSurfaceViewActivity.this,
+                                    "Failed to copy", Toast.LENGTH_SHORT).show();
+                            return;
+                        }
+                        try {
+                            try (FileOutputStream out = new FileOutputStream(
+                                    Environment.getExternalStorageDirectory() + "/surfaceview.png");) {
+                                b.compress(Bitmap.CompressFormat.PNG, 100, out);
+                            }
+                        } catch (Exception e) {
+                            // Ignore
+                        }
+                    }, mSurfaceView.getHandler());
         });
 
         LinearLayout layout = new LinearLayout(this);
@@ -77,25 +86,6 @@
         setContentView(content);
     }
 
-    private final OnPixelCopyFinished mOnCopyFinished = new OnPixelCopyFinished() {
-        @Override
-        public void onPixelCopyFinished(Response response) {
-            if (!response.success) {
-                Toast.makeText(HardwareCanvasSurfaceViewActivity.this,
-                        "Failed to copy", Toast.LENGTH_SHORT).show();
-                return;
-            }
-            try {
-                try (FileOutputStream out = new FileOutputStream(
-                        Environment.getExternalStorageDirectory() + "/surfaceview.png");) {
-                    response.bitmap.compress(Bitmap.CompressFormat.PNG, 100, out);
-                }
-            } catch (Exception e) {
-                // Ignore
-            }
-        }
-    };
-
     @Override
     public void surfaceCreated(SurfaceHolder holder) {
         mThread = new RenderingThread(holder.getSurface());
diff --git a/tests/HwAccelerationTest/src/com/android/test/hwui/MovingSurfaceViewActivity.java b/tests/HwAccelerationTest/src/com/android/test/hwui/MovingSurfaceViewActivity.java
index cd15ef1..fa25b45 100644
--- a/tests/HwAccelerationTest/src/com/android/test/hwui/MovingSurfaceViewActivity.java
+++ b/tests/HwAccelerationTest/src/com/android/test/hwui/MovingSurfaceViewActivity.java
@@ -20,33 +20,36 @@
 import android.app.Activity;
 import android.content.Context;
 import android.graphics.Canvas;
+import android.graphics.Color;
 import android.os.Bundle;
-import android.util.Log;
 import android.view.Gravity;
 import android.view.SurfaceHolder;
 import android.view.SurfaceHolder.Callback;
 import android.view.SurfaceView;
-import android.view.View;
 import android.view.animation.LinearInterpolator;
 import android.widget.FrameLayout;
 
 public class MovingSurfaceViewActivity extends Activity implements Callback {
-    static final String TAG = "MovingSurfaceView";
     SurfaceView mSurfaceView;
     ObjectAnimator mAnimator;
 
     class MySurfaceView extends SurfaceView {
-        boolean mSlowToggled;
+        boolean mSlow;
+        boolean mScaled;
+        int mToggle = 0;
 
         public MySurfaceView(Context context) {
             super(context);
-            setOnClickListener(new OnClickListener() {
-                @Override
-                public void onClick(View v) {
-                    mSlowToggled = !mSlowToggled;
-                    Log.d(TAG, "SLOW MODE: " + mSlowToggled);
-                    invalidate();
-                }
+            setOnClickListener(v -> {
+                mToggle = (mToggle + 1) % 4;
+                mSlow = (mToggle & 0x2) != 0;
+                mScaled = (mToggle & 0x1) != 0;
+
+                mSurfaceView.setScaleX(mScaled ? 1.6f : 1f);
+                mSurfaceView.setScaleY(mScaled ? 0.8f : 1f);
+
+                setTitle("Slow=" + mSlow + ", scaled=" + mScaled);
+                invalidate();
             });
             setWillNotDraw(false);
         }
@@ -54,7 +57,7 @@
         @Override
         public void draw(Canvas canvas) {
             super.draw(canvas);
-            if (mSlowToggled) {
+            if (mSlow) {
                 try {
                     Thread.sleep(16);
                 } catch (InterruptedException e) {}
@@ -63,7 +66,7 @@
 
         public void setMyTranslationY(float ty) {
             setTranslationY(ty);
-            if (mSlowToggled) {
+            if (mSlow) {
                 invalidate();
             }
         }
@@ -86,7 +89,7 @@
         int size = (int) (200 * density);
 
         content.addView(mSurfaceView, new FrameLayout.LayoutParams(
-                size, size, Gravity.CENTER));
+                size, size, Gravity.CENTER_HORIZONTAL | Gravity.TOP));
         mAnimator = ObjectAnimator.ofFloat(mSurfaceView, "myTranslationY",
                 0, size);
         mAnimator.setRepeatMode(ObjectAnimator.REVERSE);
@@ -103,7 +106,7 @@
     @Override
     public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
         Canvas canvas = holder.lockCanvas();
-        canvas.drawARGB(0xFF, 0x00, 0xFF, 0x00);
+        canvas.drawColor(Color.WHITE);
         holder.unlockCanvasAndPost(canvas);
     }
 
diff --git a/tests/HwAccelerationTest/src/com/android/test/hwui/VideoViewCaptureActivity.java b/tests/HwAccelerationTest/src/com/android/test/hwui/VideoViewCaptureActivity.java
new file mode 100644
index 0000000..b87be80
--- /dev/null
+++ b/tests/HwAccelerationTest/src/com/android/test/hwui/VideoViewCaptureActivity.java
@@ -0,0 +1,89 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.test.hwui;
+
+import android.app.Activity;
+import android.graphics.Bitmap;
+import android.net.Uri;
+import android.os.Bundle;
+import android.os.Environment;
+import android.view.PixelCopy;
+import android.view.View;
+import android.widget.Button;
+import android.widget.FrameLayout;
+import android.widget.LinearLayout;
+import android.widget.Toast;
+import android.widget.VideoView;
+
+import java.io.FileOutputStream;
+
+public class VideoViewCaptureActivity extends Activity {
+    private VideoView mVideoView;
+    private int mVideoWidth, mVideoHeight;
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        mVideoView = new VideoView(this);
+        mVideoView.setOnPreparedListener(mp -> {
+            mp.setLooping(true);
+            mVideoWidth = mp.getVideoWidth();
+            mVideoHeight = mp.getVideoHeight();
+            mVideoView.start();
+        });
+
+        Uri uri = Uri.parse("android.resource://com.android.test.hwui/" + R.raw.colorgrid_video);
+        mVideoView.setVideoURI(uri);
+
+        Button button = new Button(this);
+        button.setText("Copy bitmap to /sdcard/surfaceview.png");
+        button.setOnClickListener((View v) -> {
+            final Bitmap b = Bitmap.createBitmap(
+                    mVideoWidth, mVideoHeight,
+                    Bitmap.Config.ARGB_8888);
+            PixelCopy.request(mVideoView, b,
+                    (int result) -> {
+                        if (result != PixelCopy.SUCCESS) {
+                            Toast.makeText(VideoViewCaptureActivity.this,
+                                    "Failed to copy", Toast.LENGTH_SHORT).show();
+                            return;
+                        }
+                        try {
+                            try (FileOutputStream out = new FileOutputStream(
+                                    Environment.getExternalStorageDirectory() + "/surfaceview.png");) {
+                                b.compress(Bitmap.CompressFormat.PNG, 100, out);
+                            }
+                        } catch (Exception e) {
+                            // Ignore
+                        }
+                    }, mVideoView.getHandler());
+        });
+
+        FrameLayout content = new FrameLayout(this);
+        LinearLayout layout = new LinearLayout(this);
+        layout.setOrientation(LinearLayout.VERTICAL);
+        layout.addView(button, LinearLayout.LayoutParams.MATCH_PARENT,
+                LinearLayout.LayoutParams.WRAP_CONTENT);
+        layout.addView(mVideoView, LinearLayout.LayoutParams.MATCH_PARENT,
+                LinearLayout.LayoutParams.MATCH_PARENT);
+
+        content.addView(layout, new FrameLayout.LayoutParams(
+                FrameLayout.LayoutParams.MATCH_PARENT,
+                FrameLayout.LayoutParams.MATCH_PARENT));
+        setContentView(content);
+    }
+}
diff --git a/tools/aapt/Bundle.h b/tools/aapt/Bundle.h
index ca06ac4..653c1b4 100644
--- a/tools/aapt/Bundle.h
+++ b/tools/aapt/Bundle.h
@@ -55,7 +55,7 @@
           mCompressionMethod(0), mJunkPath(false), mOutputAPKFile(NULL),
           mManifestPackageNameOverride(NULL), mInstrumentationPackageNameOverride(NULL),
           mAutoAddOverlay(false), mGenDependencies(false), mNoVersionVectors(false),
-          mCrunchedOutputDir(NULL), mProguardFile(NULL),
+          mCrunchedOutputDir(NULL), mProguardFile(NULL), mMainDexProguardFile(NULL),
           mAndroidManifestFile(NULL), mPublicOutputFile(NULL),
           mRClassDir(NULL), mResourceIntermediatesDir(NULL), mManifestMinSdkVersion(NULL),
           mMinSdkVersion(NULL), mTargetSdkVersion(NULL), mMaxSdkVersion(NULL),
@@ -146,6 +146,8 @@
     void setCrunchedOutputDir(const char* dir) { mCrunchedOutputDir = dir; }
     const char* getProguardFile() const { return mProguardFile; }
     void setProguardFile(const char* file) { mProguardFile = file; }
+    const char* getMainDexProguardFile() const { return mMainDexProguardFile; }
+    void setMainDexProguardFile(const char* file) { mMainDexProguardFile = file; }
     const android::Vector<const char*>& getResourceSourceDirs() const { return mResourceSourceDirs; }
     void addResourceSourceDir(const char* dir) { mResourceSourceDirs.insertAt(dir,0); }
     const char* getAndroidManifestFile() const { return mAndroidManifestFile; }
@@ -299,6 +301,7 @@
     bool        mNoVersionVectors;
     const char* mCrunchedOutputDir;
     const char* mProguardFile;
+    const char* mMainDexProguardFile;
     const char* mAndroidManifestFile;
     const char* mPublicOutputFile;
     const char* mRClassDir;
diff --git a/tools/aapt/Command.cpp b/tools/aapt/Command.cpp
index db40416..9976d00 100644
--- a/tools/aapt/Command.cpp
+++ b/tools/aapt/Command.cpp
@@ -2631,6 +2631,12 @@
         goto bail;
     }
 
+    // Write out the Main Dex ProGuard file
+    err = writeMainDexProguardFile(bundle, assets);
+    if (err < 0) {
+        goto bail;
+    }
+
     // Write the apk
     if (outputAPKFile) {
         // Gather all resources and add them to the APK Builder. The builder will then
diff --git a/tools/aapt/Main.cpp b/tools/aapt/Main.cpp
index c424cc5..984d98e 100644
--- a/tools/aapt/Main.cpp
+++ b/tools/aapt/Main.cpp
@@ -67,6 +67,7 @@
         "        [--max-res-version VAL] \\\n"
         "        [-I base-package [-I base-package ...]] \\\n"
         "        [-A asset-source-dir]  [-G class-list-file] [-P public-definitions-file] \\\n"
+        "        [-D main-dex-class-list-file] \\\n"
         "        [-S resource-sources [-S resource-sources ...]] \\\n"
         "        [-F apk-file] [-J R-file-dir] \\\n"
         "        [--product product1,product2,...] \\\n"
@@ -120,6 +121,7 @@
         "       localization=\"suggested\"\n"
         "   -A  additional directory in which to find raw asset files\n"
         "   -G  A file to output proguard options into.\n"
+        "   -D  A file to output proguard options for the main dex into.\n"
         "   -F  specify the apk file to output\n"
         "   -I  add an existing package to base include set\n"
         "   -J  specify where to output R.java resource constant definitions\n"
@@ -390,6 +392,17 @@
                 convertPath(argv[0]);
                 bundle.setProguardFile(argv[0]);
                 break;
+            case 'D':
+                argc--;
+                argv++;
+                if (!argc) {
+                    fprintf(stderr, "ERROR: No argument supplied for '-D' option\n");
+                    wantUsage = true;
+                    goto bail;
+                }
+                convertPath(argv[0]);
+                bundle.setMainDexProguardFile(argv[0]);
+                break;
             case 'I':
                 argc--;
                 argv++;
diff --git a/tools/aapt/Main.h b/tools/aapt/Main.h
index e84c4c5..a493842 100644
--- a/tools/aapt/Main.h
+++ b/tools/aapt/Main.h
@@ -54,6 +54,7 @@
         bool includePrivate, bool emitCallback);
 
 extern android::status_t writeProguardFile(Bundle* bundle, const sp<AaptAssets>& assets);
+extern android::status_t writeMainDexProguardFile(Bundle* bundle, const sp<AaptAssets>& assets);
 
 extern bool isValidResourceType(const String8& type);
 
diff --git a/tools/aapt/Resource.cpp b/tools/aapt/Resource.cpp
index 18a1943..8e7045b 100644
--- a/tools/aapt/Resource.cpp
+++ b/tools/aapt/Resource.cpp
@@ -2832,7 +2832,7 @@
 }
 
 status_t
-writeProguardForAndroidManifest(ProguardKeepSet* keep, const sp<AaptAssets>& assets)
+writeProguardForAndroidManifest(ProguardKeepSet* keep, const sp<AaptAssets>& assets, bool mainDex)
 {
     status_t err;
     ResXMLTree tree;
@@ -2844,6 +2844,7 @@
     sp<AaptGroup> assGroup;
     sp<AaptFile> assFile;
     String8 pkg;
+    String8 defaultProcess;
 
     // First, look for a package file to parse.  This is required to
     // be able to generate the resource information.
@@ -2900,6 +2901,15 @@
                     addProguardKeepRule(keep, agent, pkg.string(),
                             assFile->getPrintableSource(), tree.getLineNumber());
                 }
+
+                if (mainDex) {
+                    defaultProcess = AaptXml::getAttribute(tree,
+                            "http://schemas.android.com/apk/res/android", "process", &error);
+                    if (error != "") {
+                        fprintf(stderr, "ERROR: %s\n", error.string());
+                        return -1;
+                    }
+                }
             } else if (tag == "instrumentation") {
                 keepTag = true;
             }
@@ -2916,7 +2926,23 @@
                 fprintf(stderr, "ERROR: %s\n", error.string());
                 return -1;
             }
-            if (name.length() > 0) {
+
+            keepTag = name.length() > 0;
+
+            if (keepTag && mainDex) {
+                String8 componentProcess = AaptXml::getAttribute(tree,
+                        "http://schemas.android.com/apk/res/android", "process", &error);
+                if (error != "") {
+                    fprintf(stderr, "ERROR: %s\n", error.string());
+                    return -1;
+                }
+
+                const String8& process =
+                        componentProcess.length() > 0 ? componentProcess : defaultProcess;
+                keepTag = process.length() > 0 && process.find(":") != 0;
+            }
+
+            if (keepTag) {
                 addProguardKeepRule(keep, name, pkg.string(),
                         assFile->getPrintableSource(), tree.getLineNumber());
             }
@@ -3099,30 +3125,12 @@
 }
 
 status_t
-writeProguardFile(Bundle* bundle, const sp<AaptAssets>& assets)
+writeProguardSpec(const char* filename, const ProguardKeepSet& keep, status_t err)
 {
-    status_t err = -1;
-
-    if (!bundle->getProguardFile()) {
-        return NO_ERROR;
-    }
-
-    ProguardKeepSet keep;
-
-    err = writeProguardForAndroidManifest(&keep, assets);
-    if (err < 0) {
-        return err;
-    }
-
-    err = writeProguardForLayouts(&keep, assets);
-    if (err < 0) {
-        return err;
-    }
-
-    FILE* fp = fopen(bundle->getProguardFile(), "w+");
+    FILE* fp = fopen(filename, "w+");
     if (fp == NULL) {
         fprintf(stderr, "ERROR: Unable to open class file %s: %s\n",
-                bundle->getProguardFile(), strerror(errno));
+                filename, strerror(errno));
         return UNKNOWN_ERROR;
     }
 
@@ -3141,6 +3149,49 @@
     return err;
 }
 
+status_t
+writeProguardFile(Bundle* bundle, const sp<AaptAssets>& assets)
+{
+    status_t err = -1;
+
+    if (!bundle->getProguardFile()) {
+        return NO_ERROR;
+    }
+
+    ProguardKeepSet keep;
+
+    err = writeProguardForAndroidManifest(&keep, assets, false);
+    if (err < 0) {
+        return err;
+    }
+
+    err = writeProguardForLayouts(&keep, assets);
+    if (err < 0) {
+        return err;
+    }
+
+    return writeProguardSpec(bundle->getProguardFile(), keep, err);
+}
+
+status_t
+writeMainDexProguardFile(Bundle* bundle, const sp<AaptAssets>& assets)
+{
+    status_t err = -1;
+
+    if (!bundle->getMainDexProguardFile()) {
+        return NO_ERROR;
+    }
+
+    ProguardKeepSet keep;
+
+    err = writeProguardForAndroidManifest(&keep, assets, true);
+    if (err < 0) {
+        return err;
+    }
+
+    return writeProguardSpec(bundle->getMainDexProguardFile(), keep, err);
+}
+
 // Loops through the string paths and writes them to the file pointer
 // Each file path is written on its own line with a terminating backslash.
 status_t writePathsToFile(const sp<FilePathStore>& files, FILE* fp)
diff --git a/tools/aapt2/link/Link.cpp b/tools/aapt2/link/Link.cpp
index 8c8bffa..4997120 100644
--- a/tools/aapt2/link/Link.cpp
+++ b/tools/aapt2/link/Link.cpp
@@ -1459,6 +1459,21 @@
         return 1;
     }
 
+    // Expand all argument-files passed into the command line. These start with '@'.
+    std::vector<std::string> argList;
+    for (const std::string& arg : flags.getArgs()) {
+        if (util::stringStartsWith<char>(arg, "@")) {
+            const std::string path = arg.substr(1, arg.size() - 1);
+            std::string error;
+            if (!file::appendArgsFromFile(path, &argList, &error)) {
+                context.getDiagnostics()->error(DiagMessage(path) << error);
+                return 1;
+            }
+        } else {
+            argList.push_back(arg);
+        }
+    }
+
     if (verbose) {
         context.setVerbose(verbose);
     }
@@ -1568,7 +1583,7 @@
     }
 
     LinkCommand cmd(&context, options);
-    return cmd.run(flags.getArgs());
+    return cmd.run(argList);
 }
 
 } // namespace aapt
diff --git a/tools/aapt2/util/Files.cpp b/tools/aapt2/util/Files.cpp
index bb093ab..f5e49f1 100644
--- a/tools/aapt2/util/Files.cpp
+++ b/tools/aapt2/util/Files.cpp
@@ -18,6 +18,7 @@
 #include "util/Util.h"
 
 #include <algorithm>
+#include <android-base/file.h>
 #include <cerrno>
 #include <cstdio>
 #include <dirent.h>
@@ -190,6 +191,23 @@
     return std::move(fileMap);
 }
 
+bool appendArgsFromFile(const StringPiece& path, std::vector<std::string>* outArgList,
+                        std::string* outError) {
+    std::string contents;
+    if (!android::base::ReadFileToString(path.toString(), &contents)) {
+        if (outError) *outError = "failed to read argument-list file";
+        return false;
+    }
+
+    for (StringPiece line : util::tokenize<char>(contents, ' ')) {
+        line = util::trimWhitespace(line);
+        if (!line.empty()) {
+            outArgList->push_back(line.toString());
+        }
+    }
+    return true;
+}
+
 bool FileFilter::setPattern(const StringPiece& pattern) {
     mPatternTokens = util::splitAndLowercase(pattern, ':');
     return true;
diff --git a/tools/aapt2/util/Files.h b/tools/aapt2/util/Files.h
index c2e6115..4d8a1fe 100644
--- a/tools/aapt2/util/Files.h
+++ b/tools/aapt2/util/Files.h
@@ -95,6 +95,12 @@
  */
 Maybe<android::FileMap> mmapPath(const StringPiece& path, std::string* outError);
 
+/**
+ * Reads the file at path and appends each line to the outArgList vector.
+ */
+bool appendArgsFromFile(const StringPiece& path, std::vector<std::string>* outArgList,
+                        std::string* outError);
+
 /*
  * Filter that determines which resource files/directories are
  * processed by AAPT. Takes a pattern string supplied by the user.
diff --git a/tools/fonts/fontchain_lint.py b/tools/fonts/fontchain_lint.py
index 81ab3cc..fe7c3b9 100755
--- a/tools/fonts/fontchain_lint.py
+++ b/tools/fonts/fontchain_lint.py
@@ -330,7 +330,7 @@
         0x2764, # HEAVY BLACK HEART
     }
     assert missing_text_chars == set(), (
-        'Text style version of some emoji characters are missing.')
+        'Text style version of some emoji characters are missing: ' + repr(missing_text_chars))
 
 
 # Setting reverse to true returns a dictionary that maps the values to sets of
@@ -411,6 +411,20 @@
     _emoji_zwj_sequences = parse_unicode_datafile(
         path.join(ucd_path, 'emoji-zwj-sequences.txt'))
 
+    # filter modern pentathlon, as it seems likely to be removed from final spec
+    def is_excluded(n):
+        return n == 0x1f93b
+
+    def contains_excluded(t):
+        if type(t) == int:
+            return is_excluded(t)
+        return any(is_excluded(cp) for cp in t)
+
+    # filter modern pentathlon, as it seems likely to be removed from final spec
+    _emoji_properties['Emoji'] = set(
+        t for t in _emoji_properties['Emoji'] if not contains_excluded(t))
+    _emoji_sequences = dict(
+        (t, v) for (t, v) in _emoji_sequences.items() if not contains_excluded(t))
 
 def flag_sequence(territory_code):
     return tuple(0x1F1E6 + ord(ch) - ord('A') for ch in territory_code)
diff --git a/tools/layoutlib/Android.mk b/tools/layoutlib/Android.mk
index 663e1e2..f87f6c5 100644
--- a/tools/layoutlib/Android.mk
+++ b/tools/layoutlib/Android.mk
@@ -16,8 +16,6 @@
 LOCAL_PATH := $(my-dir)
 include $(CLEAR_VARS)
 
-LOCAL_JAVA_LANGUAGE_VERSION := 1.8
-
 #
 # Define rules to build temp_layoutlib.jar, which contains a subset of
 # the classes in framework.jar.  The layoutlib_create tool is used to
diff --git a/tools/layoutlib/bridge/Android.mk b/tools/layoutlib/bridge/Android.mk
index 16e5913..3dd8002 100644
--- a/tools/layoutlib/bridge/Android.mk
+++ b/tools/layoutlib/bridge/Android.mk
@@ -18,7 +18,6 @@
 
 LOCAL_SRC_FILES := $(call all-java-files-under,src)
 LOCAL_JAVA_RESOURCE_DIRS := resources
-LOCAL_JAVA_LANGUAGE_VERSION := 1.8
 
 LOCAL_JAVA_LIBRARIES := \
 	layoutlib_api-prebuilt \
diff --git a/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/android/BridgeContext.java b/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/android/BridgeContext.java
index 80e230c..f87269b 100644
--- a/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/android/BridgeContext.java
+++ b/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/android/BridgeContext.java
@@ -861,7 +861,9 @@
                         resValue = mRenderResources.resolveResValue(resValue);
 
                         if (defaultPropMap != null) {
-                            defaultPropMap.put(attrName,
+                            defaultPropMap.put(
+                                    frameworkAttr ? SdkConstants.PREFIX_ANDROID + attrName :
+                                            attrName,
                                     new Property(preResolve, resValue.getValue()));
                         }
 
@@ -932,7 +934,8 @@
             @Nullable StyleResourceValue style, int[] attrs) throws Resources.NotFoundException {
         List<Pair<String, Boolean>> attributes = searchAttrs(attrs);
 
-        BridgeTypedArray ta = Resources_Delegate.newTypeArray(mSystemResources, attrs.length, false);
+        BridgeTypedArray ta =
+                Resources_Delegate.newTypeArray(mSystemResources, attrs.length, false);
 
         PropertiesMap defaultPropMap = new PropertiesMap();
         // for each attribute, get its name so that we can search it in the style
@@ -943,11 +946,11 @@
                 // look for the value in the given style
                 ResourceValue resValue;
                 String attrName = attribute.getFirst();
+                boolean frameworkAttr = attribute.getSecond();
                 if (style != null) {
-                    resValue = mRenderResources.findItemInStyle(style, attrName,
-                            attribute.getSecond());
+                    resValue = mRenderResources.findItemInStyle(style, attrName, frameworkAttr);
                 } else {
-                    resValue = mRenderResources.findItemInTheme(attrName, attribute.getSecond());
+                    resValue = mRenderResources.findItemInTheme(attrName, frameworkAttr);
                 }
 
                 if (resValue != null) {
@@ -955,8 +958,10 @@
                     String preResolve = resValue.getValue();
                     // resolve it to make sure there are no references left.
                     resValue = mRenderResources.resolveResValue(resValue);
-                    ta.bridgeSetValue(i, attrName, attribute.getSecond(), resValue);
-                    defaultPropMap.put(attrName, new Property(preResolve, resValue.getValue()));
+                    ta.bridgeSetValue(i, attrName, frameworkAttr, resValue);
+                    defaultPropMap.put(
+                            frameworkAttr ? SdkConstants.ANDROID_PREFIX + attrName : attrName,
+                            new Property(preResolve, resValue.getValue()));
                 }
             }
         }
diff --git a/tools/layoutlib/bridge/tests/Android.mk b/tools/layoutlib/bridge/tests/Android.mk
index 5c062d0..8a81d0b 100644
--- a/tools/layoutlib/bridge/tests/Android.mk
+++ b/tools/layoutlib/bridge/tests/Android.mk
@@ -16,8 +16,6 @@
 
 include $(CLEAR_VARS)
 
-LOCAL_JAVA_LANGUAGE_VERSION := 1.8
-
 # Only compile source java files in this lib.
 LOCAL_SRC_FILES := $(call all-java-files-under, src)
 LOCAL_JAVA_RESOURCE_DIRS := res
diff --git a/tools/layoutlib/create/Android.mk b/tools/layoutlib/create/Android.mk
index 47377ae..c7f2c41 100644
--- a/tools/layoutlib/create/Android.mk
+++ b/tools/layoutlib/create/Android.mk
@@ -16,8 +16,6 @@
 LOCAL_PATH := $(call my-dir)
 include $(CLEAR_VARS)
 
-LOCAL_JAVA_LANGUAGE_VERSION := 1.8
-
 LOCAL_SRC_FILES := $(call all-java-files-under,src)
 
 LOCAL_JAR_MANIFEST := manifest.txt
diff --git a/tools/layoutlib/create/tests/Android.mk b/tools/layoutlib/create/tests/Android.mk
index c59528e..dafb9c6 100644
--- a/tools/layoutlib/create/tests/Android.mk
+++ b/tools/layoutlib/create/tests/Android.mk
@@ -15,8 +15,6 @@
 LOCAL_PATH := $(call my-dir)
 include $(CLEAR_VARS)
 
-LOCAL_JAVA_LANGUAGE_VERSION := 1.8
-
 # Only compile source java files in this lib.
 LOCAL_SRC_FILES := $(call all-java-files-under, com)